Merge branch 'material_buttons' of https://github.com/owncloud/android into beta
authorAndy Scherzinger <info@andy-scherzinger.de>
Mon, 2 Nov 2015 13:17:31 +0000 (14:17 +0100)
committerAndy Scherzinger <info@andy-scherzinger.de>
Mon, 2 Nov 2015 13:17:31 +0000 (14:17 +0100)
Conflicts:
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

1  2 
res/layout/list_item.xml
res/values-cs-rCZ/strings.xml
res/values-fi-rFI/strings.xml
res/values-fr/strings.xml
res/values-it/strings.xml
res/values-nl/strings.xml
res/values-pt-rBR/strings.xml
res/values-pt-rPT/strings.xml
src/com/owncloud/android/ui/adapter/FileListListAdapter.java
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

diff --combined res/layout/list_item.xml
@@@ -81,7 -81,7 +81,7 @@@
                  android:ellipsize="middle"\r
                  android:singleLine="true"\r
                  android:text="TextView"\r
 -                android:textColor="#303030"\r
 +                android:textColor="@color/textColor"\r
                  android:textSize="@dimen/two_line_primary_text_size" />\r
  \r
              <LinearLayout\r
                  android:orientation="horizontal">\r
  \r
                  <TextView\r
-                     android:id="@+id/last_mod"\r
+                     android:id="@+id/last_size"\r
                      android:layout_width="wrap_content"\r
                      android:layout_height="wrap_content"\r
-                     android:text="TextView"\r
+                     android:text="Size MB"\r
                      android:textColor="@color/list_item_lastmod_and_filesize_text"\r
                      android:textSize="@dimen/two_line_secondary_text_size"/>\r
  \r
                      android:textSize="@dimen/two_line_secondary_text_size"/>\r
  \r
                  <TextView\r
-                     android:id="@+id/file_size"\r
+                     android:id="@+id/file_mod"\r
                      android:layout_width="wrap_content"\r
                      android:layout_height="wrap_content"\r
                      android:gravity="right"\r
-                     android:text="TextView"\r
+                     android:text="Mod Date"\r
                      android:textColor="@color/list_item_lastmod_and_filesize_text"\r
                      android:textSize="@dimen/two_line_secondary_text_size"/>\r
  \r
@@@ -79,6 -79,7 +79,7 @@@
    <string name="filedetails_created">Vytvořen:</string>
    <string name="filedetails_modified">Upraven:</string>
    <string name="filedetails_download">Stáhnout</string>
+   <string name="filedetails_sync_file">Synchronizovat</string>
    <string name="filedetails_renamed_in_upload_msg">Soubor byl v průběhu odesílání přejmenován na %1$s</string>
    <string name="list_layout">Náhled seznamu</string>
    <string name="action_share_file">Sdílet odkaz</string>
@@@ -86,6 -87,7 +87,7 @@@
    <string name="common_yes">Ano</string>
    <string name="common_no">Ne</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Zrušit synchronizaci</string>
    <string name="common_cancel">Zrušit</string>
    <string name="common_save_exit">Uložit a ukončit</string>
    <string name="common_error">Chyba</string>
    <string name="unfavorite">Odebrat z oblíbených</string>
    <string name="common_rename">Přejmenovat</string>
    <string name="common_remove">Odstranit</string>
 -  <string name="confirmation_remove_alert">Opravdu chcete odstranit %1$s ?</string>
 +  <string name="confirmation_remove_file_alert">Opravdu chcete odstranit %1$s ?</string>
    <string name="confirmation_remove_folder_alert">Opravdu chcete odstranit %1$s a jeho obsah?</string>
    <string name="confirmation_remove_local">Pouze místní</string>
    <string name="confirmation_remove_folder_local">Pouze místní</string>
 -  <string name="confirmation_remove_remote">Ze serveru</string>
 +  <string name="confirmation_remove_file_remote">Ze serveru</string>
    <string name="confirmation_remove_remote_and_local">Vzdálený &amp; místní</string>
    <string name="remove_success_msg">Úspěšně odstraněno</string>
    <string name="remove_fail_msg">Odstranění nelze dokončit</string>
@@@ -312,6 -314,7 +314,7 @@@ správce systému.</string
    <string name="prefs_category_instant_uploading">Okamžitá odesílání</string>
    <string name="prefs_category_security">Zabezpečení</string>
    <string name="prefs_instant_video_upload_path_title">Cesta pro nahrávání videí</string>
+   <string name="sync_folder_failed_content">Synchronizaci adresáře %1$s nelze dokončit</string>
    <string name="shared_subject_header">sdílené</string>
    <string name="with_you_subject_header">s vámi</string>
    <string name="subject_token">%1$s s vámi sdílí \"%2$s\"</string>
@@@ -79,6 -79,7 +79,7 @@@
    <string name="filedetails_created">Luotu:</string>
    <string name="filedetails_modified">Muokattu:</string>
    <string name="filedetails_download">Lataa</string>
+   <string name="filedetails_sync_file">Synkronoi</string>
    <string name="filedetails_renamed_in_upload_msg">Tiedoston nimeksi muutettiin %1$s siirron yhteydessä</string>
    <string name="list_layout">Luettelon asettelu</string>
    <string name="action_share_file">Jaa linkki</string>
@@@ -86,6 -87,7 +87,7 @@@
    <string name="common_yes">Kyllä</string>
    <string name="common_no">Ei</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Peru synkronointi</string>
    <string name="common_cancel">Peru</string>
    <string name="common_save_exit">Tallenna ja poistu</string>
    <string name="common_error">Virhe</string>
    <string name="unfavorite">Poista suosikeista</string>
    <string name="common_rename">Nimeä uudelleen</string>
    <string name="common_remove">Poista</string>
 -  <string name="confirmation_remove_alert">Haluatko varmasti poistaa kohteen %1$s?</string>
 +  <string name="confirmation_remove_file_alert">Haluatko varmasti poistaa kohteen %1$s?</string>
    <string name="confirmation_remove_folder_alert">Haluatko varmasti poistaa kohteen %1$s ja sen sisällön?</string>
    <string name="confirmation_remove_local">Vain paikallinen</string>
    <string name="confirmation_remove_folder_local">Vain paikallinen</string>
 -  <string name="confirmation_remove_remote">Palvelimelta</string>
 +  <string name="confirmation_remove_file_remote">Palvelimelta</string>
    <string name="confirmation_remove_remote_and_local">Etä ja paikallinen</string>
    <string name="remove_success_msg">Poistettu onnistuneesti</string>
    <string name="remove_fail_msg">Poistamista ei voitu suorittaa loppuun asti</string>
    <string name="copy_file_error">Tätä tiedostoa tai kansiota kopioitaessa tapahtui virhe</string>
    <string name="prefs_category_instant_uploading">Välittömät lähetykset</string>
    <string name="prefs_category_security">Tietoturva</string>
+   <string name="sync_folder_failed_content">Kansion %1$s synkronointia ei voitu suorittaa kokonaan</string>
    <string name="shared_subject_header">jaettu</string>
    <string name="with_you_subject_header">kanssasi</string>
    <string name="subject_token">%1$s jakoi kohteen \"%2$s\" kanssasi</string>
@@@ -80,6 -80,7 +80,7 @@@ Téléchargez-le ici : %2$s</string
    <string name="filedetails_created">Créé le :</string>
    <string name="filedetails_modified">Modifié le :</string>
    <string name="filedetails_download">Télécharger</string>
+   <string name="filedetails_sync_file">Synchroniser</string>
    <string name="filedetails_renamed_in_upload_msg">Le fichier a été renommé en %s pendant le téléversement</string>
    <string name="list_layout">Affichage en liste</string>
    <string name="action_share_file">Partager le lien</string>
@@@ -87,6 -88,7 +88,7 @@@
    <string name="common_yes">Oui</string>
    <string name="common_no">Non</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Annuler la synchronisation</string>
    <string name="common_cancel">Annuler</string>
    <string name="common_save_exit">Sauvegarder &amp; Quitter</string>
    <string name="common_error">Erreur</string>
@@@ -201,11 -203,11 +203,11 @@@ Ci-dessous la liste des fichiers locaux
    <string name="unfavorite">Retirer des favoris</string>
    <string name="common_rename">Renommer</string>
    <string name="common_remove">Supprimer</string>
 -  <string name="confirmation_remove_alert">Voulez-vous vraiment supprimer %1$s ?</string>
 +  <string name="confirmation_remove_file_alert">Voulez-vous vraiment supprimer %1$s ?</string>
    <string name="confirmation_remove_folder_alert">Voulez-vous vraiment supprimer %1$s et son contenu ?</string>
    <string name="confirmation_remove_local">Local seulement</string>
    <string name="confirmation_remove_folder_local">Local seulement</string>
 -  <string name="confirmation_remove_remote">Depuis le serveur</string>
 +  <string name="confirmation_remove_file_remote">Depuis le serveur</string>
    <string name="confirmation_remove_remote_and_local">Distant &amp; local</string>
    <string name="remove_success_msg">Suppression effectuée avec succès</string>
    <string name="remove_fail_msg">Suppression impossible</string>
    <string name="prefs_category_instant_uploading">Téléversement immédiat</string>
    <string name="prefs_category_security">Sécurité</string>
    <string name="prefs_instant_video_upload_path_title">Répertoire de téléversement des vidéos</string>
+   <string name="sync_folder_failed_content">La synchronisation du dossier %1$s n\'a pas pu être terminée</string>
    <string name="shared_subject_header">a partagé</string>
    <string name="with_you_subject_header">avec vous</string>
    <string name="subject_token">%1$s a partagé \"%2$s\" avec vous</string>
@@@ -79,6 -79,7 +79,7 @@@
    <string name="filedetails_created">Creato:</string>
    <string name="filedetails_modified">Modificato:</string>
    <string name="filedetails_download">Scarica</string>
+   <string name="filedetails_sync_file">Sincronizza</string>
    <string name="filedetails_renamed_in_upload_msg">Il file è stato rinominato in %1$s durante il caricamento</string>
    <string name="list_layout">Struttura elenco</string>
    <string name="action_share_file">Condividi collegamento</string>
@@@ -86,6 -87,7 +87,7 @@@
    <string name="common_yes">Sì</string>
    <string name="common_no">No</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Annulla sincronizzazione</string>
    <string name="common_cancel">Annulla</string>
    <string name="common_save_exit">Salva ed esci</string>
    <string name="common_error">Errore</string>
    <string name="unfavorite">Rimuovi dai preferiti</string>
    <string name="common_rename">Rinomina</string>
    <string name="common_remove">Rimuovi</string>
 -  <string name="confirmation_remove_alert">Vuoi davvero rimuovere %1$s?</string>
 +  <string name="confirmation_remove_file_alert">Vuoi davvero rimuovere %1$s?</string>
    <string name="confirmation_remove_folder_alert">Vuoi davvero rimuovere %1$s e il suo contenuto?</string>
    <string name="confirmation_remove_local">Solo localmente</string>
    <string name="confirmation_remove_folder_local">Solo locale</string>
 -  <string name="confirmation_remove_remote">Dal server</string>
 +  <string name="confirmation_remove_file_remote">Dal server</string>
    <string name="confirmation_remove_remote_and_local">Remota e locale</string>
    <string name="remove_success_msg">Rimozione effettuata con successo</string>
    <string name="remove_fail_msg">La rimozione non può essere completata</string>
    <string name="prefs_category_instant_uploading">Caricamenti istantanei</string>
    <string name="prefs_category_security">Protezione</string>
    <string name="prefs_instant_video_upload_path_title">Percorso di caricamento video</string>
+   <string name="sync_folder_failed_content">La sincronizzazione della cartella %1$s non può essere completata</string>
    <string name="shared_subject_header">condiviso</string>
    <string name="with_you_subject_header">con te</string>
    <string name="subject_token">%1$s ha condiviso \"%2$s\" con te</string>
@@@ -80,6 -80,7 +80,7 @@@ Download hier: %2$s</string
    <string name="filedetails_created">Aangemaakt:</string>
    <string name="filedetails_modified">Aangepast:</string>
    <string name="filedetails_download">Download</string>
+   <string name="filedetails_sync_file">Synchroniseren</string>
    <string name="filedetails_renamed_in_upload_msg">Bestand is tijdens het uploaden hernoemd naar %1$s</string>
    <string name="list_layout">Lijst layout</string>
    <string name="action_share_file">Deel link</string>
@@@ -87,6 -88,7 +88,7 @@@
    <string name="common_yes">Ja</string>
    <string name="common_no">Nee</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Annuleren synchronisatie</string>
    <string name="common_cancel">Annuleren</string>
    <string name="common_save_exit">Opslaan &amp; Afsluiten</string>
    <string name="common_error">Fout</string>
@@@ -199,11 -201,11 +201,11 @@@ Hieronder staan de lokale bestanden en 
    <string name="unfavorite">Niet meer favoriet</string>
    <string name="common_rename">Hernoemen</string>
    <string name="common_remove">Verwijderen</string>
 -  <string name="confirmation_remove_alert">Wilt u %1$s werkelijk verwijderen?</string>
 +  <string name="confirmation_remove_file_alert">Wilt u %1$s werkelijk verwijderen?</string>
    <string name="confirmation_remove_folder_alert">Wilt u %1$s en de inhoud ervan werkelijk verwijderen?</string>
    <string name="confirmation_remove_local">Alleen lokaal</string>
    <string name="confirmation_remove_folder_local">Alleen lokaal</string>
 -  <string name="confirmation_remove_remote">Van server</string>
 +  <string name="confirmation_remove_file_remote">Van server</string>
    <string name="confirmation_remove_remote_and_local">Extern &amp; lokaal</string>
    <string name="remove_success_msg">Succesvol verwijderd</string>
    <string name="remove_fail_msg">Verwijdering kon niet voltooid worden</string>
    <string name="prefs_category_instant_uploading">Directe uploads</string>
    <string name="prefs_category_security">Beveiliging</string>
    <string name="prefs_instant_video_upload_path_title">Upload Video Pad</string>
+   <string name="sync_folder_failed_content">Synchronisatie van map %1$s kon niet worden voltooid</string>
    <string name="shared_subject_header">gedeeld</string>
    <string name="with_you_subject_header">met u</string>
    <string name="subject_token">%1$s deelde \"%2$s\" met u</string>
@@@ -79,6 -79,7 +79,7 @@@
    <string name="filedetails_created">Criado:</string>
    <string name="filedetails_modified">Modificado:</string>
    <string name="filedetails_download">Baixar</string>
+   <string name="filedetails_sync_file">Sincronizar</string>
    <string name="filedetails_renamed_in_upload_msg">Arquivo foi renomeado para %1$s durante o envio</string>
    <string name="list_layout">Lista de Layout</string>
    <string name="action_share_file">Compartilhar link</string>
@@@ -86,6 -87,7 +87,7 @@@
    <string name="common_yes">Sim</string>
    <string name="common_no">Não</string>
    <string name="common_ok">OK</string>
+   <string name="common_cancel_sync">Cancelar a sincronização</string>
    <string name="common_cancel">Cancelar</string>
    <string name="common_save_exit">Salvar &amp; Sair</string>
    <string name="common_error">Erro</string>
    <string name="unfavorite">Nãofavorito</string>
    <string name="common_rename">Renomear</string>
    <string name="common_remove">Remover</string>
 -  <string name="confirmation_remove_alert">Você realmente deseja remover %1$s?</string>
 +  <string name="confirmation_remove_file_alert">Você realmente deseja remover %1$s?</string>
    <string name="confirmation_remove_folder_alert">Você realmente deseja remover %1$s e seus conteúdos?</string>
    <string name="confirmation_remove_local">Somente local</string>
    <string name="confirmation_remove_folder_local">Somente local</string>
 -  <string name="confirmation_remove_remote">Do servidor</string>
 +  <string name="confirmation_remove_file_remote">Do servidor</string>
    <string name="confirmation_remove_remote_and_local">Remoto &amp; local</string>
    <string name="remove_success_msg">Removido com sucesso</string>
    <string name="remove_fail_msg">Erro ao remover</string>
    <string name="prefs_category_instant_uploading">Envios Instantâneos</string>
    <string name="prefs_category_security">Segurança</string>
    <string name="prefs_instant_video_upload_path_title">Enviar o Caminho do Vídeo</string>
+   <string name="sync_folder_failed_content">A sincronização da pasta %1$s não pode ser finalizada</string>
    <string name="shared_subject_header">compartilhado</string>
    <string name="with_you_subject_header">com você</string>
    <string name="subject_token">%1$s compartilhado \"%2$s\" com você</string>
@@@ -79,6 -79,7 +79,7 @@@
    <string name="filedetails_created">Criado:</string>
    <string name="filedetails_modified">Modificado:</string>
    <string name="filedetails_download">Transferir</string>
+   <string name="filedetails_sync_file">Sincronizar</string>
    <string name="filedetails_renamed_in_upload_msg">O ficheiro foi renomeado para %1$s durante o envio.</string>
    <string name="list_layout">Apresentação da Lista</string>
    <string name="action_share_file">Partilhar a hiperligação</string>
@@@ -86,6 -87,7 +87,7 @@@
    <string name="common_yes">Sim</string>
    <string name="common_no">Não</string>
    <string name="common_ok">ACEITAR</string>
+   <string name="common_cancel_sync">Cancelar sincronização</string>
    <string name="common_cancel">Cancelar</string>
    <string name="common_save_exit">Guardar &amp; Sair</string>
    <string name="common_error">Erro</string>
    <string name="unfavorite">Retirar Favorito</string>
    <string name="common_rename">Renomear</string>
    <string name="common_remove">Remover</string>
 -  <string name="confirmation_remove_alert">Tem a certeza que deseja remover %1$s ?</string>
 +  <string name="confirmation_remove_file_alert">Tem a certeza que deseja remover %1$s ?</string>
    <string name="confirmation_remove_folder_alert">Deseja realmente remover %1$s e o seu conteúdo?</string>
    <string name="confirmation_remove_local">Apenas localmente</string>
    <string name="confirmation_remove_folder_local">Apenas localmente</string>
 -  <string name="confirmation_remove_remote">Do servidor</string>
 +  <string name="confirmation_remove_file_remote">Do servidor</string>
    <string name="confirmation_remove_remote_and_local">Remoto &amp; local</string>
    <string name="remove_success_msg">Removido com sucesso</string>
    <string name="remove_fail_msg">Não foi possível remover</string>
    <string name="prefs_category_instant_uploading">Envios Instantâneos</string>
    <string name="prefs_category_security">Segurança</string>
    <string name="prefs_instant_video_upload_path_title">Envio do Caminho do Vídeo</string>
+   <string name="sync_folder_failed_content">Não foi possível completar a sincronização da pasta %1$s</string>
    <string name="shared_subject_header">partilhado</string>
    <string name="with_you_subject_header">consigo</string>
    <string name="subject_token">%1$s partilhou \"%2$s\" consigo</string>
@@@ -25,19 -25,12 +25,19 @@@ package com.owncloud.android.ui.adapter
  \r
  \r
  import java.io.File;\r
 +import java.util.ArrayList;\r
 +import java.util.HashMap;\r
 +import java.util.Map;\r
  import java.util.Vector;\r
  \r
  import android.accounts.Account;\r
  import android.content.Context;\r
  import android.content.SharedPreferences;\r
  import android.graphics.Bitmap;\r
 +import android.graphics.Color;\r
 +import android.graphics.BitmapFactory;\r
 +import android.graphics.Canvas;\r
 +import android.graphics.Paint;\r
  import android.os.Build;\r
  import android.preference.PreferenceManager;\r
  import android.text.format.DateUtils;\r
@@@ -86,8 -79,6 +86,8 @@@ public class FileListListAdapter extend
      private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
  \r
      private SharedPreferences mAppPreferences;\r
 +\r
 +    private HashMap<Integer, Boolean> mSelection = new HashMap<Integer, Boolean>();\r
      \r
      public FileListListAdapter(\r
              boolean justFolders, \r
          ViewType viewType;\r
          if (!mGridMode){\r
              viewType = ViewType.LIST_ITEM;\r
 -        } else if (file.isImage()){\r
 +        } else if (file.isImage() || file.isVideo()){\r
              viewType = ViewType.GRID_IMAGE;\r
          } else {\r
              viewType = ViewType.GRID_ITEM;\r
  \r
              switch (viewType){\r
                  case LIST_ITEM:\r
-                     TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
+                     TextView fileSizeV = (TextView) view.findViewById(R.id.last_size);\r
                      TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator);\r
-                     TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
+                     TextView lastModV = (TextView) view.findViewById(R.id.file_mod);\r
 -                    ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +\r
  \r
                      lastModV.setVisibility(View.VISIBLE);\r
                      lastModV.setText(showRelativeTimestamp(file));\r
  \r
 -                    checkBoxV.setVisibility(View.GONE);\r
  \r
                      fileSizeSeparatorV.setVisibility(View.VISIBLE);\r
                      fileSizeV.setVisibility(View.VISIBLE);\r
                      fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
  \r
 -                    if (!file.isFolder()) {\r
 -                        AbsListView parentList = (AbsListView)parent;\r
 -                        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 -                            if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 -                                checkBoxV.setVisibility(View.GONE);\r
 -                            } else {\r
 -                                if (parentList.isItemChecked(position)) {\r
 -                                    checkBoxV.setImageResource(\r
 -                                            R.drawable.ic_checkbox_marked);\r
 -                                } else {\r
 -                                    checkBoxV.setImageResource(\r
 -                                            R.drawable.ic_checkbox_blank_outline);\r
 -                                }\r
 -                                checkBoxV.setVisibility(View.VISIBLE);\r
 -                            }\r
 -                        }\r
 -\r
 -                    } else { //Folder\r
 +//                    if (!file.isFolder()) {\r
 +//                        AbsListView parentList = (AbsListView)parent;\r
 +//                        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 +//                            if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 +//                                checkBoxV.setVisibility(View.GONE);\r
 +//                            } else {\r
 +//                                if (parentList.isItemChecked(position)) {\r
 +//                                    checkBoxV.setImageResource(\r
 +//                                            R.drawable.ic_checkbox_marked);\r
 +//                                } else {\r
 +//                                    checkBoxV.setImageResource(\r
 +//                                            R.drawable.ic_checkbox_blank_outline);\r
 +//                                }\r
 +//                                checkBoxV.setVisibility(View.VISIBLE);\r
 +//                            }\r
 +//                        }\r
 +\r
 +                    if (file.isFolder()) {\r
                          fileSizeSeparatorV.setVisibility(View.INVISIBLE);\r
                          fileSizeV.setVisibility(View.INVISIBLE);\r
                      }\r
  \r
                      break;\r
              }\r
 +\r
 +            ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +            checkBoxV.setVisibility(View.GONE);\r
 +\r
 +            AbsListView parentList = (AbsListView)parent;\r
 +            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 +                if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 +                    checkBoxV.setVisibility(View.GONE);\r
 +                } else if (parentList.getCheckedItemCount() > 0){\r
 +                    if (parentList.isItemChecked(position)) {\r
 +                        checkBoxV.setImageResource(\r
 +                                android.R.drawable.checkbox_on_background);\r
 +                    } else {\r
 +                        checkBoxV.setImageResource(\r
 +                                android.R.drawable.checkbox_off_background);\r
 +                    }\r
 +                    checkBoxV.setVisibility(View.VISIBLE);\r
 +                }\r
 +            }\r
              \r
              // For all Views\r
              \r
              \r
              // No Folder\r
              if (!file.isFolder()) {\r
 -                if (file.isImage() && file.getRemoteId() != null){\r
 +                if ((file.isImage() || file.isVideo()) && file.getRemoteId() != null){\r
                      // Thumbnail in Cache?\r
                      Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(\r
 -                            String.valueOf(file.getRemoteId())\r
 -                            );\r
 +                            "t" + String.valueOf(file.getRemoteId()));\r
                      if (thumbnail != null && !file.needsUpdateThumbnail()){\r
 -                        fileIcon.setImageBitmap(thumbnail);\r
 +\r
 +                        if (file.isVideo()) {\r
 +                            Bitmap withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail);\r
 +                            fileIcon.setImageBitmap(withOverlay);\r
 +                        } else {\r
 +                            fileIcon.setImageBitmap(thumbnail);\r
 +                        }\r
                      } else {\r
                          // generate new Thumbnail\r
                          if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {\r
                                      task\r
                                      );\r
                              fileIcon.setImageDrawable(asyncDrawable);\r
 -                            task.execute(file);\r
 +                            task.execute(file, true);\r
                          }\r
                      }\r
  \r
              }\r
          }\r
  \r
 +        if (mSelection.get(position) != null) {\r
 +            view.setBackgroundColor(Color.rgb(248, 248, 248));\r
 +        } else {\r
 +            view.setBackgroundColor(Color.WHITE);\r
 +        }\r
 +\r
          return view;\r
      }\r
  \r
       *                                  mStorageManager if is different (and not NULL)\r
       */\r
      public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager\r
 -            /*, boolean onlyOnDevice*/) {\r
 +            , boolean onlyOnDevice) {\r
          mFile = directory;\r
          if (updatedStorageManager != null && updatedStorageManager != mStorageManager) {\r
              mStorageManager = updatedStorageManager;\r
              mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext);\r
          }\r
          if (mStorageManager != null) {\r
 -            // TODO Enable when "On Device" is recovered ?\r
 -            mFiles = mStorageManager.getFolderContent(mFile/*, onlyOnDevice*/);\r
 +            mFiles = mStorageManager.getFolderContent(mFile, onlyOnDevice);\r
              mFilesOrig.clear();\r
              mFilesOrig.addAll(mFiles);\r
              \r
              mFiles = null;\r
          }\r
  \r
 -        mFiles = FileStorageUtils.sortFolder(mFiles);\r
 +        mFiles = FileStorageUtils.sortOcFolder(mFiles);\r
          notifyDataSetChanged();\r
      }\r
      \r
          FileStorageUtils.mSortAscending = ascending;\r
          \r
  \r
 -        mFiles = FileStorageUtils.sortFolder(mFiles);\r
 +        mFiles = FileStorageUtils.sortOcFolder(mFiles);\r
          notifyDataSetChanged();\r
  \r
      }\r
      public void setGridMode(boolean gridMode) {\r
          mGridMode = gridMode;\r
      }\r
 +\r
 +    public boolean isGridMode() {\r
 +        return mGridMode;\r
 +    }\r
 +\r
 +    public void setNewSelection(int position, boolean checked) {\r
 +        mSelection.put(position, checked);\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public void removeSelection(int position) {\r
 +        mSelection.remove(position);\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public void removeSelection(){\r
 +         mSelection.clear();\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public ArrayList<Integer> getCheckedItemPositions() {\r
 +        ArrayList<Integer> ids = new ArrayList<Integer>();\r
 +\r
 +        for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
 +            if (entry.getValue()){\r
 +                ids.add(entry.getKey());\r
 +            }\r
 +        }\r
 +        return ids;\r
 +    }\r
 +\r
 +    public ArrayList<OCFile> getCheckedItems() {\r
 +        ArrayList<OCFile> files = new ArrayList<OCFile>();\r
 +\r
 +        for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
 +            if (entry.getValue()){\r
 +                files.add((OCFile) getItem(entry.getKey()));\r
 +            }\r
 +        }\r
 +        return files;\r
 +    }\r
  }\r
@@@ -25,9 -25,7 +25,9 @@@ import java.util.Arrays
  import java.util.Comparator;
  
  import android.content.Context;
 +import android.content.SharedPreferences;
  import android.graphics.Bitmap;
 +import android.preference.PreferenceManager;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
@@@ -43,7 -41,6 +43,7 @@@ import com.owncloud.android.lib.common.
  import com.owncloud.android.utils.BitmapUtils;
  import com.owncloud.android.utils.DisplayUtils;
  import com.owncloud.android.utils.MimetypeIconUtil;
 +import com.owncloud.android.utils.FileStorageUtils;
  
  /**
   * This Adapter populates a ListView with all files and directories contained
@@@ -56,18 -53,9 +56,18 @@@ public class LocalFileListAdapter exten
      private Context mContext;
      private File mDirectory;
      private File[] mFiles = null;
 +    private SharedPreferences mAppPreferences;
      
      public LocalFileListAdapter(File directory, Context context) {
          mContext = context;
 +
 +        mAppPreferences = PreferenceManager
 +                .getDefaultSharedPreferences(mContext);
 +
 +        // Read sorting order, default to sort by name ascending
 +        FileStorageUtils.mSortOrder = mAppPreferences.getInt("sortOrder", 0);
 +        FileStorageUtils.mSortAscending = mAppPreferences.getBoolean("sortAscending", true);
 +
          swapDirectory(directory);
      }
  
              }
              fileIcon.setTag(file.hashCode());
  
-             TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);
+             TextView fileSizeV = (TextView) view.findViewById(R.id.last_size);
              TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator);
-             TextView lastModV = (TextView) view.findViewById(R.id.last_mod);
+             TextView lastModV = (TextView) view.findViewById(R.id.file_mod);
              ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);
              if (!file.isDirectory()) {
                  fileSizeSeparatorV.setVisibility(View.VISIBLE);
                  }
              
              });
 +
 +            mFiles = FileStorageUtils.sortLocalFolder(mFiles);
          }
          notifyDataSetChanged();
      }
 +
 +    public void setSortOrder(Integer order, boolean ascending) {
 +        SharedPreferences.Editor editor = mAppPreferences.edit();
 +        editor.putInt("sortOrder", order);
 +        editor.putBoolean("sortAscending", ascending);
 +        editor.commit();
 +
 +        FileStorageUtils.mSortOrder = order;
 +        FileStorageUtils.mSortAscending = ascending;
 +
 +        mFiles = FileStorageUtils.sortLocalFolder(mFiles);
 +        notifyDataSetChanged();
 +
 +    }
  }