浏览代码

Merge branch 'develop' into automationTest

purigarcia 10 年之前
父节点
当前提交
cefcf53e9e
共有 100 个文件被更改,包括 700 次插入339 次删除
  1. 1 1
      owncloud-android-library
  2. 21 9
      res/layout-land/account_setup.xml
  3. 23 11
      res/layout/account_setup.xml
  4. 24 5
      res/layout/uploader_layout.xml
  5. 12 6
      res/menu/main_menu.xml
  6. 1 1
      res/values-ar/strings.xml
  7. 5 1
      res/values-az/strings.xml
  8. 1 1
      res/values-bg-rBG/strings.xml
  9. 1 1
      res/values-bn-rBD/strings.xml
  10. 1 0
      res/values-bs/strings.xml
  11. 3 1
      res/values-ca/strings.xml
  12. 3 1
      res/values-cs-rCZ/strings.xml
  13. 3 1
      res/values-da/strings.xml
  14. 1 0
      res/values-de-rAT/strings.xml
  15. 3 1
      res/values-de-rDE/strings.xml
  16. 3 1
      res/values-de/strings.xml
  17. 3 1
      res/values-el/strings.xml
  18. 3 1
      res/values-en-rGB/strings.xml
  19. 1 1
      res/values-eo/strings.xml
  20. 1 1
      res/values-es-rAR/strings.xml
  21. 0 1
      res/values-es-rCL/strings.xml
  22. 1 1
      res/values-es-rMX/strings.xml
  23. 5 1
      res/values-es/strings.xml
  24. 1 1
      res/values-et-rEE/strings.xml
  25. 1 1
      res/values-eu/strings.xml
  26. 1 1
      res/values-fa/strings.xml
  27. 2 1
      res/values-fi-rFI/strings.xml
  28. 3 1
      res/values-fr/strings.xml
  29. 5 3
      res/values-gl/strings.xml
  30. 1 1
      res/values-he/strings.xml
  31. 1 0
      res/values-hr/strings.xml
  32. 1 1
      res/values-hu-rHU/strings.xml
  33. 10 0
      res/values-ia/strings.xml
  34. 1 1
      res/values-id/strings.xml
  35. 1 0
      res/values-is/strings.xml
  36. 3 1
      res/values-it/strings.xml
  37. 1 1
      res/values-ja-rJP/strings.xml
  38. 1 0
      res/values-ka-rGE/strings.xml
  39. 1 1
      res/values-km/strings.xml
  40. 1 0
      res/values-kn/strings.xml
  41. 1 1
      res/values-ko/strings.xml
  42. 1 0
      res/values-ku-rIQ/strings.xml
  43. 1 0
      res/values-lb/strings.xml
  44. 1 0
      res/values-lo/strings.xml
  45. 1 1
      res/values-lt-rLT/strings.xml
  46. 1 1
      res/values-lv/strings.xml
  47. 1 1
      res/values-mk/strings.xml
  48. 1 0
      res/values-ms-rMY/strings.xml
  49. 5 1
      res/values-nb-rNO/strings.xml
  50. 3 1
      res/values-nl/strings.xml
  51. 1 1
      res/values-nn-rNO/strings.xml
  52. 1 1
      res/values-pa/strings.xml
  53. 1 1
      res/values-pl/strings.xml
  54. 1 1
      res/values-pt-rBR/strings.xml
  55. 3 1
      res/values-pt-rPT/strings.xml
  56. 1 1
      res/values-ro/strings.xml
  57. 3 1
      res/values-ru/strings.xml
  58. 1 1
      res/values-si-rLK/strings.xml
  59. 1 1
      res/values-sk-rSK/strings.xml
  60. 1 1
      res/values-sl/strings.xml
  61. 1 1
      res/values-sq/strings.xml
  62. 16 3
      res/values-sr/strings.xml
  63. 1 1
      res/values-sv/strings.xml
  64. 1 1
      res/values-ta-rLK/strings.xml
  65. 1 0
      res/values-te/strings.xml
  66. 1 1
      res/values-th-rTH/strings.xml
  67. 3 1
      res/values-tr/strings.xml
  68. 1 0
      res/values-ug/strings.xml
  69. 7 1
      res/values-uk/strings.xml
  70. 1 1
      res/values-vi/strings.xml
  71. 1 1
      res/values-zh-rCN/strings.xml
  72. 1 0
      res/values-zh-rHK/strings.xml
  73. 1 1
      res/values-zh-rTW/strings.xml
  74. 1 0
      res/values/setup.xml
  75. 5 1
      res/values/strings.xml
  76. 28 2
      src/com/owncloud/android/MainApp.java
  77. 1 0
      src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java
  78. 10 5
      src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
  79. 52 28
      src/com/owncloud/android/files/services/FileDownloader.java
  80. 50 29
      src/com/owncloud/android/files/services/FileUploader.java
  81. 7 3
      src/com/owncloud/android/operations/CreateFolderOperation.java
  82. 9 4
      src/com/owncloud/android/operations/CreateShareOperation.java
  83. 3 2
      src/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java
  84. 16 8
      src/com/owncloud/android/operations/DownloadFileOperation.java
  85. 1 0
      src/com/owncloud/android/operations/GetServerInfoOperation.java
  86. 3 1
      src/com/owncloud/android/operations/GetSharesForFileOperation.java
  87. 1 0
      src/com/owncloud/android/operations/GetSharesOperation.java
  88. 3 2
      src/com/owncloud/android/operations/MoveFileOperation.java
  89. 4 2
      src/com/owncloud/android/operations/RefreshFolderOperation.java
  90. 1 0
      src/com/owncloud/android/operations/RemoveFileOperation.java
  91. 23 14
      src/com/owncloud/android/operations/RenameFileOperation.java
  92. 42 27
      src/com/owncloud/android/operations/SynchronizeFileOperation.java
  93. 17 9
      src/com/owncloud/android/operations/SynchronizeFolderOperation.java
  94. 7 3
      src/com/owncloud/android/operations/UnshareLinkOperation.java
  95. 2 2
      src/com/owncloud/android/operations/UploadFileOperation.java
  96. 37 18
      src/com/owncloud/android/operations/common/SyncOperation.java
  97. 60 34
      src/com/owncloud/android/services/OperationsService.java
  98. 13 8
      src/com/owncloud/android/services/SyncFolderHandler.java
  99. 5 2
      src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java
  100. 78 45
      src/com/owncloud/android/syncadapter/FileSyncAdapter.java

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit 0dd68c1f65c31bd716b2de26e644c87c98e9b9c2
+Subproject commit 925227b41be9a40e6c30a1fd833ea0a25bc8c3dc

+ 21 - 9
res/layout-land/account_setup.xml

@@ -38,7 +38,8 @@
 			android:layout_weight="1"
 			android:layout_gravity="center"
 			android:background="@color/login_logo_background_color"
-			android:src="@drawable/logo" 
+			android:src="@drawable/logo"
+            android:contentDescription="@string/app_name"
 			/>
 		
 		<ScrollView
@@ -65,7 +66,8 @@
 					android:layout_marginBottom="10dp"
             		android:onClick="onRefreshClick"
 				    android:text="@string/auth_check_server"
-				    android:visibility="gone" />
+				    android:visibility="gone"
+                    android:contentDescription="@string/auth_check_server"/>
 				<TextView
 				    android:id="@+id/instructions_message"
 				    android:layout_width="wrap_content"
@@ -73,7 +75,8 @@
 				    android:layout_gravity="fill_horizontal"
 				    android:text="@string/auth_expired_basic_auth_toast" 
 				    android:visibility="gone"
-				    android:layout_marginBottom="10dp"/>
+				    android:layout_marginBottom="10dp"
+                    android:contentDescription="@string/auth_expired_basic_auth_toast"/>
 			    <FrameLayout 
 	        		android:id="@+id/hostUrlFrame"
 					android:layout_width="match_parent"
@@ -89,6 +92,7 @@
 						android:inputType="textUri"
 						android:drawablePadding="5dp"
 						android:paddingRight="55dp"
+						android:contentDescription="@string/auth_host_address"
 						>
 						<requestFocus />
 					</EditText>
@@ -104,6 +108,7 @@
             			android:onClick="onRefreshClick"
 					    android:visibility="gone"
 						android:background="@android:color/transparent"
+                        android:contentDescription="@string/auth_refresh_button"
 					    />
 				</FrameLayout>
 		
@@ -115,7 +120,8 @@
 					android:drawableLeft="@android:drawable/stat_notify_sync"
 					android:drawablePadding="5dp"
 					android:gravity="center_vertical"
-					android:text="@string/auth_testing_connection" />
+					android:text="@string/auth_testing_connection"
+                    android:contentDescription="@string/auth_testing_connection"/>
 		             
 				<CheckBox
 					android:id="@+id/oauth_onOff_check"
@@ -125,6 +131,7 @@
 					android:onClick="onCheckClick"
 					android:text="@string/oauth_check_onoff"
 					android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:contentDescription="@string/oauth_check_onoff"
 					/>
 		
 				<EditText
@@ -136,7 +143,7 @@
 					android:text="@string/oauth2_url_endpoint_auth"
 					android:singleLine="true"
 					android:inputType="textUri"
-					android:visibility="gone" >
+					android:visibility="gone">
 				</EditText>            
 				
 				<EditText
@@ -148,7 +155,7 @@
 					android:text="@string/oauth2_url_endpoint_access"
 					android:singleLine="true"
 					android:inputType="textUri"
-					android:visibility="gone" >
+					android:visibility="gone">
 					<requestFocus />
 				</EditText>            
 		
@@ -158,7 +165,8 @@
 					android:layout_height="wrap_content"
 					android:ems="10"
 					android:hint="@string/auth_username"
-					android:inputType="textNoSuggestions" />
+					android:inputType="textNoSuggestions"
+					android:contentDescription="@string/auth_username"/>
 		
 				<EditText
 				    android:id="@+id/account_password"
@@ -168,6 +176,7 @@
 					android:hint="@string/auth_password"
 					android:inputType="textPassword"
 					android:drawablePadding="5dp"
+					android:contentDescription="@string/auth_password"
 					/>
 		        
 				<TextView
@@ -178,6 +187,7 @@
 					android:text="@string/auth_unauthorized"
 					android:drawableLeft="@android:drawable/stat_notify_sync"
 					android:drawablePadding="5dip"
+                    android:contentDescription="@string/auth_unauthorized"
 					/>
 
 			</LinearLayout>
@@ -200,7 +210,8 @@
 		    android:layout_gravity="center_horizontal"
 		    android:enabled="false"
 		    android:onClick="onOkClick"
-		    android:text="@string/setup_btn_connect" />
+		    android:text="@string/setup_btn_connect"
+            android:contentDescription="@string/setup_btn_connect"/>
 		
 		<Button
 		    android:id="@+id/welcome_link"
@@ -212,7 +223,8 @@
 		    android:paddingBottom="5dp"
 		    android:paddingTop="5dp"
 		    android:text="@string/auth_register"
-		    android:textColor="#0000FF"/>
+		    android:textColor="#0000FF"
+            android:contentDescription="@string/auth_register"/>
 	</LinearLayout>
 		
 </RelativeLayout>

+ 23 - 11
res/layout/account_setup.xml

@@ -41,7 +41,8 @@
             android:layout_marginBottom="10dp"
             android:layout_marginTop="10dp"
             android:background="@color/login_logo_background_color"
-            android:src="@drawable/logo" />
+            android:src="@drawable/logo"
+            android:contentDescription="@string/app_name"/>
 
         <Button
             android:id="@+id/centeredRefreshButton"
@@ -51,7 +52,8 @@
             android:layout_marginBottom="10dp"
             android:onClick="onRefreshClick"
             android:text="@string/auth_check_server"
-            android:visibility="gone" />
+            android:visibility="gone"
+            android:contentDescription="@string/auth_check_server"/>
         
         <TextView
             android:id="@+id/instructions_message"
@@ -60,7 +62,8 @@
             android:layout_gravity="fill_horizontal"
             android:text="@string/auth_expired_basic_auth_toast"
             android:visibility="gone"
-            android:layout_marginBottom="10dp" />
+            android:layout_marginBottom="10dp"
+            android:contentDescription="@string/auth_expired_basic_auth_toast"/>
 
 	    <FrameLayout 
 	        android:id="@+id/hostUrlFrame"
@@ -77,6 +80,7 @@
 				android:inputType="textUri"
 				android:drawablePadding="5dp"
 				android:paddingRight="55dp"
+				android:contentDescription="@string/auth_host_address"
 				>
 				<requestFocus />
 			</EditText>
@@ -92,6 +96,7 @@
             	android:onClick="onRefreshClick"
 				android:visibility="gone"
 				android:background="@android:color/transparent"
+                android:contentDescription="@string/auth_refresh_button"
 			    />
 		</FrameLayout>
 
@@ -103,7 +108,8 @@
             android:drawableLeft="@android:drawable/stat_notify_sync"
             android:drawablePadding="5dp"
             android:gravity="center_vertical"
-            android:text="@string/auth_testing_connection" />
+            android:text="@string/auth_testing_connection"
+            android:contentDescription="@string/auth_testing_connection"/>
 
         <CheckBox
             android:id="@+id/oauth_onOff_check"
@@ -113,6 +119,7 @@
             android:onClick="onCheckClick"
             android:text="@string/oauth_check_onoff"
             android:textAppearance="?android:attr/textAppearanceSmall"
+            android:contentDescription="@string/oauth_check_onoff"
             />
 
         <EditText
@@ -124,7 +131,7 @@
             android:text="@string/oauth2_url_endpoint_auth"
             android:singleLine="true"
             android:inputType="textUri"
-            android:visibility="gone" >
+            android:visibility="gone">
         </EditText>
 
         <EditText
@@ -136,7 +143,7 @@
             android:text="@string/oauth2_url_endpoint_access"
             android:singleLine="true"
             android:inputType="textUri"
-            android:visibility="gone" />
+            android:visibility="gone"/>
 
         <EditText
             android:id="@+id/account_username"
@@ -144,7 +151,8 @@
             android:layout_height="wrap_content"
             android:ems="10"
             android:hint="@string/auth_username"
-            android:inputType="textNoSuggestions" 
+            android:inputType="textNoSuggestions"
+            android:contentDescription="@string/auth_username"
 			/>
 
 		<EditText
@@ -154,7 +162,8 @@
 		    android:drawablePadding="5dp"
 		    android:ems="10"
 		    android:hint="@string/auth_password"
-		    android:inputType="textPassword" 
+		    android:inputType="textPassword"
+		    android:contentDescription="@string/auth_password"
             />
         
         <TextView
@@ -165,7 +174,8 @@
             android:drawableLeft="@android:drawable/stat_notify_sync"
             android:drawablePadding="5dp"
             android:gravity="center_vertical"
-            android:text="@string/auth_unauthorized" />
+            android:text="@string/auth_unauthorized"
+            android:contentDescription="@string/auth_unauthorized"/>
 
         <Button
             android:id="@+id/buttonOK"
@@ -174,7 +184,8 @@
             android:layout_gravity="center_horizontal"
             android:enabled="false"
             android:onClick="onOkClick"
-            android:text="@string/setup_btn_connect" />
+            android:text="@string/setup_btn_connect"
+            android:contentDescription="@string/setup_btn_connect"/>
 
         <Button
             android:id="@+id/welcome_link"
@@ -185,7 +196,8 @@
             android:paddingBottom="5dp"
             android:paddingTop="5dp"
             android:text="@string/auth_register"
-            android:textColor="#0000FF"/>
+            android:textColor="#0000FF"
+            android:contentDescription="@string/auth_register"/>
 
     </LinearLayout>
 

+ 24 - 5
res/layout/uploader_layout.xml

@@ -31,10 +31,29 @@
 			android:layout_height="fill_parent" android:divider="@drawable/uploader_list_separator"
 			android:dividerHeight="1dip"></ListView>
 	</FrameLayout>
-	<LinearLayout android:id="@+id/linearLayout1"
-		android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:layout_height="wrap_content" android:orientation="vertical">
-		<Button android:layout_gravity="bottom" android:layout_height="wrap_content"
-			android:layout_width="fill_parent" android:id="@+id/uploader_choose_folder"
-			android:text="@string/uploader_btn_upload_text"/>
+
+	<LinearLayout
+	    android:id="@+id/linearLayout1"
+	    android:layout_width="fill_parent"
+	    android:layout_height="wrap_content"
+	    android:layout_alignParentBottom="true"
+	    android:orientation="horizontal" >
+
+		<Button
+		    android:id="@+id/uploader_new_folder"
+		    android:layout_width="fill_parent"
+		    android:layout_height="wrap_content"
+		    android:layout_gravity="bottom"
+		    android:layout_weight="1"
+		    android:text="@string/uploader_btn_new_folder_text" />
+		
+		<Button
+		    android:id="@+id/uploader_choose_folder"
+		    android:layout_width="fill_parent"
+		    android:layout_height="wrap_content"
+		    android:layout_gravity="bottom"
+		    android:layout_weight="1"
+		    android:text="@string/uploader_btn_upload_text" />
+
 	</LinearLayout>
 </RelativeLayout>

+ 12 - 6
res/menu/main_menu.xml

@@ -24,37 +24,43 @@
         android:icon="@drawable/ic_action_upload"
         android:orderInCategory="2"
         android:showAsAction="always"
-        android:title="@string/actionbar_upload"/>
+        android:title="@string/actionbar_upload"
+        android:contentDescription="@string/actionbar_upload"/>
     <item
         android:id="@+id/action_create_dir"
         android:icon="@drawable/ic_action_create_dir"
         android:orderInCategory="2"
         android:showAsAction="always"
-        android:title="@string/actionbar_mkdir"/>
+        android:title="@string/actionbar_mkdir"
+        android:contentDescription="@string/actionbar_mkdir"/>
     <item
         android:id="@+id/action_sync_account"
         android:icon="@drawable/ic_action_refresh"
         android:orderInCategory="2"
         android:showAsAction="never"
-        android:title="@string/actionbar_sync"/>
+        android:title="@string/actionbar_sync"
+        android:contentDescription="@string/actionbar_sync"/>
     <item
         android:id="@+id/action_settings"
         android:icon="@drawable/ic_action_settings"
         android:orderInCategory="2"
         android:showAsAction="never"
-        android:title="@string/actionbar_settings"/>
+        android:title="@string/actionbar_settings"
+        android:contentDescription="@string/actionbar_settings"/>
     <item
         android:id="@+id/action_logger"
         android:icon="@drawable/ic_action_settings"
         android:orderInCategory="2"
         android:showAsAction="never"
-        android:title="@string/actionbar_logger"/>
+        android:title="@string/actionbar_logger"
+        android:contentDescription="@string/actionbar_logger"/>
 	<item
         android:id="@+id/action_sort"
         android:icon="@android:drawable/ic_menu_sort_alphabetically"
         android:orderInCategory="2"
         android:showAsAction="never"
-        android:title="@string/actionbar_sort"/>
+        android:title="@string/actionbar_sort"
+        android:contentDescription="@string/actionbar_sort"/>
 
     <!-- <item android:id="@+id/search" android:title="@string/actionbar_search" android:icon="@drawable/ic_action_search"></item> -->
 

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

@@ -148,7 +148,6 @@
   <string name="auth_no_net_conn_title">لا يتوفر اتصال</string>
   <string name="auth_nossl_plain_ok_title">الاتصال الآمن غير متاح</string>
   <string name="auth_connection_established">تم الاتصال</string>
-  <string name="auth_testing_connection">اختبار الاتصال ...</string>
   <string name="auth_not_configured_title">إعداد الخادم غير صحيحة</string>
   <string name="auth_account_not_new">الحساب لنفس المستخدم والخادم موجود مسبقا على الجهاز </string>
   <string name="auth_account_not_the_same">المستخدم المدخل لا يتوافق مع المستخدم الموجود في الحساب </string>
@@ -258,4 +257,5 @@
   <string name="saml_authentication_wrong_pass">كلمة مرور خاطئة</string>
   <string name="folder_picker_choose_button_text">اختيار</string>
   <string name="prefs_category_security">الأمان</string>
+  <string name="auth_host_address">عنوان الخادم</string>
 </resources>

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

@@ -164,7 +164,7 @@ Aşağıda göstərilən %5$s-də olan daxili və xarici fayl(lar) link edilmiş
   <string name="auth_no_net_conn_title">Şəbəkə qoşulması yoxdur</string>
   <string name="auth_nossl_plain_ok_title">Təhlükəsiz qoşulma mümkün deyil.</string>
   <string name="auth_connection_established">Əlaqə quruldu</string>
-  <string name="auth_testing_connection">Qoşulma test edilir...</string>
+  <string name="auth_testing_connection">Qoşulma test edilir</string>
   <string name="auth_not_configured_title">Yalnış qurulmuş server konfiqurasiyası</string>
   <string name="auth_account_not_new">Avadanlıqda eyni istifadəçi və server üçün artıq hesab mövcuddur</string>
   <string name="auth_account_not_the_same">Daxil edilən hesab bu hesabla üst-üstə düşmür</string>
@@ -264,6 +264,8 @@ inzibatçınızla əlaqə saxlayasınız.</string>
   <string name="share_link_file_error">Bu faylın yada qovluğun paylaşımı zamanı səhv baş verdi </string>
   <string name="unshare_link_file_no_exist">Paylaşımı dayandırmaq olmur. Xahiş olunur fayl mövcudluğunu yoxlayasınız</string>
   <string name="unshare_link_file_error">Bu fayl və ya qovluğun yayımlanmasının dayandırılmasında səhv baş verdi</string>
+  <string name="share_link_password_title">Şifrəni daxil et</string>
+  <string name="share_link_empty_password">Siz şifrəni daxil etməlisiniz</string>
   <string name="activity_chooser_send_file_title">Göndər</string>
   <string name="copy_link">linki nüsxələ</string>
   <string name="clipboard_text_copied">Mübadilə buferinə nüsxələndi</string>
@@ -304,4 +306,6 @@ inzibatçınızla əlaqə saxlayasınız.</string>
   <string name="prefs_instant_video_upload_path_title">Video ünvanını yüklə</string>
   <string name="download_folder_failed_content">Qovluğun endirilməsinin %1$s hissəsi tamamlana bilməz </string>
   <string name="subject_token">%1$s paylaşdı \"%2$s\" sizinlə</string>
+  <string name="auth_refresh_button">Qoşulmanı yenilə</string>
+  <string name="auth_host_address">Server ünvanı</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Няма интернет връзка</string>
   <string name="auth_nossl_plain_ok_title">Няма сигурна връзка</string>
   <string name="auth_connection_established">Осъществена връзка</string>
-  <string name="auth_testing_connection">Проверка на свързаност...</string>
   <string name="auth_not_configured_title">Неправилно зададена сървърна конфигурация.</string>
   <string name="auth_account_not_new">Профил за същия потребител на същия сървър е вече настроен на устройството.</string>
   <string name="auth_account_not_the_same">Въведният потребител не съвпада с потребителя на профила.</string>
@@ -299,4 +298,5 @@
   <string name="prefs_category_security">Сигурност</string>
   <string name="prefs_instant_video_upload_path_title">Качване на видео път</string>
   <string name="download_folder_failed_content">Свалянето на директорията %1$s не може да бъде завършено</string>
+  <string name="auth_host_address">Адрес на сървъра</string>
 </resources>

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

@@ -146,7 +146,6 @@
   <string name="auth_no_net_conn_title">নেটওয়ার্ক সংযোগ নেই</string>
   <string name="auth_nossl_plain_ok_title">নিরাপদ যোগাযোগ পাওয়া গেলনা</string>
   <string name="auth_connection_established">যোগাযোগ স্থাপিত হয়েছে</string>
-  <string name="auth_testing_connection">যোগাযোগ পরীক্ষা করা হচ্ছে...</string>
   <string name="auth_not_configured_title">সার্ভারের কনফিগারেশনে ভুল রয়েছে</string>
   <string name="auth_account_not_new">এই যন্ত্রে ইতোমধ্যে এই ব্যবহারকারী এবং সার্ভারের নামে একটি একাউন্ট রয়েছে</string>
   <string name="auth_account_not_the_same">এই একাউন্টের ব্যবহারকারীর সঙ্গে প্রদত্ত ব্যবহারকারী মেলেনা</string>
@@ -268,4 +267,5 @@
   <string name="folder_picker_choose_button_text">বেছে নিন</string>
   <string name="move_file_not_found">সরাতে ব্যার্থ হলো। ফাইলটি রয়েছে কিনা দেখুন।</string>
   <string name="prefs_category_security">নিরাপত্তা</string>
+  <string name="auth_host_address">সার্ভার ঠিকানা</string>
 </resources>

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

@@ -31,4 +31,5 @@
   <string name="saml_authentication_wrong_pass">Pogrešna lozinka</string>
   <string name="folder_picker_choose_button_text">Izaberite</string>
   <string name="prefs_category_security">Sigurnost</string>
+  <string name="auth_host_address">Adresa servera</string>
 </resources>

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

@@ -156,7 +156,6 @@
   <string name="auth_no_net_conn_title">Sense connexió de xarxa</string>
   <string name="auth_nossl_plain_ok_title">La connexió segura no està disponible.</string>
   <string name="auth_connection_established">S\'ha establert la connexió</string>
-  <string name="auth_testing_connection">S\'està comprovant la connexió...</string>
   <string name="auth_not_configured_title">La configuració del servidor està malformada</string>
   <string name="auth_account_not_new">Ja hi ha un compte al dispositiu pel mateix usuari i mateix servidor</string>
   <string name="auth_account_not_the_same">L\'usuari introduït no coincideix amb l\'usuari d\'aquest compte</string>
@@ -270,8 +269,11 @@
   <string name="downloader_download_file_not_found">El fitxer ja no està disponible en el servidor</string>
   <string name="prefs_category_accounts">Comptes</string>
   <string name="prefs_add_account">Afegeix compte</string>
+  <string name="log_progress_dialog_text">Carregant dades...</string>
   <string name="saml_authentication_required_text">Es requereix autenticació</string>
   <string name="saml_authentication_wrong_pass">Contrasenya incorrecta</string>
+  <string name="actionbar_move">Moure</string>
   <string name="folder_picker_choose_button_text">Escull</string>
   <string name="prefs_category_security">Seguretat</string>
+  <string name="auth_host_address">Adreça del servidor</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Žádné síťové spojení</string>
   <string name="auth_nossl_plain_ok_title">Zabezpečené spojení není k dispozici</string>
   <string name="auth_connection_established">Spojení navázáno</string>
-  <string name="auth_testing_connection">Zkouším spojení...</string>
+  <string name="auth_testing_connection">Testuje se připojení</string>
   <string name="auth_not_configured_title">Neplatné nastavení serveru</string>
   <string name="auth_account_not_new">Účet pro stejného uživatele a server již v zařízení existuje</string>
   <string name="auth_account_not_the_same">Zadaný uživatel neodpovídá uživateli tohoto účtu</string>
@@ -302,4 +302,6 @@ správce systému.</string>
   <string name="prefs_instant_video_upload_path_title">Cesta pro nahrávání videí</string>
   <string name="download_folder_failed_content">Stažení adresáře %1$s nemohlo být dokončeno</string>
   <string name="subject_token">%1$s sdílí \"%2$s\" s vámi</string>
+  <string name="auth_refresh_button">Obnovit připojení</string>
+  <string name="auth_host_address">Adresa serveru</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Ingen netværksforbindelse</string>
   <string name="auth_nossl_plain_ok_title">Sikker forbindelse ikke tilgængelig.</string>
   <string name="auth_connection_established">Forbindelse oprettet</string>
-  <string name="auth_testing_connection">Afprøver forbindelse ...</string>
+  <string name="auth_testing_connection">Tester forbindelsen</string>
   <string name="auth_not_configured_title">Misdannet server konfiguration</string>
   <string name="auth_account_not_new">En konto for den samme bruger og server eksisterer allerede på enheden</string>
   <string name="auth_account_not_the_same">Den indtastede bruger passer ikke til brugeren for denne konto</string>
@@ -301,4 +301,6 @@
   <string name="prefs_instant_video_upload_path_title">Sti til videoupload</string>
   <string name="download_folder_failed_content">Download af %1$s mappe kunne ikke fuldføres</string>
   <string name="subject_token">%1$s delt \"%2$s\" med dig</string>
+  <string name="auth_refresh_button">Genopfrisk forbindelsen</string>
+  <string name="auth_host_address">Serveradresse</string>
 </resources>

+ 1 - 0
res/values-de-rAT/strings.xml

@@ -12,4 +12,5 @@
   <string name="common_cancel">Abbrechen</string>
   <string name="common_error">Fehler</string>
   <string name="empty"></string>
+  <string name="auth_host_address">Adresse des Servers</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Keine Netzwerkverbindung</string>
   <string name="auth_nossl_plain_ok_title">Sichere Verbindung nicht verfügbar.</string>
   <string name="auth_connection_established">Verbindung hergestellt</string>
-  <string name="auth_testing_connection">Verbindungstest…</string>
+  <string name="auth_testing_connection">Verbindung testen</string>
   <string name="auth_not_configured_title">Fehlerhafte Server Konfiguration</string>
   <string name="auth_account_not_new">Ein Benutzerkonto für den gleichen Benutzer und Server existiert auf diesem Gerät bereits</string>
   <string name="auth_account_not_the_same">Der eingegebene Benutzer passt nicht zu dem Benutzer dieses Benutzerkontos</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
   <string name="download_folder_failed_content">Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden</string>
   <string name="subject_token">%1$s hat „%2$s“ mit Ihnen geteilt</string>
+  <string name="auth_refresh_button">Verbindung aktualisieren</string>
+  <string name="auth_host_address">Serveradresse</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Keine Netzwerkverbindung</string>
   <string name="auth_nossl_plain_ok_title">Sichere Verbindung nicht verfügbar.</string>
   <string name="auth_connection_established">Verbindung hergestellt</string>
-  <string name="auth_testing_connection">Verbindung testen</string>
+  <string name="auth_testing_connection">Verbindung testen</string>
   <string name="auth_not_configured_title">Fehlerhafte Server Konfiguration</string>
   <string name="auth_account_not_new">Ein Benutzerkonto für den gleichen Benutzer und Server existiert auf diesem Gerät bereits</string>
   <string name="auth_account_not_the_same">Der eingegebene Benutzer passt nicht zu dem Benutzer dieses Benutzerkontos</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Verzeichnis zum Hochladen der Videos</string>
   <string name="download_folder_failed_content">Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden</string>
   <string name="subject_token">%1$s hat „%2$s“ mit Dir geteilt</string>
+  <string name="auth_refresh_button">Verbindung aktualisieren</string>
+  <string name="auth_host_address">Serveradresse</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Δεν υπάρχει σύνδεση στο δίκτυο</string>
   <string name="auth_nossl_plain_ok_title">Μη διαθέσιμη ασφαλής σύνδεση.</string>
   <string name="auth_connection_established">Επετεύχθη σύνδεση</string>
-  <string name="auth_testing_connection">Έλεγχος σύνδεσης...</string>
+  <string name="auth_testing_connection">Έλεγχος σύνδεσης</string>
   <string name="auth_not_configured_title">Λανθασμένες ρυθμίσεις διακομιστή</string>
   <string name="auth_account_not_new">Ένας λογαριασμός για τον ίδιο χρήστη και διακομιστή υπάρχει ήδη στη συσκευή</string>
   <string name="auth_account_not_the_same">Ο χρήστης που εισάγατε δεν ταιριάζει με το χρήστη αυτού του λογαριασμού</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Διαδρομή Μεταφόρτωσης Βίντεο</string>
   <string name="download_folder_failed_content">Η λήψη του φακέλου %1$s δεν ολοκληρώθηκε με επιτυχία.</string>
   <string name="subject_token">%1$s μοιράστηκε \"%2$s\" μαζί σας</string>
+  <string name="auth_refresh_button">Ανανέωση σύνδεσης</string>
+  <string name="auth_host_address">Διεύθυνση διακομιστή</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">No network connection</string>
   <string name="auth_nossl_plain_ok_title">Secure connection unavailable.</string>
   <string name="auth_connection_established">Connection established</string>
-  <string name="auth_testing_connection">Testing connection</string>
+  <string name="auth_testing_connection">Testing connection</string>
   <string name="auth_not_configured_title">Malformed server configuration</string>
   <string name="auth_account_not_new">An account for the same user and server already exists on the device</string>
   <string name="auth_account_not_the_same">The entered user does not match the user of this account</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Upload Video Path</string>
   <string name="download_folder_failed_content">Download of %1$s folder could not be completed</string>
   <string name="subject_token">%1$s shared \"%2$s\" with you</string>
+  <string name="auth_refresh_button">Refresh connection</string>
+  <string name="auth_host_address">Server address</string>
 </resources>

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

@@ -111,7 +111,6 @@
   <string name="auth_no_net_conn_title">Neniu reta konekto</string>
   <string name="auth_nossl_plain_ok_title">Sekura konekto ne haveblas.</string>
   <string name="auth_connection_established">Konekto stariĝis</string>
-  <string name="auth_testing_connection">Testante konekton...</string>
   <string name="auth_not_configured_title">Malĝuste formita servilo-agordo</string>
   <string name="auth_unknown_error_title">Nekonata eraro okazis</string>
   <string name="auth_unknown_host_title">Ne eblis trovi gastigon</string>
@@ -194,4 +193,5 @@
   <string name="saml_authentication_wrong_pass">Malĝusta pasvorto</string>
   <string name="folder_picker_choose_button_text">Elekti</string>
   <string name="prefs_category_security">Sekuro</string>
+  <string name="auth_host_address">Servila adreso</string>
 </resources>

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

@@ -159,7 +159,6 @@
   <string name="auth_no_net_conn_title">Sin conexión de red</string>
   <string name="auth_nossl_plain_ok_title">Conexión segura no disponible.</string>
   <string name="auth_connection_established">Conexión establecida</string>
-  <string name="auth_testing_connection">Probando conexión...</string>
   <string name="auth_not_configured_title">Configuración de servidor en formato incorrecto</string>
   <string name="auth_account_not_new">Una cuenta para el mismo usuario y servidor ya existe en el dispositivo</string>
   <string name="auth_account_not_the_same">El usuario ingresado no concuerda con el usuario de esta cuenta</string>
@@ -296,4 +295,5 @@
   <string name="prefs_category_security">Seguridad</string>
   <string name="prefs_instant_video_upload_path_title">Dirección de subida del video</string>
   <string name="download_folder_failed_content">La descarga de la carpeta %1$s no pudo ser completada</string>
+  <string name="auth_host_address">Dirección del servidor</string>
 </resources>

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

@@ -105,7 +105,6 @@
   <string name="auth_no_net_conn_title">Sin conexión de red</string>
   <string name="auth_nossl_plain_ok_title">Conexión segura no disponible.</string>
   <string name="auth_connection_established">Conexión establecida</string>
-  <string name="auth_testing_connection">Probando conexión...</string>
   <string name="auth_not_configured_title">La configuración del servidor está mal formada</string>
   <string name="auth_unknown_error_title">Ocurrió un error desconocido</string>
   <string name="auth_unknown_host_title">No se puede encontrar el host</string>

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

@@ -132,7 +132,6 @@
   <string name="auth_no_net_conn_title">Sin conexión de red</string>
   <string name="auth_nossl_plain_ok_title">Conexión segura no disponible.</string>
   <string name="auth_connection_established">Conexión establecida</string>
-  <string name="auth_testing_connection">Probando conexión...</string>
   <string name="auth_not_configured_title">Configuración de servidor en formato incorrecto</string>
   <string name="auth_account_not_new">Una cuenta para el mismo usuario y servidor ya existen en el dispositivo</string>
   <string name="auth_account_not_the_same">El usuario introducido no concuerda con el usuario de esta cuenta</string>
@@ -219,4 +218,5 @@
   <string name="saml_authentication_wrong_pass">Contraseña incorrecta</string>
   <string name="folder_picker_choose_button_text">Seleccionar</string>
   <string name="prefs_category_security">Seguridad</string>
+  <string name="auth_host_address">Dirección del servidor</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Sin conexión de red</string>
   <string name="auth_nossl_plain_ok_title">Conexión segura no disponible.</string>
   <string name="auth_connection_established">Conexión establecida</string>
-  <string name="auth_testing_connection">Probando conexión...</string>
+  <string name="auth_testing_connection">Comprobando la conexión</string>
   <string name="auth_not_configured_title">Configuración de servidor en formato incorrecto</string>
   <string name="auth_account_not_new">Ya existe una cuenta en este dispositivo con los mismos datos de Usuario y Servidor</string>
   <string name="auth_account_not_the_same">El usuario introducido no concuerda con el usuario de esta cuenta</string>
@@ -261,6 +261,8 @@
   <string name="share_link_file_error">Ocurrió un error al tratar de compartir este archivo o carpeta</string>
   <string name="unshare_link_file_no_exist">No se puede dejar de compartir. Revise si el archivo existe</string>
   <string name="unshare_link_file_error">Ocurrió un error al tratar de ya no compartir este archivo o carpeta</string>
+  <string name="share_link_password_title">Introduzca una contraseña</string>
+  <string name="share_link_empty_password">Debe introducir una contraseña</string>
   <string name="activity_chooser_send_file_title">Enviar</string>
   <string name="copy_link">Copiar enlace</string>
   <string name="clipboard_text_copied">Copiado al portapapeles</string>
@@ -301,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Guardar videos subidos en la carpeta:</string>
   <string name="download_folder_failed_content">La descarga de la carpeta %1$s no ha podido ser completada</string>
   <string name="subject_token">%1$s compartió \"%2$s\" contigo</string>
+  <string name="auth_refresh_button">Refrescar la conexión</string>
+  <string name="auth_host_address">Dirección del servidor</string>
 </resources>

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

@@ -164,7 +164,6 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi
   <string name="auth_no_net_conn_title">Võrguühendust pole</string>
   <string name="auth_nossl_plain_ok_title">Turvaline ühendus pole saadaval</string>
   <string name="auth_connection_established">Saadi ühendus</string>
-  <string name="auth_testing_connection">Ühenduse testimine...</string>
   <string name="auth_not_configured_title">Vigases vormingus server seadistus</string>
   <string name="auth_account_not_new">Sama konto  kasutaja ja server on juba selles seadmes olemas</string>
   <string name="auth_account_not_the_same">Sisestatud kasutaja ei kattu selle konto kasutajaga</string>
@@ -298,4 +297,5 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi
   <string name="forbidden_permissions_move">selle faili liigutamiseks</string>
   <string name="prefs_category_instant_uploading">Kohesed üleslaadimised</string>
   <string name="prefs_category_security">Turvalisus</string>
+  <string name="auth_host_address">Serveri aadress</string>
 </resources>

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

@@ -158,7 +158,6 @@
   <string name="auth_no_net_conn_title">Ez dago sare konexiorik</string>
   <string name="auth_nossl_plain_ok_title">Konexio segurua ez dago eskuragarri</string>
   <string name="auth_connection_established">Konexioa ezarri da</string>
-  <string name="auth_testing_connection">Konexioa probatzen...</string>
   <string name="auth_not_configured_title">gaizki egindako server konfigurazioa</string>
   <string name="auth_account_not_new">Erabiltzaile eta zerbitzari hauendako dagoeneko kontu bat  existitzen da gailu honetan</string>
   <string name="auth_account_not_the_same">Sartutako erabiltzaileak ez du bat egiten kontu honetako erabiltzailearekin</string>
@@ -295,4 +294,5 @@ Mesedez, baimendu berriz</string>
   <string name="prefs_category_security">Segurtasuna</string>
   <string name="prefs_instant_video_upload_path_title">Bideo Igoera Bidea</string>
   <string name="download_folder_failed_content">%1$s karpetaren deskarga ezin izan da burutu</string>
+  <string name="auth_host_address">Zerbitzariaren helbidea</string>
 </resources>

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

@@ -140,7 +140,6 @@
   <string name="auth_no_net_conn_title">هیچ ارتباطی به شبکه موجود نیست</string>
   <string name="auth_nossl_plain_ok_title">اتصال امن در دسترس نیست</string>
   <string name="auth_connection_established">اتصال برقرار شد</string>
-  <string name="auth_testing_connection">آزمایش اتصال...</string>
   <string name="auth_not_configured_title">پیکربندی سرور ناقص است</string>
   <string name="auth_account_not_new">یک اکانت با همین نام کاربری و سرور بر روی این دستگاه موجود می‌باشد.</string>
   <string name="auth_account_not_the_same">نام کاربری وارد شده با نام کاربری این اکانت مطابقت ندارد</string>
@@ -240,4 +239,5 @@
   <string name="saml_authentication_wrong_pass">رمز عبور اشتباه است</string>
   <string name="folder_picker_choose_button_text">انتخاب کردن</string>
   <string name="prefs_category_security">امنیت</string>
+  <string name="auth_host_address">آدرس سرور</string>
 </resources>

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

@@ -152,7 +152,6 @@
   <string name="auth_no_net_conn_title">Ei verkkoyhteyttä</string>
   <string name="auth_nossl_plain_ok_title">Salattu yhteys ei ole käytettävissä.</string>
   <string name="auth_connection_established">Yhteys muodostettu</string>
-  <string name="auth_testing_connection">Testataan yhteyttä...</string>
   <string name="auth_not_configured_title">Väärin tehdyt palvelin-asetukset</string>
   <string name="auth_account_not_new">Laitteella on jo tili samalle käyttäjälle ja palvelimelle</string>
   <string name="auth_account_not_the_same">Syötetty käyttäjä ei täsmää tämän tilin käyttäjän kanssa</string>
@@ -280,4 +279,6 @@
   <string name="prefs_category_instant_uploading">Välittömät lähetykset</string>
   <string name="prefs_category_security">Tietoturva</string>
   <string name="subject_token">%1$s jakoi kohteen \"%2$s\" kanssasi</string>
+  <string name="auth_refresh_button">Päivitä yhteys</string>
+  <string name="auth_host_address">Palvelimen osoite</string>
 </resources>

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

@@ -165,7 +165,7 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq
   <string name="auth_no_net_conn_title">Pas de connexion réseau</string>
   <string name="auth_nossl_plain_ok_title">Connexion sécurisée non disponible</string>
   <string name="auth_connection_established">Connexion établie</string>
-  <string name="auth_testing_connection">Test de la connexion</string>
+  <string name="auth_testing_connection">Test de connexion</string>
   <string name="auth_not_configured_title">Configuration du serveur erronée</string>
   <string name="auth_account_not_new">Un compte pour le même utilisateur et serveur existe déjà sur cet appareil</string>
   <string name="auth_account_not_the_same">L\'utilisateur entré ne correspond pas à l\'utilisateur de ce compte</string>
@@ -307,4 +307,6 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq
   <string name="prefs_instant_video_upload_path_title">Répertoire de téléversement des vidéos</string>
   <string name="download_folder_failed_content">Le téléchargement du dossier %1$s n\'a pas pu être achevé</string>
   <string name="subject_token">%1$s a partagé \"%2$s\" avec vous</string>
+  <string name="auth_refresh_button">Actualiser la connexion</string>
+  <string name="auth_host_address">Adresse du serveur</string>
 </resources>

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

@@ -161,16 +161,16 @@ Descárgueo de aquí: %2$s</string>
   <string name="auth_no_net_conn_title">Sen conexión de rede</string>
   <string name="auth_nossl_plain_ok_title">Non hai conexión seguras dispoñíbeis.</string>
   <string name="auth_connection_established">Estabeleceuse a conexión</string>
-  <string name="auth_testing_connection">Comprobando a conexión...</string>
+  <string name="auth_testing_connection">Probando a conexión</string>
   <string name="auth_not_configured_title">Configuración errada do servidor</string>
   <string name="auth_account_not_new">Xa existe unha conta do mesmo usuario e servidor neste dispositivo</string>
   <string name="auth_account_not_the_same">O usuario que introduciu non coincide co usuario desta conta</string>
   <string name="auth_unknown_error_title">Produciuse un erro descoñecido!</string>
   <string name="auth_unknown_host_title">Non foi posíbel atopar a máquina</string>
   <string name="auth_incorrect_path_title">Non se atopou unha instancia do servidor</string>
-  <string name="auth_timeout_title">O servidor tardou demasiado en responder</string>
+  <string name="auth_timeout_title">O servidor tardou de máis en responder</string>
   <string name="auth_incorrect_address_title">URL incorrecto</string>
-  <string name="auth_ssl_general_error_title">Produciuse un fallo ao iniciar o SSL</string>
+  <string name="auth_ssl_general_error_title">Produciuse un fallo ao preparar o SSL</string>
   <string name="auth_ssl_unverified_server_title">Non foi posíbel verificar a identidade do servidor SSL</string>
   <string name="auth_bad_oc_version_title">Versión do servidor non recoñecida</string>
   <string name="auth_wrong_connection_title">Non é posíbel estabelecer a conexión</string>
@@ -304,4 +304,6 @@ Descárgueo de aquí: %2$s</string>
   <string name="prefs_instant_video_upload_path_title">Enviar a ruta do vídeo</string>
   <string name="download_folder_failed_content">Non foi posíbel completar a descarga do cartafol %1$s</string>
   <string name="subject_token">%1$s compartiu «%2$s» con vostede</string>
+  <string name="auth_refresh_button">Actualizar a conexión</string>
+  <string name="auth_host_address">Enderezo do servidor</string>
 </resources>

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

@@ -151,7 +151,6 @@
   <string name="auth_no_net_conn_title">אין חיבור לאינטרנט</string>
   <string name="auth_nossl_plain_ok_title">אין חיבור מוצפן זמין.</string>
   <string name="auth_connection_established">החיבור נוצר</string>
-  <string name="auth_testing_connection">החיבור נבדק…</string>
   <string name="auth_not_configured_title">תצורת השרת פגומה</string>
   <string name="auth_account_not_new">חשבון לאותו משתמש ושרת כבר קיים במכשיר זה</string>
   <string name="auth_account_not_the_same">שם המשתמש שהוכנס לא מתאים לשם המשתמש של חשבון זה</string>
@@ -269,4 +268,5 @@
   <string name="prefs_add_account">הוספת חשבון</string>
   <string name="folder_picker_choose_button_text">בחירה</string>
   <string name="prefs_category_security">אבטחה</string>
+  <string name="auth_host_address">כתובת שרת</string>
 </resources>

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

@@ -64,4 +64,5 @@
   <string name="saml_authentication_wrong_pass">Pogrešna lozinka</string>
   <string name="folder_picker_choose_button_text">Odaberite</string>
   <string name="prefs_category_security">Sigurnost</string>
+  <string name="auth_host_address">Adresa poslužitelja</string>
 </resources>

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

@@ -148,7 +148,6 @@
   <string name="auth_no_net_conn_title">Nincs hálózati kapcsolat</string>
   <string name="auth_nossl_plain_ok_title">Nem érhető el biztonságos kapcsolat.</string>
   <string name="auth_connection_established">A kapcsolat létrejött</string>
-  <string name="auth_testing_connection">Kapcsolat tesztelése...</string>
   <string name="auth_not_configured_title">Hibás a kiszolgáló beállítása</string>
   <string name="auth_account_not_new">Egy bejelentkezési beállítás már létezik ugyanehhez a kiszolgálóhoz és felhasználóhoz</string>
   <string name="auth_account_not_the_same">A megadott felhasználó nem azonos ezzel a belépési jogosultsággal</string>
@@ -253,4 +252,5 @@
   <string name="actionbar_move">Mozgatás</string>
   <string name="folder_picker_choose_button_text">Válasszon</string>
   <string name="prefs_category_security">Biztonság</string>
+  <string name="auth_host_address">A kiszolgáló címe</string>
 </resources>

+ 10 - 0
res/values-ia/strings.xml

@@ -9,25 +9,35 @@
     	<item>Biggest - Smallest</item>-->
   <string name="prefs_category_general">General</string>
   <string name="prefs_category_more">Plus</string>
+  <string name="prefs_accounts">Contos</string>
+  <string name="prefs_log_delete_history_button">Deler historia</string>
   <string name="prefs_help">Adjuta</string>
   <string name="auth_username">Nomine de usator</string>
   <string name="auth_password">Contrasigno</string>
   <string name="sync_string_files">Files</string>
   <string name="setup_btn_connect">Connecte</string>
   <string name="uploader_btn_upload_text">Incargar</string>
+  <string name="uploader_wrn_no_account_title">Nulle contos trovate</string>
   <string name="file_list_seconds_ago">secundas passate</string>
   <string name="file_list_empty">Nihil hic. Incarga alcun cosa!</string>
+  <string name="file_list_folder">dossier</string>
+  <string name="filedetails_size">Dimension:</string>
+  <string name="filedetails_type">Typo:</string>
   <string name="filedetails_download">Discargar</string>
   <string name="action_share_file">Compartir ligamine</string>
   <string name="common_yes">Si</string>
   <string name="common_no">No</string>
   <string name="common_ok">Ok</string>
+  <string name="common_cancel_download">Cancellar discarga</string>
   <string name="common_cancel">Cancellar</string>
   <string name="common_error">Error</string>
   <string name="common_error_unknown">Error Incognite</string>
   <string name="change_password">Cambiar contrasigno</string>
+  <string name="delete_account">Deler conto</string>
   <string name="uploader_info_dirname">Nomine de dossier</string>
   <string name="activity_chooser_send_file_title">Invia</string>
   <string name="empty"></string>
+  <string name="prefs_category_accounts">Contos</string>
+  <string name="saml_authentication_wrong_pass">Contrasigno errate</string>
   <string name="folder_picker_choose_button_text">Seliger</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Tidak ada koneksi internet</string>
   <string name="auth_nossl_plain_ok_title">Sambungan aman tidak tersedia</string>
   <string name="auth_connection_established">Sambungan dibuat</string>
-  <string name="auth_testing_connection">Pengetesan koneksi ...</string>
   <string name="auth_not_configured_title">Konfigurasi server cacat</string>
   <string name="auth_account_not_new">Akun untuk pengguna dan server yang sama sudah ada dalam perangkat</string>
   <string name="auth_account_not_the_same">Pengguna yang dimasukkan tidak cocok dengan pengguna akun ini</string>
@@ -294,4 +293,5 @@
   <string name="forbidden_permissions_move">untuk memindahkan berkas ini</string>
   <string name="prefs_category_instant_uploading">Unggah Cepat</string>
   <string name="prefs_category_security">Keamanan</string>
+  <string name="auth_host_address">Alamat server</string>
 </resources>

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

@@ -28,4 +28,5 @@
   <string name="activity_chooser_send_file_title">Senda</string>
   <string name="empty"></string>
   <string name="folder_picker_choose_button_text">Veldu</string>
+  <string name="auth_host_address">Host nafn netþjóns</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Nessuna connessione di rete</string>
   <string name="auth_nossl_plain_ok_title">Connessione sicura disponibile.</string>
   <string name="auth_connection_established">Connessione stabilita</string>
-  <string name="auth_testing_connection">Prova di connessione in corso...</string>
+  <string name="auth_testing_connection">Prova di connessione</string>
   <string name="auth_not_configured_title">Configurazione non corretta di il server</string>
   <string name="auth_account_not_new">Esiste già un account su questo dispositivo per lo stesso utente e server</string>
   <string name="auth_account_not_the_same">L\'utente digitato non corrisponde all\'utente di questo account</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Percorso di caricamento video</string>
   <string name="download_folder_failed_content">Lo scaricamento della cartella %1$s non può essere completato</string>
   <string name="subject_token">%1$s ha condiviso \"%2$s\" con te</string>
+  <string name="auth_refresh_button">Aggiorna la connessione</string>
+  <string name="auth_host_address">Indirizzo del server</string>
 </resources>

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

@@ -161,7 +161,6 @@
   <string name="auth_no_net_conn_title">ネットワークに接続されていません</string>
   <string name="auth_nossl_plain_ok_title">暗号化通信が利用できません。</string>
   <string name="auth_connection_established">接続が確立しました</string>
-  <string name="auth_testing_connection">接続をテスト中...</string>
   <string name="auth_not_configured_title">サーバー設定が間違っています</string>
   <string name="auth_account_not_new">同じユーザーとサーバーのアカウントがデバイス上にすでに存在します</string>
   <string name="auth_account_not_the_same">入力されたユーザーはこのアカウントのユーザーと一致しません</string>
@@ -304,4 +303,5 @@
   <string name="prefs_instant_video_upload_path_title">動画のアップロードパス</string>
   <string name="download_folder_failed_content">%1$s のフォルダのダウンロードが完了しませんでした。</string>
   <string name="subject_token">%1$sがあなたと\"%2$s\"を共有しました</string>
+  <string name="auth_host_address">サーバーアドレス</string>
 </resources>

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

@@ -153,4 +153,5 @@
   <string name="prefs_category_accounts">ანგარიში</string>
   <string name="folder_picker_choose_button_text">არჩევა</string>
   <string name="prefs_category_security">უსაფრთხოება</string>
+  <string name="auth_host_address">სერვერის მისამართი</string>
 </resources>

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

@@ -84,7 +84,6 @@
   <string name="pincode_stored">App PIN បាន​យក​មកវិញ</string>
   <string name="auth_trying_to_login">កំពុង​​តែ​ព្យាយាម​ដើម្បី​ចូល...</string>
   <string name="auth_no_net_conn_title">គ្មានបណ្តាញ​តភ្ជាប់ទេ</string>
-  <string name="auth_testing_connection">ការតភ្ជាប់កំពុង​តែធ្វើតេស្ត...</string>
   <string name="auth_unknown_error_title">មិនស្គាល់កំហុសបានកើតឡើង!</string>
   <string name="fd_keep_in_sync">រក្សាឯកសាររហូតដល់កាលបរិច្ឆេទ</string>
   <string name="common_rename">ប្ដូរ​ឈ្មោះ</string>
@@ -110,4 +109,5 @@
   <string name="saml_authentication_wrong_pass">ខុស​ពាក្យ​សម្ងាត់</string>
   <string name="folder_picker_choose_button_text">ជ្រើស</string>
   <string name="prefs_category_security">សុវត្ថិភាព</string>
+  <string name="auth_host_address">អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ</string>
 </resources>

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

@@ -32,4 +32,5 @@
   <string name="saml_authentication_wrong_pass">ದುರ್ಬಲ ಗುಪ್ತಪದ</string>
   <string name="folder_picker_choose_button_text">ಆಯ್ಕೆ</string>
   <string name="prefs_category_security">ಭದ್ರತೆ</string>
+  <string name="auth_host_address">ಪರಿಚಾರಕ ಗಣಕಯಂತ್ರದ ವಿಳಾಸ</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">네트워크에 연결할 수 없습니다</string>
   <string name="auth_nossl_plain_ok_title">암호화된 연결을 사용할 수 없습니다.</string>
   <string name="auth_connection_established">연결됨</string>
-  <string name="auth_testing_connection">연결 테스트 중...</string>
   <string name="auth_not_configured_title">서버 설정이 잘못됨</string>
   <string name="auth_account_not_new">같은 사용자와 서버에 대한 계정이 이미 존재합니다</string>
   <string name="auth_account_not_the_same">입력된 사용자가 이 계정의 사용자와 일치하지 않습니다</string>
@@ -302,4 +301,5 @@
   <string name="prefs_instant_video_upload_path_title">동영상 업로드 경로</string>
   <string name="download_folder_failed_content">%1$s 폴더를 다운로드할 수 없습니다</string>
   <string name="subject_token">%1$s에서 \"%2$s\"를 당신과 공유하였습니다.</string>
+  <string name="auth_host_address">서버 주소</string>
 </resources>

+ 1 - 0
res/values-ku-rIQ/strings.xml

@@ -31,4 +31,5 @@
   <string name="uploader_info_dirname">ناوی بوخچه</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">هەژمارەکان</string>
+  <string name="auth_host_address">ناونیشانی ڕاژه</string>
 </resources>

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

@@ -92,4 +92,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Accounten</string>
   <string name="folder_picker_choose_button_text">Auswielen</string>
+  <string name="auth_host_address">Server Adress</string>
 </resources>

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

@@ -2,5 +2,6 @@
 <resources>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
+  <string name="common_error_unknown">ຂໍ້ຜິດພາດທີ່ບໍ່ຮູ້ສາເຫດ</string>
   <string name="empty"></string>
 </resources>

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

@@ -154,7 +154,6 @@
   <string name="auth_no_net_conn_title">Nėra tinklo ryšio</string>
   <string name="auth_nossl_plain_ok_title">Saugus prisijungimas negalimas.</string>
   <string name="auth_connection_established">Ryšys užmegztas</string>
-  <string name="auth_testing_connection">Išbandomas prisijungimas...</string>
   <string name="auth_not_configured_title">Sugadinta serverio konfigūracija</string>
   <string name="auth_account_not_new">To paties vartotojo ir serverio paskyra jau egzistuoja šiame įrenginyje</string>
   <string name="auth_unknown_error_title">Įvyko nežinoma klaida!</string>
@@ -250,4 +249,5 @@
   <string name="saml_authentication_wrong_pass">Neteisingas slaptažodis</string>
   <string name="folder_picker_choose_button_text">Pasirinkite</string>
   <string name="prefs_category_security">Saugumas</string>
+  <string name="auth_host_address">Serverio adresas</string>
 </resources>

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

@@ -92,7 +92,6 @@
   <string name="auth_no_net_conn_title">Nav tīkla savienojumu</string>
   <string name="auth_nossl_plain_ok_title">Nav pieejams drošs savienojums.</string>
   <string name="auth_connection_established">Savienojums ir izveidots</string>
-  <string name="auth_testing_connection">Testē savienojumu...</string>
   <string name="auth_not_configured_title">Slikti formatēta servera konfigurācija</string>
   <string name="auth_unknown_error_title">Gadījās nezināma kļūda!</string>
   <string name="auth_unknown_host_title">Nevarēja atrast datoru</string>
@@ -155,4 +154,5 @@
   <string name="saml_authentication_wrong_pass">Nepareiza parole</string>
   <string name="folder_picker_choose_button_text">Izvēlieties</string>
   <string name="prefs_category_security">Drošība</string>
+  <string name="auth_host_address">Servera adrese</string>
 </resources>

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

@@ -75,7 +75,6 @@
   <string name="auth_no_net_conn_title">Нема мрежна конекција</string>
   <string name="auth_nossl_plain_ok_title">Нема безбедна конекција.</string>
   <string name="auth_connection_established">Конекцијата е воспоставена</string>
-  <string name="auth_testing_connection">Ја тестирам врската...</string>
   <string name="auth_unknown_error_title">Се појави непознаа грешка!</string>
   <string name="auth_unknown_host_title">Не можев да го најдам хостот</string>
   <string name="auth_incorrect_path_title">Серверската инстанца не е пронајдена</string>
@@ -130,4 +129,5 @@
   <string name="saml_authentication_wrong_pass">Погрешна лозинка</string>
   <string name="folder_picker_choose_button_text">Избери</string>
   <string name="prefs_category_security">Безбедност</string>
+  <string name="auth_host_address">Адреса на сервер</string>
 </resources>

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

@@ -52,4 +52,5 @@
   <string name="confirmation_remove_local">Lokal sahaja</string>
   <string name="empty"></string>
   <string name="prefs_category_accounts">Akaun</string>
+  <string name="auth_host_address">Alamat pelayan</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Ingen nettverkstilkobling</string>
   <string name="auth_nossl_plain_ok_title">Sikker tilkobling ikke tilgjengelig.</string>
   <string name="auth_connection_established">Tilkobling opprettet</string>
-  <string name="auth_testing_connection">Tester tilgang...</string>
   <string name="auth_not_configured_title">Feil i server konfigurasjon</string>
   <string name="auth_account_not_new">En konto for samme bruker og server finnes allerede på enheten</string>
   <string name="auth_account_not_the_same">Den innskrevne brukeren matcher ikke brukeren av denne kontoen</string>
@@ -187,6 +186,7 @@
   <string name="auth_fail_get_user_name">Tjeneren din svarer ikke med korrekt bruker-ID, vennligst ta kontakt med en administrator
 	</string>
   <string name="auth_can_not_auth_against_server">Kan ikke autentisere mot denne serveren</string>
+  <string name="auth_account_does_not_exist">Kontoen eksisterer ikke på enheten enda</string>
   <string name="fd_keep_in_sync">Hold filen oppdatert</string>
   <string name="common_rename">Endre navn</string>
   <string name="common_remove">Fjern</string>
@@ -260,6 +260,8 @@
   <string name="share_link_file_error">Det skjedde en feil under deling av denne filen eller mappen</string>
   <string name="unshare_link_file_no_exist">Kan ikke fjerne deling. Sjekk om filen eksisterer.</string>
   <string name="unshare_link_file_error">En feil oppstod ved avslutting av delingen av denne filen eller mappen</string>
+  <string name="share_link_password_title">Skriv inn ett passord</string>
+  <string name="share_link_empty_password">Du må skrive inn ett passord</string>
   <string name="activity_chooser_send_file_title">Send</string>
   <string name="copy_link">Kopier lenke</string>
   <string name="clipboard_text_copied">Kopiert til utklippstavlen</string>
@@ -299,4 +301,6 @@
   <string name="prefs_category_security">Sikkerhet</string>
   <string name="prefs_instant_video_upload_path_title">Sti til video-opplasting</string>
   <string name="download_folder_failed_content">Nedlasting av %1$s mappen kunne ikke fullføres</string>
+  <string name="subject_token">%1$s har delt \"%2$s\" med deg</string>
+  <string name="auth_host_address">Server-adresse</string>
 </resources>

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

@@ -163,7 +163,7 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
   <string name="auth_no_net_conn_title">Geen netwerkverbinding</string>
   <string name="auth_nossl_plain_ok_title">Veilige verbinding niet beschikbaar.</string>
   <string name="auth_connection_established">Verbinding tot stand gebracht</string>
-  <string name="auth_testing_connection">Probeer verbinding...</string>
+  <string name="auth_testing_connection">Testen verbinding</string>
   <string name="auth_not_configured_title">Foutieve server configuratie</string>
   <string name="auth_account_not_new">Er bestaat al een account voor deze gebruiker en server op dit apparaat.</string>
   <string name="auth_account_not_the_same">De opgegeven gebruiker komt niet overeen met de gebruiker van dit account</string>
@@ -306,4 +306,6 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
   <string name="prefs_instant_video_upload_path_title">Upload Video Pad</string>
   <string name="download_folder_failed_content">Download van %1$s map kon niet worden voltooid</string>
   <string name="subject_token">%1$s deelde \"%2$s\" met u</string>
+  <string name="auth_refresh_button">Verversen verbinding</string>
+  <string name="auth_host_address">Serveradres</string>
 </resources>

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

@@ -97,7 +97,6 @@
   <string name="auth_no_net_conn_title">Inga nettilkopling</string>
   <string name="auth_nossl_plain_ok_title">Trygg tilkopling ikkje tilgjengeleg.</string>
   <string name="auth_connection_established">Tilkopling oppretta</string>
-  <string name="auth_testing_connection">Testar tilkopling...</string>
   <string name="auth_not_configured_title">Ugyldig tenarkonfigurasjon</string>
   <string name="auth_unknown_error_title">Ein ukjend feil oppstod!</string>
   <string name="auth_unknown_host_title">Klarte ikkje å finna tenaren</string>
@@ -133,4 +132,5 @@
   <string name="saml_authentication_wrong_pass">Feil passord</string>
   <string name="folder_picker_choose_button_text">Vel</string>
   <string name="prefs_category_security">Tryggleik</string>
+  <string name="auth_host_address">Tenaradresse</string>
 </resources>

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

@@ -77,7 +77,6 @@
   <string name="auth_no_net_conn_title">ਕੋਈ ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ</string>
   <string name="auth_nossl_plain_ok_title">ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।</string>
   <string name="auth_connection_established">ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ ਹੈ</string>
-  <string name="auth_testing_connection">...ਕੁਨੈਕਸ਼ਨ ਟੈਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</string>
   <string name="auth_unknown_error_title">ਅਣਜਾਣ ਗਲਤੀ ਆਈ ਹੈ!</string>
   <string name="auth_unknown_host_title">ਹੋਸਟ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਿਆ</string>
   <string name="auth_ssl_general_error_title">SSL ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ</string>
@@ -123,4 +122,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">ਅਕਾਊਂਟ</string>
   <string name="folder_picker_choose_button_text">ਚੁਣੋ</string>
+  <string name="auth_host_address">ਸਰਵਰ ਐਡਰੈਸ</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Brak połączenia sieciowego</string>
   <string name="auth_nossl_plain_ok_title">Nie można nawiązać bezpiecznego połączenia.</string>
   <string name="auth_connection_established">Połączenie nawiązane</string>
-  <string name="auth_testing_connection">Testowanie połączenia…</string>
   <string name="auth_not_configured_title">Uszkodzona konfiguracja serwera</string>
   <string name="auth_account_not_new">Konto tego samego użytkownika i serwera już istnieje na tym urządzeniu</string>
   <string name="auth_account_not_the_same">Podany login nie pasuje do użytkowników </string>
@@ -299,4 +298,5 @@
   <string name="prefs_category_security">Bezpieczeństwo</string>
   <string name="prefs_instant_video_upload_path_title">Katalog wysyłania dla wideo</string>
   <string name="download_folder_failed_content">Pobieranie %1$s katalogu nie może zostać ukończone</string>
+  <string name="auth_host_address">Adres Serwera</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Sem conexão de rede</string>
   <string name="auth_nossl_plain_ok_title">Conexão segura indisponível.</string>
   <string name="auth_connection_established">Conexão estabelecida</string>
-  <string name="auth_testing_connection">Testando conexão...</string>
   <string name="auth_not_configured_title">Configuração do servidor mal formada</string>
   <string name="auth_account_not_new">Uma conta para o mesmo usuário e servidor já existe no dispositivo</string>
   <string name="auth_account_not_the_same">As informações que o usuário digitou não correspondem ao usuário da conta</string>
@@ -303,4 +302,5 @@
   <string name="prefs_instant_video_upload_path_title">Enviar o Caminho do Vídeo</string>
   <string name="download_folder_failed_content">Baixar %1$s da pasta não pode ser completado</string>
   <string name="subject_token">%1$s compartilhou \"%2$s\" com você</string>
+  <string name="auth_host_address">Endereço do servidor</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Sem ligação à rede</string>
   <string name="auth_nossl_plain_ok_title">Ligação segura indisponível.</string>
   <string name="auth_connection_established">Ligação estabelecida</string>
-  <string name="auth_testing_connection">A testar a ligação...</string>
+  <string name="auth_testing_connection">A testar a ligação</string>
   <string name="auth_not_configured_title">Configuração do servidor incorrecta.</string>
   <string name="auth_account_not_new">Uma conta para este utilizador e servidor já existe no dispositivo</string>
   <string name="auth_account_not_the_same">O utilizador que escreveu não coincide com o nome de utilizador desta conta</string>
@@ -301,4 +301,6 @@
   <string name="prefs_instant_video_upload_path_title">Envio do Caminho do Vídeo</string>
   <string name="download_folder_failed_content">Não foi possível completar o download da pasta %1$s</string>
   <string name="subject_token">%1$s partilhou \"%2$s\" consigo</string>
+  <string name="auth_refresh_button">Recarregar ligação</string>
+  <string name="auth_host_address">Endereço do servidor</string>
 </resources>

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

@@ -157,7 +157,6 @@
   <string name="auth_no_net_conn_title">Nu exista conexiune</string>
   <string name="auth_nossl_plain_ok_title">Conexiune securizată indisponibilă</string>
   <string name="auth_connection_established">Conexiune stabilită</string>
-  <string name="auth_testing_connection">Se testează conexiunea...</string>
   <string name="auth_not_configured_title">Configurație serverului incorectă</string>
   <string name="auth_account_not_new">Un cont pentru același utilizator și server există deja în dispozitiv</string>
   <string name="auth_account_not_the_same">Utilizatorul introdus nu se potrivește cu utilizatorul acestui cont</string>
@@ -292,4 +291,5 @@
   <string name="prefs_category_security">Securitate</string>
   <string name="prefs_instant_video_upload_path_title">Calea de încărcare Video</string>
   <string name="download_folder_failed_content">Descărcarea fișierului %1$s nu s-a finisat</string>
+  <string name="auth_host_address">Adresa server-ului</string>
 </resources>

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

@@ -161,7 +161,7 @@
   <string name="auth_no_net_conn_title">Нет подключения к сети</string>
   <string name="auth_nossl_plain_ok_title">Защищённое соединение недоступно.</string>
   <string name="auth_connection_established">Соединение установлено</string>
-  <string name="auth_testing_connection">Тестирование соединения...</string>
+  <string name="auth_testing_connection">Проверка соединения</string>
   <string name="auth_not_configured_title">Конфигурация сервера задана неверно</string>
   <string name="auth_account_not_new">Учётная запись такого пользователя и сервера уже существует на устройстве</string>
   <string name="auth_account_not_the_same">Введённый пользователь не соответствует этой учётной записи</string>
@@ -304,4 +304,6 @@
   <string name="prefs_instant_video_upload_path_title">Путь для загрузки Видео</string>
   <string name="download_folder_failed_content">Загрузка папки %1$s не может быть завершена</string>
   <string name="subject_token">%1$s предоставил вам доступ к \"%2$s\"</string>
+  <string name="auth_refresh_button">Обновить соединение</string>
+  <string name="auth_host_address">Адрес сервера</string>
 </resources>

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

@@ -55,7 +55,6 @@
   <string name="auth_no_net_conn_title">ජාල සම්බන්ධතාවක් නොමැත</string>
   <string name="auth_nossl_plain_ok_title">ආරක්ෂිත සම්බන්ධතාවක් නොලැබුණි</string>
   <string name="auth_connection_established">සම්බන්ධතාවක් සාදන ලදී</string>
-  <string name="auth_testing_connection">සම්බන්ධතාව පරීක්ෂා කෙරේ</string>
   <string name="auth_not_configured_title">විකෘතිවු හැඩගැසුමක්</string>
   <string name="auth_unknown_error_title">නොදන්නා දෝෂයක් ඇතිවිය</string>
   <string name="auth_unknown_host_title">සේවාදායකයා සොයාගත නොහැක</string>
@@ -81,4 +80,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">ගිණුම්</string>
   <string name="folder_picker_choose_button_text">තෝරන්න</string>
+  <string name="auth_host_address">සේවාදායකයේ ලිපිනය</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Bez sieťového pripojenia</string>
   <string name="auth_nossl_plain_ok_title">Nie je k dispozícii bezpečné pripojenie</string>
   <string name="auth_connection_established">Pripojenie vytvorené</string>
-  <string name="auth_testing_connection">Testovane pripojenia...</string>
   <string name="auth_not_configured_title">Nesprávna konfigurácia servera</string>
   <string name="auth_account_not_new">Účet pre tohoto používateľa a tento server už v tomto zariadení existuje</string>
   <string name="auth_account_not_the_same">Zadané prihlasovacie údaje používateľa sú nesprávne</string>
@@ -301,4 +300,5 @@
   <string name="prefs_instant_video_upload_path_title">Cesta pre nahrávanie videí</string>
   <string name="download_folder_failed_content">Sťahovanie %1$s priečinka nebolo dokončené</string>
   <string name="subject_token">%1$s vám zdieľa „%2$s“</string>
+  <string name="auth_host_address">Adresa servera</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Ni omrežne povezave</string>
   <string name="auth_nossl_plain_ok_title">Varna povezava ni na voljo.</string>
   <string name="auth_connection_established">Povezava je vzpostavljena</string>
-  <string name="auth_testing_connection">Preizkušanje povezave ...</string>
   <string name="auth_not_configured_title">Napačno oblikovane nastavitve strežnika</string>
   <string name="auth_account_not_new">Na napravi račun za istega uporabnika in strežnik že obstaja</string>
   <string name="auth_account_not_the_same">Vpisan uporabnik ni lastnik tega računa</string>
@@ -303,4 +302,5 @@
   <string name="prefs_instant_video_upload_path_title">Pot videa za pošiljanje</string>
   <string name="download_folder_failed_content">Imenika %1$s  ni mogoče prejeti v celoti</string>
   <string name="subject_token">Uporabnik %1$s je omogočil souporabo \"%2$s\".</string>
+  <string name="auth_host_address">Naslov strežnika</string>
 </resources>

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

@@ -67,7 +67,6 @@
   <string name="pincode_stored">PIN-i u ruajt</string>
   <string name="auth_no_net_conn_title">Nuk ka lidhje ne Rrjet</string>
   <string name="auth_connection_established">Lidhja u vendos</string>
-  <string name="auth_testing_connection">Duke testuar lidhjen</string>
   <string name="auth_secure_connection">Lidhja e Sigurt vendos</string>
   <string name="common_rename">Riemërto</string>
   <string name="common_remove">Hiq</string>
@@ -77,4 +76,5 @@
   <string name="saml_authentication_wrong_pass">Fjalëkalim i gabuar</string>
   <string name="folder_picker_choose_button_text">Zgjidh</string>
   <string name="prefs_category_security">Siguria</string>
+  <string name="auth_host_address">Adresa e serverit</string>
 </resources>

+ 16 - 3
res/values-sr/strings.xml

@@ -57,11 +57,16 @@
   <string name="uploader_wrn_no_account_quit_btn_text">Напусти</string>
   <string name="uploader_wrn_no_content_title">Нема садржаја за отпремање</string>
   <string name="uploader_wrn_no_content_text">Садржај није примљен. Нема шта да се отпреми.</string>
+  <string name="uploader_error_forbidden_content">%1$s није дозвољен приступ дељеном садржају</string>
   <string name="uploader_info_uploading">Отпремање</string>
   <string name="file_list_seconds_ago">пре пар секунди</string>
   <string name="file_list_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>
@@ -109,6 +114,11 @@
   <string name="sync_fail_content">Не могу да довршим синхронизацију %1$s</string>
   <string name="sync_fail_content_unauthorized">Неисправна лозинка за %1$s</string>
   <string name="sync_conflicts_in_favourites_ticker">Постоје сукоби</string>
+  <string name="sync_conflicts_in_favourites_content">%1$d држи-синх фајлови нису синхронизовани</string>
+  <string name="sync_fail_in_favourites_ticker">Синхронизација није успела</string>
+  <string name="sync_fail_in_favourites_content">Садржај %1$d фајлова не може бити синхронизован (%2$d сукоба)</string>
+  <string name="sync_foreign_files_forgotten_ticker">Неки локални фајлови нису обрађени</string>
+  <string name="sync_foreign_files_forgotten_content">%1$d фајлова из фасцикле %2$s није се могло копирати у</string>
   <string name="sync_foreign_files_forgotten_explanation">Од верзије 1.3.16, фајлови отпремљени са уређаја се копирају у локалну фасциклу %1$s да би се спречио губитак података када се исти фајл синхронизује са више налога.\n\nЗбог ове измене, сви фајлови отпремљени са претходним верзијама ове апликације се копирају у фасциклу %2$s. Међутим, грешка је онемогућила довршавање ове радње током синхронизације налога. Можете или оставити фајлове како јесу и уклонити линк до %3$s или преместити фајлове у фасциклу %1$s и задржати везу до %4$s.\n\nИспод су наведени локални фајлови и удаљени фајлови у %5$s са којима су повезани.</string>
   <string name="sync_current_folder_was_removed">Фасцикла %1$s више не постоји</string>
   <string name="foreign_files_move">Премести све</string>
@@ -138,7 +148,7 @@
   <string name="media_err_malformed">Медијски фајл није исправно кодиран</string>
   <string name="media_err_timeout">Време истекло у покушавању пуштања</string>
   <string name="media_err_invalid_progressive_playback">Медијски фајл се не може пустити</string>
-  <string name="media_err_unknown">Медијски фајл се не може пустити са фабричким плејером</string>
+  <string name="media_err_unknown">Медијски фајл се не може пустити са системским плејером</string>
   <string name="media_err_security_ex">Безбедносна грешка при покушају пуштања %1$s</string>
   <string name="media_err_io_ex">Улазна грешка при покушају пуштања %1$s</string>
   <string name="media_err_unexpected">Неочекивана грешка при покушају пуштања %1$s</string>
@@ -150,7 +160,7 @@
   <string name="auth_no_net_conn_title">Нема мрежне везе</string>
   <string name="auth_nossl_plain_ok_title">Безбедна веза није доступна.</string>
   <string name="auth_connection_established">Веза је успостављена</string>
-  <string name="auth_testing_connection">Тестирам везу...</string>
+  <string name="auth_testing_connection">Провера везе</string>
   <string name="auth_not_configured_title">Лоше подешавање сервера</string>
   <string name="auth_account_not_new">Налог са истим корисником и сервером већ постоји на уређају</string>
   <string name="auth_account_not_the_same">Унесени корисник се не поклапа са корисником овог налога</string>
@@ -235,6 +245,7 @@
   <string name="placeholder_media_time">12:23:45</string>
   <string name="instant_upload_on_wifi">Отпремај слике само путем бежичне мреже</string>
   <string name="instant_video_upload_on_wifi">Отпремај видео само путем бежичне мреже</string>
+  <string name="instant_upload_path">/InstantUpload</string>
   <string name="conflict_title">Ажурирај сукоб</string>
   <string name="conflict_message">Удаљени фајл %s није синхронизован са локалним. Ако наставите, заменићете фајл на серверу.</string>
   <string name="conflict_keep_both">Задржи оба</string>
@@ -277,7 +288,7 @@
   <string name="log_send_no_mail_app">Нема начина за слање записника. Инсталирајте апликацију е-поште!</string>
   <string name="log_send_mail_subject">Записници %1$s Андроид апликације</string>
   <string name="log_progress_dialog_text">Учитавам податке...</string>
-  <string name="saml_authentication_required_text">Неопходна провера идентитета</string>
+  <string name="saml_authentication_required_text">Неопходна аутентификација</string>
   <string name="saml_authentication_wrong_pass">Погрешна лозинка</string>
   <string name="actionbar_move">Премести</string>
   <string name="file_list_empty_moving">Овде нема ничега. Можете додати фасциклу!</string>
@@ -292,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Путања отпремања видеа</string>
   <string name="download_folder_failed_content">Преузимање фасцикле %1$s не може бити довршено</string>
   <string name="subject_token">%1$s подели „%2$s“ са вама</string>
+  <string name="auth_refresh_button">Освежавање везе</string>
+  <string name="auth_host_address">Адреса сервера</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">Ingen nätverksanslutning</string>
   <string name="auth_nossl_plain_ok_title">Säker anslutning inte tillgänglig.</string>
   <string name="auth_connection_established">Anslutning etablerad</string>
-  <string name="auth_testing_connection">Testar anslutning...</string>
   <string name="auth_not_configured_title">Felaktig konfiguration</string>
   <string name="auth_account_not_new">En användare med samma namn och server finns redan i denna aparat</string>
   <string name="auth_account_not_the_same">Den angivna användaren matchar inte användaren för detta konto</string>
@@ -298,4 +297,5 @@
   <string name="prefs_category_instant_uploading">Direktuppladning</string>
   <string name="prefs_category_security">Säkerhet</string>
   <string name="prefs_instant_video_upload_path_title">Uppladdnings-sökväg för video</string>
+  <string name="auth_host_address">Serveradress</string>
 </resources>

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

@@ -80,7 +80,6 @@
   <string name="auth_no_net_conn_title">வ​லைய​மைப்பு இணைப்பு இல்லை</string>
   <string name="auth_nossl_plain_ok_title">பாதுகாப்பான இணைப்பு காணப்படவில்லை.</string>
   <string name="auth_connection_established">இணைப்பு நிறுவப்பட்டது</string>
-  <string name="auth_testing_connection">இணைப்பு சோதிக்கப்படுகிறது.....</string>
   <string name="auth_not_configured_title">பிறழ்வான தகவமைப்பு</string>
   <string name="auth_unknown_error_title">அறியப்படாத வழு ஏற்பட்டுள்ளது!</string>
   <string name="auth_unknown_host_title">ஓம்புனரை கண்டுப்பிடிக்கமுடியவில்லை</string>
@@ -140,4 +139,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">கணக்குகள்</string>
   <string name="folder_picker_choose_button_text">தெரிவுசெய்க </string>
+  <string name="auth_host_address">சேவையக முகவரி</string>
 </resources>

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

@@ -18,4 +18,5 @@
   <string name="uploader_info_dirname">సంచయం పేరు</string>
   <string name="activity_chooser_send_file_title">పంపించు</string>
   <string name="empty"></string>
+  <string name="auth_host_address">సేవకి చిరునామా</string>
 </resources>

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

@@ -95,7 +95,6 @@
   <string name="auth_no_net_conn_title">ไม่มีการเชื่อมต่อเครือข่ายใดๆ</string>
   <string name="auth_nossl_plain_ok_title">การเชื่อมต่อแบบรักษาความปลอดภัยไม่สามารถใช้งานได้</string>
   <string name="auth_connection_established">ติดตั้งการเชื่อมต่อแล้ว</string>
-  <string name="auth_testing_connection">กำลังทดสอบการเชื่อมต่อ...</string>
   <string name="auth_not_configured_title">การกำหนดค่า Malformed เซิร์ฟเวอร์</string>
   <string name="auth_unknown_error_title">เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ!</string>
   <string name="auth_unknown_host_title">ไม่พบโฮสต์ที่ต้องการ</string>
@@ -157,4 +156,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">บัญชี</string>
   <string name="folder_picker_choose_button_text">เลือก</string>
+  <string name="auth_host_address">ที่อยู่เซิร์ฟเวอร์</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Ağ bağlantısı yok</string>
   <string name="auth_nossl_plain_ok_title">Güvenli bağlantı mevcut değil.</string>
   <string name="auth_connection_established">Bağlantı kuruldu</string>
-  <string name="auth_testing_connection">Bağlantı kontrol ediliyor...</string>
+  <string name="auth_testing_connection">Bağlantı sınanıyor</string>
   <string name="auth_not_configured_title">Hatalı sunucu yapılandırması</string>
   <string name="auth_account_not_new">Cihazda aynı kullanıcı adı ve sunucu için bir hesap zaten mevcut</string>
   <string name="auth_account_not_the_same">Girilen kullanıcı bu hesabın kullanıcısı ile eşleşmiyor</string>
@@ -303,4 +303,6 @@
   <string name="prefs_instant_video_upload_path_title">Video Yükleme Yolu</string>
   <string name="download_folder_failed_content">%1$s klasörün indirilmesi tamamlanamadı</string>
   <string name="subject_token">%1$s sizinle \"%2$s\" paylaşımını yaptı</string>
+  <string name="auth_refresh_button">Bağlantıyı yenile</string>
+  <string name="auth_host_address">Sunucu adresi</string>
 </resources>

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

@@ -44,4 +44,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">ھېساباتلار</string>
   <string name="prefs_category_security">بىخەتەرلىك</string>
+  <string name="auth_host_address">مۇلازىمېتىر ئادرىسى</string>
 </resources>

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

@@ -160,7 +160,7 @@
   <string name="auth_no_net_conn_title">Відсутнє підключення до мережі</string>
   <string name="auth_nossl_plain_ok_title">Безпечне з\'єднання не доступне.</string>
   <string name="auth_connection_established">З\'єднання встановлено</string>
-  <string name="auth_testing_connection">Перевірка з\'єднання</string>
+  <string name="auth_testing_connection">Перевірка з\'єднання</string>
   <string name="auth_not_configured_title">Не вірні налаштування сервер </string>
   <string name="auth_account_not_new">Такий обліковий запис вже існує на пристрої</string>
   <string name="auth_account_not_the_same">Введений користувач не відповідає обліковому запису</string>
@@ -187,6 +187,7 @@
   <string name="auth_fail_get_user_name">Ваш сервер не повертає коректний ідентифікатор користувача, будь ласка зверніться до адміністратора
 ⇥</string>
   <string name="auth_can_not_auth_against_server">Аутентифікація на цьому сервері неможлива</string>
+  <string name="auth_account_does_not_exist">Користвача в пристрої не існуе</string>
   <string name="fd_keep_in_sync">Оновлювати файл</string>
   <string name="common_rename">Перейменувати</string>
   <string name="common_remove">Видалити</string>
@@ -259,6 +260,8 @@
   <string name="share_link_file_error">Виникла помилка при спробі поділитися файлом або текою</string>
   <string name="unshare_link_file_no_exist">Неможливо заборонити доступ. Будь ласка, перевірте, чи існує файл</string>
   <string name="unshare_link_file_error">Виникла помилка при спробі заборонити доступ до файлу або теки</string>
+  <string name="share_link_password_title">Ввести пароль</string>
+  <string name="share_link_empty_password">Ви повинні ввести пароль</string>
   <string name="activity_chooser_send_file_title">Надіслати</string>
   <string name="copy_link">Копіювати посилання</string>
   <string name="clipboard_text_copied">Скопійовано в буфер обміну</string>
@@ -298,4 +301,7 @@
   <string name="prefs_category_security">Безпека</string>
   <string name="prefs_instant_video_upload_path_title">Шлях завантаження відео</string>
   <string name="download_folder_failed_content">Скачування теки %1$s не може бути завершено</string>
+  <string name="subject_token">%1$s розшарено \"%2$s\" з вами</string>
+  <string name="auth_refresh_button">Оновити з\'єднання</string>
+  <string name="auth_host_address">Ареса серверу</string>
 </resources>

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

@@ -137,7 +137,6 @@
   <string name="auth_no_net_conn_title">Không có kết nối mạng</string>
   <string name="auth_nossl_plain_ok_title">Bảo mật kết nối không có giá trị.</string>
   <string name="auth_connection_established">Kết nối đã thiết lập</string>
-  <string name="auth_testing_connection">Đang kiểm tra kết nối...</string>
   <string name="auth_not_configured_title">Thay đổi cấu hình máy chủ </string>
   <string name="auth_account_not_new">Một tài khoản với cùng tên người dùng và máy chủ đã tồn tại trong thiết bị</string>
   <string name="auth_account_not_the_same">Tên người dùng đã nhập không đúng với tên người dùng của tài khoản này</string>
@@ -224,4 +223,5 @@
   <string name="empty"></string>
   <string name="prefs_category_accounts">Tài khoản</string>
   <string name="folder_picker_choose_button_text">Chọn</string>
+  <string name="auth_host_address">Địa chỉ máy chủ</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">没有网络连接</string>
   <string name="auth_nossl_plain_ok_title">安全连接不可用。</string>
   <string name="auth_connection_established">连接已建立。</string>
-  <string name="auth_testing_connection">测试连接……</string>
   <string name="auth_not_configured_title">服务器配置不正确</string>
   <string name="auth_account_not_new">此设备中已经存在同名同服务器的帐号</string>
   <string name="auth_account_not_the_same">输入用户与此帐户的用户不符</string>
@@ -298,4 +297,5 @@
   <string name="prefs_category_security">安全</string>
   <string name="prefs_instant_video_upload_path_title">视频上传路径</string>
   <string name="download_folder_failed_content">%1$s 文件夹的下载无法完成</string>
+  <string name="auth_host_address">服务器地址</string>
 </resources>

+ 1 - 0
res/values-zh-rHK/strings.xml

@@ -72,4 +72,5 @@
   <string name="prefs_category_accounts">帳號</string>
   <string name="saml_authentication_wrong_pass">密碼錯誤</string>
   <string name="prefs_category_security">安全</string>
+  <string name="auth_host_address">伺服器地址</string>
 </resources>

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

@@ -160,7 +160,6 @@
   <string name="auth_no_net_conn_title">沒有網際網路連線</string>
   <string name="auth_nossl_plain_ok_title">安全連線不可用。</string>
   <string name="auth_connection_established">連線已建立</string>
-  <string name="auth_testing_connection">測試連線中…</string>
   <string name="auth_not_configured_title">伺服器設定有問題</string>
   <string name="auth_account_not_new">已經有相同使用者與伺服器的帳號存在於這個裝置</string>
   <string name="auth_account_not_the_same">輸入的使用者與這個帳戶的使用者不一致</string>
@@ -299,4 +298,5 @@
   <string name="prefs_category_security">安全性</string>
   <string name="prefs_instant_video_upload_path_title">影片上傳路徑</string>
   <string name="download_folder_failed_content">%1$s 目錄的下載未完成</string>
+  <string name="auth_host_address">伺服器位址</string>
 </resources>

+ 1 - 0
res/values/setup.xml

@@ -9,6 +9,7 @@
     <string name ="data_folder">owncloud</string>
     <string name ="log_name">Owncloud_</string>
     <string name ="default_display_name_for_root_folder">ownCloud</string>
+    <string name ="user_agent">Mozilla/5.0 (Android) ownCloud</string>
     
     <!-- URLs and flags related -->
     <string name="server_url"></string>

+ 5 - 1
res/values/strings.xml

@@ -53,6 +53,7 @@
     <string name="sync_string_files">Files</string>
     <string name="setup_btn_connect">Connect</string>
     <string name="uploader_btn_upload_text">Upload</string>
+    <string name="uploader_btn_new_folder_text">New folder</string>
     <string name="uploader_top_message">Choose upload folder:</string>
     <string name="uploader_wrn_no_account_title">No account found</string>
     <string name="uploader_wrn_no_account_text">There are no %1$s accounts on your device. Please setup an account first.</string>
@@ -166,7 +167,7 @@
 	<string name="auth_no_net_conn_title">No network connection</string>
 	<string name="auth_nossl_plain_ok_title">Secure connection unavailable.</string>
 	<string name="auth_connection_established">Connection established</string>
-	<string name="auth_testing_connection">Testing connection&#8230;</string>
+	<string name="auth_testing_connection">Testing connection</string>
 	<string name="auth_not_configured_title">Malformed server configuration</string>
 	<string name="auth_account_not_new">An account for the same user and server already exists in the device</string>
 	<string name="auth_account_not_the_same">The entered user does not match the user of this account</string>
@@ -331,4 +332,7 @@
 
 	<string name="subject_token">%1$s shared \"%2$s\" with you</string>
 
+    <string name="auth_refresh_button">Refresh connection</string>
+    <string name="auth_host_address">Server address</string>
+
 </resources>

+ 28 - 2
src/com/owncloud/android/MainApp.java

@@ -22,6 +22,8 @@ package com.owncloud.android;
 
 import android.app.Application;
 import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
 
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
@@ -34,7 +36,9 @@ import com.owncloud.android.lib.common.utils.Log_OC;
  * classes
  */
 public class MainApp extends Application {
-    
+
+    private static final String TAG = MainApp.class.getSimpleName();
+
     private static final String AUTH_ON = "on";
     
     @SuppressWarnings("unused")
@@ -49,7 +53,8 @@ public class MainApp extends Application {
         MainApp.mContext = getApplicationContext();
         
         boolean isSamlAuth = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
-        
+
+        OwnCloudClientManagerFactory.setUserAgent(getUserAgent());
         if (isSamlAuth) {   
             OwnCloudClientManagerFactory.setDefaultPolicy(Policy.SINGLE_SESSION_PER_ACCOUNT);
             
@@ -117,4 +122,25 @@ public class MainApp extends Application {
         return getAppContext().getResources().getString(R.string.log_name);
     }
 
+    // user agent
+    public static String getUserAgent() {
+        String appString = getAppContext().getResources().getString(R.string.user_agent);
+        String packageName = getAppContext().getPackageName();
+        String version = "";
+
+        PackageInfo pInfo = null;
+        try {
+            pInfo = getAppContext().getPackageManager().getPackageInfo(packageName, 0);
+            if (pInfo != null) {
+                version = "/" + pInfo.versionName;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log_OC.e(TAG, "Trying to get packageName", e.getCause());
+        }
+
+       // Mozilla/5.0 (Android) ownCloud /1.7.0
+        String userAgent = appString + version;
+
+        return userAgent;
+    }
 }

+ 1 - 0
src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java

@@ -24,6 +24,7 @@ import android.content.Context;
 import android.net.Uri;
 import android.os.AsyncTask;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientFactory;
 import com.owncloud.android.lib.common.OwnCloudCredentials;

+ 10 - 5
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -145,7 +145,8 @@ public class ThumbnailsCacheManager {
         private FileDataStorageManager mStorageManager;
 
 
-        public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager, Account account) {
+        public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager,
+                                       Account account) {
             // Use a WeakReference to ensure the ImageView can be garbage collected
             mImageViewReference = new WeakReference<ImageView>(imageView);
             if (storageManager == null)
@@ -168,7 +169,8 @@ public class ThumbnailsCacheManager {
                     AccountManager accountMgr = AccountManager.get(MainApp.getAppContext());
 
                     mServerVersion = accountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION);
-                    OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, MainApp.getAppContext());
+                    OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount,
+                            MainApp.getAppContext());
                     mClient = OwnCloudClientManagerFactory.getDefaultSingleton().
                             getClientFor(ocAccount, MainApp.getAppContext());
                 }
@@ -276,18 +278,21 @@ public class ThumbnailsCacheManager {
                     // Download thumbnail from server
                     if (mClient != null && mServerVersion != null) {
                         OwnCloudVersion serverOCVersion = new OwnCloudVersion(mServerVersion);
-                        if (serverOCVersion.compareTo(new OwnCloudVersion(MINOR_SERVER_VERSION_FOR_THUMBS)) >= 0) {
+                        if (serverOCVersion.compareTo(
+                                new OwnCloudVersion(MINOR_SERVER_VERSION_FOR_THUMBS)) >= 0) {
                             try {
                                 int status = -1;
 
-                                String uri = mClient.getBaseUri() + "/index.php/apps/files/api/v1/thumbnail/" +
+                                String uri = mClient.getBaseUri() + "" +
+                                        "/index.php/apps/files/api/v1/thumbnail/" +
                                         px + "/" + px + Uri.encode(file.getRemotePath(), "/");
                                 Log_OC.d("Thumbnail", "URI: " + uri);
                                 GetMethod get = new GetMethod(uri);
                                 status = mClient.executeMethod(get);
                                 if (status == HttpStatus.SC_OK) {
                                     byte[] bytes = get.getResponseBody();
-                                    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
+                                    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0,
+                                            bytes.length);
                                     thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px);
 
                                     // Add thumbnail to cache

+ 52 - 28
src/com/owncloud/android/files/services/FileDownloader.java

@@ -28,6 +28,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Vector;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.authentication.AuthenticatorActivity;
@@ -117,7 +118,8 @@ public class FileDownloader extends Service
         super.onCreate();
         Log_OC.d(TAG, "Creating service");
         mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-        HandlerThread thread = new HandlerThread("FileDownloaderThread", Process.THREAD_PRIORITY_BACKGROUND);
+        HandlerThread thread = new HandlerThread("FileDownloaderThread",
+                Process.THREAD_PRIORITY_BACKGROUND);
         thread.start();
         mServiceLooper = thread.getLooper();
         mServiceHandler = new ServiceHandler(mServiceLooper, this);
@@ -190,8 +192,10 @@ public class FileDownloader extends Service
 
                 // Store file on db with state 'downloading'
                     /*
-                    TODO - check if helps with UI responsiveness, letting only folders use FileDownloaderBinder to check
-                    FileDataStorageManager storageManager = new FileDataStorageManager(account, getContentResolver());
+                    TODO - check if helps with UI responsiveness,
+                    letting only folders use FileDownloaderBinder to check
+                    FileDataStorageManager storageManager =
+                    new FileDataStorageManager(account, getContentResolver());
                     file.setDownloading(true);
                     storageManager.saveFile(file);
                     */
@@ -256,7 +260,8 @@ public class FileDownloader extends Service
     public class FileDownloaderBinder extends Binder implements OnDatatransferProgressListener {
 
         /**
-         * Map of listeners that will be reported about progress of downloads from a {@link FileDownloaderBinder}
+         * Map of listeners that will be reported about progress of downloads from a
+         * {@link FileDownloaderBinder}
          * instance.
          */
         private Map<Long, OnDatatransferProgressListener> mBoundListeners =
@@ -288,7 +293,7 @@ public class FileDownloader extends Service
                         mCurrentDownload.getRemotePath().startsWith(file.getRemotePath()) &&
                         account.name.equals(mCurrentAccount.name)) {
                     /*Log_OC.v(   "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
-                            "Canceling current sync as descendant: " + mCurrentDownload.getRemotePath());*/
+                     "Canceling current sync as descendant: " + mCurrentDownload.getRemotePath());*/
                     mCurrentDownload.cancel();
                 }
             }
@@ -318,8 +323,8 @@ public class FileDownloader extends Service
 
 
         /**
-         * Returns True when the file described by 'file' in the ownCloud account 'account' is downloading or
-         * waiting to download.
+         * Returns True when the file described by 'file' in the ownCloud account 'account'
+         * is downloading or waiting to download.
          * <p/>
          * If 'file' is a directory, returns 'true' if any of its descendant files is downloading or
          * waiting to download.
@@ -368,12 +373,15 @@ public class FileDownloader extends Service
         }
 
         @Override
-        public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer,
-                                       String fileName) {
-            //String key = buildKey(mCurrentDownload.getAccount(), mCurrentDownload.getFile().getRemotePath());
-            OnDatatransferProgressListener boundListener = mBoundListeners.get(mCurrentDownload.getFile().getFileId());
+        public void onTransferProgress(long progressRate, long totalTransferredSoFar,
+                                       long totalToTransfer, String fileName) {
+            //String key = buildKey(mCurrentDownload.getAccount(),
+            // mCurrentDownload.getFile().getRemotePath());
+            OnDatatransferProgressListener boundListener =
+                    mBoundListeners.get(mCurrentDownload.getFile().getFileId());
             if (boundListener != null) {
-                boundListener.onTransferProgress(progressRate, totalTransferredSoFar, totalToTransfer, fileName);
+                boundListener.onTransferProgress(progressRate, totalTransferredSoFar,
+                        totalToTransfer, fileName);
             }
         }
 
@@ -397,7 +405,8 @@ public class FileDownloader extends Service
      * Created with the Looper of a new thread, started in {@link FileUploader#onCreate()}.
      */
     private static class ServiceHandler extends Handler {
-        // don't make it a final class, and don't remove the static ; lint will warn about a possible memory leak
+        // don't make it a final class, and don't remove the static ; lint will warn about a
+        // possible memory leak
         FileDownloader mService;
 
         public ServiceHandler(Looper looper, FileDownloader service) {
@@ -444,7 +453,8 @@ public class FileDownloader extends Service
                 RemoteOperationResult downloadResult = null;
                 try {
                     /// prepare client object to send the request to the ownCloud server
-                    if (mCurrentAccount == null || !mCurrentAccount.equals(mCurrentDownload.getAccount())) {
+                    if (mCurrentAccount == null ||
+                            !mCurrentAccount.equals(mCurrentDownload.getAccount())) {
                         mCurrentAccount = mCurrentDownload.getAccount();
                         mStorageManager = new FileDataStorageManager(
                                 mCurrentAccount,
@@ -452,7 +462,8 @@ public class FileDownloader extends Service
                         );
                     }   // else, reuse storage manager from previous operation
 
-                    // always get client from client manager, to get fresh credentials in case of update
+                    // always get client from client manager, to get fresh credentials in case
+                    // of update
                     OwnCloudAccount ocAccount = new OwnCloudAccount(mCurrentAccount, this);
                     mDownloadClient = OwnCloudClientManagerFactory.getDefaultSingleton().
                             getClientFor(ocAccount, this);
@@ -467,10 +478,12 @@ public class FileDownloader extends Service
                     }
 
                 } catch (AccountsException e) {
-                    Log_OC.e(TAG, "Error while trying to get authorization for " + mCurrentAccount.name, e);
+                    Log_OC.e(TAG, "Error while trying to get authorization for "
+                            + mCurrentAccount.name, e);
                     downloadResult = new RemoteOperationResult(e);
                 } catch (IOException e) {
-                    Log_OC.e(TAG, "Error while trying to get authorization for " + mCurrentAccount.name, e);
+                    Log_OC.e(TAG, "Error while trying to get authorization for "
+                            + mCurrentAccount.name, e);
                     downloadResult = new RemoteOperationResult(e);
 
                 } finally {
@@ -478,16 +491,19 @@ public class FileDownloader extends Service
                         "Removing payload " + mCurrentDownload.getRemotePath());*/
 
                     Pair<DownloadFileOperation, String> removeResult =
-                            mPendingDownloads.removePayload(mCurrentAccount, mCurrentDownload.getRemotePath());
+                            mPendingDownloads.removePayload(mCurrentAccount,
+                                    mCurrentDownload.getRemotePath());
 
                     /// notify result
                     notifyDownloadResult(mCurrentDownload, downloadResult);
 
-                    sendBroadcastDownloadFinished(mCurrentDownload, downloadResult, removeResult.second);
+                    sendBroadcastDownloadFinished(mCurrentDownload, downloadResult,
+                            removeResult.second);
                 }
             } else {
                 // Cancel the transfer
-                Log_OC.d(TAG, "Account " + mCurrentDownload.getAccount().toString() + " doesn't exist");
+                Log_OC.d(TAG, "Account " + mCurrentDownload.getAccount().toString() +
+                        " doesn't exist");
                 cancelDownloadsForAccount(mCurrentDownload.getAccount());
 
             }
@@ -569,7 +585,8 @@ public class FileDownloader extends Service
      * Callback method to update the progress bar in the status notification.
      */
     @Override
-    public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filePath) {
+    public void onTransferProgress(long progressRate, long totalTransferredSoFar,
+                                   long totalToTransfer, String filePath) {
         int percent = (int) (100.0 * ((double) totalTransferredSoFar) / ((double) totalToTransfer));
         if (percent != mLastPercent) {
             mNotificationBuilder.setProgress(100, percent, totalToTransfer < 0);
@@ -588,7 +605,8 @@ public class FileDownloader extends Service
      * @param downloadResult Result of the download operation.
      * @param download       Finished download operation
      */
-    private void notifyDownloadResult(DownloadFileOperation download, RemoteOperationResult downloadResult) {
+    private void notifyDownloadResult(DownloadFileOperation download,
+                                      RemoteOperationResult downloadResult) {
         mNotificationManager.cancel(R.string.downloader_download_in_progress_ticker);
         if (!downloadResult.isCancelled()) {
             int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker :
@@ -612,16 +630,19 @@ public class FileDownloader extends Service
 
                 // let the user update credentials with one click
                 Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
-                updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, download.getAccount());
+                updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT,
+                        download.getAccount());
                 updateAccountCredentials.putExtra(
-                        AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN
+                        AuthenticatorActivity.EXTRA_ACTION,
+                        AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN
                 );
                 updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                 updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND);
                 mNotificationBuilder
                         .setContentIntent(PendingIntent.getActivity(
-                                this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT));
+                                this, (int) System.currentTimeMillis(), updateAccountCredentials,
+                                PendingIntent.FLAG_ONE_SHOT));
 
             } else {
                 // TODO put something smart in showDetailsIntent
@@ -632,7 +653,8 @@ public class FileDownloader extends Service
             }
 
             mNotificationBuilder.setContentText(
-                    ErrorMessageAdapter.getErrorCauseMessage(downloadResult, download, getResources())
+                    ErrorMessageAdapter.getErrorCauseMessage(downloadResult, download,
+                            getResources())
             );
             mNotificationManager.notify(tickerId, mNotificationBuilder.build());
 
@@ -650,7 +672,8 @@ public class FileDownloader extends Service
 
 
     /**
-     * Sends a broadcast when a download finishes in order to the interested activities can update their view
+     * Sends a broadcast when a download finishes in order to the interested activities can
+     * update their view
      *
      * @param download               Finished download operation
      * @param downloadResult         Result of the download operation
@@ -678,7 +701,8 @@ public class FileDownloader extends Service
      * @param download           Added download operation
      * @param linkedToRemotePath Path in the downloads tree where the download was linked to
      */
-    private void sendBroadcastNewDownload(DownloadFileOperation download, String linkedToRemotePath) {
+    private void sendBroadcastNewDownload(DownloadFileOperation download,
+                                          String linkedToRemotePath) {
         Intent added = new Intent(getDownloadAddedMessage());
         added.putExtra(ACCOUNT_NAME, download.getAccount().name);
         added.putExtra(EXTRA_REMOTE_PATH, download.getRemotePath());

+ 50 - 29
src/com/owncloud/android/files/services/FileUploader.java

@@ -48,6 +48,7 @@ import android.os.Process;
 import android.support.v4.app.NotificationCompat;
 import android.webkit.MimeTypeMap;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.authentication.AuthenticatorActivity;
@@ -166,7 +167,8 @@ public class FileUploader extends Service
         super.onCreate();
         Log_OC.d(TAG, "Creating service");
         mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-        HandlerThread thread = new HandlerThread("FileUploaderThread", Process.THREAD_PRIORITY_BACKGROUND);
+        HandlerThread thread = new HandlerThread("FileUploaderThread",
+                Process.THREAD_PRIORITY_BACKGROUND);
         thread.start();
         mServiceLooper = thread.getLooper();
         mServiceHandler = new ServiceHandler(mServiceLooper, this);
@@ -253,7 +255,8 @@ public class FileUploader extends Service
             }
         }
 
-        FileDataStorageManager storageManager = new FileDataStorageManager(account, getContentResolver());
+        FileDataStorageManager storageManager = new FileDataStorageManager(account,
+                getContentResolver());
 
         boolean forceOverwrite = intent.getBooleanExtra(KEY_FORCE_OVERWRITE, false);
         boolean isInstant = intent.getBooleanExtra(KEY_INSTANT_UPLOAD, false);
@@ -279,8 +282,8 @@ public class FileUploader extends Service
 
             files = new OCFile[localPaths.length];
             for (int i = 0; i < localPaths.length; i++) {
-                files[i] = obtainNewOCFileToUpload(remotePaths[i], localPaths[i], ((mimeTypes != null) ? mimeTypes[i]
-                        : (String) null), storageManager);
+                files[i] = obtainNewOCFileToUpload(remotePaths[i], localPaths[i],
+                        ((mimeTypes != null) ? mimeTypes[i] : (String) null), storageManager);
                 if (files[i] == null) {
                     // TODO @andomaex add failure Notification
                     return Service.START_NOT_STICKY;
@@ -299,12 +302,14 @@ public class FileUploader extends Service
         try {
             for (int i = 0; i < files.length; i++) {
                 uploadKey = buildRemoteName(account, files[i].getRemotePath());
-                newUpload = new UploadFileOperation(account, files[i], chunked, isInstant, forceOverwrite, localAction,
+                newUpload = new UploadFileOperation(account, files[i], chunked, isInstant,
+                        forceOverwrite, localAction,
                         getApplicationContext());
                 if (isInstant) {
                     newUpload.setRemoteFolderToBeCreated();
                 }
-                mPendingUploads.putIfAbsent(uploadKey, newUpload); // Grants that the file only upload once time
+                // Grants that the file only upload once time
+                mPendingUploads.putIfAbsent(uploadKey, newUpload);
 
                 newUpload.addDatatransferProgressListener(this);
                 newUpload.addDatatransferProgressListener((FileUploaderBinder)mBinder);
@@ -375,7 +380,8 @@ public class FileUploader extends Service
     public class FileUploaderBinder extends Binder implements OnDatatransferProgressListener {
 
         /**
-         * Map of listeners that will be reported about progress of uploads from a {@link FileUploaderBinder} instance 
+         * Map of listeners that will be reported about progress of uploads from a
+         * {@link FileUploaderBinder} instance
          */
         private Map<String, OnDatatransferProgressListener> mBoundListeners = new HashMap<String, OnDatatransferProgressListener>();
 
@@ -421,7 +427,8 @@ public class FileUploader extends Service
          * Returns True when the file described by 'file' is being uploaded to
          * the ownCloud account 'account' or waiting for it
          *
-         * If 'file' is a directory, returns 'true' if some of its descendant files is uploading or waiting to upload. 
+         * If 'file' is a directory, returns 'true' if some of its descendant files
+         * is uploading or waiting to upload.
          *
          * @param account   ownCloud account where the remote file will be stored.
          * @param file      A file that could be in the queue of pending uploads
@@ -453,7 +460,8 @@ public class FileUploader extends Service
          * @param account       ownCloud account holding the file of interest.
          * @param file          {@link OCFile} of interest for listener.
          */
-        public void addDatatransferProgressListener (OnDatatransferProgressListener listener, Account account, OCFile file) {
+        public void addDatatransferProgressListener (OnDatatransferProgressListener listener,
+                                                     Account account, OCFile file) {
             if (account == null || file == null || listener == null) return;
             String targetKey = buildRemoteName(account, file);
             mBoundListeners.put(targetKey, listener);
@@ -468,7 +476,8 @@ public class FileUploader extends Service
          * @param account       ownCloud account holding the file of interest.
          * @param file          {@link OCFile} of interest for listener.
          */
-        public void removeDatatransferProgressListener (OnDatatransferProgressListener listener, Account account, OCFile file) {
+        public void removeDatatransferProgressListener (OnDatatransferProgressListener listener,
+                                                        Account account, OCFile file) {
             if (account == null || file == null || listener == null) return;
             String targetKey = buildRemoteName(account, file);
             if (mBoundListeners.get(targetKey) == listener) {
@@ -478,12 +487,13 @@ public class FileUploader extends Service
 
 
         @Override
-        public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer,
-                                       String fileName) {
+        public void onTransferProgress(long progressRate, long totalTransferredSoFar,
+                                       long totalToTransfer, String fileName) {
             String key = buildRemoteName(mCurrentUpload.getAccount(), mCurrentUpload.getFile());
             OnDatatransferProgressListener boundListener = mBoundListeners.get(key);
             if (boundListener != null) {
-                boundListener.onTransferProgress(progressRate, totalTransferredSoFar, totalToTransfer, fileName);
+                boundListener.onTransferProgress(progressRate, totalTransferredSoFar,
+                        totalToTransfer, fileName);
             }
         }
 
@@ -557,7 +567,8 @@ public class FileUploader extends Service
 
                 try {
                     /// prepare client object to send requests to the ownCloud server
-                    if (mUploadClient == null || !mLastAccount.equals(mCurrentUpload.getAccount())) {
+                    if (mUploadClient == null ||
+                            !mLastAccount.equals(mCurrentUpload.getAccount())) {
                         mLastAccount = mCurrentUpload.getAccount();
                         mStorageManager =
                                 new FileDataStorageManager(mLastAccount, getContentResolver());
@@ -585,11 +596,13 @@ public class FileUploader extends Service
                     }
 
                 } catch (AccountsException e) {
-                    Log_OC.e(TAG, "Error while trying to get autorization for " + mLastAccount.name, e);
+                    Log_OC.e(TAG, "Error while trying to get autorization for " +
+                            mLastAccount.name, e);
                     uploadResult = new RemoteOperationResult(e);
 
                 } catch (IOException e) {
-                    Log_OC.e(TAG, "Error while trying to get autorization for " + mLastAccount.name, e);
+                    Log_OC.e(TAG, "Error while trying to get autorization for " +
+                            mLastAccount.name, e);
                     uploadResult = new RemoteOperationResult(e);
 
                 } finally {
@@ -598,8 +611,9 @@ public class FileUploader extends Service
                         Log_OC.i(TAG, "Remove CurrentUploadItem from pending upload Item Map.");
                     }
                     if (uploadResult.isException()) {
-                        // enforce the creation of a new client object for next uploads; this grant that a new socket will
-                        // be created in the future if the current exception is due to an abrupt lose of network connection
+                        // enforce the creation of a new client object for next uploads;
+                        // this grant that a new socket will be created in the future if
+                        // the current exception is due to an abrupt lose of network connection
                         mUploadClient = null;
                     }
                 }
@@ -610,7 +624,8 @@ public class FileUploader extends Service
 
             } else {
                 // Cancel the transfer
-                Log_OC.d(TAG, "Account " + mCurrentUpload.getAccount().toString() + " doesn't exist");
+                Log_OC.d(TAG, "Account " + mCurrentUpload.getAccount().toString() +
+                        " doesn't exist");
                 cancelUploadForAccount(mCurrentUpload.getAccount().name);
 
             }
@@ -619,14 +634,15 @@ public class FileUploader extends Service
     }
 
     /**
-     * Checks the existence of the folder where the current file will be uploaded both in the remote server 
-     * and in the local database.
+     * Checks the existence of the folder where the current file will be uploaded both
+     * in the remote server and in the local database.
      *
-     * If the upload is set to enforce the creation of the folder, the method tries to create it both remote
-     * and locally.
+     * If the upload is set to enforce the creation of the folder, the method tries to
+     * create it both remote and locally.
      *
      *  @param  pathToGrant     Full remote path whose existence will be granted.
-     *  @return  An {@link OCFile} instance corresponding to the folder where the file will be uploaded.
+     *  @return  An {@link OCFile} instance corresponding to the folder where the file
+     *  will be uploaded.
      */
     private RemoteOperationResult grantFolderExistence(String pathToGrant) {
         RemoteOperation operation = new ExistenceCheckRemoteOperation(pathToGrant, this, false);
@@ -689,7 +705,8 @@ public class FileUploader extends Service
 
         // new PROPFIND to keep data consistent with server 
         // in theory, should return the same we already have
-        ReadRemoteFileOperation operation = new ReadRemoteFileOperation(mCurrentUpload.getRemotePath());
+        ReadRemoteFileOperation operation =
+                new ReadRemoteFileOperation(mCurrentUpload.getRemotePath());
         RemoteOperationResult result = operation.execute(mUploadClient);
         if (result.isSuccess()) {
             updateOCFile(file, (RemoteFile) result.getData().get(0));
@@ -731,7 +748,8 @@ public class FileUploader extends Service
                 mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
                         remotePath.substring(remotePath.lastIndexOf('.') + 1));
             } catch (IndexOutOfBoundsException e) {
-                Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + remotePath);
+                Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " +
+                        remotePath);
             }
         }
         if (mimeType == null) {
@@ -796,11 +814,13 @@ public class FileUploader extends Service
      * Callback method to update the progress bar in the status notification
      */
     @Override
-    public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filePath) {
+    public void onTransferProgress(long progressRate, long totalTransferredSoFar,
+                                   long totalToTransfer, String filePath) {
         int percent = (int) (100.0 * ((double) totalTransferredSoFar) / ((double) totalToTransfer));
         if (percent != mLastPercent) {
             mNotificationBuilder.setProgress(100, percent, false);
-            String fileName = filePath.substring(filePath.lastIndexOf(FileUtils.PATH_SEPARATOR) + 1);
+            String fileName = filePath.substring(
+                    filePath.lastIndexOf(FileUtils.PATH_SEPARATOR) + 1);
             String text = String.format(getString(R.string.uploader_upload_in_progress_content), percent, fileName);
             mNotificationBuilder.setContentText(text);
             mNotificationManager.notify(R.string.uploader_upload_in_progress_ticker, mNotificationBuilder.build());
@@ -948,7 +968,8 @@ public class FileUploader extends Service
      * @param mimeType
      * @return true if is needed to add the pdf file extension to the file
      */
-    private boolean isPdfFileFromContentProviderWithoutExtension(String localPath, String mimeType) {
+    private boolean isPdfFileFromContentProviderWithoutExtension(String localPath,
+                                                                 String mimeType) {
         return localPath.startsWith(UriUtils.URI_CONTENT_SCHEME) &&
                 mimeType.equals(MIME_TYPE_PDF) &&
                 !localPath.endsWith(FILE_EXTENSION_PDF);

+ 7 - 3
src/com/owncloud/android/operations/CreateFolderOperation.java

@@ -21,6 +21,7 @@
 
 package com.owncloud.android.operations;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.resources.files.CreateRemoteFolderOperation;
@@ -46,7 +47,8 @@ public class CreateFolderOperation extends SyncOperation implements OnRemoteOper
     /**
      * Constructor
      * 
-     * @param createFullPath        'True' means that all the ancestor folders should be created if don't exist yet.
+     * @param createFullPath        'True' means that all the ancestor folders should be created
+     *                              if don't exist yet.
      */
     public CreateFolderOperation(String remotePath, boolean createFullPath) {
         mRemotePath = remotePath;
@@ -57,7 +59,8 @@ public class CreateFolderOperation extends SyncOperation implements OnRemoteOper
 
     @Override
     protected RemoteOperationResult run(OwnCloudClient client) {
-        CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mRemotePath, mCreateFullPath);
+        CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mRemotePath,
+                mCreateFullPath);
         RemoteOperationResult result =  operation.execute(client);
         
         if (result.isSuccess()) {
@@ -77,7 +80,8 @@ public class CreateFolderOperation extends SyncOperation implements OnRemoteOper
     }
     
     
-    private void onCreateRemoteFolderOperationFinish(CreateRemoteFolderOperation operation, RemoteOperationResult result) {
+    private void onCreateRemoteFolderOperationFinish(CreateRemoteFolderOperation operation,
+                                                     RemoteOperationResult result) {
        if (result.isSuccess()) {
            saveFolderInDB();
        } else {

+ 9 - 4
src/com/owncloud/android/operations/CreateShareOperation.java

@@ -27,6 +27,7 @@ package com.owncloud.android.operations;
 import android.content.Context;
 import android.content.Intent;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
@@ -61,10 +62,13 @@ public class CreateShareOperation extends SyncOperation {
      * @param context       The context that the share is coming from.
      * @param path          Full path of the file/folder being shared. Mandatory argument
      * @param shareType     0 = user, 1 = group, 3 = Public link. Mandatory argument
-     * @param shareWith     User/group ID with who the file should be shared.  This is mandatory for shareType of 0 or 1
+     * @param shareWith     User/group ID with who the file should be shared.
+     *                      This is mandatory for shareType of 0 or 1
      * @param publicUpload  If false (default) public cannot upload to a public shared folder. 
-     *                      If true public can upload to a shared folder. Only available for public link shares
-     * @param password      Password to protect a public link share. Only available for public link shares
+     *                      If true public can upload to a shared folder.
+     *                      Only available for public link shares
+     * @param password      Password to protect a public link share.
+     *                      Only available for public link shares
      * @param permissions   1 - Read only - Default for public shares
      *                      2 - Update
      *                      4 - Create
@@ -95,7 +99,8 @@ public class CreateShareOperation extends SyncOperation {
         
         // Check if the share link already exists
         operation = new GetRemoteSharesForFileOperation(mPath, false, false);
-        RemoteOperationResult result = ((GetRemoteSharesForFileOperation)operation).execute(client);
+        RemoteOperationResult result =
+                ((GetRemoteSharesForFileOperation)operation).execute(client);
 
         if (!result.isSuccess() || result.getData().size() <= 0) {
             operation = new CreateRemoteShareOperation(mPath, mShareType, mShareWith, mPublicUpload,

+ 3 - 2
src/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java

@@ -22,6 +22,7 @@ package com.owncloud.android.operations;
 
 import java.util.ArrayList;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -63,7 +64,6 @@ public class DetectAuthenticationMethodOperation extends RemoteOperation {
      * Constructor
      * 
      * @param context       Android context of the caller.
-     * @param webdavUrl
      */
     public DetectAuthenticationMethodOperation(Context context) {
         mContext = context;
@@ -124,7 +124,8 @@ public class DetectAuthenticationMethodOperation extends RemoteOperation {
         ArrayList<Object> data = new ArrayList<Object>();
         data.add(authMethod);
         result.setData(data);
-        return result;  // same result instance, so that other errors can be handled by the caller transparently
+        return result;  // same result instance, so that other errors
+                        // can be handled by the caller transparently
 	}
 	
 	

+ 16 - 8
src/com/owncloud/android/operations/DownloadFileOperation.java

@@ -27,6 +27,7 @@ import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.OwnCloudClient;
@@ -58,9 +59,11 @@ public class DownloadFileOperation extends RemoteOperation {
     
     public DownloadFileOperation(Account account, OCFile file) {
         if (account == null)
-            throw new IllegalArgumentException("Illegal null account in DownloadFileOperation creation");
+            throw new IllegalArgumentException("Illegal null account in DownloadFileOperation " +
+                    "creation");
         if (file == null)
-            throw new IllegalArgumentException("Illegal null file in DownloadFileOperation creation");
+            throw new IllegalArgumentException("Illegal null file in DownloadFileOperation " +
+                    "creation");
         
         mAccount = account;
         mFile = file;
@@ -77,7 +80,7 @@ public class DownloadFileOperation extends RemoteOperation {
     }
 
     public String getSavePath() {
-        String path = mFile.getStoragePath();   // re-downloads should be done over the original file 
+        String path = mFile.getStoragePath();  // re-downloads should be done over the original file
         if (path != null && path.length() > 0) {
             return path;
         }
@@ -102,9 +105,11 @@ public class DownloadFileOperation extends RemoteOperation {
             try {
                 mimeType = MimeTypeMap.getSingleton()
                     .getMimeTypeFromExtension(
-                            mFile.getRemotePath().substring(mFile.getRemotePath().lastIndexOf('.') + 1));
+                            mFile.getRemotePath().substring(
+                                    mFile.getRemotePath().lastIndexOf('.') + 1));
             } catch (IndexOutOfBoundsException e) {
-                Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + mFile.getRemotePath());
+                Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " +
+                        mFile.getRemotePath());
             }
         }
         if (mimeType == null) {
@@ -118,7 +123,8 @@ public class DownloadFileOperation extends RemoteOperation {
     }
     
     public long getModificationTimestamp() {
-        return (mModificationTimestamp > 0) ? mModificationTimestamp : mFile.getModificationTimestamp();
+        return (mModificationTimestamp > 0) ? mModificationTimestamp :
+                mFile.getModificationTimestamp();
     }
 
     @Override
@@ -152,9 +158,11 @@ public class DownloadFileOperation extends RemoteOperation {
             newFile.getParentFile().mkdirs();
             moved = tmpFile.renameTo(newFile);
             if (!moved)
-                result = new RemoteOperationResult(RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED);
+                result = new RemoteOperationResult(
+                        RemoteOperationResult.ResultCode.LOCAL_STORAGE_NOT_MOVED);
         }
-        Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " + result.getLogMessage());
+        Log_OC.i(TAG, "Download of " + mFile.getRemotePath() + " to " + getSavePath() + ": " +
+                result.getLogMessage());
         
         return result;
     }

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

@@ -23,6 +23,7 @@ package com.owncloud.android.operations;
 
 import java.util.ArrayList;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperation;

+ 3 - 1
src/com/owncloud/android/operations/GetSharesForFileOperation.java

@@ -23,6 +23,7 @@ package com.owncloud.android.operations;
 
 import java.util.ArrayList;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -58,7 +59,8 @@ public class GetSharesForFileOperation extends SyncOperation {
 
     @Override
     protected RemoteOperationResult run(OwnCloudClient client) {
-        GetRemoteSharesForFileOperation operation = new GetRemoteSharesForFileOperation(mPath, mReshares, mSubfiles);
+        GetRemoteSharesForFileOperation operation = new GetRemoteSharesForFileOperation(mPath,
+                mReshares, mSubfiles);
         RemoteOperationResult result = operation.execute(client);
 
         if (result.isSuccess()) {

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

@@ -23,6 +23,7 @@ package com.owncloud.android.operations;
 
 import java.util.ArrayList;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;

+ 3 - 2
src/com/owncloud/android/operations/MoveFileOperation.java

@@ -20,6 +20,7 @@
 
 package com.owncloud.android.operations;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -47,8 +48,8 @@ public class MoveFileOperation extends SyncOperation {
     /**
      * Constructor
      * 
-     * @param path              Remote path of the {@link OCFile} to move.
-     * @param newParentPath     Path to the folder where the file will be moved into. 
+     * @param srcPath           Remote path of the {@link OCFile} to move.
+     * @param targetParentPath  Path to the folder where the file will be moved into.
      * @param account           OwnCloud account containing both the file and the target folder 
      */
     public MoveFileOperation(String srcPath, String targetParentPath, Account account) {

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

@@ -39,6 +39,7 @@ import android.content.Intent;
 import android.util.Log;
 //import android.support.v4.content.LocalBroadcastManager;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 
@@ -128,7 +129,7 @@ public class RefreshFolderOperation extends RemoteOperation {
      * @param   syncFullAccount         'True' means that this operation is part of a full account 
      *                                  synchronization.
      * @param   isShareSupported        'True' means that the server supports the sharing API.           
-     * @param   ignoreEtag              'True' means that the content of the remote folder should
+     * @param   ignoreETag              'True' means that the content of the remote folder should
      *                                  be fetched and updated even though the 'eTag' did not 
      *                                  change.  
      * @param   dataStorageManager      Interface with the local database.
@@ -375,7 +376,8 @@ public class RefreshFolderOperation extends RemoteOperation {
                     remoteFile.setFileLength(localFile.getFileLength()); 
                         // TODO move operations about size of folders to FileContentProvider
                 } else if (mRemoteFolderChanged && remoteFile.isImage() &&
-                        remoteFile.getModificationTimestamp() != localFile.getModificationTimestamp()) {
+                        remoteFile.getModificationTimestamp() !=
+                                localFile.getModificationTimestamp()) {
                     remoteFile.setNeedsUpdateThumbnail(true);
                     Log.d(TAG, "Image " + remoteFile.getFileName() + " updated on the server");
                 }

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

@@ -21,6 +21,7 @@
 
 package com.owncloud.android.operations;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;

+ 23 - 14
src/com/owncloud/android/operations/RenameFileOperation.java

@@ -24,6 +24,7 @@ package com.owncloud.android.operations;
 import java.io.File;
 import java.io.IOException;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -51,7 +52,8 @@ public class RenameFileOperation extends SyncOperation {
     /**
      * Constructor
      * 
-     * @param remotePath            RemotePath of the OCFile instance describing the remote file or folder to rename
+     * @param remotePath            RemotePath of the OCFile instance describing the remote file or
+     *                              folder to rename
      * @param newName               New name to set as the name of file.
      */
     public RenameFileOperation(String remotePath, String newName) {
@@ -82,7 +84,8 @@ public class RenameFileOperation extends SyncOperation {
                 return new RemoteOperationResult(ResultCode.INVALID_LOCAL_FILE_NAME);
             }
             String parent = (new File(mFile.getRemotePath())).getParent();
-            parent = (parent.endsWith(OCFile.PATH_SEPARATOR)) ? parent : parent + OCFile.PATH_SEPARATOR; 
+            parent = (parent.endsWith(OCFile.PATH_SEPARATOR)) ? parent : parent +
+                    OCFile.PATH_SEPARATOR;
             mNewRemotePath =  parent + mNewName;
             if (mFile.isFolder()) {
                 mNewRemotePath += OCFile.PATH_SEPARATOR;
@@ -93,7 +96,8 @@ public class RenameFileOperation extends SyncOperation {
                 return new RemoteOperationResult(ResultCode.INVALID_OVERWRITE);
             }
             
-            RenameRemoteFileOperation operation = new RenameRemoteFileOperation(mFile.getFileName(), mFile.getRemotePath(), 
+            RenameRemoteFileOperation operation = new RenameRemoteFileOperation(mFile.getFileName(),
+                    mFile.getRemotePath(),
                     mNewName, mFile.isFolder());
             result = operation.execute(client);
 
@@ -108,7 +112,8 @@ public class RenameFileOperation extends SyncOperation {
             }
             
         } catch (IOException e) {
-            Log_OC.e(TAG, "Rename " + mFile.getRemotePath() + " to " + ((mNewRemotePath==null) ? mNewName : mNewRemotePath) + ": " + 
+            Log_OC.e(TAG, "Rename " + mFile.getRemotePath() + " to " + ((mNewRemotePath==null) ?
+                    mNewName : mNewRemotePath) + ": " +
                     ((result!= null) ? result.getLogMessage() : ""), e);
         }
 
@@ -134,7 +139,8 @@ public class RenameFileOperation extends SyncOperation {
                 // 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
+            // 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
         }
         
@@ -144,16 +150,17 @@ public class RenameFileOperation extends SyncOperation {
     /**
      * Checks if the new name to set is valid in the file system 
      * 
-     * The only way to be sure is trying to create a file with that name. It's made in the temporal directory
-     * for downloads, out of any account, and then removed. 
+     * The only way to be sure is trying to create a file with that name. It's made in the
+     * temporal directory for downloads, out of any account, and then removed.
      * 
-     * IMPORTANT: The test must be made in the same file system where files are download. The internal storage
-     * could be formatted with a different file system.
+     * IMPORTANT: The test must be made in the same file system where files are download.
+     * The internal storage could be formatted with a different file system.
      * 
-     * TODO move this method, and maybe FileDownload.get***Path(), to a class with utilities specific for the interactions with the file system
+     * TODO move this method, and maybe FileDownload.get***Path(), to a class with utilities
+     * specific for the interactions with the file system
      * 
-     * @return              'True' if a temporal file named with the name to set could be created in the file system where 
-     *                      local files are stored.
+     * @return              'True' if a temporal file named with the name to set could be
+     *                      created in the file system where local files are stored.
      * @throws IOException  When the temporal folder can not be created.
      */
     private boolean isValidNewName() throws IOException {
@@ -170,14 +177,16 @@ public class RenameFileOperation extends SyncOperation {
             throw new IOException("Unexpected error: temporal directory could not be created");
         }
         try {
-            testFile.createNewFile();   // return value is ignored; it could be 'false' because the file already existed, that doesn't invalidate the name
+            testFile.createNewFile();   // return value is ignored; it could be 'false' because
+            // the file already existed, that doesn't invalidate the name
         } catch (IOException e) {
             Log_OC.i(TAG, "Test for validity of name " + mNewName + " in the file system failed");
             return false;
         }
         boolean result = (testFile.exists() && testFile.isFile());
         
-        // cleaning ; result is ignored, since there is not much we could do in case of failure, but repeat and repeat...
+        // cleaning ; result is ignored, since there is not much we could do in case of failure,
+        // but repeat and repeat...
         testFile.delete();
         
         return result;

+ 42 - 27
src/com/owncloud/android/operations/SynchronizeFileOperation.java

@@ -22,6 +22,7 @@
 
 package com.owncloud.android.operations;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileUploader;
@@ -66,8 +67,8 @@ public class SynchronizeFileOperation extends SyncOperation {
     /**
      * Constructor for "full synchronization mode".
      * 
-     * Uses remotePath to retrieve all the data both in local cache and in the remote OC server when the operation
-     * is executed, instead of reusing {@link OCFile} instances.
+     * Uses remotePath to retrieve all the data both in local cache and in the remote OC server
+     * when the operation is executed, instead of reusing {@link OCFile} instances.
      * 
      * Useful for direct synchronization of a single file.
      * 
@@ -94,17 +95,19 @@ public class SynchronizeFileOperation extends SyncOperation {
 
     
     /**
-     * Constructor allowing to reuse {@link OCFile} instances just queried from local cache or from remote OC server.
+     * Constructor allowing to reuse {@link OCFile} instances just queried from local cache or
+     * from remote OC server.
      * 
-     * Useful to include this operation as part of the synchronization of a folder (or a full account), avoiding the
-     * repetition of fetch operations (both in local database or remote server).
+     * Useful to include this operation as part of the synchronization of a folder
+     * (or a full account), avoiding the repetition of fetch operations (both in local database
+     * or remote server).
      * 
-     * At least one of localFile or serverFile MUST NOT BE NULL. If you don't have none of them, use the other 
-     * constructor.
+     * At least one of localFile or serverFile MUST NOT BE NULL. If you don't have none of them,
+     * use the other constructor.
      * 
      * @param localFile             Data of file (just) retrieved from local cache/database.
-     * @param serverFile            Data of file (just) retrieved from a remote server. If null, will be
-     *                              retrieved from network by the operation when executed.
+     * @param serverFile            Data of file (just) retrieved from a remote server. If null,
+     *                              will be retrieved from network by the operation when executed.
      * @param account               ownCloud account holding the file.
      * @param syncFileContents      When 'true', transference of data will be started by the 
      *                              operation if needed and no conflict is detected.
@@ -122,7 +125,8 @@ public class SynchronizeFileOperation extends SyncOperation {
         if (mLocalFile != null) {
             mRemotePath = mLocalFile.getRemotePath();
             if (mServerFile != null && !mServerFile.getRemotePath().equals(mRemotePath)) {
-                throw new IllegalArgumentException("serverFile and localFile do not correspond to the same OC file");
+                throw new IllegalArgumentException("serverFile and localFile do not correspond" +
+                        " to the same OC file");
             }
         } else if (mServerFile != null) {
             mRemotePath = mServerFile.getRemotePath();
@@ -139,21 +143,24 @@ public class SynchronizeFileOperation extends SyncOperation {
     /**
      * Temporal constructor.
      * 
-     * Extends the previous one to allow constrained synchronizations where uploads are never performed - only
-     * downloads or conflict detection.
+     * Extends the previous one to allow constrained synchronizations where uploads are never
+     * performed - only downloads or conflict detection.
      * 
-     * Do not use unless you are involved in 'folder synchronization' or 'folder download' work in progress.
+     * Do not use unless you are involved in 'folder synchronization' or 'folder download' work
+     * in progress.
      * 
      * TODO Remove when 'folder synchronization' replaces 'folder download'.
      * 
-     * @param localFile             Data of file (just) retrieved from local cache/database. MUSTN't be null.
-     * @param serverFile            Data of file (just) retrieved from a remote server. If null, will be
-     *                              retrieved from network by the operation when executed.
+     * @param localFile             Data of file (just) retrieved from local cache/database.
+     *                              MUSTN't be null.
+     * @param serverFile            Data of file (just) retrieved from a remote server.
+     *                              If null, will be retrieved from network by the operation
+     *                              when executed.
      * @param account               ownCloud account holding the file.
      * @param syncFileContents      When 'true', transference of data will be started by the 
      *                              operation if needed and no conflict is detected.
-     * @param allowUploads          When 'false', uploads to the server are not done; only downloads or conflict
-     *                              detection. 
+     * @param allowUploads          When 'false', uploads to the server are not done;
+     *                              only downloads or conflict detection.
      * @param context               Android context; needed to start transfers.
      */
     public SynchronizeFileOperation(
@@ -206,7 +213,8 @@ public class SynchronizeFileOperation extends SyncOperation {
                         serverChanged = (!mServerFile.getEtag().equals(mLocalFile.getEtag()));
                     } else { */
                 serverChanged = (
-                    mServerFile.getModificationTimestamp() != mLocalFile.getModificationTimestampAtLastSyncForData()
+                    mServerFile.getModificationTimestamp() !=
+                            mLocalFile.getModificationTimestampAtLastSyncForData()
                 );
                 //}
                 boolean localChanged = (
@@ -221,10 +229,13 @@ public class SynchronizeFileOperation extends SyncOperation {
                 } else if (localChanged) {
                     if (mSyncFileContents && mAllowUploads) {
                         requestForUpload(mLocalFile);
-                        // the local update of file properties will be done by the FileUploader service when the upload finishes
+                        // the local update of file properties will be done by the FileUploader
+                        // service when the upload finishes
                     } else {
-                        // NOTHING TO DO HERE: updating the properties of the file in the server without uploading the contents would be stupid; 
-                        // So, an instance of SynchronizeFileOperation created with syncFileContents == false is completely useless when we suspect
+                        // NOTHING TO DO HERE: updating the properties of the file in the server
+                        // without uploading the contents would be stupid;
+                        // So, an instance of SynchronizeFileOperation created with
+                        // syncFileContents == false is completely useless when we suspect
                         // that an upload is necessary (for instance, in FileObserverService).
                     }
                     result = new RemoteOperationResult(ResultCode.OK);
@@ -233,8 +244,10 @@ public class SynchronizeFileOperation extends SyncOperation {
                     mLocalFile.setRemoteId(mServerFile.getRemoteId());
                     
                     if (mSyncFileContents) {
-                        requestForDownload(mLocalFile); // local, not server; we won't to keep the value of keepInSync!
-                        // the update of local data will be done later by the FileUploader service when the upload finishes
+                        requestForDownload(mLocalFile); // local, not server; we won't to keep
+                        // the value of keepInSync!
+                        // the update of local data will be done later by the FileUploader
+                        // service when the upload finishes
                     } else {
                         // TODO CHECK: is this really useful in some point in the code?
                         mServerFile.setKeepInSync(mLocalFile.keepInSync());
@@ -255,8 +268,8 @@ public class SynchronizeFileOperation extends SyncOperation {
 
         }
 
-        Log_OC.i(TAG, "Synchronizing " + mAccount.name + ", file " + mLocalFile.getRemotePath() + ": " 
-                + result.getLogMessage());
+        Log_OC.i(TAG, "Synchronizing " + mAccount.name + ", file " + mLocalFile.getRemotePath() +
+                ": " + result.getLogMessage());
 
         return result;
     }
@@ -271,7 +284,9 @@ public class SynchronizeFileOperation extends SyncOperation {
         Intent i = new Intent(mContext, FileUploader.class);
         i.putExtra(FileUploader.KEY_ACCOUNT, mAccount);
         i.putExtra(FileUploader.KEY_FILE, file);
-        /*i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath);    // doing this we would lose the value of keepInSync in the road, and maybe it's not updated in the database when the FileUploader service gets it!  
+        /*i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath);
+        // doing this we would lose the value of keepInSync in the road, and maybe
+        // it's not updated in the database when the FileUploader service gets it!
         i.putExtra(FileUploader.KEY_LOCAL_FILE, localFile.getStoragePath());*/
         i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
         i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true);

+ 17 - 9
src/com/owncloud/android/operations/SynchronizeFolderOperation.java

@@ -25,6 +25,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.util.Log;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
@@ -110,7 +111,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
      * @param   account                 ownCloud account where the folder is located.
      * @param   currentSyncTime         Time stamp for the synchronization process in progress.
      */
-    public SynchronizeFolderOperation(Context context, String remotePath, Account account, long currentSyncTime){
+    public SynchronizeFolderOperation(Context context, String remotePath, Account account,
+                                      long currentSyncTime){
         mRemotePath = remotePath;
         mCurrentSyncTime = currentSyncTime;
         mAccount = account;
@@ -174,7 +176,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
 
     }
 
-    private RemoteOperationResult checkForChanges(OwnCloudClient client) throws OperationCancelledException {
+    private RemoteOperationResult checkForChanges(OwnCloudClient client)
+            throws OperationCancelledException {
         Log_OC.d(TAG, "Checking changes in " + mAccount.name + mRemotePath);
 
         mRemoteFolderChanged = true;
@@ -218,7 +221,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
     }
 
 
-    private RemoteOperationResult fetchAndSyncRemoteFolder(OwnCloudClient client) throws OperationCancelledException {
+    private RemoteOperationResult fetchAndSyncRemoteFolder(OwnCloudClient client)
+            throws OperationCancelledException {
         if (mCancellationRequested.get()) {
             throw new OperationCancelledException();
         }
@@ -250,7 +254,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
             storageManager.removeFolder(
                     mLocalFolder,
                     true,
-                    (   mLocalFolder.isDown() &&        // TODO: debug, I think this is always false for folders
+                    (   mLocalFolder.isDown() &&        // TODO: debug, I think this is
+                                                        // always false for folders
                             mLocalFolder.getStoragePath().startsWith(currentSavePath)
                     )
             );
@@ -327,7 +332,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
                     remoteFile.setFileLength(localFile.getFileLength());
                         // TODO move operations about size of folders to FileContentProvider
                 } else if (mRemoteFolderChanged && remoteFile.isImage() &&
-                        remoteFile.getModificationTimestamp() != localFile.getModificationTimestamp()) {
+                        remoteFile.getModificationTimestamp() !=
+                                localFile.getModificationTimestamp()) {
                     remoteFile.setNeedsUpdateThumbnail(true);
                     Log.d(TAG, "Image " + remoteFile.getFileName() + " updated on the server");
                 }
@@ -439,7 +445,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
      * @param filesToSyncContents       Synchronization operations to execute.
      * @param client                    Interface to the remote ownCloud server.
      */
-    private void startContentSynchronizations(List<SyncOperation> filesToSyncContents, OwnCloudClient client) 
+    private void startContentSynchronizations(List<SyncOperation> filesToSyncContents,
+                                              OwnCloudClient client)
             throws OperationCancelledException {
 
         Log_OC.v(TAG, "Starting content synchronization... ");
@@ -469,7 +476,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
 
     
     /**
-     * Creates and populates a new {@link com.owncloud.android.datamodel.OCFile} object with the data read from the server.
+     * Creates and populates a new {@link com.owncloud.android.datamodel.OCFile}
+     * object with the data read from the server.
      *
      * @param remote    remote file read from the server (remote file or folder).
      * @return          New OCFile instance representing the remote resource described by we.
@@ -489,8 +497,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
 
     /**
      * Scans the default location for saving local copies of files searching for
-     * a 'lost' file with the same full name as the {@link com.owncloud.android.datamodel.OCFile} received as
-     * parameter.
+     * a 'lost' file with the same full name as the {@link com.owncloud.android.datamodel.OCFile}
+     * received as parameter.
      *  
      * @param file      File to associate a possible 'lost' local file.
      */

+ 7 - 3
src/com/owncloud/android/operations/UnshareLinkOperation.java

@@ -22,6 +22,7 @@ package com.owncloud.android.operations;
 
 import android.content.Context;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.OCFile;
 
 import com.owncloud.android.lib.common.OwnCloudClient;
@@ -57,10 +58,12 @@ public class UnshareLinkOperation extends SyncOperation {
         RemoteOperationResult result  = null;
         
         // Get Share for a file
-        OCShare share = getStorageManager().getFirstShareByPathAndType(mRemotePath, ShareType.PUBLIC_LINK);
+        OCShare share = getStorageManager().getFirstShareByPathAndType(mRemotePath,
+                ShareType.PUBLIC_LINK);
         
         if (share != null) {
-            RemoveRemoteShareOperation operation = new RemoveRemoteShareOperation((int) share.getIdRemoteShared());
+            RemoveRemoteShareOperation operation =
+                    new RemoveRemoteShareOperation((int) share.getIdRemoteShared());
             result = operation.execute(client);
 
             if (result.isSuccess() || result.getCode() == ResultCode.SHARE_NOT_FOUND) {
@@ -89,7 +92,8 @@ public class UnshareLinkOperation extends SyncOperation {
     }
     
     private boolean existsFile(OwnCloudClient client, String remotePath){
-        ExistenceCheckRemoteOperation existsOperation = new ExistenceCheckRemoteOperation(remotePath, mContext, false);
+        ExistenceCheckRemoteOperation existsOperation =
+                new ExistenceCheckRemoteOperation(remotePath, mContext, false);
         RemoteOperationResult result = existsOperation.execute(client);
         return result.isSuccess();
     }

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

@@ -29,7 +29,6 @@ import java.io.OutputStream;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
-import java.util.concurrent.CancellationException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.commons.httpclient.methods.PutMethod;
@@ -94,7 +93,8 @@ public class UploadFileOperation extends RemoteOperation {
                                 int localBehaviour, 
                                 Context context) {
         if (account == null)
-            throw new IllegalArgumentException("Illegal NULL account in UploadFileOperation creation");
+            throw new IllegalArgumentException("Illegal NULL account in UploadFileOperation " +
+                    "creation");
         if (file == null)
             throw new IllegalArgumentException("Illegal NULL file in UploadFileOperation creation");
         if (file.getStoragePath() == null || file.getStoragePath().length() <= 0) {

+ 37 - 18
src/com/owncloud/android/operations/common/SyncOperation.java

@@ -20,6 +20,7 @@
 
 package com.owncloud.android.operations.common;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
@@ -52,18 +53,21 @@ public abstract class SyncOperation extends RemoteOperation {
      * 
      * Do not call this method from the main thread.
      * 
-     * This method should be used whenever an ownCloud account is available, instead of {@link #execute(OwnCloudClient)}. 
+     * This method should be used whenever an ownCloud account is available, instead of
+     * {@link #execute(OwnCloudClient, com.owncloud.android.datamodel.FileDataStorageManager)}.
      * 
-     * @param account   ownCloud account in remote ownCloud server to reach during the execution of the operation.
+     * @param storageManager
      * @param context   Android context for the component calling the method.
      * @return          Result of the operation.
      */
     public RemoteOperationResult execute(FileDataStorageManager storageManager, Context context) {
         if (storageManager == null) {
-            throw new IllegalArgumentException("Trying to execute a sync operation with a NULL storage manager");
+            throw new IllegalArgumentException("Trying to execute a sync operation with a " +
+                    "NULL storage manager");
         }
         if (storageManager.getAccount() == null) {
-            throw new IllegalArgumentException("Trying to execute a sync operation with a storage manager for a NULL account");
+            throw new IllegalArgumentException("Trying to execute a sync operation with a " +
+                    "storage manager for a NULL account");
         }
         mStorageManager = storageManager;
         return super.execute(mStorageManager.getAccount(), context);
@@ -75,12 +79,16 @@ public abstract class SyncOperation extends RemoteOperation {
 	 * 
      * Do not call this method from the main thread.
      * 
-	 * @param client	Client object to reach an ownCloud server during the execution of the operation.
+	 * @param client	Client object to reach an ownCloud server during the execution of the o
+     *                  peration.
+     * @param storageManager
 	 * @return			Result of the operation.
 	 */
-	public RemoteOperationResult execute(OwnCloudClient client, FileDataStorageManager storageManager) {
+	public RemoteOperationResult execute(OwnCloudClient client,
+                                         FileDataStorageManager storageManager) {
         if (storageManager == null)
-            throw new IllegalArgumentException("Trying to execute a sync operation with a NULL storage manager");
+            throw new IllegalArgumentException("Trying to execute a sync operation with a " +
+                    "NULL storage manager");
         mStorageManager = storageManager;
 		return super.execute(client);
 	}
@@ -89,24 +97,31 @@ public abstract class SyncOperation extends RemoteOperation {
     /**
      * Asynchronously executes the remote operation
      * 
-     * This method should be used whenever an ownCloud account is available, instead of {@link #execute(OwnCloudClient)}. 
+     * This method should be used whenever an ownCloud account is available, instead of
+     * {@link #execute(OwnCloudClient)}.
      * 
-     * @param account           ownCloud account in remote ownCloud server to reach during the execution of the operation.
+     * @param account           ownCloud account in remote ownCloud server to reach during the
+     *                          execution of the operation.
      * @param context           Android context for the component calling the method.
      * @param listener          Listener to be notified about the execution of the operation.
-     * @param listenerHandler   Handler associated to the thread where the methods of the listener objects must be called.
+     * @param listenerHandler   Handler associated to the thread where the methods of the listener
+     *                          objects must be called.
      * @return                  Thread were the remote operation is executed.
      */
 	/*
-    public Thread execute(FileDataStorageManager storageManager, Context context, OnRemoteOperationListener listener, Handler listenerHandler, Activity callerActivity) {
+    public Thread execute(FileDataStorageManager storageManager,
+    Context context, OnRemoteOperationListener listener, Handler listenerHandler, Activity callerActivity) {
         if (storageManager == null) {
-            throw new IllegalArgumentException("Trying to execute a sync operation with a NULL storage manager");
+            throw new IllegalArgumentException("Trying to execute a sync operation
+             with a NULL storage manager");
         }
         if (storageManager.getAccount() == null) {
-            throw new IllegalArgumentException("Trying to execute a sync operation with a storage manager for a NULL account");
+            throw new IllegalArgumentException("Trying to execute a sync operation with a
+             storage manager for a NULL account");
         }
         mStorageManager = storageManager;
-        return super.execute(storageManager.getAccount(), context, listener, listenerHandler, callerActivity);
+        return super.execute(storageManager.getAccount(), context, listener, listenerHandler,
+         callerActivity);
     }
     */
 
@@ -114,14 +129,18 @@ public abstract class SyncOperation extends RemoteOperation {
 	/**
 	 * Asynchronously executes the remote operation
 	 * 
-	 * @param client			Client object to reach an ownCloud server during the execution of the operation.
+	 * @param client			Client object to reach an ownCloud server during the
+     *                          execution of the operation.
 	 * @param listener			Listener to be notified about the execution of the operation.
-	 * @param listenerHandler	Handler associated to the thread where the methods of the listener objects must be called.
+	 * @param listenerHandler	Handler associated to the thread where the methods of
+     *                          the listener objects must be called.
 	 * @return					Thread were the remote operation is executed.
 	 */
-	public Thread execute(OwnCloudClient client, FileDataStorageManager storageManager, OnRemoteOperationListener listener, Handler listenerHandler) {
+	public Thread execute(OwnCloudClient client, FileDataStorageManager storageManager,
+                          OnRemoteOperationListener listener, Handler listenerHandler) {
         if (storageManager == null) {
-            throw new IllegalArgumentException("Trying to execute a sync operation with a NULL storage manager");
+            throw new IllegalArgumentException("Trying to execute a sync operation " +
+                    "with a NULL storage manager");
         }
         mStorageManager = storageManager;
         return super.execute(client, listener, listenerHandler);

+ 60 - 34
src/com/owncloud/android/services/OperationsService.java

@@ -98,11 +98,13 @@ public class OperationsService extends Service {
     public static final String ACTION_REMOVE = "REMOVE";
     public static final String ACTION_CREATE_FOLDER = "CREATE_FOLDER";
     public static final String ACTION_SYNC_FILE = "SYNC_FILE";
-    public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER";  // for the moment, just to download
+    public static final String ACTION_SYNC_FOLDER = "SYNC_FOLDER";//for the moment, just to download
     public static final String ACTION_MOVE_FILE = "MOVE_FILE";
     
-    public static final String ACTION_OPERATION_ADDED = OperationsService.class.getName() + ".OPERATION_ADDED";
-    public static final String ACTION_OPERATION_FINISHED = OperationsService.class.getName() + ".OPERATION_FINISHED";
+    public static final String ACTION_OPERATION_ADDED = OperationsService.class.getName() +
+            ".OPERATION_ADDED";
+    public static final String ACTION_OPERATION_FINISHED = OperationsService.class.getName() +
+            ".OPERATION_FINISHED";
 
 
     private ConcurrentMap<Integer, Pair<RemoteOperation, RemoteOperationResult>> 
@@ -135,7 +137,8 @@ public class OperationsService extends Service {
         Log_OC.d(TAG, "Creating service");
 
         /// First worker thread for most of operations 
-        HandlerThread thread = new HandlerThread("Operations thread", Process.THREAD_PRIORITY_BACKGROUND);
+        HandlerThread thread = new HandlerThread("Operations thread",
+                Process.THREAD_PRIORITY_BACKGROUND);
         thread.start();
         mOperationsHandler = new ServiceHandler(thread.getLooper(), this);
         mOperationsBinder = new OperationsServiceBinder(mOperationsHandler);
@@ -172,7 +175,8 @@ public class OperationsService extends Service {
 
             Pair<Target, RemoteOperation> itemToQueue = newOperation(intent);
             if (itemToQueue != null) {
-                mSyncFolderHandler.add(account, remotePath, (SynchronizeFolderOperation)itemToQueue.second);
+                mSyncFolderHandler.add(account, remotePath,
+                        (SynchronizeFolderOperation)itemToQueue.second);
                 Message msg = mSyncFolderHandler.obtainMessage();
                 msg.arg1 = startId;
                 msg.obj = itemSyncKey;
@@ -249,7 +253,8 @@ public class OperationsService extends Service {
     public class OperationsServiceBinder extends Binder /* implements OnRemoteOperationListener */ {
         
         /** 
-         * Map of listeners that will be reported about the end of operations from a {@link OperationsServiceBinder} instance 
+         * Map of listeners that will be reported about the end of operations from a
+         * {@link OperationsServiceBinder} instance
          */
         private ConcurrentMap<OnRemoteOperationListener, Handler> mBoundListeners = 
                 new ConcurrentHashMap<OnRemoteOperationListener, Handler>();
@@ -282,9 +287,11 @@ public class OperationsService extends Service {
          * Adds a listener interested in being reported about the end of operations.
          * 
          * @param listener          Object to notify about the end of operations.    
-         * @param callbackHandler   {@link Handler} to access the listener without breaking Android threading protection.
+         * @param callbackHandler   {@link Handler} to access the listener without
+         *                                         breaking Android threading protection.
          */
-        public void addOperationListener (OnRemoteOperationListener listener, Handler callbackHandler) {
+        public void addOperationListener (OnRemoteOperationListener listener,
+                                          Handler callbackHandler) {
             synchronized (mBoundListeners) {
                 mBoundListeners.put(listener, callbackHandler);
             }
@@ -292,7 +299,8 @@ public class OperationsService extends Service {
         
         
         /**
-         * Removes a listener from the list of objects interested in the being reported about the end of operations.
+         * Removes a listener from the list of objects interested in the being reported about
+         * the end of operations.
          * 
          * @param listener      Object to notify about progress of transfer.    
          */
@@ -306,7 +314,8 @@ public class OperationsService extends Service {
         /**
          * TODO - IMPORTANT: update implementation when more operations are moved into the service 
          * 
-         * @return  'True' when an operation that enforces the user to wait for completion is in process.
+         * @return  'True' when an operation that enforces the user to wait for completion is
+         *          in process.
          */
         public boolean isPerformingBlockingOperation() {
             return (!mServiceHandler.mPendingOperations.isEmpty());
@@ -334,7 +343,8 @@ public class OperationsService extends Service {
         }
         
         
-        public boolean dispatchResultIfFinished(int operationId, OnRemoteOperationListener listener) {
+        public boolean dispatchResultIfFinished(int operationId,
+                                                OnRemoteOperationListener listener) {
             Pair<RemoteOperation, RemoteOperationResult> undispatched = 
                     mUndispatchedFinishedOperations.remove(operationId);
             if (undispatched != null) {
@@ -353,15 +363,15 @@ public class OperationsService extends Service {
         
         
         /**
-         * Returns True when the file described by 'file' in the ownCloud account 'account' is downloading or waiting
-         * to download.
+         * Returns True when the file described by 'file' in the ownCloud account 'account' is
+         * downloading or waiting to download.
          * 
-         * If 'file' is a directory, returns 'true' if some of its descendant files is downloading or waiting
-         * to download.
+         * If 'file' is a directory, returns 'true' if some of its descendant files is downloading
+         * or waiting to download.
          * 
          * @param account       ownCloud account where the remote file is stored.
-         * @param remotePath    Path of the folder to check if something is synchronizing / downloading / uploading
-         *                      inside.
+         * @param remotePath    Path of the folder to check if something is synchronizing
+         *                      / downloading / uploading inside.
          */
         public boolean isSynchronizing(Account account, String remotePath) {
             return mSyncFolderHandler.isSynchronizing(account, remotePath);
@@ -376,7 +386,8 @@ public class OperationsService extends Service {
      * Created with the Looper of a new thread, started in {@link OperationsService#onCreate()}. 
      */
     private static class ServiceHandler extends Handler {
-        // don't make it a final class, and don't remove the static ; lint will warn about a possible memory leak
+        // don't make it a final class, and don't remove the static ; lint will warn about a p
+        // ossible memory leak
         
         
         OperationsService mService;
@@ -427,7 +438,8 @@ public class OperationsService extends Service {
                     if (mLastTarget == null || !mLastTarget.equals(next.first)) {
                         mLastTarget = next.first;
                         if (mLastTarget.mAccount != null) {
-                            OwnCloudAccount ocAccount = new OwnCloudAccount(mLastTarget.mAccount, mService);
+                            OwnCloudAccount ocAccount = new OwnCloudAccount(mLastTarget.mAccount,
+                                    mService);
                             mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
                                     getClientFor(ocAccount, mService);
                             mStorageManager = new FileDataStorageManager(
@@ -439,7 +451,8 @@ public class OperationsService extends Service {
                             if (mLastTarget.mCookie != null &&
                                     mLastTarget.mCookie.length() > 0) {
                                 // just used for GetUserName
-                                // TODO refactor to run GetUserName as AsyncTask in the context of AuthenticatorActivity
+                                // TODO refactor to run GetUserName as AsyncTask in the context of
+                                // AuthenticatorActivity
                                 credentials = OwnCloudCredentialsFactory.newSamlSsoCredentials(
                                         mLastTarget.mCookie); // SAML SSO
                             }
@@ -453,24 +466,29 @@ public class OperationsService extends Service {
 
                     /// perform the operation
                     if (mCurrentOperation instanceof SyncOperation) {
-                        result = ((SyncOperation)mCurrentOperation).execute(mOwnCloudClient, mStorageManager);
+                        result = ((SyncOperation)mCurrentOperation).execute(mOwnCloudClient,
+                                mStorageManager);
                     } else {
                         result = mCurrentOperation.execute(mOwnCloudClient);
                     }
                     
                 } catch (AccountsException e) {
                     if (mLastTarget.mAccount == null) {
-                        Log_OC.e(TAG, "Error while trying to get authorization for a NULL account", e);
+                        Log_OC.e(TAG, "Error while trying to get authorization for a NULL account",
+                                e);
                     } else {
-                        Log_OC.e(TAG, "Error while trying to get authorization for " + mLastTarget.mAccount.name, e);
+                        Log_OC.e(TAG, "Error while trying to get authorization for " +
+                                mLastTarget.mAccount.name, e);
                     }
                     result = new RemoteOperationResult(e);
                     
                 } catch (IOException e) {
                     if (mLastTarget.mAccount == null) {
-                        Log_OC.e(TAG, "Error while trying to get authorization for a NULL account", e);
+                        Log_OC.e(TAG, "Error while trying to get authorization for a NULL account",
+                                e);
                     } else {
-                        Log_OC.e(TAG, "Error while trying to get authorization for " + mLastTarget.mAccount.name, e);
+                        Log_OC.e(TAG, "Error while trying to get authorization for " +
+                                mLastTarget.mAccount.name, e);
                     }
                     result = new RemoteOperationResult(e);
                 } catch (Exception e) {
@@ -503,7 +521,8 @@ public class OperationsService extends Service {
      * TODO - move to ServiceHandler (probably)
      * 
      * @param operationIntent       Intent describing a new operation to queue and execute.
-     * @return                      Pair with the new operation object and the information about its target server.
+     * @return                      Pair with the new operation object and the information about its
+     *                              target server.
      */
     private Pair<Target , RemoteOperation> newOperation(Intent operationIntent) {
         RemoteOperation operation = null;
@@ -569,19 +588,22 @@ public class OperationsService extends Service {
                 } else if (action.equals(ACTION_REMOVE)) {
                     // Remove file or folder
                     String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
-                    boolean onlyLocalCopy = operationIntent.getBooleanExtra(EXTRA_REMOVE_ONLY_LOCAL, false);
+                    boolean onlyLocalCopy = operationIntent.getBooleanExtra(EXTRA_REMOVE_ONLY_LOCAL,
+                            false);
                     operation = new RemoveFileOperation(remotePath, onlyLocalCopy);
                     
                 } else if (action.equals(ACTION_CREATE_FOLDER)) {
                     // Create Folder
                     String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
-                    boolean createFullPath = operationIntent.getBooleanExtra(EXTRA_CREATE_FULL_PATH, true);
+                    boolean createFullPath = operationIntent.getBooleanExtra(EXTRA_CREATE_FULL_PATH,
+                            true);
                     operation = new CreateFolderOperation(remotePath, createFullPath);
                     
                 } else if (action.equals(ACTION_SYNC_FILE)) {
                     // Sync file
                     String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
-                    boolean syncFileContents = operationIntent.getBooleanExtra(EXTRA_SYNC_FILE_CONTENTS, true);
+                    boolean syncFileContents =
+                            operationIntent.getBooleanExtra(EXTRA_SYNC_FILE_CONTENTS, true);
                     operation = new SynchronizeFileOperation(
                             remotePath, account, syncFileContents, getApplicationContext()
                     );
@@ -590,7 +612,7 @@ public class OperationsService extends Service {
                     // Sync file
                     String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
                     operation = new SynchronizeFolderOperation(
-                            this,                       // TODO remove this dependency from construction time 
+                            this,                       // TODO remove this dependency from construction time
                             remotePath,
                             account, 
                             System.currentTimeMillis()  // TODO remove this dependency from construction time
@@ -621,7 +643,8 @@ public class OperationsService extends Service {
     /**
      * Sends a broadcast when a new operation is added to the queue.
      * 
-     * Local broadcasts are only delivered to activities in the same process, but can't be done sticky :\
+     * Local broadcasts are only delivered to activities in the same process, but can't be
+     * done sticky :\
      * 
      * @param target            Account or URL pointing to an OC server.
      * @param operation         Added operation.
@@ -642,7 +665,8 @@ public class OperationsService extends Service {
     // TODO - maybe add a notification for real start of operations
     
     /**
-     * Sends a LOCAL broadcast when an operations finishes in order to the interested activities can update their view
+     * Sends a LOCAL broadcast when an operations finishes in order to the interested activities c
+     * an update their view
      * 
      * Local broadcasts are only delivered to activities in the same process.
      * 
@@ -650,7 +674,8 @@ public class OperationsService extends Service {
      * @param operation         Finished operation.
      * @param result            Result of the operation.
      */
-    private void sendBroadcastOperationFinished(Target target, RemoteOperation operation, RemoteOperationResult result) {
+    private void sendBroadcastOperationFinished(Target target, RemoteOperation operation,
+                                                RemoteOperationResult result) {
         Intent intent = new Intent(ACTION_OPERATION_FINISHED);
         intent.putExtra(EXTRA_RESULT, result);
         if (target.mAccount != null) {
@@ -674,7 +699,8 @@ public class OperationsService extends Service {
             final RemoteOperation operation, final RemoteOperationResult result
     ) {
         int count = 0;
-        Iterator<OnRemoteOperationListener> listeners = mOperationsBinder.mBoundListeners.keySet().iterator();
+        Iterator<OnRemoteOperationListener> listeners =
+                mOperationsBinder.mBoundListeners.keySet().iterator();
         while (listeners.hasNext()) {
             final OnRemoteOperationListener listener = listeners.next();
             final Handler handler = mOperationsBinder.mBoundListeners.get(listener);

+ 13 - 8
src/com/owncloud/android/services/SyncFolderHandler.java

@@ -27,6 +27,7 @@ import android.os.Looper;
 import android.os.Message;
 import android.util.Pair;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
@@ -135,7 +136,8 @@ class SyncFolderHandler extends Handler {
         }
     }
 
-    public void add(Account account, String remotePath, SynchronizeFolderOperation syncFolderOperation){
+    public void add(Account account, String remotePath,
+                    SynchronizeFolderOperation syncFolderOperation){
         mPendingOperations.putIfAbsent(account, remotePath, syncFolderOperation);
         sendBroadcastNewSyncFolder(account, remotePath);    // TODO upgrade!
     }
@@ -170,26 +172,29 @@ class SyncFolderHandler extends Handler {
     }
 
     /**
-     * TODO review this method when "folder synchronization" replaces "folder download"; this is a fast and ugly
-     * patch.
+     * TODO review this method when "folder synchronization" replaces "folder download";
+     * this is a fast and ugly patch.
      */
     private void sendBroadcastNewSyncFolder(Account account, String remotePath) {
         Intent added = new Intent(FileDownloader.getDownloadAddedMessage());
         added.putExtra(FileDownloader.ACCOUNT_NAME, account.name);
         added.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
-        added.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name) + remotePath);
+        added.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name)
+                + remotePath);
         mService.sendStickyBroadcast(added);
     }
 
     /**
-     * TODO review this method when "folder synchronization" replaces "folder download"; this is a fast and ugly
-     * patch.
+     * TODO review this method when "folder synchronization" replaces "folder download";
+     * this is a fast and ugly patch.
      */
-    private void sendBroadcastFinishedSyncFolder(Account account, String remotePath, boolean success) {
+    private void sendBroadcastFinishedSyncFolder(Account account, String remotePath,
+                                                 boolean success) {
         Intent finished = new Intent(FileDownloader.getDownloadFinishMessage());
         finished.putExtra(FileDownloader.ACCOUNT_NAME, account.name);
         finished.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
-        finished.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name) + remotePath);
+        finished.putExtra(FileDownloader.EXTRA_FILE_PATH,
+                FileStorageUtils.getSavePath(account.name) + remotePath);
         finished.putExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, success);
         mService.sendStickyBroadcast(finished);
     }

+ 5 - 2
src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java

@@ -28,6 +28,7 @@ import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.ClientProtocolException;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.lib.common.accounts.AccountUtils;
 import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
@@ -64,7 +65,8 @@ public abstract class AbstractOwnCloudSyncAdapter extends
         this.setAccountManager(AccountManager.get(context));
     }
 
-    public AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize, boolean allowParallelSyncs) {
+    public AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize,
+                                       boolean allowParallelSyncs) {
         super(context, autoInitialize, allowParallelSyncs);
         this.setAccountManager(AccountManager.get(context));
     }
@@ -101,7 +103,8 @@ public abstract class AbstractOwnCloudSyncAdapter extends
         return mStoreManager;
     }
 
-    protected void initClientForCurrentAccount() throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException {
+    protected void initClientForCurrentAccount() throws OperationCanceledException,
+            AuthenticatorException, IOException, AccountNotFoundException {
         AccountUtils.constructFullURLForAccount(getContext(), account);
         OwnCloudAccount ocAccount = new OwnCloudAccount(account, getContext());
         mClient = OwnCloudClientManagerFactory.getDefaultSingleton().

+ 78 - 45
src/com/owncloud/android/syncadapter/FileSyncAdapter.java

@@ -30,6 +30,7 @@ import java.util.Map;
 
 import org.apache.jackrabbit.webdav.DavException;
 
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -58,23 +59,31 @@ import android.support.v4.app.NotificationCompat;
  * Implementation of {@link AbstractThreadedSyncAdapter} responsible for synchronizing 
  * ownCloud files.
  * 
- * Performs a full synchronization of the account recieved in {@link #onPerformSync(Account, Bundle, String, ContentProviderClient, SyncResult)}.
+ * Performs a full synchronization of the account recieved in {@link #onPerformSync(Account, Bundle,
+ * String, ContentProviderClient, SyncResult)}.
  */
 public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
 
     private final static String TAG = FileSyncAdapter.class.getSimpleName();
 
-    /** Maximum number of failed folder synchronizations that are supported before finishing the synchronization operation */
+    /** Maximum number of failed folder synchronizations that are supported before finishing
+     * the synchronization operation */
     private static final int MAX_FAILED_RESULTS = 3; 
     
     
-    public static final String EVENT_FULL_SYNC_START = FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_START";
-    public static final String EVENT_FULL_SYNC_END = FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_END";
-    public static final String EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED = FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED";
-    //public static final String EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED = FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED";
+    public static final String EVENT_FULL_SYNC_START = FileSyncAdapter.class.getName() +
+            ".EVENT_FULL_SYNC_START";
+    public static final String EVENT_FULL_SYNC_END = FileSyncAdapter.class.getName() +
+            ".EVENT_FULL_SYNC_END";
+    public static final String EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED =
+            FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED";
+    //public static final String EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED =
+    // FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED";
     
-    public static final String EXTRA_ACCOUNT_NAME = FileSyncAdapter.class.getName() + ".EXTRA_ACCOUNT_NAME";
-    public static final String EXTRA_FOLDER_PATH = FileSyncAdapter.class.getName() + ".EXTRA_FOLDER_PATH";
+    public static final String EXTRA_ACCOUNT_NAME = FileSyncAdapter.class.getName() +
+            ".EXTRA_ACCOUNT_NAME";
+    public static final String EXTRA_FOLDER_PATH = FileSyncAdapter.class.getName() +
+            ".EXTRA_FOLDER_PATH";
     public static final String EXTRA_RESULT = FileSyncAdapter.class.getName() + ".EXTRA_RESULT";
     
     
@@ -84,7 +93,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     /** Flag made 'true' when a request to cancel the synchronization is received */
     private boolean mCancellation;
     
-    /** When 'true' the process was requested by the user through the user interface; when 'false', it was requested automatically by the system */
+    /** When 'true' the process was requested by the user through the user interface;
+     *  when 'false', it was requested automatically by the system */
     private boolean mIsManualSync;
     
     /** Counter for failed operations in the synchronization process */
@@ -99,7 +109,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     /** Counter of failed operations in synchronization of kept-in-sync files */
     private int mFailsInFavouritesFound;
     
-    /** Map of remote and local paths to files that where locally stored in a location out of the ownCloud folder and couldn't be copied automatically into it */
+    /** Map of remote and local paths to files that where locally stored in a location out
+     * of the ownCloud folder and couldn't be copied automatically into it */
     private Map<String, String> mForgottenLocalFiles;
 
     /** {@link SyncResult} instance to return to the system when the synchronization finish */
@@ -155,19 +166,22 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         try {
             this.initClientForCurrentAccount();
         } catch (IOException e) {
-            /// the account is unknown for the Synchronization Manager, unreachable this context, or can not be authenticated; don't try this again
+            /// the account is unknown for the Synchronization Manager, unreachable this context,
+            // or can not be authenticated; don't try this again
             mSyncResult.tooManyRetries = true;
             notifyFailedSynchronization();
             return;
         } catch (AccountsException e) {
-            /// the account is unknown for the Synchronization Manager, unreachable this context, or can not be authenticated; don't try this again
+            /// the account is unknown for the Synchronization Manager, unreachable this context,
+            // or can not be authenticated; don't try this again
             mSyncResult.tooManyRetries = true;
             notifyFailedSynchronization();
             return;
         }
         
         Log_OC.d(TAG, "Synchronization of ownCloud account " + account.name + " starting");
-        sendLocalBroadcast(EVENT_FULL_SYNC_START, null, null);  // message to signal the start of the synchronization to the UI
+        sendLocalBroadcast(EVENT_FULL_SYNC_START, null, null);  // message to signal the start
+                                                                // of the synchronization to the UI
         
         try {
             updateOCVersion();
@@ -176,16 +190,19 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                 synchronizeFolder(getStorageManager().getFileByPath(OCFile.ROOT_PATH));
                 
             } else {
-                Log_OC.d(TAG, "Leaving synchronization before synchronizing the root folder because cancelation request");
+                Log_OC.d(TAG, "Leaving synchronization before synchronizing the root folder " +
+                        "because cancelation request");
             }
             
             
         } finally {
-            // it's important making this although very unexpected errors occur; that's the reason for the finally
+            // it's important making this although very unexpected errors occur;
+            // that's the reason for the finally
             
             if (mFailedResultsCounter > 0 && mIsManualSync) {
                 /// don't let the system synchronization manager retries MANUAL synchronizations
-                //      (be careful: "MANUAL" currently includes the synchronization requested when a new account is created and when the user changes the current account)
+                //      (be careful: "MANUAL" currently includes the synchronization requested when
+                //      a new account is created and when the user changes the current account)
                 mSyncResult.tooManyRetries = true;
                 
                 /// notify the user about the failure of MANUAL synchronization
@@ -197,7 +214,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             if (mForgottenLocalFiles.size() > 0) {
                 notifyForgottenLocalFiles();
             }
-            sendLocalBroadcast(EVENT_FULL_SYNC_END, null, mLastFailedResult);   // message to signal the end to the UI
+            sendLocalBroadcast(EVENT_FULL_SYNC_END, null, mLastFailedResult);   // message to signal
+                                                                                // the end to the UI
         }
         
     }
@@ -210,7 +228,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
      * locally saved. 
      * 
      * See {@link #onPerformSync(Account, Bundle, String, ContentProviderClient, SyncResult)}
-     * and {@link #synchronizeFolder(String, long)}.
+     * and {@link #synchronizeFolder(OCFile)}.
      */
     @Override
     public void onSyncCanceled() {
@@ -261,14 +279,14 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         }
         */
         // folder synchronization
-        RefreshFolderOperation synchFolderOp = new RefreshFolderOperation(  folder,
-                                                                                    mCurrentSyncTime, 
-                                                                                    true,
-                                                                                    mIsShareSupported,
-                                                                                    false,
-                                                                                    getStorageManager(), 
-                                                                                    getAccount(), 
-                                                                                    getContext()
+        RefreshFolderOperation synchFolderOp = new RefreshFolderOperation( folder,
+                                                                                   mCurrentSyncTime,
+                                                                                   true,
+                                                                                   mIsShareSupported,
+                                                                                   false,
+                                                                                   getStorageManager(),
+                                                                                   getAccount(),
+                                                                                   getContext()
                                                                                   );
         RemoteOperationResult result = synchFolderOp.execute(getClient());
         
@@ -289,7 +307,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             if (result.isSuccess()) {
                 // synchronize children folders 
                 List<OCFile> children = synchFolderOp.getChildren();
-                fetchChildren(folder, children, synchFolderOp.getRemoteFolderChanged());    // beware of the 'hidden' recursion here!
+                // beware of the 'hidden' recursion here!
+                fetchChildren(folder, children, synchFolderOp.getRemoteFolderChanged());
             }
             
         } else {
@@ -312,11 +331,12 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     }
 
     /**
-     * Checks if a failed result should terminate the synchronization process immediately, according to
-     * OUR OWN POLICY
+     * Checks if a failed result should terminate the synchronization process immediately,
+     * according to OUR OWN POLICY
      * 
      * @param   failedResult        Remote operation result to check.
-     * @return                      'True' if the result should immediately finish the synchronization
+     * @return                      'True' if the result should immediately finish the
+     *                              synchronization
      */
     private boolean isFinisher(RemoteOperationResult failedResult) {
         if  (failedResult != null) {
@@ -347,23 +367,29 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                 syncDown = (parentEtagChanged || etag == null || etag.length() == 0);
                 if(syncDown) { */
                     synchronizeFolder(newFile);
-                    //sendLocalBroadcast(EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED, parent.getRemotePath(), null);
+                    //sendLocalBroadcast(EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED, parent.getRemotePath(),
+                    // null);
                 //}
             }
         }
        
-        if (mCancellation && i <files.size()) Log_OC.d(TAG, "Leaving synchronization before synchronizing " + files.get(i).getRemotePath() + " due to cancelation request");
+        if (mCancellation && i <files.size()) Log_OC.d(TAG,
+                "Leaving synchronization before synchronizing " + files.get(i).getRemotePath() +
+                        " due to cancelation request");
     }
 
     
     /**
-     * Sends a message to any application component interested in the progress of the synchronization.
+     * Sends a message to any application component interested in the progress of the
+     * synchronization.
      * 
      * @param event             Event in the process of synchronization to be notified.   
      * @param dirRemotePath     Remote path of the folder target of the event occurred.
-     * @param result            Result of an individual {@ SynchronizeFolderOperation}, if completed; may be null.
+     * @param result            Result of an individual {@ SynchronizeFolderOperation},
+     *                          if completed; may be null.
      */
-    private void sendLocalBroadcast(String event, String dirRemotePath, RemoteOperationResult result) {
+    private void sendLocalBroadcast(String event, String dirRemotePath,
+                                    RemoteOperationResult result) {
         Log_OC.d(TAG, "Send broadcast " + event);
         Intent intent = new Intent(event);
         intent.putExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME, getAccount().name);
@@ -394,7 +420,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
             // let the user update credentials with one click
             Intent updateAccountCredentials = new Intent(getContext(), AuthenticatorActivity.class);
             updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, getAccount());
-            updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN);
+            updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION,
+                    AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN);
             updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
             updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND);
@@ -402,7 +429,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                 .setTicker(i18n(R.string.sync_fail_ticker_unauthorized))
                 .setContentTitle(i18n(R.string.sync_fail_ticker_unauthorized))
                 .setContentIntent(PendingIntent.getActivity(
-                    getContext(), (int)System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT
+                    getContext(), (int)System.currentTimeMillis(), updateAccountCredentials,
+                        PendingIntent.FLAG_ONE_SHOT
                 ))
                 .setContentText(i18n(R.string.sync_fail_content_unauthorized, getAccount().name));
         } else {
@@ -417,7 +445,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
 
 
     /**
-     * Notifies the user about conflicts and strange fails when trying to synchronize the contents of kept-in-sync files.
+     * Notifies the user about conflicts and strange fails when trying to synchronize the contents
+     * of kept-in-sync files.
      * 
      * By now, we won't consider a failed synchronization.
      */
@@ -432,7 +461,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                     getContext(), (int) System.currentTimeMillis(), new Intent(), 0
                 ))
                 .setContentTitle(i18n(R.string.sync_fail_in_favourites_ticker))
-                .setContentText(i18n(R.string.sync_fail_in_favourites_content, mFailedResultsCounter + mConflictsFound, mConflictsFound));
+                .setContentText(i18n(R.string.sync_fail_in_favourites_content,
+                        mFailedResultsCounter + mConflictsFound, mConflictsFound));
             
             showNotification(R.string.sync_fail_in_favourites_ticker, notificationBuilder);
         } else {
@@ -452,13 +482,15 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
     }
     
     /**
-     * Notifies the user about local copies of files out of the ownCloud local directory that were 'forgotten' because 
-     * copying them inside the ownCloud local directory was not possible.
+     * Notifies the user about local copies of files out of the ownCloud local directory that
+     * were 'forgotten' because copying them inside the ownCloud local directory was not possible.
      * 
-     * We don't want links to files out of the ownCloud local directory (foreign files) anymore. It's easy to have 
-     * synchronization problems if a local file is linked to more than one remote file.
+     * We don't want links to files out of the ownCloud local directory (foreign files) anymore.
+     * It's easy to have synchronization problems if a local file is linked to more than one
+     * remote file.
      * 
-     * We won't consider a synchronization as failed when foreign files can not be copied to the ownCloud local directory.
+     * We won't consider a synchronization as failed when foreign files can not be copied to
+     * the ownCloud local directory.
      */
     private void notifyForgottenLocalFiles() {
         NotificationCompat.Builder notificationBuilder = createNotificationBuilder();
@@ -480,7 +512,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
                 getContext(), (int) System.currentTimeMillis(), explanationIntent, 0
             ))
             .setContentTitle(i18n(R.string.sync_foreign_files_forgotten_ticker))
-            .setContentText(i18n(R.string.sync_foreign_files_forgotten_content, mForgottenLocalFiles.size(), i18n(R.string.app_name)));
+            .setContentText(i18n(R.string.sync_foreign_files_forgotten_content,
+                    mForgottenLocalFiles.size(), i18n(R.string.app_name)));
         
         showNotification(R.string.sync_foreign_files_forgotten_ticker, notificationBuilder);
     }

部分文件因为文件数量过多而无法显示