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=sidebyside;hp=--cc Merge remote-tracking branch 'upstream/develop' into imageGrid Conflicts: owncloud-android-library src/com/owncloud/android/ui/adapter/FileListListAdapter.java --- 4867bb32c3a1d4fcafa7b557247f34ef4564fa03 diff --cc 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 ! - 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 : %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 ? Fichiers Connecter Téléverser - Sélectionner le dossier d\'envoi : - Sélectionner le dossier d'envoi : ++ Sélectionner le dossier d\'envoi : 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 ! Envoyez donc quelque chose :) ++ Il n\'y a rien ici ! Envoyez donc quelque chose :) Chargement… Aucun fichier n\'est présent dans ce dossier. Effleurez un fichier pour afficher les informations complémentaires @@@ -175,7 -178,7 +178,7 @@@ Ci-dessous la liste des fichiers locaux 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 ; veuillez entrer à nouveau l'URL du serveur ++ État inattendu ; 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 @@@ -219,19 -222,19 +222,19 @@@ 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é à : + Délivré par : - Nom d'usage : ++ Nom d\'usage : + Organisation : + Unité organisationnelle : + Pays : + Région : + Localisation : + Validité : + De : + À : + Signature : + Algorithme : Impossible d\'afficher le certificat. - Aucune information sur l\'erreur Ceci est un espace réservé diff --cc 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,9 -28,8 +28,10 @@@ 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; @@@ -142,159 -140,78 +144,163 @@@ public class FileListListAdapter extend @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 { @@@ -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 --cc 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 @@@ -382,29 -381,9 +382,34 @@@ public class OCFileListFragment extend 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(); + } } }