瀏覽代碼

Merge branch 'master' into sync_full_folder

Conflicts:
	src/com/owncloud/android/providers/FileContentProvider.java
masensio 9 年之前
父節點
當前提交
9494620cc4

+ 2 - 2
AndroidManifest.xml

@@ -17,8 +17,8 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->
 <manifest package="com.owncloud.android"
-    android:versionCode="10700200"
-    android:versionName="1.7.2" xmlns:android="http://schemas.android.com/apk/res/android">
+    android:versionCode="10800000"
+    android:versionName="1.8.0" xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />

+ 18 - 0
CHANGELOG.md

@@ -1,3 +1,21 @@
+## 1.8.0 (September 2015)
+- New MATERIAL DESIGN theme
+- Updated FILE TYPE ICONS
+- Preview TXT files within the app
+- COPY files & folders
+- Preview the full file/folder name from the long press menu
+- Set a file as FAVORITE (kept-in-sync) from the CONTEXT MENU
+- Updated CONFLICT RESOLUTION dialog (wording)
+- Updated background for images with TRANSPARENCY in GALLERY
+- Hidden files will not enforce list view instead of GRID VIEW (folders from Picasa & others)
+- Security:
+  + Updated network stack with security fixes (Jackrabbit 2.10.1)
+- Bugs fixed:
+  + Fixed crash when ETag is lost
+  + Passcode creation not restarted on device rotation
+  + Recovered share icon shown on folders 'shared with me'
+  + User name added to subject when sending a share link through e-mail (fixed on SAMLed apps)
+
 ## 1.7.2 (July 2015)
 - New navigation drawer
 - Improved Passcode

+ 2 - 2
oc_jb_workaround/AndroidManifest.xml

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

+ 17 - 13
res/layout-land/account_setup.xml

@@ -57,16 +57,18 @@
 			    android:gravity="center"
 			    android:orientation="vertical"
 			    android:padding="8dp" >
-			    
-				<Button
-				    android:id="@+id/centeredRefreshButton"
-				    android:layout_width="wrap_content"
-				    android:layout_height="wrap_content"
-				    android:layout_gravity="center_horizontal"
+
+				<android.support.v7.widget.AppCompatButton
+					android:id="@+id/centeredRefreshButton"
+					style="@style/ownCloud.Button"
+					android:layout_width="wrap_content"
+					android:layout_height="wrap_content"
+					android:layout_gravity="center_horizontal"
 					android:layout_marginBottom="10dp"
-				    android:text="@string/auth_check_server"
-				    android:visibility="gone"
-                    android:contentDescription="@string/auth_check_server"/>
+					android:text="@string/auth_check_server"
+					android:visibility="gone"
+					android:contentDescription="@string/auth_check_server"/>
+
 				<TextView
 				    android:id="@+id/instructions_message"
 				    android:layout_width="wrap_content"
@@ -82,7 +84,7 @@
 	        		android:id="@+id/hostUrlFrame"
 					android:layout_width="match_parent"
 					android:layout_height="wrap_content"
-					android:layout_marginBottom="10dp"
+					android:layout_marginBottom="0dp"
 			        >
 					<EditText
 						android:id="@+id/hostUrlInput"
@@ -101,13 +103,13 @@
 					</EditText>
 					<ImageButton
 					    android:id="@+id/embeddedRefreshButton"
-					    android:layout_width="48dp"
-					    android:layout_height="48dp"
+					    android:layout_width="wrap_content"
+					    android:layout_height="wrap_content"
 					    android:layout_gravity="center_vertical|right"
 					    android:layout_marginRight="5dp"
 					    android:padding="0dp"
 					    android:scaleType="fitCenter"
-					    android:src="@drawable/ic_action_refresh_black"
+					    android:src="@drawable/ic_action_refresh_grey"
             			android:onClick="onRefreshClick"
 					    android:visibility="gone"
 						android:background="@android:color/transparent"
@@ -126,6 +128,7 @@
 					android:textColor="@color/login_text_color"
 					android:textColorHint="@color/login_text_hint_color"
 					android:text="@string/auth_testing_connection"
+					android:minHeight="32dp"
                     android:contentDescription="@string/auth_testing_connection"/>
 		             
 				<CheckBox
@@ -223,6 +226,7 @@
 		<android.support.v7.widget.AppCompatButton
 		    android:id="@+id/buttonOK"
 			android:theme="@style/Button.Primary"
+			style="@style/Button.Primary"
 		    android:layout_width="match_parent"
 		    android:layout_height="wrap_content"
 		    android:layout_gravity="center_horizontal"

+ 2 - 0
res/layout/account_setup.xml

@@ -40,6 +40,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="20dp"
             android:layout_marginTop="10dp"
+            android:background="@color/login_logo_background_color"
             android:src="@drawable/logo"
             android:contentDescription="@string/app_name"/>
 
@@ -114,6 +115,7 @@
             android:textColor="@color/login_text_color"
             android:textColorHint="@color/login_text_hint_color"
             android:text="@string/auth_testing_connection"
+            android:minHeight="32dp"
             android:contentDescription="@string/auth_testing_connection"/>
 
         <CheckBox

+ 10 - 0
res/values-en-rUS/strings.xml

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

+ 10 - 0
res/values-es-rES/strings.xml

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

+ 6 - 0
res/values-hi-rIN/strings.xml

@@ -1,4 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
   <string name="empty"></string>
 </resources>

+ 303 - 34
res/values-oc/strings.xml

@@ -1,70 +1,339 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <resources>
+  <string name="about_android">%1$s Android App</string>
   <string name="about_version">version %1$s</string>
-  <string name="actionbar_upload">Amontcarga</string>
+  <string name="actionbar_sync">Actualizar lo compte</string>
+  <string name="actionbar_upload">Mandar</string>
+  <string name="actionbar_upload_from_apps">Contengut d\'autras aplicacions</string>
   <string name="actionbar_upload_files">Fichièrs</string>
-  <string name="actionbar_mkdir">Novèl dorsièr</string>
-  <string name="actionbar_settings">Configuracion</string>
+  <string name="actionbar_open_with">Dobrir amb</string>
+  <string name="actionbar_mkdir">Dorsièr novèl</string>
+  <string name="actionbar_settings">Paramètres</string>
+  <string name="actionbar_see_details">Detalhs</string>
   <string name="actionbar_send_file">Mandar</string>
+  <string name="actionbar_sort">Triar</string>
+  <string name="actionbar_sort_title">Triar</string>
+  <string-array name="actionbar_sortby">
+    <item>per òrdre alfabetic</item>
+    <item>del mai recent al pus ancian</item>
+  </string-array>
   <!--TODO re-enable when server-side folder size calculation is available   
     	<item>Biggest - Smallest</item>-->
   <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
   <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <string name="drawer_item_all_files">Totes los fichièrs</string>
   <!--TODO re-enable when "On Device" is available
     <string name="drawer_item_on_device">On device</string>-->
   <string name="drawer_item_settings">Paramètres</string>
-  <string name="drawer_open">Dubrís</string>
+  <string name="drawer_item_logs">Logs</string>
+  <string name="drawer_close">Tampar</string>
+  <string name="drawer_open">Dobrir</string>
   <string name="prefs_category_general">General</string>
-  <string name="prefs_category_more">Mai d\'aquò</string>
+  <string name="prefs_category_more">Mai</string>
   <string name="prefs_accounts">Comptes</string>
-  <string name="prefs_manage_accounts">Maneja comptes</string>
+  <string name="prefs_manage_accounts">Gestion dels comptes</string>
+  <string name="prefs_passcode">Còde de seguretat</string>
+  <string name="prefs_instant_upload">Mandadís immediat de las fòtos</string>
+  <string name="prefs_instant_upload_summary">Mandar immediatament las fòtos presas per la camèra</string>
+  <string name="prefs_instant_video_upload">Mandadís immediat de las vidèos</string>
+  <string name="prefs_instant_video_upload_summary">Mandar immediatament las vidèos presas per la camèra</string>
+  <string name="prefs_log_title">Activar los logs</string>
+  <string name="prefs_log_summary">Utilizat per enregistrar los problèmas dins los logs</string>
+  <string name="prefs_log_title_history">Istoric dels logs</string>
+  <string name="prefs_log_summary_history">Aquò aficha los logs enregistrats</string>
+  <string name="prefs_log_delete_history_button">Suprimir l\'istoric</string>
   <string name="prefs_help">Ajuda</string>
-  <string name="prefs_imprint">Mencions legalas</string>
-  <string name="auth_username">Nom d\'usancièr</string>
+  <string name="prefs_recommend">Recomandar a un amis</string>
+  <string name="prefs_feedback">Comentaris</string>
+  <string name="prefs_imprint">Mencions</string>
+  <string name="prefs_remember_last_share_location">Memorizar l\'emplaçament de partiment</string>
+  <string name="prefs_remember_last_upload_location_summary">Memorizar lo darrièr emplaçament de mandadís</string>
+  <string name="recommend_subject">Ensajatz %1$s sus vòstre smartphone !</string>
+  <string name="recommend_text">M\'agradariá de vos convidar a utilizar %1$s sus vòstre smartphone !
+Telecargatz-lo aicí : %2$s</string>
+  <string name="auth_check_server">Verificar lo servidor</string>
+  <string name="auth_host_url">Adreça del servidor https://…</string>
+  <string name="auth_username">Nom d\'utilizaire</string>
   <string name="auth_password">Senhal</string>
+  <string name="auth_register">Novèl dins %1$s ?</string>
   <string name="sync_string_files">Fichièrs</string>
-  <string name="setup_btn_connect">Connecta</string>
-  <string name="uploader_btn_upload_text">Amontcarga</string>
-  <string name="uploader_btn_new_folder_text">Novèl dorsièr</string>
-  <string name="uploader_wrn_no_account_title">Cap de compte trobat</string>
+  <string name="setup_btn_connect">Connectar</string>
+  <string name="uploader_btn_upload_text">Mandar</string>
+  <string name="uploader_btn_new_folder_text">Dorsièr novèl</string>
+  <string name="uploader_top_message">Seleccionar lo dorsièr de mandadís :</string>
+  <string name="uploader_wrn_no_account_title">Cap de compte es pas estat trobat</string>
+  <string name="uploader_wrn_no_account_text">Cap de compte %1$s es pas estat trobat. Començar per ne configurar un.</string>
   <string name="uploader_wrn_no_account_setup_btn_text">Configuracion</string>
-  <string name="uploader_wrn_no_account_quit_btn_text">Quita</string>
-  <string name="uploader_info_uploading">Al amontcargar</string>
-  <string name="file_list_seconds_ago">segonda a</string>
-  <string name="file_list_empty">Pas res dedins. Amontcarga qualquaren</string>
+  <string name="uploader_wrn_no_account_quit_btn_text">Quitar</string>
+  <string name="uploader_wrn_no_content_title">Pas res a mandar</string>
+  <string name="uploader_wrn_no_content_text">Cap de contengut pas recebut. Pas res a mandar.</string>
+  <string name="uploader_error_forbidden_content">%1$s es pas autorizat a accedir al contengut partejat</string>
+  <string name="uploader_info_uploading">Mandadís...</string>
+  <string name="file_list_seconds_ago">i a qualques segondas</string>
+  <string name="file_list_empty">I a pas res aicí ! Mandatz doncas quicòm :)</string>
+  <string name="file_list_loading">Cargament...</string>
+  <string name="local_file_list_empty">Cap de fichièr es pas present dins aqueste dorsièr.</string>
+  <string name="filedetails_select_file">Quichatz sus un fichièr per afichar las informacions suplementàrias</string>
   <string name="filedetails_size">Talha :</string>
   <string name="filedetails_type">Tipe :</string>
-  <string name="filedetails_created">Creat :</string>
-  <string name="filedetails_modified">Modificat :</string>
-  <string name="filedetails_download">Avalcarga</string>
-  <string name="action_share_file">Partiment per ligam</string>
+  <string name="filedetails_created">Creat lo :</string>
+  <string name="filedetails_modified">Modificat lo :</string>
+  <string name="filedetails_download">Telecargar</string>
+  <string name="filedetails_sync_file">Actualizar lo fichièr</string>
+  <string name="filedetails_renamed_in_upload_msg">Lo fichièr es estat renomenat en %s pendent lo mandadís</string>
+  <string name="list_layout">Afichatge en lista</string>
+  <string name="action_share_file">Partejar lo ligam</string>
+  <string name="action_unshare_file">Partejar pas mai aqueste ligam</string>
   <string name="common_yes">Òc</string>
   <string name="common_no">Non</string>
-  <string name="common_ok">D\'accòrdi</string>
-  <string name="common_cancel_upload"> Anulla l\'amontcargar</string>
-  <string name="common_cancel">Annula</string>
+  <string name="common_ok">D\'acòrdi</string>
+  <string name="common_cancel_download">Anullar lo telecargament</string>
+  <string name="common_cancel_upload">Anullar lo mandadís</string>
+  <string name="common_cancel">Anullar</string>
+  <string name="common_save_exit">Salvar &amp; Quitar</string>
   <string name="common_error">Error</string>
-  <string name="common_error_unknown">Error Desconeguda </string>
-  <string name="about_title">A prepaus</string>
-  <string name="change_password">Cambia lo senhal</string>
-  <string name="delete_account">Escafa lo compte</string>
-  <string name="create_account">Crea un compte</string>
-  <string name="upload_chooser_title">Avalcarga dempuèi ...</string>
+  <string name="common_loading">Cargament…</string>
+  <string name="common_error_unknown">Error desconeguda </string>
+  <string name="about_title">A prepaus de</string>
+  <string name="change_password">Cambiar de senhal</string>
+  <string name="delete_account">Suprimir aqueste compte</string>
+  <string name="create_account">Crear un compte</string>
+  <string name="upload_chooser_title">Mandar un fichièr dempuèi…</string>
   <string name="uploader_info_dirname">Nom del dorsièr</string>
-  <string name="uploader_upload_in_progress_ticker">Al avalcargar ...</string>
-  <string name="uploader_upload_succeeded_ticker">Capitada d\'avalcargar</string>
-  <string name="common_choose_account">Causís lo compte</string>
+  <string name="uploader_upload_in_progress_ticker">Mandadís…</string>
+  <string name="uploader_upload_in_progress_content">Mandadís del fichièr %2$s : %1$d%% efectuats</string>
+  <string name="uploader_upload_succeeded_ticker">Mandadís capitat</string>
+  <string name="uploader_upload_succeeded_content_single">Lo fichièr %1$s es estat mandat amb succès</string>
+  <string name="uploader_upload_failed_ticker">Fracàs del mandadís</string>
+  <string name="uploader_upload_failed_content_single">Lo mandadís de %1$s a fracassat</string>
+  <string name="uploader_upload_failed_credentials_error">Lo mandadís a fracassat, vos cal vos connectar tornamai</string>
+  <string name="downloader_download_in_progress_ticker">Telecargament en cors…</string>
+  <string name="downloader_download_in_progress_content">Telecargament en cors de %2$s, %1$d%% efectuats</string>
+  <string name="downloader_download_succeeded_ticker">Telecargament capitat</string>
+  <string name="downloader_download_succeeded_content">%1$s es estat telecargat amb succès</string>
+  <string name="downloader_download_failed_ticker">Lo telecargament a fracassat</string>
+  <string name="downloader_download_failed_content">Lo telecargament de %1$s a fracassat</string>
+  <string name="downloader_not_downloaded_yet">Pas encara telecargat</string>
+  <string name="downloader_download_failed_credentials_error">Lo telecargament a fracassat, vos cal vos connectar tornamai</string>
+  <string name="common_choose_account">Causissètz un compte</string>
+  <string name="sync_fail_ticker">La sincronizacion a fracassat</string>
+  <string name="sync_fail_ticker_unauthorized">Fracàs de la sincronizacion, vos cal vos reconnectar</string>
+  <string name="sync_fail_content">La sincronizacion de %1$s a pas pogut èsser acabada</string>
+  <string name="sync_fail_content_unauthorized">Senhal invalid per %1$s</string>
+  <string name="sync_conflicts_in_favourites_ticker">De conflictes son estats trobats</string>
+  <string name="sync_conflicts_in_favourites_content">%1$d fichièrs de gardar sincronizats an pas pogut èsser sincronizats</string>
+  <string name="sync_fail_in_favourites_ticker">La sincronizacion dels fichièrs a fracassat</string>
+  <string name="sync_fail_in_favourites_content">Lo contengut de %1$d fichièrs a pas pogut èsser sincronizat (%2$d conflictes)</string>
+  <string name="sync_foreign_files_forgotten_ticker">Certans fichièrs locals son estats doblidats</string>
+  <string name="sync_foreign_files_forgotten_content">%1$d fichièrs del dorsièr %2$s an pas pogut èsser copiats dins</string>
+  <string name="sync_foreign_files_forgotten_explanation">Dempuèi la version 1.3.16, los fichièrs mandats dempuèi aqueste aparelh son copiats dins lo dorsièr local %1$s per evitar una pèrda de donadas quand un meteis fichièr es sincronizat amb mantun compte.
+
+En rason d\'aquesta modificacion, totes los fichièrs mandats amb de versions anterioras d\'aquesta aplicacion son estats copiats dins lo dorsièr %2$s. Pasmens, una error a empachat l\'acabament d\'aquesta operacion pendent la sincronizacion del compte. Podètz siá daissar los fichièrs tals coma son e suprimir lo ligam cap a %3$s, siá desplaçar los fichièrs dins lo dorsièr %1$s e gardar lo ligam cap a %4$s.
+
+Çaijós la lista dels fichièrs locals, e los fichièrs distants dins %5$s als quals èran ligats.</string>
+  <string name="sync_current_folder_was_removed">Lo dorsièr %1$s existís pas mai</string>
+  <string name="foreign_files_move">Desplaçar tot</string>
+  <string name="foreign_files_success">Totes los fichièrs son estats desplaçats</string>
+  <string name="foreign_files_fail">Certans fichièrs an pas pogut èsser desplaçats</string>
+  <string name="foreign_files_local_text">Local : %1$s</string>
+  <string name="foreign_files_remote_text">Distant : %1$s</string>
+  <string name="upload_query_move_foreign_files">I a pas pro de plaça disponibla per copiar los fichièrs seleccionats dins lo dorsièr %1$s. Volètz los desplaçar a la plaça ?</string>
+  <string name="pass_code_enter_pass_code">Sasissètz vòstre còde de seguretat</string>
+  <string name="pass_code_configure_your_pass_code">Sasissètz vòstre còde de seguretat</string>
+  <string name="pass_code_configure_your_pass_code_explanation">Lo còde de seguretat serà demandat a cada dobertura de l\'aplicacion</string>
+  <string name="pass_code_reenter_your_pass_code">Sasissètz tornamai vòstre còde de seguretat</string>
+  <string name="pass_code_remove_your_pass_code">Suprimir vòstre còde de seguretat</string>
+  <string name="pass_code_mismatch">Los còdes de seguretat son pas identics</string>
+  <string name="pass_code_wrong">Còde de seguretat incorrècte</string>
+  <string name="pass_code_removed">Còde de seguretat suprimit</string>
+  <string name="pass_code_stored">Còde de seguretat enregistrat</string>
+  <string name="media_notif_ticker">%1$s lector de musica</string>
+  <string name="media_state_playing">%1$s (lectura)</string>
+  <string name="media_state_loading">%1$s (cargament)</string>
+  <string name="media_event_done">Lectura de %1$s acabada</string>
+  <string name="media_err_nothing_to_play">Fichièr mèdia introbable </string>
+  <string name="media_err_no_account">Cap de compte es pas estat trobat</string>
+  <string name="media_err_not_in_owncloud">Lo fichièr es pas dins un compte valid</string>
+  <string name="media_err_unsupported">Lo codec d\'aqueste mèdia es pas pres en carga </string>
+  <string name="media_err_io">Lo fichièr mèdia pòt pas èsser legit</string>
+  <string name="media_err_malformed">Lo fichièr mèdia es pas corrèctament encodat</string>
+  <string name="media_err_timeout">Relambi depassat per la lectura del tròç</string>
+  <string name="media_err_invalid_progressive_playback">Lo fichièr mèdia pòt pas èsser difusat</string>
+  <string name="media_err_unknown">Lo fichièr mèdia pòt pas èsser jogat amb lo lector estandard</string>
+  <string name="media_err_security_ex">Error de seguretat a la lectura de %1$s</string>
+  <string name="media_err_io_ex">Error de lectura de fichièr a la lectura de %1$s</string>
+  <string name="media_err_unexpected">Error imprevista a la lectura de %1$s </string>
+  <string name="media_rewind_description">Boton de rembobinatge</string>
+  <string name="media_play_pause_description">Boton de lectura o de pausa</string>
+  <string name="media_forward_description">Boton d\'avança rapida</string>
+  <string name="auth_getting_authorization">Demanda d\'autorizacion…</string>
+  <string name="auth_trying_to_login">Temptativa de connexion…</string>
+  <string name="auth_no_net_conn_title">Pas de connexion ret</string>
+  <string name="auth_nossl_plain_ok_title">Connexion securizada pas disponibla</string>
+  <string name="auth_connection_established">Connexion establida</string>
+  <string name="auth_testing_connection">Tèst de connexion</string>
+  <string name="auth_not_configured_title">Configuracion del servidor erronèa</string>
+  <string name="auth_account_not_new">Un compte pels meteisses utilizaire e servidor existís ja sus aqueste aparelh</string>
+  <string name="auth_account_not_the_same">L\'utilizaire entrat correspond pas a l\'utilizaire d\'aqueste compte</string>
+  <string name="auth_unknown_error_title">Una error desconeguda s\'es produsida.</string>
+  <string name="auth_unknown_host_title">Impossible de trobar l\'òste</string>
+  <string name="auth_incorrect_path_title">Cap d\'instància del servidor es pas estada trobada</string>
+  <string name="auth_timeout_title">Lo servidor a pres tròp de temps a respondre</string>
+  <string name="auth_incorrect_address_title">Adreça invalida</string>
+  <string name="auth_ssl_general_error_title">Fracàs de l\'inicializacion SSL</string>
+  <string name="auth_ssl_unverified_server_title">Impossible de verificar l\'identitat del servidor SSL</string>
+  <string name="auth_bad_oc_version_title">La version del servidor es pas reconeguda</string>
+  <string name="auth_wrong_connection_title">Impossible d\'establir la connexion</string>
+  <string name="auth_secure_connection">Connexion securizada establida</string>
+  <string name="auth_unauthorized">Nom d\'utilizaire o senhal incorrècte</string>
+  <string name="auth_oauth_error">Fracàs d\'autorizacion</string>
+  <string name="auth_oauth_error_access_denied">Accès refusat pel servidor d\'autorizacion</string>
+  <string name="auth_wtf_reenter_URL">Estat imprevist ; sasissètz tornamai l\'URL del servidor</string>
+  <string name="auth_expired_oauth_token_toast">Vòstra autorizacion a expirat. Mercé de vos autentificar tornamai</string>
+  <string name="auth_expired_basic_auth_toast">Sasissètz lo senhal corrent</string>
+  <string name="auth_expired_saml_sso_token_toast">Vòstra session a expirat. Mercé de vos reconnectar</string>
+  <string name="auth_connecting_auth_server">Connexion al servidor d\'autentificacion…</string>
+  <string name="auth_unsupported_auth_method">Lo servidor pren pas en carga pas aqueste metòde d\'autentificacion</string>
+  <string name="auth_unsupported_multiaccount">%1$s pren pas en carga los comptes multiples</string>
+  <string name="auth_fail_get_user_name">Vòstre servidor a tornat un identificant d\'utilizaire incorrècte. Prenètz contacte amb vòstre administrator
+</string>
+  <string name="auth_can_not_auth_against_server">Impossible de s\'autentificar sus aqueste servidor</string>
+  <string name="auth_account_does_not_exist">Lo compte existís pas encara sus aqueste periferic</string>
   <string name="favorite">Apondre als favorits</string>
-  <string name="common_rename">Torna nomenar</string>
+  <string name="unfavorite">Suprimir dels favorits</string>
+  <string name="common_rename">Renomenar</string>
   <string name="common_remove">Suprimir</string>
+  <string name="confirmation_remove_alert">Sètz segur que volètz suprimir %1$s ?</string>
+  <string name="confirmation_remove_folder_alert">Sètz segur que volètz suprimir %1$s e son contengut ?</string>
+  <string name="confirmation_remove_local">Local solament</string>
+  <string name="confirmation_remove_folder_local">Local solament</string>
+  <string name="confirmation_remove_remote">Dempuèi lo servidor</string>
+  <string name="confirmation_remove_remote_and_local">Distant &amp; local</string>
+  <string name="remove_success_msg">Supression efectuada amb succès</string>
+  <string name="remove_fail_msg">Supression impossibla</string>
+  <string name="rename_dialog_title">Entratz un nom novèl</string>
+  <string name="rename_local_fail_msg">La version locala pòt pas èsser renomenada, reensajatz amb un nom diferent</string>
+  <string name="rename_server_fail_msg">Cambiament de nom impossible</string>
+  <string name="sync_file_fail_msg">Lo fichièr distant a pas pogut èsser verificat</string>
+  <string name="sync_file_nothing_to_do_msg">Lo contengut del fichièr es ja sincronizat</string>
+  <string name="create_dir_fail_msg">Lo dorsièr a pas pogut èsser creat</string>
+  <string name="filename_forbidden_characters">Caractèrs interdiches : / \\ &lt; &gt; : \" | ? *</string>
+  <string name="filename_forbidden_charaters_from_server">Lo nom de fichièr conten al mens un caractèr invalid</string>
+  <string name="filename_empty">Lo nom del fichièr pòt pas èsser void</string>
+  <string name="wait_a_moment">Pacientatz</string>
+  <string name="filedisplay_unexpected_bad_get_content">Problèma imprevist. Ensajatz una autra aplicacion per la seleccion del fichièr</string>
+  <string name="filedisplay_no_file_selected">Cap de fichièr pas seleccionat</string>
+  <string name="activity_chooser_title">Mandar lo ligam cap a…</string>
+  <string name="wait_for_tmp_copy_from_private_storage">Còpia del fichièr dempuèi l\'emmagazinatge privat</string>
+  <string name="oauth_check_onoff">Connexion amb oAuth2</string>
+  <string name="oauth_login_connection">Connexion al servidor oAuth2…</string>
+  <string name="ssl_validator_header">L\'identitat del site pòt pas èsser verificada</string>
+  <string name="ssl_validator_reason_cert_not_trusted">- Lo certificat del servidor es pas segur</string>
+  <string name="ssl_validator_reason_cert_expired">- Lo certificat del servidor a expirat</string>
+  <string name="ssl_validator_reason_cert_not_yet_valid">- Lo certificat del servidor es pas encara valid</string>
+  <string name="ssl_validator_reason_hostname_not_verified">- L\'URL correspond pas al nom d\'òste del certificat</string>
+  <string name="ssl_validator_question">Vos volètz fisaz d\'aqueste certificat malgrat tot ?</string>
+  <string name="ssl_validator_not_saved">Impossible de salvar lo certificat</string>
+  <string name="ssl_validator_btn_details_see">Detalhs</string>
+  <string name="ssl_validator_btn_details_hide">Amagar</string>
+  <string name="ssl_validator_label_subject">Desliurat a :</string>
+  <string name="ssl_validator_label_issuer">Desliurat per :</string>
+  <string name="ssl_validator_label_CN">Nom d\'usatge :</string>
+  <string name="ssl_validator_label_O">Organizacion :</string>
+  <string name="ssl_validator_label_OU">Unitat organizacionala :</string>
   <string name="ssl_validator_label_C">País :</string>
+  <string name="ssl_validator_label_ST">Region :</string>
+  <string name="ssl_validator_label_L">Localizacion :</string>
+  <string name="ssl_validator_label_validity">Validitat :</string>
+  <string name="ssl_validator_label_validity_from">Del :</string>
+  <string name="ssl_validator_label_validity_to">Al :</string>
+  <string name="ssl_validator_label_signature">Signatura :</string>
+  <string name="ssl_validator_label_signature_algorithm">Algoritme :</string>
+  <string name="ssl_validator_null_cert">Impossible d\'afichar lo certificat.</string>
+  <string name="ssl_validator_no_info_about_error">- Pas cap d\'informacion sus l\'error</string>
+  <string name="placeholder_sentence">Aquò es un espaci reservat</string>
+  <string name="placeholder_filename">placeholder.txt</string>
+  <string name="placeholder_filetype">Imatge PNG</string>
+  <string name="placeholder_filesize">389 Ko</string>
+  <string name="placeholder_timestamp">18/05/2012 12:23</string>
+  <string name="placeholder_media_time">12:23:45</string>
+  <string name="instant_upload_on_wifi">Mandar los imatges via una connexion WiFi unicament</string>
+  <string name="instant_video_upload_on_wifi">Mandar las vidèos via una connexion WiFi unicament</string>
+  <string name="instant_upload_path">/InstantUpload</string>
+  <string name="conflict_title">Conflicte de fichièrs</string>
+  <string name="conflict_message">Quin(s) fichièr(s) volètz gardar ? Se seleccionatz los dos, una chifra serà aponduda al nom del fichièr local.</string>
+  <string name="conflict_keep_both">Gardar las doas versions</string>
+  <string name="conflict_use_local_version">version locala</string>
+  <string name="conflict_use_server_version">version servidor</string>
+  <string name="preview_image_description">Previsualizacion de l\'imatge</string>
+  <string name="preview_image_error_unknown_format">Aqueste imatge pòt pas èsser afichada</string>
+  <string name="error__upload__local_file_not_copied">%1$s a pas pogut èsser copiat dins lo dorsièr local %2$s</string>
+  <string name="prefs_instant_upload_path_title">Repertòri de mandadís</string>
+  <string name="share_link_no_support_share_api">O planhèm, lo partiment es pas disponible sus vòstre servidor. Contactatz vòstre administrator.</string>
+  <string name="share_link_file_no_exist">Impossible de partejar. Verificatz que lo fichièr es plan present</string>
+  <string name="share_link_file_error">Una error s\'es produsida al moment de la tentative de partiment d\'aqueste fichièr o repertòri</string>
+  <string name="unshare_link_file_no_exist">Impossible de suprimir lo partiment. Verificatz que lo fichièr es ben present</string>
+  <string name="unshare_link_file_error">Una error s\'es produsida al moment de la temptativa d’anullacion del partiment d\'aqueste fichièr o repertòri</string>
+  <string name="share_link_password_title">Sasissètz un senhal</string>
+  <string name="share_link_empty_password">Vos cal sasir un senhal</string>
   <string name="activity_chooser_send_file_title">Mandar</string>
+  <string name="copy_link">Copiar lo ligam</string>
   <string name="clipboard_text_copied">Copiat dins lo quichapapièrs</string>
+  <string name="error_cant_bind_to_operations_service">Error critica : impossible de realizar d\'operacions</string>
+  <string name="network_error_socket_exception">Una error s\'es produsida pendent la connexion al servidor.</string>
+  <string name="network_error_socket_timeout_exception">Una error s\'es produsida pendent l\'espèra del servidor. L\'operacion a pas pogut èsser efectuada</string>
+  <string name="network_error_connect_timeout_exception">Una error s\'es produsida pendent l\'espèra del servidor. L\'operacion a pas pogut èsser efectuada</string>
+  <string name="network_host_not_available">L\'operacion a pas pogut èsser acabada, lo servidor es pas disponible</string>
   <string name="empty"></string>
+  <string name="forbidden_permissions">Avètz pas la permission %s</string>
+  <string name="forbidden_permissions_rename">de renomenar aqueste fichièr</string>
+  <string name="forbidden_permissions_delete">d’escafar aqueste fichièr</string>
+  <string name="share_link_forbidden_permissions">per fin de partejar aqueste fichièr</string>
+  <string name="unshare_link_forbidden_permissions">per fin de partejar pas mai aqueste fichièr</string>
+  <string name="forbidden_permissions_create">de crear aqueste fichièr</string>
+  <string name="uploader_upload_forbidden_permissions">per fin d’importar dins aqueste repertòri</string>
+  <string name="downloader_download_file_not_found">Aqueste fichièr es pas mai disponible sul servidor</string>
   <string name="prefs_category_accounts">Comptes</string>
+  <string name="prefs_add_account">Apondre un compte</string>
+  <string name="auth_redirect_non_secure_connection_title">La connexion securizada es redirigida cap a una rota non-securizada.</string>
+  <string name="actionbar_logger">Jornals</string>
+  <string name="log_send_history_button">Mandar l\'istoric</string>
+  <string name="log_send_no_mail_app">Cap d\'aplicacion pas trobada pel mandadís de jornals. Installar una aplicacion de corrièl !</string>
+  <string name="log_send_mail_subject">Jornals de l\'aplicacion Android %1$s</string>
+  <string name="log_progress_dialog_text">Cargament de las donadas…</string>
   <string name="saml_authentication_required_text">Autentificacion requesida</string>
   <string name="saml_authentication_wrong_pass">Senhal incorrècte</string>
-  <string name="folder_picker_choose_button_text">Causís</string>
+  <string name="actionbar_move">Desplaçar</string>
+  <string name="file_list_empty_moving">I a pas res aicí. Podètz apondre un dorsièr !</string>
+  <string name="folder_picker_choose_button_text">Causir</string>
+  <string name="move_file_not_found">Impossible de desplaçar. Verificatz que lo fichièr existís</string>
+  <string name="move_file_invalid_into_descendent">Es pas possible de desplaçar un dorsièr cap a un de sos descendents</string>
+  <string name="move_file_invalid_overwrite">Lo fichièr existís ja dins lo dorsièr de destinacion</string>
+  <string name="move_file_error">Una error s\'es produsida al moment de la temptativa de desplaçament d\'aqueste fichièr o dorsièr</string>
+  <string name="forbidden_permissions_move">de desplaçar aqueste fichièr</string>
+  <string name="copy_file_not_found">Impossible de copiar. Verificatz que lo fichièr existís</string>
+  <string name="copy_file_invalid_into_descendent">Es pas possible de copiar un dorsièr cap a un de sos descendents</string>
+  <string name="copy_file_invalid_overwrite">Fichièr ja existent dins lo dorsièr de destinacion</string>
+  <string name="copy_file_error">Una error s\'es produsida al moment de la còpia d\'aqueste fichièr o dorsièr</string>
+  <string name="forbidden_permissions_copy">de copiar aqueste fichièr</string>
+  <string name="prefs_category_instant_uploading">Mandadís immediat</string>
+  <string name="prefs_category_security">Seguretat</string>
+  <string name="prefs_instant_video_upload_path_title">Repertòri de mandadís de las vidèos</string>
+  <string name="download_folder_failed_content">Lo telecargament del dorsièr %1$s a pas pogut èsser acabat</string>
+  <string name="shared_subject_header">a partejat</string>
+  <string name="with_you_subject_header">amb vos</string>
+  <string name="subject_token">%1$s a partejat \"%2$s\" amb vos</string>
+  <string name="saml_subject_token">\"%1$s\" es estat partejat amb vos</string>
+  <string name="auth_refresh_button">Actualizar la connexion</string>
   <string name="auth_host_address">Adreça del servidor</string>
+  <string name="common_error_out_memory">Memòria insufisenta</string>
   <string name="username">Nom d\'utilizaire</string>
+  <string name="file_list__footer__folder">1 dorsièr</string>
+  <string name="file_list__footer__folders">%1$d dorsièrs</string>
+  <string name="file_list__footer__file">1 fichièr</string>
+  <string name="file_list__footer__file_and_folder">1 fichièr, 1 dorsièr</string>
+  <string name="file_list__footer__file_and_folders">1 fichièr, %1$d dorsièrs</string>
+  <string name="file_list__footer__files">%1$d fichièrs</string>
+  <string name="file_list__footer__files_and_folder">%1$d fichièrs, 1 dorsièr</string>
+  <string name="file_list__footer__files_and_folders">%1$d fichièrs, %2$d dorsièrs</string>
 </resources>

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

@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<resources>
+  <!--TODO re-enable when server-side folder size calculation is available   
+    	<item>Biggest - Smallest</item>-->
+  <!--TODO re-enable when "Accounts" is available in Navigation Drawer-->
+  <!--<string name="drawer_item_accounts">Accounts</string>-->
+  <!--TODO re-enable when "On Device" is available
+    <string name="drawer_item_on_device">On device</string>-->
+  <string name="empty"></string>
+</resources>

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

@@ -1373,6 +1373,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     public void onAuthenticatorTaskCallback(RemoteOperationResult result) {
         mWaitingForOpId = Long.MAX_VALUE;
         dismissDialog(WAIT_DIALOG_TAG);
+        mAsyncTask = null;
 
         if (result.isSuccess()) {
             Log_OC.d(TAG, "Successful access - time to save the account");

+ 1 - 4
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -195,10 +195,6 @@ public class ThumbnailsCacheManager {
         }
 
         protected void onPostExecute(Bitmap bitmap){
-            if (isCancelled()) {
-                bitmap = null;
-            }
-
             if (bitmap != null) {
                 final ImageView imageView = mImageViewReference.get();
                 final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
@@ -365,6 +361,7 @@ public class ThumbnailsCacheManager {
             if (bitmapData == null || bitmapData != file) {
                 // Cancel previous task
                 bitmapWorkerTask.cancel(true);
+                Log_OC.v(TAG, "Cancelled generation of thumbnail for a reused imageView");
             } else {
                 // The same work is already in progress
                 return false;

+ 8 - 5
src/com/owncloud/android/providers/FileContentProvider.java

@@ -178,6 +178,8 @@ public class FileContentProvider extends ContentProvider {
             String remoteId = "";
             if (c != null && c.moveToFirst()) {
                 remoteId = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID));
+                //ThumbnailsCacheManager.removeFileFromCache(remoteId);
+                c.close();
             }
             Log_OC.d(TAG, "Removing FILE " + remoteId);
 
@@ -187,11 +189,6 @@ public class FileContentProvider extends ContentProvider {
                             + uri.getPathSegments().get(1)
                             + (!TextUtils.isEmpty(where) ? " AND (" + where
                                     + ")" : ""), whereArgs);
-            /* just for log
-            if (c!=null) {
-                c.close();
-            }
-            */
             break;
         case DIRECTORY:
             // deletion of folder is recursive
@@ -306,6 +303,9 @@ public class FileContentProvider extends ContentProvider {
             // ugly patch; serious refactorization is needed to reduce work in
             // FileDataStorageManager and bring it to FileContentProvider
             if (doubleCheck == null || !doubleCheck.moveToFirst()) {
+                if (doubleCheck != null) {
+                    doubleCheck.close();
+                }
                 long rowId = db.insert(ProviderTableMeta.FILE_TABLE_NAME, null, values);
                 if (rowId > 0) {
                     Uri insertedFileUri =
@@ -341,6 +341,9 @@ public class FileContentProvider extends ContentProvider {
             // ugly patch; serious refactorization is needed to reduce work in
             // FileDataStorageManager and bring it to FileContentProvider
             if (doubleCheckShare == null || !doubleCheckShare.moveToFirst()) {
+                if (doubleCheckShare != null) {
+                    doubleCheckShare.close();
+                }
                 long rowId = db.insert(ProviderTableMeta.OCSHARES_TABLE_NAME, null, values);
                 if (rowId >0) {
                     insertedShareUri =

+ 14 - 3
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@ -37,6 +37,7 @@ import android.widget.TextView;
 
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimetypeIconUtil;
@@ -46,7 +47,9 @@ import com.owncloud.android.utils.MimetypeIconUtil;
  * in a local directory
  */
 public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
-    
+
+    private static final String TAG = LocalFileListAdapter.class.getSimpleName();
+
     private Context mContext;
     private File mDirectory;
     private File[] mFiles = null;
@@ -104,6 +107,12 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
             fileName.setText(name);
             
             ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);
+
+            /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or
+             * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task.
+             **/
+            boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon));
+
             if (!file.isDirectory()) {
                 fileIcon.setImageResource(R.drawable.file);
             } else {
@@ -143,7 +152,7 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
                     } else {
 
                         // generate new Thumbnail
-                        if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {
+                        if (allowedToCreateNewThumbnail) {
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                     new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                             if (thumbnail == null) {
@@ -157,7 +166,9 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
                 		        );
                             fileIcon.setImageDrawable(asyncDrawable);
                             task.execute(file);
-                        }
+                            Log_OC.v(TAG, "Executing task to generate a new thumbnail");
+
+                        } // else, already being generated, don't restart it
                     }
                 } else {
                     fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));

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

@@ -476,7 +476,7 @@ public class PreviewImageFragment extends FileFragment {
 
         @Override
         protected void onCancelled(LoadImage result) {
-            if (result.bitmap != null) {
+            if (result != null && result.bitmap != null) {
                 result.bitmap.recycle();
             }
         }

+ 3 - 3
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -47,12 +47,12 @@ import android.webkit.MimeTypeMap;
  * Static methods to help in access to local file system.
  */
 public class FileStorageUtils {
-    public static Integer mSortOrder;
-    public static Boolean mSortAscending;
     public static final Integer SORT_NAME = 0;
     public static final Integer SORT_DATE = 1;
     public static final Integer SORT_SIZE = 2;
-  
+    public static Integer mSortOrder = SORT_NAME;
+    public static Boolean mSortAscending = true;
+
     
     public static final String getSavePath(String accountName) {
         File sdCard = Environment.getExternalStorageDirectory();