<string name="sync_file_nothing_to_do_msg">Dateiinhalte bereits synchronisiert</string>
<string name="create_dir_fail_msg">Verzeichnis konnte nicht erstellt werden</string>
<string name="filename_forbidden_characters">Verbotene Zeichen: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Dateiname darf nicht leer sein</string>
<string name="wait_a_moment">Bitte warten Sie einen Moment.</string>
<string name="filedisplay_unexpected_bad_get_content">Ein unerwartetes Problem ist aufgetreten. Bitte versuchen Sie, die Datei in einer anderen App zu öffnen.</string>
<string name="filedisplay_no_file_selected">Es wurde keine Datei ausgewählt.</string>
<string name="sync_file_nothing_to_do_msg">Dateiinhalte bereits synchronisiert</string>
<string name="create_dir_fail_msg">Verzeichnis konnte nicht erstellt werden</string>
<string name="filename_forbidden_characters">Verbotene Zeichen: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Dateiname darf nicht leer sein</string>
<string name="wait_a_moment">Bitte warte einen Moment.</string>
<string name="filedisplay_unexpected_bad_get_content">Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen</string>
<string name="filedisplay_no_file_selected">Es wurde keine Datei ausgewählt.</string>
<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>
<string name="sync_file_nothing_to_do_msg">Τα περιεχόμενα του αρχείου έχουν ήδη συγχρονιστεί</string>
<string name="create_dir_fail_msg">Δημιουργία φακέλου απέτυχε</string>
<string name="filename_forbidden_characters">Μη-επιτρεπόμενοι χαρακτήρες: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Το όνομα αρχείου δεν μπορεί να είναι κενό.</string>
<string name="wait_a_moment">Παρακαλούμε περιμένετε</string>
<string name="filedisplay_unexpected_bad_get_content">Απροσδόκητο σφάλμα, δοκιμάστε με άλλη εφαρμογή</string>
<string name="filedisplay_no_file_selected">Δεν επιλέχθηκαν αρχεία </string>
<string name="sync_file_nothing_to_do_msg">File contents already synchronised</string>
<string name="create_dir_fail_msg">Folder could not be created</string>
<string name="filename_forbidden_characters">Forbidden characters: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">File name cannot be empty</string>
<string name="wait_a_moment">Wait a moment</string>
<string name="filedisplay_unexpected_bad_get_content">Unexpected problem; please select the file from a different app</string>
<string name="filedisplay_no_file_selected">No file was selected</string>
<string name="sync_file_nothing_to_do_msg">Ya está sincronizado</string>
<string name="create_dir_fail_msg">No se pudo crear la carpeta</string>
<string name="filename_forbidden_characters">Carácteres ilegales: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">El nombre de archivo no puede estar vacío</string>
<string name="wait_a_moment">Espere un momento</string>
<string name="filedisplay_unexpected_bad_get_content">Problema inesperado; por favor, prueba otra app para seleccionar el archivo</string>
<string name="filedisplay_no_file_selected">No hay ficheros seleccionados.</string>
<string name="sync_file_fail_msg">Etäpään tiedostoa ei voitu tarkistaa</string>
<string name="sync_file_nothing_to_do_msg">Tiedoston sisältö on jo synkronoitu</string>
<string name="filename_forbidden_characters">Kielletyt merkit: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Tiedoston nimi ei voi olla tyhjä</string>
<string name="wait_a_moment">Odota hetki</string>
<string name="filedisplay_unexpected_bad_get_content">Odottamaton ongelma; kokeile valita tiedosto toisella sovelluksella</string>
<string name="filedisplay_no_file_selected">Tiedostoa ei valittu</string>
<string name="sync_file_nothing_to_do_msg">Le contenu des fichiers est déjà synchronisé</string>
<string name="create_dir_fail_msg">Le dossier n\'a pas pu être créé</string>
<string name="filename_forbidden_characters">Caractères interdits : / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Le nom du fichier ne peut pas être vide</string>
<string name="wait_a_moment">Veuillez patienter</string>
<string name="filedisplay_unexpected_bad_get_content">Problème inattendu ; veuillez essayer une autre app pour la sélection du fichier</string>
<string name="filedisplay_no_file_selected">Aucun fichier sélectionné</string>
<string name="sync_file_nothing_to_do_msg">Os contidos do ficheiro xa están sincronizados</string>
<string name="create_dir_fail_msg">Non foi posíbel crear o cartafol</string>
<string name="filename_forbidden_characters">Caracteres non permitidos: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">O nome de ficheiro non pode estar baleiro</string>
<string name="wait_a_moment">Agarde un chisco</string>
<string name="filedisplay_unexpected_bad_get_content">Produciuse un erro non agardado. Seleccione o ficheiro con outro aplicativo diferente</string>
<string name="filedisplay_no_file_selected">Non se escolleu ningún ficheiro</string>
<string name="sync_file_nothing_to_do_msg">Contenuti del file già sincronizzati</string>
<string name="create_dir_fail_msg">La cartella non può essere creata</string>
<string name="filename_forbidden_characters">Caratteri proibiti: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Il nome del file non può essere vuoto</string>
<string name="wait_a_moment">Attendi</string>
<string name="filedisplay_unexpected_bad_get_content">Problema inatteso; prova un\'altra applicazione per selezionare il file</string>
<string name="filedisplay_no_file_selected">Non è stato selezionato alcun file</string>
<string name="sync_file_nothing_to_do_msg">Bestandsinhoud is al gesynchroniseerd</string>
<string name="create_dir_fail_msg">Map kon niet worden aangemaakt</string>
<string name="filename_forbidden_characters">Verboden tekens: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Bestandsnaam mag niet leeg zijn</string>
<string name="wait_a_moment">Even geduld</string>
<string name="filedisplay_unexpected_bad_get_content">Onverwacht probleem; probeer een andere app om het bestand te selecteren</string>
<string name="filedisplay_no_file_selected">Er werd geen bestand geselecteerd</string>
<string name="sync_file_nothing_to_do_msg">Zawartość pliku została już synchronizowana</string>
<string name="create_dir_fail_msg">Folder nie może zostać utworzony</string>
<string name="filename_forbidden_characters">Znaki zabronione: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Nazwa pliku nie może być pusta.</string>
<string name="wait_a_moment">Poczekaj chwilę</string>
<string name="filedisplay_unexpected_bad_get_content">Nieoczekiwany problem; spróbuj wybrać plik z innej aplikacji</string>
<string name="filedisplay_no_file_selected">Nie wybrano żadnych plików</string>
<string name="sync_file_nothing_to_do_msg">Conteúdo do arquivo já foi sincronizado</string>
<string name="create_dir_fail_msg">A pasta não pode ser criada</string>
<string name="filename_forbidden_characters">Caracteres proibidos: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">O nome do arquivo não pode ficar estar vazio</string>
<string name="wait_a_moment">Aguarde um momento</string>
<string name="filedisplay_unexpected_bad_get_content">Problema inesperado; por favor, tente selecionar o arquivo com outro app</string>
<string name="filedisplay_no_file_selected">Nenhum arquivo foi selecionado</string>
<string name="sync_file_nothing_to_do_msg">O conteúdo do ficheiro já foi sincronizado</string>
<string name="create_dir_fail_msg">Não foi possivel criar a pasta</string>
<string name="filename_forbidden_characters">Caracteres não permitidos: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">O nome do ficheiro não pode ser vazio.</string>
<string name="wait_a_moment">Aguarde um momento</string>
<string name="filedisplay_unexpected_bad_get_content">Erro inesperado. Por favor tente outra aplicação para seleccionar o ficheiro.</string>
<string name="filedisplay_no_file_selected">Não selecionou nenhum ficheiro</string>
<string name="sync_file_nothing_to_do_msg">Содержимое файла уже синхронизировано</string>
<string name="create_dir_fail_msg">Не возможно создать папку</string>
<string name="filename_forbidden_characters">Недопустимые символы: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Имя файла не может быть пустым</string>
<string name="wait_a_moment">Подождите немного</string>
<string name="filedisplay_unexpected_bad_get_content">Неизвестная ошибка; выберите этот файл из другого приложения</string>
<string name="filedisplay_no_file_selected">Файлы не выбраны</string>
<string name="sync_file_nothing_to_do_msg">Filinnehåll redan synkroniserat</string>
<string name="create_dir_fail_msg">Mapp kunde inte skapas</string>
<string name="filename_forbidden_characters">Förbjudna tecken är: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Filnamnet får inte lämnas blankt</string>
<string name="wait_a_moment">Var god vänta</string>
<string name="filedisplay_unexpected_bad_get_content">Oväntat problem; prova annat program för aktuell fil</string>
<string name="filedisplay_no_file_selected">Ingen fil vald</string>
<string name="actionbar_upload">Yükle</string>
<string name="actionbar_upload_from_apps">Diğer uygulamalardan içerik</string>
<string name="actionbar_upload_files">Dosyalar</string>
- <string name="actionbar_open_with">ile aç</string>
+ <string name="actionbar_open_with">Birlikte aç</string>
<string name="actionbar_mkdir">Yeni klasör</string>
<string name="actionbar_settings">Ayarlar</string>
- <string name="actionbar_see_details">Detaylar</string>
+ <string name="actionbar_see_details">Ayrıntılar</string>
<string name="actionbar_send_file">Gönder</string>
<string name="prefs_category_general">Genel</string>
<string name="prefs_category_more">Daha fazla</string>
<string name="prefs_instant_upload_summary">Kamera ile çekilen fotoğrafları anında yükle</string>
<string name="prefs_instant_video_upload">Anında video yüklemeleri</string>
<string name="prefs_instant_video_upload_summary">Kamera ile çekilen videoları anında yükle</string>
- <string name="prefs_log_title">Günlük tutmayı etkinleştir</string>
+ <string name="prefs_log_title">Günlük Tutmayı Etkinleştir</string>
<string name="prefs_log_summary">Bu, sorunları günlük dosyasına kaydetmek için kullanılır</string>
- <string name="prefs_log_title_history">Günlük geçmişi</string>
+ <string name="prefs_log_title_history">Günlük Geçmişi</string>
<string name="prefs_log_summary_history">Bu, kayıtlı günlük dosyalarını görüntüler</string>
<string name="prefs_log_delete_history_button">Geçmişi Sil</string>
<string name="prefs_help">Yardım</string>
<string name="prefs_feedback">Geribildirim</string>
<string name="prefs_imprint">İzlenim</string>
<string name="recommend_subject">%1$s uygulamasını akıllı telefonunda dene!</string>
- <string name="recommend_text">\"Sana, akıllı telefonunda kullanmak üzere %1$s daveti yapıyorum!\nBuradan indirebilirsin: %2$s\"</string>
- <string name="auth_check_server">Sunucuyu kontrol et</string>
+ <string name="recommend_text">\"Seni, akıllı telefonunda %1$s kullanmaya davet ediyorum!\nBuradan indirebilirsin: %2$s\"</string>
+ <string name="auth_check_server">Sunucuyu Denetle</string>
<string name="auth_host_url">Sunucu adresi https://…</string>
<string name="auth_username">Kullanıcı Adı</string>
<string name="auth_password">Parola</string>
- <string name="auth_register">%1$s senin için yeni mi?</string>
+ <string name="auth_register">%1$s sizin için yeni mi?</string>
<string name="sync_string_files">Dosyalar</string>
<string name="setup_btn_connect">Bağlan</string>
<string name="uploader_btn_upload_text">Yükle</string>
<string name="uploader_wrn_no_account_setup_btn_text">Kurulum</string>
<string name="uploader_wrn_no_account_quit_btn_text">Çıkış</string>
<string name="uploader_wrn_no_content_title">Yüklenecek içerik yok</string>
- <string name="uploader_wrn_no_content_text">Yüklenecek içerik yok. Yüklenecek dosya yok.</string>
+ <string name="uploader_wrn_no_content_text">Hiç içerik alınmadı. Yüklenecek hiçbir şey yok.</string>
<string name="uploader_error_forbidden_content">%1$s için paylaşılan içeriğe erişim izni yok</string>
<string name="uploader_info_uploading">Yükleniyor</string>
<string name="file_list_empty">Bu klasörde dosya yok.\nYeni dosyalar \"Yükle\" menü seçeneği ile eklenebilir.</string>
<string name="delete_account">Hesabı sil</string>
<string name="create_account">Hesap oluştur</string>
<string name="upload_chooser_title">Şuradan yükle...</string>
- <string name="uploader_info_dirname">Klasör ismi</string>
+ <string name="uploader_info_dirname">Klasör adı</string>
<string name="uploader_upload_in_progress_ticker">Yükleniyor...</string>
- <string name="uploader_upload_in_progress_content">%%%1$d Yüklenen %2$s</string>
+ <string name="uploader_upload_in_progress_content">%%%1$d Yüklenen: %2$s</string>
<string name="uploader_upload_succeeded_ticker">Yükleme başarılı</string>
<string name="uploader_upload_succeeded_content_single">%1$s başarıyla yüklendi</string>
<string name="uploader_upload_failed_ticker">Yükleme başarısız</string>
<string name="uploader_upload_failed_content_single">%1$s yüklenmesi tamamlanamadı</string>
- <string name="downloader_download_in_progress_ticker">İndiriyor...</string>
- <string name="downloader_download_in_progress_content">%1$d%% İndiriliyor %2$s</string>
+ <string name="downloader_download_in_progress_ticker">İndiriliyor...</string>
+ <string name="downloader_download_in_progress_content">%%%1$d İndirilen: %2$s</string>
<string name="downloader_download_succeeded_ticker">İndirme başarılı</string>
<string name="downloader_download_succeeded_content">%1$s başarıyla indirildi</string>
- <string name="downloader_download_failed_ticker">İndirilme başarısız</string>
- <string name="downloader_download_failed_content">%1$s indirilmesi tamamlanamadı</string>
+ <string name="downloader_download_failed_ticker">İndirme başarısız</string>
+ <string name="downloader_download_failed_content">%1$s indirmesi tamamlanamadı</string>
<string name="downloader_not_downloaded_yet">Henüz indirilemedi</string>
<string name="common_choose_account">Hesap seçin</string>
<string name="sync_fail_ticker">Eşitleme başarısız</string>
<string name="sync_fail_content">%1$s eşitlemesi tamamlanamadı</string>
<string name="sync_fail_content_unauthorized">%1$s için geçersiz parola</string>
<string name="sync_conflicts_in_favourites_ticker">Çakışma bulundu</string>
- <string name="sync_conflicts_in_favourites_content">%1$d korumalı eşitleme dosyası, eşitlenemedi</string>
- <string name="sync_fail_in_favourites_ticker">Korunan dosya eşitlemesi başarısız</string>
+ <string name="sync_conflicts_in_favourites_content">%1$d eşit tut dosyası, eşitlenemedi</string>
+ <string name="sync_fail_in_favourites_ticker">Dosyaları eşit tut işlemi başarısız</string>
<string name="sync_fail_in_favourites_content">%1$d dosya eşitlenemedi (%2$d çakışma)</string>
<string name="sync_foreign_files_forgotten_ticker">Bazı yerel dosyalar unutuldu</string>
<string name="sync_foreign_files_forgotten_content">%2$s klasöründeki %1$d dosya şuraya kopyalanamadı</string>
<string name="foreign_files_fail">Bazı dosyalar taşınamadı</string>
<string name="foreign_files_local_text">Yerel: %1$s</string>
<string name="foreign_files_remote_text">Uzak: %1$s</string>
- <string name="upload_query_move_foreign_files">Seçilen dosyaları %1$s dizinine kopyalamak için yeterli alan yok. Bunun yerine dosyayı taşımak ister misiniz?</string>
+ <string name="upload_query_move_foreign_files">Seçilen dosyaları %1$s klasörüne kopyalamak için yeterli alan yok. Bunun yerine dosyayı taşımak ister misiniz?</string>
<string name="pincode_enter_pin_code">Lütfen uygulama PIN\'inizi girin</string>
<string name="pincode_configure_your_pin">Uygulama PIN\'inizi girin</string>
<string name="pincode_configure_your_pin_explanation">PIN uygulama yeniden başladığında tekrar sorulacak</string>
<string name="pincode_reenter_your_pincode">Lütfen, uygulama PIN\'inizi tekrar girin</string>
- <string name="pincode_remove_your_pincode">Uygulama PIN\'inizi aldırın</string>
+ <string name="pincode_remove_your_pincode">Uygulama PIN\'inizi kaldırın</string>
<string name="pincode_mismatch">Her iki Uygulama PIN\'i aynı değil</string>
<string name="pincode_wrong">Yanlış Uygulama PIN\'i</string>
<string name="pincode_removed">Uygulama PIN\'i kaldırıldı</string>
<string name="media_notif_ticker">%1$s müzik çalar</string>
<string name="media_state_playing">%1$s (oynatılıyor)</string>
<string name="media_state_loading">%1$s (yükleniyor)</string>
- <string name="media_event_done">%1$s yeniden oynatım sonlandırıldı</string>
- <string name="media_err_nothing_to_play">Herhangi bir medya öğesi bulunamadı</string>
+ <string name="media_event_done">%1$s yeniden oynatım tamamlandı</string>
+ <string name="media_err_nothing_to_play">Herhangi bir ortam ögesi bulunamadı</string>
<string name="media_err_no_account">Tanımlı hesap yok</string>
- <string name="media_err_not_in_owncloud">Dosya doğru bir hesapta değil</string>
- <string name="media_err_unsupported">Codec desteklenmiyor</string>
- <string name="media_err_io">Medya öğesi okunamadı</string>
- <string name="media_err_malformed">Medya öğesi doğru bir şekilde kodlanmadı</string>
- <string name="media_err_timeout">Oynatmaya çalışırken zaman aşımına uğradı</string>
- <string name="media_err_invalid_progressive_playback">Medya öğesi aktarılamadı</string>
+ <string name="media_err_not_in_owncloud">Dosya geçerli bir hesapta değil</string>
+ <string name="media_err_unsupported">Ortam kod çözücü desteklenmiyor</string>
+ <string name="media_err_io">Ortam ögesi okunamadı</string>
+ <string name="media_err_malformed">Ortam ögesi doğru bir şekilde kodlanmamış</string>
+ <string name="media_err_timeout">Oynatmaya çalışılırken zaman aşımına uğradı</string>
+ <string name="media_err_invalid_progressive_playback">Ortam ögesi akışı yapılamıyor</string>
<string name="media_err_unknown">Ortam dosyası mevcut ortam oynatıcı ile çalınamaz</string>
<string name="media_err_security_ex">%1$s oynatılmaya çalışılırken güvenlik hatası oluştu</string>
<string name="media_err_io_ex">%1$s oynatılmaya çalışılırken girdi hatası oluştu</string>
<string name="auth_account_not_new">Cihazda aynı kullanıcı adı ve sunucu için bir hesap zaten mevcut</string>
<string name="auth_account_not_the_same">Girilen kullanıcı bu hesabın kullanıcısı ile eşleşmiyor</string>
<string name="auth_unknown_error_title">Bilinmeyen hata oluştu!</string>
- <string name="auth_unknown_host_title">Anabilgisayar bulunamadı</string>
- <string name="auth_incorrect_path_title">Sunucu örneği bulunamadı.</string>
+ <string name="auth_unknown_host_title">Ana makine bulunamadı</string>
+ <string name="auth_incorrect_path_title">Sunucu örneği bulunamadı</string>
<string name="auth_timeout_title">Sunucu çok geç cevap veriyor</string>
<string name="auth_incorrect_address_title">Hatalı biçimlendirilmiş URL</string>
- <string name="auth_ssl_general_error_title">SSL başlatılmasında hata</string>
+ <string name="auth_ssl_general_error_title">SSL başlatma başarısız</string>
<string name="auth_ssl_unverified_server_title">SSL sunucu kimliği doğrulanamadı</string>
<string name="auth_bad_oc_version_title">Bilinmeyen sunucu sürümü</string>
<string name="auth_wrong_connection_title">Bağlantı kurulamadı</string>
- <string name="auth_secure_connection">Güvenli bağlantı sağlandı.</string>
+ <string name="auth_secure_connection">Güvenli bağlantı sağlandı</string>
<string name="auth_unauthorized">Hatalı kullanıcı adı veya parola</string>
<string name="auth_oauth_error">Kimlik doğrulama başarısız oldu</string>
<string name="auth_oauth_error_access_denied">Erişim, kimlik doğrulama sunucusu tarafından reddedildi</string>
<string name="auth_connecting_auth_server">Kimlik doğrulama sunucusuna bağlanılıyor...</string>
<string name="auth_unsupported_auth_method">Sunucu bu kimlik doğrulama yöntemini desteklemiyor</string>
<string name="auth_unsupported_multiaccount">%1$s çoklu hesapları desteklemiyor</string>
- <string name="auth_fail_get_user_name">Sunucunuz geçerli bir kullanıcı kimliği döndürmüyor, lütfen yöneticinizle iletişime geçin</string>
+ <string name="auth_fail_get_user_name">Sunucunuz geçerli bir kullanıcı kimliği döndürmüyor, lütfen yöneticinizle iletişime geçin\n </string>
<string name="auth_can_not_auth_against_server">Bu sunucuya karşı kimlik doğrulama yapılamaz</string>
<string name="fd_keep_in_sync">Dosyayı güncel tut</string>
<string name="common_rename">Yeniden adlandır</string>
<string name="confirmation_remove_local">Sadece yerel</string>
<string name="confirmation_remove_folder_local">Sadece yerel içerik</string>
<string name="confirmation_remove_remote">Sunucudan kaldır</string>
- <string name="confirmation_remove_remote_and_local">Uzaktaki ve yereldeki</string>
+ <string name="confirmation_remove_remote_and_local">Uzak ve yerel</string>
<string name="remove_success_msg">Kaldırma başarılı</string>
<string name="remove_fail_msg">Kaldırma başarısız</string>
<string name="rename_dialog_title">Yeni bir isim girin</string>
- <string name="rename_local_fail_msg">Yerel kopya adlandırılamaz; farklı bir ad deneyin</string>
- <string name="rename_server_fail_msg">Yeniden adlandırılma tamamlanmadı</string>
- <string name="sync_file_fail_msg">Dosya teslim edilemedi</string>
+ <string name="rename_local_fail_msg">Yerel kopya adlandırılamadı; farklı bir ad deneyin</string>
+ <string name="rename_server_fail_msg">Yeniden adlandırılma tamamlanamadı</string>
+ <string name="sync_file_fail_msg">Uzak dosya denetlenemedi</string>
<string name="sync_file_nothing_to_do_msg">Dosya içerikleri zaten eşitlenmiş</string>
<string name="create_dir_fail_msg">Klasör oluşturulamadı</string>
<string name="filename_forbidden_characters">Yasaklı karakterler: / \\ < > : \" | ? *</string>
+ <string name="filename_empty">Dosya adı boş olamaz</string>
<string name="wait_a_moment">Bir süre bekleyin</string>
- <string name="filedisplay_unexpected_bad_get_content">Beklenmedik sorun; lütfen, dosya seçmek için farklı uygulama kullanın</string>
+ <string name="filedisplay_unexpected_bad_get_content">Beklenmedik sorun; lütfen dosya seçmek için farklı bir uygulama kullanın</string>
<string name="filedisplay_no_file_selected">Hiçbir dosya seçilmedi</string>
<string name="activity_chooser_title">Bağlantıyı gönder ...</string>
<string name="oauth_check_onoff">oAuth2 ile oturum aç</string>
<string name="oauth_login_connection">oAuth2 sunucusuna bağlanılıyor…</string>
<string name="ssl_validator_header">Bu sitenin sertifikası doğrulanamadı</string>
- <string name="ssl_validator_reason_cert_not_trusted">- Sunucu sertifikası güvenilmez</string>
- <string name="ssl_validator_reason_cert_expired">- Sunucu sertifikasının süresi geçmiş</string>
- <string name="ssl_validator_reason_cert_not_yet_valid">Sunucu sertifikasının geçerli olacağı tarih</string>
- <string name="ssl_validator_reason_hostname_not_verified">- URL adresi sunucu isminin sertifikası ile uyuşmuyor</string>
+ <string name="ssl_validator_reason_cert_not_trusted">- Sunucu sertifikasına güvenilmiyor</string>
+ <string name="ssl_validator_reason_cert_expired">- Sunucu sertifikasının süresi dolmuş</string>
+ <string name="ssl_validator_reason_cert_not_yet_valid">- Sunucu sertifikasının geçerlilik tarihi ileride</string>
+ <string name="ssl_validator_reason_hostname_not_verified">- Adres, sertifikadaki sunucu adı ile eşleşmiyor</string>
<string name="ssl_validator_question">Sertifikaya yine de güvenmek istiyor musunuz?</string>
<string name="ssl_validator_not_saved">Sertifika kaydedilemedi</string>
<string name="ssl_validator_btn_details_see">Ayrıntılar</string>
<string name="ssl_validator_label_ST">Eyalet:</string>
<string name="ssl_validator_label_L">Konum:</string>
<string name="ssl_validator_label_validity">Geçerlilik:</string>
- <string name="ssl_validator_label_validity_from">Kimden:</string>
- <string name="ssl_validator_label_validity_to">Kime:</string>
+ <string name="ssl_validator_label_validity_from">Başlangıç:</string>
+ <string name="ssl_validator_label_validity_to">Bitiş:</string>
<string name="ssl_validator_label_signature">İmza:</string>
<string name="ssl_validator_label_signature_algorithm">Algoritma:</string>
<string name="ssl_validator_null_cert">Sertifika gösterilemedi.</string>
<string name="placeholder_filesize">389 KB</string>
<string name="placeholder_timestamp">2012/05/18 12:23 ÖS</string>
<string name="placeholder_media_time">12:23:45</string>
- <string name="instant_upload_on_wifi">Fotoğrafları sadece kablosuz bağlantıda (WiFi) yükle</string>
- <string name="instant_video_upload_on_wifi">Videoları sadece kablosuz bağlantıda (WiFi) yükle</string>
+ <string name="instant_upload_on_wifi">Fotoğrafları sadece kablosuzda (WiFi) yükle</string>
+ <string name="instant_video_upload_on_wifi">Videoları sadece kablosuzda (WiFi) yükle</string>
<string name="instant_upload_path">/AnındaYükle</string>
<string name="conflict_title">Çakışmayı güncelle</string>
<string name="conflict_message">Uzaktaki %s dosyası, yerel dosya ile eşitlenemedi. İşleme devam etmek sunucudaki dosyanın içeriğini değiştirecektir.</string>
<string name="conflict_keep_both">İkisini de koru</string>
<string name="conflict_overwrite">Üzerine yaz</string>
<string name="conflict_dont_upload">Yükleme</string>
- <string name="preview_image_description">Görüntü önizleme</string>
+ <string name="preview_image_description">Resim önizleme</string>
<string name="preview_image_error_unknown_format">Bu resim gösterilemez</string>
- <string name="error__upload__local_file_not_copied">%1$s, %2$s yerel dizine klasörüne</string>
+ <string name="error__upload__local_file_not_copied">%1$s, %2$s yerel klasörüne kopyalanamadı</string>
<string name="actionbar_failed_instant_upload">AnındaYükleme başarısız</string>
<string name="failed_upload_headline_text">Anında yüklemeler başarısız</string>
<string name="failed_upload_headline_hint">Başarısız olan tüm anında yüklemelerin özeti</string>
- <string name="failed_upload_all_cb">hepsini seç</string>
+ <string name="failed_upload_all_cb">tümünü seç</string>
<string name="failed_upload_headline_retryall_btn">tüm seçili olanları tekrar dene</string>
<string name="failed_upload_headline_delete_all_btn">yükleme kuyruğundaki tüm seçili olanları sil</string>
- <string name="failed_upload_retry_text">Resmi yeniden yüklemeyi dene:</string>
- <string name="failed_upload_load_more_images">Daha fazla Görsel yükle</string>
+ <string name="failed_upload_retry_text">fotoğrafı yeniden yüklemeyi dene:</string>
+ <string name="failed_upload_load_more_images">Daha fazla resim yükle</string>
<string name="failed_upload_retry_do_nothing_text">anında yükleme için çevrimiçi değilsiniz, bir şey yapma</string>
<string name="failed_upload_failure_text">Hata Mesajı:</string>
<string name="failed_upload_quota_exceeded_text">Sunucu yapılandırmanızı kontrol edin. Kotanızı aşmış olabilirsiniz.</string>
- <string name="share_link_no_support_share_api">Üzgünüz, paylaşım sunucunuzda etkin değil. Lütfen yöneticinizle\niletişime geçin.</string>
+ <string name="share_link_no_support_share_api">Üzgünüz, paylaşım sunucunuzda etkin değil. Lütfen yöneticinizle\n iletişime geçin.</string>
<string name="share_link_file_no_exist">Bu dosya veya klasör paylaşılamıyor. Lütfen mevcut olup olmadığını denetleyin</string>
<string name="share_link_file_error">Bu dosya veya klasörü paylaşmaya çalışılırken bir hata oluştu</string>
<string name="unshare_link_file_no_exist">Bu dosya veya klasörün paylaşımı kaldırılamadı. Mevcut değil.</string>
<string name="uploader_upload_succeeded_content_single">%1$s was successfully uploaded</string>
<string name="uploader_upload_failed_ticker">Upload failed</string>
<string name="uploader_upload_failed_content_single">Upload of %1$s could not be completed</string>
+ <string name="uploader_upload_failed_credentials_error">Upload failed, you need to relogin</string>
<string name="downloader_download_in_progress_ticker">Downloading …</string>
<string name="downloader_download_in_progress_content">%1$d%% Downloading %2$s</string>
<string name="downloader_download_succeeded_ticker">Download succeeded</string>
<string name="downloader_download_failed_ticker">Download failed</string>
<string name="downloader_download_failed_content">Download of %1$s could not be completed</string>
<string name="downloader_not_downloaded_yet">Not downloaded yet</string>
+ <string name="downloader_download_failed_credentials_error">Download failed, you need to relogin</string>
<string name="common_choose_account">Choose account</string>
<string name="sync_fail_ticker">Synchronization failed</string>
<string name="sync_fail_content">Synchronization of %1$s could not be completed</string>
<string name="auth_unsupported_multiaccount">%1$s does not support multiple accounts</string>
<string name="auth_fail_get_user_name">Your server is not returning a correct user id, please contact an administrator
</string>
- <string name="auth_can_not_auth_against_server">Can not authenticate against this server</string>
+ <string name="auth_can_not_auth_against_server">Cannot authenticate against this server</string>
<string name="fd_keep_in_sync">Keep file up to date</string>
<string name="common_rename">Rename</string>
<string name="common_remove">Remove</string>
- <string name="confirmation_remove_alert">"Do you really want to remove %1$s ?"</string>
- <string name="confirmation_remove_folder_alert">"Do you really want to remove %1$s and its contents ?"</string>
+ <string name="confirmation_remove_alert">"Do you really want to remove %1$s?"</string>
+ <string name="confirmation_remove_folder_alert">"Do you really want to remove %1$s and its contents?"</string>
<string name="confirmation_remove_local">Local only</string>
<string name="confirmation_remove_folder_local">Local contents only</string>
<string name="confirmation_remove_remote">Remove from server</string>
<string name="conflict_dont_upload">Don\'t upload</string>
<string name="preview_image_description">Image preview</string>
- <string name="preview_image_error_unknown_format">This image can not be shown</string>
+ <string name="preview_image_error_unknown_format">This image cannot be shown</string>
<string name="error__upload__local_file_not_copied">%1$s could not be copied to %2$s local folder</string>
<string name="actionbar_failed_instant_upload">Failed InstantUpload</string>
<string name="copy_link">Copy link</string>
<string name="clipboard_text_copied">Copied to clipboard</string>
- <string name="error_cant_bind_to_operations_service">Critical error: can not perform operations</string>
+ <string name="error_cant_bind_to_operations_service">Critical error: cannot perform operations</string>
+
+ <string name="network_error_socket_exception">An error occurred while connecting with the server.</string>
+ <string name="network_error_socket_timeout_exception">An error occurred while waiting for the server, the operation couldn\'t have been done</string>
+ <string name="network_error_connect_timeout_exception">An error occurred while waiting for the server, the operation couldn\'t have been done</string>
+ <string name="network_host_not_available">The operation couldn\'t be completed, server is unavaliable</string>
+
</resources>
\r
package com.owncloud.android.authentication;\r
\r
+import java.util.Locale;\r
+\r
import com.owncloud.android.MainApp;\r
import com.owncloud.android.lib.common.accounts.AccountTypeUtils;\r
import com.owncloud.android.lib.resources.status.OwnCloudVersion;\r
MainApp.getAccountType());\r
\r
if (account != null && account.name != null) {\r
- for (Account ac : ocAccounts) {\r
- if (ac.name.equals(account.name)) {\r
+ int lastAtPos = account.name.lastIndexOf("@");\r
+ String hostAndPort = account.name.substring(lastAtPos + 1);\r
+ String username = account.name.substring(0, lastAtPos);\r
+ String otherHostAndPort, otherUsername;\r
+ Locale currentLocale = context.getResources().getConfiguration().locale;\r
+ for (Account otherAccount : ocAccounts) {\r
+ lastAtPos = otherAccount.name.lastIndexOf("@");\r
+ otherHostAndPort = otherAccount.name.substring(lastAtPos + 1);\r
+ otherUsername = otherAccount.name.substring(0, lastAtPos);\r
+ if (otherHostAndPort.equals(hostAndPort) &&\r
+ otherUsername.toLowerCase(currentLocale).\r
+ equals(username.toLowerCase(currentLocale))) {\r
return true;\r
}\r
}\r
import com.owncloud.android.ui.activity.FileDisplayActivity;
import com.owncloud.android.ui.preview.PreviewImageActivity;
import com.owncloud.android.ui.preview.PreviewImageFragment;
+import com.owncloud.android.utils.ErrorMessageAdapter;
import com.owncloud.android.utils.Log_OC;
import com.owncloud.android.utils.NotificationBuilderWithProgressBar;
private void notifyDownloadResult(DownloadFileOperation download, RemoteOperationResult downloadResult) {
mNotificationManager.cancel(R.string.downloader_download_in_progress_ticker);
if (!downloadResult.isCancelled()) {
- int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker : R.string.downloader_download_failed_ticker;
- int contentId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_content : R.string.downloader_download_failed_content;
- mNotificationBuilder
- .setTicker(getString(tickerId))
- .setContentTitle(getString(tickerId))
- .setAutoCancel(true)
- .setOngoing(false)
- .setProgress(0, 0, false);
+ int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker :
+ R.string.downloader_download_failed_ticker;
+
boolean needsToUpdateCredentials = (downloadResult.getCode() == ResultCode.UNAUTHORIZED ||
- // (downloadResult.isTemporalRedirection() && downloadResult.isIdPRedirection()
(downloadResult.isIdPRedirection()
&& mDownloadClient.getCredentials() == null));
- //&& MainApp.getAuthTokenTypeSamlSessionCookie().equals(mDownloadClient.getAuthTokenType())));
+ tickerId = (needsToUpdateCredentials) ?
+ R.string.downloader_download_failed_credentials_error : tickerId;
+
+ mNotificationBuilder
+ .setTicker(getString(tickerId))
+ .setContentTitle(getString(tickerId))
+ .setAutoCancel(true)
+ .setOngoing(false)
+ .setProgress(0, 0, false);
+
if (needsToUpdateCredentials) {
+
// let the user update credentials with one click
Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, download.getAccount());
updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND);
mNotificationBuilder
.setContentIntent(PendingIntent.getActivity(
- this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT
- ))
- .setContentText(String.format(getString(contentId), new File(download.getSavePath()).getName()));
+ this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT));
+
mDownloadClient = null; // grant that future retries on the same account will get the fresh credentials
} else {
}
mNotificationBuilder
.setContentIntent(PendingIntent.getActivity(
- this, (int) System.currentTimeMillis(), showDetailsIntent, 0
- ))
- .setContentText(String.format(getString(contentId), new File(download.getSavePath()).getName()));
+ this, (int) System.currentTimeMillis(), showDetailsIntent, 0));
}
+
+ mNotificationBuilder.setContentText(ErrorMessageAdapter.getErrorCauseMessage(downloadResult, download, getResources()));
+
mNotificationManager.notify(tickerId, mNotificationBuilder.build());
}
}
import com.owncloud.android.ui.activity.InstantUploadActivity;
import com.owncloud.android.ui.preview.PreviewImageActivity;
import com.owncloud.android.ui.preview.PreviewImageFragment;
+import com.owncloud.android.utils.ErrorMessageAdapter;
import com.owncloud.android.utils.Log_OC;
import com.owncloud.android.utils.NotificationBuilderWithProgressBar;
))
.setTicker(getString(R.string.uploader_upload_succeeded_ticker))
.setContentTitle(getString(R.string.uploader_upload_succeeded_ticker))
- .setContentText(
- String.format(getString(R.string.uploader_upload_succeeded_content_single),
- upload.getFileName())
- );
+ .setContentText(ErrorMessageAdapter.getErrorCauseMessage(uploadResult, upload, getResources()));
mNotificationManager.notify(R.string.uploader_upload_in_progress_ticker, mNotificationBuilder.build()); // NOT
// AN
} else {
// / fail -> explicit failure notification
- mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
+ mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
+
NotificationCompat.Builder errorBuilder = new NotificationCompat.Builder(this);
- errorBuilder
- .setSmallIcon(R.drawable.notification_icon)
- .setTicker(getString(R.string.uploader_upload_failed_ticker))
- .setContentTitle(getString(R.string.uploader_upload_failed_ticker))
- .setAutoCancel(true);
- String content = null;
- boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED ||
- //(uploadResult.isTemporalRedirection() && uploadResult.isIdPRedirection() &&
+ String content = null;
+
+ // check credentials error
+ boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED ||
(uploadResult.isIdPRedirection() &&
mUploadClient.getCredentials() == null));
- //MainApp.getAuthTokenTypeSamlSessionCookie().equals(mUploadClient.getAuthTokenType())));
+ int tickerId = (needsToUpdateCredentials) ?
+ R.string.uploader_upload_failed_credentials_error : R.string.uploader_upload_failed_ticker;
+
+ errorBuilder
+ .setSmallIcon(R.drawable.notification_icon)
+ .setTicker(getString(tickerId))
+ .setContentTitle(getString(tickerId))
+ .setAutoCancel(true);
+
+ content = ErrorMessageAdapter.getErrorCauseMessage(uploadResult, upload, getResources());
+
if (needsToUpdateCredentials) {
// let the user update credentials with one click
Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
errorBuilder.setContentIntent(PendingIntent.getActivity(
this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT
));
- content = String.format(getString(R.string.uploader_upload_failed_content_single), upload.getFileName());
+
mUploadClient = null; // grant that future retries on the same account will get the fresh credentials
} else {
// TODO put something smart in the contentIntent below
-
- if (uploadResult.getCode() == ResultCode.LOCAL_STORAGE_FULL
- || uploadResult.getCode() == ResultCode.LOCAL_STORAGE_NOT_COPIED) {
- // TODO we need a class to provide error messages for the users
- // from a RemoteOperationResult and a RemoteOperation
- content = String.format(getString(R.string.error__upload__local_file_not_copied), upload.getFileName(),
- getString(R.string.app_name));
- } else if (uploadResult.getCode() == ResultCode.QUOTA_EXCEEDED) {
- content = getString(R.string.failed_upload_quota_exceeded_text);
- } else {
- content = String
- .format(getString(R.string.uploader_upload_failed_content_single), upload.getFileName());
- }
// we add only for instant-uploads the InstantUploadActivity and the
// db entry
}
errorBuilder.setContentText(content);
- mNotificationManager.notify(R.string.uploader_upload_failed_ticker, errorBuilder.build());
+ mNotificationManager.notify(tickerId, errorBuilder.build());
}
}
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
import com.owncloud.android.ui.dialog.LoadingDialog;
+import com.owncloud.android.utils.ErrorMessageAdapter;
import com.owncloud.android.utils.Log_OC;
Intent sendIntent = operation.getSendIntent();
startActivity(sendIntent);
- } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND
- Toast t = Toast.makeText(this, getString(R.string.share_link_file_no_exist), Toast.LENGTH_LONG);
- t.show();
- } else { // Generic error
- // Show a Message, operation finished without success
- Toast t = Toast.makeText(this, getString(R.string.share_link_file_error), Toast.LENGTH_LONG);
+ } else {
+ Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
t.show();
- }
+ }
}
if (result.isSuccess()){
updateFileFromDB();
- } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND
- Toast t = Toast.makeText(this, getString(R.string.unshare_link_file_no_exist), Toast.LENGTH_LONG);
- t.show();
- } else { // Generic error
- // Show a Message, operation finished without success
- Toast t = Toast.makeText(this, getString(R.string.unshare_link_file_error), Toast.LENGTH_LONG);
+ } else {
+ Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
t.show();
- }
-
+ }
}
import com.owncloud.android.ui.preview.PreviewMediaFragment;
import com.owncloud.android.ui.preview.PreviewVideoActivity;
import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.ErrorMessageAdapter;
import com.owncloud.android.utils.Log_OC;
*/
private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) {
dismissLoadingDialog();
+
+ Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
+ msg.show();
+
if (result.isSuccess()) {
- Toast msg = Toast.makeText(this, R.string.remove_success_msg, Toast.LENGTH_LONG);
- msg.show();
OCFile removedFile = operation.getFile();
FileFragment second = getSecondFragment();
if (second != null && removedFile.equals(second.getFile())) {
}
invalidateOptionsMenu();
} else {
- Toast msg = Toast.makeText(this, R.string.remove_fail_msg, Toast.LENGTH_LONG);
- msg.show();
if (result.isSslRecoverableException()) {
mLastSslUntrustedServerResult = result;
showUntrustedCertDialog(mLastSslUntrustedServerResult);
refreshListOfFilesFragment();
} else {
dismissLoadingDialog();
- if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) {
- Toast.makeText(FileDisplayActivity.this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show();
- } else {
try {
- Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG);
+ Toast msg = Toast.makeText(FileDisplayActivity.this,
+ ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
msg.show();
} catch (NotFoundException e) {
Log_OC.e(TAG, "Error while trying to show fail message " , e);
}
- }
}
}
}
} else {
- if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) {
- Toast msg = Toast.makeText(this, R.string.rename_local_fail_msg, Toast.LENGTH_LONG);
- msg.show();
- // TODO throw again the new rename dialog
- } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) {
- Toast msg = Toast.makeText(this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG);
- msg.show();
- } else {
- Toast msg = Toast.makeText(this, R.string.rename_server_fail_msg, Toast.LENGTH_LONG);
- msg.show();
- if (result.isSslRecoverableException()) {
- mLastSslUntrustedServerResult = result;
- showUntrustedCertDialog(mLastSslUntrustedServerResult);
- }
+ Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
+ msg.show();
+
+ if (result.isSslRecoverableException()) {
+ mLastSslUntrustedServerResult = result;
+ showUntrustedCertDialog(mLastSslUntrustedServerResult);
}
}
}
onTransferStateChanged(syncedFile, true, true);
} else {
- Toast msg = Toast.makeText(this, R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG);
+ Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast.LENGTH_LONG);
msg.show();
}
}
\r
fileName.setText(name);\r
ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);\r
- fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype()));\r
+ fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);\r
FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
// set file details
setFilename(file.getFileName());
- setFiletype(file.getMimetype());
+ setFiletype(file.getMimetype(), file.getFileName());
setFilesize(file.getFileLength());
if(ocVersionSupportsTimeCreated()){
setTimeCreated(file.getCreationTimestamp());
* Updates the MIME type in view
* @param mimetype to set
*/
- private void setFiletype(String mimetype) {
+ private void setFiletype(String mimetype, String filename) {
TextView tv = (TextView) getView().findViewById(R.id.fdType);
if (tv != null) {
String printableMimetype = DisplayUtils.convertMIMEtoPrettyPrint(mimetype);;
}
ImageView iv = (ImageView) getView().findViewById(R.id.fdIcon);
if (iv != null) {
- iv.setImageResource(DisplayUtils.getResourceId(mimetype));
+ iv.setImageResource(DisplayUtils.getResourceId(mimetype, filename));
}
}
import java.util.HashSet;\r
import java.util.Set;\r
\r
+import android.util.Log;\r
+\r
import com.owncloud.android.R;\r
\r
/**\r
private static final String TYPE_VIDEO = "video";\r
\r
private static final String SUBTYPE_PDF = "pdf";\r
- private static final String[] SUBTYPES_DOCUMENT = { "msword", "mspowerpoint", "msexcel", \r
- "vnd.oasis.opendocument.presentation",\r
- "vnd.oasis.opendocument.spreadsheet",\r
- "vnd.oasis.opendocument.text"\r
+ private static final String[] SUBTYPES_DOCUMENT = { "msword",\r
+ "vnd.openxmlformats-officedocument.wordprocessingml.document",\r
+ "vnd.oasis.opendocument.text",\r
+ "rtf"\r
};\r
private static Set<String> SUBTYPES_DOCUMENT_SET = new HashSet<String>(Arrays.asList(SUBTYPES_DOCUMENT));\r
+ private static final String[] SUBTYPES_SPREADSHEET = { "msexcel",\r
+ "vnd.openxmlformats-officedocument.spreadsheetml.sheet",\r
+ "vnd.oasis.opendocument.spreadsheet"\r
+ };\r
+ private static Set<String> SUBTYPES_SPREADSHEET_SET = new HashSet<String>(Arrays.asList(SUBTYPES_SPREADSHEET));\r
+ private static final String[] SUBTYPES_PRESENTATION = { "mspowerpoint",\r
+ "vnd.openxmlformats-officedocument.presentationml.presentation",\r
+ "vnd.oasis.opendocument.presentation"\r
+ };\r
+ private static Set<String> SUBTYPES_PRESENTATION_SET = new HashSet<String>(Arrays.asList(SUBTYPES_PRESENTATION));\r
private static final String[] SUBTYPES_COMPRESSED = {"x-tar", "x-gzip", "zip"};\r
private static final Set<String> SUBTYPES_COMPRESSED_SET = new HashSet<String>(Arrays.asList(SUBTYPES_COMPRESSED));\r
+ private static final String SUBTYPE_OCTET_STREAM = "octet-stream";\r
+ private static final String EXTENSION_RAR = "rar";\r
+ private static final String EXTENSION_RTF = "rtf";\r
+ private static final String EXTENSION_3GP = "3gp";\r
\r
/**\r
* Converts the file size in bytes to human readable output.\r
* @param mimetype MIME type string.\r
* @return Resource identifier of an image resource.\r
*/\r
- public static int getResourceId(String mimetype) {\r
+ public static int getResourceId(String mimetype, String filename) {\r
\r
if (mimetype == null || "DIR".equals(mimetype)) {\r
return R.drawable.ic_menu_archive;\r
} else if (SUBTYPES_DOCUMENT_SET.contains(subtype)) {\r
return R.drawable.file_doc;\r
\r
+ } else if (SUBTYPES_SPREADSHEET_SET.contains(subtype)) {\r
+ return R.drawable.file_xls;\r
+\r
+ } else if (SUBTYPES_PRESENTATION_SET.contains(subtype)) {\r
+ return R.drawable.file_ppt;\r
+\r
} else if (SUBTYPES_COMPRESSED_SET.contains(subtype)) {\r
return R.drawable.file_zip;\r
- }\r
- \r
+ \r
+ } else if (SUBTYPE_OCTET_STREAM.equals(subtype) ) {\r
+ if (getExtension(filename).equalsIgnoreCase(EXTENSION_RAR)) {\r
+ return R.drawable.file_zip;\r
+ \r
+ } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_RTF)) {\r
+ return R.drawable.file_doc;\r
+ \r
+ } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_3GP)) {\r
+ return R.drawable.file_movie;\r
+ \r
+ } \r
+ } \r
}\r
- // problems: RAR, RTF, 3GP are send as application/octet-stream from the server ; extension in the filename should be explicitly reviewed\r
}\r
\r
// default icon\r
}\r
\r
\r
-\r
+ private static String getExtension(String filename) {\r
+ String extension = filename.substring(filename.lastIndexOf(".") + 1);\r
+ \r
+ return extension;\r
+ }\r
+ \r
/**\r
* Converts Unix time to human readable format\r
* @param miliseconds that have passed since 01/01/1970\r
--- /dev/null
+/* ownCloud Android client application
+ * Copyright (C) 2014 ownCloud Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+package com.owncloud.android.utils;
+
+import java.io.File;
+import java.net.SocketTimeoutException;
+import org.apache.commons.httpclient.ConnectTimeoutException;
+import android.content.res.Resources;
+
+import com.owncloud.android.R;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.operations.CreateFolderOperation;
+import com.owncloud.android.operations.CreateShareOperation;
+import com.owncloud.android.operations.DownloadFileOperation;
+import com.owncloud.android.operations.RemoveFileOperation;
+import com.owncloud.android.operations.RenameFileOperation;
+import com.owncloud.android.operations.SynchronizeFileOperation;
+import com.owncloud.android.operations.UnshareLinkOperation;
+import com.owncloud.android.operations.UploadFileOperation;
+
+/**
+ * Class to choose proper error messages to show to the user depending on the results of operations, always following the same policy
+ *
+ * @author masensio
+ *
+ */
+
+public class ErrorMessageAdapter {
+
+ public ErrorMessageAdapter() {
+
+ }
+
+ public static String getErrorCauseMessage(RemoteOperationResult result, RemoteOperation operation, Resources res) {
+
+ String message = null;
+
+ if (operation instanceof UploadFileOperation) {
+
+ if (result.isSuccess()) {
+ message = String.format(res.getString(R.string.uploader_upload_succeeded_content_single),
+ ((UploadFileOperation) operation).getFileName());
+ } else {
+ if (result.getCode() == ResultCode.LOCAL_STORAGE_FULL
+ || result.getCode() == ResultCode.LOCAL_STORAGE_NOT_COPIED) {
+ message = String.format(res.getString(R.string.error__upload__local_file_not_copied),
+ ((UploadFileOperation) operation).getFileName());
+
+ } else if (result.getCode() == ResultCode.QUOTA_EXCEEDED) {
+ message = res.getString(R.string.failed_upload_quota_exceeded_text);
+
+ } else {
+ message = String.format(res.getString(R.string.uploader_upload_failed_content_single),
+ ((UploadFileOperation) operation).getFileName());
+ }
+ }
+
+ } else if (operation instanceof DownloadFileOperation) {
+
+ if (result.isSuccess()) {
+ message = String.format(res.getString(R.string.downloader_download_succeeded_content),
+ new File(((DownloadFileOperation) operation).getSavePath()).getName());
+
+ } else {
+ message = String.format(res.getString(R.string.downloader_download_failed_content),
+ new File(((DownloadFileOperation) operation).getSavePath()).getName());
+ }
+
+ } else if (operation instanceof RemoveFileOperation) {
+ if (result.isSuccess()) {
+ message = res.getString(R.string.remove_success_msg);
+
+ } else {
+ if (isNetworkError(result.getCode())) {
+ message = getErrorMessage(result, res);
+
+ } else {
+ message = res.getString(R.string.remove_fail_msg);
+ }
+ }
+
+ } else if (operation instanceof RenameFileOperation) {
+ if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) {
+ message = res.getString(R.string.rename_local_fail_msg);
+
+ } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) {
+ message = res.getString(R.string.filename_forbidden_characters);
+
+ } else if (isNetworkError(result.getCode())) {
+ message = getErrorMessage(result, res);
+
+ } else {
+ message = res.getString(R.string.rename_server_fail_msg);
+ }
+
+ } else if (operation instanceof SynchronizeFileOperation) {
+ if (!((SynchronizeFileOperation) operation).transferWasRequested()) {
+ message = res.getString(R.string.sync_file_nothing_to_do_msg);
+ }
+
+ } else if (operation instanceof CreateFolderOperation) {
+ if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) {
+ message = res.getString(R.string.filename_forbidden_characters);
+
+ } else if (isNetworkError(result.getCode())) {
+ message = getErrorMessage(result, res);
+
+ } else {
+ message = res.getString(R.string.create_dir_fail_msg);
+ }
+ } else if (operation instanceof CreateShareOperation) {
+ if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND
+ message = res.getString(R.string.share_link_file_no_exist);
+
+ } else if (isNetworkError(result.getCode())) {
+ message = getErrorMessage(result, res);
+
+ } else { // Generic error
+ // Show a Message, operation finished without success
+ message = res.getString(R.string.share_link_file_error);
+ }
+
+ } else if (operation instanceof UnshareLinkOperation) {
+
+ if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND
+ message = res.getString(R.string.unshare_link_file_no_exist);
+
+ } else if (isNetworkError(result.getCode())) {
+ message = getErrorMessage(result, res);
+
+ } else { // Generic error
+ // Show a Message, operation finished without success
+ message = res.getString(R.string.unshare_link_file_error);
+ }
+ }
+
+ return message;
+ }
+
+ private static String getErrorMessage(RemoteOperationResult result , Resources res) {
+
+ String message = null;
+
+ if (!result.isSuccess()) {
+
+ if (result.getCode() == ResultCode.WRONG_CONNECTION) {
+ message = res.getString(R.string.network_error_socket_exception);
+
+ } else if (result.getCode() == ResultCode.TIMEOUT) {
+ message = res.getString(R.string.network_error_socket_exception);
+
+ if (result.getException() instanceof SocketTimeoutException) {
+ message = res.getString(R.string.network_error_socket_timeout_exception);
+ } else if(result.getException() instanceof ConnectTimeoutException) {
+ message = res.getString(R.string.network_error_connect_timeout_exception);
+ }
+
+ } else if (result.getCode() == ResultCode.HOST_NOT_AVAILABLE) {
+ message = res.getString(R.string.network_host_not_available);
+ }
+ }
+
+ return message;
+ }
+
+ private static boolean isNetworkError(RemoteOperationResult.ResultCode code) {
+ if (code == ResultCode.WRONG_CONNECTION ||
+ code == ResultCode.TIMEOUT ||
+ code == ResultCode.HOST_NOT_AVAILABLE) {
+ return true;
+ }
+ else
+ return false;
+ }
+}