mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 13:45:35 +03:00
Merge branch 'develop' into release-1.6.0
This commit is contained in:
commit
2e472998c1
39 changed files with 722 additions and 33 deletions
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry kind="output" path="bin/classes"/>
|
||||
</classpath>
|
||||
|
|
BIN
libs/disklrucache-2.0.2.jar
Normal file
BIN
libs/disklrucache-2.0.2.jar
Normal file
Binary file not shown.
3
lint.xml
3
lint.xml
|
@ -1,3 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lint>
|
||||
</lint>
|
|
@ -31,6 +31,7 @@
|
|||
<string name="prefs_feedback">Geriyə cavab</string>
|
||||
<string name="prefs_imprint">İşarələmək</string>
|
||||
<string name="recommend_subject">%1$s-i ağıllı telefonunuzda yoxlayın!</string>
|
||||
<string name="recommend_text">Mən sizi öz smartfonunuzda %1$s istifadə etmək üçün dəvət etmək istəyirəm! Burdan endirin: %2$s</string>
|
||||
<string name="auth_check_server">Serveri yoxla</string>
|
||||
<string name="auth_host_url">Server ünvanı https://…</string>
|
||||
<string name="auth_username">İstifadəçi adı</string>
|
||||
|
@ -128,6 +129,7 @@ Aşağıda göstərilən %5$s-də olan daxili və xarici fayl(lar) link edilmiş
|
|||
<string name="media_state_playing">%1$s (oxuyur)</string>
|
||||
<string name="media_state_loading">%1$s (yüklənir)</string>
|
||||
<string name="media_event_done">%1$s geriyə oxunuş bitib</string>
|
||||
<string name="media_err_nothing_to_play">Media faylı tapılmadı</string>
|
||||
<string name="common_remove">Sil</string>
|
||||
<string name="ssl_validator_btn_details_see">Detallar</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>
|
||||
|
|
|
@ -264,6 +264,9 @@
|
|||
<string name="prefs_category_accounts">Профили</string>
|
||||
<string name="prefs_add_account">Добавяне на профил</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Сигурна връзка е пренасочена по несигурен път.</string>
|
||||
<string name="actionbar_logger">Доклади</string>
|
||||
<string name="log_send_history_button">Изпрати История</string>
|
||||
<string name="log_progress_dialog_text">Зареждане на информация...</string>
|
||||
<string name="saml_authentication_required_text">Нужна е идентификация</string>
|
||||
<string name="saml_authentication_wrong_pass">Грешна парола</string>
|
||||
<string name="actionbar_move">Премести</string>
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<string name="uploader_error_forbidden_content">এই যৌথ কনটেন্ট এ %1$s এর প্রবেশ অনুমোদিত নয়</string>
|
||||
<string name="uploader_info_uploading">আপলোড করা হচ্ছে</string>
|
||||
<string name="file_list_empty">এখানে কিছুই নেই। কিছু আপলোড করুন !</string>
|
||||
<string name="file_list_loading">লোড হচছে....</string>
|
||||
<string name="file_list_loading">লোড হচ্ছে....</string>
|
||||
<string name="local_file_list_empty">এই ফোলডারে কোন ফাইল নেই</string>
|
||||
<string name="filedetails_select_file">অতিরিক্ত তথ্য প্রদর্শন করতে চাইলে ফাইলে ট্যাপ দিন</string>
|
||||
<string name="filedetails_size">আয়তনঃ</string>
|
||||
|
@ -140,7 +140,7 @@
|
|||
<string name="media_forward_description">আগান</string>
|
||||
<string name="auth_getting_authorization">অনুমোদন নেয়া হচ্ছে....</string>
|
||||
<string name="auth_trying_to_login">লগইনের চেষটা চলছে..</string>
|
||||
<string name="auth_no_net_conn_title">নেটওয়ারক কানেকশন নেই</string>
|
||||
<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>
|
||||
|
@ -232,7 +232,7 @@
|
|||
<string name="conflict_message">স্থানীয় ফাইল আর দুরবর্তী ফাইল %s এক নয়। এগোতে চাইলে সার্ভারের ফাইলের কনটেন্ট প্রদিস্থাপিত হবে।</string>
|
||||
<string name="conflict_keep_both">উভয়কে রাখ</string>
|
||||
<string name="conflict_overwrite">উপরে লেখ</string>
|
||||
<string name="conflict_dont_upload">আপলোড করোনা</string>
|
||||
<string name="conflict_dont_upload">আপলোড কোরোনা</string>
|
||||
<string name="preview_image_description">ছবি প্রাকদর্শন</string>
|
||||
<string name="preview_image_error_unknown_format">ছবিটি প্রদর্শন করা যাবেনা</string>
|
||||
<string name="error__upload__local_file_not_copied">%1$s কে %2$s স্থানীয় ফোল্ডারে কপি করা গেলনা </string>
|
||||
|
@ -260,5 +260,9 @@
|
|||
<string name="prefs_category_accounts">একাউন্ট</string>
|
||||
<string name="prefs_add_account">একাউন্ট যোগ কর</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">নিরাপদ সংযোগকে একটি অনিরাপদ পথে দিকবদল করা হয়েছে</string>
|
||||
<string name="saml_authentication_wrong_pass">ভুল কুটশব্দ</string>
|
||||
<string name="actionbar_move">সরাও</string>
|
||||
<string name="file_list_empty_moving">এখানে কিছু নেই। একটি ফোল্ডার যোগ করতে পারেন!</string>
|
||||
<string name="move_choose_button_text">বেছে নিন</string>
|
||||
<string name="move_file_not_found">সরাতে ব্যার্থ হলো। ফাইলটি রয়েছে কিনা দেখুন।</string>
|
||||
</resources>
|
||||
|
|
|
@ -263,6 +263,10 @@ administrátora.</string>
|
|||
<string name="prefs_category_accounts">Účty</string>
|
||||
<string name="prefs_add_account">Přidat účet</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Zabezpečené spojení je přesměrováváno nezabezpečenou trasou.</string>
|
||||
<string name="actionbar_logger">Logy</string>
|
||||
<string name="log_send_history_button">Odeslat historii</string>
|
||||
<string name="log_mail_subject">Logy aplikace ownCloud pro Android</string>
|
||||
<string name="log_progress_dialog_text">Načítám data...</string>
|
||||
<string name="saml_authentication_required_text">Vyžadováno přihlášení</string>
|
||||
<string name="saml_authentication_wrong_pass">Nesprávné heslo</string>
|
||||
<string name="actionbar_move">Přesunout</string>
|
||||
|
|
|
@ -262,6 +262,9 @@
|
|||
<string name="prefs_category_accounts">Konti</string>
|
||||
<string name="prefs_add_account">Tilføj konto</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Sikker forbindelse videredirigeres gennem en usikker rute.</string>
|
||||
<string name="actionbar_logger">Logge</string>
|
||||
<string name="log_send_history_button">Send historik</string>
|
||||
<string name="log_progress_dialog_text">Indlæser data...</string>
|
||||
<string name="saml_authentication_required_text">Godkendelse påkrævet</string>
|
||||
<string name="saml_authentication_wrong_pass">Forkert kodeord</string>
|
||||
<string name="actionbar_move">Flyt</string>
|
||||
|
|
|
@ -264,14 +264,18 @@
|
|||
<string name="prefs_category_accounts">Konten</string>
|
||||
<string name="prefs_add_account">Konto hinzufügen</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Die gesicherte Verbindung wird auf eine unsichere Route weitergeleitet.</string>
|
||||
<string name="saml_authentication_required_text">Authentifizierung benötigt</string>
|
||||
<string name="actionbar_logger">Protokolle</string>
|
||||
<string name="log_send_history_button">Verlauf senden</string>
|
||||
<string name="log_mail_subject">Protokolle der ownCloud-Android-App</string>
|
||||
<string name="log_progress_dialog_text">Daten werden geladen …</string>
|
||||
<string name="saml_authentication_required_text">Legitimierung benötigt</string>
|
||||
<string name="saml_authentication_wrong_pass">Falsches Passwort</string>
|
||||
<string name="actionbar_move">Verschieben</string>
|
||||
<string name="file_list_empty_moving">Nichts vorhanden. Sie können einen Ordner hinzufügen!</string>
|
||||
<string name="move_choose_button_text">Auswählen</string>
|
||||
<string name="move_file_not_found">Verschieben nicht möglich. Prüfen Sie, ob die Datei existiert</string>
|
||||
<string name="move_file_not_found">Verschieben nicht möglich. Bitte überprüfen Sie, ob die Datei existiert</string>
|
||||
<string name="move_file_invalid_into_descendent">Es ist nicht möglich einen Ordner eine Ebene tiefer zu verschieben</string>
|
||||
<string name="move_file_invalid_overwrite">Die Datei existiert bereits im Zielordner</string>
|
||||
<string name="move_file_error">Es ist ein Fehler beim Verschieben dieser Datei oder Ordners aufgetreten.</string>
|
||||
<string name="move_file_invalid_overwrite">Die Datei ist bereits im Zielordner vorhanden</string>
|
||||
<string name="move_file_error">Es ist ein Fehler beim Verschieben dieser Datei oder dieses Ordners aufgetreten.</string>
|
||||
<string name="forbidden_permissions_move">um diese Datei zu verschieben</string>
|
||||
</resources>
|
||||
|
|
|
@ -264,14 +264,18 @@
|
|||
<string name="prefs_category_accounts">Konten</string>
|
||||
<string name="prefs_add_account">Konto hinzufügen</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Die gesicherte Verbindung wird auf eine unsichere Route weitergeleitet.</string>
|
||||
<string name="saml_authentication_required_text">Authentifizierung benötigt</string>
|
||||
<string name="actionbar_logger">Protokolle</string>
|
||||
<string name="log_send_history_button">Verlauf senden</string>
|
||||
<string name="log_mail_subject">Protokolle der ownCloud-Android-App</string>
|
||||
<string name="log_progress_dialog_text">Daten werden geladen …</string>
|
||||
<string name="saml_authentication_required_text">Legitimierung benötigt</string>
|
||||
<string name="saml_authentication_wrong_pass">Falsches Passwort</string>
|
||||
<string name="actionbar_move">Verschieben</string>
|
||||
<string name="file_list_empty_moving">Nichts vorhanden. Du kannst einen Ordner hinzufügen!</string>
|
||||
<string name="move_choose_button_text">Auswählen</string>
|
||||
<string name="move_file_not_found">Verschieben nicht möglich. Prüfe, dass die Datei existiert</string>
|
||||
<string name="move_file_invalid_into_descendent">Es ist nicht möglich einen Ordner eine Ebene tiefer zu verschieben</string>
|
||||
<string name="move_file_invalid_overwrite">Die Datei existiert bereits im Zielordner</string>
|
||||
<string name="move_file_invalid_overwrite">Die Datei ist bereits im Zielordner vorhanden</string>
|
||||
<string name="move_file_error">Es ist ein Fehler beim Verschieben dieser Datei oder Ordners aufgetreten.</string>
|
||||
<string name="forbidden_permissions_move">zum Datei verschieben</string>
|
||||
</resources>
|
||||
|
|
|
@ -264,4 +264,5 @@
|
|||
<string name="saml_authentication_required_text">Απαιτείται πιστοποίηση</string>
|
||||
<string name="saml_authentication_wrong_pass">Εσφαλμένο συνθηματικό</string>
|
||||
<string name="move_choose_button_text">Επιλέξτε</string>
|
||||
<string name="forbidden_permissions_move">για μετακίνηση αυτού του αρχείου</string>
|
||||
</resources>
|
||||
|
|
|
@ -264,6 +264,10 @@
|
|||
<string name="prefs_category_accounts">Accounts</string>
|
||||
<string name="prefs_add_account">Add account</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Secure connection is redirected through an unsecured route.</string>
|
||||
<string name="actionbar_logger">Logs</string>
|
||||
<string name="log_send_history_button">Send History</string>
|
||||
<string name="log_mail_subject">ownCloud Android app logs</string>
|
||||
<string name="log_progress_dialog_text">Loading data...</string>
|
||||
<string name="saml_authentication_required_text">Authentication required</string>
|
||||
<string name="saml_authentication_wrong_pass">Incorrect password</string>
|
||||
<string name="actionbar_move">Move</string>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="actionbar_upload_files">Archivos</string>
|
||||
<string name="sync_string_files">Archivos</string>
|
||||
<string name="empty"></string>
|
||||
</resources>
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
<string name="sync_fail_in_favourites_content">Los contenidos de %1$d ficheros no se han sincronizado (%2$d conflictos)</string>
|
||||
<string name="sync_foreign_files_forgotten_ticker">Algunos archivos locales se han perdido</string>
|
||||
<string name="sync_foreign_files_forgotten_content">%1$d archivos en la carpeta %2$s no pudieron ser copiados a</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">A partir de la versión 1.3.16, los ficheros subidos desde este dispositivo se copian en la carpeta local %1$s para evitar la pérdida de datos cuando se sincroniza un único archivo con varias cuentas.\n\nDebido a este cambio, todos los ficheros subidos con versiones anteriores de esta aplicación fueron copiados a la carpeta %2$s. Sin embargo, un error impidió que se completara esta operación durante la sincronización de la cuenta. Puede dejar los archivos tal y como están y eliminar el enlace a %3$s o mover los archivos a la carpeta %1$s y mantener el enlace a %4$s.\n\nDebajo se muestran los archivos locales y los archivos remotos en %5$s a los que fueron enlazados.</string>
|
||||
<string name="sync_current_folder_was_removed">La carpeta local %1$s no existe.</string>
|
||||
<string name="foreign_files_move">Mover todo</string>
|
||||
<string name="foreign_files_success">Todos los archivos fueron movidos</string>
|
||||
|
@ -263,12 +264,16 @@
|
|||
<string name="prefs_category_accounts">Cuentas</string>
|
||||
<string name="prefs_add_account">Agregar cuenta</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">La conexión segura está siendo redirigida por una ruta insegura.</string>
|
||||
<string name="actionbar_logger">Trazas</string>
|
||||
<string name="log_send_history_button">Enviar historial</string>
|
||||
<string name="log_progress_dialog_text">Cargando datos...</string>
|
||||
<string name="saml_authentication_required_text">Se necesita autenticación</string>
|
||||
<string name="saml_authentication_wrong_pass">Contraseña incorrecta</string>
|
||||
<string name="actionbar_move">Mover</string>
|
||||
<string name="file_list_empty_moving">Aquí no hay nada. ¡Puede agregar una carpeta!</string>
|
||||
<string name="move_choose_button_text">Seleccionar</string>
|
||||
<string name="move_file_not_found">No se puede mover. Revise si el archivo existe</string>
|
||||
<string name="move_file_invalid_into_descendent">No se puede mover una carpeta dentro de una de sus descendientes.</string>
|
||||
<string name="move_file_invalid_overwrite">El archivo ya existe en la carpeta de destino</string>
|
||||
<string name="move_file_error">Hubo un error al tratar de mover este archivo o carpeta</string>
|
||||
<string name="forbidden_permissions_move">para mover este archivo</string>
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
<string name="prefs_recommend">Suosittele kaverille</string>
|
||||
<string name="prefs_feedback">Palaute</string>
|
||||
<string name="recommend_subject">Kokeile %1$sia älypuhelimellasi!</string>
|
||||
<string name="recommend_text">Kutsun sinut käyttämään %1$sia älypuhelimellasi!\nLataa se tästä: %2$s</string>
|
||||
<string name="auth_check_server">Tarkista palvelin</string>
|
||||
<string name="auth_host_url">Palvelinosoite https://…</string>
|
||||
<string name="auth_username">Käyttäjätunnus</string>
|
||||
|
@ -240,6 +241,10 @@
|
|||
<string name="prefs_category_accounts">Tilit</string>
|
||||
<string name="prefs_add_account">Lisää tili</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Salattu yhteys on ohjattu uudelleen salaamatonta reittiä pitkin.</string>
|
||||
<string name="actionbar_logger">Lokit</string>
|
||||
<string name="log_send_history_button">Lähetä historia</string>
|
||||
<string name="log_mail_subject">ownCloudin Android-sovelluksen lokit</string>
|
||||
<string name="log_progress_dialog_text">Ladataan tietoja...</string>
|
||||
<string name="saml_authentication_required_text">Tunnistautuminen vaaditaan</string>
|
||||
<string name="saml_authentication_wrong_pass">Väärä salasana</string>
|
||||
<string name="actionbar_move">Siirrä</string>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<string name="prefs_accounts">Comptes</string>
|
||||
<string name="prefs_manage_accounts">Gestion des comptes utilisateur</string>
|
||||
<string name="prefs_pincode">Utilisation d\'un code de sécurité</string>
|
||||
<string name="prefs_pincode_summary">Protéger l\'accès aux données maniplulées par le client</string>
|
||||
<string name="prefs_pincode_summary">Protéger l\'accès aux données manipulées par le client</string>
|
||||
<string name="prefs_instant_upload">Téléchargements instantanés d\'images</string>
|
||||
<string name="prefs_instant_upload_summary">Téléversement instantané des photos prises par la caméra</string>
|
||||
<string name="prefs_instant_video_upload">Téléchargements instantanés de vidéos</string>
|
||||
|
@ -31,6 +31,8 @@
|
|||
<string name="prefs_feedback">Commentaires</string>
|
||||
<string name="prefs_imprint">Empreinte</string>
|
||||
<string name="recommend_subject">Essayez %1$s sur votre smartphone !</string>
|
||||
<string name="recommend_text">J\'aimerais vous inviter à utiliser %1$s sur votre smartphone !
|
||||
Téléchargez-le ici : %2$s</string>
|
||||
<string name="auth_check_server">Vérifier le serveur</string>
|
||||
<string name="auth_host_url">Adresse du serveur https://...</string>
|
||||
<string name="auth_username">Nom d\'utilisateur</string>
|
||||
|
@ -103,6 +105,11 @@
|
|||
<string name="sync_fail_in_favourites_content">Le contenu de %1$d fichiers n\'a put être synchronisé (%2$d conflits)</string>
|
||||
<string name="sync_foreign_files_forgotten_ticker">Certains fichiers locaux ont été oubliés</string>
|
||||
<string name="sync_foreign_files_forgotten_content">%1$d fichiers du dossier %2$s n\'ont pas pu être copiés dans</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">Depuis la version 1.3.16, les fichiers envoyé depuis ce périphérique sont copiés dans le dossier local %1$s pour éviter une perte de données lorsqu\'un même fichier est synchronisé avec plusieurs comptes.
|
||||
|
||||
En raison de cette modification, tous les fichiers envoyés avec des versions antérieures de cette application ont été copiés dans le dossier %2$s. Cependant une erreur a empêché l\'achèvement de cette opération pendant la synchronisation du compte. Vous pouvez soit laisser les fichiers tels quels et supprimer le lien vers %3$s, soit déplacer les fichiers dans le dossier %1$s et garder le lien vers %4$s.
|
||||
|
||||
Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxquels ils étaient liés.</string>
|
||||
<string name="sync_current_folder_was_removed">Le dossier %1$s n\'existe plus</string>
|
||||
<string name="foreign_files_move">Tout déplacer</string>
|
||||
<string name="foreign_files_success">Tous les fichiers ont été déplacés</string>
|
||||
|
@ -237,7 +244,9 @@
|
|||
<string name="preview_image_error_unknown_format">Cette image ne peut pas être affichée</string>
|
||||
<string name="error__upload__local_file_not_copied">%1$s n\'a pas pu être copié dans le dossier local %2$s</string>
|
||||
<string name="share_link_no_support_share_api">Désolé, le partage n\'est pas disponible sur votre serveur. Contactez votre administrateur, s\'il vous plait.</string>
|
||||
<string name="share_link_file_no_exist">Impossible de partager. Vérifiez que le fichier est bien présent</string>
|
||||
<string name="share_link_file_error">Une erreur est survenue lors de la tentative de partage de ce fichier ou répertoire</string>
|
||||
<string name="unshare_link_file_no_exist">Impossible de supprimer le partage. Vérifiez que le fichier est bien présent</string>
|
||||
<string name="unshare_link_file_error">Une erreur est survenue lors de la tentative d’annulation du partage de ce fichier ou répertoire</string>
|
||||
<string name="activity_chooser_send_file_title">Envoyer</string>
|
||||
<string name="copy_link">Copier le lien</string>
|
||||
|
@ -258,8 +267,18 @@
|
|||
<string name="downloader_download_file_not_found">Ce fichier n’est plus disponible sur le serveur</string>
|
||||
<string name="prefs_category_accounts">Comptes</string>
|
||||
<string name="prefs_add_account">Ajouter un compte</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Le connexion sécurisée est redirigée vers une route non-sécurisée.</string>
|
||||
<string name="actionbar_logger">Journaux</string>
|
||||
<string name="log_send_history_button">Historique des envois</string>
|
||||
<string name="log_progress_dialog_text">Chargement des données...</string>
|
||||
<string name="saml_authentication_required_text">Authentification requise</string>
|
||||
<string name="saml_authentication_wrong_pass">Mot de passe incorrect</string>
|
||||
<string name="actionbar_move">Déplacer</string>
|
||||
<string name="file_list_empty_moving">Il n\'y rien ici. Vous pouvez ajouter un dossier !</string>
|
||||
<string name="move_choose_button_text">Choisir</string>
|
||||
<string name="move_file_not_found">Impossible de supprimer. Vérifiez que le fichier est bien présent</string>
|
||||
<string name="move_file_invalid_into_descendent">Il n\'est pas possible de déplacer un dossier vers un de ses descendants</string>
|
||||
<string name="move_file_invalid_overwrite">Le fichier existe déjà dans le dossier destinataire</string>
|
||||
<string name="move_file_error">Une erreur est survenue lors de la tentative de déplacement de ce fichier ou dossier</string>
|
||||
<string name="forbidden_permissions_move">de déplacer ce fichier</string>
|
||||
</resources>
|
||||
|
|
|
@ -83,6 +83,7 @@
|
|||
<string name="uploader_upload_succeeded_content_single">%1$s sikeresen fel lett töltve</string>
|
||||
<string name="uploader_upload_failed_ticker">A feltöltés nem sikerült</string>
|
||||
<string name="uploader_upload_failed_content_single"> %1$s fájl feltöltése sikertelen</string>
|
||||
<string name="uploader_upload_failed_credentials_error">Feltöltés sikertelen, jelentkezz be újra</string>
|
||||
<string name="downloader_download_in_progress_ticker">Letöltés ...</string>
|
||||
<string name="downloader_download_in_progress_content">%1$d%% Letöltés %2$s</string>
|
||||
<string name="downloader_download_succeeded_ticker">A letöltés sikeres</string>
|
||||
|
@ -90,8 +91,10 @@
|
|||
<string name="downloader_download_failed_ticker">A letöltés sikertelen</string>
|
||||
<string name="downloader_download_failed_content">A letöltésből %1$s nem lett befejezve</string>
|
||||
<string name="downloader_not_downloaded_yet">Még nem töltötte le</string>
|
||||
<string name="downloader_download_failed_credentials_error">Letöltés sikertelen, jelentkezz be újra.</string>
|
||||
<string name="common_choose_account">Válasszon azonosítót</string>
|
||||
<string name="sync_fail_ticker">A szinkronizálás sikertelen</string>
|
||||
<string name="sync_fail_ticker_unauthorized">Szinkronizálás sikertelen, jelentkezz be újra.</string>
|
||||
<string name="sync_fail_content">%1$s szinkronizációját nem sikerült befejezni</string>
|
||||
<string name="sync_fail_content_unauthorized">Érvénytelen jelszó a következőhöz %1$s</string>
|
||||
<string name="sync_conflicts_in_favourites_ticker">Ütközések vannak</string>
|
||||
|
@ -105,6 +108,7 @@
|
|||
<string name="foreign_files_fail">Egyes fájlokat nem sikerült áthelyezni</string>
|
||||
<string name="foreign_files_local_text">Helyi: %1$s</string>
|
||||
<string name="foreign_files_remote_text">Távoli: %1$s</string>
|
||||
<string name="upload_query_move_foreign_files">Nincs elég hely a kiválasztott fájlok másolására a %1$s könyvtárban. Szeretnéd áthelyezni inkább?</string>
|
||||
<string name="pincode_enter_pin_code">Kérem adja meg az alkalmazás PIN-kódját</string>
|
||||
<string name="pincode_configure_your_pin">Az alkalmazás PIN-kódja</string>
|
||||
<string name="pincode_configure_your_pin_explanation">A PIN-t kötelező lesz megadni az alkalmazás minden indításakor</string>
|
||||
|
@ -161,9 +165,12 @@
|
|||
<string name="auth_connecting_auth_server">Kapcsolódás a felhasználóazonosítást végző kiszolgálóhoz...</string>
|
||||
<string name="auth_unsupported_auth_method">A kiszolgáló nem támogatja ezt a felhasználóazonosítási módszert</string>
|
||||
<string name="auth_unsupported_multiaccount">%1$s nem támogat több bejelenkezési jogosultságot</string>
|
||||
<string name="auth_can_not_auth_against_server">Nem tudod hitelesíteni magadat ezen a szerveren</string>
|
||||
<string name="fd_keep_in_sync">Automatikusan frissítse a fájlokat</string>
|
||||
<string name="common_rename">Átnevezés</string>
|
||||
<string name="common_remove">Eltávolítás</string>
|
||||
<string name="confirmation_remove_alert">Tényleg el akarod távolítani %1$s?</string>
|
||||
<string name="confirmation_remove_folder_alert">Tényleg el akarod távolítani a %1$s és tartalmát?</string>
|
||||
<string name="confirmation_remove_local">Csak a helyi példány</string>
|
||||
<string name="confirmation_remove_folder_local">Csak a helyi tartalmat</string>
|
||||
<string name="confirmation_remove_remote">Törlés a szerverről</string>
|
||||
|
@ -175,7 +182,9 @@
|
|||
<string name="rename_server_fail_msg">Az átnevezés nem sikerült</string>
|
||||
<string name="sync_file_fail_msg">A távoli fájl nem volt ellenőrizhető</string>
|
||||
<string name="sync_file_nothing_to_do_msg">Az állományok már szinkonizálva vannak</string>
|
||||
<string name="create_dir_fail_msg">A könyvtárt nem lehet létrehozni</string>
|
||||
<string name="filename_forbidden_characters">Nem megendedett karakterek: / \\ < > : \" | ? *</string>
|
||||
<string name="filename_empty">A fájl név nem lehet üres</string>
|
||||
<string name="wait_a_moment">Egy pillanat...</string>
|
||||
<string name="filedisplay_unexpected_bad_get_content">Váratlan hiba; válassza ki a fájlt más programból</string>
|
||||
<string name="filedisplay_no_file_selected">Egy fájl sincs kiválasztva</string>
|
||||
|
@ -213,6 +222,7 @@
|
|||
<string name="placeholder_timestamp">2012/05/18 12:23</string>
|
||||
<string name="placeholder_media_time">12:23:45</string>
|
||||
<string name="instant_upload_on_wifi">Képeket csak WiFi kapcsolaton keresztül töltsünk föl</string>
|
||||
<string name="instant_video_upload_on_wifi">Videó feltöltés csak WIFI-vel</string>
|
||||
<string name="instant_upload_path">/InstantUpload</string>
|
||||
<string name="conflict_title">Frissítési ütközés</string>
|
||||
<string name="conflict_message">%s távoli állományt nem szinkronizáltuk a helyi példánnyal. Ha folytatja, akkor a távoli állományt felülírjuk.</string>
|
||||
|
@ -220,6 +230,8 @@
|
|||
<string name="conflict_overwrite">Felülírás</string>
|
||||
<string name="conflict_dont_upload">Ne töltsük föl</string>
|
||||
<string name="preview_image_description">Előnézeti kép</string>
|
||||
<string name="preview_image_error_unknown_format">Ez a kép nem jeleníthető meg</string>
|
||||
<string name="error__upload__local_file_not_copied">%1$s nem lehet másolni a %2$s helyi könyvtárba</string>
|
||||
<string name="share_link_file_error">Hiba lépett fel a mappa megosztásakor</string>
|
||||
<string name="unshare_link_file_error">Hiba lépett fel a mappa megosztásának visszavonásakor</string>
|
||||
<string name="activity_chooser_send_file_title">Küldjük el</string>
|
||||
|
|
|
@ -264,6 +264,10 @@
|
|||
<string name="prefs_category_accounts">Account</string>
|
||||
<string name="prefs_add_account">Aggiungi account</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">La connessione sicura è rediretta attraverso un percorso non sicuro.</string>
|
||||
<string name="actionbar_logger">Registri</string>
|
||||
<string name="log_send_history_button">Invia cronologia</string>
|
||||
<string name="log_mail_subject">Registri applicazione ownCloud Android</string>
|
||||
<string name="log_progress_dialog_text">Caricamento dati...</string>
|
||||
<string name="saml_authentication_required_text">Autenticazione richiesta</string>
|
||||
<string name="saml_authentication_wrong_pass">Password errata</string>
|
||||
<string name="actionbar_move">Sposta</string>
|
||||
|
|
|
@ -265,6 +265,9 @@
|
|||
<string name="prefs_category_accounts">アカウント</string>
|
||||
<string name="prefs_add_account">アカウントを追加</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">暗号化されていない接続を経て、暗号化接続へリダイレクトされました。</string>
|
||||
<string name="actionbar_logger">ログ</string>
|
||||
<string name="log_send_history_button">ログを送信</string>
|
||||
<string name="log_progress_dialog_text">読込中 ...</string>
|
||||
<string name="saml_authentication_required_text">認証を必要とする</string>
|
||||
<string name="saml_authentication_wrong_pass">無効なパスワード</string>
|
||||
<string name="actionbar_move">移動</string>
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
<string name="auth_host_url">Serverio adresas </string>
|
||||
<string name="auth_username">Prisijungimo vardas</string>
|
||||
<string name="auth_password">Slaptažodis</string>
|
||||
<string name="auth_register">Naujas į %1$s?</string>
|
||||
<string name="sync_string_files">Failai</string>
|
||||
<string name="setup_btn_connect">Prisijungti</string>
|
||||
<string name="uploader_btn_upload_text">Įkelti</string>
|
||||
|
@ -48,6 +49,8 @@
|
|||
<string name="uploader_error_forbidden_content">%1$s neleidžiama prieiti prie turinio, kuriuo dalijamasi</string>
|
||||
<string name="uploader_info_uploading">Išsiunčiama</string>
|
||||
<string name="file_list_empty">Čia tuščia. Įkelkite ką nors!</string>
|
||||
<string name="file_list_loading">Įkeliama ...</string>
|
||||
<string name="local_file_list_empty">Šiame aplanke nėra failų.</string>
|
||||
<string name="filedetails_select_file">Palieskite failą, kad parodyti papildomą informaciją.</string>
|
||||
<string name="filedetails_size">Dydis:</string>
|
||||
<string name="filedetails_type">Tipas:</string>
|
||||
|
@ -91,6 +94,7 @@
|
|||
<string name="downloader_download_failed_credentials_error">Atsisiuntimas nepavyko, Jums reikia prisijungti pakartotinai</string>
|
||||
<string name="common_choose_account">Pasirinkite paskyrą</string>
|
||||
<string name="sync_fail_ticker">Sinchronizacija nepavyko</string>
|
||||
<string name="sync_fail_ticker_unauthorized">Sinchronizacija nepavyko. Jums reikia prisijungti iš naujo</string>
|
||||
<string name="sync_fail_content">%1$s sinchronizacija nepavyko</string>
|
||||
<string name="sync_fail_content_unauthorized">Netinkamas slaptažodis %1$s</string>
|
||||
<string name="sync_conflicts_in_favourites_ticker">Rastas konfliktas</string>
|
||||
|
@ -158,10 +162,12 @@
|
|||
<string name="auth_connecting_auth_server">Jungiamasi prie autentikacijos serverio...</string>
|
||||
<string name="auth_unsupported_auth_method">Serveris nepalaiko šio autentikacijos metodo</string>
|
||||
<string name="auth_unsupported_multiaccount">%1$s nepalaiko kelių paskyrų iš karto</string>
|
||||
<string name="auth_can_not_auth_against_server">Jungiamasi prie autentikacijos serverio...</string>
|
||||
<string name="fd_keep_in_sync">Laikyti failą naujinamą</string>
|
||||
<string name="common_rename">Pervadinti</string>
|
||||
<string name="common_remove">Pašalinti</string>
|
||||
<string name="confirmation_remove_alert">Ar tikrai norite pašalinti %1$s?</string>
|
||||
<string name="confirmation_remove_folder_alert">Ar tikrai norite pašalinti %1$s ir ten esantį turinį?</string>
|
||||
<string name="confirmation_remove_local">Tik vietiniai</string>
|
||||
<string name="confirmation_remove_folder_local">Tik vietinis turinys</string>
|
||||
<string name="confirmation_remove_remote">Pašalinti iš serverio</string>
|
||||
|
@ -174,6 +180,7 @@
|
|||
<string name="sync_file_fail_msg">Nutolę failai negalėjo būti patikrinti</string>
|
||||
<string name="sync_file_nothing_to_do_msg">Failo turinys jau sunchronizuotas</string>
|
||||
<string name="create_dir_fail_msg">Aplanko sukurti nepavyko</string>
|
||||
<string name="filename_forbidden_characters">Neleistini simboliai: / \\ < > : \" | ? *</string>
|
||||
<string name="filename_empty">Failo pavadinimas negali būti tuščias</string>
|
||||
<string name="wait_a_moment">Truputį palaukite</string>
|
||||
<string name="filedisplay_unexpected_bad_get_content">Netikėta problema ; prašome pasirinkti failą iš kitos programėlės</string>
|
||||
|
|
4
res/values-mt-rMT/strings.xml
Normal file
4
res/values-mt-rMT/strings.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="empty"></string>
|
||||
</resources>
|
|
@ -31,6 +31,7 @@
|
|||
<string name="prefs_feedback">Tilbakemelding</string>
|
||||
<string name="prefs_imprint">Avtrykk</string>
|
||||
<string name="recommend_subject">Prøv %1$s på smarttelefonen din!</string>
|
||||
<string name="recommend_text">Jeg ønsker å invitere deg til å bruke %1$s på smarttelefonen din!\nLast ned her: %2$s</string>
|
||||
<string name="auth_check_server">Sjekk server</string>
|
||||
<string name="auth_host_url">Serveradresse https://...</string>
|
||||
<string name="auth_username">Brukernavn</string>
|
||||
|
@ -103,6 +104,7 @@
|
|||
<string name="sync_fail_in_favourites_content">Innholdet av %1$d filer kunne ikke synkroniseres (%2$d konflikter)</string>
|
||||
<string name="sync_foreign_files_forgotten_ticker">Noen lokale filer ble glemt</string>
|
||||
<string name="sync_foreign_files_forgotten_content">%1$d filer fra %2$s mappen kunne ikke kopieres til</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">Fra versjon 1.3.16 blir filer som lastes opp fra denne enheten kopiert inn i den lokale mappen %1$s for å forhindre tap av data når samme fil synkroniseres med flere kontoer.\n\nPga. denne endringen ble alle filer som er blitt lastet opp med tidligere versjoner av denne appen, kopiert til mappe %2$s. Imidlertid kunne ikke denne kopieringen fullføres under konto-synkroniseringen pga. en feil. Du kan enten la filen(e) ligge der de ligger og fjerne lenken til %3$s, eller flytte filene til mappe %1$s og beholde lenken til %4$s.\n\nNedenfor finner du en liste over de lokale filene og de eksterne filene i %5$s som de var lenket til.</string>
|
||||
<string name="sync_current_folder_was_removed">Mappen %1$s finnes ikke lengere</string>
|
||||
<string name="foreign_files_move">Flytt alle</string>
|
||||
<string name="foreign_files_success">Alle filer ble flyttet</string>
|
||||
|
@ -238,7 +240,9 @@
|
|||
<string name="error__upload__local_file_not_copied">%1$s kunne ikke kopieres til lokal mappe %2$s</string>
|
||||
<string name="share_link_no_support_share_api">Beklager, deling er ikke skrudd på for din tjener. Ta kontakt med
|
||||
administratoren.</string>
|
||||
<string name="share_link_file_no_exist">Kan ikke dele. Sjekk om filen eksisterer.</string>
|
||||
<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="activity_chooser_send_file_title">Send</string>
|
||||
<string name="copy_link">Kopier lenke</string>
|
||||
|
@ -260,7 +264,17 @@
|
|||
<string name="prefs_category_accounts">Kontoer</string>
|
||||
<string name="prefs_add_account">Legg til en konto</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Sikker tilkobling videresendes gjennom en usikker rute.</string>
|
||||
<string name="actionbar_logger">Logger</string>
|
||||
<string name="log_send_history_button">Send historikk</string>
|
||||
<string name="log_progress_dialog_text">Laster data...</string>
|
||||
<string name="saml_authentication_required_text">Autentisering kreves</string>
|
||||
<string name="saml_authentication_wrong_pass">Feil passord</string>
|
||||
<string name="actionbar_move">Flytt</string>
|
||||
<string name="file_list_empty_moving">Ingenting her. Du kan legge til en mappe!</string>
|
||||
<string name="move_choose_button_text">Velg</string>
|
||||
<string name="move_file_not_found">Kan ikke flytte. Sjekk om filen eksisterer.</string>
|
||||
<string name="move_file_invalid_into_descendent">Det er ikke mulig å flytte en mappe inn i sin egen undermappe</string>
|
||||
<string name="move_file_invalid_overwrite">Filen finnes allerede i målmappen</string>
|
||||
<string name="move_file_error">En feil oppstod ved flytting av denne filen eller mappen</string>
|
||||
<string name="forbidden_permissions_move">å flytte denne filen</string>
|
||||
</resources>
|
||||
|
|
|
@ -267,6 +267,10 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar
|
|||
<string name="prefs_category_accounts">Accounts</string>
|
||||
<string name="prefs_add_account">Toevoegen account</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">De beveiligde verbinding is omgeleid via een onveilige route.</string>
|
||||
<string name="actionbar_logger">Logs</string>
|
||||
<string name="log_send_history_button">Verstuur geschiedenis</string>
|
||||
<string name="log_mail_subject">ownCloud Android app logs</string>
|
||||
<string name="log_progress_dialog_text">Laden data...</string>
|
||||
<string name="saml_authentication_required_text">Authenticatie vereist</string>
|
||||
<string name="saml_authentication_wrong_pass">Onjuist wachtwoord</string>
|
||||
<string name="actionbar_move">verplaatsen</string>
|
||||
|
|
|
@ -264,6 +264,9 @@
|
|||
<string name="prefs_category_accounts">Konta</string>
|
||||
<string name="prefs_add_account">Dodaj konto</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy.</string>
|
||||
<string name="actionbar_logger">Logi</string>
|
||||
<string name="log_send_history_button">Wyślij historię</string>
|
||||
<string name="log_progress_dialog_text">Ładuję dane...</string>
|
||||
<string name="saml_authentication_required_text">Wymagana autoryzacja</string>
|
||||
<string name="saml_authentication_wrong_pass">Złe hasło</string>
|
||||
<string name="actionbar_move">Przenieś</string>
|
||||
|
|
|
@ -264,6 +264,10 @@
|
|||
<string name="prefs_category_accounts">Contas</string>
|
||||
<string name="prefs_add_account">Adicionar uma conta</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">A conexão segura está redirecionada através de uma rota insegura.</string>
|
||||
<string name="actionbar_logger">Logs</string>
|
||||
<string name="log_send_history_button">Enviar Histórico</string>
|
||||
<string name="log_mail_subject">Logs do aplicativo ownCloud Android</string>
|
||||
<string name="log_progress_dialog_text">Carregamento de dados...</string>
|
||||
<string name="saml_authentication_required_text">Autenticação é requerida</string>
|
||||
<string name="saml_authentication_wrong_pass">Senha incorreta</string>
|
||||
<string name="actionbar_move">Mover</string>
|
||||
|
|
|
@ -260,6 +260,8 @@
|
|||
<string name="prefs_category_accounts">Contas</string>
|
||||
<string name="prefs_add_account">Adicionar conta</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Uma ligação segura foi redireccionada por uma rota insegura.</string>
|
||||
<string name="log_send_history_button">Enviar Histórico</string>
|
||||
<string name="log_progress_dialog_text">A carregar os dados...</string>
|
||||
<string name="saml_authentication_required_text">Autenticação necessária</string>
|
||||
<string name="saml_authentication_wrong_pass">Password errada</string>
|
||||
<string name="actionbar_move">Mover</string>
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
<string name="prefs_feedback">Обратная связь</string>
|
||||
<string name="prefs_imprint">Штамп</string>
|
||||
<string name="recommend_subject">Попробуйте %1$s на вашем смартфоне!</string>
|
||||
<string name="recommend_text">Хочу предложить вам использовать %1$s на смартфоне!\nЗагрузить можно здесь: %2$s
|
||||
</string>
|
||||
<string name="auth_check_server">Проверить сервер</string>
|
||||
<string name="auth_host_url">Адрес сервера https://...</string>
|
||||
<string name="auth_username">Имя пользователя</string>
|
||||
|
@ -238,7 +240,9 @@
|
|||
<string name="preview_image_error_unknown_format">Это изображение не может быть отображено</string>
|
||||
<string name="error__upload__local_file_not_copied">%1$s не возможно скопировать в локальною папку %2$s </string>
|
||||
<string name="share_link_no_support_share_api">К сожалению, на вашем сервере отключен совместный доступ. Пожалуйста, свяжитесь с вашим администратором.</string>
|
||||
<string name="share_link_file_no_exist">Невозможно добавить в общий доступ. Пожалуйста, проверьте, существует ли файл</string>
|
||||
<string name="share_link_file_error">Ошибка предоставления общего доступа к этому файлу или каталогу</string>
|
||||
<string name="unshare_link_file_no_exist">Невозможно убрать из общего доступа. Пожалуйста, проверьте, существует ли файл</string>
|
||||
<string name="unshare_link_file_error">Ошибка удаления общего доступа к этому файлу или каталогу</string>
|
||||
<string name="activity_chooser_send_file_title">Отправить</string>
|
||||
<string name="copy_link">Копировать ссылку</string>
|
||||
|
@ -260,8 +264,18 @@
|
|||
<string name="prefs_category_accounts">Учётные записи</string>
|
||||
<string name="prefs_add_account">Добавить учетную запись</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Безопасное соединение перенаправлено через небезопасный маршрут.</string>
|
||||
<string name="actionbar_logger">Журналы</string>
|
||||
<string name="log_send_history_button">История Отправлений</string>
|
||||
<string name="log_mail_subject">Журналы Андроид-приложения ownCloud</string>
|
||||
<string name="log_progress_dialog_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>
|
||||
<string name="move_choose_button_text">Выбрать</string>
|
||||
<string name="move_file_not_found">Невозможно переместить. Пожалуйста, проверьте, существует ли файл</string>
|
||||
<string name="move_file_invalid_into_descendent">Невозможно переместить папку в папку-потомок</string>
|
||||
<string name="move_file_invalid_overwrite">Файл уже существует в папке назначения</string>
|
||||
<string name="move_file_error">Произошла ошибка при попытке перемещения этого файла или папки</string>
|
||||
<string name="forbidden_permissions_move">переместить этот файл</string>
|
||||
</resources>
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
<string name="sync_fail_in_favourites_content">Vsebine %1$d datotek ni bilo mogoče uskladiti (zaznanih je %2$d sporov)</string>
|
||||
<string name="sync_foreign_files_forgotten_ticker">Nekatere krajevne datoteke so spregledane</string>
|
||||
<string name="sync_foreign_files_forgotten_content">Skupno %1$d datotek iz mape %2$s ni mogoče kopirati v</string>
|
||||
<string name="sync_foreign_files_forgotten_explanation">Od različice 1.3.16 so datoteke, poslane iz te naprave, varnostno kopirane v krajevno mapo %1$s. S tem je preprečena možnost izgube podatkov, ko se ena datoteka usklajuje z več računi.\n\nZaradi te spremembe so vse datoteke, ki so bile kopirane v prejšnjih različicah, kopirane v mapo %2$s. Zaradi napake ni mogoče končati usklajevanja. Datoteke lahko ali pustite kjer so, in odstranite povezavo na %3$s, ali pa premaknete datoteke v mapo %1$s in ohranite povezavo do %4$s.\n\nSpodaj so izpisane krajevne datoteke in oddaljene povezane datoteke v mapi %5$s.</string>
|
||||
<string name="sync_current_folder_was_removed">Mapa %1$s ne obstaja več</string>
|
||||
<string name="foreign_files_move">Premakni vse</string>
|
||||
<string name="foreign_files_success">Vse datoteke so uspešno premaknjene na novo mesto</string>
|
||||
|
@ -263,6 +264,9 @@
|
|||
<string name="prefs_category_accounts">Računi</string>
|
||||
<string name="prefs_add_account">Dodaj račun</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Varna povezava je preusmerjena preko ne-varne poti.</string>
|
||||
<string name="actionbar_logger">Dnevnik</string>
|
||||
<string name="log_send_history_button">Pošlji zgodovino</string>
|
||||
<string name="log_progress_dialog_text">Poteka nalaganje podatkov ...</string>
|
||||
<string name="saml_authentication_required_text">Zahtevana je overitev</string>
|
||||
<string name="saml_authentication_wrong_pass">Napačno geslo</string>
|
||||
<string name="actionbar_move">Premakni</string>
|
||||
|
@ -272,4 +276,5 @@
|
|||
<string name="move_file_invalid_into_descendent">Ni mogoče premakniti mape v podrejeno mapo.</string>
|
||||
<string name="move_file_invalid_overwrite">Datoteka v ciljni mapi že obstaja.</string>
|
||||
<string name="move_file_error">Prišlo je do napake med premikanjem datoteke v mapo</string>
|
||||
<string name="forbidden_permissions_move">med premikanjem datoteke</string>
|
||||
</resources>
|
||||
|
|
4
res/values-tg-rTJ/strings.xml
Normal file
4
res/values-tg-rTJ/strings.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="empty"></string>
|
||||
</resources>
|
|
@ -264,6 +264,10 @@
|
|||
<string name="prefs_category_accounts">Hesaplar</string>
|
||||
<string name="prefs_add_account">Hesap ekle</string>
|
||||
<string name="auth_redirect_non_secure_connection_title">Güvenli bağlantı, güvenli olmayan bir rotaya yönlendiriliyor.</string>
|
||||
<string name="actionbar_logger">Günlükler</string>
|
||||
<string name="log_send_history_button">Geçmişi Gönder</string>
|
||||
<string name="log_mail_subject">ownCloud Android uygulama kayıtları</string>
|
||||
<string name="log_progress_dialog_text">Veri yükleniyor...</string>
|
||||
<string name="saml_authentication_required_text">Kimlik doğrulama gerekli</string>
|
||||
<string name="saml_authentication_wrong_pass">Hatalı parola</string>
|
||||
<string name="actionbar_move">Taşı</string>
|
||||
|
|
|
@ -287,7 +287,7 @@
|
|||
|
||||
<string name="actionbar_logger">Logs</string>
|
||||
<string name="log_send_history_button">Send History</string>
|
||||
<string name="log_mail_subject">Owncloud Android app logs</string>
|
||||
<string name="log_mail_subject">ownCloud Android app logs</string>
|
||||
<string name="log_progress_dialog_text">Loading data...</string>
|
||||
|
||||
<string name="saml_authentication_required_text">Authentication required</string>
|
||||
|
|
|
@ -188,6 +188,7 @@ public class FileDataStorageManager {
|
|||
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
|
||||
cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
|
||||
cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
|
||||
cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail());
|
||||
|
||||
boolean sameRemotePath = fileExists(file.getRemotePath());
|
||||
if (sameRemotePath ||
|
||||
|
@ -878,6 +879,8 @@ public class FileDataStorageManager {
|
|||
file.setPublicLink(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PUBLIC_LINK)));
|
||||
file.setPermissions(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PERMISSIONS)));
|
||||
file.setRemoteId(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID)));
|
||||
file.setNeedsUpdateThumbnail(c.getInt(
|
||||
c.getColumnIndex(ProviderTableMeta.FILE_UPDATE_THUMBNAIL)) == 1 ? true : false);
|
||||
|
||||
}
|
||||
return file;
|
||||
|
@ -1222,6 +1225,7 @@ public class FileDataStorageManager {
|
|||
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
|
||||
cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
|
||||
cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
|
||||
cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail() ? 1 : 0);
|
||||
|
||||
boolean existsByPath = fileExists(file.getRemotePath());
|
||||
if (existsByPath || fileExists(file.getFileId())) {
|
||||
|
|
|
@ -68,6 +68,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
|
|||
private String mPermissions;
|
||||
private String mRemoteId;
|
||||
|
||||
private boolean mNeedsUpdateThumbnail;
|
||||
|
||||
|
||||
/**
|
||||
* Create new {@link OCFile} with given path.
|
||||
|
@ -109,6 +111,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
|
|||
mPublicLink = source.readString();
|
||||
mPermissions = source.readString();
|
||||
mRemoteId = source.readString();
|
||||
mNeedsUpdateThumbnail = source.readInt() == 0;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -131,6 +135,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
|
|||
dest.writeString(mPublicLink);
|
||||
dest.writeString(mPermissions);
|
||||
dest.writeString(mRemoteId);
|
||||
dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -343,6 +348,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
|
|||
mPublicLink = null;
|
||||
mPermissions = null;
|
||||
mRemoteId = null;
|
||||
mNeedsUpdateThumbnail = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -408,6 +414,14 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
|
|||
return mNeedsUpdating;
|
||||
}
|
||||
|
||||
public boolean needsUpdateThumbnail() {
|
||||
return mNeedsUpdateThumbnail;
|
||||
}
|
||||
|
||||
public void setNeedsUpdateThumbnail(boolean needsUpdateThumbnail) {
|
||||
this.mNeedsUpdateThumbnail = needsUpdateThumbnail;
|
||||
}
|
||||
|
||||
public long getLastSyncDateForProperties() {
|
||||
return mLastSyncDateForProperties;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ import com.owncloud.android.MainApp;
|
|||
public class ProviderMeta {
|
||||
|
||||
public static final String DB_NAME = "filelist";
|
||||
public static final int DB_VERSION = 7;
|
||||
public static final int DB_VERSION = 8;
|
||||
|
||||
private ProviderMeta() {
|
||||
}
|
||||
|
@ -70,6 +70,7 @@ public class ProviderMeta {
|
|||
public static final String FILE_PUBLIC_LINK = "public_link";
|
||||
public static final String FILE_PERMISSIONS = "permissions";
|
||||
public static final String FILE_REMOTE_ID = "remote_id";
|
||||
public static final String FILE_UPDATE_THUMBNAIL = "update_thumbnail";
|
||||
|
||||
public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME
|
||||
+ " collate nocase asc";
|
||||
|
|
|
@ -391,6 +391,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
|
|||
long syncDate = System.currentTimeMillis();
|
||||
file.setLastSyncDateForProperties(syncDate);
|
||||
file.setLastSyncDateForData(syncDate);
|
||||
file.setNeedsUpdateThumbnail(true);
|
||||
file.setModificationTimestamp(mCurrentDownload.getModificationTimestamp());
|
||||
file.setModificationTimestampAtLastSyncForData(mCurrentDownload.getModificationTimestamp());
|
||||
// file.setEtag(mCurrentDownload.getEtag()); // TODO Etag, where available
|
||||
|
|
|
@ -97,6 +97,8 @@ public class FileContentProvider extends ContentProvider {
|
|||
ProviderTableMeta.FILE_PERMISSIONS);
|
||||
mFileProjectionMap.put(ProviderTableMeta.FILE_REMOTE_ID,
|
||||
ProviderTableMeta.FILE_REMOTE_ID);
|
||||
mFileProjectionMap.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL,
|
||||
ProviderTableMeta.FILE_UPDATE_THUMBNAIL);
|
||||
}
|
||||
|
||||
private static final int SINGLE_FILE = 1;
|
||||
|
@ -559,7 +561,8 @@ public class FileContentProvider extends ContentProvider {
|
|||
+ ProviderTableMeta.FILE_SHARE_BY_LINK + " INTEGER, "
|
||||
+ ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT, "
|
||||
+ ProviderTableMeta.FILE_PERMISSIONS + " TEXT null,"
|
||||
+ ProviderTableMeta.FILE_REMOTE_ID + " TEXT null);"
|
||||
+ ProviderTableMeta.FILE_REMOTE_ID + " TEXT null,"
|
||||
+ ProviderTableMeta.FILE_UPDATE_THUMBNAIL + " INTEGER);" //boolean
|
||||
);
|
||||
|
||||
// Create table ocshares
|
||||
|
@ -708,6 +711,23 @@ public class FileContentProvider extends ContentProvider {
|
|||
}
|
||||
if (!upgraded)
|
||||
Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
|
||||
|
||||
if (oldVersion < 8 && newVersion >= 8) {
|
||||
Log_OC.i("SQL", "Entering in the #8 ADD in onUpgrade");
|
||||
db.beginTransaction();
|
||||
try {
|
||||
db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME +
|
||||
" ADD COLUMN " + ProviderTableMeta.FILE_UPDATE_THUMBNAIL + " INTEGER " +
|
||||
" DEFAULT 0");
|
||||
|
||||
upgraded = true;
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
if (!upgraded)
|
||||
Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
189
src/com/owncloud/android/ui/adapter/DiskLruImageCache.java
Normal file
189
src/com/owncloud/android/ui/adapter/DiskLruImageCache.java
Normal file
|
@ -0,0 +1,189 @@
|
|||
package com.owncloud.android.ui.adapter;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Bitmap.CompressFormat;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.util.Log;
|
||||
|
||||
import com.jakewharton.disklrucache.DiskLruCache;
|
||||
import com.owncloud.android.BuildConfig;
|
||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||
|
||||
public class DiskLruImageCache {
|
||||
|
||||
private DiskLruCache mDiskCache;
|
||||
private CompressFormat mCompressFormat;
|
||||
private int mCompressQuality;
|
||||
private static final int CACHE_VERSION = 1;
|
||||
private static final int VALUE_COUNT = 1;
|
||||
private static final int IO_BUFFER_SIZE = 8 * 1024;
|
||||
private static final Pattern CAPITAL_LETTERS = Pattern.compile("[A-Z]");
|
||||
|
||||
private StringBuffer mValidKeyBuffer = new StringBuffer(64);
|
||||
private StringBuffer mConversionBuffer = new StringBuffer(2).append('_');
|
||||
|
||||
private static final String TAG = "DiskLruImageCache";
|
||||
|
||||
public DiskLruImageCache( Context context,String uniqueName, int diskCacheSize,
|
||||
CompressFormat compressFormat, int quality ) throws IOException {
|
||||
final File diskCacheDir = getDiskCacheDir(context, uniqueName );
|
||||
mDiskCache = DiskLruCache.open(
|
||||
diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize
|
||||
);
|
||||
mCompressFormat = compressFormat;
|
||||
mCompressQuality = quality;
|
||||
}
|
||||
|
||||
private boolean writeBitmapToFile( Bitmap bitmap, DiskLruCache.Editor editor )
|
||||
throws IOException, FileNotFoundException {
|
||||
OutputStream out = null;
|
||||
try {
|
||||
out = new BufferedOutputStream( editor.newOutputStream( 0 ), IO_BUFFER_SIZE );
|
||||
return bitmap.compress( mCompressFormat, mCompressQuality, out );
|
||||
} finally {
|
||||
if ( out != null ) {
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private File getDiskCacheDir(Context context, String uniqueName) {
|
||||
|
||||
// Check if media is mounted or storage is built-in, if so, try and use external cache dir
|
||||
// otherwise use internal cache dir
|
||||
final String cachePath = context.getExternalCacheDir().getPath();
|
||||
|
||||
Log_OC.d(TAG, "create dir: " + cachePath + File.separator + uniqueName);
|
||||
|
||||
return new File(cachePath + File.separator + uniqueName);
|
||||
}
|
||||
|
||||
public void put( String key, Bitmap data ) {
|
||||
|
||||
DiskLruCache.Editor editor = null;
|
||||
String validKey = convertToValidKey(key);
|
||||
try {
|
||||
editor = mDiskCache.edit( validKey );
|
||||
if ( editor == null ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if( writeBitmapToFile( data, editor ) ) {
|
||||
mDiskCache.flush();
|
||||
editor.commit();
|
||||
if ( BuildConfig.DEBUG ) {
|
||||
Log.d( "cache_test_DISK_", "image put on disk cache " + validKey );
|
||||
}
|
||||
} else {
|
||||
editor.abort();
|
||||
if ( BuildConfig.DEBUG ) {
|
||||
Log.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + validKey );
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
if ( BuildConfig.DEBUG ) {
|
||||
Log.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + validKey );
|
||||
}
|
||||
try {
|
||||
if ( editor != null ) {
|
||||
editor.abort();
|
||||
}
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Bitmap getBitmap( String key ) {
|
||||
|
||||
Bitmap bitmap = null;
|
||||
DiskLruCache.Snapshot snapshot = null;
|
||||
String validKey = convertToValidKey(key);
|
||||
try {
|
||||
|
||||
snapshot = mDiskCache.get( validKey );
|
||||
if ( snapshot == null ) {
|
||||
return null;
|
||||
}
|
||||
final InputStream in = snapshot.getInputStream( 0 );
|
||||
if ( in != null ) {
|
||||
final BufferedInputStream buffIn =
|
||||
new BufferedInputStream( in, IO_BUFFER_SIZE );
|
||||
bitmap = BitmapFactory.decodeStream( buffIn );
|
||||
}
|
||||
} catch ( IOException e ) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if ( snapshot != null ) {
|
||||
snapshot.close();
|
||||
}
|
||||
}
|
||||
|
||||
if ( BuildConfig.DEBUG ) {
|
||||
Log.d("cache_test_DISK_", bitmap == null ? "not found" : "image read from disk " + validKey);
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
|
||||
}
|
||||
|
||||
public boolean containsKey( String key ) {
|
||||
|
||||
boolean contained = false;
|
||||
DiskLruCache.Snapshot snapshot = null;
|
||||
String validKey = convertToValidKey(key);
|
||||
try {
|
||||
snapshot = mDiskCache.get( validKey );
|
||||
contained = snapshot != null;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if ( snapshot != null ) {
|
||||
snapshot.close();
|
||||
}
|
||||
}
|
||||
|
||||
return contained;
|
||||
|
||||
}
|
||||
|
||||
public void clearCache() {
|
||||
if ( BuildConfig.DEBUG ) {
|
||||
Log.d( "cache_test_DISK_", "disk cache CLEARED");
|
||||
}
|
||||
try {
|
||||
mDiskCache.delete();
|
||||
} catch ( IOException e ) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public File getCacheFolder() {
|
||||
return mDiskCache.getDirectory();
|
||||
}
|
||||
|
||||
private String convertToValidKey(String key) {
|
||||
Matcher capitalLettersMatcher = CAPITAL_LETTERS.matcher(key);
|
||||
mValidKeyBuffer.delete(0, mValidKeyBuffer.length());
|
||||
mConversionBuffer.delete(1, mConversionBuffer.length());
|
||||
|
||||
while (capitalLettersMatcher.find()) {
|
||||
mConversionBuffer.replace(1, 2, capitalLettersMatcher.group(0).toLowerCase());
|
||||
capitalLettersMatcher.appendReplacement(mValidKeyBuffer, mConversionBuffer.toString());
|
||||
}
|
||||
capitalLettersMatcher.appendTail(mValidKeyBuffer);
|
||||
return mValidKeyBuffer.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -17,10 +17,21 @@
|
|||
*/
|
||||
package com.owncloud.android.ui.adapter;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Vector;
|
||||
|
||||
import android.accounts.Account;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Bitmap.CompressFormat;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.ThumbnailUtils;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -36,7 +47,9 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
|
|||
import com.owncloud.android.datamodel.OCFile;
|
||||
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
||||
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
|
||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||
import com.owncloud.android.ui.activity.ComponentsGetter;
|
||||
import com.owncloud.android.utils.BitmapUtils;
|
||||
import com.owncloud.android.utils.DisplayUtils;
|
||||
|
||||
|
||||
|
@ -45,10 +58,13 @@ import com.owncloud.android.utils.DisplayUtils;
|
|||
* instance.
|
||||
*
|
||||
* @author Bartek Przybylski
|
||||
*
|
||||
* @author Tobias Kaminsky
|
||||
* @author David A. Velasco
|
||||
*/
|
||||
public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
||||
private final static String PERMISSION_SHARED_WITH_ME = "S";
|
||||
|
||||
private static final String TAG = FileListListAdapter.class.getSimpleName();
|
||||
|
||||
private Context mContext;
|
||||
private OCFile mFile = null;
|
||||
|
@ -59,15 +75,159 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
private Account mAccount;
|
||||
private ComponentsGetter mTransferServiceGetter;
|
||||
|
||||
private final Object thumbnailDiskCacheLock = new Object();
|
||||
private DiskLruImageCache mThumbnailCache;
|
||||
private boolean mThumbnailCacheStarting = true;
|
||||
private static final int DISK_CACHE_SIZE = 1024 * 1024 * 10; // 10MB
|
||||
private static final CompressFormat mCompressFormat = CompressFormat.JPEG;
|
||||
private static final int mCompressQuality = 70;
|
||||
private Bitmap defaultImg;
|
||||
|
||||
public FileListListAdapter(
|
||||
boolean justFolders,
|
||||
Context context,
|
||||
ComponentsGetter transferServiceGetter
|
||||
) {
|
||||
|
||||
mJustFolders = justFolders;
|
||||
mContext = context;
|
||||
mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext);
|
||||
mTransferServiceGetter = transferServiceGetter;
|
||||
defaultImg = BitmapFactory.decodeResource(mContext.getResources(),
|
||||
DisplayUtils.getResourceId("image/png", "default.png"));
|
||||
|
||||
// Initialise disk cache on background thread
|
||||
new InitDiskCacheTask().execute();
|
||||
}
|
||||
|
||||
class InitDiskCacheTask extends AsyncTask<File, Void, Void> {
|
||||
@Override
|
||||
protected Void doInBackground(File... params) {
|
||||
synchronized (thumbnailDiskCacheLock) {
|
||||
try {
|
||||
mThumbnailCache = new DiskLruImageCache(mContext, "thumbnailCache",
|
||||
DISK_CACHE_SIZE, mCompressFormat, mCompressQuality);
|
||||
} catch (Exception e) {
|
||||
Log_OC.d(TAG, "Thumbnail cache could not be opened ", e);
|
||||
mThumbnailCache = null;
|
||||
}
|
||||
mThumbnailCacheStarting = false; // Finished initialization
|
||||
thumbnailDiskCacheLock.notifyAll(); // Wake any waiting threads
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static class AsyncDrawable extends BitmapDrawable {
|
||||
private final WeakReference<ThumbnailGenerationTask> bitmapWorkerTaskReference;
|
||||
|
||||
public AsyncDrawable(Resources res, Bitmap bitmap,
|
||||
ThumbnailGenerationTask bitmapWorkerTask) {
|
||||
super(res, bitmap);
|
||||
bitmapWorkerTaskReference =
|
||||
new WeakReference<ThumbnailGenerationTask>(bitmapWorkerTask);
|
||||
}
|
||||
|
||||
public ThumbnailGenerationTask getBitmapWorkerTask() {
|
||||
return bitmapWorkerTaskReference.get();
|
||||
}
|
||||
}
|
||||
|
||||
class ThumbnailGenerationTask extends AsyncTask<OCFile, Void, Bitmap> {
|
||||
private final WeakReference<ImageView> imageViewReference;
|
||||
private OCFile file;
|
||||
|
||||
|
||||
public ThumbnailGenerationTask(ImageView imageView) {
|
||||
// Use a WeakReference to ensure the ImageView can be garbage collected
|
||||
imageViewReference = new WeakReference<ImageView>(imageView);
|
||||
}
|
||||
|
||||
// Decode image in background.
|
||||
@Override
|
||||
protected Bitmap doInBackground(OCFile... params) {
|
||||
Bitmap thumbnail = null;
|
||||
|
||||
try {
|
||||
file = params[0];
|
||||
final String imageKey = String.valueOf(file.getRemoteId());
|
||||
|
||||
// Check disk cache in background thread
|
||||
thumbnail = getBitmapFromDiskCache(imageKey);
|
||||
|
||||
// Not found in disk cache
|
||||
if (thumbnail == null || file.needsUpdateThumbnail()) {
|
||||
// Converts dp to pixel
|
||||
Resources r = mContext.getResources();
|
||||
int px = (int) Math.round(TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, 150, r.getDisplayMetrics()
|
||||
));
|
||||
|
||||
if (file.isDown()){
|
||||
Bitmap bitmap = BitmapUtils.decodeSampledBitmapFromFile(
|
||||
file.getStoragePath(), px, px);
|
||||
|
||||
if (bitmap != null) {
|
||||
thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px);
|
||||
|
||||
// Add thumbnail to cache
|
||||
addBitmapToCache(imageKey, thumbnail);
|
||||
|
||||
file.setNeedsUpdateThumbnail(false);
|
||||
mStorageManager.saveFile(file);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Throwable t) {
|
||||
// the app should never break due to a problem with thumbnails
|
||||
Log_OC.e(TAG, "Generation of thumbnail for " + file + " failed", t);
|
||||
if (t instanceof OutOfMemoryError) {
|
||||
System.gc();
|
||||
}
|
||||
}
|
||||
|
||||
return thumbnail;
|
||||
}
|
||||
|
||||
protected void onPostExecute(Bitmap bitmap){
|
||||
if (isCancelled()) {
|
||||
bitmap = null;
|
||||
}
|
||||
|
||||
if (imageViewReference != null && bitmap != null) {
|
||||
final ImageView imageView = imageViewReference.get();
|
||||
final ThumbnailGenerationTask bitmapWorkerTask =
|
||||
getBitmapWorkerTask(imageView);
|
||||
if (this == bitmapWorkerTask && imageView != null) {
|
||||
imageView.setImageBitmap(bitmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addBitmapToCache(String key, Bitmap bitmap) {
|
||||
synchronized (thumbnailDiskCacheLock) {
|
||||
if (mThumbnailCache != null) {
|
||||
mThumbnailCache.put(key, bitmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap getBitmapFromDiskCache(String key) {
|
||||
synchronized (thumbnailDiskCacheLock) {
|
||||
// Wait while disk cache is started from background thread
|
||||
while (mThumbnailCacheStarting) {
|
||||
try {
|
||||
thumbnailDiskCacheLock.wait();
|
||||
} catch (InterruptedException e) {}
|
||||
}
|
||||
if (mThumbnailCache != null) {
|
||||
return (Bitmap) mThumbnailCache.getBitmap(key);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -112,10 +272,10 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
view = inflator.inflate(R.layout.list_item, null);
|
||||
}
|
||||
|
||||
|
||||
if (mFiles != null && mFiles.size() > position) {
|
||||
OCFile file = mFiles.get(position);
|
||||
TextView fileName = (TextView) view.findViewById(R.id.Filename);
|
||||
TextView fileName = (TextView) view.findViewById(R.id.Filename);
|
||||
String name = file.getFileName();
|
||||
|
||||
fileName.setText(name);
|
||||
|
@ -126,7 +286,8 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
|
||||
ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);
|
||||
localStateView.bringToFront();
|
||||
FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();
|
||||
FileDownloaderBinder downloaderBinder =
|
||||
mTransferServiceGetter.getFileDownloaderBinder();
|
||||
FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();
|
||||
if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {
|
||||
localStateView.setImageResource(R.drawable.downloading_file_indicator);
|
||||
|
@ -149,7 +310,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
fileSizeV.setVisibility(View.VISIBLE);
|
||||
fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));
|
||||
lastModV.setVisibility(View.VISIBLE);
|
||||
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));
|
||||
lastModV.setText(
|
||||
DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())
|
||||
);
|
||||
// this if-else is needed even thoe fav icon is visible by default
|
||||
// because android reuses views in listview
|
||||
if (!file.keepInSync()) {
|
||||
|
@ -168,20 +331,42 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);
|
||||
}
|
||||
checkBoxV.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
// get Thumbnail if file is image
|
||||
if (file.isImage()){
|
||||
// Thumbnail in Cache?
|
||||
Bitmap thumbnail = getBitmapFromDiskCache(String.valueOf(file.getRemoteId()));
|
||||
if (thumbnail != null && !file.needsUpdateThumbnail()){
|
||||
fileIcon.setImageBitmap(thumbnail);
|
||||
} else {
|
||||
// generate new Thumbnail
|
||||
if (cancelPotentialWork(file, fileIcon)) {
|
||||
final ThumbnailGenerationTask task =
|
||||
new ThumbnailGenerationTask(fileIcon);
|
||||
final AsyncDrawable asyncDrawable =
|
||||
new AsyncDrawable(mContext.getResources(), defaultImg, task);
|
||||
fileIcon.setImageDrawable(asyncDrawable);
|
||||
task.execute(file);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fileIcon.setImageResource(
|
||||
DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())
|
||||
);
|
||||
}
|
||||
|
||||
fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));
|
||||
|
||||
|
||||
if (checkIfFileIsSharedWithMe(file)) {
|
||||
sharedWithMeIconV.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
fileSizeV.setVisibility(View.INVISIBLE);
|
||||
//fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));
|
||||
lastModV.setVisibility(View.VISIBLE);
|
||||
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));
|
||||
lastModV.setText(
|
||||
DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())
|
||||
);
|
||||
checkBoxV.setVisibility(View.GONE);
|
||||
view.findViewById(R.id.imageView3).setVisibility(View.GONE);
|
||||
|
||||
|
@ -189,7 +374,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
fileIcon.setImageResource(R.drawable.shared_with_me_folder);
|
||||
sharedWithMeIconV.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));
|
||||
fileIcon.setImageResource(
|
||||
DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())
|
||||
);
|
||||
}
|
||||
|
||||
// If folder is sharedByLink, icon folder must be changed to
|
||||
|
@ -208,6 +395,35 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
|
||||
return view;
|
||||
}
|
||||
|
||||
public static boolean cancelPotentialWork(OCFile file, ImageView imageView) {
|
||||
final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
|
||||
|
||||
if (bitmapWorkerTask != null) {
|
||||
final OCFile bitmapData = bitmapWorkerTask.file;
|
||||
// If bitmapData is not yet set or it differs from the new data
|
||||
if (bitmapData == null || bitmapData != file) {
|
||||
// Cancel previous task
|
||||
bitmapWorkerTask.cancel(true);
|
||||
} else {
|
||||
// The same work is already in progress
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// No task associated with the ImageView, or an existing task was cancelled
|
||||
return true;
|
||||
}
|
||||
|
||||
private static ThumbnailGenerationTask getBitmapWorkerTask(ImageView imageView) {
|
||||
if (imageView != null) {
|
||||
final Drawable drawable = imageView.getDrawable();
|
||||
if (drawable instanceof AsyncDrawable) {
|
||||
final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable;
|
||||
return asyncDrawable.getBitmapWorkerTask();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewTypeCount() {
|
||||
|
@ -226,8 +442,10 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
|
||||
/**
|
||||
* Change the adapted directory for a new one
|
||||
* @param directory New file to adapt. Can be NULL, meaning "no content to adapt".
|
||||
* @param updatedStorageManager Optional updated storage manager; used to replace mStorageManager if is different (and not NULL)
|
||||
* @param directory New file to adapt. Can be NULL, meaning
|
||||
* "no content to adapt".
|
||||
* @param updatedStorageManager Optional updated storage manager; used to replace
|
||||
* mStorageManager if is different (and not NULL)
|
||||
*/
|
||||
public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager) {
|
||||
mFile = directory;
|
||||
|
@ -273,7 +491,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
* @return boolean: True if it is shared with me and false if it is not
|
||||
*/
|
||||
private boolean checkIfFileIsSharedWithMe(OCFile file) {
|
||||
return (mFile.getPermissions() != null && !mFile.getPermissions().contains(PERMISSION_SHARED_WITH_ME)
|
||||
&& file.getPermissions() != null && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));
|
||||
return (mFile.getPermissions() != null
|
||||
&& !mFile.getPermissions().contains(PERMISSION_SHARED_WITH_ME)
|
||||
&& file.getPermissions() != null
|
||||
&& file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));
|
||||
}
|
||||
}
|
||||
|
|
99
src/com/owncloud/android/utils/BitmapUtils.java
Normal file
99
src/com/owncloud/android/utils/BitmapUtils.java
Normal file
|
@ -0,0 +1,99 @@
|
|||
/* ownCloud Android client application
|
||||
* Copyright (C) 2012-2014 ownCloud Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.owncloud.android.utils;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.BitmapFactory.Options;
|
||||
|
||||
/**
|
||||
* Utility class with methods for decoding Bitmaps.
|
||||
*
|
||||
* @author David A. Velasco
|
||||
*/
|
||||
public class BitmapUtils {
|
||||
|
||||
|
||||
/**
|
||||
* Decodes a bitmap from a file containing it minimizing the memory use, known that the bitmap
|
||||
* will be drawn in a surface of reqWidth x reqHeight
|
||||
*
|
||||
* @param srcPath Absolute path to the file containing the image.
|
||||
* @param reqWidth Width of the surface where the Bitmap will be drawn on, in pixels.
|
||||
* @param reqHeight Height of the surface where the Bitmap will be drawn on, in pixels.
|
||||
* @return
|
||||
*/
|
||||
public static Bitmap decodeSampledBitmapFromFile(String srcPath, int reqWidth, int reqHeight) {
|
||||
|
||||
// set desired options that will affect the size of the bitmap
|
||||
final Options options = new Options();
|
||||
options.inScaled = true;
|
||||
options.inPurgeable = true;
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
|
||||
options.inPreferQualityOverSpeed = false;
|
||||
}
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||
options.inMutable = false;
|
||||
}
|
||||
|
||||
// make a false load of the bitmap to get its dimensions
|
||||
options.inJustDecodeBounds = true;
|
||||
|
||||
BitmapFactory.decodeFile(srcPath, options);
|
||||
|
||||
// calculate factor to subsample the bitmap
|
||||
options.inSampleSize = calculateSampleFactor(options, reqWidth, reqHeight);
|
||||
|
||||
// decode bitmap with inSampleSize set
|
||||
options.inJustDecodeBounds = false;
|
||||
return BitmapFactory.decodeFile(srcPath, options);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculates a proper value for options.inSampleSize in order to decode a Bitmap minimizing
|
||||
* the memory overload and covering a target surface of reqWidth x reqHeight if the original
|
||||
* image is big enough.
|
||||
*
|
||||
* @param options Bitmap decoding options; options.outHeight and options.inHeight should
|
||||
* be set.
|
||||
* @param reqWidth Width of the surface where the Bitmap will be drawn on, in pixels.
|
||||
* @param reqHeight Height of the surface where the Bitmap will be drawn on, in pixels.
|
||||
* @return The largest inSampleSize value that is a power of 2 and keeps both
|
||||
* height and width larger than reqWidth and reqHeight.
|
||||
*/
|
||||
private static int calculateSampleFactor(Options options, int reqWidth, int reqHeight) {
|
||||
|
||||
final int height = options.outHeight;
|
||||
final int width = options.outWidth;
|
||||
int inSampleSize = 1;
|
||||
|
||||
if (height > reqHeight || width > reqWidth) {
|
||||
final int halfHeight = height / 2;
|
||||
final int halfWidth = width / 2;
|
||||
|
||||
while ((halfHeight / inSampleSize) > reqHeight
|
||||
&& (halfWidth / inSampleSize) > reqWidth) {
|
||||
inSampleSize *= 2;
|
||||
}
|
||||
}
|
||||
|
||||
return inSampleSize;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue