From: tobiasKaminsky Date: Tue, 18 Nov 2014 17:08:28 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/develop' into imageGrid X-Git-Tag: oc-android-1.7.0_signed~16^2~24 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/4867bb32c3a1d4fcafa7b557247f34ef4564fa03?ds=inline;hp=-c Merge remote-tracking branch 'upstream/develop' into imageGrid Conflicts: owncloud-android-library src/com/owncloud/android/ui/adapter/FileListListAdapter.java --- 4867bb32c3a1d4fcafa7b557247f34ef4564fa03 diff --combined res/values-fr/strings.xml index 90c54a90,3656d14f..2cf16ac9 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@@ -38,18 -38,20 +38,20 @@@ Recommander à un ami Commentaires Empreinte - Essayez %1$s sur votre smartphone ! + Mémoriser l\'emplacement de partage + Mémoriser le dernier emplacement d\'upload + Essayez %1$s sur votre smartphone&nbsp;! - J'aimerais vous inviter à utiliser %1$s sur votre smartphone ! + J\'aimerais vous inviter à utiliser %1$s sur votre smartphone ! - Téléchargez-le ici : %2$s + Téléchargez-le ici&nbsp;: %2$s Vérifier le serveur - Adresse du serveur https://... + Adresse du serveur https://… Nom d\'utilisateur Mot de passe - Nouveau dans %1$s ? + Nouveau dans %1$s&nbsp;? Fichiers Connecter Téléverser - Sélectionner le dossier d\'envoi : - Sélectionner le dossier d'envoi&nbsp;: ++ Sélectionner le dossier d\'envoi&nbsp;: Aucun compte n\'a été trouvé Aucun compte %1$s n\'a été trouvé. Veuillez commencer par en configurer un. Paramètres @@@ -58,7 -60,8 +60,8 @@@ Aucun contenu reçu. Rien à envoyer. %1$s n\'est pas autorisé à accéder au contenu partagé Téléversement - Il n\'y a rien ici ! Envoyez donc quelque chose :) + il y a quelques secondes - Il n'y a rien ici&nbsp;! Envoyez donc quelque chose :) ++ Il n\'y a rien ici&nbsp;! Envoyez donc quelque chose :) Chargement… Aucun fichier n\'est présent dans ce dossier. Effleurez un fichier pour afficher les informations complémentaires @@@ -79,8 -82,8 +82,8 @@@ Annuler Sauvegarder & Quitter Erreur - Chargement ... - Erreur Inconnue + Chargement… + Erreur inconnue À propos de Changer de mot de passe Effacer ce compte @@@ -88,7 -91,7 +91,7 @@@ Téléverser un fichier depuis… Nom du dossier Téléversement… - Envoi du fichier %2$s en cours, %1$d%% effectués + Envoi du fichier %2$s : %1$d%% effectués Téléversement réussi Le fichier %1$s a été envoyé avec succès Échec de l\'envoi @@@ -110,7 -113,7 +113,7 @@@ Des conflits ont été trouvés %1$d fichiers à garder synchronisés n\'ont put être synchronisé La synchronisation des fichiers a échoué - Le contenu de %1$d fichiers n\'a put être synchronisé (%2$d conflits) + Le contenu de %1$d fichiers n\'a pu être synchronisé (%2$d conflits) Certains fichiers locaux ont été oubliés %1$d fichiers du dossier %2$s n\'ont pas pu être copiés dans Depuis la version 1.3.16, les fichiers envoyé depuis ce périphérique sont copiés dans le dossier local %1$s pour éviter une perte de données lorsqu\'un même fichier est synchronisé avec plusieurs comptes. @@@ -122,8 -125,8 +125,8 @@@ Ci-dessous la liste des fichiers locaux Tout déplacer Tous les fichiers ont été déplacés Certains fichiers n\'ont pu être déplacés - Local: %1$s - Distant: %1$s + Local&nbsp;: %1$s + Distant : %1$s Il n\'y a pas assez de place disponible pour copier les fichiers sélectionnés dans le dossier %1$s. Voulez-vous quand même les déplacer ? Veuillez saisir votre code de sécurité Veuillez saisir votre code de sécurité @@@ -141,20 -144,20 +144,20 @@@ Fichier média introuvable Aucun compte n\'a été trouvé Le fichier n\'est pas dans un compte valide - Le codec de ce média n\'est pas supporté + Le codec de ce média n\'est pas pris en charge Le fichier média ne peut pas être lu Le fichier média n\'est pas correctement encodé Délai dépassé pour la lecture du morceau. Le fichier média ne peut pas être diffusé - Fichier média ne peut être joué avec le stock de media player - taux %1$s erreurs de sécurité essayant de jouer - Taux %1$s d\'erreurs de saisie essayant de jouer - Taux %1$s d\'erreurs inattendues essayant de jouer - Bouton de rem-bobinage - Bouton de Lecture ou de Pause + Le fichier média ne peut être joué avec le lecteur standard + Erreur de sécurité à la lecture de %1$s + Erreur de lecture de fichier à la lecture de %1$s + Erreur inattendue à la lecture de %1$s + Bouton de rembobinage + Bouton de lecture ou de pause Bouton d\'avance rapide - Demande d\'autorisation... - Tentative de connexion … + Demande d\'autorisation… + Tentative de connexion… Pas de connexion réseau Connexion sécurisée non disponible Connexion établie @@@ -168,28 -171,28 +171,28 @@@ Le serveur met trop longtemps à répondre Adresse invalide Échec de l\'initialisation SSL - Impossible de vérifier l\'identité du serveur SSL. + Impossible de vérifier l\'identité du serveur SSL La version du serveur n\'est pas reconnue Impossible d\'établir la connexion Connexion sécurisée établie Nom d\'utilisateur ou mot de passe incorrect Échec d\'autorisation Accès refusé par le serveur d\'autorisation - État inattendu ; veuillez entrer à nouveau l\'URL du serveur - État inattendu&nbsp;; veuillez entrer à nouveau l'URL du serveur ++ État inattendu&nbsp;; veuillez entrer à nouveau l\'URL du serveur Votre autorisation a expiré. Merci de vous authentifier à nouveau Veuillez saisir le mot de passe courant Votre session a expiré. Merci de vous reconnecter - Connexion au serveur d\'authentification... - Le serveur ne supporte pas cette méthode d\'authentification - %1$s ne supporte pas les comptes multiples + Connexion au serveur d\'authentification… + Le serveur ne prend pas en charge pas cette méthode d\'authentification + %1$s ne prend pas en charge les comptes multiples Votre serveur a retourné un identifiant d\'utilisateur incorrect. Veuillez prendre contact avec votre administrateur Impossible de s\'authentifier sur ce serveur Maintenir le fichier à jour Renommer Supprimer - Voulez-vous vraiment supprimer %1$s ? - Voulez-vous vraiment supprimer %1$s et son contenu ? + Voulez-vous vraiment supprimer %1$s&nbsp;? + Voulez-vous vraiment supprimer %1$s et son contenu&nbsp;? Local seulement Le contenu local uniquement Effacer du serveur @@@ -202,36 -205,36 +205,36 @@@ Le fichier distant n\'a pu être vérifié Le contenu des fichiers est déjà synchronisé Le dossier n\'a pas pu être créé - Caractères interdits : / \\ < > : \" | ? * + Caractères interdits&nbsp;: / \\ &lt; &gt; : " | ? * Le nom du fichier ne peut pas être vide Veuillez patienter - Problème inattendu ; veuillez essayer une autre app pour la sélection du fichier + Problème inattendu. Veuillez essayer une autre application pour la sélection du fichier Aucun fichier sélectionné Envoyer un lien à… - Connexion avec aAuth2. - Connexion au serveur aAuth2... + Connexion avec oAuth2 + Connexion au serveur oAuth2… L\'identité du site ne peut être vérifiée - Le certificat du serveur n\'est pas sûr - Le certificat du serveur a expiré - Le certificat du serveur n\'est pas encore valide - L\'URL ne correspond pas au nom d\'hôte du certificat - Voulez-vous tout de même faire confiance à ce certificat ? + Voulez-vous tout de même faire confiance à ce certificat&nbsp;? Impossible de sauvegarder le certificat Détails Masquer - Délivré à : - Délivré par : - Nom d\'usage : - Organisation : - Unité organisationnelle : - Pays : - Région : - Localisation : - Validité : - De : - À : - Signature : - Algorithme : + Délivré à&nbsp;: + Délivré par&nbsp;: - Nom d'usage&nbsp;: ++ Nom d\'usage&nbsp;: + Organisation&nbsp;: + Unité organisationnelle&nbsp;: + Pays&nbsp;: + Région&nbsp;: + Localisation&nbsp;: + Validité&nbsp;: + De&nbsp;: + À&nbsp;: + Signature&nbsp;: + Algorithme&nbsp;: Impossible d\'afficher le certificat. - Aucune information sur l\'erreur Ceci est un espace réservé @@@ -252,7 -255,7 +255,7 @@@ Cette image ne peut pas être affichée %1$s n\'a pas pu être copié dans le dossier local %2$s Chemin d\'accès pour le téléversement - Désolé, le partage n\'est pas disponible sur votre serveur. Contactez votre administrateur, s\'il vous plait. + Désolé, le partage n\'est pas disponible sur votre serveur. Veuillez contacter votre administrateur. Impossible de partager. Vérifiez que le fichier est bien présent Une erreur est survenue lors de la tentative de partage de ce fichier ou répertoire Impossible de supprimer le partage. Vérifiez que le fichier est bien présent @@@ -260,7 -263,7 +263,7 @@@ Envoyer Copier le lien Copié dans le presse-papiers - Erreur critique : impossible de réaliser des opérations + Erreur critique&nbsp;: impossible de réaliser des opérations Une erreur s\'est produite pendant la connection au serveur Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée. Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée. diff --combined src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 3400513b,10356320..c2f70e8d --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@@ -28,18 -28,15 +28,19 @@@ import android.accounts.Account import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.media.ThumbnailUtils; import android.preference.PreferenceManager; + import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.GridView; import android.widget.ImageView; import android.widget.ListAdapter; -import android.widget.ListView; import android.widget.TextView; import com.owncloud.android.R; @@@ -50,6 -47,7 +51,7 @@@ import com.owncloud.android.datamodel.T import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; + import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.ComponentsGetter; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.FileStorageUtils; @@@ -69,13 -67,11 +71,13 @@@ public class FileListListAdapter extend private Context mContext; private OCFile mFile = null; private Vector mFiles = null; + private Vector mFilesOrig = new Vector(); private boolean mJustFolders; private FileDataStorageManager mStorageManager; private Account mAccount; private ComponentsGetter mTransferServiceGetter; + private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM }; private Integer mSortOrder; public static final Integer SORT_NAME = 0; public static final Integer SORT_DATE = 1; @@@ -88,10 -84,11 +90,10 @@@ Context context, ComponentsGetter transferServiceGetter ) { - + mJustFolders = justFolders; mContext = context; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); - mTransferServiceGetter = transferServiceGetter; mAppPreferences = PreferenceManager @@@ -104,6 -101,7 +106,6 @@@ // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); - } @Override @@@ -142,197 -140,144 +144,201 @@@ @Override public View getView(int position, View convertView, ViewGroup parent) { + // decide image vs. file view - double count = 0; - ++ double countImages = 0; ++ double countFiles = 0; + + for (OCFile file : mFiles){ - if (file.isImage()){ - count++; ++ if (!file.isFolder()){ ++ countFiles++; ++ ++ if (file.isImage()){ ++ countImages++; ++ } + } + } + + // TODO threshold as constant in Preferences + // > 50% Images --> image view + boolean fileView = true; - if ((count / mFiles.size()) >= 0.5){ ++ if ((countImages / countFiles) >= 0.5){ + fileView = false; + } else { + fileView = true; + } + View view = convertView; - if (view == null) { - LayoutInflater inflator = (LayoutInflater) mContext - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + OCFile file = null; + LayoutInflater inflator = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + if (mFiles != null && mFiles.size() > position) { + file = mFiles.get(position); + } + + // Find out which layout should be displayed + ViewType viewType; + if (fileView){ + viewType = ViewType.LIST_ITEM; + } else if (file.isImage()){ + viewType = ViewType.GRID_IMAGE; + } else { + viewType = ViewType.GRID_ITEM; + } + + // Create View + switch (viewType){ + case GRID_IMAGE: + view = inflator.inflate(R.layout.grid_image, null); + break; + case GRID_ITEM: + view = inflator.inflate(R.layout.grid_item, null); + break; + case LIST_ITEM: view = inflator.inflate(R.layout.list_item, null); + break; } - - if (mFiles != null && mFiles.size() > position) { - OCFile file = mFiles.get(position); - TextView fileName = (TextView) view.findViewById(R.id.Filename); - String name = file.getFileName(); - fileName.setText(name); - ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); - fileIcon.setTag(file.getFileId()); - ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon); - ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon); - sharedWithMeIconV.setVisibility(View.GONE); + view.invalidate(); - ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2); - localStateView.bringToFront(); - FileDownloaderBinder downloaderBinder = - mTransferServiceGetter.getFileDownloaderBinder(); - FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder(); - if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) { - localStateView.setImageResource(R.drawable.downloading_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) { - localStateView.setImageResource(R.drawable.uploading_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else if (file.isDown()) { - localStateView.setImageResource(R.drawable.local_file_indicator); - localStateView.setVisibility(View.VISIBLE); - } else { - localStateView.setVisibility(View.INVISIBLE); - } - - TextView fileSizeV = (TextView) view.findViewById(R.id.file_size); - TextView lastModV = (TextView) view.findViewById(R.id.last_mod); - ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); + if (file != null){ + + ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail); + TextView fileName; + String name; - if (!file.isFolder()) { - fileSizeV.setVisibility(View.VISIBLE); - fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); + switch (viewType){ + case LIST_ITEM: + fileName = (TextView) view.findViewById(R.id.Filename); + name = file.getFileName(); + fileName.setText(name); + + TextView fileSizeV = (TextView) view.findViewById(R.id.file_size); + TextView lastModV = (TextView) view.findViewById(R.id.last_mod); + ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); + lastModV.setVisibility(View.VISIBLE); - lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())); + lastModV.setText(showRelativeTimestamp(file)); - // this if-else is needed even thoe fav icon is visible by default - // because android reuses views in listview - if (!file.keepInSync()) { - view.findViewById(R.id.imageView3).setVisibility(View.GONE); + + checkBoxV.setVisibility(View.GONE); + + fileSizeV.setVisibility(View.VISIBLE); + fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); + + ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon); + + + if (file.isShareByLink()) { + sharedIconV.setVisibility(View.VISIBLE); } else { - view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE); + sharedIconV.setVisibility(View.GONE); } - ListView parentList = (ListView)parent; - if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { - checkBoxV.setVisibility(View.GONE); - } else { - if (parentList.isItemChecked(position)) { - checkBoxV.setImageResource(android.R.drawable.checkbox_on_background); + ImageView localStateView = (ImageView) view.findViewById(R.id.localFileIndicator); + + if (!file.isFolder()) { + GridView parentList = (GridView)parent; + if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) { + checkBoxV.setVisibility(View.GONE); + } else { + if (parentList.isItemChecked(position)) { + checkBoxV.setImageResource(android.R.drawable.checkbox_on_background); + } else { + checkBoxV.setImageResource(android.R.drawable.checkbox_off_background); + } + checkBoxV.setVisibility(View.VISIBLE); + } + + localStateView.bringToFront(); + FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder(); + FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder(); + if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) { + localStateView.setImageResource(R.drawable.downloading_file_indicator); + localStateView.setVisibility(View.VISIBLE); + } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) { + localStateView.setImageResource(R.drawable.uploading_file_indicator); + localStateView.setVisibility(View.VISIBLE); + } else if (file.isDown()) { + localStateView.setImageResource(R.drawable.local_file_indicator); + localStateView.setVisibility(View.VISIBLE); } else { - checkBoxV.setImageResource(android.R.drawable.checkbox_off_background); + localStateView.setVisibility(View.INVISIBLE); } - checkBoxV.setVisibility(View.VISIBLE); - } - - // get Thumbnail if file is image + + ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon); + if (checkIfFileIsSharedWithMe(file)) { + sharedWithMeIconV.setVisibility(View.VISIBLE); + } else { + sharedWithMeIconV.setVisibility(View.GONE); + } + } else { + localStateView.setVisibility(View.INVISIBLE); + } + break; + case GRID_ITEM: + fileName = (TextView) view.findViewById(R.id.Filename); + name = file.getFileName(); + fileName.setText(name); + break; + case GRID_IMAGE: + break; + } + + // For all Views + + // this if-else is needed even though favorite icon is visible by default + // because android reuses views in listview + if (!file.keepInSync()) { + view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE); + } else { + view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE); + } + + // No Folder + if (!file.isFolder()) { if (file.isImage() && file.getRemoteId() != null){ - // Thumbnail in Cache? + // Thumbnail in Cache? Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache( String.valueOf(file.getRemoteId()) - ); + ); if (thumbnail != null && !file.needsUpdateThumbnail()){ fileIcon.setImageBitmap(thumbnail); } else { // generate new Thumbnail if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) { - final ThumbnailsCacheManager.ThumbnailGenerationTask task = + final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask( fileIcon, mStorageManager, mAccount - ); + ); if (thumbnail == null) { thumbnail = ThumbnailsCacheManager.mDefaultImg; } final AsyncDrawable asyncDrawable = new AsyncDrawable( - mContext.getResources(), - thumbnail, + mContext.getResources(), + thumbnail, task - ); + ); fileIcon.setImageDrawable(asyncDrawable); task.execute(file); + } } - } else { - fileIcon.setImageResource( - DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()) - ); } - - if (checkIfFileIsSharedWithMe(file)) { - sharedWithMeIconV.setVisibility(View.VISIBLE); + else { + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); } - } - else { - // TODO Re-enable when server supports folder-size calculation -// if (FileStorageUtils.getDefaultSavePathFor(mAccount.name, file) != null){ -// fileSizeV.setVisibility(View.VISIBLE); -// fileSizeV.setText(getFolderSizeHuman(FileStorageUtils.getDefaultSavePathFor(mAccount.name, file))); -// } else { - fileSizeV.setVisibility(View.INVISIBLE); -// } - - lastModV.setVisibility(View.VISIBLE); - lastModV.setText(showRelativeTimestamp(file)); - checkBoxV.setVisibility(View.GONE); - view.findViewById(R.id.imageView3).setVisibility(View.GONE); - + } else { + // Folder if (checkIfFileIsSharedWithMe(file)) { fileIcon.setImageResource(R.drawable.shared_with_me_folder); - sharedWithMeIconV.setVisibility(View.VISIBLE); - } else { - fileIcon.setImageResource( - DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()) - ); - } - - // If folder is sharedByLink, icon folder must be changed to - // folder-public one - if (file.isShareByLink()) { + } else if (file.isShareByLink()) { + // If folder is sharedByLink, icon folder must be changed to + // folder-public one fileIcon.setImageResource(R.drawable.folder_public); + } else { + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); } - } - - if (file.isShareByLink()) { - sharedIconV.setVisibility(View.VISIBLE); - } else { - sharedIconV.setVisibility(View.GONE); - } + } } return view; @@@ -408,9 -353,6 +414,9 @@@ } if (mStorageManager != null) { mFiles = mStorageManager.getFolderContent(mFile); + mFilesOrig.clear(); + mFilesOrig.addAll(mFiles); + if (mJustFolders) { mFiles = getFolders(mFiles); } @@@ -573,5 -515,10 +579,10 @@@ mSortAscending = ascending; sortDirectory(); - } + } + + private CharSequence showRelativeTimestamp(OCFile file){ + return DisplayUtils.getRelativeDateTimeString(mContext, file.getModificationTimestamp(), + DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); + } } diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index f7df4324,0b1059fc..dc96ca00 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -18,7 -18,6 +18,7 @@@ package com.owncloud.android.ui.fragment; import java.io.File; +import java.util.Vector; import android.app.Activity; import android.content.Intent; @@@ -127,8 -126,8 +127,8 @@@ public class OCFileListFragment extend ); setListAdapter(mAdapter); - registerForContextMenu(getListView()); - getListView().setOnCreateContextMenuListener(this); + registerForContextMenu(getGridView()); + getGridView().setOnCreateContextMenuListener(this); } /** @@@ -382,29 -381,9 +382,34 @@@ mAdapter.swapDirectory(directory, storageManager); if (mFile == null || !mFile.equals(directory)) { - mList.setSelectionFromTop(0, 0); + imageView.setSelection(0); } mFile = directory; + + // decide image vs. file view - double count = 0; ++ double countImages = 0; ++ double countFiles = 0; + + Vector files = storageManager.getFolderContent(directory); + for (OCFile file : files){ - if (file.isImage()){ - count++; ++ if (!file.isFolder()){ ++ countFiles++; ++ ++ if (file.isImage()){ ++ countImages++; ++ } + } + } + + // > 50% Images --> image view + // TODO threshold as constant in Preferences - if ((count / files.size()) >= 0.5){ ++ if ((countImages / countFiles) >= 0.5){ + Log_OC.i(TAG, "Image View"); + switchImageView(); + } else { + Log_OC.i(TAG, "Folder View"); + switchFileView(); + } } }