瀏覽代碼

Merge remote-tracking branch 'upstream/develop' into HEAD

Conflicts:
	owncloud-android-library
	src/com/owncloud/android/datamodel/OCFile.java
	src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java
	src/com/owncloud/android/ui/activity/FileDisplayActivity.java
	src/com/owncloud/android/ui/activity/FolderPickerActivity.java
	src/com/owncloud/android/ui/activity/Preferences.java
	src/com/owncloud/android/ui/adapter/FileListListAdapter.java
	src/com/owncloud/android/ui/fragment/ExtendedListFragment.java
	src/com/owncloud/android/ui/fragment/OCFileListFragment.java
Luke Owncloud 10 年之前
父節點
當前提交
2d0c347bc4
共有 97 個文件被更改,包括 802 次插入347 次删除
  1. 0 2
      .travis.yml
  2. 7 3
      AndroidManifest.xml
  3. 1 1
      README.md
  4. 2 2
      oc_jb_workaround/AndroidManifest.xml
  5. 1 1
      owncloud-android-library
  6. 3 3
      res/layout/files_folder_picker.xml
  7. 18 0
      res/layout/list_footer.xml
  8. 7 5
      res/layout/list_fragment.xml
  9. 1 1
      res/values-af-rZA/strings.xml
  10. 1 1
      res/values-ar/strings.xml
  11. 1 1
      res/values-be/strings.xml
  12. 4 1
      res/values-bg-rBG/strings.xml
  13. 1 1
      res/values-bn-rBD/strings.xml
  14. 5 1
      res/values-ca/strings.xml
  15. 6 1
      res/values-cs-rCZ/strings.xml
  16. 1 1
      res/values-cy-rGB/strings.xml
  17. 6 1
      res/values-da/strings.xml
  18. 6 1
      res/values-de-rDE/strings.xml
  19. 6 1
      res/values-de/strings.xml
  20. 5 1
      res/values-el/strings.xml
  21. 6 1
      res/values-en-rGB/strings.xml
  22. 5 1
      res/values-eo/strings.xml
  23. 5 1
      res/values-es-rAR/strings.xml
  24. 1 1
      res/values-es-rCL/strings.xml
  25. 1 1
      res/values-es-rMX/strings.xml
  26. 6 1
      res/values-es/strings.xml
  27. 5 1
      res/values-et-rEE/strings.xml
  28. 5 1
      res/values-eu/strings.xml
  29. 5 1
      res/values-fa/strings.xml
  30. 5 1
      res/values-fi-rFI/strings.xml
  31. 5 1
      res/values-fr/strings.xml
  32. 34 3
      res/values-gl/strings.xml
  33. 5 1
      res/values-he/strings.xml
  34. 5 1
      res/values-hr/strings.xml
  35. 5 1
      res/values-hu-rHU/strings.xml
  36. 1 1
      res/values-ia/strings.xml
  37. 5 1
      res/values-id/strings.xml
  38. 1 1
      res/values-is/strings.xml
  39. 7 2
      res/values-it/strings.xml
  40. 6 1
      res/values-ja-rJP/strings.xml
  41. 1 1
      res/values-ka-rGE/strings.xml
  42. 1 1
      res/values-km/strings.xml
  43. 5 1
      res/values-ko/strings.xml
  44. 5 1
      res/values-lb/strings.xml
  45. 5 1
      res/values-lt-rLT/strings.xml
  46. 5 1
      res/values-lv/strings.xml
  47. 5 1
      res/values-mk/strings.xml
  48. 4 0
      res/values-ms-rMY/strings.xml
  49. 1 1
      res/values-my/strings.xml
  50. 5 1
      res/values-nb-rNO/strings.xml
  51. 6 1
      res/values-nl/strings.xml
  52. 1 1
      res/values-nn-rNO/strings.xml
  53. 5 1
      res/values-oc/strings.xml
  54. 1 1
      res/values-pa/strings.xml
  55. 5 1
      res/values-pl/strings.xml
  56. 6 1
      res/values-pt-rBR/strings.xml
  57. 5 1
      res/values-pt-rPT/strings.xml
  58. 5 1
      res/values-ro/strings.xml
  59. 5 1
      res/values-ru/strings.xml
  60. 5 1
      res/values-si-rLK/strings.xml
  61. 5 1
      res/values-sk-rSK/strings.xml
  62. 6 1
      res/values-sl/strings.xml
  63. 1 1
      res/values-sq/strings.xml
  64. 1 1
      res/values-sr-rSP/strings.xml
  65. 1 1
      res/values-sr/strings.xml
  66. 5 1
      res/values-sv/strings.xml
  67. 1 1
      res/values-ta-rLK/strings.xml
  68. 5 1
      res/values-th-rTH/strings.xml
  69. 6 1
      res/values-tr/strings.xml
  70. 5 1
      res/values-uk/strings.xml
  71. 1 1
      res/values-ur-rPK/strings.xml
  72. 5 1
      res/values-vi/strings.xml
  73. 5 1
      res/values-zh-rCN/strings.xml
  74. 7 3
      res/values-zh-rTW/strings.xml
  75. 8 1
      res/values/strings.xml
  76. 6 3
      res/xml/preferences.xml
  77. 52 111
      src/com/owncloud/android/datamodel/FileDataStorageManager.java
  78. 1 0
      src/com/owncloud/android/datamodel/OCFile.java
  79. 1 0
      src/com/owncloud/android/files/services/FileDownloader.java
  80. 0 1
      src/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java
  81. 0 2
      src/com/owncloud/android/operations/DownloadFileOperation.java
  82. 12 19
      src/com/owncloud/android/operations/RenameFileOperation.java
  83. 0 1
      src/com/owncloud/android/providers/FileContentProvider.java
  84. 1 1
      src/com/owncloud/android/services/OperationsService.java
  85. 48 0
      src/com/owncloud/android/ui/PreferenceWithLongSummary.java
  86. 3 4
      src/com/owncloud/android/ui/activity/FileDisplayActivity.java
  87. 43 34
      src/com/owncloud/android/ui/activity/FolderPickerActivity.java
  88. 92 37
      src/com/owncloud/android/ui/activity/Preferences.java
  89. 77 0
      src/com/owncloud/android/ui/activity/UploadPathActivity.java
  90. 0 1
      src/com/owncloud/android/ui/adapter/FileListListAdapter.java
  91. 5 6
      src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java
  92. 8 12
      src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java
  93. 21 16
      src/com/owncloud/android/ui/fragment/ExtendedListFragment.java
  94. 60 9
      src/com/owncloud/android/ui/fragment/OCFileListFragment.java
  95. 1 1
      src/com/owncloud/android/ui/preview/PreviewImageFragment.java
  96. 14 1
      src/com/owncloud/android/utils/DisplayUtils.java
  97. 14 0
      src/com/owncloud/android/utils/FileStorageUtils.java

+ 0 - 2
.travis.yml

@@ -7,9 +7,7 @@ android:
     - android-19
 before_install:
   - rm pom.xml
-  - ./setup_env.sh gradle
 script:
-  - ./gradlew clean build
   - ./setup_env.sh ant
   - ant clean
   - ant debug

+ 7 - 3
AndroidManifest.xml

@@ -18,8 +18,8 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->
 <manifest package="com.owncloud.android"
-    android:versionCode="10600100"
-    android:versionName="1.6.1" xmlns:android="http://schemas.android.com/apk/res/android">
+    android:versionCode="10600200"
+    android:versionName="1.6.2" xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
@@ -198,7 +198,11 @@
 			android:icon="@drawable/copy_link"/>
 
         <activity 
-			android:name=".ui.activity.MoveActivity"
+			android:name=".ui.activity.FolderPickerActivity"
+			android:label="@string/app_name"/>
+
+        <activity 
+			android:name=".ui.activity.UploadPathActivity"
 			android:label="@string/app_name"/>
         
     </application>

+ 1 - 1
README.md

@@ -5,4 +5,4 @@ The app performs file synchronization with an ownCloud server. Other ownCloud fe
 Make sure you read [SETUP.md][1] when you start working on this project.
 
 [0]: https://github.com/owncloud/core
-[1]: https://raw.github.com/owncloud/android/master/SETUP.md
+[1]: https://github.com/owncloud/android/blob/master/SETUP.md

+ 2 - 2
oc_jb_workaround/AndroidManifest.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.owncloud.android.workaround.accounts"
-    android:versionCode="0100019"
-    android:versionName="1.0.19" >
+    android:versionCode="0100020"
+    android:versionName="1.0.20" >
 
     <uses-sdk
         android:minSdkVersion="16"

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd
+Subproject commit 0030d82ee8156eb82224eaea810e4bf6010feef1

+ 3 - 3
res/layout/files_move.xml → res/layout/files_folder_picker.xml

@@ -18,18 +18,18 @@
         android:orientation="horizontal" >
 
         <Button
-            android:id="@+id/move_files_btn_cancel"
+            android:id="@+id/folder_picker_btn_cancel"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:text="@string/common_cancel" />
 
 		<Button
-		    android:id="@+id/move_files_btn_choose"
+		    android:id="@+id/folder_picker_btn_choose"
 		    android:layout_width="wrap_content"
 		    android:layout_height="wrap_content"
 		    android:layout_weight="1"
-		    android:text="@string/move_choose_button_text" />
+		    android:text="@string/folder_picker_choose_button_text" />
 
 	</LinearLayout>
 

+ 18 - 0
res/layout/list_footer.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="56dp"
+    android:layout_gravity="center_horizontal"
+    android:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:showDividers="none" >
+
+    <TextView
+        android:id="@+id/footerText"
+        android:layout_width="match_parent"
+        android:layout_height="56dp"
+        android:layout_gravity="center"
+        android:gravity="center"
+        android:textColor="@color/setup_text_hint" />
+
+</LinearLayout> 

+ 7 - 5
res/layout/list_fragment.xml

@@ -25,16 +25,18 @@
     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swipe_refresh_files"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" >
-
+        android:layout_height="match_parent" 
+        android:layout_weight="1"
+        android:footerDividersEnabled="false" > 
+        
         <com.owncloud.android.ui.ExtendedListView
             android:id="@+id/list_root"
             android:layout_width="match_parent"
             android:layout_height="match_parent" />
-        
+            
     </android.support.v4.widget.SwipeRefreshLayout>
-
-    <android.support.v4.widget.SwipeRefreshLayout
+    	
+    	<android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swipe_refresh_files_emptyView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"

+ 1 - 1
res/values-af-rZA/strings.xml

@@ -11,5 +11,5 @@
   <string name="common_cancel">Kanseleer</string>
   <string name="common_error">Fout</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">Kies</string>
+  <string name="folder_picker_choose_button_text">Kies</string>
 </resources>

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

@@ -252,6 +252,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">حسابات</string>
   <string name="saml_authentication_wrong_pass">كلمة مرور خاطئة</string>
-  <string name="move_choose_button_text">اختيار</string>
+  <string name="folder_picker_choose_button_text">اختيار</string>
   <string name="prefs_category_security">الأمان</string>
 </resources>

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

@@ -9,5 +9,5 @@
   <string name="common_ok">Добра</string>
   <string name="common_error">Памылка</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">Выбар</string>
+  <string name="folder_picker_choose_button_text">Выбар</string>
 </resources>

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

@@ -63,6 +63,9 @@
   <string name="file_list_empty">Тук няма нищо. Качете нещо!</string>
   <string name="file_list_loading">Зареждане...</string>
   <string name="local_file_list_empty">Няма файлове в тази папка.</string>
+  <string name="file_list_folder">папка</string>
+  <string name="file_list_folders">папки</string>
+  <string name="file_list_file">файл</string>
   <string name="filedetails_select_file">Натисни върху файл, за да видиш допълнителна информация.</string>
   <string name="filedetails_size">Размер:</string>
   <string name="filedetails_type">Тип:</string>
@@ -284,7 +287,7 @@
   <string name="saml_authentication_wrong_pass">Грешна парола</string>
   <string name="actionbar_move">Премести</string>
   <string name="file_list_empty_moving">Тук няма нищо. Можеш да добавиш папка!</string>
-  <string name="move_choose_button_text">Избери</string>
+  <string name="folder_picker_choose_button_text">Избери</string>
   <string name="move_file_not_found">Неуспешно преместване. Моля, провери дали файла съществува.</string>
   <string name="move_file_invalid_into_descendent">Не е възможно да преместиш папка в нейна под папка.</string>
   <string name="move_file_invalid_overwrite">Файлът вече съществува в отдалечената папка.</string>

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

@@ -265,7 +265,7 @@
   <string name="saml_authentication_wrong_pass">ভুল কুটশব্দ</string>
   <string name="actionbar_move">সরাও</string>
   <string name="file_list_empty_moving">এখানে কিছু নেই। একটি ফোল্ডার যোগ করতে পারেন!</string>
-  <string name="move_choose_button_text">বেছে নিন</string>
+  <string name="folder_picker_choose_button_text">বেছে নিন</string>
   <string name="move_file_not_found">সরাতে ব্যার্থ হলো। ফাইলটি রয়েছে কিনা দেখুন।</string>
   <string name="prefs_category_security">নিরাপত্তা</string>
 </resources>

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

@@ -54,6 +54,10 @@
   <string name="file_list_empty">Res per aquí. Pugeu alguna cosa!</string>
   <string name="file_list_loading">Carregant...</string>
   <string name="local_file_list_empty">No hi ha arxius a aquesta carpeta</string>
+  <string name="file_list_folder">carpeta</string>
+  <string name="file_list_folders">carpetes</string>
+  <string name="file_list_file">fitxer</string>
+  <string name="file_list_files">fitxers</string>
   <string name="filedetails_select_file">Feu clic en un fitxer per mostrar informació addicional.</string>
   <string name="filedetails_size">Mida:</string>
   <string name="filedetails_type">Tipus:</string>
@@ -262,6 +266,6 @@
   <string name="prefs_add_account">Afegeix compte</string>
   <string name="saml_authentication_required_text">Es requereix autenticació</string>
   <string name="saml_authentication_wrong_pass">Contrasenya incorrecta</string>
-  <string name="move_choose_button_text">Escull</string>
+  <string name="folder_picker_choose_button_text">Escull</string>
   <string name="prefs_category_security">Seguretat</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Žádný obsah. Nahrajte něco!</string>
   <string name="file_list_loading">Načítám...</string>
   <string name="local_file_list_empty">V tomto adresáři nejsou žádné soubory.</string>
+  <string name="file_list_folder">adresář</string>
+  <string name="file_list_folders">adresáře</string>
+  <string name="file_list_file">soubor</string>
+  <string name="file_list_files">soubory</string>
   <string name="filedetails_select_file">Více informací získáte klepnutím na soubor.</string>
   <string name="filedetails_size">Velikost:</string>
   <string name="filedetails_type">Typ:</string>
@@ -283,7 +287,7 @@ správce systému.</string>
   <string name="saml_authentication_wrong_pass">Nesprávné heslo</string>
   <string name="actionbar_move">Přesunout</string>
   <string name="file_list_empty_moving">Zde nic není. Můžete přidat adresář!</string>
-  <string name="move_choose_button_text">Vybrat</string>
+  <string name="folder_picker_choose_button_text">Vybrat</string>
   <string name="move_file_not_found">Nelze přesunout. Zkontrolujte prosím že soubor existuje</string>
   <string name="move_file_invalid_into_descendent">Není možné adresář přesunout do vlastního podadresáře</string>
   <string name="move_file_invalid_overwrite">Soubor již v cílovém adresáři existuje</string>
@@ -291,4 +295,5 @@ správce systému.</string>
   <string name="forbidden_permissions_move">pro přesun tohoto souboru</string>
   <string name="prefs_category_instant_uploading">Okamžitá odesílání</string>
   <string name="prefs_category_security">Zabezpečení</string>
+  <string name="prefs_instant_video_upload_path_title">Cesta pro nahrávání videí</string>
 </resources>

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

@@ -144,5 +144,5 @@
   <string name="activity_chooser_send_file_title">Anfon</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Cyfrifon</string>
-  <string name="move_choose_button_text">Dewisiwch</string>
+  <string name="folder_picker_choose_button_text">Dewisiwch</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Her er tomt. Upload noget!</string>
   <string name="file_list_loading">Indlæser...</string>
   <string name="local_file_list_empty">Der er ingen filer i denne mappe.</string>
+  <string name="file_list_folder">mappe</string>
+  <string name="file_list_folders">mapper</string>
+  <string name="file_list_file">fil</string>
+  <string name="file_list_files">filer</string>
   <string name="filedetails_select_file">Tryk på en fil for at vise yderligere information.</string>
   <string name="filedetails_size">Størelse:</string>
   <string name="filedetails_type">Type:</string>
@@ -282,7 +286,7 @@
   <string name="saml_authentication_wrong_pass">Forkert kodeord</string>
   <string name="actionbar_move">Flyt</string>
   <string name="file_list_empty_moving">Der er intet her. Du kan tilføje en mappe!</string>
-  <string name="move_choose_button_text">Vælg</string>
+  <string name="folder_picker_choose_button_text">Vælg</string>
   <string name="move_file_not_found">Kan ikke flytte. Tjek venligst om filen findes</string>
   <string name="move_file_invalid_into_descendent">Det er ikke muligt at flytte en mappe til en undermappe</string>
   <string name="move_file_invalid_overwrite">Filen findes allerede i destinationsmappen</string>
@@ -290,4 +294,5 @@
   <string name="forbidden_permissions_move">til at flytte denne fil</string>
   <string name="prefs_category_instant_uploading">Øjeblikkelige uploads</string>
   <string name="prefs_category_security">Sikkerhed</string>
+  <string name="prefs_instant_video_upload_path_title">Sti til videoupload</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Alles leer. Laden Sie etwas hoch!</string>
   <string name="file_list_loading">Ladevorgang …</string>
   <string name="local_file_list_empty">Es befinden sich keine Dateien in diesem Ordner.</string>
+  <string name="file_list_folder">Ordner</string>
+  <string name="file_list_folders">Ordner</string>
+  <string name="file_list_file">Datei</string>
+  <string name="file_list_files">Dateien</string>
   <string name="filedetails_select_file">Klicken Sie auf eine Datei für weitere Informationen.</string>
   <string name="filedetails_size">Größe:</string>
   <string name="filedetails_type">Art:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Falsches Passwort</string>
   <string name="actionbar_move">Verschieben</string>
   <string name="file_list_empty_moving">Nichts vorhanden. Sie können einen Ordner hinzufügen!</string>
-  <string name="move_choose_button_text">Auswählen</string>
+  <string name="folder_picker_choose_button_text">Auswählen</string>
   <string name="move_file_not_found">Verschieben nicht möglich. Bitte überprüfen Sie, ob die Datei existiert</string>
   <string name="move_file_invalid_into_descendent">Es ist nicht möglich einen Ordner eine Ebene tiefer zu verschieben</string>
   <string name="move_file_invalid_overwrite">Die Datei ist bereits im Zielordner vorhanden</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">um diese Datei zu verschieben</string>
   <string name="prefs_category_instant_uploading">Sofortiges Hochladen</string>
   <string name="prefs_category_security">Sicherheit</string>
+  <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Alles leer. Lade etwas hoch!</string>
   <string name="file_list_loading">Ladevorgang …</string>
   <string name="local_file_list_empty">Es befinden sich keine Dateien in diesem Ordner.</string>
+  <string name="file_list_folder">Ordner</string>
+  <string name="file_list_folders">Ordner</string>
+  <string name="file_list_file">Datei</string>
+  <string name="file_list_files">Dateien</string>
   <string name="filedetails_select_file">Klicken Sie auf eine Datei für weitere Informationen.</string>
   <string name="filedetails_size">Größe:</string>
   <string name="filedetails_type">Art:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Falsches Passwort</string>
   <string name="actionbar_move">Verschieben</string>
   <string name="file_list_empty_moving">Nichts vorhanden. Du kannst einen Ordner hinzufügen!</string>
-  <string name="move_choose_button_text">Auswählen</string>
+  <string name="folder_picker_choose_button_text">Auswählen</string>
   <string name="move_file_not_found">Verschieben nicht möglich. Prüfe, dass die Datei existiert</string>
   <string name="move_file_invalid_into_descendent">Es ist nicht möglich, einen Ordner in einen seiner Unterordner zu verschieben</string>
   <string name="move_file_invalid_overwrite">Die Datei ist bereits im Zielordner vorhanden</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">um diese Datei zu verschieben</string>
   <string name="prefs_category_instant_uploading">Sofortiges Hochladen</string>
   <string name="prefs_category_security">Sicherheit</string>
+  <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
 </resources>

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

@@ -59,6 +59,10 @@
   <string name="file_list_empty">Δεν υπάρχει τίποτα εδώ. Ανεβάστε κάτι!</string>
   <string name="file_list_loading">Φόρτωση ...</string>
   <string name="local_file_list_empty">Δεν υπάρχουν αρχεία σε αυτό τον φάκελο.</string>
+  <string name="file_list_folder">φάκελος</string>
+  <string name="file_list_folders">φάκελοι</string>
+  <string name="file_list_file">αρχείο</string>
+  <string name="file_list_files">αρχεία</string>
   <string name="filedetails_select_file">Αγγίξτε κάποιο αρχείο για να προβάλετε περισσότερες πληροφορίες.</string>
   <string name="filedetails_size">Μέγεθος:</string>
   <string name="filedetails_type">Τύπος:</string>
@@ -280,7 +284,7 @@
   <string name="saml_authentication_wrong_pass">Εσφαλμένο συνθηματικό</string>
   <string name="actionbar_move">Μετακίνηση</string>
   <string name="file_list_empty_moving">Δεν υπάρχει τίποτα εδώ. Μπορείτε να προσθέσετε ένα φάκελο!</string>
-  <string name="move_choose_button_text">Επιλέξτε</string>
+  <string name="folder_picker_choose_button_text">Επιλέξτε</string>
   <string name="move_file_not_found">Αδύνατη η μετακίνηση. Παρακαλώ ελέγξτε αν ο φάκελος υπάρχει</string>
   <string name="move_file_invalid_into_descendent">Δεν είναι δυνατό να μετακινηθεί ο φάκελος σε έναν απογονικό</string>
   <string name="move_file_invalid_overwrite">Το αρχείο υπάρχει ήδη στο φάκελο προορισμού</string>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Nothing in here. Upload something!</string>
   <string name="file_list_loading">Loading...</string>
   <string name="local_file_list_empty">There are no files in this folder.</string>
+  <string name="file_list_folder">folder</string>
+  <string name="file_list_folders">folders</string>
+  <string name="file_list_file">file</string>
+  <string name="file_list_files">files</string>
   <string name="filedetails_select_file">Tap on a file to display additional information.</string>
   <string name="filedetails_size">Size:</string>
   <string name="filedetails_type">Type:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Incorrect password</string>
   <string name="actionbar_move">Move</string>
   <string name="file_list_empty_moving">Nothing in here. You can add a folder!</string>
-  <string name="move_choose_button_text">Choose</string>
+  <string name="folder_picker_choose_button_text">Choose</string>
   <string name="move_file_not_found">Unable to move. Please check whether the file exists</string>
   <string name="move_file_invalid_into_descendent">It is not possible to move a folder into a descendant</string>
   <string name="move_file_invalid_overwrite">The file exists already in the destination folder</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">to move this file</string>
   <string name="prefs_category_instant_uploading">Instant Uploads</string>
   <string name="prefs_category_security">Security</string>
+  <string name="prefs_instant_video_upload_path_title">Upload Video Path</string>
 </resources>

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

@@ -38,6 +38,10 @@
   <string name="uploader_info_uploading">Alŝutante</string>
   <string name="file_list_seconds_ago">sekundoj antaŭe</string>
   <string name="file_list_empty">Nenio estas ĉi tie. Alŝutu ion!</string>
+  <string name="file_list_folder">dosierujo</string>
+  <string name="file_list_folders">dosierujoj</string>
+  <string name="file_list_file">dosiero</string>
+  <string name="file_list_files">dosieroj</string>
   <string name="filedetails_size">Grando:</string>
   <string name="filedetails_type">Tipo:</string>
   <string name="filedetails_created">Kreita je:</string>
@@ -188,6 +192,6 @@
   <string name="prefs_category_accounts">Kontoj</string>
   <string name="saml_authentication_required_text">Aŭtentiĝo nepras</string>
   <string name="saml_authentication_wrong_pass">Malĝusta pasvorto</string>
-  <string name="move_choose_button_text">Elekti</string>
+  <string name="folder_picker_choose_button_text">Elekti</string>
   <string name="prefs_category_security">Sekuro</string>
 </resources>

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

@@ -54,6 +54,10 @@
   <string name="file_list_empty">No hay nada. ¡Subí contenido!</string>
   <string name="file_list_loading">Cargando...</string>
   <string name="local_file_list_empty">No existen archivos en esta carpeta.</string>
+  <string name="file_list_folder">carpeta</string>
+  <string name="file_list_folders">carpetas</string>
+  <string name="file_list_file">archivo</string>
+  <string name="file_list_files">archivos</string>
   <string name="filedetails_select_file">Pulsá sobre un archivo para mostrar información adicional.</string>
   <string name="filedetails_size">Tamaño:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -243,6 +247,6 @@
   <string name="prefs_category_accounts">Cuentas</string>
   <string name="saml_authentication_required_text">Autentificación requerida</string>
   <string name="saml_authentication_wrong_pass">Clave incorrecta</string>
-  <string name="move_choose_button_text">Elegir</string>
+  <string name="folder_picker_choose_button_text">Elegir</string>
   <string name="prefs_category_security">Seguridad</string>
 </resources>

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

@@ -169,5 +169,5 @@
   <string name="error__upload__local_file_not_copied">%1$s no pudo ser copiado a la carpeta local %2$s</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Cuentas</string>
-  <string name="move_choose_button_text">Choose</string>
+  <string name="folder_picker_choose_button_text">Choose</string>
 </resources>

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

@@ -217,6 +217,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Cuentas</string>
   <string name="saml_authentication_wrong_pass">Contraseña incorrecta</string>
-  <string name="move_choose_button_text">Seleccionar</string>
+  <string name="folder_picker_choose_button_text">Seleccionar</string>
   <string name="prefs_category_security">Seguridad</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">No hay nada aquí. ¡Suba algo!</string>
   <string name="file_list_loading">Cargando...</string>
   <string name="local_file_list_empty">No hay archivos en esta carpeta.</string>
+  <string name="file_list_folder">carpeta</string>
+  <string name="file_list_folders">carpetas</string>
+  <string name="file_list_file">archivo</string>
+  <string name="file_list_files">archivos</string>
   <string name="filedetails_select_file">Pulsa sobre un archivo para mostrar información adicional.</string>
   <string name="filedetails_size">Tamaño:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Contraseña incorrecta</string>
   <string name="actionbar_move">Mover</string>
   <string name="file_list_empty_moving">Aquí no hay nada. ¡Puede agregar una carpeta!</string>
-  <string name="move_choose_button_text">Seleccionar</string>
+  <string name="folder_picker_choose_button_text">Seleccionar</string>
   <string name="move_file_not_found">No se puede mover. Revise si el archivo existe</string>
   <string name="move_file_invalid_into_descendent">No se puede mover una carpeta dentro de una de SUS subcarpetas.</string>
   <string name="move_file_invalid_overwrite">El archivo ya existe en la carpeta de destino</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">para mover este archivo</string>
   <string name="prefs_category_instant_uploading">Subidas instantáneas</string>
   <string name="prefs_category_security">Seguridad</string>
+  <string name="prefs_instant_video_upload_path_title">Ruta de vídeo de subida</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Siin pole midagi. Lae midagi üles!</string>
   <string name="file_list_loading">Laen ...</string>
   <string name="local_file_list_empty">Kaustas pole faile.</string>
+  <string name="file_list_folder">kaust</string>
+  <string name="file_list_folders">kausta</string>
+  <string name="file_list_file">fail</string>
+  <string name="file_list_files">faili</string>
   <string name="filedetails_select_file">Lisainfo vaatamiseks vajuta failile.</string>
   <string name="filedetails_size">Suurus:</string>
   <string name="filedetails_type">Tüüp:</string>
@@ -288,7 +292,7 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi
   <string name="saml_authentication_wrong_pass">Vale parool</string>
   <string name="actionbar_move">Tõsta ümber</string>
   <string name="file_list_empty_moving">Siin pole midagi. Sa võid lisada kausta!</string>
-  <string name="move_choose_button_text">Vali</string>
+  <string name="folder_picker_choose_button_text">Vali</string>
   <string name="move_file_not_found">Liigutamine ebaõnnestus. Palun kontrolli, kas fail on olemas</string>
   <string name="move_file_invalid_into_descendent">Kausta ei saa liigutada selle alamkausta</string>
   <string name="move_file_invalid_overwrite">See fail on juba sihtkaustas olemas</string>

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

@@ -59,6 +59,10 @@
   <string name="file_list_empty">Ez dago ezer. Igo zerbait!</string>
   <string name="file_list_loading">Kargatzen...</string>
   <string name="local_file_list_empty">Ez dago fitxategirik karpeta honetan.</string>
+  <string name="file_list_folder">karpeta</string>
+  <string name="file_list_folders">Karpetak</string>
+  <string name="file_list_file">fitxategia</string>
+  <string name="file_list_files">fitxategiak</string>
   <string name="filedetails_select_file">Sakatu fitxategi baten gainean informazio gehiago lortzeko</string>
   <string name="filedetails_size">Tamaina:</string>
   <string name="filedetails_type">Mota:</string>
@@ -272,7 +276,7 @@ Mesedez, baimendu berriz</string>
   <string name="saml_authentication_required_text">Autentikazioa beharrezkoa</string>
   <string name="saml_authentication_wrong_pass">Pasahitz okerra</string>
   <string name="actionbar_move">Mugitu</string>
-  <string name="move_choose_button_text">Aukeratu</string>
+  <string name="folder_picker_choose_button_text">Aukeratu</string>
   <string name="prefs_category_instant_uploading">Berehalako Igoerak</string>
   <string name="prefs_category_security">Segurtasuna</string>
 </resources>

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

@@ -50,6 +50,10 @@
   <string name="file_list_empty">اینجا هیچ چیز نیست.</string>
   <string name="file_list_loading">درحال بارگذاری...</string>
   <string name="local_file_list_empty">هیچ فایلی در این پوشه نیست.</string>
+  <string name="file_list_folder">پوشه</string>
+  <string name="file_list_folders">پوشه ها</string>
+  <string name="file_list_file">پرونده</string>
+  <string name="file_list_files">پرونده ها</string>
   <string name="filedetails_select_file">روی هر فایل کلیک کنید تا اطلاعات اضافی نمایش داده شود.</string>
   <string name="filedetails_size">اندازه</string>
   <string name="filedetails_type">نوع:</string>
@@ -234,6 +238,6 @@
   <string name="prefs_category_accounts">حساب‌ها</string>
   <string name="saml_authentication_required_text">احراز هویت مورد نیاز است</string>
   <string name="saml_authentication_wrong_pass">رمز عبور اشتباه است</string>
-  <string name="move_choose_button_text">انتخاب کردن</string>
+  <string name="folder_picker_choose_button_text">انتخاب کردن</string>
   <string name="prefs_category_security">امنیت</string>
 </resources>

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

@@ -62,6 +62,10 @@
   <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="file_list_folder">kansio</string>
+  <string name="file_list_folders">kansiota</string>
+  <string name="file_list_file">tiedosto</string>
+  <string name="file_list_files">tiedostoa</string>
   <string name="filedetails_select_file">Napauta tiedostoa nähdäksesi lisätietoja.</string>
   <string name="filedetails_size">Koko:</string>
   <string name="filedetails_type">Tyyppi:</string>
@@ -261,7 +265,7 @@
   <string name="saml_authentication_wrong_pass">Väärä salasana</string>
   <string name="actionbar_move">Siirrä</string>
   <string name="file_list_empty_moving">Täällä ei ole mitään. Voit lisätä kansion!</string>
-  <string name="move_choose_button_text">Valitse</string>
+  <string name="folder_picker_choose_button_text">Valitse</string>
   <string name="move_file_not_found">Siirto ei onnistu. Tarkista, ettei tiedostoa ole jo olemassa</string>
   <string name="move_file_invalid_overwrite">Tiedosto on jo olemassa kohdekansiossa</string>
   <string name="move_file_error">Tämän tiedoston tai kansion siirtoa yrittäessä tapahtui virhe</string>

+ 5 - 1
res/values-fr/strings.xml

@@ -64,6 +64,10 @@ 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="file_list_folder">dossier</string>
+  <string name="file_list_folders">dossiers</string>
+  <string name="file_list_file">fichier</string>
+  <string name="file_list_files">fichiers</string>
   <string name="filedetails_select_file">Effleurez un fichier pour afficher les informations complémentaires</string>
   <string name="filedetails_size">Taille :</string>
   <string name="filedetails_type">Type :</string>
@@ -288,7 +292,7 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq
   <string name="saml_authentication_wrong_pass">Mot de passe incorrect</string>
   <string name="actionbar_move">Déplacer</string>
   <string name="file_list_empty_moving">Il n\'y a rien ici. Vous pouvez ajouter un dossier !</string>
-  <string name="move_choose_button_text">Choisir</string>
+  <string name="folder_picker_choose_button_text">Choisir</string>
   <string name="move_file_not_found">Impossible de déplacer. Vérifiez que le fichier existe</string>
   <string name="move_file_invalid_into_descendent">Il n\'est pas possible de déplacer un dossier vers un de ses descendants</string>
   <string name="move_file_invalid_overwrite">Le fichier existe déjà dans le dossier de destination</string>

+ 34 - 3
res/values-gl/strings.xml

@@ -11,14 +11,20 @@
   <string name="actionbar_settings">Preferencias</string>
   <string name="actionbar_see_details">Detalles</string>
   <string name="actionbar_send_file">Enviar</string>
+  <string name="actionbar_sort">Ordenar</string>
+  <string name="actionbar_sort_title">Ordenar por</string>
+  <string-array name="actionbar_sortby">
+    <item>A-Z</item>
+    <item>Máis novo - Máis antigo</item>
+  </string-array>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <string name="prefs_category_general">Xeral</string>
   <string name="prefs_category_more">Máis</string>
   <string name="prefs_accounts">Contas</string>
-  <string name="prefs_manage_accounts">Xestionar as contas</string>
+  <string name="prefs_manage_accounts">Administrar as contas</string>
   <string name="prefs_pincode">PIN da aplicación</string>
-  <string name="prefs_pincode_summary">Protexe o seu cliente</string>
+  <string name="prefs_pincode_summary">Protexa o seu cliente</string>
   <string name="prefs_instant_upload">Envío instantáneo de fotos</string>
   <string name="prefs_instant_upload_summary">Enviar instantaneamente as fotos tiradas coa cámara</string>
   <string name="prefs_instant_video_upload">Envío instantáneo de vídeos</string>
@@ -32,7 +38,11 @@
   <string name="prefs_recommend">Recomendar a un amigo</string>
   <string name="prefs_feedback">Comentarios</string>
   <string name="prefs_imprint">Impresión</string>
+  <string name="prefs_remember_last_share_location">Lembrar a localización da compartición</string>
+  <string name="prefs_remember_last_upload_location_summary">Lembrar a localización do envío da última compartición</string>
   <string name="recommend_subject">Tente %1$s no seu teléfono intelixente!</string>
+  <string name="recommend_text">Quero convidalo a empregar %1$s no seu teléfono intelixente!
+Descárgueo de aquí: %2$s</string>
   <string name="auth_check_server">Comprobar o servidor</string>
   <string name="auth_host_url">Enderezo do servidor https://…</string>
   <string name="auth_username">Nome de usuario</string>
@@ -54,6 +64,10 @@
   <string name="file_list_empty">Aquí non hai nada. Envíe algo!</string>
   <string name="file_list_loading">Cargando...</string>
   <string name="local_file_list_empty">Non hai ficheiros neste cartafol.</string>
+  <string name="file_list_folder">cartafol</string>
+  <string name="file_list_folders">cartafoles</string>
+  <string name="file_list_file">ficheiro</string>
+  <string name="file_list_files">ficheiros</string>
   <string name="filedetails_select_file">Prema nun ficheiro para que amose a información adicional.</string>
   <string name="filedetails_size">Tamaño:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -106,6 +120,7 @@
   <string name="sync_fail_in_favourites_content">Non foi posíbel sincronizar o contido de %1$d ficheiros (%2$d conflitos)</string>
   <string name="sync_foreign_files_forgotten_ticker">Algúns ficheiros locais foron esquecidos</string>
   <string name="sync_foreign_files_forgotten_content">Non é posíbel copiar %1$d ficheiros do cartafol %2$s en</string>
+  <string name="sync_foreign_files_forgotten_explanation">Desde a versión 1.3.16, os ficheiros enviados desde este dispositivo cópianse no cartafol local %1$s para evitar a perda de datos cando se sincroniza un ficheiro con varias contas.\n\nPor mor deste cambio, todos os ficheiros enviados coas versións anteriores desta aplicación cópianse no cartafol %2$s. Porén, un erro impediu a finalización desta operación durante a sincronización da conta. É posíbel deixar o(s) ficheiro(s) como está(n) e retirar a ligazón a %3$s, ou mover o(s) ficheiro(s) ao directorio %1$s e manter a ligazón a %4$s.\n\nA seguir enuméranse o(s) ficheiro(s) local(is), e o(s) ficheiro(s) remoto(s) en %5$s co(s) que estaba(n) ligado(s).</string>
   <string name="sync_current_folder_was_removed">O cartafol %1$s xa non existe</string>
   <string name="foreign_files_move">Mover todo</string>
   <string name="foreign_files_success">Foron movidos todos os ficheiros</string>
@@ -239,9 +254,12 @@
   <string name="preview_image_description">Vista previa da imaxe</string>
   <string name="preview_image_error_unknown_format">Esta imaxe non pode ser amosada</string>
   <string name="error__upload__local_file_not_copied">Non foi posíbel copiar %1$s no cartafol local %2$s</string>
+  <string name="prefs_instant_upload_path_title">Enviar a ruta</string>
   <string name="share_link_no_support_share_api">O seu servidor non ten activada a opción de compartir. Póñase en contacto co
 		administrador.</string>
+  <string name="share_link_file_no_exist">Non foi posíbel compartir. Comprobe que existe o ficheiro</string>
   <string name="share_link_file_error">Produciuse un erro ao tentar compartir este ficheiro ou cartafol.</string>
+  <string name="unshare_link_file_no_exist">Non foi posíbel deixar de compartir. Comprobe que existe o ficheiro</string>
   <string name="unshare_link_file_error">Produciuse un erro ao tentar deixar de compartir este ficheiro ou cartafol</string>
   <string name="activity_chooser_send_file_title">Enviar</string>
   <string name="copy_link">Copiar a ligazón</string>
@@ -262,9 +280,22 @@
   <string name="downloader_download_file_not_found">O ficheiro xa non está dispoñíbel no servidor</string>
   <string name="prefs_category_accounts">Contas</string>
   <string name="prefs_add_account">Engadir unha conta</string>
+  <string name="auth_redirect_non_secure_connection_title">A conexión segura está a ser redirixida a unha ruta non segura.</string>
+  <string name="actionbar_logger">Rexistros</string>
+  <string name="log_send_history_button">Enviar o historial</string>
+  <string name="log_mail_subject">Rexistros da app ownCloud Android</string>
+  <string name="log_progress_dialog_text">Cargando os datos...</string>
   <string name="saml_authentication_required_text">Requírese autenticación</string>
   <string name="saml_authentication_wrong_pass">Contrasinal incorrecto</string>
   <string name="actionbar_move">Mover</string>
-  <string name="move_choose_button_text">Escoller</string>
+  <string name="file_list_empty_moving">Aquí non hai nada. Pode engadir un cartafol!</string>
+  <string name="folder_picker_choose_button_text">Escoller</string>
+  <string name="move_file_not_found">Non é posíbel movelo. Comprobe se existe o ficheiro</string>
+  <string name="move_file_invalid_into_descendent">Non é posíbel mover un cartafol cara un descendente</string>
+  <string name="move_file_invalid_overwrite">Este ficheiro xa existe no cartafol de destino</string>
+  <string name="move_file_error">Produciuse un erro ao tentar mover este ficheiro ou cartafol.</string>
+  <string name="forbidden_permissions_move">para mover este ficheiro</string>
+  <string name="prefs_category_instant_uploading">Envío instantáneo</string>
   <string name="prefs_category_security">Seguranza</string>
+  <string name="prefs_instant_video_upload_path_title">Enviar a ruta do vídeo</string>
 </resources>

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

@@ -54,6 +54,10 @@
   <string name="file_list_empty">אין כאן שום דבר. אולי ברצונך להעלות משהו?</string>
   <string name="file_list_loading">בטעינה...</string>
   <string name="local_file_list_empty">אין קבצים בתיקייה זו:</string>
+  <string name="file_list_folder">תקיה</string>
+  <string name="file_list_folders">תקיות</string>
+  <string name="file_list_file">קובץ</string>
+  <string name="file_list_files">קבצים</string>
   <string name="filedetails_select_file">יש לגעת בקובץ כדי להציג פרטים נוספים.</string>
   <string name="filedetails_size">גודל:</string>
   <string name="filedetails_type">סוג:</string>
@@ -263,6 +267,6 @@
   <string name="downloader_download_file_not_found">הקובץ אינו זמין יותר על השרת</string>
   <string name="prefs_category_accounts">חשבונות</string>
   <string name="prefs_add_account">הוספת חשבון</string>
-  <string name="move_choose_button_text">בחירה</string>
+  <string name="folder_picker_choose_button_text">בחירה</string>
   <string name="prefs_category_security">אבטחה</string>
 </resources>

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

@@ -19,6 +19,10 @@
   <string name="uploader_wrn_no_account_quit_btn_text">Izlaz</string>
   <string name="file_list_seconds_ago">prije par sekundi</string>
   <string name="file_list_empty">Nema ničega u ovoj mapi. Pošalji nešto!</string>
+  <string name="file_list_folder">mapa</string>
+  <string name="file_list_folders">mape</string>
+  <string name="file_list_file">datoteka</string>
+  <string name="file_list_files">datoteke</string>
   <string name="filedetails_download">Preuzimanje</string>
   <string name="action_share_file">Podijelite vezu</string>
   <string name="common_yes">Da</string>
@@ -38,6 +42,6 @@
   <string name="prefs_category_accounts">Korisnićki računi</string>
   <string name="saml_authentication_required_text">Potrebna autentikacija</string>
   <string name="saml_authentication_wrong_pass">Pogrešna lozinka</string>
-  <string name="move_choose_button_text">Izaberi</string>
+  <string name="folder_picker_choose_button_text">Odaberite</string>
   <string name="prefs_category_security">Sigurnost</string>
 </resources>

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

@@ -54,6 +54,10 @@
   <string name="file_list_empty">Itt nincs semmi. Töltsön fel valamit!</string>
   <string name="file_list_loading">Betöltés...</string>
   <string name="local_file_list_empty">Nincs fájl ebben a mappában.</string>
+  <string name="file_list_folder">mappa</string>
+  <string name="file_list_folders">mappák</string>
+  <string name="file_list_file">fájl</string>
+  <string name="file_list_files">fájlok</string>
   <string name="filedetails_select_file">Érintsen meg egy fájlt a további információkért.</string>
   <string name="filedetails_size">Méret:</string>
   <string name="filedetails_type">Tipus:</string>
@@ -244,6 +248,6 @@
   <string name="prefs_category_accounts">Fiókok</string>
   <string name="saml_authentication_required_text">Felhasználóazonosítás szükséges</string>
   <string name="saml_authentication_wrong_pass">Hibás jelszó</string>
-  <string name="move_choose_button_text">Válasszon</string>
+  <string name="folder_picker_choose_button_text">Válasszon</string>
   <string name="prefs_category_security">Biztonság</string>
 </resources>

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

@@ -29,5 +29,5 @@
   <string name="uploader_info_dirname">Nomine de dossier</string>
   <string name="activity_chooser_send_file_title">Invia</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">Seliger</string>
+  <string name="folder_picker_choose_button_text">Seliger</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Tidak ada apa-apa di sini. Unggah sesuatu!</string>
   <string name="file_list_loading">Memuat...</string>
   <string name="local_file_list_empty">Tidak ada satupun berkas dalam folder ini.</string>
+  <string name="file_list_folder">folder</string>
+  <string name="file_list_folders">folder-folder</string>
+  <string name="file_list_file">berkas</string>
+  <string name="file_list_files">berkas-berkas</string>
   <string name="filedetails_select_file">Sentuh pada berkas untuk menampilkan informasi tambahan</string>
   <string name="filedetails_size">Ukuran:</string>
   <string name="filedetails_type">Tipe:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Sandi salah</string>
   <string name="actionbar_move">Pindah</string>
   <string name="file_list_empty_moving">Tdak ada apapun disini. Anda dapat menambahkan sebuah folder!</string>
-  <string name="move_choose_button_text">Pilih</string>
+  <string name="folder_picker_choose_button_text">Pilih</string>
   <string name="move_file_not_found">Tidak dapat memindahkan. Silakan periksa apakah berkas ada</string>
   <string name="move_file_invalid_into_descendent">Tidak mungkin untuk memindahkan folder kedalam turunannya</string>
   <string name="move_file_invalid_overwrite">Berkas sudah ada didalam folder tujuan</string>

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

@@ -27,5 +27,5 @@
   <string name="common_remove">Fjarlægja</string>
   <string name="activity_chooser_send_file_title">Senda</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">Veldu</string>
+  <string name="folder_picker_choose_button_text">Veldu</string>
 </resources>

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

@@ -35,7 +35,7 @@
   <string name="prefs_log_summary_history">Mostra i log registrati</string>
   <string name="prefs_log_delete_history_button">Elimina la cronologia</string>
   <string name="prefs_help">Aiuto</string>
-  <string name="prefs_recommend">Consiglia ad un amico</string>
+  <string name="prefs_recommend">Consiglia a un amico</string>
   <string name="prefs_feedback">Segnalazioni</string>
   <string name="prefs_imprint">Imprint</string>
   <string name="prefs_remember_last_share_location">Ricorda la posizione della condivisione</string>
@@ -63,6 +63,10 @@
   <string name="file_list_empty">Non c\'è niente qui. Carica qualcosa!</string>
   <string name="file_list_loading">Caricamento in corso...</string>
   <string name="local_file_list_empty">Non ci sono file in questa cartella.</string>
+  <string name="file_list_folder">cartella</string>
+  <string name="file_list_folders">cartelle</string>
+  <string name="file_list_file">file</string>
+  <string name="file_list_files">file</string>
   <string name="filedetails_select_file">Tocca un file per visualizzare informazioni aggiuntive.</string>
   <string name="filedetails_size">Dimensione:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Password errata</string>
   <string name="actionbar_move">Sposta</string>
   <string name="file_list_empty_moving">Qui non c\'è niente. Puoi aggiungere una cartella.</string>
-  <string name="move_choose_button_text">Scegli</string>
+  <string name="folder_picker_choose_button_text">Scegli</string>
   <string name="move_file_not_found">Impossibile spostare. Assicurati che il file esista</string>
   <string name="move_file_invalid_into_descendent">Impossibile spostare una cartella in una cartella inferiore</string>
   <string name="move_file_invalid_overwrite">Il file esiste già nella cartella di destinazione</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">per spostare questo file</string>
   <string name="prefs_category_instant_uploading">Caricamenti istantanei</string>
   <string name="prefs_category_security">Protezione</string>
+  <string name="prefs_instant_video_upload_path_title">Percorso di caricamento video</string>
 </resources>

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

@@ -64,6 +64,10 @@
   <string name="file_list_empty">ここには何もありません。何かアップロードしてください。</string>
   <string name="file_list_loading">読込中 ...</string>
   <string name="local_file_list_empty">このフォルダーにはファイルがありません。</string>
+  <string name="file_list_folder">フォルダ</string>
+  <string name="file_list_folders">フォルダ</string>
+  <string name="file_list_file">ファイル</string>
+  <string name="file_list_files">ファイル</string>
   <string name="filedetails_select_file">ファイルをタップすると追加情報が表示されます。</string>
   <string name="filedetails_size">サイズ:</string>
   <string name="filedetails_type">タイプ:</string>
@@ -285,7 +289,7 @@
   <string name="saml_authentication_wrong_pass">無効なパスワード</string>
   <string name="actionbar_move">移動</string>
   <string name="file_list_empty_moving">ファイルが有りません。フォルダを追加してください。</string>
-  <string name="move_choose_button_text">選択</string>
+  <string name="folder_picker_choose_button_text">選択</string>
   <string name="move_file_not_found">移動できません。ファイルがあるか確認してください。</string>
   <string name="move_file_invalid_into_descendent">フォルダを子フォルダへ移動することはできません。</string>
   <string name="move_file_invalid_overwrite">そのファイルは、宛先フォルダに既に存在しています。</string>
@@ -293,4 +297,5 @@
   <string name="forbidden_permissions_move">このファイルを移動</string>
   <string name="prefs_category_instant_uploading">自動アップロード</string>
   <string name="prefs_category_security">セキュリティ</string>
+  <string name="prefs_instant_video_upload_path_title">動画のアップロードパス</string>
 </resources>

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

@@ -151,6 +151,6 @@
   <string name="clipboard_text_copied">კოპირებულია კლიპბორდში</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">ანგარიში</string>
-  <string name="move_choose_button_text">არჩევა</string>
+  <string name="folder_picker_choose_button_text">არჩევა</string>
   <string name="prefs_category_security">უსაფრთხოება</string>
 </resources>

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

@@ -85,6 +85,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">គណនី</string>
   <string name="saml_authentication_wrong_pass">ខុស​ពាក្យ​សម្ងាត់</string>
-  <string name="move_choose_button_text">ជ្រើស</string>
+  <string name="folder_picker_choose_button_text">ជ្រើស</string>
   <string name="prefs_category_security">សុវត្ថិភាព</string>
 </resources>

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

@@ -47,6 +47,10 @@
   <string name="uploader_info_uploading">업로드 중</string>
   <string name="file_list_seconds_ago">초 전</string>
   <string name="file_list_empty">내용이 없습니다. 업로드할 수 있습니다!</string>
+  <string name="file_list_folder">폴더</string>
+  <string name="file_list_folders">폴더</string>
+  <string name="file_list_file">파일</string>
+  <string name="file_list_files">파일</string>
   <string name="filedetails_select_file">파일을 누르면 추가 정보가 표시됩니다.</string>
   <string name="filedetails_size">크기:</string>
   <string name="filedetails_type">종류:</string>
@@ -219,6 +223,6 @@
   <string name="prefs_category_accounts">계정</string>
   <string name="saml_authentication_required_text">인증 필요함</string>
   <string name="saml_authentication_wrong_pass">잘못된 암호</string>
-  <string name="move_choose_button_text">선택</string>
+  <string name="folder_picker_choose_button_text">선택</string>
   <string name="prefs_category_security">보안</string>
 </resources>

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

@@ -26,6 +26,10 @@
   <string name="uploader_info_uploading">Eroplueden</string>
   <string name="file_list_seconds_ago">Sekonnen hir</string>
   <string name="file_list_empty">Hei ass näischt. Lued eppes rop!</string>
+  <string name="file_list_folder">Dossier</string>
+  <string name="file_list_folders">Dossieren</string>
+  <string name="file_list_file">Datei</string>
+  <string name="file_list_files">Dateien</string>
   <string name="filedetails_size">Gréisst:</string>
   <string name="filedetails_type">Typ:</string>
   <string name="filedetails_created">Erstallt:</string>
@@ -87,5 +91,5 @@
   <string name="activity_chooser_send_file_title">Schécken</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Accounten</string>
-  <string name="move_choose_button_text">Auswielen</string>
+  <string name="folder_picker_choose_button_text">Auswielen</string>
 </resources>

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

@@ -54,6 +54,10 @@
   <string name="file_list_empty">Čia tuščia. Įkelkite ką nors!</string>
   <string name="file_list_loading">Įkeliama ...</string>
   <string name="local_file_list_empty">Šiame aplanke nėra failų.</string>
+  <string name="file_list_folder">katalogas</string>
+  <string name="file_list_folders">katalogai</string>
+  <string name="file_list_file">failas</string>
+  <string name="file_list_files">failai</string>
   <string name="filedetails_select_file">Palieskite failą, kad parodyti papildomą informaciją.</string>
   <string name="filedetails_size">Dydis:</string>
   <string name="filedetails_type">Tipas:</string>
@@ -236,6 +240,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Paskyros</string>
   <string name="saml_authentication_wrong_pass">Neteisingas slaptažodis</string>
-  <string name="move_choose_button_text">Pasirinkite</string>
+  <string name="folder_picker_choose_button_text">Pasirinkite</string>
   <string name="prefs_category_security">Saugumas</string>
 </resources>

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

@@ -30,6 +30,10 @@
   <string name="uploader_info_uploading">Augšupielādē</string>
   <string name="file_list_seconds_ago">sekundes atpakaļ</string>
   <string name="file_list_empty">Te vēl nekas nav. Rīkojies, sāc augšupielādēt!</string>
+  <string name="file_list_folder">mape</string>
+  <string name="file_list_folders">mapes</string>
+  <string name="file_list_file">fails</string>
+  <string name="file_list_files">faili</string>
   <string name="filedetails_select_file">Uzsitiet uz datnes, lai redzētu papildinformāciju.</string>
   <string name="filedetails_size">Izmērs:</string>
   <string name="filedetails_type">Tips:</string>
@@ -145,6 +149,6 @@
   <string name="activity_chooser_send_file_title">Sūtīt</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Konti</string>
-  <string name="move_choose_button_text">Izvēlieties</string>
+  <string name="folder_picker_choose_button_text">Izvēlieties</string>
   <string name="prefs_category_security">Drošība</string>
 </resources>

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

@@ -30,6 +30,10 @@
   <string name="uploader_wrn_no_account_quit_btn_text">Прекини</string>
   <string name="file_list_seconds_ago">пред секунди</string>
   <string name="file_list_empty">Тука нема ништо. Снимете нешто!</string>
+  <string name="file_list_folder">фолдер</string>
+  <string name="file_list_folders">фолдери</string>
+  <string name="file_list_file">датотека</string>
+  <string name="file_list_files">датотеки</string>
   <string name="filedetails_size">Големина:</string>
   <string name="filedetails_type">Тип:</string>
   <string name="filedetails_created">Создадено:</string>
@@ -124,6 +128,6 @@
   <string name="prefs_category_accounts">Сметки</string>
   <string name="saml_authentication_required_text">Потребна е автентификација</string>
   <string name="saml_authentication_wrong_pass">Погрешна лозинка</string>
-  <string name="move_choose_button_text">Избери</string>
+  <string name="folder_picker_choose_button_text">Избери</string>
   <string name="prefs_category_security">Безбедност</string>
 </resources>

+ 4 - 0
res/values-ms-rMY/strings.xml

@@ -20,6 +20,10 @@
   <string name="uploader_wrn_no_account_quit_btn_text">Berhenti</string>
   <string name="uploader_info_uploading">Memuatnaik</string>
   <string name="file_list_empty">Tiada apa-apa di sini. Muat naik sesuatu!</string>
+  <string name="file_list_folder">direktori</string>
+  <string name="file_list_folders">direktori</string>
+  <string name="file_list_file">fail</string>
+  <string name="file_list_files">fail</string>
   <string name="filedetails_size">Saiz</string>
   <string name="filedetails_type">Jenis</string>
   <string name="filedetails_created">Telah dibina:</string>

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

@@ -14,5 +14,5 @@
   <string name="common_ok">အိုကေ</string>
   <string name="common_cancel">ပယ်ဖျက်မည်</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">ရွေးချယ်</string>
+  <string name="folder_picker_choose_button_text">ရွေးချယ်</string>
 </resources>

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

@@ -55,6 +55,10 @@
   <string name="file_list_empty">Ingenting her. Last opp noe!</string>
   <string name="file_list_loading">Laster...</string>
   <string name="local_file_list_empty">Det er ingen filer i denne mappen.</string>
+  <string name="file_list_folder">mappe</string>
+  <string name="file_list_folders">mapper</string>
+  <string name="file_list_file">fil</string>
+  <string name="file_list_files">filer</string>
   <string name="filedetails_select_file">Trykk på en fil for å vise ekstra informasjon.</string>
   <string name="filedetails_size">Størrelse:</string>
   <string name="filedetails_type">Type:</string>
@@ -274,7 +278,7 @@
   <string name="saml_authentication_wrong_pass">Feil passord</string>
   <string name="actionbar_move">Flytt</string>
   <string name="file_list_empty_moving">Ingenting her. Du kan legge til en mappe!</string>
-  <string name="move_choose_button_text">Velg</string>
+  <string name="folder_picker_choose_button_text">Velg</string>
   <string name="move_file_not_found">Kan ikke flytte. Sjekk om filen eksisterer.</string>
   <string name="move_file_invalid_into_descendent">Det er ikke mulig å flytte en mappe inn i sin egen undermappe</string>
   <string name="move_file_invalid_overwrite">Filen finnes allerede i målmappen</string>

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

@@ -64,6 +64,10 @@ Download hier: %2$s</string>
   <string name="file_list_empty">Er bevindt zich hier niets. Upload een bestand!</string>
   <string name="file_list_loading">Laden ...</string>
   <string name="local_file_list_empty">Er staan geen bestanden in deze map.</string>
+  <string name="file_list_folder">map</string>
+  <string name="file_list_folders">mappen</string>
+  <string name="file_list_file">bestand</string>
+  <string name="file_list_files">bestanden</string>
   <string name="filedetails_select_file">Druk op een bestand om extra informatie weer te geven</string>
   <string name="filedetails_size">Grootte:</string>
   <string name="filedetails_type">Type:</string>
@@ -287,7 +291,7 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
   <string name="saml_authentication_wrong_pass">Onjuist wachtwoord</string>
   <string name="actionbar_move">verplaatsen</string>
   <string name="file_list_empty_moving">Niets hier. U kunt een map toevoegen!</string>
-  <string name="move_choose_button_text">Kies</string>
+  <string name="folder_picker_choose_button_text">Kies</string>
   <string name="move_file_not_found">Kan niet verplaatsen. Ga na of het bestand wel bestaat</string>
   <string name="move_file_invalid_into_descendent">De map kan niet naar een onderliggende map worden verplaatst</string>
   <string name="move_file_invalid_overwrite">Het bestand bestaat al in de doelmap</string>
@@ -295,4 +299,5 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
   <string name="forbidden_permissions_move">om dit bestand te verplaatsen</string>
   <string name="prefs_category_instant_uploading">Directe uploads</string>
   <string name="prefs_category_security">Beveiliging</string>
+  <string name="prefs_instant_video_upload_path_title">Upload Video Pad</string>
 </resources>

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

@@ -131,6 +131,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Kontoar</string>
   <string name="saml_authentication_wrong_pass">Feil passord</string>
-  <string name="move_choose_button_text">Vel</string>
+  <string name="folder_picker_choose_button_text">Vel</string>
   <string name="prefs_category_security">Tryggleik</string>
 </resources>

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

@@ -21,6 +21,10 @@
   <string name="uploader_info_uploading">Al amontcargar</string>
   <string name="file_list_seconds_ago">segonda a</string>
   <string name="file_list_empty">Pas res dedins. Amontcarga qualquaren</string>
+  <string name="file_list_folder">Dorsièr</string>
+  <string name="file_list_folders">Dorsièrs</string>
+  <string name="file_list_file">fichièr</string>
+  <string name="file_list_files">fichièrs</string>
   <string name="filedetails_size">Talha :</string>
   <string name="filedetails_type">Tipe :</string>
   <string name="filedetails_created">Creat :</string>
@@ -44,5 +48,5 @@
   <string name="common_rename">Torna nomenar</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Comptes</string>
-  <string name="move_choose_button_text">Causís</string>
+  <string name="folder_picker_choose_button_text">Causís</string>
 </resources>

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

@@ -122,5 +122,5 @@
   <string name="activity_chooser_send_file_title">ਭੇਜੋ</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">ਅਕਾਊਂਟ</string>
-  <string name="move_choose_button_text">ਚੁਣੋ</string>
+  <string name="folder_picker_choose_button_text">ਚੁਣੋ</string>
 </resources>

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

@@ -61,6 +61,10 @@
   <string name="file_list_empty">Pusto. Wyślij coś!</string>
   <string name="file_list_loading">Ładowanie...</string>
   <string name="local_file_list_empty">Nie ma plików w tym folderze.</string>
+  <string name="file_list_folder">folder</string>
+  <string name="file_list_folders">foldery</string>
+  <string name="file_list_file">plik</string>
+  <string name="file_list_files">pliki</string>
   <string name="filedetails_select_file">Dotknij plik aby wyświetlić dodatkowe informacje</string>
   <string name="filedetails_size">Rozmiar:</string>
   <string name="filedetails_type">Typ:</string>
@@ -282,7 +286,7 @@
   <string name="saml_authentication_wrong_pass">Złe hasło</string>
   <string name="actionbar_move">Przenieś</string>
   <string name="file_list_empty_moving">Nic tu nie ma. Możesz dodać folder!</string>
-  <string name="move_choose_button_text">Wybierz</string>
+  <string name="folder_picker_choose_button_text">Wybierz</string>
   <string name="move_file_not_found">Nie można przenieść. Proszę sprawdzić, czy plik istnieje</string>
   <string name="move_file_invalid_into_descendent">Nie jest możliwe przeniesienie folderu do potomka</string>
   <string name="move_file_invalid_overwrite">Plik istnieje już w folderze docelowym</string>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Nada aqui. Envie alguma coisa!</string>
   <string name="file_list_loading">Carregando...</string>
   <string name="local_file_list_empty">Não existe nenhum arquivo nesta pasta.</string>
+  <string name="file_list_folder">pasta</string>
+  <string name="file_list_folders">pastas</string>
+  <string name="file_list_file">arquivo</string>
+  <string name="file_list_files">arquivos</string>
   <string name="filedetails_select_file">Toque em um arquivo para mostrar informações adicionais.</string>
   <string name="filedetails_size">Tamanho:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Senha incorreta</string>
   <string name="actionbar_move">Mover</string>
   <string name="file_list_empty_moving">Nada aqui. Você pode adicionar uma pasta!</string>
-  <string name="move_choose_button_text">Escolher</string>
+  <string name="folder_picker_choose_button_text">Escolher</string>
   <string name="move_file_not_found">Não é possível mover. Por favor verifique se o arquivo existe</string>
   <string name="move_file_invalid_into_descendent">Não é possível mover a pasta para uma descendente</string>
   <string name="move_file_invalid_overwrite">O arquivo já existe na pasta de destino</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">mover este arquivo</string>
   <string name="prefs_category_instant_uploading">Envios Instantâneos</string>
   <string name="prefs_category_security">Segurança</string>
+  <string name="prefs_instant_video_upload_path_title">Enviar o Caminho do Vídeo</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Vazio. Envie alguma coisa!</string>
   <string name="file_list_loading">A carregar ...</string>
   <string name="local_file_list_empty">Não existem ficheiros nesta pasta.</string>
+  <string name="file_list_folder">pasta</string>
+  <string name="file_list_folders">pastas</string>
+  <string name="file_list_file">ficheiro</string>
+  <string name="file_list_files">ficheiros</string>
   <string name="filedetails_select_file">Clique no ficheiro para visualizar informação adicional.</string>
   <string name="filedetails_size">Tamanho:</string>
   <string name="filedetails_type">Tipo:</string>
@@ -282,7 +286,7 @@
   <string name="saml_authentication_wrong_pass">Palavra-passe errada</string>
   <string name="actionbar_move">Mover</string>
   <string name="file_list_empty_moving">Não está aqui nada. Pode adicionar uma pasta!</string>
-  <string name="move_choose_button_text">Escolher</string>
+  <string name="folder_picker_choose_button_text">Escolher</string>
   <string name="move_file_not_found">Não é possível mover. Por favor, verifique se o ficheiro existe</string>
   <string name="move_file_invalid_into_descendent">Não é possível mover esta pasta deste modo</string>
   <string name="move_file_invalid_overwrite">O ficheiro já existe na pasta de destino</string>

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

@@ -56,6 +56,10 @@
   <string name="file_list_empty">Nimic aici. Încarcă ceva!</string>
   <string name="file_list_loading">Se incarca</string>
   <string name="local_file_list_empty">In acest folder nu sunt fisiere.</string>
+  <string name="file_list_folder">director</string>
+  <string name="file_list_folders">directoare</string>
+  <string name="file_list_file">fișier</string>
+  <string name="file_list_files">fișiere</string>
   <string name="filedetails_select_file">Selectati un fisier pentru a afisa informatia aditionala</string>
   <string name="filedetails_size">Mărime:</string>
   <string name="filedetails_type">Tip:</string>
@@ -268,7 +272,7 @@
   <string name="saml_authentication_wrong_pass">Parolă greșită</string>
   <string name="actionbar_move">Mutare</string>
   <string name="file_list_empty_moving">Nu este nimic aici. Poți adăuga un director!</string>
-  <string name="move_choose_button_text">Alege</string>
+  <string name="folder_picker_choose_button_text">Alege</string>
   <string name="forbidden_permissions_move">pentru a muta acest fișier</string>
   <string name="prefs_category_security">Securitate</string>
 </resources>

+ 5 - 1
res/values-ru/strings.xml

@@ -62,6 +62,10 @@
   <string name="file_list_empty">Здесь ничего нет. Загрузите что-нибудь!</string>
   <string name="file_list_loading">Загрузка...</string>
   <string name="local_file_list_empty">В данной папке нет файлов.</string>
+  <string name="file_list_folder">папка</string>
+  <string name="file_list_folders">папки</string>
+  <string name="file_list_file">файл</string>
+  <string name="file_list_files">файлы</string>
   <string name="filedetails_select_file">Нажмите на файл для отображения дополнительной информации.</string>
   <string name="filedetails_size">Размер:</string>
   <string name="filedetails_type">Тип:</string>
@@ -282,7 +286,7 @@
   <string name="saml_authentication_wrong_pass">Неправильный пароль</string>
   <string name="actionbar_move">Переместить</string>
   <string name="file_list_empty_moving">Здесь ничего нет. Вы можете добавить папку!</string>
-  <string name="move_choose_button_text">Выбрать</string>
+  <string name="folder_picker_choose_button_text">Выбрать</string>
   <string name="move_file_not_found">Невозможно переместить. Пожалуйста, проверьте, существует ли файл</string>
   <string name="move_file_invalid_into_descendent">Невозможно переместить папку в папку-потомок</string>
   <string name="move_file_invalid_overwrite">Файл уже существует в папке назначения</string>

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

@@ -23,6 +23,10 @@
   <string name="uploader_info_uploading">උඩුගතවේ</string>
   <string name="file_list_seconds_ago">තත්පරයන්ට පෙර</string>
   <string name="file_list_empty">මෙහි කිසිවක් නොමැත. යමක් උඩුගත කරන්න</string>
+  <string name="file_list_folder">ෆෝල්ඩරය</string>
+  <string name="file_list_folders">ෆෝල්ඩර</string>
+  <string name="file_list_file">ගොනුව</string>
+  <string name="file_list_files">ගොනු</string>
   <string name="filedetails_select_file">වැඩි විස්තර සඳහා ගොනුවක් ස්පර්ෂ කරන්න</string>
   <string name="filedetails_size">විශාලත්වය:</string>
   <string name="filedetails_type">ගණය:</string>
@@ -76,5 +80,5 @@
   <string name="ssl_validator_btn_details_hide">සඟවන්න</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">ගිණුම්</string>
-  <string name="move_choose_button_text">තෝරන්න</string>
+  <string name="folder_picker_choose_button_text">තෝරන්න</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Žiadny súbor. Nahrajte niečo!</string>
   <string name="file_list_loading">Nahráva sa...</string>
   <string name="local_file_list_empty">V tomto priečinku nie sú žiadne súbory.</string>
+  <string name="file_list_folder">priečinok</string>
+  <string name="file_list_folders">priečinky</string>
+  <string name="file_list_file">súbor</string>
+  <string name="file_list_files">súbory</string>
   <string name="filedetails_select_file">Viac informácií získate kliknutím na súbor.</string>
   <string name="filedetails_size">Veľkosť:</string>
   <string name="filedetails_type">Typ:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Nesprávne heslo</string>
   <string name="actionbar_move">Presunúť</string>
   <string name="file_list_empty_moving">Nič tu nie je. Pridajte priečinok!</string>
-  <string name="move_choose_button_text">Vybrať</string>
+  <string name="folder_picker_choose_button_text">Vybrať</string>
   <string name="move_file_not_found">Nemožno presunúť. Skontrolujte, či súbor existuje</string>
   <string name="move_file_invalid_into_descendent">Priečinok nemožno presunúť do vlastného podpriečinka</string>
   <string name="move_file_invalid_overwrite">Súbor už v cieľovom priečinku existuje</string>

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

@@ -63,6 +63,10 @@
   <string name="file_list_empty">Tukaj še ni ničesar. Najprej je treba datoteke poslati v oblak!</string>
   <string name="file_list_loading">Poteka nalaganje ...</string>
   <string name="local_file_list_empty">V tej mapi ni datotek.</string>
+  <string name="file_list_folder">mapa</string>
+  <string name="file_list_folders">mape</string>
+  <string name="file_list_file">datoteka</string>
+  <string name="file_list_files">datoteke</string>
   <string name="filedetails_select_file">Pritisnite na datoteko za prikaz dodatnih podrobnosti.</string>
   <string name="filedetails_size">Velikost:</string>
   <string name="filedetails_type">Vrsta:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Napačno geslo</string>
   <string name="actionbar_move">Premakni</string>
   <string name="file_list_empty_moving">Ni vsebine in datotek. Lahko ustvarite na primer mapo.</string>
-  <string name="move_choose_button_text">Izbor</string>
+  <string name="folder_picker_choose_button_text">Izbor</string>
   <string name="move_file_not_found">Ni mogoče premakniti datoteke. Preverite, ali obstaja.</string>
   <string name="move_file_invalid_into_descendent">Ni mogoče premakniti mape v podrejeno mapo.</string>
   <string name="move_file_invalid_overwrite">Datoteka v ciljni mapi že obstaja.</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">med premikanjem datoteke</string>
   <string name="prefs_category_instant_uploading">Takojšnje pošiljanje v oblak</string>
   <string name="prefs_category_security">Varnost</string>
+  <string name="prefs_instant_video_upload_path_title">Pot videa za pošiljanje</string>
 </resources>

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

@@ -75,6 +75,6 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Llogarit</string>
   <string name="saml_authentication_wrong_pass">Fjalëkalim i gabuar</string>
-  <string name="move_choose_button_text">Zgjidh</string>
+  <string name="folder_picker_choose_button_text">Zgjidh</string>
   <string name="prefs_category_security">Siguria</string>
 </resources>

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

@@ -57,5 +57,5 @@
   <string name="activity_chooser_send_file_title">Pošalji</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Nalozi</string>
-  <string name="move_choose_button_text">Izaberi</string>
+  <string name="folder_picker_choose_button_text">Izaberi</string>
 </resources>

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

@@ -111,6 +111,6 @@
   <string name="activity_chooser_send_file_title">Пошаљи</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Налози</string>
-  <string name="move_choose_button_text">Одабери</string>
+  <string name="folder_picker_choose_button_text">Одабери</string>
   <string name="prefs_category_security">Безбедност</string>
 </resources>

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

@@ -55,6 +55,10 @@
   <string name="file_list_empty">Ingenting här. Ladda upp något!</string>
   <string name="file_list_loading">Laddar...</string>
   <string name="local_file_list_empty">Det finns inga filer i den här mappen.</string>
+  <string name="file_list_folder">mapp</string>
+  <string name="file_list_folders">mappar</string>
+  <string name="file_list_file">fil</string>
+  <string name="file_list_files">filer</string>
   <string name="filedetails_select_file">Peka på en fil för att visa mer information.</string>
   <string name="filedetails_size">Storlek:</string>
   <string name="filedetails_type">Typ:</string>
@@ -268,7 +272,7 @@
   <string name="saml_authentication_wrong_pass">Fel lösenord</string>
   <string name="actionbar_move">Flytta</string>
   <string name="file_list_empty_moving">Ingenting här. Du kan skapa en mapp!</string>
-  <string name="move_choose_button_text">Välj</string>
+  <string name="folder_picker_choose_button_text">Välj</string>
   <string name="move_file_not_found">Gick inte att flytta. Vänligen kontrollera att filen existerar</string>
   <string name="forbidden_permissions_move">att flytta den här filen</string>
   <string name="prefs_category_security">Säkerhet</string>

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

@@ -139,5 +139,5 @@
   <string name="conflict_dont_upload">பதிவேற்ற வேண்டாம்</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">கணக்குகள்</string>
-  <string name="move_choose_button_text">தெரிவுசெய்க </string>
+  <string name="folder_picker_choose_button_text">தெரிவுசெய்க </string>
 </resources>

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

@@ -31,6 +31,10 @@
   <string name="uploader_info_uploading">กำลังอัพโหลด</string>
   <string name="file_list_seconds_ago">วินาที ก่อนหน้านี้</string>
   <string name="file_list_empty">ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์!</string>
+  <string name="file_list_folder">โฟลเดอร์</string>
+  <string name="file_list_folders">โฟลเดอร์</string>
+  <string name="file_list_file">ไฟล์</string>
+  <string name="file_list_files">ไฟล์</string>
   <string name="filedetails_select_file">แตะที่ไฟล์ เพื่อแสดงข้อมูลเพิ่มเติม</string>
   <string name="filedetails_size">ขนาด:</string>
   <string name="filedetails_type">ชนิด:</string>
@@ -152,5 +156,5 @@
   <string name="activity_chooser_send_file_title">ส่ง</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">บัญชี</string>
-  <string name="move_choose_button_text">เลือก</string>
+  <string name="folder_picker_choose_button_text">เลือก</string>
 </resources>

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

@@ -63,6 +63,10 @@
   <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="file_list_folder">klasör</string>
+  <string name="file_list_folders">klasörler</string>
+  <string name="file_list_file">dosya</string>
+  <string name="file_list_files">dosyalar</string>
   <string name="filedetails_select_file">Ek bilgileri görmek için dosyaya dokunun.</string>
   <string name="filedetails_size">Boyut:</string>
   <string name="filedetails_type">Tür:</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">Hatalı parola</string>
   <string name="actionbar_move">Taşı</string>
   <string name="file_list_empty_moving">Burada bir şey yok. Bir klasör ekleyebilirsiniz!</string>
-  <string name="move_choose_button_text">Seç</string>
+  <string name="folder_picker_choose_button_text">Seç</string>
   <string name="move_file_not_found">Taşıma başarısız. Lütfen dosyanın mevcut olup olmadığını denetleyin</string>
   <string name="move_file_invalid_into_descendent">Klasörü, kendi alt klasörüne taşımak mümkün değil</string>
   <string name="move_file_invalid_overwrite">Dosya zaten hedef klasörde mevcut</string>
@@ -292,4 +296,5 @@
   <string name="forbidden_permissions_move">bu dosyayı taşımak için</string>
   <string name="prefs_category_instant_uploading">Anında Yüklemeler</string>
   <string name="prefs_category_security">Güvenlik</string>
+  <string name="prefs_instant_video_upload_path_title">Video Yükleme Yolu</string>
 </resources>

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

@@ -61,6 +61,10 @@
   <string name="file_list_empty">Тут нічого немає. Відвантажте що-небудь!</string>
   <string name="file_list_loading">Завантаження...</string>
   <string name="local_file_list_empty">В цій теці немає файлів.</string>
+  <string name="file_list_folder">тека</string>
+  <string name="file_list_folders">теки</string>
+  <string name="file_list_file">файл</string>
+  <string name="file_list_files">файли</string>
   <string name="filedetails_select_file">Натисніть на файлі для відображення додаткової інформації</string>
   <string name="filedetails_size">Розмір:</string>
   <string name="filedetails_type">Тип:</string>
@@ -281,7 +285,7 @@
   <string name="saml_authentication_wrong_pass">Невірний пароль</string>
   <string name="actionbar_move">Перемістити</string>
   <string name="file_list_empty_moving">Тут нічого немає. Ви можете додати теку!</string>
-  <string name="move_choose_button_text">Обрати</string>
+  <string name="folder_picker_choose_button_text">Обрати</string>
   <string name="move_file_not_found">Неможливо перемістити. Будь ласка, перевірте, чи існує файл</string>
   <string name="move_file_invalid_into_descendent">Неможливо перемістити теку до теки-нащадка</string>
   <string name="move_file_invalid_overwrite">Файл вже існує в теці призначення</string>

+ 1 - 1
res/values-ur-rPK/strings.xml

@@ -20,5 +20,5 @@
   <string name="common_error_unknown">غیر معروف خرابی</string>
   <string name="activity_chooser_send_file_title">بھجیں</string>
   <string name="empty"></string>
-  <string name="move_choose_button_text">منتخب کریں</string>
+  <string name="folder_picker_choose_button_text">منتخب کریں</string>
 </resources>

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

@@ -47,6 +47,10 @@
   <string name="uploader_info_uploading">Đang tải lên</string>
   <string name="file_list_seconds_ago">vài giây trước</string>
   <string name="file_list_empty">Không có gì ở đây .Hãy tải lên một cái gì đó !</string>
+  <string name="file_list_folder">folder</string>
+  <string name="file_list_folders">folders</string>
+  <string name="file_list_file">file</string>
+  <string name="file_list_files">files</string>
   <string name="filedetails_select_file">Tap vào một tập tin để hiển thị thêm thông tin</string>
   <string name="filedetails_size">Kích thước:</string>
   <string name="filedetails_type">Loại:</string>
@@ -219,5 +223,5 @@
   <string name="activity_chooser_send_file_title">Gởi</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Tài khoản</string>
-  <string name="move_choose_button_text">Chọn</string>
+  <string name="folder_picker_choose_button_text">Chọn</string>
 </resources>

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

@@ -56,6 +56,10 @@
   <string name="file_list_empty">这里还什么都没有。上传些东西吧!</string>
   <string name="file_list_loading">载入中....</string>
   <string name="local_file_list_empty">在该文件夹中不存在文件。</string>
+  <string name="file_list_folder">文件夹</string>
+  <string name="file_list_folders">文件夹</string>
+  <string name="file_list_file">文件</string>
+  <string name="file_list_files">文件</string>
   <string name="filedetails_select_file">点击一个文件来显示额外的信息。</string>
   <string name="filedetails_size">大小:</string>
   <string name="filedetails_type">类型:</string>
@@ -274,7 +278,7 @@
   <string name="saml_authentication_wrong_pass">错误密码</string>
   <string name="actionbar_move">移动</string>
   <string name="file_list_empty_moving">这里还什么都没有。上传些东西吧!</string>
-  <string name="move_choose_button_text">选择(&amp;C)...</string>
+  <string name="folder_picker_choose_button_text">选择(&amp;C)...</string>
   <string name="move_file_not_found">无法移动。请检查文件是否存在</string>
   <string name="move_file_invalid_into_descendent">b不能够把一个目录移动到它的下级</string>
   <string name="move_file_invalid_overwrite">该文件已经存在在目标文件夹</string>

+ 7 - 3
res/values-zh-rTW/strings.xml

@@ -63,6 +63,10 @@
   <string name="file_list_empty">這裡還沒有東西,上傳一些吧!</string>
   <string name="file_list_loading">載入中…</string>
   <string name="local_file_list_empty">這個目錄中沒有任何檔案.</string>
+  <string name="file_list_folder">資料夾</string>
+  <string name="file_list_folders">資料夾</string>
+  <string name="file_list_file">檔案</string>
+  <string name="file_list_files">檔案</string>
   <string name="filedetails_select_file">在檔案上輕觸來顯示更多資訊。</string>
   <string name="filedetails_size">容量:</string>
   <string name="filedetails_type">類型:</string>
@@ -238,8 +242,8 @@
   <string name="placeholder_filesize">389 KB</string>
   <string name="placeholder_timestamp">2012/05/18 12:23 PM</string>
   <string name="placeholder_media_time">12:23:45</string>
-  <string name="instant_upload_on_wifi">只使用 WiFi 上傳</string>
-  <string name="instant_video_upload_on_wifi">只透過無線網路來執行即時影像上傳的功能</string>
+  <string name="instant_upload_on_wifi">只使用 WiFi 來執行即時圖片上傳的功能</string>
+  <string name="instant_video_upload_on_wifi">只使用 WiFi 來執行即時影像上傳的功能</string>
   <string name="instant_upload_path">/InstantUpload</string>
   <string name="conflict_title">更新衝突</string>
   <string name="conflict_message">遠端檔案 %s 未同步到本地. 繼續將取代伺服器上的文件.</string>
@@ -284,7 +288,7 @@
   <string name="saml_authentication_wrong_pass">密碼錯誤</string>
   <string name="actionbar_move">移動</string>
   <string name="file_list_empty_moving">找不到任何檔案. 你可以新增一個目錄!</string>
-  <string name="move_choose_button_text">選擇</string>
+  <string name="folder_picker_choose_button_text">選擇</string>
   <string name="move_file_not_found">無法搬移. 請檢查該檔案是否存在</string>
   <string name="move_file_invalid_into_descendent">把一個目錄搬移到其底下的子目錄是不可能的</string>
   <string name="move_file_invalid_overwrite">這個檔案已經存在於目的目錄中</string>

+ 8 - 1
res/values/strings.xml

@@ -66,6 +66,10 @@
     <string name="file_list_empty">Nothing in here. Upload something!</string>
     <string name="file_list_loading">Loading...</string>
     <string name="local_file_list_empty">There are no files in this folder.</string>
+    <string name="file_list_folder">folder</string>
+    <string name="file_list_folders">folders</string>
+    <string name="file_list_file">file</string>
+    <string name="file_list_files">files</string>
     <string name="filedetails_select_file">Tap on a file to display additional information.</string>
     <string name="filedetails_size">Size:</string>
     <string name="filedetails_type">Type:</string>
@@ -309,7 +313,7 @@
 	<string name="saml_authentication_wrong_pass">Wrong password</string>
 	<string name="actionbar_move">Move</string>
 	<string name="file_list_empty_moving">Nothing in here. You can add a folder!</string>
-	<string name="move_choose_button_text">Choose</string>
+	<string name="folder_picker_choose_button_text">Choose</string>
 
 	<string name="move_file_not_found">Unable to move. Please check whether the file exists</string>
 	<string name="move_file_invalid_into_descendent">It is not possible to move a folder into a descendant</string>
@@ -319,4 +323,7 @@
 
 	<string name="prefs_category_instant_uploading">Instant Uploads</string>
 	<string name="prefs_category_security">Security</string>
+
+	<string name="prefs_instant_video_upload_path_title">Upload Video Path</string>
+
 </resources>

+ 6 - 3
res/xml/preferences.xml

@@ -32,9 +32,9 @@
 	</PreferenceCategory>
 
     <PreferenceCategory android:title="@string/prefs_category_instant_uploading">
-	    <EditTextPreference android:title="@string/prefs_instant_upload_path_title"
-	        				android:defaultValue="@string/instant_upload_path"
-	        				android:key="instant_upload_path"/>
+        <com.owncloud.android.ui.PreferenceWithLongSummary
+							android:title="@string/prefs_instant_upload_path_title"
+							android:key="instant_upload_path" />
 	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_uploading"
 	                        android:title="@string/prefs_instant_upload"
 	                        android:summary="@string/prefs_instant_upload_summary"/>
@@ -42,6 +42,9 @@
 	        				android:disableDependentsState="true"
 	        				android:title="@string/instant_upload_on_wifi"
 	        				android:key="instant_upload_on_wifi"/>
+	    <com.owncloud.android.ui.PreferenceWithLongSummary
+							android:title="@string/prefs_instant_video_upload_path_title"
+							android:key="instant_video_upload_path" />
 	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_video_uploading"
 	                        android:title="@string/prefs_instant_video_upload"
 	                        android:summary="@string/prefs_instant_video_upload_summary"/>

+ 52 - 111
src/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Vector;
 
 import com.owncloud.android.MainApp;
@@ -33,7 +34,6 @@ import com.owncloud.android.lib.resources.shares.ShareType;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 
-
 import android.accounts.Account;
 import android.content.ContentProviderClient;
 import android.content.ContentProviderOperation;
@@ -41,6 +41,7 @@ import android.content.ContentProviderResult;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
+import android.content.Intent;
 import android.content.OperationApplicationException;
 import android.database.Cursor;
 import android.net.Uri;
@@ -346,7 +347,9 @@ public class FileDataStorageManager {
                     ).withSelection(where, whereArgs).build());
                     
                     if (file.isDown()) {
-                        new File(file.getStoragePath()).delete();
+                        String path = file.getStoragePath();
+                        new File(path).delete();
+                        triggerMediaScan(path); // notify MediaScanner about removed file
                     }
                 }
             }
@@ -484,8 +487,12 @@ public class FileDataStorageManager {
                     }
                     success &= (deleted > 0); 
                 }
-                if (removeLocalCopy && file.isDown() && file.getStoragePath() != null && success) {
-                    success = new File(file.getStoragePath()).delete();
+                String localPath = file.getStoragePath();
+                if (removeLocalCopy && file.isDown() && localPath != null && success) {
+                    success = new File(localPath).delete();
+                    if (success) {
+                        triggerMediaScan(localPath);
+                    }
                     if (!removeDBData && success) {
                         // maybe unnecessary, but should be checked TODO remove if unnecessary
                         file.setStoragePath(null);
@@ -542,11 +549,13 @@ public class FileDataStorageManager {
                         success &= removeLocalFolder(file);
                     } else {
                         if (file.isDown()) {
+                            String path = file.getStoragePath();
                             File localFile = new File(file.getStoragePath());
                             success &= localFile.delete();
                             if (success) {
                                 file.setStoragePath(null);
                                 saveFile(file);
+                                triggerMediaScan(path); // notify MediaScanner about removed file
                             }
                         }
                     }
@@ -568,7 +577,9 @@ public class FileDataStorageManager {
                 if (localFile.isDirectory()) {
                     success &= removeLocalFolder(localFile);
                 } else {
+                    String path = localFile.getAbsolutePath();
                     success &= localFile.delete();
+                    triggerMediaScan(path); // notify MediaScanner about removed file
                 }
             }
         }
@@ -576,109 +587,20 @@ public class FileDataStorageManager {
         return success;
     }
 
+    
     /**
-     * Updates database for a folder that was moved to a different location.
+     * Updates database and file system for a file or folder that was moved to a different location.
      * 
      * TODO explore better (faster) implementations
      * TODO throw exceptions up !
      */
-    public void moveFolder(OCFile folder, String newPath) {
-        // TODO check newPath
-
-        if (    folder != null && folder.isFolder() && 
-                folder.fileExists() && !OCFile.ROOT_PATH.equals(folder.getFileName())
-            ) {
-            /// 1. get all the descendants of 'dir' in a single QUERY (including 'dir')
-            Cursor c = null;
-            if (getContentProviderClient() != null) {
-                try {
-                    c = getContentProviderClient().query (
-                        ProviderTableMeta.CONTENT_URI, 
-                        null,
-                        ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND " + 
-                                ProviderTableMeta.FILE_PATH + " LIKE ? ",
-                        new String[] { mAccount.name, folder.getRemotePath() + "%"  }, 
-                        ProviderTableMeta.FILE_PATH + " ASC "
-                    );
-                } catch (RemoteException e) {
-                    Log_OC.e(TAG, e.getMessage());
-                }
-            } else {
-                c = getContentResolver().query (
-                    ProviderTableMeta.CONTENT_URI, 
-                    null,
-                    ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND " + 
-                            ProviderTableMeta.FILE_PATH + " LIKE ? ",
-                    new String[] { mAccount.name, folder.getRemotePath() + "%"  }, 
-                    ProviderTableMeta.FILE_PATH + " ASC "
-                );
-            }
-
-            /// 2. prepare a batch of update operations to change all the descendants
-            ArrayList<ContentProviderOperation> operations = 
-                    new ArrayList<ContentProviderOperation>(c.getCount());
-            int lengthOfOldPath = folder.getRemotePath().length();
-            String defaultSavePath = FileStorageUtils.getSavePath(mAccount.name);
-            int lengthOfOldStoragePath = defaultSavePath.length() + lengthOfOldPath;
-            if (c.moveToFirst()) {
-                do {
-                    ContentValues cv = new ContentValues(); // keep the constructor in the loop
-                    OCFile child = createFileInstance(c);
-                    cv.put(
-                        ProviderTableMeta.FILE_PATH, 
-                        newPath + child.getRemotePath().substring(lengthOfOldPath)
-                    );
-                    if (    child.getStoragePath() != null && 
-                            child.getStoragePath().startsWith(defaultSavePath)  ) {
-                        cv.put(
-                                ProviderTableMeta.FILE_STORAGE_PATH, 
-                                defaultSavePath + newPath + 
-                                    child.getStoragePath().substring(lengthOfOldStoragePath)
-                        );
-                    }
-                    operations.add(
-                            ContentProviderOperation.
-                            newUpdate(ProviderTableMeta.CONTENT_URI).
-                            withValues(cv).
-                            withSelection(  
-                                    ProviderTableMeta._ID + "=?", 
-                                    new String[] { String.valueOf(child.getFileId()) }
-                            ).
-                            build()
-                    );
-                } while (c.moveToNext());
-            }
-            c.close();
-
-            /// 3. apply updates in batch
-            try {
-                if (getContentResolver() != null) {
-                    getContentResolver().applyBatch(MainApp.getAuthority(), operations);
-
-                } else {
-                    getContentProviderClient().applyBatch(operations);
-                }
-
-            } catch (OperationApplicationException e) {
-                Log_OC.e(TAG, "Fail to update descendants of " + 
-                        folder.getFileId() + " in database", e);
-
-            } catch (RemoteException e) {
-                Log_OC.e(TAG, "Fail to update desendants of " + 
-                        folder.getFileId() + " in database", e);
-            }
-
-        }
-    }
-
-    
     public void moveLocalFile(OCFile file, String targetPath, String targetParentPath) {
 
         if (file != null && file.fileExists() && !OCFile.ROOT_PATH.equals(file.getFileName())) {
             
             OCFile targetParent = getFileByPath(targetParentPath);
             if (targetParent == null) {
-                // TODO panic
+                throw new IllegalStateException("Parent folder of the target path does not exist!!");
             }
             
             /// 1. get all the descendants of the moved element in a single QUERY
@@ -718,6 +640,8 @@ public class FileDataStorageManager {
             ArrayList<ContentProviderOperation> operations = 
                     new ArrayList<ContentProviderOperation>(c.getCount());
             String defaultSavePath = FileStorageUtils.getSavePath(mAccount.name);
+            List<String> originalPathsToTriggerMediaScan = new ArrayList<String>();
+            List<String> newPathsToTriggerMediaScan = new ArrayList<String>();
             if (c.moveToFirst()) {
                 int lengthOfOldPath = file.getRemotePath().length();
                 int lengthOfOldStoragePath = defaultSavePath.length() + lengthOfOldPath;
@@ -731,11 +655,14 @@ public class FileDataStorageManager {
                     if (child.getStoragePath() != null && 
                             child.getStoragePath().startsWith(defaultSavePath)) {
                         // update link to downloaded content - but local move is not done here!
-                        cv.put(
-                            ProviderTableMeta.FILE_STORAGE_PATH, 
-                            defaultSavePath + targetPath + 
-                                child.getStoragePath().substring(lengthOfOldStoragePath)
-                        );
+                        String targetLocalPath = defaultSavePath + targetPath + 
+                                child.getStoragePath().substring(lengthOfOldStoragePath);
+                        
+                        cv.put(ProviderTableMeta.FILE_STORAGE_PATH, targetLocalPath);
+                        
+                        originalPathsToTriggerMediaScan.add(child.getStoragePath());
+                        newPathsToTriggerMediaScan.add(targetLocalPath);
+                        
                     }
                     if (child.getRemotePath().equals(file.getRemotePath())) {
                         cv.put(
@@ -766,27 +693,35 @@ public class FileDataStorageManager {
                 }
 
             } catch (Exception e) {
-                Log_OC.e(
-                    TAG, 
-                    "Fail to update " + file.getFileId() + " and descendants in database", 
-                    e
-                );
+                Log_OC.e(TAG, "Fail to update " + file.getFileId() + " and descendants in database", e);
             }
 
             /// 4. move in local file system 
-            String localPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, file);
-            File localFile = new File(localPath);
+            String originalLocalPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, file);
+            String targetLocalPath = defaultSavePath + targetPath;
+            File localFile = new File(originalLocalPath);
             boolean renamed = false;
             if (localFile.exists()) {
-                File targetFile = new File(defaultSavePath + targetPath);
+                File targetFile = new File(targetLocalPath);
                 File targetFolder = targetFile.getParentFile();
                 if (!targetFolder.exists()) {
                     targetFolder.mkdirs();
                 }
                 renamed = localFile.renameTo(targetFile);
             }
-            Log_OC.d(TAG, "Local file RENAMED : " + renamed);
-            
+
+            if (renamed) {
+                Iterator<String> it = originalPathsToTriggerMediaScan.iterator();
+                while (it.hasNext()) {
+                    // Notify MediaScanner about removed file
+                    triggerMediaScan(it.next());
+                }
+                it = newPathsToTriggerMediaScan.iterator();
+                while (it.hasNext()) {
+                    // Notify MediaScanner about new file/folder
+                    triggerMediaScan(it.next());
+                }
+            }
         }
         
     }
@@ -1549,4 +1484,10 @@ public class FileDataStorageManager {
         //}
     }
 
+    public void triggerMediaScan(String path) {
+        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+        intent.setData(Uri.fromFile(new File(path)));
+        MainApp.getAppContext().sendBroadcast(intent);
+    }
+
 }

+ 1 - 0
src/com/owncloud/android/datamodel/OCFile.java

@@ -39,6 +39,7 @@ public class OCFile implements Parcelable, Comparable<OCFile>, Serializable {
      */
     private static final long serialVersionUID = 5604080482686390078L;
 
+
     public static final Parcelable.Creator<OCFile> CREATOR = new Parcelable.Creator<OCFile>() {
         @Override
         public OCFile createFromParcel(Parcel source) {

+ 1 - 0
src/com/owncloud/android/files/services/FileDownloader.java

@@ -400,6 +400,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
         file.setFileLength((new File(mCurrentDownload.getSavePath()).length()));
         file.setRemoteId(mCurrentDownload.getFile().getRemoteId());
         mStorageManager.saveFile(file);
+        mStorageManager.triggerMediaScan(file.getStoragePath());
     }
 
 

+ 0 - 1
src/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java

@@ -36,7 +36,6 @@ import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation;
 
 import android.content.Context;
 import android.net.Uri;
-import android.util.Log;
 
 /**
  * Operation to find out what authentication method requires

+ 0 - 2
src/com/owncloud/android/operations/DownloadFileOperation.java

@@ -150,13 +150,11 @@ public class DownloadFileOperation extends RemoteOperation {
             newFile = new File(getSavePath());
             newFile.getParentFile().mkdirs();
             moved = tmpFile.renameTo(newFile);
-        
             if (!moved)
                 result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED);
         }
         Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " + result.getLogMessage());
         
-        
         return result;
     }
 

+ 12 - 19
src/com/owncloud/android/operations/RenameFileOperation.java

@@ -29,8 +29,6 @@ import com.owncloud.android.lib.resources.files.RenameRemoteFileOperation;
 import com.owncloud.android.operations.common.SyncOperation;
 import com.owncloud.android.utils.FileStorageUtils;
 
-import android.accounts.Account;
-
 
 /**
  * Remote operation performing the rename of a remote file (or folder?) in the ownCloud server.
@@ -44,7 +42,6 @@ public class RenameFileOperation extends SyncOperation {
     
     private OCFile mFile;
     private String mRemotePath;
-    private Account mAccount;
     private String mNewName;
     private String mNewRemotePath;
 
@@ -57,9 +54,8 @@ public class RenameFileOperation extends SyncOperation {
      * @param account               OwnCloud account containing the remote file 
      * @param newName               New name to set as the name of file.
      */
-    public RenameFileOperation(String remotePath, Account account, String newName) {
+    public RenameFileOperation(String remotePath, String newName) {
         mRemotePath = remotePath;
-        mAccount = account;
         mNewName = newName;
         mNewRemotePath = null;
     }
@@ -103,7 +99,8 @@ public class RenameFileOperation extends SyncOperation {
 
             if (result.isSuccess()) {
                 if (mFile.isFolder()) {
-                    saveLocalDirectory();
+                    getStorageManager().moveLocalFile(mFile, mNewRemotePath, parent);
+                    //saveLocalDirectory();
 
                 } else {
                     saveLocalFile();
@@ -118,28 +115,24 @@ public class RenameFileOperation extends SyncOperation {
         return result;
     }
 
-    
-    private void saveLocalDirectory() {
-        getStorageManager().moveFolder(mFile, mNewRemotePath);
-        String localPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, mFile);
-        File localDir = new File(localPath);
-        if (localDir.exists()) {
-            localDir.renameTo(new File(FileStorageUtils.getSavePath(mAccount.name) + mNewRemotePath));
-            // TODO - if renameTo fails, children files that are already down will result unlinked
-        }
-    }
-
     private void saveLocalFile() {
         mFile.setFileName(mNewName);
         
         // try to rename the local copy of the file
         if (mFile.isDown()) {
-            File f = new File(mFile.getStoragePath());
+            String oldPath = mFile.getStoragePath();
+            File f = new File(oldPath);
             String parentStoragePath = f.getParent();
             if (!parentStoragePath.endsWith(File.separator))
                 parentStoragePath += File.separator;
             if (f.renameTo(new File(parentStoragePath + mNewName))) {
-                mFile.setStoragePath(parentStoragePath + mNewName);
+                String newPath = parentStoragePath + mNewName;
+                mFile.setStoragePath(newPath);
+
+                // notify MediaScanner about removed file - TODO really works?
+                getStorageManager().triggerMediaScan(oldPath);
+                // notify to scan about new file
+                getStorageManager().triggerMediaScan(newPath);
             }
             // else - NOTHING: the link to the local file is kept although the local name can't be updated
             // TODO - study conditions when this could be a problem

+ 0 - 1
src/com/owncloud/android/providers/FileContentProvider.java

@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 
 import com.owncloud.android.R;
-import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.db.ProviderMeta;
 import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
 import com.owncloud.android.lib.common.utils.Log_OC;

+ 1 - 1
src/com/owncloud/android/services/OperationsService.java

@@ -359,7 +359,7 @@ public class OperationsService extends Service {
                         // Rename file or folder
                         String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
                         String newName = operationIntent.getStringExtra(EXTRA_NEWNAME);
-                        operation = new RenameFileOperation(remotePath, account, newName);
+                        operation = new RenameFileOperation(remotePath, newName);
                         
                     } else if (action.equals(ACTION_REMOVE)) {
                         // Remove file or folder

+ 48 - 0
src/com/owncloud/android/ui/PreferenceWithLongSummary.java

@@ -0,0 +1,48 @@
+/* ownCloud Android client application
+ *   Copyright (C) 2014 ownCloud Inc.
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License version 2,
+ *   as published by the Free Software Foundation.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package com.owncloud.android.ui;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
+import android.preference.Preference;
+
+public class PreferenceWithLongSummary extends Preference{
+
+    public PreferenceWithLongSummary(Context context) {
+        super(context);
+    }
+
+    public PreferenceWithLongSummary(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+    public PreferenceWithLongSummary(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+        TextView titleView = (TextView) view.findViewById(android.R.id.summary);
+        titleView.setSingleLine(true);
+        titleView.setMaxLines(1);
+        titleView.setEllipsize(TextUtils.TruncateAt.MIDDLE);
+    }
+}

+ 3 - 4
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -622,8 +622,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
             requestMultipleUpload(data, resultCode);
 
-        } else if (requestCode == ACTION_MOVE_FILES && (resultCode == RESULT_OK ||
-                resultCode == MoveActivity.RESULT_OK_AND_MOVE)){
+        } else if (requestCode == ACTION_MOVE_FILES && resultCode == RESULT_OK){
 
             final Intent fData = data;
             final int fResultCode = resultCode;
@@ -754,8 +753,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
      * @param resultCode        Result code received
      */
     private void requestMoveOperation(Intent data, int resultCode) {
-        OCFile folderToMoveAt = (OCFile) data.getParcelableExtra(MoveActivity.EXTRA_CURRENT_FOLDER);
-        OCFile targetFile = (OCFile) data.getParcelableExtra(MoveActivity.EXTRA_TARGET_FILE);
+        OCFile folderToMoveAt = (OCFile) data.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER);
+        OCFile targetFile = (OCFile) data.getParcelableExtra(FolderPickerActivity.EXTRA_FILE);
         getFileOperationsHelper().moveFile(folderToMoveAt, targetFile);
     }
 

+ 43 - 34
src/com/owncloud/android/ui/activity/MoveActivity.java → src/com/owncloud/android/ui/activity/FolderPickerActivity.java

@@ -53,6 +53,7 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundExce
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 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.CreateFolderOperation;
 import com.owncloud.android.operations.SynchronizeFolderOperation;
 import com.owncloud.android.syncadapter.FileSyncAdapter;
@@ -61,26 +62,26 @@ import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ErrorMessageAdapter;
-import com.owncloud.android.lib.common.utils.Log_OC;
 
-public class MoveActivity extends HookActivity implements FileFragment.ContainerActivity, 
+public class FolderPickerActivity extends FileActivity implements FileFragment.ContainerActivity, 
     OnClickListener, OnEnforceableRefreshListener {
 
-    public static final String EXTRA_CURRENT_FOLDER = UploadFilesActivity.class.getCanonicalName() + ".EXTRA_CURRENT_FOLDER";
-    public static final String EXTRA_TARGET_FILE = UploadFilesActivity.class.getCanonicalName() + "EXTRA_TARGET_FILE";
+    public static final String EXTRA_FOLDER = UploadFilesActivity.class.getCanonicalName()
+                                                            + ".EXTRA_FOLDER";
+    public static final String EXTRA_FILE = UploadFilesActivity.class.getCanonicalName()
+                                                            + ".EXTRA_FILE";
+    //TODO: Think something better
 
-    public static final int RESULT_OK_AND_MOVE = 1;
-    
     private SyncBroadcastReceiver mSyncBroadcastReceiver;
 
-    private static final String TAG = MoveActivity.class.getSimpleName();
+    private static final String TAG = FolderPickerActivity.class.getSimpleName();
     
     private static final String TAG_LIST_OF_FOLDERS = "LIST_OF_FOLDERS";
        
     private boolean mSyncInProgress = false;
 
-    private Button mCancelBtn;
-    private Button mChooseBtn;
+    protected Button mCancelBtn;
+    protected Button mChooseBtn;
 
 
     @Override
@@ -90,7 +91,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
 
         super.onCreate(savedInstanceState); 
 
-        setContentView(R.layout.files_move);
+        setContentView(R.layout.files_folder_picker);
         
         if (savedInstanceState == null) {
             createFragments();
@@ -119,11 +120,6 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
     }
 
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
     /**
      *  Called when the ownCloud {@link Account} associated to the Activity was just updated.
      */
@@ -181,8 +177,8 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         }
     }
 
-    private OCFileListFragment getListOfFilesFragment() {
-        Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag(MoveActivity.TAG_LIST_OF_FOLDERS);
+    protected OCFileListFragment getListOfFilesFragment() {
+        Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag(FolderPickerActivity.TAG_LIST_OF_FOLDERS);
         if (listOfFiles != null) {
             return (OCFileListFragment)listOfFiles;
         }
@@ -268,6 +264,8 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         menu.findItem(R.id.action_upload).setVisible(false);
         menu.findItem(R.id.action_settings).setVisible(false);
         menu.findItem(R.id.action_sync_account).setVisible(false);
+        menu.findItem(R.id.action_logger).setVisible(false);
+        menu.findItem(R.id.action_sort).setVisible(false);
         return true;
     }
 
@@ -297,7 +295,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         return retval;
     }
 
-    private OCFile getCurrentFolder() {
+    protected OCFile getCurrentFolder() {
         OCFile file = getFile();
         if (file != null) {
             if (file.isFolder()) {
@@ -342,7 +340,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         }
     }
 
-    private void updateNavigationElementsInActionBar() {
+    protected void updateNavigationElementsInActionBar() {
         ActionBar actionBar = getSupportActionBar();
         OCFile currentDir = getCurrentFolder();
         boolean atRoot = (currentDir == null || currentDir.getParentId() == 0);
@@ -359,9 +357,9 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
      * Set per-view controllers
      */
     private void initControls(){
-        mCancelBtn = (Button) findViewById(R.id.move_files_btn_cancel);
+        mCancelBtn = (Button) findViewById(R.id.folder_picker_btn_cancel);
         mCancelBtn.setOnClickListener(this);
-        mChooseBtn = (Button) findViewById(R.id.move_files_btn_choose);
+        mChooseBtn = (Button) findViewById(R.id.folder_picker_btn_choose);
         mChooseBtn.setOnClickListener(this);
     }
     
@@ -371,12 +369,15 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
             finish();
         } else if (v == mChooseBtn) {
             Intent i = getIntent();
-            OCFile targetFile = (OCFile) i.getParcelableExtra(MoveActivity.EXTRA_TARGET_FILE);
+            Parcelable targetFile = i.getParcelableExtra(FolderPickerActivity.EXTRA_FILE);
 
             Intent data = new Intent();
-            data.putExtra(EXTRA_CURRENT_FOLDER, (Parcelable)getCurrentFolder());
-            data.putExtra(EXTRA_TARGET_FILE, (Parcelable)targetFile);
-            setResult(RESULT_OK_AND_MOVE, data);
+            data.putExtra(EXTRA_FOLDER, (Parcelable)getCurrentFolder());
+            if (targetFile != null) {
+                data.putExtra(EXTRA_FILE, targetFile);
+            }
+            setResult(RESULT_OK, data);
+
             finish();
         }
     }
@@ -410,7 +411,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
         } else {
             dismissLoadingDialog();
             try {
-                Toast msg = Toast.makeText(MoveActivity.this, 
+                Toast msg = Toast.makeText(FolderPickerActivity.this, 
                         ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), 
                         Toast.LENGTH_LONG); 
                 msg.show();
@@ -435,8 +436,10 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
                 Log_OC.d(TAG, "Received broadcast " + event);
                 String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME);
                 String synchFolderRemotePath = intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH); 
-                RemoteOperationResult synchResult = (RemoteOperationResult)intent.getSerializableExtra(FileSyncAdapter.EXTRA_RESULT);
-                boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && getStorageManager() != null); 
+                RemoteOperationResult synchResult = (RemoteOperationResult)intent.
+                        getSerializableExtra(FileSyncAdapter.EXTRA_RESULT);
+                boolean sameAccount = (getAccount() != null && 
+                        accountName.equals(getAccount().name) && getStorageManager() != null); 
     
                 if (sameAccount) {
                     
@@ -444,13 +447,17 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
                         mSyncInProgress = true;
                         
                     } else {
-                        OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath());
-                        OCFile currentDir = (getCurrentFolder() == null) ? null : getStorageManager().getFileByPath(getCurrentFolder().getRemotePath());
+                        OCFile currentFile = (getFile() == null) ? null : 
+                            getStorageManager().getFileByPath(getFile().getRemotePath());
+                        OCFile currentDir = (getCurrentFolder() == null) ? null : 
+                            getStorageManager().getFileByPath(getCurrentFolder().getRemotePath());
     
                         if (currentDir == null) {
                             // current folder was removed from the server 
-                            Toast.makeText( MoveActivity.this, 
-                                            String.format(getString(R.string.sync_current_folder_was_removed), getCurrentFolder().getFileName()), 
+                            Toast.makeText( FolderPickerActivity.this, 
+                                            String.format(
+                                                    getString(R.string.sync_current_folder_was_removed), 
+                                                    getCurrentFolder().getFileName()), 
                                             Toast.LENGTH_LONG)
                                 .show();
                             browseToRoot();
@@ -461,7 +468,8 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
                                 currentFile = currentDir;
                             }
 
-                            if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) {
+                            if (synchFolderRemotePath != null && currentDir.getRemotePath().
+                                    equals(synchFolderRemotePath)) {
                                 OCFileListFragment fileListFragment = getListOfFilesFragment();
                                 if (fileListFragment != null) {
                                     fileListFragment.listDirectory(currentDir);
@@ -470,7 +478,8 @@ public class MoveActivity extends HookActivity implements FileFragment.Container
                             setFile(currentFile);
                         }
                         
-                        mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
+                        mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && 
+                                !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
                                 
                         if (SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED.
                                     equals(event) &&

+ 92 - 37
src/com/owncloud/android/ui/activity/Preferences.java

@@ -51,6 +51,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.db.UploadDbHandler;
+import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.LongClickableCheckBoxPreference;
 import com.owncloud.android.utils.DisplayUtils;
@@ -66,7 +67,12 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
     
     private static final String TAG = "OwnCloudPreferences";
 
+
     private UploadDbHandler mDbHandler;
+
+    private static final int ACTION_SELECT_UPLOAD_PATH = 1;
+    private static final int ACTION_SELECT_UPLOAD_VIDEO_PATH = 2;
+
     private CheckBoxPreference pCode;
     private Preference pAboutApp;
 
@@ -75,6 +81,9 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
     private String mAccountName;
     private boolean mShowContextMenu = false;
     private String mUploadPath;
+    private Preference mPrefInstantUploadPath;
+    private Preference mPrefInstantVideoUploadPath;
+    private String mUploadVideoPath;
 
 
     @SuppressWarnings("deprecation")
@@ -89,8 +98,6 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setTitle(R.string.actionbar_settings);
 
-        loadInstantUploadPath();
-
         // Load the accounts category for adding the list of accounts
         mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category");
 
@@ -243,15 +250,39 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
             }
         }
 
-        Preference pInstantUploadPathApp = (Preference) findPreference("instant_upload_path");
+        mPrefInstantUploadPath =  findPreference("instant_upload_path");
+        if (mPrefInstantUploadPath != null){
 
-        pInstantUploadPathApp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-            @Override
-            public boolean onPreferenceChange(Preference preference, Object newValue) {
-                mUploadPath = updateInstantUploadPath(newValue.toString());
-                return true;
-            }
-        });
+            mPrefInstantUploadPath.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+                    @Override
+                    public boolean onPreferenceClick(Preference preference) {
+                        if (!mUploadPath.endsWith(OCFile.PATH_SEPARATOR)) {
+                            mUploadPath += OCFile.PATH_SEPARATOR;
+                        }
+                        Intent intent = new Intent(Preferences.this, UploadPathActivity.class);
+                        intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, mUploadPath);
+                        startActivityForResult(intent, ACTION_SELECT_UPLOAD_PATH);
+                        return true;
+                    }
+                });
+        }
+
+        mPrefInstantVideoUploadPath =  findPreference("instant_video_upload_path");
+        if (mPrefInstantVideoUploadPath != null){
+
+            mPrefInstantVideoUploadPath.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+                    @Override
+                    public boolean onPreferenceClick(Preference preference) {
+                        if (!mUploadVideoPath.endsWith(OCFile.PATH_SEPARATOR)) {
+                            mUploadVideoPath += OCFile.PATH_SEPARATOR;
+                        }
+                        Intent intent = new Intent(Preferences.this, UploadPathActivity.class);
+                        intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, mUploadVideoPath);
+                        startActivityForResult(intent, ACTION_SELECT_UPLOAD_VIDEO_PATH);
+                        return true;
+                    }
+                });
+        }
             
         /* About App */
        pAboutApp = (Preference) findPreference("about_app");
@@ -265,11 +296,14 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
                    Log_OC.e(TAG, "Error while showing about dialog", e);
                }
        }
+
+       loadInstantUploadPath();
+       loadInstantUploadVideoPath();
+
     }
 
     @Override
     protected void onPause() {
-        saveInstantUploadPathOnPreferences();
         super.onPause();
     }
 
@@ -371,6 +405,33 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+
+        if (requestCode == ACTION_SELECT_UPLOAD_PATH && resultCode == RESULT_OK){
+
+            OCFile folderToUpload = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER);
+
+            mUploadPath = folderToUpload.getRemotePath();
+
+            mUploadPath = DisplayUtils.getPathWithoutLastSlash(mUploadPath);
+
+            // Show the path on summary preference
+            mPrefInstantUploadPath.setSummary(mUploadPath);
+
+            saveInstantUploadPathOnPreferences();
+
+        } else if (requestCode == ACTION_SELECT_UPLOAD_VIDEO_PATH && resultCode == RESULT_OK){
+
+            OCFile folderToUploadVideo = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER);
+
+            mUploadVideoPath = folderToUploadVideo.getRemotePath();
+
+            mUploadVideoPath = DisplayUtils.getPathWithoutLastSlash(mUploadVideoPath);
+
+            // Show the video path on summary preference
+            mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath);
+
+            saveInstantUploadVideoPathOnPreferences();
+        }
     }
 
     @Override
@@ -482,38 +543,13 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
 
     }
 
-    /**
-     * Update the upload path checking that it is a correct path
-     * @param uploadPath: path write by user
-     * @return String: uploadPath
-     */
-    private String updateInstantUploadPath(String uploadPath) {
-        String slashString = "/";
-
-        // If slashes are duplicated, replace them for only one slash
-        uploadPath = uploadPath.replaceAll("/+", slashString);
-
-        // Remove last slash from path
-        if (uploadPath.length() > 0 && uploadPath.charAt(uploadPath.length()-1) == slashString.charAt(0)) {
-            uploadPath = uploadPath.substring(0, uploadPath.length()-1);
-        }
-
-        if (uploadPath.isEmpty()) { // Set default instant upload path
-            uploadPath = getString(R.string.instant_upload_path);
-        }else {
-            if (!uploadPath.startsWith(slashString)) { // Add initial slash on path if necessary
-                uploadPath = slashString.concat(uploadPath);
-            }
-        }
-        return uploadPath;
-    }
-
     /**
      * Load upload path set on preferences
      */
     private void loadInstantUploadPath() {
         SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         mUploadPath = appPrefs.getString("instant_upload_path", getString(R.string.instant_upload_path));
+        mPrefInstantUploadPath.setSummary(mUploadPath);
     }
 
     /**
@@ -525,4 +561,23 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
         editor.putString("instant_upload_path", mUploadPath);
         editor.commit();
     }
+
+    /**
+     * Load upload video path set on preferences
+     */
+    private void loadInstantUploadVideoPath() {
+        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+        mUploadVideoPath = appPrefs.getString("instant_video_upload_path", getString(R.string.instant_upload_path));
+        mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath);
+    }
+
+    /**
+     * Save the "Instant Video Upload Path" on preferences
+     */
+    private void saveInstantUploadVideoPathOnPreferences() {
+        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());        
+        SharedPreferences.Editor editor = appPrefs.edit();
+        editor.putString("instant_video_upload_path", mUploadVideoPath);
+        editor.commit();
+    }
 }

+ 77 - 0
src/com/owncloud/android/ui/activity/UploadPathActivity.java

@@ -0,0 +1,77 @@
+/* ownCloud Android client application
+ *   Copyright (C) 2012-2014 ownCloud Inc.
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License version 2,
+ *   as published by the Free Software Foundation.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package com.owncloud.android.ui.activity;
+
+import android.accounts.Account;
+
+import android.os.Bundle;
+import android.view.View.OnClickListener;
+
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.ui.fragment.OCFileListFragment;
+
+public class UploadPathActivity extends FolderPickerActivity implements FileFragment.ContainerActivity,
+        OnClickListener, OnEnforceableRefreshListener {
+
+    public static final String KEY_INSTANT_UPLOAD_PATH = "INSTANT_UPLOAD_PATH";
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String instantUploadPath = getIntent().getStringExtra(KEY_INSTANT_UPLOAD_PATH);
+
+        // The caller activity (Preferences) is not a FileActivity, so it has no OCFile, only a path.
+        OCFile folder = new OCFile(instantUploadPath);
+
+        setFile(folder);
+    }
+
+    /**
+     * Called when the ownCloud {@link Account} associated to the Activity was
+     * just updated.
+     */
+    @Override
+    protected void onAccountSet(boolean stateWasRecovered) {
+        super.onAccountSet(stateWasRecovered);
+        if (getAccount() != null) {
+
+            updateFileFromDB();
+
+            OCFile folder = getFile();
+            if (folder == null || !folder.isFolder()) {
+                // fall back to root folder
+                setFile(getStorageManager().getFileByPath(OCFile.ROOT_PATH));
+                folder = getFile();
+            }
+
+            onBrowsedDownTo(folder);
+
+            if (!stateWasRecovered) {
+                OCFileListFragment listOfFolders = getListOfFilesFragment();
+                listOfFolders.listDirectory(folder);
+
+                startSyncFolderOperation(folder, false);
+            }
+
+            updateNavigationElementsInActionBar();
+        }
+    }
+}

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

@@ -47,7 +47,6 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
-import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;

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

@@ -26,15 +26,15 @@ package com.owncloud.android.ui.dialog;
  */
 import java.util.Vector;
 
+import android.app.Dialog;
+import android.os.Bundle;
+
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
 
-import android.app.Dialog;
-import android.os.Bundle;
-
 public class RemoveFileDialogFragment extends ConfirmationDialogFragment 
 implements ConfirmationDialogFragmentListener {
 
@@ -105,8 +105,7 @@ implements ConfirmationDialogFragmentListener {
     @Override
     public void onNeutral(String callerTag) {
         ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
-        cg.getFileOperationsHelper()
-            .removeFile(mTargetFile, true);
+        cg.getFileOperationsHelper().removeFile(mTargetFile, true);
         
         FileDataStorageManager storageManager = cg.getStorageManager();
         
@@ -141,4 +140,4 @@ implements ConfirmationDialogFragmentListener {
         // nothing to do here
     }
     
-}
+}

+ 8 - 12
src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java

@@ -22,12 +22,6 @@ package com.owncloud.android.ui.dialog;
  * 
  *  Triggers the rename operation. 
  */
-import com.actionbarsherlock.app.SherlockDialogFragment;
-import com.owncloud.android.R;
-import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.resources.files.FileUtils;
-import com.owncloud.android.ui.activity.ComponentsGetter;
-
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
@@ -39,6 +33,12 @@ import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.actionbarsherlock.app.SherlockDialogFragment;
+import com.owncloud.android.R;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.lib.resources.files.FileUtils;
+import com.owncloud.android.ui.activity.ComponentsGetter;
+
 
 /**
  *  Dialog to input a new name for a file or folder to rename.  
@@ -125,12 +125,8 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener {
                         Toast.LENGTH_LONG).show();
                 return;
             }
-            
-            ((ComponentsGetter)getSherlockActivity()).
-                getFileOperationsHelper().renameFile(mTargetFile, newFileName);
-            
-            
+
+            ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper().renameFile(mTargetFile, newFileName);
         }
     }
-    
 }

+ 21 - 16
src/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -38,7 +38,7 @@ import com.owncloud.android.ui.ExtendedListView;
 import com.owncloud.android.ui.activity.OnEnforceableRefreshListener;
 
 /**
- *  TODO extending SherlockListFragment instead of SherlockFragment 
+ * TODO extending SherlockListFragment instead of SherlockFragment
  */
 public class ExtendedListFragment extends SherlockFragment 
 implements OnItemClickListener, OnEnforceableRefreshListener {
@@ -46,6 +46,7 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
     protected static final String TAG = ExtendedListFragment.class.getSimpleName();
 
     protected static final String KEY_SAVED_LIST_POSITION = "SAVED_LIST_POSITION"; 
+
     private static final String KEY_INDEXES = "INDEXES";
     private static final String KEY_FIRST_POSITIONS= "FIRST_POSITIONS";
     private static final String KEY_TOPS = "TOPS";
@@ -72,18 +73,22 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
         mList.invalidate();
     }
 
+    public void setFooterView(View footer) {
+        mList.addFooterView(footer, null, false);
+        mList.invalidate();
+    }
+
     public ListView getListView() {
         return mList;
     }
-    
-    
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Log_OC.e(TAG, "onCreateView");
-        
+
         View v = inflater.inflate(R.layout.list_fragment, null);
         mEmptyListMessage = (TextView) v.findViewById(R.id.empty_list_view);
-        mList = (ExtendedListView)(v.findViewById(R.id.list_root));
+        mList = (ExtendedListView) (v.findViewById(R.id.list_root));
         mList.setOnItemClickListener(this);
 
         mList.setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));
@@ -93,7 +98,7 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
             int referencePosition = savedInstanceState.getInt(KEY_SAVED_LIST_POSITION);
             setReferencePosition(referencePosition);
         }
-        
+
         // Pull down refresh
         mRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_refresh_files);
         mRefreshEmptyLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_refresh_files_emptyView);
@@ -106,7 +111,6 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
         return v;
     }
 
-    
     /**
      * {@inheritDoc}
      */
@@ -142,14 +146,16 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
         savedInstanceState.putString(KEY_EMPTY_LIST_MESSAGE, getEmptyViewText());
     }
 
-    
     /**
-     * Calculates the position of the item that will be used as a reference to reposition the visible items in the list when
-     * the device is turned to other position. 
+     * Calculates the position of the item that will be used as a reference to
+     * reposition the visible items in the list when the device is turned to
+     * other position.
      * 
-     * THe current policy is take as a reference the visible item in the center of the screen.  
+     * THe current policy is take as a reference the visible item in the center
+     * of the screen.
      * 
-     * @return      The position in the list of the visible item in the center of the screen.
+     * @return The position in the list of the visible item in the center of the
+     *         screen.
      */
     protected int getReferencePosition() {
         if (mList != null) {
@@ -159,11 +165,11 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
         }
     }
 
-    
     /**
      * Sets the visible part of the list from the reference position.
      * 
-     * @param   position    Reference position previously returned by {@link LocalFileListFragment#getReferencePosition()}
+     * @param position Reference position previously returned by
+     *            {@link LocalFileListFragment#getReferencePosition()}
      */
     protected void setReferencePosition(int position) {
         if (mList != null) {
@@ -227,7 +233,7 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
     
     @Override
     public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
-        // to be @overriden  
+        // to be @overriden
     }
 
     @Override
@@ -240,7 +246,6 @@ implements OnItemClickListener, OnEnforceableRefreshListener {
             mOnRefreshListener.onRefresh();
         }
     }
-    
     public void setOnRefreshListener(OnEnforceableRefreshListener listener) {
         mOnRefreshListener = listener;
     }

+ 60 - 9
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -18,8 +18,10 @@
 package com.owncloud.android.ui.fragment;
 
 import java.io.File;
+import java.util.Vector;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Parcelable;
@@ -30,6 +32,8 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.TextView;
+import android.view.LayoutInflater;
 
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -37,7 +41,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.FileMenuFilter;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.activity.MoveActivity;
+import com.owncloud.android.ui.activity.FolderPickerActivity;
 import com.owncloud.android.ui.activity.OnEnforceableRefreshListener;
 import com.owncloud.android.ui.adapter.FileListListAdapter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
@@ -71,6 +75,7 @@ public class OCFileListFragment extends ExtendedListFragment {
    
     private OCFile mFile = null;
     private FileListListAdapter mAdapter;
+    private View mFooterView;
     
     private OCFile mTargetFile;
 
@@ -113,24 +118,28 @@ public class OCFileListFragment extends ExtendedListFragment {
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         Log_OC.e(TAG, "onActivityCreated() start");
-        
+
         if (savedInstanceState != null) {
             mFile = savedInstanceState.getParcelable(KEY_FILE);
         }
-        
+
+        mFooterView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
+                        R.layout.list_footer, null, false);
+        setFooterView(mFooterView);
+
         Bundle args = getArguments();
         boolean justFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false); 
         mAdapter = new FileListListAdapter(
                 justFolders,
                 getSherlockActivity(), 
                 mContainerActivity
-        );
+                );
         setListAdapter(mAdapter);
-        
+
         registerForContextMenu(getListView());
         getListView().setOnCreateContextMenuListener(this);
-  }
-    
+    }
+
     /**
      * Saves the current listed folder.
      */
@@ -323,10 +332,10 @@ public class OCFileListFragment extends ExtendedListFragment {
                 return true;
             }
             case R.id.action_move: {
-                Intent action = new Intent(getActivity(), MoveActivity.class);
+                Intent action = new Intent(getActivity(), FolderPickerActivity.class);
 
                 // Pass mTargetFile that contains info of selected file/folder
-                action.putExtra(MoveActivity.EXTRA_TARGET_FILE, (Parcelable)mTargetFile);
+                action.putExtra(FolderPickerActivity.EXTRA_FILE, (Parcelable)mTargetFile);
                 getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES);
                 return true;
             }
@@ -385,9 +394,51 @@ public class OCFileListFragment extends ExtendedListFragment {
                 mList.setSelectionFromTop(0, 0);
             }
             mFile = directory;
+            
+            // Update Footer
+            TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText);
+            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
+            footerText.setText(generateFooterText(directory));
+            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
         }
     }
     
+    private String generateFooterText(OCFile directory) {
+        Integer files = 0;
+        Integer folders = 0;
+
+        FileDataStorageManager storageManager = mContainerActivity.getStorageManager();
+        Vector<OCFile> mFiles = storageManager.getFolderContent(mFile);
+
+        for (OCFile ocFile : mFiles) {
+            if (ocFile.isFolder()) {
+                folders++;
+            } else {
+                files++;
+            }
+        }
+
+        String output = "";
+       
+        if (files > 0){
+            if (files == 1) {
+                output = output + files.toString() + " " + getResources().getString(R.string.file_list_file);
+            } else {
+                output = output + files.toString() + " " + getResources().getString(R.string.file_list_files);
+            }
+        }
+        if (folders > 0 && files > 0){
+            output = output + ", ";
+        }
+        if (folders == 1) {
+            output = output + folders.toString() + " " + getResources().getString(R.string.file_list_folder);
+        } else if (folders > 1) {
+            output = output + folders.toString() + " " + getResources().getString(R.string.file_list_folders);
+        }
+        
+        return output;
+    }
+    
     public void sortByName(boolean descending) {
         mAdapter.setSortOrder(FileListListAdapter.SORT_NAME, descending);
     }

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

@@ -328,7 +328,7 @@ public class PreviewImageFragment extends FileFragment {
         finish();
     }
     
-    
+
     private class BitmapLoader extends AsyncTask<String, Void, Bitmap> {
 
         /**

+ 14 - 1
src/com/owncloud/android/utils/DisplayUtils.java

@@ -29,11 +29,11 @@ import java.util.Set;
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
-import android.text.format.DateFormat;
 import android.text.format.DateUtils;
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
+import com.owncloud.android.datamodel.OCFile;
 
 /**
  * A helper class for some string operations.
@@ -320,4 +320,17 @@ public class DisplayUtils {
         
         return dateString.toString().split(",")[0];
     }
+
+    /**
+     * Update the passed path removing the last "/" if it is not the root folder
+     * @param path
+     */
+    public static String getPathWithoutLastSlash(String path) {
+
+        // Remove last slash from path
+        if (path.length() > 1 && path.charAt(path.length()-1) == OCFile.PATH_SEPARATOR.charAt(0)) {
+            path = path.substring(0, path.length()-1);
+        }
+        return path;
+    }
 }

+ 14 - 0
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -111,6 +111,20 @@ public class FileStorageUtils {
         String value = uploadPath + OCFile.PATH_SEPARATOR +  (fileName == null ? "" : fileName);
         return value;
     }
+
+    /**
+     * Gets the composed path when video is or must be stored
+     * @param context
+     * @param fileName: video file name
+     * @return String: video file path composed
+     */
+    public static String getInstantVideoUploadFilePath(Context context, String fileName) {
+        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+        String uploadVideoPathdef = context.getString(R.string.instant_upload_path);
+        String uploadVideoPath = pref.getString("instant_video_upload_path", uploadVideoPathdef);
+        String value = uploadVideoPath + OCFile.PATH_SEPARATOR +  (fileName == null ? "" : fileName);
+        return value;
+    }
     
     public static String getParentPath(String remotePath) {
         String parentPath = new File(remotePath).getParent();