Răsfoiți Sursa

merge develop

purigarcia 9 ani în urmă
părinte
comite
f068a156c5
84 a modificat fișierele cu 564 adăugiri și 243 ștergeri
  1. 13 1
      README.md
  2. 3 3
      res/layout/file_details_fragment.xml
  3. 2 0
      res/menu/file_actions_menu.xml
  4. 1 1
      res/values-ar/strings.xml
  5. 1 1
      res/values-az/strings.xml
  6. 23 1
      res/values-bg-rBG/strings.xml
  7. 1 1
      res/values-bn-rBD/strings.xml
  8. 1 0
      res/values-bs/strings.xml
  9. 1 1
      res/values-ca/strings.xml
  10. 11 1
      res/values-cs-rCZ/strings.xml
  11. 0 1
      res/values-cy-rGB/strings.xml
  12. 2 1
      res/values-da/strings.xml
  13. 21 1
      res/values-de-rDE/strings.xml
  14. 20 1
      res/values-de/strings.xml
  15. 11 1
      res/values-el/strings.xml
  16. 2 1
      res/values-en-rGB/strings.xml
  17. 2 1
      res/values-eo/strings.xml
  18. 1 1
      res/values-es-rAR/strings.xml
  19. 0 1
      res/values-es-rCL/strings.xml
  20. 1 1
      res/values-es-rMX/strings.xml
  21. 2 1
      res/values-es/strings.xml
  22. 2 1
      res/values-et-rEE/strings.xml
  23. 1 1
      res/values-eu/strings.xml
  24. 0 1
      res/values-fa/strings.xml
  25. 11 1
      res/values-fi-rFI/strings.xml
  26. 3 2
      res/values-fr/strings.xml
  27. 2 1
      res/values-gl/strings.xml
  28. 1 1
      res/values-he/strings.xml
  29. 1 0
      res/values-hr/strings.xml
  30. 2 1
      res/values-hu-rHU/strings.xml
  31. 2 1
      res/values-id/strings.xml
  32. 2 1
      res/values-it/strings.xml
  33. 22 1
      res/values-ja-rJP/strings.xml
  34. 1 1
      res/values-ka-rGE/strings.xml
  35. 0 1
      res/values-km/strings.xml
  36. 1 0
      res/values-kn/strings.xml
  37. 22 1
      res/values-ko/strings.xml
  38. 0 1
      res/values-lb/strings.xml
  39. 1 1
      res/values-lt-rLT/strings.xml
  40. 1 1
      res/values-lv/strings.xml
  41. 0 1
      res/values-mk/strings.xml
  42. 2 1
      res/values-nb-rNO/strings.xml
  43. 2 1
      res/values-nl/strings.xml
  44. 1 1
      res/values-nn-rNO/strings.xml
  45. 1 0
      res/values-oc/strings.xml
  46. 0 1
      res/values-pa/strings.xml
  47. 2 1
      res/values-pl/strings.xml
  48. 2 1
      res/values-pt-rBR/strings.xml
  49. 2 1
      res/values-pt-rPT/strings.xml
  50. 32 1
      res/values-ro/strings.xml
  51. 17 7
      res/values-ru/strings.xml
  52. 0 1
      res/values-si-rLK/strings.xml
  53. 4 1
      res/values-sk-rSK/strings.xml
  54. 1 1
      res/values-sl/strings.xml
  55. 1 0
      res/values-sr-rSP/strings.xml
  56. 2 1
      res/values-sr/strings.xml
  57. 2 1
      res/values-sv/strings.xml
  58. 1 1
      res/values-ta-rLK/strings.xml
  59. 2 1
      res/values-th-rTH/strings.xml
  60. 12 1
      res/values-tr/strings.xml
  61. 1 0
      res/values-ug/strings.xml
  62. 1 1
      res/values-uk/strings.xml
  63. 1 1
      res/values-vi/strings.xml
  64. 1 1
      res/values-zh-rCN/strings.xml
  65. 1 1
      res/values-zh-rTW/strings.xml
  66. 2 1
      res/values/strings.xml
  67. 5 5
      src/com/owncloud/android/datamodel/FileDataStorageManager.java
  68. 10 10
      src/com/owncloud/android/datamodel/OCFile.java
  69. 14 0
      src/com/owncloud/android/files/FileMenuFilter.java
  70. 21 2
      src/com/owncloud/android/files/FileOperationsHelper.java
  71. 2 2
      src/com/owncloud/android/operations/RefreshFolderOperation.java
  72. 3 3
      src/com/owncloud/android/operations/SynchronizeFileOperation.java
  73. 2 2
      src/com/owncloud/android/operations/SynchronizeFolderOperation.java
  74. 1 1
      src/com/owncloud/android/operations/UploadFileOperation.java
  75. 121 93
      src/com/owncloud/android/ui/activity/FileActivity.java
  76. 1 0
      src/com/owncloud/android/ui/activity/FileDisplayActivity.java
  77. 25 7
      src/com/owncloud/android/ui/activity/PassCodeActivity.java
  78. 10 10
      src/com/owncloud/android/ui/adapter/FileListListAdapter.java
  79. 6 6
      src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java
  80. 18 29
      src/com/owncloud/android/ui/fragment/FileDetailFragment.java
  81. 10 3
      src/com/owncloud/android/ui/fragment/OCFileListFragment.java
  82. 12 0
      src/com/owncloud/android/ui/preview/PreviewImageActivity.java
  83. 8 1
      src/com/owncloud/android/ui/preview/PreviewImageFragment.java
  84. 8 1
      src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

+ 13 - 1
README.md

@@ -1,8 +1,20 @@
-This is the Android client for [ownCloud][0].
+#This is the Android client for [ownCloud][0]
 
 The app performs file synchronization with an ownCloud server. Other ownCloud features may be added in the future, but they are not a priority right now.
 
+## Build Status on
+Git master:  ![Build Status](https://api.travis-ci.org/owncloud/android.svg?branch=master)
+
+Git develop: ![Build Status](https://api.travis-ci.org/owncloud/android.svg?branch=develop)
+
+## Development
+
+### Project Setup
 Make sure you read [SETUP.md][1] when you start working on this project.
 
 [0]: https://github.com/owncloud/core
 [1]: https://github.com/owncloud/android/blob/master/SETUP.md
+
+### Contributing
+Please see [Contribution Guidelines](https://owncloud.org/contribute/). Fork this repository and contribute back using
+[pull requests](https://github.com/owncloud/android/pulls). All pull requests should be based on, and targeted to, the ['develop'](https://github.com/owncloud/android/tree/develop) branch.

+ 3 - 3
res/layout/file_details_fragment.xml

@@ -160,16 +160,16 @@
 			>
 			
 			<CheckBox
-				android:id="@+id/fdKeepInSync"
+				android:id="@+id/fdFavorite"
 				android:layout_width="wrap_content"
 				android:layout_height="wrap_content"
 				android:layout_centerHorizontal="true"
-				android:text="@string/fd_keep_in_sync" />
+				android:text="@string/favorite" />
 
 			<LinearLayout
 				android:layout_width="match_parent"
 				android:layout_height="wrap_content"
-				android:layout_below="@id/fdKeepInSync"
+				android:layout_below="@id/fdFavorite"
 				android:orientation="vertical" >
 				
     			<TextView 

+ 2 - 0
res/menu/file_actions_menu.xml

@@ -30,6 +30,8 @@
     <item 	android:id="@+id/action_move"					android:title="@string/actionbar_move"				android:icon="@android:drawable/ic_menu_set_as"					android:orderInCategory="1" />
     <item 	android:id="@+id/action_remove_file"			android:title="@string/common_remove"				android:icon="@android:drawable/ic_menu_delete"					android:orderInCategory="1" />
     <item 	android:id="@+id/action_send_file"				android:title="@string/actionbar_send_file"			android:icon="@android:drawable/ic_menu_set_as"					android:orderInCategory="1" />
+    <item 	android:id="@+id/action_favorite_file"			android:title="@string/favorite"		    	android:icon="@android:drawable/ic_menu_set_as"					android:orderInCategory="1" />
+    <item 	android:id="@+id/action_unfavorite_file"		android:title="@string/unfavorite"		    	    android:icon="@android:drawable/ic_menu_set_as"					android:orderInCategory="1" />
     <item 	android:id="@+id/action_see_details"			android:title="@string/actionbar_see_details"		android:icon="@android:drawable/ic_menu_info_details"			android:orderInCategory="1" />
 
 </menu>

+ 1 - 1
res/values-ar/strings.xml

@@ -163,7 +163,7 @@
   <string name="auth_fail_get_user_name">الخادم الخاص بك لم يعد الإتصال بهويتك الصحيحة, الرجاء الإتصال بالمسؤول
 	</string>
   <string name="auth_can_not_auth_against_server">لا يمكن المصادقة من الخادم</string>
-  <string name="fd_keep_in_sync"> جعل الملف محدثا</string>
+  <string name="favorite">المفضلة</string>
   <string name="common_rename">إعادة التسمية</string>
   <string name="common_remove">حذف</string>
   <string name="confirmation_remove_alert">هل تريد حقاً حذف %1$s ؟</string>

+ 1 - 1
res/values-az/strings.xml

@@ -180,7 +180,7 @@ Aşağıda göstərilən %5$s-də olan daxili və xarici fayl(lar) link edilmiş
   <string name="auth_fail_get_user_name">Sizin server düzgün istifadəçi id-si qaytarmır, xahiş olunur inzibatçı ilə əlaqə saxlayasınız</string>
   <string name="auth_can_not_auth_against_server">Bu serverdə yenidən qeydiyyatdan keçmək olmur</string>
   <string name="auth_account_does_not_exist">Hesab göstərilən avadanlıqda mövcud deyil</string>
-  <string name="fd_keep_in_sync">Faylı gündəmdə saxla</string>
+  <string name="favorite">İstəkli</string>
   <string name="common_rename">Adı dəyiş</string>
   <string name="common_remove">Sil</string>
   <string name="confirmation_remove_alert">Siz həqiqətən %1$s silmək istəyirsiniz?</string>

+ 23 - 1
res/values-bg-rBG/strings.xml

@@ -31,6 +31,7 @@
   <string name="prefs_category_more">Още</string>
   <string name="prefs_accounts">Профили</string>
   <string name="prefs_manage_accounts">Управление на профилите</string>
+  <string name="prefs_passcode">Заключваща парола</string>
   <string name="prefs_instant_upload">Незабавно качване на снимки</string>
   <string name="prefs_instant_upload_summary">Незабвано качване на снимки направени с камерата</string>
   <string name="prefs_instant_video_upload">Незабавно качване на видео</string>
@@ -68,6 +69,7 @@
   <string name="uploader_info_uploading">Качване</string>
   <string name="file_list_seconds_ago">преди секунди</string>
   <string name="file_list_empty">Тук няма нищо. Качете нещо!</string>
+  <string name="file_list_loading">Зарежда…</string>
   <string name="local_file_list_empty">Няма файлове в тази папка.</string>
   <string name="filedetails_select_file">Натисни върху файл, за да видиш допълнителна информация.</string>
   <string name="filedetails_size">Размер:</string>
@@ -135,6 +137,10 @@
   <string name="pass_code_configure_your_pass_code_explanation">Паролата ще се изисква при всяко стартиране на приложението</string>
   <string name="pass_code_reenter_your_pass_code">Моля,  въведи парола за достъп отново</string>
   <string name="pass_code_remove_your_pass_code">Премахни парола</string>
+  <string name="pass_code_mismatch">Паролите не съвпадат</string>
+  <string name="pass_code_wrong">Грешна парола</string>
+  <string name="pass_code_removed">Паролата премахната</string>
+  <string name="pass_code_stored">Паролата е запаметена</string>
   <string name="media_notif_ticker">%1$s музикален плеър</string>
   <string name="media_state_playing">%1$s (пусната)</string>
   <string name="media_state_loading">%1$s (се зарежда)</string>
@@ -186,7 +192,8 @@
   <string name="auth_fail_get_user_name">Вашият сървър не връща правилен потребителски индентификатор.
 Моля, свържете се с администратора.</string>
   <string name="auth_can_not_auth_against_server">Неуспешен опит за оторизиране с този сървър.</string>
-  <string name="fd_keep_in_sync">Поддържане на файла обновен.</string>
+  <string name="auth_account_does_not_exist">Профила не съществува на устройството все още</string>
+  <string name="favorite">Любими</string>
   <string name="common_rename">Преименуване</string>
   <string name="common_remove">Премахване</string>
   <string name="confirmation_remove_alert">Наистина ли искате да изтриете %1$s ?</string>
@@ -204,11 +211,13 @@
   <string name="sync_file_nothing_to_do_msg">Съдържанието на файла е вече синхронизирано</string>
   <string name="create_dir_fail_msg">Папката не може да бъде създадена</string>
   <string name="filename_forbidden_characters">Забранени символи: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Името на файла съдържа поне един невалиден символ</string>
   <string name="filename_empty">Името на файла не може да бъде празно</string>
   <string name="wait_a_moment">Изчакайте малко</string>
   <string name="filedisplay_unexpected_bad_get_content">Неочакван проблем; моля, изберете файла от друга програма.</string>
   <string name="filedisplay_no_file_selected">Не е избран файл</string>
   <string name="activity_chooser_title">Изпращане на връзката до...</string>
+  <string name="wait_for_tmp_copy_from_private_storage">Копира файла от личното хранилище</string>
   <string name="oauth_check_onoff">Вписване с oAuth2</string>
   <string name="oauth_login_connection">Свързване с оАутх2 сървър...</string>
   <string name="ssl_validator_header">Самоличността на сайта не може да бъде проверена.</string>
@@ -300,6 +309,19 @@
   <string name="prefs_category_security">Сигурност</string>
   <string name="prefs_instant_video_upload_path_title">Качване на видео път</string>
   <string name="download_folder_failed_content">Свалянето на директорията %1$s не може да бъде завършено</string>
+  <string name="shared_subject_header">споделен</string>
+  <string name="with_you_subject_header">с теб</string>
+  <string name="subject_token">%1$s споделен \"%2$s\" с теб</string>
   <string name="auth_refresh_button">Обнови връзката</string>
   <string name="auth_host_address">Адрес на сървъра</string>
+  <string name="common_error_out_memory">Няма достатъчно памет</string>
+  <string name="username">Потребителско име</string>
+  <string name="file_list__footer__folder">1 папка</string>
+  <string name="file_list__footer__folders">%1$d папки</string>
+  <string name="file_list__footer__file">1 файл</string>
+  <string name="file_list__footer__file_and_folder">1 файл, 1 папка</string>
+  <string name="file_list__footer__file_and_folders">1 файл, %1$d папки</string>
+  <string name="file_list__footer__files">%1$d файла</string>
+  <string name="file_list__footer__files_and_folder">%1$d файла, 1 папка</string>
+  <string name="file_list__footer__files_and_folders">%1$d файла, %2$d папки</string>
 </resources>

+ 1 - 1
res/values-bn-rBD/strings.xml

@@ -165,7 +165,7 @@
   <string name="auth_fail_get_user_name">আপনার সার্ভার একটি সঠিক ব্যবহারকারী আইডি দেয়না। দয়া করে প্রশাসকের সংগে যোগাযোগ করুন
 ⇥</string>
   <string name="auth_can_not_auth_against_server">এই সার্ভারের বিপরীতে অনুমোদন প্রদান করা গেলনা</string>
-  <string name="fd_keep_in_sync">ফাইল নবায়ন করে রাখুন</string>
+  <string name="favorite">প্রিয়জন</string>
   <string name="common_rename">পূনঃনামকরণ</string>
   <string name="common_remove">অপসারণ</string>
   <string name="confirmation_remove_alert">আপনি কি সত্যিই %1$s অপসারণ করতে চান?</string>

+ 1 - 0
res/values-bs/strings.xml

@@ -29,6 +29,7 @@
   <string name="common_error_unknown">Nepoznata greška</string>
   <string name="change_password">Promijeni lozinku</string>
   <string name="create_account">Kreiraj račun</string>
+  <string name="favorite">Favorit</string>
   <string name="common_rename">Preimenuj</string>
   <string name="activity_chooser_send_file_title">Pošalji</string>
   <string name="empty"></string>

+ 1 - 1
res/values-ca/strings.xml

@@ -171,7 +171,7 @@
   <string name="auth_unsupported_multiaccount">%1$s no permet comptes múltiples</string>
   <string name="auth_fail_get_user_name">El servidor no retorna una id d\'usuari correcta, contacteu amb l\'administrador.</string>
   <string name="auth_can_not_auth_against_server">No es pot autenticar en aquest servidor</string>
-  <string name="fd_keep_in_sync">Mantén el fitxer actualitzat</string>
+  <string name="favorite">Preferits</string>
   <string name="common_rename">Reanomena</string>
   <string name="common_remove">Elimina</string>
   <string name="confirmation_remove_alert">Esteu segur que voleu eliminar %1$s?</string>

+ 11 - 1
res/values-cs-rCZ/strings.xml

@@ -69,6 +69,7 @@
   <string name="uploader_info_uploading">Odesílání</string>
   <string name="file_list_seconds_ago">před pár sekundami</string>
   <string name="file_list_empty">Žádný obsah. Nahrajte něco!</string>
+  <string name="file_list_loading">Načítání...</string>
   <string name="local_file_list_empty">V tomto adresáři nejsou žádné soubory.</string>
   <string name="filedetails_select_file">Více informací získáte klepnutím na soubor.</string>
   <string name="filedetails_size">Velikost:</string>
@@ -191,7 +192,8 @@
   <string name="auth_fail_get_user_name">Váš server nevrací správné přihlašovací ID, kontaktujte prosím svého správce systému</string>
   <string name="auth_can_not_auth_against_server">Není možné provést ověření  </string>
   <string name="auth_account_does_not_exist">V zařízení není zatím nastaven účet</string>
-  <string name="fd_keep_in_sync">Udržovat soubor aktuální</string>
+  <string name="favorite">Oblíbené</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>
@@ -314,4 +316,12 @@ správce systému.</string>
   <string name="auth_host_address">Adresa serveru</string>
   <string name="common_error_out_memory">Nedostatek paměti</string>
   <string name="username">Uživatelské jméno</string>
+  <string name="file_list__footer__folder">1 adresář</string>
+  <string name="file_list__footer__folders">%1$d adresáře(ů)</string>
+  <string name="file_list__footer__file">1 soubor</string>
+  <string name="file_list__footer__file_and_folder">1 soubor, 1 adresář</string>
+  <string name="file_list__footer__file_and_folders">1 soubor, %1$d adresáře(ů)</string>
+  <string name="file_list__footer__files">%1$d soubory(ů)</string>
+  <string name="file_list__footer__files_and_folder">%1$d soubory(ů), 1 adresář</string>
+  <string name="file_list__footer__files_and_folders">%1$d soubory(ů), %2$d adresáře(ů)</string>
 </resources>

+ 0 - 1
res/values-cy-rGB/strings.xml

@@ -88,7 +88,6 @@
   <string name="auth_bad_oc_version_title">Fersiwn gweinydd heb ei gydnabod</string>
   <string name="auth_wrong_connection_title">Methwyd creu cysylltiad</string>
   <string name="auth_secure_connection">Sefydlwyd cysylltiad diogel</string>
-  <string name="fd_keep_in_sync">Cadw\'r ffeil yn gyfredol</string>
   <string name="common_rename">Ailenwi</string>
   <string name="common_remove">Gwaredu</string>
   <string name="confirmation_remove_local">Lleol yn unig</string>

+ 2 - 1
res/values-da/strings.xml

@@ -192,7 +192,8 @@
   <string name="auth_fail_get_user_name">Din server retunere ikke et korrekt bruger-id. Kontakt venligst din administrator</string>
   <string name="auth_can_not_auth_against_server">Kan ikke autentificere mod denne server</string>
   <string name="auth_account_does_not_exist">Kontoen findes endnu ikke på enheden</string>
-  <string name="fd_keep_in_sync">Hold filen opdateret</string>
+  <string name="favorite">Foretrukken</string>
+  <string name="unfavorite">Fjern markering som foretrukket</string>
   <string name="common_rename">Omdøb</string>
   <string name="common_remove">Fjern</string>
   <string name="confirmation_remove_alert">Er du sikker på at du vil fjerne %1$s ?</string>

+ 21 - 1
res/values-de-rDE/strings.xml

@@ -21,8 +21,12 @@
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">Alle Dateien</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">Einstellungen</string>
+  <string name="drawer_item_logs">Protokolle</string>
+  <string name="drawer_close">Schließen</string>
   <string name="prefs_category_general">Allgemein</string>
   <string name="prefs_category_more">Mehr</string>
   <string name="prefs_accounts">Konten</string>
@@ -65,6 +69,7 @@
   <string name="uploader_info_uploading">Lade hoch</string>
   <string name="file_list_seconds_ago">Gerade eben</string>
   <string name="file_list_empty">Alles leer. Laden Sie etwas hoch!</string>
+  <string name="file_list_loading">Lade…</string>
   <string name="local_file_list_empty">Es befinden sich keine Dateien in diesem Ordner.</string>
   <string name="filedetails_select_file">Klicken Sie auf eine Datei für weitere Informationen.</string>
   <string name="filedetails_size">Größe:</string>
@@ -74,6 +79,7 @@
   <string name="filedetails_download">Herunterladen</string>
   <string name="filedetails_sync_file">Datei aktualisieren</string>
   <string name="filedetails_renamed_in_upload_msg">Datei wurde wärend des Uploads zu %1$s umbenannt</string>
+  <string name="list_layout">Listen-Layout</string>
   <string name="action_share_file">Link teilen</string>
   <string name="action_unshare_file">Link nicht mehr teilen</string>
   <string name="common_yes">Ja</string>
@@ -187,7 +193,8 @@
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Die Legitimierung gegenüber dem Server konnte nicht durchgeführt werden</string>
   <string name="auth_account_does_not_exist">Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden</string>
-  <string name="fd_keep_in_sync">Datei aktuell halten</string>
+  <string name="favorite">Favorit</string>
+  <string name="unfavorite">Nicht mehr favorisieren</string>
   <string name="common_rename">Umbenennen</string>
   <string name="common_remove">Löschen</string>
   <string name="confirmation_remove_alert">Möchten Sie %1$s wirklich löschen?</string>
@@ -205,6 +212,7 @@
   <string name="sync_file_nothing_to_do_msg">Dateiinhalte bereits synchronisiert</string>
   <string name="create_dir_fail_msg">Ordner konnte nicht erstellt werden</string>
   <string name="filename_forbidden_characters">Verbotene Zeichen: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Der Dateiname enthält mindestens ein ungültiges Zeichen</string>
   <string name="filename_empty">Dateiname darf nicht leer sein</string>
   <string name="wait_a_moment">Bitte warten Sie einen Moment.</string>
   <string name="filedisplay_unexpected_bad_get_content">Ein unerwartetes Problem ist aufgetreten. Bitte versuchen Sie, die Datei in einer anderen App zu öffnen.</string>
@@ -302,7 +310,19 @@
   <string name="prefs_category_security">Sicherheit</string>
   <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
   <string name="download_folder_failed_content">Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden</string>
+  <string name="shared_subject_header">geteilt</string>
+  <string name="with_you_subject_header">Mit Ihnen</string>
+  <string name="subject_token">%1$s hat \"%2$s\" mit Ihnen geteilt</string>
   <string name="auth_refresh_button">Verbindung aktualisieren</string>
   <string name="auth_host_address">Serveradresse</string>
   <string name="common_error_out_memory">Nicht genügend Speicher</string>
+  <string name="username">Benutzername</string>
+  <string name="file_list__footer__folder">1 Ordner</string>
+  <string name="file_list__footer__folders">%1$d Ordner</string>
+  <string name="file_list__footer__file">1 Datei</string>
+  <string name="file_list__footer__file_and_folder">1 Datei, 1 Ordner</string>
+  <string name="file_list__footer__file_and_folders">1 Datei, %1$d Ordner</string>
+  <string name="file_list__footer__files">%1$d Dateien</string>
+  <string name="file_list__footer__files_and_folder">%1$d Dateien, 1 Ordner</string>
+  <string name="file_list__footer__files_and_folders">%1$d Dateien, %2$d Ordner</string>
 </resources>

+ 20 - 1
res/values-de/strings.xml

@@ -21,9 +21,12 @@
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">Alle Dateien</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
   <string name="drawer_item_settings">Einstellungen</string>
+  <string name="drawer_item_logs">Protokolle</string>
+  <string name="drawer_close">Schließen</string>
   <string name="prefs_category_general">Allgemein</string>
   <string name="prefs_category_more">Mehr</string>
   <string name="prefs_accounts">Konten</string>
@@ -66,6 +69,7 @@
   <string name="uploader_info_uploading">Lade hoch</string>
   <string name="file_list_seconds_ago">Gerade eben</string>
   <string name="file_list_empty">Alles leer. Lade etwas hoch!</string>
+  <string name="file_list_loading">Lade…</string>
   <string name="local_file_list_empty">Es befinden sich keine Dateien in diesem Ordner.</string>
   <string name="filedetails_select_file">Klicken Sie auf eine Datei für weitere Informationen.</string>
   <string name="filedetails_size">Größe:</string>
@@ -75,6 +79,7 @@
   <string name="filedetails_download">Herunterladen</string>
   <string name="filedetails_sync_file">Datei aktualisieren</string>
   <string name="filedetails_renamed_in_upload_msg">Datei wurde wärend des Uploads zu %1$s umbenannt</string>
+  <string name="list_layout">Listen-Layout</string>
   <string name="action_share_file">Link teilen</string>
   <string name="action_unshare_file">Link nicht mehr freigeben</string>
   <string name="common_yes">Ja</string>
@@ -188,7 +193,8 @@
 </string>
   <string name="auth_can_not_auth_against_server">Die Authentifizierung gegenüber dem Server konnte nicht durchgeführt werden</string>
   <string name="auth_account_does_not_exist">Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden</string>
-  <string name="fd_keep_in_sync">Datei aktuell halten</string>
+  <string name="favorite">Favorisieren</string>
+  <string name="unfavorite">Favorit entfernen</string>
   <string name="common_rename">Umbenennen</string>
   <string name="common_remove">Löschen</string>
   <string name="confirmation_remove_alert">Möchtest Du %1$s wirklich löschen?</string>
@@ -206,6 +212,7 @@
   <string name="sync_file_nothing_to_do_msg">Dateiinhalte bereits synchronisiert</string>
   <string name="create_dir_fail_msg">Verzeichnis konnte nicht erstellt werden</string>
   <string name="filename_forbidden_characters">Verbotene Zeichen: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Der Dateiname enthält mindestens ein ungültiges Zeichen</string>
   <string name="filename_empty">Dateiname darf nicht leer sein</string>
   <string name="wait_a_moment">Bitte warte einen Moment.</string>
   <string name="filedisplay_unexpected_bad_get_content">Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen</string>
@@ -303,7 +310,19 @@
   <string name="prefs_category_security">Sicherheit</string>
   <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
   <string name="download_folder_failed_content">Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden</string>
+  <string name="shared_subject_header">geteilt</string>
+  <string name="with_you_subject_header">Mit Dir</string>
+  <string name="subject_token">%1$s hat \"%2$s\" mit Dir geteilt</string>
   <string name="auth_refresh_button">Verbindung aktualisieren</string>
   <string name="auth_host_address">Serveradresse</string>
   <string name="common_error_out_memory">Nicht genügend Speicher</string>
+  <string name="username">Benutzername</string>
+  <string name="file_list__footer__folder">1 Ordner</string>
+  <string name="file_list__footer__folders">%1$d Ordner</string>
+  <string name="file_list__footer__file">1 Datei</string>
+  <string name="file_list__footer__file_and_folder">1 Datei, 1 Ordner</string>
+  <string name="file_list__footer__file_and_folders">1 Datei, %1$d Ordner</string>
+  <string name="file_list__footer__files">%1$d Dateien</string>
+  <string name="file_list__footer__files_and_folder">%1$d Dateien, 1 Ordner</string>
+  <string name="file_list__footer__files_and_folders">%1$d Dateien, %2$d Ordner</string>
 </resources>

+ 11 - 1
res/values-el/strings.xml

@@ -69,6 +69,7 @@
   <string name="uploader_info_uploading">Μεταφόρτωση</string>
   <string name="file_list_seconds_ago">δευτερόλεπτα πριν</string>
   <string name="file_list_empty">Δεν υπάρχει τίποτα εδώ. Μεταφορτώστε κάτι!</string>
+  <string name="file_list_loading">Φόρτωση...</string>
   <string name="local_file_list_empty">Δεν υπάρχουν αρχεία σε αυτό τον φάκελο.</string>
   <string name="filedetails_select_file">Αγγίξτε κάποιο αρχείο για να προβάλετε περισσότερες πληροφορίες.</string>
   <string name="filedetails_size">Μέγεθος:</string>
@@ -192,7 +193,8 @@
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Δεν είναι δυνατή η πιστοποίηση με αυτόν το διακομιστή</string>
   <string name="auth_account_does_not_exist">Ο λογαριασμός δεν υπάρχει στη συσκευή ακόμα.</string>
-  <string name="fd_keep_in_sync">Διατήρηση αρχείου σε ενημέρωση</string>
+  <string name="favorite">Αγαπημένο</string>
+  <string name="unfavorite">Κατάργηση από τα αγαπημένα</string>
   <string name="common_rename">Μετονομασία</string>
   <string name="common_remove">Αφαίρεση</string>
   <string name="confirmation_remove_alert">Θέλετε στ\' αλήθεια να αφαιρέσετε το  %1$s;</string>
@@ -315,4 +317,12 @@
   <string name="auth_host_address">Διεύθυνση διακομιστή</string>
   <string name="common_error_out_memory">Δεν υπάρχει αρκετή μνήμη</string>
   <string name="username">Όνομα χρήστη</string>
+  <string name="file_list__footer__folder">1 φάκελος</string>
+  <string name="file_list__footer__folders">%1$d φάκελοι</string>
+  <string name="file_list__footer__file">1 αρχείο</string>
+  <string name="file_list__footer__file_and_folder">1 αρχείο, 1 φάκελος</string>
+  <string name="file_list__footer__file_and_folders">1 αρχείο, %1$d φάκελοι</string>
+  <string name="file_list__footer__files">%1$d αρχεία</string>
+  <string name="file_list__footer__files_and_folder">%1$d αρχεία, 1 φάκελος</string>
+  <string name="file_list__footer__files_and_folders">%1$d αρχεία, %2$d φάκελοι</string>
 </resources>

+ 2 - 1
res/values-en-rGB/strings.xml

@@ -187,7 +187,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Cannot authenticate against this server</string>
   <string name="auth_account_does_not_exist">Account does not exist in the device yet</string>
-  <string name="fd_keep_in_sync">Keep file up to date</string>
+  <string name="favorite">Favourite</string>
+  <string name="unfavorite">Unfavourite</string>
   <string name="common_rename">Rename</string>
   <string name="common_remove">Remove</string>
   <string name="confirmation_remove_alert">Do you really want to remove %1$s?</string>

+ 2 - 1
res/values-eo/strings.xml

@@ -117,7 +117,8 @@
   <string name="auth_expired_basic_auth_toast">Bonvolu enigi la nunan pasvorton</string>
   <string name="auth_connecting_auth_server">Konektante al aŭtentiga servilo...</string>
   <string name="auth_unsupported_auth_method">La servilo ne kongruas kun ĉi tiu aŭtentiga metodo</string>
-  <string name="fd_keep_in_sync">Teni dosieron ĝisdatigita</string>
+  <string name="favorite">Favorato</string>
+  <string name="unfavorite">Nefavoratigi</string>
   <string name="common_rename">Alinomigi</string>
   <string name="common_remove">Forigi</string>
   <string name="confirmation_remove_alert">Ĉu vi vere volas forigi %1$s?</string>

+ 1 - 1
res/values-es-rAR/strings.xml

@@ -173,7 +173,7 @@
   <string name="auth_unsupported_multiaccount">%1$s no soporta múltiples cuentas</string>
   <string name="auth_fail_get_user_name">Tú servidor no esta regresando una identificación de usuario correcta, por favor contacta a un administrador</string>
   <string name="auth_can_not_auth_against_server">No se puede autenticar contra este servidor</string>
-  <string name="fd_keep_in_sync">Mantener el archivo actualizado</string>
+  <string name="favorite">Favorito</string>
   <string name="common_rename">Renombrar</string>
   <string name="common_remove">Borrar</string>
   <string name="confirmation_remove_alert">¿Realmente quieres eliminar %1$s?</string>

+ 0 - 1
res/values-es-rCL/strings.xml

@@ -111,7 +111,6 @@
   <string name="auth_wrong_connection_title">No se pudo establecer la conexión</string>
   <string name="auth_secure_connection">Conexión segura establecida</string>
   <string name="auth_unauthorized">usuario o clave incorrecta</string>
-  <string name="fd_keep_in_sync">Mantener el archivo actualizado</string>
   <string name="common_rename">Renombrar</string>
   <string name="common_remove">Remover</string>
   <string name="confirmation_remove_alert">¿Realmente desea eliminar %1$s?</string>

+ 1 - 1
res/values-es-rMX/strings.xml

@@ -149,7 +149,7 @@
   <string name="auth_connecting_auth_server">Conectando al servidor de autenticación...</string>
   <string name="auth_unsupported_auth_method">El servidor no soporta este método de autenticación</string>
   <string name="auth_unsupported_multiaccount">%1$s no soporta cuentas múltiples</string>
-  <string name="fd_keep_in_sync">Mantener el archivo actualizado</string>
+  <string name="favorite">Favorito</string>
   <string name="common_rename">Renombrar</string>
   <string name="common_remove">Borrar</string>
   <string name="confirmation_remove_local">Sólo local</string>

+ 2 - 1
res/values-es/strings.xml

@@ -193,7 +193,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">No puede autenticarse en este servidor.</string>
   <string name="auth_account_does_not_exist">Aún no existe la cuenta en el dispositivo</string>
-  <string name="fd_keep_in_sync">Mantener el archivo actualizado</string>
+  <string name="favorite">Favorito</string>
+  <string name="unfavorite">No-favorito</string>
   <string name="common_rename">Renombrar</string>
   <string name="common_remove">Borrar</string>
   <string name="confirmation_remove_alert">¿Realmente desea eliminar %1$s?</string>

+ 2 - 1
res/values-et-rEE/strings.xml

@@ -196,7 +196,8 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Ei suuda autoriseerida selle serveriga.</string>
   <string name="auth_account_does_not_exist">Kontot pole veel seadmes</string>
-  <string name="fd_keep_in_sync">Hoia faili ajakohasena</string>
+  <string name="favorite">Lemmik</string>
+  <string name="unfavorite">Eemalda lemmik</string>
   <string name="common_rename">Nimeta ümber</string>
   <string name="common_remove">Eemalda</string>
   <string name="confirmation_remove_alert">Oled sa kindel, et soovid %1$s eemaldada?</string>

+ 1 - 1
res/values-eu/strings.xml

@@ -173,7 +173,7 @@ Mesedez, baimendu berriz</string>
   <string name="auth_unsupported_multiaccount">%1$s ez du kontu anitzak onartzen</string>
   <string name="auth_fail_get_user_name">Zure zerbitzariak ez du bueltatzen erabiltzailearen id egokia, mesedez jarri harremanetan administratzailearekin.</string>
   <string name="auth_can_not_auth_against_server">Ezin da autentikatu zerbitzarian.</string>
-  <string name="fd_keep_in_sync">Mantendu fitxategia eguneratuta</string>
+  <string name="favorite">Gogokoa</string>
   <string name="common_rename">Berrizendatu</string>
   <string name="common_remove">Ezabatu</string>
   <string name="confirmation_remove_alert">Ziur zaude %1$s ezabatu nahi duzula?</string>

+ 0 - 1
res/values-fa/strings.xml

@@ -151,7 +151,6 @@
   <string name="auth_connecting_auth_server">اتصال به سرور احراز هویت...</string>
   <string name="auth_unsupported_auth_method">سرور این نوع احراز هویت را پشتیبانی نمی‌کند</string>
   <string name="auth_unsupported_multiaccount">%1$s چند اکانته بودن را پشتیبانی نمی‌کند</string>
-  <string name="fd_keep_in_sync">فایل را به روز نگه دار</string>
   <string name="common_rename">تغییرنام</string>
   <string name="common_remove">حذف</string>
   <string name="confirmation_remove_local">فقط محلی</string>

+ 11 - 1
res/values-fi-rFI/strings.xml

@@ -69,6 +69,7 @@
   <string name="uploader_info_uploading">Lähetetään</string>
   <string name="file_list_seconds_ago">sekuntia sitten</string>
   <string name="file_list_empty">Täällä ei ole mitään. Lähetä tänne jotakin!</string>
+  <string name="file_list_loading">Ladataan…</string>
   <string name="local_file_list_empty">Tässä kansiossa ei ole tiedostoja</string>
   <string name="filedetails_select_file">Napauta tiedostoa nähdäksesi lisätietoja.</string>
   <string name="filedetails_size">Koko:</string>
@@ -183,7 +184,8 @@
   <string name="auth_unsupported_multiaccount">%1$s ei tue useita tilejä</string>
   <string name="auth_can_not_auth_against_server">Tunnistautuminen palvelinta vastaan ei onnistu</string>
   <string name="auth_account_does_not_exist">Tiliä ei ole olemassa vielä laitteella</string>
-  <string name="fd_keep_in_sync">Pidä tiedosto ajan tasalla</string>
+  <string name="favorite">Suosikit</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>
@@ -296,4 +298,12 @@
   <string name="auth_host_address">Palvelimen osoite</string>
   <string name="common_error_out_memory">Muistia ei ole riittävästi</string>
   <string name="username">Käyttäjätunnus</string>
+  <string name="file_list__footer__folder">1 kansio</string>
+  <string name="file_list__footer__folders">%1$d kansiota</string>
+  <string name="file_list__footer__file">1 tiedosto</string>
+  <string name="file_list__footer__file_and_folder">1 tiedosto, 1 kansio</string>
+  <string name="file_list__footer__file_and_folders">1 tiedosto, %1$d kansiota</string>
+  <string name="file_list__footer__files">%1$d tiedostoa</string>
+  <string name="file_list__footer__files_and_folder">%1$d tiedostoa, 1 kansio</string>
+  <string name="file_list__footer__files_and_folders">%1$d tiedostoa, %2$d kansiota</string>
 </resources>

+ 3 - 2
res/values-fr/strings.xml

@@ -72,7 +72,7 @@ Téléchargez-le ici : %2$s</string>
   <string name="file_list_empty">Il n\'y a rien ici ! Envoyez donc quelque chose :)</string>
   <string name="file_list_loading">Chargement...</string>
   <string name="local_file_list_empty">Aucun fichier n\'est présent dans ce dossier.</string>
-  <string name="filedetails_select_file">Effleurez un fichier pour afficher les informations complémentaires.</string>
+  <string name="filedetails_select_file">Touchez un fichier pour afficher les informations complémentaires.</string>
   <string name="filedetails_size">Taille :</string>
   <string name="filedetails_type">Type :</string>
   <string name="filedetails_created">Créé le :</string>
@@ -198,7 +198,8 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq
 </string>
   <string name="auth_can_not_auth_against_server">Impossible de s\'authentifier sur ce serveur</string>
   <string name="auth_account_does_not_exist">Le compte n\'existe pas encore sur ce périphérique</string>
-  <string name="fd_keep_in_sync">Maintenir le fichier à jour</string>
+  <string name="favorite">Ajouter aux favoris</string>
+  <string name="unfavorite">Supprimer 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>

+ 2 - 1
res/values-gl/strings.xml

@@ -194,7 +194,8 @@ Descárgueo de aquí: %2$s</string>
 	</string>
   <string name="auth_can_not_auth_against_server">Non pode autenticarse neste servidor</string>
   <string name="auth_account_does_not_exist">Aínda non existe a conta no dispositivo</string>
-  <string name="fd_keep_in_sync">Manter actualizado o ficheiro</string>
+  <string name="favorite">Favorito</string>
+  <string name="unfavorite">Retirar de favoritos</string>
   <string name="common_rename">Renomear</string>
   <string name="common_remove">Retirar</string>
   <string name="confirmation_remove_alert">Confirma que quere retirar %1$s?</string>

+ 1 - 1
res/values-he/strings.xml

@@ -166,7 +166,7 @@
   <string name="auth_fail_get_user_name">השרת אינו מחזיר מספר משתמש נכון, יש ליצור קשר עם מנהל
 ⇥</string>
   <string name="auth_can_not_auth_against_server">לא מצליח לאמת מול השרת</string>
-  <string name="fd_keep_in_sync">לשמור על קובץ עדכני</string>
+  <string name="favorite">מועדף</string>
   <string name="common_rename">שינוי שם</string>
   <string name="common_remove">הסרה</string>
   <string name="confirmation_remove_alert">האם באמת להסיר %1$s?</string>

+ 1 - 0
res/values-hr/strings.xml

@@ -53,6 +53,7 @@
   <string name="change_password">Izmjena lozinke</string>
   <string name="uploader_info_dirname">Naziv mape</string>
   <string name="auth_trying_to_login">Trying to login…</string>
+  <string name="favorite">Favorit</string>
   <string name="common_rename">Promjeni ime</string>
   <string name="common_remove">Makni</string>
   <string name="ssl_validator_btn_details_see">Detalji</string>

+ 2 - 1
res/values-hu-rHU/strings.xml

@@ -161,7 +161,8 @@
   <string name="auth_unsupported_auth_method">A kiszolgáló nem támogatja ezt a felhasználóazonosítási módszert</string>
   <string name="auth_unsupported_multiaccount">%1$s nem támogat több bejelenkezési jogosultságot</string>
   <string name="auth_can_not_auth_against_server">Nem tudod hitelesíteni magadat ezen a szerveren</string>
-  <string name="fd_keep_in_sync">Automatikusan frissítse a fájlokat</string>
+  <string name="favorite">Kedvenc</string>
+  <string name="unfavorite">Nem kedvenc</string>
   <string name="common_rename">Átnevezés</string>
   <string name="common_remove">Eltávolítás</string>
   <string name="confirmation_remove_alert">Tényleg el akarod távolítani %1$s?</string>

+ 2 - 1
res/values-id/strings.xml

@@ -193,7 +193,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Tidak dapat mengotentikasi pada server ini</string>
   <string name="auth_account_does_not_exist">Akun tidak ada di perangkat ini</string>
-  <string name="fd_keep_in_sync">Biarkan berkas tetap terbaru</string>
+  <string name="favorite">Favorit</string>
+  <string name="unfavorite">Hapus favorit</string>
   <string name="common_rename">Ubah nama</string>
   <string name="common_remove">Hapus</string>
   <string name="confirmation_remove_alert">Apakah Anda yakin ingin menghapus %1$s?</string>

+ 2 - 1
res/values-it/strings.xml

@@ -193,7 +193,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Impossibile eseguire l\'autenticazione su questo server</string>
   <string name="auth_account_does_not_exist">L\'account non esiste ancora sul dispositivo</string>
-  <string name="fd_keep_in_sync">Tieni aggiornato il file</string>
+  <string name="favorite">Preferito</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>

+ 22 - 1
res/values-ja-rJP/strings.xml

@@ -70,6 +70,7 @@
   <string name="uploader_info_uploading">アップロード中</string>
   <string name="file_list_seconds_ago">数秒前</string>
   <string name="file_list_empty">ここには何もありません。何かアップロードしてください。</string>
+  <string name="file_list_loading">読込中...</string>
   <string name="local_file_list_empty">このフォルダーにはファイルがありません。</string>
   <string name="filedetails_select_file">ファイルをタップすると追加情報が表示されます。</string>
   <string name="filedetails_size">サイズ:</string>
@@ -79,6 +80,7 @@
   <string name="filedetails_download">ダウンロード</string>
   <string name="filedetails_sync_file">ファイルを同期</string>
   <string name="filedetails_renamed_in_upload_msg">アップロード中にファイル名を %1$s に変更しました</string>
+  <string name="list_layout">リストレイアウト</string>
   <string name="action_share_file">URLで共有</string>
   <string name="action_unshare_file">未共有のリンク</string>
   <string name="common_yes">はい</string>
@@ -131,9 +133,12 @@
   <string name="foreign_files_local_text">ローカル: %1$s</string>
   <string name="foreign_files_remote_text">リモート: %1$s</string>
   <string name="upload_query_move_foreign_files">十分なスペースがないため、選択されたファイルを %1$s フォルダーにコピーすることができません。コピーする代わりに、それらを移動させますか?</string>
+  <string name="pass_code_enter_pass_code">パスコードを入力してください</string>
   <string name="pass_code_configure_your_pass_code">パスコードを入力</string>
+  <string name="pass_code_configure_your_pass_code_explanation">アプリ開始時には毎回パスコードが要求されます</string>
   <string name="pass_code_reenter_your_pass_code">パスコードを再入力してください</string>
   <string name="pass_code_remove_your_pass_code">パスコードを削除</string>
+  <string name="pass_code_mismatch">パスコードが一致しません</string>
   <string name="pass_code_wrong">パスコードが正しくありません</string>
   <string name="pass_code_removed">パスコードを削除しました</string>
   <string name="pass_code_stored">パスコードを保存しました</string>
@@ -189,7 +194,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">このサーバーに対して認証できません</string>
   <string name="auth_account_does_not_exist">デバイス上にまだアカウントが存在しません</string>
-  <string name="fd_keep_in_sync">ファイルを最新に保つ</string>
+  <string name="favorite">お気に入り</string>
+  <string name="unfavorite">お気に入りを解除</string>
   <string name="common_rename">名前を変更</string>
   <string name="common_remove">削除</string>
   <string name="confirmation_remove_alert">本当に %1$s を削除しますか?</string>
@@ -207,11 +213,13 @@
   <string name="sync_file_nothing_to_do_msg">ファイルコンテンツはすでに同期されています</string>
   <string name="create_dir_fail_msg">フォルダーを作成できませんでした</string>
   <string name="filename_forbidden_characters">使用できない文字: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">ファイル名に1文字以上の無効な文字が含まれています</string>
   <string name="filename_empty">ファイル名を空にすることはできません。</string>
   <string name="wait_a_moment">しばらくお待ちください</string>
   <string name="filedisplay_unexpected_bad_get_content">予期せぬ問題;他のアプリでファイルを選択してみてください。</string>
   <string name="filedisplay_no_file_selected">ファイルは選択されていません</string>
   <string name="activity_chooser_title">リンクを送信…</string>
+  <string name="wait_for_tmp_copy_from_private_storage">プライベートストレージからファイルをコピー中</string>
   <string name="oauth_check_onoff">oAuth2でログイン</string>
   <string name="oauth_login_connection">oAuth2サーバーに接続中...</string>
   <string name="ssl_validator_header">サイトの識別子を確認できませんでした</string>
@@ -303,6 +311,19 @@
   <string name="prefs_category_security">セキュリティ</string>
   <string name="prefs_instant_video_upload_path_title">動画のアップロードパス</string>
   <string name="download_folder_failed_content">%1$s フォルダーのダウンロードが完了しませんでした</string>
+  <string name="shared_subject_header">共有中</string>
+  <string name="with_you_subject_header">あなたと</string>
+  <string name="subject_token">%1$s は \"%2$s\" をあなたと共有しました</string>
   <string name="auth_refresh_button">再接続中</string>
   <string name="auth_host_address">サーバーアドレス</string>
+  <string name="common_error_out_memory">十分なメモリがありません</string>
+  <string name="username">ユーザー名</string>
+  <string name="file_list__footer__folder">1 フォルダー</string>
+  <string name="file_list__footer__folders">%1$d フォルダー</string>
+  <string name="file_list__footer__file">1 ファイル</string>
+  <string name="file_list__footer__file_and_folder">1 ファイル、1 フォルダー</string>
+  <string name="file_list__footer__file_and_folders">1 ファイル、%1$d フォルダー</string>
+  <string name="file_list__footer__files">%1$d ファイル</string>
+  <string name="file_list__footer__files_and_folder">%1$d ファイル、1 フォルダー</string>
+  <string name="file_list__footer__files_and_folders">%1$d ファイル、%2$d フォルダー</string>
 </resources>

+ 1 - 1
res/values-ka-rGE/strings.xml

@@ -95,7 +95,7 @@
   <string name="auth_bad_oc_version_title">ამოუცნობი სერვერის ვერსია</string>
   <string name="auth_wrong_connection_title">კავშირის დამყარება ვერ მოხერხდა</string>
   <string name="auth_secure_connection">დაცული კავშირი დამყარდა</string>
-  <string name="fd_keep_in_sync">არ განაახლო ფაილი</string>
+  <string name="favorite">ფავორიტი</string>
   <string name="common_rename">გადარქმევა</string>
   <string name="common_remove">წაშლა</string>
   <string name="confirmation_remove_local">მხოლოდ ლოკალური</string>

+ 0 - 1
res/values-km/strings.xml

@@ -81,7 +81,6 @@
   <string name="auth_trying_to_login">កំពុង​​តែ​ព្យាយាម​ដើម្បី​ចូល...</string>
   <string name="auth_no_net_conn_title">គ្មានបណ្តាញ​តភ្ជាប់ទេ</string>
   <string name="auth_unknown_error_title">មិនស្គាល់កំហុសបានកើតឡើង!</string>
-  <string name="fd_keep_in_sync">រក្សាឯកសាររហូតដល់កាលបរិច្ឆេទ</string>
   <string name="common_rename">ប្ដូរ​ឈ្មោះ</string>
   <string name="common_remove">ដកចេញ</string>
   <string name="confirmation_remove_local">ទីកន្លែងតែមួយ</string>

+ 1 - 0
res/values-kn/strings.xml

@@ -29,6 +29,7 @@
   <string name="common_error">ತಪ್ಪಾಗಿದೆ</string>
   <string name="common_error_unknown">ಗೊತ್ತಿಲ್ಲದ ದೋಷ</string>
   <string name="change_password">ಗುಪ್ತ ಪದವನ್ನು ಬದಲಾಯಿಸಿ</string>
+  <string name="favorite">ಅಚ್ಚುಮೆಚ್ಚಿನ</string>
   <string name="common_rename">ಮರುಹೆಸರಿಸು</string>
   <string name="common_remove">ತೆಗೆದುಹಾಕಿ</string>
   <string name="activity_chooser_send_file_title">ಕಳುಹಿಸಿ</string>

+ 22 - 1
res/values-ko/strings.xml

@@ -21,8 +21,12 @@
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">모든 파일</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">설정</string>
+  <string name="drawer_item_logs">로그</string>
+  <string name="drawer_close">닫기</string>
   <string name="prefs_category_general">일반</string>
   <string name="prefs_category_more">더 보기</string>
   <string name="prefs_accounts">계정</string>
@@ -65,6 +69,7 @@
   <string name="uploader_info_uploading">업로드 중</string>
   <string name="file_list_seconds_ago">초 지남</string>
   <string name="file_list_empty">내용이 없습니다. 업로드할 수 있습니다!</string>
+  <string name="file_list_loading">불러오는 중...</string>
   <string name="local_file_list_empty">이 폴더에 파일이 없습니다.</string>
   <string name="filedetails_select_file">파일을 누르면 추가 정보가 표시됩니다.</string>
   <string name="filedetails_size">크기:</string>
@@ -74,6 +79,7 @@
   <string name="filedetails_download">다운로드</string>
   <string name="filedetails_sync_file">파일 새로 고침</string>
   <string name="filedetails_renamed_in_upload_msg">업로드 중 파일 이름을 %1$s(으)로 변경하였습니다</string>
+  <string name="list_layout">목록 레이아웃</string>
   <string name="action_share_file">링크 공유</string>
   <string name="action_unshare_file">링크 공유 해제</string>
   <string name="common_yes">예</string>
@@ -187,7 +193,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">이 서버에 인증할 수 없음</string>
   <string name="auth_account_does_not_exist">장치에 아직 계정이 없음</string>
-  <string name="fd_keep_in_sync">파일을 최신 정보로 유지</string>
+  <string name="favorite">책갈피</string>
+  <string name="unfavorite">책갈피 해제</string>
   <string name="common_rename">이름 바꾸기</string>
   <string name="common_remove">삭제</string>
   <string name="confirmation_remove_alert">%1$s을(를) 삭제하시겠습니까?</string>
@@ -205,6 +212,7 @@
   <string name="sync_file_nothing_to_do_msg">파일 내용이 이미 동기화됨</string>
   <string name="create_dir_fail_msg">폴더를 만들 수 없음</string>
   <string name="filename_forbidden_characters">사용할 수 없는 문자: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">파일 이름에 하나 이상의 사용할 수 없는 문자가 포함되어 있음</string>
   <string name="filename_empty">파일 이름이 비어 있을 수 없음</string>
   <string name="wait_a_moment">잠시 기다려 주십시오</string>
   <string name="filedisplay_unexpected_bad_get_content">예상하지 못한 오류입니다. 다른 앱에서 파일을 선택하십시오</string>
@@ -301,6 +309,19 @@
   <string name="prefs_category_security">보안</string>
   <string name="prefs_instant_video_upload_path_title">동영상 업로드 경로</string>
   <string name="download_folder_failed_content">폴더 %1$s을(를) 다운로드할 수 없음</string>
+  <string name="shared_subject_header">공유됨</string>
+  <string name="with_you_subject_header">여러분과</string>
+  <string name="subject_token">%1$s 님이 \"%2$s\" 항목을 여러분과 공유하였습니다</string>
   <string name="auth_refresh_button">연결 새로 고침</string>
   <string name="auth_host_address">서버 주소</string>
+  <string name="common_error_out_memory">메모리 부족</string>
+  <string name="username">사용자 이름</string>
+  <string name="file_list__footer__folder">폴더 1개</string>
+  <string name="file_list__footer__folders">폴더 %1$d개</string>
+  <string name="file_list__footer__file">파일 1개</string>
+  <string name="file_list__footer__file_and_folder">파일 1개, 폴더 1개</string>
+  <string name="file_list__footer__file_and_folders">파일 1개, 폴더 %1$d개</string>
+  <string name="file_list__footer__files">파일 %1$d개</string>
+  <string name="file_list__footer__files_and_folder">파일 %1$d개, 폴더 1개</string>
+  <string name="file_list__footer__files_and_folders">파일 %1$d개, 폴더 %2$d개</string>
 </resources>

+ 0 - 1
res/values-lb/strings.xml

@@ -140,7 +140,6 @@
   <string name="auth_expired_basic_auth_toast">Gëff w.e.g. däin aktuellt Passwuert an</string>
   <string name="auth_expired_saml_sso_token_toast">Deng Sessioun ass ofgelaf. Connectéier dech nei w.e.g.</string>
   <string name="auth_unsupported_auth_method">De Server ënnerstëtzt dës Authentifizéierungsmethod net</string>
-  <string name="fd_keep_in_sync">Fichier aktuell halen</string>
   <string name="common_rename">Ëmbenennen</string>
   <string name="common_remove">Läschen</string>
   <string name="confirmation_remove_alert">Wëlls du %1$s wierklech läschen?</string>

+ 1 - 1
res/values-lt-rLT/strings.xml

@@ -166,7 +166,7 @@
   <string name="auth_unsupported_auth_method">Serveris nepalaiko šio autentikacijos metodo</string>
   <string name="auth_unsupported_multiaccount">%1$s nepalaiko kelių paskyrų iš karto</string>
   <string name="auth_can_not_auth_against_server">Jungiamasi prie autentikacijos serverio...</string>
-  <string name="fd_keep_in_sync">Laikyti failą naujinamą</string>
+  <string name="favorite">Mėgiamas</string>
   <string name="common_rename">Pervadinti</string>
   <string name="common_remove">Pašalinti</string>
   <string name="confirmation_remove_alert">Ar tikrai norite pašalinti %1$s?</string>

+ 1 - 1
res/values-lv/strings.xml

@@ -113,7 +113,7 @@
   <string name="auth_bad_oc_version_title">Neatpazīta servera versija</string>
   <string name="auth_wrong_connection_title">Nevarēja izveidot savienojumu</string>
   <string name="auth_secure_connection">Ir izveidots drošs savienojums</string>
-  <string name="fd_keep_in_sync">Uzturēt datni aktuālu</string>
+  <string name="favorite">Iecienītais</string>
   <string name="common_rename">Pārsaukt</string>
   <string name="common_remove">Izņemt</string>
   <string name="confirmation_remove_local">Tikai lokālos</string>

+ 0 - 1
res/values-mk/strings.xml

@@ -187,7 +187,6 @@
  </string>
   <string name="auth_can_not_auth_against_server">Не можам да се авторизирам на овој сервер </string>
   <string name="auth_account_does_not_exist">Сметката сеуште не постои на овој уред</string>
-  <string name="fd_keep_in_sync">Чувај ги датотеките ажурно</string>
   <string name="common_rename">Преименувај</string>
   <string name="common_remove">Отстрани</string>
   <string name="confirmation_remove_alert">Дали навистина сакаш да ја отстраниш %1$s?</string>

+ 2 - 1
res/values-nb-rNO/strings.xml

@@ -193,7 +193,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Kan ikke autentisere mot denne serveren</string>
   <string name="auth_account_does_not_exist">Kontoen eksisterer ikke på enheten enda</string>
-  <string name="fd_keep_in_sync">Hold filen oppdatert</string>
+  <string name="favorite">Gjør til favoritt</string>
+  <string name="unfavorite">Fjern favoritt</string>
   <string name="common_rename">Endre navn</string>
   <string name="common_remove">Fjern</string>
   <string name="confirmation_remove_alert">Vil du virkelig fjerne %1$s?</string>

+ 2 - 1
res/values-nl/strings.xml

@@ -196,7 +196,8 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
 	</string>
   <string name="auth_can_not_auth_against_server">Kan niet authenticeren tegen deze server</string>
   <string name="auth_account_does_not_exist">Het account bestaat nog niet in dit apparaat</string>
-  <string name="fd_keep_in_sync">Houd bestand actueel</string>
+  <string name="favorite">Favoriet</string>
+  <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>

+ 1 - 1
res/values-nn-rNO/strings.xml

@@ -101,7 +101,7 @@
   <string name="auth_ssl_general_error_title">Feil ved SSL-oppstart</string>
   <string name="auth_wrong_connection_title">Klarte ikkje å oppretta ei tilkopling</string>
   <string name="auth_secure_connection">Trygg tilkopling oppretta</string>
-  <string name="fd_keep_in_sync">Hald fila oppdatert</string>
+  <string name="favorite">Favoritt</string>
   <string name="common_rename">Endra namn</string>
   <string name="common_remove">Fjern</string>
   <string name="confirmation_remove_local">Berre lokalt</string>

+ 1 - 0
res/values-oc/strings.xml

@@ -53,6 +53,7 @@
   <string name="uploader_upload_in_progress_ticker">Al avalcargar ...</string>
   <string name="uploader_upload_succeeded_ticker">Capitada d\'avalcargar</string>
   <string name="common_choose_account">Causís lo compte</string>
+  <string name="favorite">Apondre als favorits</string>
   <string name="common_rename">Torna nomenar</string>
   <string name="common_remove">Suprimir</string>
   <string name="ssl_validator_label_C">País :</string>

+ 0 - 1
res/values-pa/strings.xml

@@ -86,7 +86,6 @@
   <string name="auth_secure_connection">ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ ਹੈ</string>
   <string name="auth_unauthorized">ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ</string>
   <string name="auth_expired_basic_auth_toast">ਆਪਣਾ ਮੌਜੂਦਾ ਪਾਸਵਰਡ ਦਿਉ ਜੀ</string>
-  <string name="fd_keep_in_sync">ਫਾਇਲ ਨੂੰ ਅੱਪ ਟੂ ਡੇਟ ਰੱਖੋ</string>
   <string name="common_rename">ਨਾਂ ਬਦਲੋ</string>
   <string name="common_remove">ਹਟਾਓ</string>
   <string name="confirmation_remove_local">ਕੇਵਲ ਲੋਕਲ</string>

+ 2 - 1
res/values-pl/strings.xml

@@ -188,7 +188,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Nie można autoryzować przy użyciu tego serwera</string>
   <string name="auth_account_does_not_exist">Konto nie istnieje jeszcze na tym urządzeniu</string>
-  <string name="fd_keep_in_sync">Automatyczne aktualizuj plik</string>
+  <string name="favorite">Ulubione</string>
+  <string name="unfavorite">Usuń z ulubionych</string>
   <string name="common_rename">Zmień nazwę</string>
   <string name="common_remove">Usuń</string>
   <string name="confirmation_remove_alert">Czy naprawdę chcesz usunąć %1$s?</string>

+ 2 - 1
res/values-pt-rBR/strings.xml

@@ -193,7 +193,8 @@
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Não foi possível autenticar neste servidor</string>
   <string name="auth_account_does_not_exist">Conta ainda não existe no dispositivo</string>
-  <string name="fd_keep_in_sync">Manter arquivo atualizado</string>
+  <string name="favorite">Favorito</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>

+ 2 - 1
res/values-pt-rPT/strings.xml

@@ -179,7 +179,8 @@
   <string name="auth_fail_get_user_name">O seu servidor não transmite o ID correcto. Por favor contacte o administrador.</string>
   <string name="auth_can_not_auth_against_server">Não foi possível autenticar no servidor</string>
   <string name="auth_account_does_not_exist">Conta ainda não existe no dispositivo</string>
-  <string name="fd_keep_in_sync">manter ficheiro actualizado</string>
+  <string name="favorite">Favorito</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>

+ 32 - 1
res/values-ro/strings.xml

@@ -21,12 +21,17 @@
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">Toate fișierele</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
+  <string name="drawer_item_settings">Setări</string>
+  <string name="drawer_item_logs">Înregistrări</string>
+  <string name="drawer_close">Închide</string>
   <string name="prefs_category_general">General</string>
   <string name="prefs_category_more">Mai mult</string>
   <string name="prefs_accounts">Conturi</string>
   <string name="prefs_manage_accounts">Administrare conturi</string>
+  <string name="prefs_passcode">Parolă blocare</string>
   <string name="prefs_instant_upload">Încărcare instantă de imagini</string>
   <string name="prefs_instant_upload_summary">Încarcă instantant imagini luate cu camera</string>
   <string name="prefs_instant_video_upload">Încărcare instantă de videoclipuri.</string>
@@ -64,6 +69,7 @@
   <string name="uploader_info_uploading">Încărcare</string>
   <string name="file_list_seconds_ago">secunde în urmă</string>
   <string name="file_list_empty">Nimic aici. Încarcă ceva!</string>
+  <string name="file_list_loading">Se încarcă...</string>
   <string name="local_file_list_empty">In acest folder nu sunt fisiere.</string>
   <string name="filedetails_select_file">Selectati un fisier pentru a afisa informatia aditionala</string>
   <string name="filedetails_size">Mărime:</string>
@@ -73,6 +79,7 @@
   <string name="filedetails_download">Descarcă</string>
   <string name="filedetails_sync_file">Împrospătare fişier</string>
   <string name="filedetails_renamed_in_upload_msg">Fișierul a fost redenumit %1$s în timpul încărcării</string>
+  <string name="list_layout">Aspect listă</string>
   <string name="action_share_file">Share link</string>
   <string name="action_unshare_file">Unshare link</string>
   <string name="common_yes">Da</string>
@@ -126,6 +133,15 @@
   <string name="foreign_files_remote_text">La distanta: %1$s</string>
   <string name="upload_query_move_foreign_files">Nu este suficient spațiu pentru a copia fișierele selectate în dosarul %1$s . Dorești să le muți în loc?
 </string>
+  <string name="pass_code_enter_pass_code">Te rugăm să introduci parola</string>
+  <string name="pass_code_configure_your_pass_code">Introdu parola</string>
+  <string name="pass_code_configure_your_pass_code_explanation">Parola va fi solicitată de fiecare dată când deschideți aplicația</string>
+  <string name="pass_code_reenter_your_pass_code">Te rugăm să reintroduci parola</string>
+  <string name="pass_code_remove_your_pass_code">Șterge parola</string>
+  <string name="pass_code_mismatch">Parolele nu se potrivesc</string>
+  <string name="pass_code_wrong">Parolă incorectă</string>
+  <string name="pass_code_removed">Parolă ștearsă</string>
+  <string name="pass_code_stored">Parolă stocată</string>
   <string name="media_notif_ticker">%1$s  player de muzică</string>
   <string name="media_state_playing">%1$s (cântă)</string>
   <string name="media_state_loading">%1$s (încarcă)</string>
@@ -177,7 +193,7 @@
   <string name="auth_fail_get_user_name">Server-ul dvs. nu  întoarce un ID de utilizator corect, vă rugăm să contactați un administrator </string>
   <string name="auth_can_not_auth_against_server">Nu se poate autentifica cu acest server</string>
   <string name="auth_account_does_not_exist">Contul nu există încă în dispozitiv</string>
-  <string name="fd_keep_in_sync">Păstrează fișierul actualizat</string>
+  <string name="favorite">Favorit</string>
   <string name="common_rename">Redenumește</string>
   <string name="common_remove">Elimină</string>
   <string name="confirmation_remove_alert">Doriti sigur sa stergeti %1$s?</string>
@@ -195,11 +211,13 @@
   <string name="sync_file_nothing_to_do_msg">Continutul fisierului este deja sincronizat</string>
   <string name="create_dir_fail_msg">Nu a putut fi creat directorul</string>
   <string name="filename_forbidden_characters">Caractere interzise: / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Numele fișierului conține măcar un caracter invalid</string>
   <string name="filename_empty">Numele fișierului nu poate fi gol.</string>
   <string name="wait_a_moment">Așteaptă un moment</string>
   <string name="filedisplay_unexpected_bad_get_content">Problema neasteptata ; selectati fisierul dintr-o aplicatie diferita </string>
   <string name="filedisplay_no_file_selected">Nu a fost selectat nici un fișier</string>
   <string name="activity_chooser_title">Trimite link la ...</string>
+  <string name="wait_for_tmp_copy_from_private_storage">Copiere fișier din stocare privată</string>
   <string name="oauth_check_onoff">Întră în cont cu oAuth2</string>
   <string name="oauth_login_connection">Se conectează la serverul oAuth2...</string>
   <string name="ssl_validator_header">Nu s-a putut verifica identitatea site-ului</string>
@@ -290,6 +308,19 @@
   <string name="prefs_category_security">Securitate</string>
   <string name="prefs_instant_video_upload_path_title">Calea de încărcare Video</string>
   <string name="download_folder_failed_content">Descărcarea fișierului %1$s nu s-a finisat</string>
+  <string name="shared_subject_header">partajat</string>
+  <string name="with_you_subject_header">cu tine</string>
+  <string name="subject_token">%1$s a partajat fișierul \"%2$s\" cu tine</string>
   <string name="auth_refresh_button">Reîmprospătează conexiunea</string>
   <string name="auth_host_address">Adresa server-ului</string>
+  <string name="common_error_out_memory">Memorie insuficientă </string>
+  <string name="username">Utilizator</string>
+  <string name="file_list__footer__folder">1 folder</string>
+  <string name="file_list__footer__folders">%1$d foldere</string>
+  <string name="file_list__footer__file">1 fișier</string>
+  <string name="file_list__footer__file_and_folder">1 fișier, 1 folder</string>
+  <string name="file_list__footer__file_and_folders">1 fișier, %1$d foldere</string>
+  <string name="file_list__footer__files">%1$d fișiere</string>
+  <string name="file_list__footer__files_and_folder">%1$d fișiere, 1 folder</string>
+  <string name="file_list__footer__files_and_folders">%1$d fișiere, %2$d foldere</string>
 </resources>

+ 17 - 7
res/values-ru/strings.xml

@@ -68,8 +68,9 @@
   <string name="uploader_wrn_no_content_text">Содержимое не получено. Нечего загружать.</string>
   <string name="uploader_error_forbidden_content">Доступ к общему ресурсу для %1$s запрещен</string>
   <string name="uploader_info_uploading">Загрузка</string>
-  <string name="file_list_seconds_ago">пару секунд назад</string>
+  <string name="file_list_seconds_ago">несколько секунд назад</string>
   <string name="file_list_empty">Здесь ничего нет. Загрузите что-нибудь!</string>
+  <string name="file_list_loading">Загрузка...</string>
   <string name="local_file_list_empty">В этом каталоге нет файлов.</string>
   <string name="filedetails_select_file">Нажмите на файл для отображения дополнительной информации.</string>
   <string name="filedetails_size">Размер:</string>
@@ -123,7 +124,7 @@
   <string name="sync_fail_in_favourites_ticker">Не удалось синхронизировать файлы</string>
   <string name="sync_fail_in_favourites_content">Содержимое %1$d файлов не может быть синхронизировано (конфликтов: %2$d)</string>
   <string name="sync_foreign_files_forgotten_ticker">Некоторые загруженные файлы не были перенесены в локальную папку </string>
-  <string name="sync_foreign_files_forgotten_content"> Невозможно скопировать %1$d файлов из папки %2$s</string>
+  <string name="sync_foreign_files_forgotten_content">Не удалось скопировать %1$d файлов из каталога %2$s в</string>
   <string name="sync_foreign_files_forgotten_explanation">Начиная с версии 1.3.16, файлы, загружаемые с этого устройства, копируются в локальный каталог %1$s, чтобы предотвратить потерю данных при синхронизации файла с несколькими учётными записями.\n\nПоэтому все файлы, загруженные предыдущими версиями данного приложения, были скопированы в каталог %2$s. Однако, во время синхронизации что-то помешало завершить эту операцию. Можете оставить файлы как есть и удалить ссылку на %3$s, либо переместить их в %1$s и сохранить ссылку на %4$s.\n\nНиже перечислены локальные файлы, и соответствующие им удалённые файлы в %5$s, к которым они привязаны.</string>
   <string name="sync_current_folder_was_removed">Каталог %1$s больше не существует</string>
   <string name="foreign_files_move">Переместить всё</string>
@@ -131,7 +132,7 @@
   <string name="foreign_files_fail">Некоторые файлы не могут быть перемещены</string>
   <string name="foreign_files_local_text">Локальные: %1$s</string>
   <string name="foreign_files_remote_text">Удаленные: %1$s</string>
-  <string name="upload_query_move_foreign_files">Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Скопировать в другое место?</string>
+  <string name="upload_query_move_foreign_files">Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Переместить их вместо этого?</string>
   <string name="pass_code_enter_pass_code">Пожалуйста, укажите код</string>
   <string name="pass_code_configure_your_pass_code">Укажите ваш код</string>
   <string name="pass_code_configure_your_pass_code_explanation">Код будет запрашиваться каждый раз при запуске приложения</string>
@@ -193,7 +194,8 @@
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Невозможно авторизоваться на этом сервере</string>
   <string name="auth_account_does_not_exist">Аккаунт не существует на устройстве ещё</string>
-  <string name="fd_keep_in_sync">Обновлять файл</string>
+  <string name="favorite">Добавить в избранное</string>
+  <string name="unfavorite">Убрать из избранного</string>
   <string name="common_rename">Переименовать</string>
   <string name="common_remove">Удалить</string>
   <string name="confirmation_remove_alert">Вы действительно хотите удалить %1$s?</string>
@@ -209,7 +211,7 @@
   <string name="rename_server_fail_msg">Переименование не может быть завершено</string>
   <string name="sync_file_fail_msg">Удаленный файл не может быть проверен</string>
   <string name="sync_file_nothing_to_do_msg">Содержимое файла уже синхронизировано</string>
-  <string name="create_dir_fail_msg">Невозможно создать каталог</string>
+  <string name="create_dir_fail_msg">Не удалось создать каталог</string>
   <string name="filename_forbidden_characters">Недопустимые символы: / \\ &lt; &gt; : \" | ? *</string>
   <string name="filename_forbidden_charaters_from_server">Имя файла содержит по крайней мере один некорректный символ</string>
   <string name="filename_empty">Имя файла не может быть пустым</string>
@@ -298,7 +300,7 @@
   <string name="saml_authentication_required_text">Требуется аутентификация </string>
   <string name="saml_authentication_wrong_pass">Неправильный пароль</string>
   <string name="actionbar_move">Переместить</string>
-  <string name="file_list_empty_moving">Здесь ничего нет. Вы можете добавить каталог!</string>
+  <string name="file_list_empty_moving">Здесь ничего нет. Вы можете создать каталог!</string>
   <string name="folder_picker_choose_button_text">Выбрать</string>
   <string name="move_file_not_found">Невозможно переместить. Убедитесь, что файл существует</string>
   <string name="move_file_invalid_into_descendent">Невозможно переместить каталог в его подкаталог</string>
@@ -308,7 +310,7 @@
   <string name="prefs_category_instant_uploading">Мгновенные загрузки</string>
   <string name="prefs_category_security">Безопасность</string>
   <string name="prefs_instant_video_upload_path_title">Путь для загрузки Видео</string>
-  <string name="download_folder_failed_content">Загрузка папки %1$s не может быть завершена</string>
+  <string name="download_folder_failed_content">Не удалось завершить скачивание каталога %1$s</string>
   <string name="shared_subject_header">поделился</string>
   <string name="with_you_subject_header">с вами</string>
   <string name="subject_token">%1$s предоставил вам доступ к \"%2$s\"</string>
@@ -316,4 +318,12 @@
   <string name="auth_host_address">Адрес сервера</string>
   <string name="common_error_out_memory">Недостаточно памяти</string>
   <string name="username">Имя пользователя</string>
+  <string name="file_list__footer__folder">1 каталог</string>
+  <string name="file_list__footer__folders">%1$d каталогов</string>
+  <string name="file_list__footer__file">1 файл</string>
+  <string name="file_list__footer__file_and_folder">1 файл, 1 папка</string>
+  <string name="file_list__footer__file_and_folders">1 файл, %1$d каталогов</string>
+  <string name="file_list__footer__files">%1$d файлов</string>
+  <string name="file_list__footer__files_and_folder">%1$d файлов, 1 каталог</string>
+  <string name="file_list__footer__files_and_folders">%1$d файлов, %2$d каталогов</string>
 </resources>

+ 0 - 1
res/values-si-rLK/strings.xml

@@ -63,7 +63,6 @@
   <string name="auth_bad_oc_version_title">හඳුනාගත නොහැකි  අනුවාදයක්</string>
   <string name="auth_wrong_connection_title">සම්බන්ධයක් ඇතිකර ගැනීමට නොහැකි විය</string>
   <string name="auth_secure_connection">රක්‍ෂිත සම්බන්ධතාවක් සාදන ලදී</string>
-  <string name="fd_keep_in_sync">ගොනුව යාවත්කාලීනව තබාගන්න</string>
   <string name="common_rename">නැවත නම් කරන්න</string>
   <string name="common_remove">ඉවත් කරන්න </string>
   <string name="confirmation_remove_local">පෙදෙසි පමණක්</string>

+ 4 - 1
res/values-sk-rSK/strings.xml

@@ -133,6 +133,8 @@
   <string name="pass_code_configure_your_pass_code">Vložte svoje heslo</string>
   <string name="pass_code_reenter_your_pass_code">Prosím, vložte znovu svoje heslo:</string>
   <string name="pass_code_remove_your_pass_code">Zmazať svoje heslo</string>
+  <string name="pass_code_removed">Bezpečnostný kód odstránený</string>
+  <string name="pass_code_stored">Bezpečnostný kód uložený</string>
   <string name="media_notif_ticker">Prehrávač hudby %1$s</string>
   <string name="media_state_playing">%1$s (prehráva)</string>
   <string name="media_state_loading">%1$s (načítava)</string>
@@ -185,7 +187,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Nie je možné vykonať autentifikáciu na server</string>
   <string name="auth_account_does_not_exist">Účet zatiaľ v zariadení neexistuje</string>
-  <string name="fd_keep_in_sync">Udržiavať súbor aktuálny.</string>
+  <string name="favorite">Obľúbené</string>
+  <string name="unfavorite">Odobrať z obľúbených</string>
   <string name="common_rename">Premenuj</string>
   <string name="common_remove">Odober</string>
   <string name="confirmation_remove_alert">Naozaj chcete odstrániť %1$s?</string>

+ 1 - 1
res/values-sl/strings.xml

@@ -192,7 +192,7 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Ni mogoče preveriti pristnosti strežnika</string>
   <string name="auth_account_does_not_exist">Račun na napravi še ne obstaja.</string>
-  <string name="fd_keep_in_sync">Datoteka naj bo posodobljena</string>
+  <string name="favorite">Priljubljene</string>
   <string name="common_rename">Preimenuj</string>
   <string name="common_remove">Odstrani</string>
   <string name="confirmation_remove_alert">Ali res želite odstraniti %1$s?</string>

+ 1 - 0
res/values-sr-rSP/strings.xml

@@ -52,6 +52,7 @@
   <string name="auth_no_net_conn_title">Nema konekcije</string>
   <string name="auth_nossl_plain_ok_title">Sigurna konekcija nije dostupna.</string>
   <string name="auth_connection_established">Konekcija uspostavljena</string>
+  <string name="favorite">Omiljeni</string>
   <string name="common_rename">Preimenij</string>
   <string name="common_remove">Ukloni</string>
   <string name="remove_success_msg">Uklanjanje je uspelo</string>

+ 2 - 1
res/values-sr/strings.xml

@@ -192,7 +192,8 @@
 	</string>
   <string name="auth_can_not_auth_against_server">Не могу да аутентификујем са овим сервером</string>
   <string name="auth_account_does_not_exist">Не постоји налог на уређају</string>
-  <string name="fd_keep_in_sync">Редовно ажурирај фајл</string>
+  <string name="favorite">Омиљени</string>
+  <string name="unfavorite">Неомиљени</string>
   <string name="common_rename">Преименуј</string>
   <string name="common_remove">Уклони</string>
   <string name="confirmation_remove_alert">Желите да уклоните %1$s?</string>

+ 2 - 1
res/values-sv/strings.xml

@@ -175,7 +175,8 @@
   <string name="auth_fail_get_user_name">Din server returnerar inte ett korrekt användare id, vänligen kontakta en administratör
 	</string>
   <string name="auth_can_not_auth_against_server">Kan inte autentisera mot servern</string>
-  <string name="fd_keep_in_sync">Håll filen uppdaterad</string>
+  <string name="favorite">Favorit</string>
+  <string name="unfavorite">Avfavoritisera</string>
   <string name="common_rename">Byt namn</string>
   <string name="common_remove">Radera</string>
   <string name="confirmation_remove_alert">Vill du verkligen ta bort %1$s?</string>

+ 1 - 1
res/values-ta-rLK/strings.xml

@@ -83,7 +83,7 @@
   <string name="auth_bad_oc_version_title">அங்கீகரிக்கப்படாத சேவையகம் பதிப்பு</string>
   <string name="auth_wrong_connection_title">இணைப்பை நிறுவமுடியாது</string>
   <string name="auth_secure_connection">பாதுகாப்பான இணைப்பு உருவாக்கப்பட்டது.</string>
-  <string name="fd_keep_in_sync">நவீன கோப்பை வைத்திருக்கவும்</string>
+  <string name="favorite">விருப்பமான</string>
   <string name="common_rename">பெயர்மாற்றம்</string>
   <string name="common_remove">அகற்றுக</string>
   <string name="confirmation_remove_local">உள்ளூர் மட்டும்</string>

+ 2 - 1
res/values-th-rTH/strings.xml

@@ -192,7 +192,8 @@
   <string name="auth_fail_get_user_name">เซิร์ฟเวอร์ของคุณไม่ได้ส่งคืนรหัสผู้ใช้ที่ถูกต้อง กรุณาติดต่อผู้ดูแลระบบ!</string>
   <string name="auth_can_not_auth_against_server">ไม่สามารถยืนยันตัวตนกับเซิร์ฟเวอร์นี้</string>
   <string name="auth_account_does_not_exist">ยังไม่มีบัญชีในอุปกรณ์นี้</string>
-  <string name="fd_keep_in_sync">ปรับปรุงไฟล์ให้ทันสมัยอยู่เสมอ</string>
+  <string name="favorite">รายการโปรด</string>
+  <string name="unfavorite">ออกจากรายการโปรด</string>
   <string name="common_rename">เปลี่ยนชื่อ</string>
   <string name="common_remove">ลบออก</string>
   <string name="confirmation_remove_alert">คุณต้องการที่จะลบ %1$s?</string>

+ 12 - 1
res/values-tr/strings.xml

@@ -69,6 +69,7 @@
   <string name="uploader_info_uploading">Yükleniyor</string>
   <string name="file_list_seconds_ago">saniyeler önce</string>
   <string name="file_list_empty">Burada hiçbir şey yok. Bir şeyler yükleyin!</string>
+  <string name="file_list_loading">Yükleniyor...</string>
   <string name="local_file_list_empty">Bu klasörde dosya yok.</string>
   <string name="filedetails_select_file">Ek bilgileri görmek için dosyaya dokunun.</string>
   <string name="filedetails_size">Boyut:</string>
@@ -192,7 +193,8 @@
         </string>
   <string name="auth_can_not_auth_against_server">Bu sunucuya karşı kimlik doğrulama yapılamaz</string>
   <string name="auth_account_does_not_exist">Hesap henüz cihazda mevcut değil</string>
-  <string name="fd_keep_in_sync">Dosyayı güncel tut</string>
+  <string name="favorite">Sık kullanılan</string>
+  <string name="unfavorite">Favoriden kaldır</string>
   <string name="common_rename">Yeniden adlandır</string>
   <string name="common_remove">Kaldır</string>
   <string name="confirmation_remove_alert">Gerçekten %1$s dosyasını kaldırmak istiyor musunuz?</string>
@@ -310,8 +312,17 @@
   <string name="download_folder_failed_content">%1$s klasörün indirilmesi tamamlanamadı</string>
   <string name="shared_subject_header">sizinle</string>
   <string name="with_you_subject_header">paylaştı</string>
+  <string name="subject_token">%1$s, sizinle \"%2$s\" paylaşımını yaptı</string>
   <string name="auth_refresh_button">Bağlantıyı yenile</string>
   <string name="auth_host_address">Sunucu adresi</string>
   <string name="common_error_out_memory">Yeterli hafıza yok</string>
   <string name="username">Kullanıcı adı</string>
+  <string name="file_list__footer__folder">1 klasör</string>
+  <string name="file_list__footer__folders">%1$d klasör</string>
+  <string name="file_list__footer__file">1 dosya</string>
+  <string name="file_list__footer__file_and_folder">1 dosya, 1 klasör</string>
+  <string name="file_list__footer__file_and_folders">1 dosya, %1$d klasör</string>
+  <string name="file_list__footer__files">%1$d dosya</string>
+  <string name="file_list__footer__files_and_folder">%1$d dosya, 1 klasör</string>
+  <string name="file_list__footer__files_and_folders">%1$d dosya, %2$d klasör</string>
 </resources>

+ 1 - 0
res/values-ug/strings.xml

@@ -43,6 +43,7 @@
   <string name="change_password">ئىم ئۆزگەرت</string>
   <string name="uploader_info_dirname">قىسقۇچ ئاتى</string>
   <string name="common_choose_account">ھېسابات تاللاڭ</string>
+  <string name="favorite">يىغقۇچ</string>
   <string name="common_rename">ئات ئۆزگەرت</string>
   <string name="common_remove">چىقىرىۋەت</string>
   <string name="activity_chooser_send_file_title">يوللا</string>

+ 1 - 1
res/values-uk/strings.xml

@@ -182,7 +182,7 @@
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Аутентифікація на цьому сервері неможлива</string>
   <string name="auth_account_does_not_exist">Користвача в пристрої не існуе</string>
-  <string name="fd_keep_in_sync">Оновлювати файл</string>
+  <string name="favorite">Улюблений</string>
   <string name="common_rename">Перейменувати</string>
   <string name="common_remove">Видалити</string>
   <string name="confirmation_remove_alert">Ви дійсно бажаєте видалити %1$s?</string>

+ 1 - 1
res/values-vi/strings.xml

@@ -150,7 +150,7 @@
   <string name="auth_connecting_auth_server">Đang kết nối đến máy chủ xác thực...</string>
   <string name="auth_unsupported_auth_method">Máy chủ không hổ trợ phương thức xác thực này</string>
   <string name="auth_unsupported_multiaccount">%1$s  không hỗ trợ nhiều tài khoản</string>
-  <string name="fd_keep_in_sync">Giữ tập tin cập nhật</string>
+  <string name="favorite">Ưu thích</string>
   <string name="common_rename">Sửa tên</string>
   <string name="common_remove">Xóa</string>
   <string name="confirmation_remove_local">Chỉ cục bộ</string>

+ 1 - 1
res/values-zh-rCN/strings.xml

@@ -192,7 +192,7 @@
 	</string>
   <string name="auth_can_not_auth_against_server">无法通过此服务器认证</string>
   <string name="auth_account_does_not_exist">设备中还未存在该帐号</string>
-  <string name="fd_keep_in_sync">保证文件更新</string>
+  <string name="favorite">收藏</string>
   <string name="common_rename">重命名</string>
   <string name="common_remove">删除</string>
   <string name="confirmation_remove_alert">你确定要删除 %1$s 吗?</string>

+ 1 - 1
res/values-zh-rTW/strings.xml

@@ -181,7 +181,7 @@
 	</string>
   <string name="auth_can_not_auth_against_server">無法在這個伺服器上取得認證</string>
   <string name="auth_account_does_not_exist">帳號目前不存在於本裝置</string>
-  <string name="fd_keep_in_sync">讓檔案保持最新的</string>
+  <string name="favorite">我的最愛</string>
   <string name="common_rename">重新命名</string>
   <string name="common_remove">移除</string>
   <string name="confirmation_remove_alert">您真的要移除 %1$s ?</string>

+ 2 - 1
res/values/strings.xml

@@ -200,7 +200,8 @@
 	<string name="auth_can_not_auth_against_server">Cannot authenticate against this server</string>
     <string name="auth_account_does_not_exist">Account does not exist in the device yet</string>
     
-    <string name="fd_keep_in_sync">Keep file up to date</string>
+    <string name="favorite">Favorite</string>
+    <string name="unfavorite">Unfavorite</string>
     <string name="common_rename">Rename</string>
     <string name="common_remove">Remove</string>
     <string name="confirmation_remove_alert">"Do you really want to remove %1$s?"</string>

+ 5 - 5
src/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -190,7 +190,7 @@ public class FileDataStorageManager {
         cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties());
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData());
-        cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0);
+        cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0);
         cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
         cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
         cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
@@ -300,7 +300,7 @@ public class FileDataStorageManager {
             cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);
             cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties());
             cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData());
-            cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0);
+            cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0);
             cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
             cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
             cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
@@ -377,7 +377,7 @@ public class FileDataStorageManager {
         cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name);
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, folder.getLastSyncDateForProperties());
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, folder.getLastSyncDateForData());
-        cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, folder.keepInSync() ? 1 : 0);
+        cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, folder.isFavorite() ? 1 : 0);
         cv.put(ProviderTableMeta.FILE_ETAG, folder.getEtag());
         cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, folder.isShareByLink() ? 1 : 0);
         cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, folder.getPublicLink());
@@ -877,7 +877,7 @@ public class FileDataStorageManager {
                     .getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE)));
             file.setLastSyncDateForData(c.getLong(c.
                     getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA)));
-            file.setKeepInSync(c.getInt(
+            file.setFavorite(c.getInt(
                     c.getColumnIndex(ProviderTableMeta.FILE_KEEP_IN_SYNC)) == 1 ? true : false);
             file.setEtag(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_ETAG)));
             file.setShareByLink(c.getInt(
@@ -1261,7 +1261,7 @@ public class FileDataStorageManager {
                     ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, 
                     file.getLastSyncDateForData()
                 );
-                cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0);
+                cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0);
                 cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
                 cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
                 cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());

+ 10 - 10
src/com/owncloud/android/datamodel/OCFile.java

@@ -60,7 +60,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
     private boolean mNeedsUpdating;
     private long mLastSyncDateForProperties;
     private long mLastSyncDateForData;
-    private boolean mKeepInSync;
+    private boolean mFavorite;
 
     private String mEtag;
 
@@ -107,7 +107,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mLocalPath = source.readString();
         mMimeType = source.readString();
         mNeedsUpdating = source.readInt() == 0;
-        mKeepInSync = source.readInt() == 1;
+        mFavorite = source.readInt() == 1;
         mLastSyncDateForProperties = source.readLong();
         mLastSyncDateForData = source.readLong();
         mEtag = source.readString();
@@ -132,7 +132,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         dest.writeString(mLocalPath);
         dest.writeString(mMimeType);
         dest.writeInt(mNeedsUpdating ? 1 : 0);
-        dest.writeInt(mKeepInSync ? 1 : 0);
+        dest.writeInt(mFavorite ? 1 : 0);
         dest.writeLong(mLastSyncDateForProperties);
         dest.writeLong(mLastSyncDateForData);
         dest.writeString(mEtag);
@@ -346,7 +346,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mModifiedTimestampAtLastSyncForData = 0;
         mLastSyncDateForProperties = 0;
         mLastSyncDateForData = 0;
-        mKeepInSync = false;
+        mFavorite = false;
         mNeedsUpdating = false;
         mEtag = null;
         mShareByLink = false;
@@ -444,12 +444,12 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mLastSyncDateForData = lastSyncDate;
     }
 
-    public void setKeepInSync(boolean keepInSync) {
-        mKeepInSync = keepInSync;
+    public void setFavorite(boolean favorite) {
+        mFavorite = favorite;
     }
 
-    public boolean keepInSync() {
-        return mKeepInSync;
+    public boolean isFavorite() {
+        return mFavorite;
     }
 
     @Override
@@ -483,8 +483,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
 
     @Override
     public String toString() {
-        String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, keepInSync=%s etag=%s]";
-        asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mKeepInSync), mEtag);
+        String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, favorite=%s etag=%s]";
+        asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mFavorite), mEtag);
         return asString;
     }
 

+ 14 - 0
src/com/owncloud/android/files/FileMenuFilter.java

@@ -215,6 +215,20 @@ public class FileMenuFilter {
             toShow.add(R.id.action_send_file);
         }
 
+        // FAVORITES
+        if (mFile == null || downloading || uploading || mFile.isFolder() || mFile.isFavorite()) {
+            toHide.add(R.id.action_favorite_file);
+        } else {
+            toShow.add(R.id.action_favorite_file);
+        }
+
+        // UNFAVORITES
+        if (mFile == null || downloading || uploading || mFile.isFolder() || !mFile.isFavorite()) {
+            toHide.add(R.id.action_unfavorite_file);
+        } else {
+            toShow.add(R.id.action_unfavorite_file);
+        }
+
     }
 
 }

+ 21 - 2
src/com/owncloud/android/files/FileOperationsHelper.java

@@ -40,6 +40,7 @@ import com.owncloud.android.lib.common.network.WebdavUtils;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 import com.owncloud.android.services.OperationsService;
+import com.owncloud.android.services.observer.FileObserverService;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.dialog.ShareLinkToDialog;
 
@@ -225,6 +226,24 @@ public class FileOperationsHelper {
             mFileActivity.startService(intent);
         }
     }
+
+    public void toggleFavorite(OCFile file, boolean isFavorite) {
+        file.setFavorite(isFavorite);
+        mFileActivity.getStorageManager().saveFile(file);
+
+        /// register the OCFile instance in the observer service to monitor local updates
+        Intent observedFileIntent = FileObserverService.makeObservedFileIntent(
+                mFileActivity,
+                file,
+                mFileActivity.getAccount(),
+                isFavorite);
+        mFileActivity.startService(observedFileIntent);
+
+        /// immediate content synchronization
+        if (file.isFavorite()) {
+            syncFile(file);
+        }
+    }
     
     public void renameFile(OCFile file, String newFilename) {
         // RenameFile
@@ -284,8 +303,8 @@ public class FileOperationsHelper {
             downloaderBinder.cancel(account, file);
 
             // TODO - review why is this here, and solve in a better way
-            // Remove etag for parent, if file is a keep_in_sync
-            if (file.keepInSync()) {
+            // Remove etag for parent, if file is a favorite
+            if (file.isFavorite()) {
                 OCFile parent = mFileActivity.getStorageManager().getFileById(file.getParentId());
                 parent.setEtag("");
                 mFileActivity.getStorageManager().saveFile(parent);

+ 2 - 2
src/com/owncloud/android/operations/RefreshFolderOperation.java

@@ -365,7 +365,7 @@ public class RefreshFolderOperation extends RemoteOperation {
             if (localFile != null) {
                 // some properties of local state are kept unmodified
                 remoteFile.setFileId(localFile.getFileId());
-                remoteFile.setKeepInSync(localFile.keepInSync());
+                remoteFile.setFavorite(localFile.isFavorite());
                 remoteFile.setLastSyncDateForData(localFile.getLastSyncDateForData());
                 remoteFile.setModificationTimestampAtLastSyncForData(
                         localFile.getModificationTimestampAtLastSyncForData()
@@ -397,7 +397,7 @@ public class RefreshFolderOperation extends RemoteOperation {
             searchForLocalFileInDefaultPath(remoteFile);    // legacy   
 
             /// prepare content synchronization for kept-in-sync files
-            if (remoteFile.keepInSync()) {
+            if (remoteFile.isFavorite()) {
                 SynchronizeFileOperation operation = new SynchronizeFileOperation(  localFile,        
                                                                                     remoteFile, 
                                                                                     mAccount, 

+ 3 - 3
src/com/owncloud/android/operations/SynchronizeFileOperation.java

@@ -245,12 +245,12 @@ public class SynchronizeFileOperation extends SyncOperation {
                     
                     if (mSyncFileContents) {
                         requestForDownload(mLocalFile); // local, not server; we won't to keep
-                        // the value of keepInSync!
+                        // the value of favorite!
                         // the update of local data will be done later by the FileUploader
                         // service when the upload finishes
                     } else {
                         // TODO CHECK: is this really useful in some point in the code?
-                        mServerFile.setKeepInSync(mLocalFile.keepInSync());
+                        mServerFile.setFavorite(mLocalFile.isFavorite());
                         mServerFile.setLastSyncDateForData(mLocalFile.getLastSyncDateForData());
                         mServerFile.setStoragePath(mLocalFile.getStoragePath());
                         mServerFile.setParentId(mLocalFile.getParentId());
@@ -285,7 +285,7 @@ public class SynchronizeFileOperation extends SyncOperation {
         i.putExtra(FileUploader.KEY_ACCOUNT, mAccount);
         i.putExtra(FileUploader.KEY_FILE, file);
         /*i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath);
-        // doing this we would lose the value of keepInSync in the road, and maybe
+        // doing this we would lose the value of isFavorite in the road, and maybe
         // it's not updated in the database when the FileUploader service gets it!
         i.putExtra(FileUploader.KEY_LOCAL_FILE, localFile.getStoragePath());*/
         i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);

+ 2 - 2
src/com/owncloud/android/operations/SynchronizeFolderOperation.java

@@ -321,7 +321,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
             if (localFile != null) {
                 // some properties of local state are kept unmodified
                 remoteFile.setFileId(localFile.getFileId());
-                remoteFile.setKeepInSync(localFile.keepInSync());
+                remoteFile.setFavorite(localFile.isFavorite());
                 remoteFile.setLastSyncDateForData(localFile.getLastSyncDateForData());
                 remoteFile.setModificationTimestampAtLastSyncForData(
                         localFile.getModificationTimestampAtLastSyncForData()
@@ -360,7 +360,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
                     startSyncFolderOperation(remoteFile.getRemotePath());
                 }
 
-            } else if (remoteFile.keepInSync()) {
+            } else if (remoteFile.isFavorite()) {
                 /// prepare content synchronization for kept-in-sync files
                 SynchronizeFileOperation operation = new SynchronizeFileOperation(
                         localFile,

+ 1 - 1
src/com/owncloud/android/operations/UploadFileOperation.java

@@ -407,7 +407,7 @@ public class UploadFileOperation extends RemoteOperation {
         newFile.setModificationTimestampAtLastSyncForData(
                 mFile.getModificationTimestampAtLastSyncForData());
         // newFile.setEtag(mFile.getEtag())
-        newFile.setKeepInSync(mFile.keepInSync());
+        newFile.setFavorite(mFile.isFavorite());
         newFile.setLastSyncDateForProperties(mFile.getLastSyncDateForProperties());
         newFile.setLastSyncDateForData(mFile.getLastSyncDateForData());
         newFile.setStoragePath(mFile.getStoragePath());

+ 121 - 93
src/com/owncloud/android/ui/activity/FileActivity.java

@@ -67,6 +67,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CreateShareOperation;
+import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.operations.SynchronizeFolderOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 import com.owncloud.android.services.OperationsService;
@@ -75,6 +76,8 @@ import com.owncloud.android.ui.NavigationDrawerItem;
 import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
+import com.owncloud.android.ui.fragment.FileDetailFragment;
+import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 
 import java.util.ArrayList;
@@ -93,49 +96,49 @@ public class FileActivity extends ActionBarActivity
             "com.owncloud.android.ui.activity.WAITING_TO_PREVIEW";
     public static final String EXTRA_FROM_NOTIFICATION =
             "com.owncloud.android.ui.activity.FROM_NOTIFICATION";
-    
+
     public static final String TAG = FileActivity.class.getSimpleName();
-    
+
     private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
     private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID";
     private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD";
     private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN";
     private static final String KEY_ACTION_BAR_TITLE = "ACTION_BAR_TITLE";
-    
+
     protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200;
-    
-    
+
+
     /** OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located.*/
     private Account mAccount;
-    
+
     /** Main {@link OCFile} handled by the activity.*/
     private OCFile mFile;
-    
+
     /** Flag to signal that the activity will is finishing to enforce the creation of an ownCloud
      * {@link Account} */
     private boolean mRedirectingToSetupAccount = false;
-    
-    /** Flag to signal when the value of mAccount was set */ 
+
+    /** Flag to signal when the value of mAccount was set */
     protected boolean mAccountWasSet;
-    
-    /** Flag to signal when the value of mAccount was restored from a saved state */ 
+
+    /** Flag to signal when the value of mAccount was restored from a saved state */
     protected boolean mAccountWasRestored;
-    
+
     /** Flag to signal if the activity is launched by a notification */
     private boolean mFromNotification;
-    
+
     /** Messages handler associated to the main thread and the life cycle of the activity */
     private Handler mHandler;
-    
+
     /** Access point to the cached database for the current ownCloud {@link Account} */
     private FileDataStorageManager mStorageManager = null;
-    
+
     private FileOperationsHelper mFileOperationsHelper;
-    
+
     private ServiceConnection mOperationsServiceConnection = null;
-    
+
     private OperationsServiceBinder mOperationsServiceBinder = null;
-    
+
     protected FileDownloaderBinder mDownloaderBinder = null;
     protected FileUploaderBinder mUploaderBinder = null;
     private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null;
@@ -158,12 +161,12 @@ public class FileActivity extends ActionBarActivity
 
     // TODO re-enable when "Accounts" is available in Navigation Drawer
 //    protected boolean mShowAccounts = false;
-    
+
     /**
-     * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of 
+     * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of
      * the {@link FileActivity}.
-     * 
-     * Grants that a valid ownCloud {@link Account} is associated to the instance, or that the user 
+     *
+     * Grants that a valid ownCloud {@link Account} is associated to the instance, or that the user
      * is requested to create a new one.
      */
     @Override
@@ -191,11 +194,11 @@ public class FileActivity extends ActionBarActivity
                                                  // or database
 
         setAccount(account, savedInstanceState != null);
-        
+
         mOperationsServiceConnection = new OperationsServiceConnection();
         bindService(new Intent(this, OperationsService.class), mOperationsServiceConnection,
                 Context.BIND_AUTO_CREATE);
-        
+
         mDownloadServiceConnection = newTransferenceServiceConnection();
         if (mDownloadServiceConnection != null) {
             bindService(new Intent(this, FileDownloader.class), mDownloadServiceConnection,
@@ -220,8 +223,8 @@ public class FileActivity extends ActionBarActivity
     }
 
     /**
-     *  Since ownCloud {@link Account}s can be managed from the system setting menu, 
-     *  the existence of the {@link Account} associated to the instance must be checked 
+     *  Since ownCloud {@link Account}s can be managed from the system setting menu,
+     *  the existence of the {@link Account} associated to the instance must be checked
      *  every time it is restarted.
      */
     @Override
@@ -235,8 +238,8 @@ public class FileActivity extends ActionBarActivity
         Log_OC.v(TAG, "onRestart() end");
     }
 
-    
-    @Override 
+
+    @Override
     protected void onStart() {
         super.onStart();
 
@@ -244,26 +247,26 @@ public class FileActivity extends ActionBarActivity
             onAccountSet(mAccountWasRestored);
         }
     }
-    
+
     @Override
     protected void onResume() {
         super.onResume();
-        
+
         if (mOperationsServiceBinder != null) {
             doOnResumeAndBound();
         }
     }
-    
+
     @Override
     protected void onPause()  {
         if (mOperationsServiceBinder != null) {
             mOperationsServiceBinder.removeOperationListener(this);
         }
-        
+
         super.onPause();
     }
-    
-    
+
+
     @Override
     protected void onDestroy() {
         if (mOperationsServiceConnection != null) {
@@ -435,12 +438,12 @@ public class FileActivity extends ActionBarActivity
 
 
     /**
-     *  Sets and validates the ownCloud {@link Account} associated to the Activity. 
-     * 
+     *  Sets and validates the ownCloud {@link Account} associated to the Activity.
+     *
      *  If not valid, tries to swap it for other valid and existing ownCloud {@link Account}.
-     *  
-     *  POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}. 
-     * 
+     *
+     *  POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}.
+     *
      *  @param account          New {@link Account} to set.
      *  @param savedAccount     When 'true', account was retrieved from a saved instance state.
      */
@@ -453,19 +456,19 @@ public class FileActivity extends ActionBarActivity
             mAccount = account;
             mAccountWasSet = true;
             mAccountWasRestored = (savedAccount || mAccount.equals(oldAccount));
-            
+
         } else {
             swapToDefaultAccount();
         }
     }
 
-    
+
     /**
-     *  Tries to swap the current ownCloud {@link Account} for other valid and existing. 
-     * 
-     *  If no valid ownCloud {@link Account} exists, the the user is requested 
+     *  Tries to swap the current ownCloud {@link Account} for other valid and existing.
+     *
+     *  If no valid ownCloud {@link Account} exists, the the user is requested
      *  to create a new ownCloud {@link Account}.
-     *  
+     *
      *  POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}.
      */
     private void swapToDefaultAccount() {
@@ -477,7 +480,7 @@ public class FileActivity extends ActionBarActivity
             mRedirectingToSetupAccount = true;
             mAccountWasSet = false;
             mAccountWasRestored = false;
-            
+
         } else {
             mAccountWasSet = true;
             mAccountWasRestored = (newAccount.equals(mAccount));
@@ -500,7 +503,7 @@ public class FileActivity extends ActionBarActivity
                 null);
     }
 
-    
+
     /**
      * {@inheritDoc}
      */
@@ -513,32 +516,32 @@ public class FileActivity extends ActionBarActivity
         outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain);
         outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString());
     }
-    
-    
+
+
     /**
      * Getter for the main {@link OCFile} handled by the activity.
-     * 
+     *
      * @return  Main {@link OCFile} handled by the activity.
      */
     public OCFile getFile() {
         return mFile;
     }
 
-    
+
     /**
      * Setter for the main {@link OCFile} handled by the activity.
-     * 
+     *
      * @param file  Main {@link OCFile} to be handled by the activity.
      */
     public void setFile(OCFile file) {
         mFile = file;
     }
 
-    
+
     /**
      * Getter for the ownCloud {@link Account} where the main {@link OCFile} handled by the activity
      * is located.
-     * 
+     *
      * @return  OwnCloud {@link Account} where the main {@link OCFile} handled by the activity
      *          is located.
      */
@@ -556,7 +559,7 @@ public class FileActivity extends ActionBarActivity
     public boolean fromNotification() {
         return mFromNotification;
     }
-    
+
     /**
      * @return  'True' when the Activity is finishing to enforce the setup of a new account.
      */
@@ -571,11 +574,11 @@ public class FileActivity extends ActionBarActivity
     public void setTryShareAgain(boolean tryShareAgain) {
        mTryShareAgain = tryShareAgain;
     }
-    
+
     public OperationsServiceBinder getOperationsServiceBinder() {
         return mOperationsServiceBinder;
     }
-    
+
     protected ServiceConnection newTransferenceServiceConnection() {
         return null;
     }
@@ -583,7 +586,7 @@ public class FileActivity extends ActionBarActivity
     /**
      * Helper class handling a callback from the {@link AccountManager} after the creation of
      * a new ownCloud {@link Account} finished, successfully or not.
-     * 
+     *
      * At this moment, only called after the creation of the first account.
      */
     public class AccountCreationCallback implements AccountManagerCallback<Bundle> {
@@ -604,11 +607,11 @@ public class FileActivity extends ActionBarActivity
                     }
                 } catch (OperationCanceledException e) {
                     Log_OC.d(TAG, "Account creation canceled");
-                    
+
                 } catch (Exception e) {
                     Log_OC.e(TAG, "Account creation finished in exception: ", e);
                 }
-                    
+
             } else {
                 Log_OC.e(TAG, "Account creation callback with null bundle");
             }
@@ -616,19 +619,19 @@ public class FileActivity extends ActionBarActivity
                 moveTaskToBack(true);
             }
         }
-        
+
     }
-    
-    
+
+
     /**
      *  Called when the ownCloud {@link Account} associated to the Activity was just updated.
-     * 
+     *
      *  Child classes must grant that state depending on the {@link Account} is updated.
      */
     protected void onAccountSet(boolean stateWasRecovered) {
         if (getAccount() != null) {
             mStorageManager = new FileDataStorageManager(getAccount(), getContentResolver());
-            
+
         } else {
             Log_OC.wtf(TAG, "onAccountChanged was called with NULL account associated!");
         }
@@ -648,13 +651,13 @@ public class FileActivity extends ActionBarActivity
     public Handler getHandler() {
         return mHandler;
     }
-    
+
     public FileOperationsHelper getFileOperationsHelper() {
         return mFileOperationsHelper;
     }
-    
+
     /**
-     * 
+     *
      * @param operation     Removal operation performed.
      * @param result        Result of the removal.
      */
@@ -662,17 +665,17 @@ public class FileActivity extends ActionBarActivity
     public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {
         Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the "
                 + "FileActivities ");
-        
+
         mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE);
-        
+
         if (!result.isSuccess() && (
-                result.getCode() == ResultCode.UNAUTHORIZED || 
+                result.getCode() == ResultCode.UNAUTHORIZED ||
                 result.isIdPRedirection() ||
                 (result.isException() && result.getException() instanceof AuthenticatorException)
                 )) {
-            
+
             requestCredentialsUpdate();
-            
+
             if (result.getCode() == ResultCode.UNAUTHORIZED) {
                 dismissLoadingDialog();
                 Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
@@ -684,13 +687,16 @@ public class FileActivity extends ActionBarActivity
 
         } else if (operation instanceof CreateShareOperation) {
             onCreateShareOperationFinish((CreateShareOperation) operation, result);
-            
+
         } else if (operation instanceof UnshareLinkOperation) {
             onUnshareLinkOperationFinish((UnshareLinkOperation)operation, result);
-        
+
         } else if (operation instanceof SynchronizeFolderOperation) {
             onSynchronizeFolderOperationFinish((SynchronizeFolderOperation)operation, result);
 
+        }else if (operation instanceof SynchronizeFileOperation) {
+            onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result);
+
         }
     }
 
@@ -698,12 +704,12 @@ public class FileActivity extends ActionBarActivity
         Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
         updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, getAccount());
         updateAccountCredentials.putExtra(
-                AuthenticatorActivity.EXTRA_ACTION, 
+                AuthenticatorActivity.EXTRA_ACTION,
                 AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN);
         updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
         startActivity(updateAccountCredentials);
     }
-    
+
 
     private void onCreateShareOperationFinish(CreateShareOperation operation,
                                               RemoteOperationResult result) {
@@ -711,7 +717,7 @@ public class FileActivity extends ActionBarActivity
         if (result.isSuccess()) {
             mTryShareAgain = false;
             updateFileFromDB();
-            
+
             Intent sendIntent = operation.getSendIntent();
             startActivity(sendIntent);
         } else {
@@ -735,22 +741,22 @@ public class FileActivity extends ActionBarActivity
                         Toast.LENGTH_LONG);
                 t.show();
             }
-        } 
+        }
     }
-    
-    
+
+
     private void onUnshareLinkOperationFinish(UnshareLinkOperation operation,
                                               RemoteOperationResult result) {
         dismissLoadingDialog();
-        
+
         if (result.isSuccess()){
             updateFileFromDB();
-            
+
         } else {
             Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
                             operation, getResources()), Toast.LENGTH_LONG);
             t.show();
-        } 
+        }
     }
 
     private void onSynchronizeFolderOperationFinish(
@@ -762,7 +768,28 @@ public class FileActivity extends ActionBarActivity
             t.show();
         }
     }
-    
+
+    private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation,
+                                                  RemoteOperationResult result) {
+        dismissLoadingDialog();
+        OCFile syncedFile = operation.getLocalFile();
+        if (!result.isSuccess()) {
+            if (result.getCode() == ResultCode.SYNC_CONFLICT) {
+                Intent i = new Intent(this, ConflictsResolveActivity.class);
+                i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile);
+                i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, getAccount());
+                startActivity(i);
+
+            }
+        } else {
+            if (!operation.transferWasRequested()) {
+                Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
+                        operation, getResources()), Toast.LENGTH_LONG);
+                msg.show();
+            }
+        }
+    }
+
     protected void updateFileFromDB(){
         OCFile file = getFile();
         if (file != null) {
@@ -770,9 +797,10 @@ public class FileActivity extends ActionBarActivity
             setFile(file);
         }
     }
-    
+
+
     /**
-     * Show loading dialog 
+     * Show loading dialog
      */
     public void showLoadingDialog() {
         // Construct dialog
@@ -780,10 +808,10 @@ public class FileActivity extends ActionBarActivity
         FragmentManager fm = getSupportFragmentManager();
         FragmentTransaction ft = fm.beginTransaction();
         loading.show(ft, DIALOG_WAIT_TAG);
-        
+
     }
 
-    
+
     /**
      * Dismiss loading dialog
      */
@@ -795,7 +823,7 @@ public class FileActivity extends ActionBarActivity
         }
     }
 
-    
+
     private void doOnResumeAndBound() {
         mOperationsServiceBinder.addOperationListener(FileActivity.this, mHandler);
         long waitingForOpId = mFileOperationsHelper.getOpIdWaitingFor();
@@ -809,8 +837,8 @@ public class FileActivity extends ActionBarActivity
     }
 
 
-    /** 
-     * Implements callback methods for service binding. Passed as a parameter to { 
+    /**
+     * Implements callback methods for service binding. Passed as a parameter to {
      */
     private class OperationsServiceConnection implements ServiceConnection {
 
@@ -828,7 +856,7 @@ public class FileActivity extends ActionBarActivity
                 return;
             }
         }
-        
+
 
         @Override
         public void onServiceDisconnected(ComponentName component) {

+ 1 - 0
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -1457,6 +1457,7 @@ public class FileDisplayActivity extends HookActivity
                                 operation, getResources()), Toast.LENGTH_LONG);
                 msg.show();
             }
+            invalidateOptionsMenu();
         }
     }
 

+ 25 - 7
src/com/owncloud/android/ui/activity/PassCodeActivity.java

@@ -61,7 +61,9 @@ public class PassCodeActivity extends ActionBarActivity {
     private EditText[] mPassCodeEditTexts = new EditText[4];
     
     private String [] mPassCodeDigits = {"","","",""};
+    private static String KEY_PASSCODE_DIGITS = "PASSCODE_DIGITS";
     private boolean mConfirmingPassCode = false;
+    private static String KEY_CONFIRMING_PASSCODE = "CONFIRMING_PASSCODE";
 
     private boolean mBChange = true; // to control that only one blocks jump
 
@@ -96,13 +98,22 @@ public class PassCodeActivity extends ActionBarActivity {
             setCancelButtonEnabled(false);      // no option to cancel
 
         } else if (ACTION_ENABLE.equals(getIntent().getAction())) {
-            /// pass code preference has just been activated in Preferences;
-            // will receive and confirm pass code value
-            mPassCodeHdr.setText(R.string.pass_code_configure_your_pass_code);
-            //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code);
-            // TODO choose a header, check iOS
-            mPassCodeHdrExplanation.setVisibility(View.VISIBLE);
-            setCancelButtonEnabled(true);
+            if (savedInstanceState != null) {
+                mConfirmingPassCode = savedInstanceState.getBoolean(PassCodeActivity.KEY_CONFIRMING_PASSCODE);
+                mPassCodeDigits = savedInstanceState.getStringArray(PassCodeActivity.KEY_PASSCODE_DIGITS);
+            }
+            if(mConfirmingPassCode){
+                //the app was in the passcodeconfirmation
+                requestPassCodeConfirmation();
+            }else{
+                /// pass code preference has just been activated in Preferences;
+                // will receive and confirm pass code value
+                mPassCodeHdr.setText(R.string.pass_code_configure_your_pass_code);
+                //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code);
+                // TODO choose a header, check iOS
+                mPassCodeHdrExplanation.setVisibility(View.VISIBLE);
+                setCancelButtonEnabled(true);
+            }
 
         } else if (ACTION_DISABLE.equals(getIntent().getAction())) {
             /// pass code preference has just been disabled in Preferences;
@@ -455,6 +466,13 @@ public class PassCodeActivity extends ActionBarActivity {
         finish();
     }
 
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(PassCodeActivity.KEY_CONFIRMING_PASSCODE, mConfirmingPassCode);
+        outState.putStringArray(PassCodeActivity.KEY_PASSCODE_DIGITS, mPassCodeDigits);
+    }
+
 
     private class PassCodeDigitTextWatcher implements TextWatcher {
 

+ 10 - 10
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@ -268,15 +268,15 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
                     }
 
                     // share with me icon
-                    if (!file.isFolder()) {
-                        ImageView sharedWithMeIconV = (ImageView)
-                                view.findViewById(R.id.sharedWithMeIcon);
-                        sharedWithMeIconV.bringToFront();
-                        if (checkIfFileIsSharedWithMe(file)) {
-                            sharedWithMeIconV.setVisibility(View.VISIBLE);
-                        } else {
-                            sharedWithMeIconV.setVisibility(View.GONE);
-                        }
+                    ImageView sharedWithMeIconV = (ImageView)
+                            view.findViewById(R.id.sharedWithMeIcon);
+                    sharedWithMeIconV.bringToFront();
+                    if (checkIfFileIsSharedWithMe(file) &&
+                            (!file.isFolder() || !mGridMode)) {
+                        sharedWithMeIconV.setVisibility(View.VISIBLE);
+                    } else {
+                        sharedWithMeIconV.setVisibility(View.GONE);
+
                     }
 
                     break;
@@ -286,7 +286,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
             
             // this if-else is needed even though favorite icon is visible by default
             // because android reuses views in listview
-            if (!file.keepInSync()) {
+            if (!file.isFavorite()) {
                 view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE);
             } else {
                 view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE);

+ 6 - 6
src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java

@@ -110,21 +110,21 @@ implements ConfirmationDialogFragmentListener {
         
         FileDataStorageManager storageManager = cg.getStorageManager();
         
-        boolean containsKeepInSync = false;
+        boolean containsFavorite = false;
         if (mTargetFile.isFolder()) {
             // TODO Enable when "On Device" is recovered ?
             Vector<OCFile> files = storageManager.getFolderContent(mTargetFile/*, false*/);
             for(OCFile file: files) {
-                containsKeepInSync = file.keepInSync() || containsKeepInSync;
+                containsFavorite = file.isFavorite() || containsFavorite;
 
-                if (containsKeepInSync)
+                if (containsFavorite)
                     break;
             }
         }
 
-        // Remove etag for parent, if file is a keep_in_sync 
-        // or is a folder and contains keep_in_sync        
-        if (mTargetFile.keepInSync() || containsKeepInSync) {
+        // Remove etag for parent, if file is a favorite
+        // or is a folder and contains favorite
+        if (mTargetFile.isFavorite() || containsFavorite) {
             OCFile folder = null;
             if (mTargetFile.isFolder()) {
                 folder = mTargetFile;

+ 18 - 29
src/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -131,7 +131,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
         mView = inflater.inflate(mLayout, null);
         
         if (mLayout == R.layout.file_details_fragment) {
-            mView.findViewById(R.id.fdKeepInSync).setOnClickListener(this);
+            mView.findViewById(R.id.fdFavorite).setOnClickListener(this);
             ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.fdProgressBar);
             mProgressListener = new ProgressListener(progressBar);
             mView.findViewById(R.id.fdCancelBtn).setOnClickListener(this);
@@ -259,6 +259,14 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
                 }
                 return true;
             }
+            case R.id.action_favorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true);
+                return true;
+            }
+            case R.id.action_unfavorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false);
+                return true;
+            }
             default:
                 return false;
         }
@@ -267,8 +275,9 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
-            case R.id.fdKeepInSync: {
-                toggleKeepInSync();
+            case R.id.fdFavorite: {
+                CheckBox cb = (CheckBox) getView().findViewById(R.id.fdFavorite);
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(),cb.isChecked());
                 break;
             }
             case R.id.fdCancelBtn: {
@@ -279,27 +288,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
                 Log_OC.e(TAG, "Incorrect view clicked!");
         }
     }
-    
-    
-    private void toggleKeepInSync() {
-        CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync);
-        OCFile file = getFile();
-        file.setKeepInSync(cb.isChecked());
-        mContainerActivity.getStorageManager().saveFile(file);
-        
-        /// register the OCFile instance in the observer service to monitor local updates
-        Intent observedFileIntent = FileObserverService.makeObservedFileIntent(
-                getActivity(),
-                file, 
-                mAccount,
-                cb.isChecked());
-        getActivity().startService(observedFileIntent);
-        
-        /// immediate content synchronization
-        if (file.keepInSync()) {
-            mContainerActivity.getFileOperationsHelper().syncFile(getFile());
-        }
-    }
+
 
     /**
      * Check if the fragment was created with an empty layout. An empty fragment can't show file details, must be replaced.
@@ -348,8 +337,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
 
             setTimeModified(file.getModificationTimestamp());
             
-            CheckBox cb = (CheckBox)getView().findViewById(R.id.fdKeepInSync);
-            cb.setChecked(file.keepInSync());
+            CheckBox cb = (CheckBox)getView().findViewById(R.id.fdFavorite);
+            cb.setChecked(file.isFavorite());
 
             // configure UI for depending upon local state of the file
             FileDownloaderBinder downloaderBinder = mContainerActivity.getFileDownloaderBinder();
@@ -437,7 +426,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
     private void setButtonsForTransferring() {
         if (!isEmpty()) {
             // let's protect the user from himself ;)
-            getView().findViewById(R.id.fdKeepInSync).setEnabled(false);
+            getView().findViewById(R.id.fdFavorite).setEnabled(false);
             
             // show the progress bar for the transfer
             getView().findViewById(R.id.fdProgressBlock).setVisibility(View.VISIBLE);
@@ -459,7 +448,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
      */
     private void setButtonsForDown() {
         if (!isEmpty()) {
-            getView().findViewById(R.id.fdKeepInSync).setEnabled(true);
+            getView().findViewById(R.id.fdFavorite).setEnabled(true);
             
             // hides the progress bar
             getView().findViewById(R.id.fdProgressBlock).setVisibility(View.GONE);
@@ -473,7 +462,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
      */
     private void setButtonsForRemote() {
         if (!isEmpty()) {
-            getView().findViewById(R.id.fdKeepInSync).setEnabled(true);
+            getView().findViewById(R.id.fdFavorite).setEnabled(true);
             
             // hides the progress bar
             getView().findViewById(R.id.fdProgressBlock).setVisibility(View.GONE);

+ 10 - 3
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -341,6 +341,14 @@ public class OCFileListFragment extends ExtendedListFragment {
                 getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES);
                 return true;
             }
+            case R.id.action_favorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, true);
+                return true;
+            }
+            case R.id.action_unfavorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, false);
+                return true;
+            }
             default:
                 return super.onContextItemSelected(item); 
         }
@@ -492,8 +500,7 @@ public class OCFileListFragment extends ExtendedListFragment {
 
     public void sortBySize(boolean descending) {
         mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending);
-    }  
-    
-   
+    }
+
     
 }

+ 12 - 0
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -55,6 +55,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CreateShareOperation;
 import com.owncloud.android.operations.RemoveFileOperation;
+import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
@@ -234,6 +235,9 @@ public class PreviewImageActivity extends FileActivity implements
             
         } else if (operation instanceof RemoveFileOperation) {
             finish();
+        } else if (operation instanceof SynchronizeFileOperation) {
+            onSynchronizeFileOperationFinish((SynchronizeFileOperation) operation, result);
+
         }
     }
     
@@ -263,6 +267,14 @@ public class PreviewImageActivity extends FileActivity implements
         }
     }
 
+    private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation,
+                                                  RemoteOperationResult result) {
+        if (result.isSuccess()) {
+            invalidateOptionsMenu();
+        }
+
+    }
+
     @Override
     protected ServiceConnection newTransferenceServiceConnection() {
         return new PreviewImageServiceConnection();

+ 8 - 1
src/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -306,7 +306,14 @@ public class PreviewImageFragment extends FileFragment {
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                 return true;
             }
-            
+            case R.id.action_favorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true);
+                return true;
+            }
+            case R.id.action_unfavorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false);
+                return true;
+            }
             default:
                 return false;
         }

+ 8 - 1
src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -341,7 +341,14 @@ public class PreviewMediaFragment extends FileFragment implements
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                 return true;
             }
-
+            case R.id.action_favorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true);
+                return true;
+            }
+            case R.id.action_unfavorite_file:{
+                mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false);
+                return true;
+            }
             default:
                 return false;
         }