From: purigarcia Date: Tue, 28 Jul 2015 08:46:13 +0000 (+0200) Subject: merge develop X-Git-Tag: oc-android-1.8~54^2~1 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/f068a156c56122c3239d1af64e654280b49aff8b?hp=6b82b98abfde7f31fd6433295e9988ae447088a7 merge develop --- diff --git a/README.md b/README.md index dd75d3f2..c8bd71c3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,20 @@ -This is the Android client for [ownCloud][0]. +#This is the Android client for [ownCloud][0] The app performs file synchronization with an ownCloud server. Other ownCloud features may be added in the future, but they are not a priority right now. +## Build Status on +Git master: ![Build Status](https://api.travis-ci.org/owncloud/android.svg?branch=master) + +Git develop: ![Build Status](https://api.travis-ci.org/owncloud/android.svg?branch=develop) + +## Development + +### Project Setup Make sure you read [SETUP.md][1] when you start working on this project. [0]: https://github.com/owncloud/core [1]: https://github.com/owncloud/android/blob/master/SETUP.md + +### Contributing +Please see [Contribution Guidelines](https://owncloud.org/contribute/). Fork this repository and contribute back using +[pull requests](https://github.com/owncloud/android/pulls). All pull requests should be based on, and targeted to, the ['develop'](https://github.com/owncloud/android/tree/develop) branch. diff --git a/res/layout/file_details_fragment.xml b/res/layout/file_details_fragment.xml index 93983c2f..f5faa47b 100644 --- a/res/layout/file_details_fragment.xml +++ b/res/layout/file_details_fragment.xml @@ -160,16 +160,16 @@ > + android:text="@string/favorite" /> + + diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 8f4dcf09..b05bc336 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -163,7 +163,7 @@ الخادم الخاص بك لم يعد الإتصال بهويتك الصحيحة, الرجاء الإتصال بالمسؤول لا يمكن المصادقة من الخادم - جعل الملف محدثا + المفضلة إعادة التسمية حذف هل تريد حقاً حذف %1$s ؟ diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 2aa90a6e..f309a7d0 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -180,7 +180,7 @@ Aşağıda göstərilən %5$s-də olan daxili və xarici fayl(lar) link edilmiş Sizin server düzgün istifadəçi id-si qaytarmır, xahiş olunur inzibatçı ilə əlaqə saxlayasınız Bu serverdə yenidən qeydiyyatdan keçmək olmur Hesab göstərilən avadanlıqda mövcud deyil - Faylı gündəmdə saxla + İstəkli Adı dəyiş Sil Siz həqiqətən %1$s silmək istəyirsiniz? diff --git a/res/values-bg-rBG/strings.xml b/res/values-bg-rBG/strings.xml index 26caab07..2345520c 100644 --- a/res/values-bg-rBG/strings.xml +++ b/res/values-bg-rBG/strings.xml @@ -31,6 +31,7 @@ Още Профили Управление на профилите + Заключваща парола Незабавно качване на снимки Незабвано качване на снимки направени с камерата Незабавно качване на видео @@ -68,6 +69,7 @@ Качване преди секунди Тук няма нищо. Качете нещо! + Зарежда… Няма файлове в тази папка. Натисни върху файл, за да видиш допълнителна информация. Размер: @@ -135,6 +137,10 @@ Паролата ще се изисква при всяко стартиране на приложението Моля, въведи парола за достъп отново Премахни парола + Паролите не съвпадат + Грешна парола + Паролата премахната + Паролата е запаметена %1$s музикален плеър %1$s (пусната) %1$s (се зарежда) @@ -186,7 +192,8 @@ Вашият сървър не връща правилен потребителски индентификатор. Моля, свържете се с администратора. Неуспешен опит за оторизиране с този сървър. - Поддържане на файла обновен. + Профила не съществува на устройството все още + Любими Преименуване Премахване Наистина ли искате да изтриете %1$s ? @@ -204,11 +211,13 @@ Съдържанието на файла е вече синхронизирано Папката не може да бъде създадена Забранени символи: / \\ < > : \" | ? * + Името на файла съдържа поне един невалиден символ Името на файла не може да бъде празно Изчакайте малко Неочакван проблем; моля, изберете файла от друга програма. Не е избран файл Изпращане на връзката до... + Копира файла от личното хранилище Вписване с oAuth2 Свързване с оАутх2 сървър... Самоличността на сайта не може да бъде проверена. @@ -300,6 +309,19 @@ Сигурност Качване на видео път Свалянето на директорията %1$s не може да бъде завършено + споделен + с теб + %1$s споделен \"%2$s\" с теб Обнови връзката Адрес на сървъра + Няма достатъчно памет + Потребителско име + 1 папка + %1$d папки + 1 файл + 1 файл, 1 папка + 1 файл, %1$d папки + %1$d файла + %1$d файла, 1 папка + %1$d файла, %2$d папки diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml index fc387fc3..4a2c9458 100644 --- a/res/values-bn-rBD/strings.xml +++ b/res/values-bn-rBD/strings.xml @@ -165,7 +165,7 @@ আপনার সার্ভার একটি সঠিক ব্যবহারকারী আইডি দেয়না। দয়া করে প্রশাসকের সংগে যোগাযোগ করুন ⇥ এই সার্ভারের বিপরীতে অনুমোদন প্রদান করা গেলনা - ফাইল নবায়ন করে রাখুন + প্রিয়জন পূনঃনামকরণ অপসারণ আপনি কি সত্যিই %1$s অপসারণ করতে চান? diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index b3bc7a18..70c12904 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -29,6 +29,7 @@ Nepoznata greška Promijeni lozinku Kreiraj račun + Favorit Preimenuj Pošalji diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 5c1f9373..8bb9716f 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -171,7 +171,7 @@ %1$s no permet comptes múltiples El servidor no retorna una id d\'usuari correcta, contacteu amb l\'administrador. No es pot autenticar en aquest servidor - Mantén el fitxer actualitzat + Preferits Reanomena Elimina Esteu segur que voleu eliminar %1$s? diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index 5650885d..cbf7c380 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -69,6 +69,7 @@ Odesílání před pár sekundami Žádný obsah. Nahrajte něco! + Načítání... V tomto adresáři nejsou žádné soubory. Více informací získáte klepnutím na soubor. Velikost: @@ -191,7 +192,8 @@ Váš server nevrací správné přihlašovací ID, kontaktujte prosím svého správce systému Není možné provést ověření V zařízení není zatím nastaven účet - Udržovat soubor aktuální + Oblíbené + Odebrat z oblíbených Přejmenovat Odstranit Opravdu chcete odstranit %1$s ? @@ -314,4 +316,12 @@ správce systému. Adresa serveru Nedostatek paměti Uživatelské jméno + 1 adresář + %1$d adresáře(ů) + 1 soubor + 1 soubor, 1 adresář + 1 soubor, %1$d adresáře(ů) + %1$d soubory(ů) + %1$d soubory(ů), 1 adresář + %1$d soubory(ů), %2$d adresáře(ů) diff --git a/res/values-cy-rGB/strings.xml b/res/values-cy-rGB/strings.xml index 08b31ad2..46406023 100644 --- a/res/values-cy-rGB/strings.xml +++ b/res/values-cy-rGB/strings.xml @@ -88,7 +88,6 @@ Fersiwn gweinydd heb ei gydnabod Methwyd creu cysylltiad Sefydlwyd cysylltiad diogel - Cadw\'r ffeil yn gyfredol Ailenwi Gwaredu Lleol yn unig diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 3a74bb08..2bbf37b0 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -192,7 +192,8 @@ Din server retunere ikke et korrekt bruger-id. Kontakt venligst din administrator Kan ikke autentificere mod denne server Kontoen findes endnu ikke på enheden - Hold filen opdateret + Foretrukken + Fjern markering som foretrukket Omdøb Fjern Er du sikker på at du vil fjerne %1$s ? diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml index 4bac7016..f22872ea 100644 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@ -21,8 +21,12 @@ Biggest - Smallest--> + Alle Dateien + Einstellungen + Protokolle + Schließen Allgemein Mehr Konten @@ -65,6 +69,7 @@ Lade hoch Gerade eben Alles leer. Laden Sie etwas hoch! + Lade… Es befinden sich keine Dateien in diesem Ordner. Klicken Sie auf eine Datei für weitere Informationen. Größe: @@ -74,6 +79,7 @@ Herunterladen Datei aktualisieren Datei wurde wärend des Uploads zu %1$s umbenannt + Listen-Layout Link teilen Link nicht mehr teilen Ja @@ -187,7 +193,8 @@ ⇥ Die Legitimierung gegenüber dem Server konnte nicht durchgeführt werden Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden - Datei aktuell halten + Favorit + Nicht mehr favorisieren Umbenennen Löschen Möchten Sie %1$s wirklich löschen? @@ -205,6 +212,7 @@ Dateiinhalte bereits synchronisiert Ordner konnte nicht erstellt werden Verbotene Zeichen: / \\ < > : \" | ? * + Der Dateiname enthält mindestens ein ungültiges Zeichen Dateiname darf nicht leer sein Bitte warten Sie einen Moment. Ein unerwartetes Problem ist aufgetreten. Bitte versuchen Sie, die Datei in einer anderen App zu öffnen. @@ -302,7 +310,19 @@ Sicherheit Verzeichnis zum Hochladen der Videos Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden + geteilt + Mit Ihnen + %1$s hat \"%2$s\" mit Ihnen geteilt Verbindung aktualisieren Serveradresse Nicht genügend Speicher + Benutzername + 1 Ordner + %1$d Ordner + 1 Datei + 1 Datei, 1 Ordner + 1 Datei, %1$d Ordner + %1$d Dateien + %1$d Dateien, 1 Ordner + %1$d Dateien, %2$d Ordner diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e0ae5ccc..c9defa97 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -21,9 +21,12 @@ Biggest - Smallest--> + Alle Dateien Einstellungen + Protokolle + Schließen Allgemein Mehr Konten @@ -66,6 +69,7 @@ Lade hoch Gerade eben Alles leer. Lade etwas hoch! + Lade… Es befinden sich keine Dateien in diesem Ordner. Klicken Sie auf eine Datei für weitere Informationen. Größe: @@ -75,6 +79,7 @@ Herunterladen Datei aktualisieren Datei wurde wärend des Uploads zu %1$s umbenannt + Listen-Layout Link teilen Link nicht mehr freigeben Ja @@ -188,7 +193,8 @@ Die Authentifizierung gegenüber dem Server konnte nicht durchgeführt werden Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden - Datei aktuell halten + Favorisieren + Favorit entfernen Umbenennen Löschen Möchtest Du %1$s wirklich löschen? @@ -206,6 +212,7 @@ Dateiinhalte bereits synchronisiert Verzeichnis konnte nicht erstellt werden Verbotene Zeichen: / \\ < > : \" | ? * + Der Dateiname enthält mindestens ein ungültiges Zeichen Dateiname darf nicht leer sein Bitte warte einen Moment. Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen @@ -303,7 +310,19 @@ Sicherheit Verzeichnis zum Hochladen der Videos Herunterladen des %1$s - Ordners konnte nicht abgeschlossen werden + geteilt + Mit Dir + %1$s hat \"%2$s\" mit Dir geteilt Verbindung aktualisieren Serveradresse Nicht genügend Speicher + Benutzername + 1 Ordner + %1$d Ordner + 1 Datei + 1 Datei, 1 Ordner + 1 Datei, %1$d Ordner + %1$d Dateien + %1$d Dateien, 1 Ordner + %1$d Dateien, %2$d Ordner diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 24b78f02..3888bf41 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -69,6 +69,7 @@ Μεταφόρτωση δευτερόλεπτα πριν Δεν υπάρχει τίποτα εδώ. Μεταφορτώστε κάτι! + Φόρτωση... Δεν υπάρχουν αρχεία σε αυτό τον φάκελο. Αγγίξτε κάποιο αρχείο για να προβάλετε περισσότερες πληροφορίες. Μέγεθος: @@ -192,7 +193,8 @@ ⇥ Δεν είναι δυνατή η πιστοποίηση με αυτόν το διακομιστή Ο λογαριασμός δεν υπάρχει στη συσκευή ακόμα. - Διατήρηση αρχείου σε ενημέρωση + Αγαπημένο + Κατάργηση από τα αγαπημένα Μετονομασία Αφαίρεση Θέλετε στ\' αλήθεια να αφαιρέσετε το %1$s; @@ -315,4 +317,12 @@ Διεύθυνση διακομιστή Δεν υπάρχει αρκετή μνήμη Όνομα χρήστη + 1 φάκελος + %1$d φάκελοι + 1 αρχείο + 1 αρχείο, 1 φάκελος + 1 αρχείο, %1$d φάκελοι + %1$d αρχεία + %1$d αρχεία, 1 φάκελος + %1$d αρχεία, %2$d φάκελοι diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 4962f36c..3227e4ac 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -187,7 +187,8 @@ Cannot authenticate against this server Account does not exist in the device yet - Keep file up to date + Favourite + Unfavourite Rename Remove Do you really want to remove %1$s? diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml index 16a3ba4b..44511d59 100644 --- a/res/values-eo/strings.xml +++ b/res/values-eo/strings.xml @@ -117,7 +117,8 @@ Bonvolu enigi la nunan pasvorton Konektante al aŭtentiga servilo... La servilo ne kongruas kun ĉi tiu aŭtentiga metodo - Teni dosieron ĝisdatigita + Favorato + Nefavoratigi Alinomigi Forigi Ĉu vi vere volas forigi %1$s? diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml index dad8b113..b8dbcb26 100644 --- a/res/values-es-rAR/strings.xml +++ b/res/values-es-rAR/strings.xml @@ -173,7 +173,7 @@ %1$s no soporta múltiples cuentas Tú servidor no esta regresando una identificación de usuario correcta, por favor contacta a un administrador No se puede autenticar contra este servidor - Mantener el archivo actualizado + Favorito Renombrar Borrar ¿Realmente quieres eliminar %1$s? diff --git a/res/values-es-rCL/strings.xml b/res/values-es-rCL/strings.xml index 6417313c..f80e9728 100644 --- a/res/values-es-rCL/strings.xml +++ b/res/values-es-rCL/strings.xml @@ -111,7 +111,6 @@ No se pudo establecer la conexión Conexión segura establecida usuario o clave incorrecta - Mantener el archivo actualizado Renombrar Remover ¿Realmente desea eliminar %1$s? diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml index d64bf3e3..6ee60a6f 100644 --- a/res/values-es-rMX/strings.xml +++ b/res/values-es-rMX/strings.xml @@ -149,7 +149,7 @@ Conectando al servidor de autenticación... El servidor no soporta este método de autenticación %1$s no soporta cuentas múltiples - Mantener el archivo actualizado + Favorito Renombrar Borrar Sólo local diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 0b5d960b..1e361c3b 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -193,7 +193,8 @@ No puede autenticarse en este servidor. Aún no existe la cuenta en el dispositivo - Mantener el archivo actualizado + Favorito + No-favorito Renombrar Borrar ¿Realmente desea eliminar %1$s? diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index 79cbdfb7..0659c4cb 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -196,7 +196,8 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi ⇥ Ei suuda autoriseerida selle serveriga. Kontot pole veel seadmes - Hoia faili ajakohasena + Lemmik + Eemalda lemmik Nimeta ümber Eemalda Oled sa kindel, et soovid %1$s eemaldada? diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 4ecfa325..2f363ce0 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -173,7 +173,7 @@ Mesedez, baimendu berriz %1$s ez du kontu anitzak onartzen Zure zerbitzariak ez du bueltatzen erabiltzailearen id egokia, mesedez jarri harremanetan administratzailearekin. Ezin da autentikatu zerbitzarian. - Mantendu fitxategia eguneratuta + Gogokoa Berrizendatu Ezabatu Ziur zaude %1$s ezabatu nahi duzula? diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 1d9d5584..79e2fdae 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -151,7 +151,6 @@ اتصال به سرور احراز هویت... سرور این نوع احراز هویت را پشتیبانی نمی‌کند %1$s چند اکانته بودن را پشتیبانی نمی‌کند - فایل را به روز نگه دار تغییرنام حذف فقط محلی diff --git a/res/values-fi-rFI/strings.xml b/res/values-fi-rFI/strings.xml index af3078de..1a723721 100644 --- a/res/values-fi-rFI/strings.xml +++ b/res/values-fi-rFI/strings.xml @@ -69,6 +69,7 @@ Lähetetään sekuntia sitten Täällä ei ole mitään. Lähetä tänne jotakin! + Ladataan… Tässä kansiossa ei ole tiedostoja Napauta tiedostoa nähdäksesi lisätietoja. Koko: @@ -183,7 +184,8 @@ %1$s ei tue useita tilejä Tunnistautuminen palvelinta vastaan ei onnistu Tiliä ei ole olemassa vielä laitteella - Pidä tiedosto ajan tasalla + Suosikit + Poista suosikeista Nimeä uudelleen Poista Haluatko varmasti poistaa kohteen %1$s? @@ -296,4 +298,12 @@ Palvelimen osoite Muistia ei ole riittävästi Käyttäjätunnus + 1 kansio + %1$d kansiota + 1 tiedosto + 1 tiedosto, 1 kansio + 1 tiedosto, %1$d kansiota + %1$d tiedostoa + %1$d tiedostoa, 1 kansio + %1$d tiedostoa, %2$d kansiota diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 011ac8c1..f5034317 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -72,7 +72,7 @@ Téléchargez-le ici : %2$s Il n\'y a rien ici ! Envoyez donc quelque chose :) Chargement... Aucun fichier n\'est présent dans ce dossier. - Effleurez un fichier pour afficher les informations complémentaires. + Touchez un fichier pour afficher les informations complémentaires. Taille : Type : Créé le : @@ -198,7 +198,8 @@ Ci-dessous la liste des fichiers locaux, et les fichiers distants dans %5$s auxq Impossible de s\'authentifier sur ce serveur Le compte n\'existe pas encore sur ce périphérique - Maintenir le fichier à jour + Ajouter aux favoris + Supprimer des favoris Renommer Supprimer Voulez-vous vraiment supprimer %1$s ? diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 32ffce7a..4e2e97bf 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -194,7 +194,8 @@ Descárgueo de aquí: %2$s Non pode autenticarse neste servidor Aínda non existe a conta no dispositivo - Manter actualizado o ficheiro + Favorito + Retirar de favoritos Renomear Retirar Confirma que quere retirar %1$s? diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index 1f7bc3f2..7dda3d9e 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -166,7 +166,7 @@ השרת אינו מחזיר מספר משתמש נכון, יש ליצור קשר עם מנהל ⇥ לא מצליח לאמת מול השרת - לשמור על קובץ עדכני + מועדף שינוי שם הסרה האם באמת להסיר %1$s? diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index a380515c..1ada651c 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -53,6 +53,7 @@ Izmjena lozinke Naziv mape Trying to login… + Favorit Promjeni ime Makni Detalji diff --git a/res/values-hu-rHU/strings.xml b/res/values-hu-rHU/strings.xml index a3c3a248..5be77c20 100644 --- a/res/values-hu-rHU/strings.xml +++ b/res/values-hu-rHU/strings.xml @@ -161,7 +161,8 @@ A kiszolgáló nem támogatja ezt a felhasználóazonosítási módszert %1$s nem támogat több bejelenkezési jogosultságot Nem tudod hitelesíteni magadat ezen a szerveren - Automatikusan frissítse a fájlokat + Kedvenc + Nem kedvenc Átnevezés Eltávolítás Tényleg el akarod távolítani %1$s? diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml index 2691aa92..2d2b171e 100644 --- a/res/values-id/strings.xml +++ b/res/values-id/strings.xml @@ -193,7 +193,8 @@ Tidak dapat mengotentikasi pada server ini Akun tidak ada di perangkat ini - Biarkan berkas tetap terbaru + Favorit + Hapus favorit Ubah nama Hapus Apakah Anda yakin ingin menghapus %1$s? diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 74317abe..efee1eb6 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -193,7 +193,8 @@ Impossibile eseguire l\'autenticazione su questo server L\'account non esiste ancora sul dispositivo - Tieni aggiornato il file + Preferito + Rimuovi dai preferiti Rinomina Rimuovi Vuoi davvero rimuovere %1$s? diff --git a/res/values-ja-rJP/strings.xml b/res/values-ja-rJP/strings.xml index 7e49a84b..ef640859 100644 --- a/res/values-ja-rJP/strings.xml +++ b/res/values-ja-rJP/strings.xml @@ -70,6 +70,7 @@ アップロード中 数秒前 ここには何もありません。何かアップロードしてください。 + 読込中... このフォルダーにはファイルがありません。 ファイルをタップすると追加情報が表示されます。 サイズ: @@ -79,6 +80,7 @@ ダウンロード ファイルを同期 アップロード中にファイル名を %1$s に変更しました + リストレイアウト URLで共有 未共有のリンク はい @@ -131,9 +133,12 @@ ローカル: %1$s リモート: %1$s 十分なスペースがないため、選択されたファイルを %1$s フォルダーにコピーすることができません。コピーする代わりに、それらを移動させますか? + パスコードを入力してください パスコードを入力 + アプリ開始時には毎回パスコードが要求されます パスコードを再入力してください パスコードを削除 + パスコードが一致しません パスコードが正しくありません パスコードを削除しました パスコードを保存しました @@ -189,7 +194,8 @@ このサーバーに対して認証できません デバイス上にまだアカウントが存在しません - ファイルを最新に保つ + お気に入り + お気に入りを解除 名前を変更 削除 本当に %1$s を削除しますか? @@ -207,11 +213,13 @@ ファイルコンテンツはすでに同期されています フォルダーを作成できませんでした 使用できない文字: / \\ < > : \" | ? * + ファイル名に1文字以上の無効な文字が含まれています ファイル名を空にすることはできません。 しばらくお待ちください 予期せぬ問題;他のアプリでファイルを選択してみてください。 ファイルは選択されていません リンクを送信… + プライベートストレージからファイルをコピー中 oAuth2でログイン oAuth2サーバーに接続中... サイトの識別子を確認できませんでした @@ -303,6 +311,19 @@ セキュリティ 動画のアップロードパス %1$s フォルダーのダウンロードが完了しませんでした + 共有中 + あなたと + %1$s は \"%2$s\" をあなたと共有しました 再接続中 サーバーアドレス + 十分なメモリがありません + ユーザー名 + 1 フォルダー + %1$d フォルダー + 1 ファイル + 1 ファイル、1 フォルダー + 1 ファイル、%1$d フォルダー + %1$d ファイル + %1$d ファイル、1 フォルダー + %1$d ファイル、%2$d フォルダー diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index 7a1987e1..d924b4e3 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -95,7 +95,7 @@ ამოუცნობი სერვერის ვერსია კავშირის დამყარება ვერ მოხერხდა დაცული კავშირი დამყარდა - არ განაახლო ფაილი + ფავორიტი გადარქმევა წაშლა მხოლოდ ლოკალური diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 89bcc038..05de5dbc 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -81,7 +81,6 @@ កំពុង​​តែ​ព្យាយាម​ដើម្បី​ចូល... គ្មានបណ្តាញ​តភ្ជាប់ទេ មិនស្គាល់កំហុសបានកើតឡើង! - រក្សាឯកសាររហូតដល់កាលបរិច្ឆេទ ប្ដូរ​ឈ្មោះ ដកចេញ ទីកន្លែងតែមួយ diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 1e0b2fc5..056406d3 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -29,6 +29,7 @@ ತಪ್ಪಾಗಿದೆ ಗೊತ್ತಿಲ್ಲದ ದೋಷ ಗುಪ್ತ ಪದವನ್ನು ಬದಲಾಯಿಸಿ + ಅಚ್ಚುಮೆಚ್ಚಿನ ಮರುಹೆಸರಿಸು ತೆಗೆದುಹಾಕಿ ಕಳುಹಿಸಿ diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 31d878d5..b7a24f7a 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -21,8 +21,12 @@ Biggest - Smallest--> + 모든 파일 + 설정 + 로그 + 닫기 일반 더 보기 계정 @@ -65,6 +69,7 @@ 업로드 중 초 지남 내용이 없습니다. 업로드할 수 있습니다! + 불러오는 중... 이 폴더에 파일이 없습니다. 파일을 누르면 추가 정보가 표시됩니다. 크기: @@ -74,6 +79,7 @@ 다운로드 파일 새로 고침 업로드 중 파일 이름을 %1$s(으)로 변경하였습니다 + 목록 레이아웃 링크 공유 링크 공유 해제 예 @@ -187,7 +193,8 @@ 이 서버에 인증할 수 없음 장치에 아직 계정이 없음 - 파일을 최신 정보로 유지 + 책갈피 + 책갈피 해제 이름 바꾸기 삭제 %1$s을(를) 삭제하시겠습니까? @@ -205,6 +212,7 @@ 파일 내용이 이미 동기화됨 폴더를 만들 수 없음 사용할 수 없는 문자: / \\ < > : \" | ? * + 파일 이름에 하나 이상의 사용할 수 없는 문자가 포함되어 있음 파일 이름이 비어 있을 수 없음 잠시 기다려 주십시오 예상하지 못한 오류입니다. 다른 앱에서 파일을 선택하십시오 @@ -301,6 +309,19 @@ 보안 동영상 업로드 경로 폴더 %1$s을(를) 다운로드할 수 없음 + 공유됨 + 여러분과 + %1$s 님이 \"%2$s\" 항목을 여러분과 공유하였습니다 연결 새로 고침 서버 주소 + 메모리 부족 + 사용자 이름 + 폴더 1개 + 폴더 %1$d개 + 파일 1개 + 파일 1개, 폴더 1개 + 파일 1개, 폴더 %1$d개 + 파일 %1$d개 + 파일 %1$d개, 폴더 1개 + 파일 %1$d개, 폴더 %2$d개 diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml index 6e42804c..1491e191 100644 --- a/res/values-lb/strings.xml +++ b/res/values-lb/strings.xml @@ -140,7 +140,6 @@ Gëff w.e.g. däin aktuellt Passwuert an Deng Sessioun ass ofgelaf. Connectéier dech nei w.e.g. De Server ënnerstëtzt dës Authentifizéierungsmethod net - Fichier aktuell halen Ëmbenennen Läschen Wëlls du %1$s wierklech läschen? diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml index ca6e3d09..ae7c8ce0 100644 --- a/res/values-lt-rLT/strings.xml +++ b/res/values-lt-rLT/strings.xml @@ -166,7 +166,7 @@ Serveris nepalaiko šio autentikacijos metodo %1$s nepalaiko kelių paskyrų iš karto Jungiamasi prie autentikacijos serverio... - Laikyti failą naujinamą + Mėgiamas Pervadinti Pašalinti Ar tikrai norite pašalinti %1$s? diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 7ebe54a9..e2099a31 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -113,7 +113,7 @@ Neatpazīta servera versija Nevarēja izveidot savienojumu Ir izveidots drošs savienojums - Uzturēt datni aktuālu + Iecienītais Pārsaukt Izņemt Tikai lokālos diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index e8a8b1ab..4bc0267b 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -187,7 +187,6 @@ Не можам да се авторизирам на овој сервер Сметката сеуште не постои на овој уред - Чувај ги датотеките ажурно Преименувај Отстрани Дали навистина сакаш да ја отстраниш %1$s? diff --git a/res/values-nb-rNO/strings.xml b/res/values-nb-rNO/strings.xml index 4bd6c0c3..3af14603 100644 --- a/res/values-nb-rNO/strings.xml +++ b/res/values-nb-rNO/strings.xml @@ -193,7 +193,8 @@ Kan ikke autentisere mot denne serveren Kontoen eksisterer ikke på enheten enda - Hold filen oppdatert + Gjør til favoritt + Fjern favoritt Endre navn Fjern Vil du virkelig fjerne %1$s? diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 423714c6..c82b84c7 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -196,7 +196,8 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar Kan niet authenticeren tegen deze server Het account bestaat nog niet in dit apparaat - Houd bestand actueel + Favoriet + Niet meer favoriet Hernoemen Verwijderen Wilt u %1$s werkelijk verwijderen? diff --git a/res/values-nn-rNO/strings.xml b/res/values-nn-rNO/strings.xml index c2c1a90d..b99a6204 100644 --- a/res/values-nn-rNO/strings.xml +++ b/res/values-nn-rNO/strings.xml @@ -101,7 +101,7 @@ Feil ved SSL-oppstart Klarte ikkje å oppretta ei tilkopling Trygg tilkopling oppretta - Hald fila oppdatert + Favoritt Endra namn Fjern Berre lokalt diff --git a/res/values-oc/strings.xml b/res/values-oc/strings.xml index b3b4814d..69f2d181 100644 --- a/res/values-oc/strings.xml +++ b/res/values-oc/strings.xml @@ -53,6 +53,7 @@ Al avalcargar ... Capitada d\'avalcargar Causís lo compte + Apondre als favorits Torna nomenar Suprimir País : diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index a206eb77..10295f22 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -86,7 +86,6 @@ ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ ਹੈ ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ ਆਪਣਾ ਮੌਜੂਦਾ ਪਾਸਵਰਡ ਦਿਉ ਜੀ - ਫਾਇਲ ਨੂੰ ਅੱਪ ਟੂ ਡੇਟ ਰੱਖੋ ਨਾਂ ਬਦਲੋ ਹਟਾਓ ਕੇਵਲ ਲੋਕਲ diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index e5eec0d6..6e634af6 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -188,7 +188,8 @@ Nie można autoryzować przy użyciu tego serwera Konto nie istnieje jeszcze na tym urządzeniu - Automatyczne aktualizuj plik + Ulubione + Usuń z ulubionych Zmień nazwę Usuń Czy naprawdę chcesz usunąć %1$s? diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 6bee7d30..56a6bfdf 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -193,7 +193,8 @@ ⇥ Não foi possível autenticar neste servidor Conta ainda não existe no dispositivo - Manter arquivo atualizado + Favorito + Nãofavorito Renomear Remover Você realmente deseja remover %1$s? diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index c5d104ea..dc327076 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -179,7 +179,8 @@ O seu servidor não transmite o ID correcto. Por favor contacte o administrador. Não foi possível autenticar no servidor Conta ainda não existe no dispositivo - manter ficheiro actualizado + Favorito + Retirar Favorito Renomear Remover Tem a certeza que deseja remover %1$s ? diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 49c4296d..8d6ac632 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -21,12 +21,17 @@ Biggest - Smallest--> + Toate fișierele + Setări + Înregistrări + Închide General Mai mult Conturi Administrare conturi + Parolă blocare Încărcare instantă de imagini Încarcă instantant imagini luate cu camera Încărcare instantă de videoclipuri. @@ -64,6 +69,7 @@ Încărcare secunde în urmă Nimic aici. Încarcă ceva! + Se încarcă... In acest folder nu sunt fisiere. Selectati un fisier pentru a afisa informatia aditionala Mărime: @@ -73,6 +79,7 @@ Descarcă Împrospătare fişier Fișierul a fost redenumit %1$s în timpul încărcării + Aspect listă Share link Unshare link Da @@ -126,6 +133,15 @@ La distanta: %1$s Nu este suficient spațiu pentru a copia fișierele selectate în dosarul %1$s . Dorești să le muți în loc? + Te rugăm să introduci parola + Introdu parola + Parola va fi solicitată de fiecare dată când deschideți aplicația + Te rugăm să reintroduci parola + Șterge parola + Parolele nu se potrivesc + Parolă incorectă + Parolă ștearsă + Parolă stocată %1$s player de muzică %1$s (cântă) %1$s (încarcă) @@ -177,7 +193,7 @@ Server-ul dvs. nu întoarce un ID de utilizator corect, vă rugăm să contactați un administrator Nu se poate autentifica cu acest server Contul nu există încă în dispozitiv - Păstrează fișierul actualizat + Favorit Redenumește Elimină Doriti sigur sa stergeti %1$s? @@ -195,11 +211,13 @@ Continutul fisierului este deja sincronizat Nu a putut fi creat directorul Caractere interzise: / \\ < > : \" | ? * + Numele fișierului conține măcar un caracter invalid Numele fișierului nu poate fi gol. Așteaptă un moment Problema neasteptata ; selectati fisierul dintr-o aplicatie diferita Nu a fost selectat nici un fișier Trimite link la ... + Copiere fișier din stocare privată Întră în cont cu oAuth2 Se conectează la serverul oAuth2... Nu s-a putut verifica identitatea site-ului @@ -290,6 +308,19 @@ Securitate Calea de încărcare Video Descărcarea fișierului %1$s nu s-a finisat + partajat + cu tine + %1$s a partajat fișierul \"%2$s\" cu tine Reîmprospătează conexiunea Adresa server-ului + Memorie insuficientă + Utilizator + 1 folder + %1$d foldere + 1 fișier + 1 fișier, 1 folder + 1 fișier, %1$d foldere + %1$d fișiere + %1$d fișiere, 1 folder + %1$d fișiere, %2$d foldere diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index a45e359d..e9aa20c4 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -68,8 +68,9 @@ Содержимое не получено. Нечего загружать. Доступ к общему ресурсу для %1$s запрещен Загрузка - пару секунд назад + несколько секунд назад Здесь ничего нет. Загрузите что-нибудь! + Загрузка... В этом каталоге нет файлов. Нажмите на файл для отображения дополнительной информации. Размер: @@ -123,7 +124,7 @@ Не удалось синхронизировать файлы Содержимое %1$d файлов не может быть синхронизировано (конфликтов: %2$d) Некоторые загруженные файлы не были перенесены в локальную папку - Невозможно скопировать %1$d файлов из папки %2$s + Не удалось скопировать %1$d файлов из каталога %2$s в Начиная с версии 1.3.16, файлы, загружаемые с этого устройства, копируются в локальный каталог %1$s, чтобы предотвратить потерю данных при синхронизации файла с несколькими учётными записями.\n\nПоэтому все файлы, загруженные предыдущими версиями данного приложения, были скопированы в каталог %2$s. Однако, во время синхронизации что-то помешало завершить эту операцию. Можете оставить файлы как есть и удалить ссылку на %3$s, либо переместить их в %1$s и сохранить ссылку на %4$s.\n\nНиже перечислены локальные файлы, и соответствующие им удалённые файлы в %5$s, к которым они привязаны. Каталог %1$s больше не существует Переместить всё @@ -131,7 +132,7 @@ Некоторые файлы не могут быть перемещены Локальные: %1$s Удаленные: %1$s - Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Скопировать в другое место? + Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Переместить их вместо этого? Пожалуйста, укажите код Укажите ваш код Код будет запрашиваться каждый раз при запуске приложения @@ -193,7 +194,8 @@ ⇥ Невозможно авторизоваться на этом сервере Аккаунт не существует на устройстве ещё - Обновлять файл + Добавить в избранное + Убрать из избранного Переименовать Удалить Вы действительно хотите удалить %1$s? @@ -209,7 +211,7 @@ Переименование не может быть завершено Удаленный файл не может быть проверен Содержимое файла уже синхронизировано - Невозможно создать каталог + Не удалось создать каталог Недопустимые символы: / \\ < > : \" | ? * Имя файла содержит по крайней мере один некорректный символ Имя файла не может быть пустым @@ -298,7 +300,7 @@ Требуется аутентификация Неправильный пароль Переместить - Здесь ничего нет. Вы можете добавить каталог! + Здесь ничего нет. Вы можете создать каталог! Выбрать Невозможно переместить. Убедитесь, что файл существует Невозможно переместить каталог в его подкаталог @@ -308,7 +310,7 @@ Мгновенные загрузки Безопасность Путь для загрузки Видео - Загрузка папки %1$s не может быть завершена + Не удалось завершить скачивание каталога %1$s поделился с вами %1$s предоставил вам доступ к \"%2$s\" @@ -316,4 +318,12 @@ Адрес сервера Недостаточно памяти Имя пользователя + 1 каталог + %1$d каталогов + 1 файл + 1 файл, 1 папка + 1 файл, %1$d каталогов + %1$d файлов + %1$d файлов, 1 каталог + %1$d файлов, %2$d каталогов diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml index 04e34ed7..dce26eeb 100644 --- a/res/values-si-rLK/strings.xml +++ b/res/values-si-rLK/strings.xml @@ -63,7 +63,6 @@ හඳුනාගත නොහැකි අනුවාදයක් සම්බන්ධයක් ඇතිකර ගැනීමට නොහැකි විය රක්‍ෂිත සම්බන්ධතාවක් සාදන ලදී - ගොනුව යාවත්කාලීනව තබාගන්න නැවත නම් කරන්න ඉවත් කරන්න පෙදෙසි පමණක් diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml index 8ebf7296..d8c652d4 100644 --- a/res/values-sk-rSK/strings.xml +++ b/res/values-sk-rSK/strings.xml @@ -133,6 +133,8 @@ Vložte svoje heslo Prosím, vložte znovu svoje heslo: Zmazať svoje heslo + Bezpečnostný kód odstránený + Bezpečnostný kód uložený Prehrávač hudby %1$s %1$s (prehráva) %1$s (načítava) @@ -185,7 +187,8 @@ Nie je možné vykonať autentifikáciu na server Účet zatiaľ v zariadení neexistuje - Udržiavať súbor aktuálny. + Obľúbené + Odobrať z obľúbených Premenuj Odober Naozaj chcete odstrániť %1$s? diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 8adf2072..b6302b16 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -192,7 +192,7 @@ Ni mogoče preveriti pristnosti strežnika Račun na napravi še ne obstaja. - Datoteka naj bo posodobljena + Priljubljene Preimenuj Odstrani Ali res želite odstraniti %1$s? diff --git a/res/values-sr-rSP/strings.xml b/res/values-sr-rSP/strings.xml index 679c36aa..6380fe3f 100644 --- a/res/values-sr-rSP/strings.xml +++ b/res/values-sr-rSP/strings.xml @@ -52,6 +52,7 @@ Nema konekcije Sigurna konekcija nije dostupna. Konekcija uspostavljena + Omiljeni Preimenij Ukloni Uklanjanje je uspelo diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 8ca50e44..d1e14440 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -192,7 +192,8 @@ Не могу да аутентификујем са овим сервером Не постоји налог на уређају - Редовно ажурирај фајл + Омиљени + Неомиљени Преименуј Уклони Желите да уклоните %1$s? diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 015a6bf2..58cf5e13 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -175,7 +175,8 @@ Din server returnerar inte ett korrekt användare id, vänligen kontakta en administratör Kan inte autentisera mot servern - Håll filen uppdaterad + Favorit + Avfavoritisera Byt namn Radera Vill du verkligen ta bort %1$s? diff --git a/res/values-ta-rLK/strings.xml b/res/values-ta-rLK/strings.xml index 3122b6f5..1893380d 100644 --- a/res/values-ta-rLK/strings.xml +++ b/res/values-ta-rLK/strings.xml @@ -83,7 +83,7 @@ அங்கீகரிக்கப்படாத சேவையகம் பதிப்பு இணைப்பை நிறுவமுடியாது பாதுகாப்பான இணைப்பு உருவாக்கப்பட்டது. - நவீன கோப்பை வைத்திருக்கவும் + விருப்பமான பெயர்மாற்றம் அகற்றுக உள்ளூர் மட்டும் diff --git a/res/values-th-rTH/strings.xml b/res/values-th-rTH/strings.xml index 96651e72..2efcd3ac 100644 --- a/res/values-th-rTH/strings.xml +++ b/res/values-th-rTH/strings.xml @@ -192,7 +192,8 @@ เซิร์ฟเวอร์ของคุณไม่ได้ส่งคืนรหัสผู้ใช้ที่ถูกต้อง กรุณาติดต่อผู้ดูแลระบบ! ไม่สามารถยืนยันตัวตนกับเซิร์ฟเวอร์นี้ ยังไม่มีบัญชีในอุปกรณ์นี้ - ปรับปรุงไฟล์ให้ทันสมัยอยู่เสมอ + รายการโปรด + ออกจากรายการโปรด เปลี่ยนชื่อ ลบออก คุณต้องการที่จะลบ %1$s? diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index c0bf01c1..d950230f 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -69,6 +69,7 @@ Yükleniyor saniyeler önce Burada hiçbir şey yok. Bir şeyler yükleyin! + Yükleniyor... Bu klasörde dosya yok. Ek bilgileri görmek için dosyaya dokunun. Boyut: @@ -192,7 +193,8 @@ Bu sunucuya karşı kimlik doğrulama yapılamaz Hesap henüz cihazda mevcut değil - Dosyayı güncel tut + Sık kullanılan + Favoriden kaldır Yeniden adlandır Kaldır Gerçekten %1$s dosyasını kaldırmak istiyor musunuz? @@ -310,8 +312,17 @@ %1$s klasörün indirilmesi tamamlanamadı sizinle paylaştı + %1$s, sizinle \"%2$s\" paylaşımını yaptı Bağlantıyı yenile Sunucu adresi Yeterli hafıza yok Kullanıcı adı + 1 klasör + %1$d klasör + 1 dosya + 1 dosya, 1 klasör + 1 dosya, %1$d klasör + %1$d dosya + %1$d dosya, 1 klasör + %1$d dosya, %2$d klasör diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml index f5a7f4ad..97255fef 100644 --- a/res/values-ug/strings.xml +++ b/res/values-ug/strings.xml @@ -43,6 +43,7 @@ ئىم ئۆزگەرت قىسقۇچ ئاتى ھېسابات تاللاڭ + يىغقۇچ ئات ئۆزگەرت چىقىرىۋەت يوللا diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index e2c6705f..390b4e3b 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -182,7 +182,7 @@ ⇥ Аутентифікація на цьому сервері неможлива Користвача в пристрої не існуе - Оновлювати файл + Улюблений Перейменувати Видалити Ви дійсно бажаєте видалити %1$s? diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 7b350fcd..e4536eb5 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -150,7 +150,7 @@ Đang kết nối đến máy chủ xác thực... Máy chủ không hổ trợ phương thức xác thực này %1$s không hỗ trợ nhiều tài khoản - Giữ tập tin cập nhật + Ưu thích Sửa tên Xóa Chỉ cục bộ diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index de23084a..6f3f84c7 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -192,7 +192,7 @@ 无法通过此服务器认证 设备中还未存在该帐号 - 保证文件更新 + 收藏 重命名 删除 你确定要删除 %1$s 吗? diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index d5f9b677..581c684e 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -181,7 +181,7 @@ 無法在這個伺服器上取得認證 帳號目前不存在於本裝置 - 讓檔案保持最新的 + 我的最愛 重新命名 移除 您真的要移除 %1$s ? diff --git a/res/values/strings.xml b/res/values/strings.xml index 716d3b2a..22cf669d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -200,7 +200,8 @@ Cannot authenticate against this server Account does not exist in the device yet - Keep file up to date + Favorite + Unfavorite Rename Remove "Do you really want to remove %1$s?" diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 7db0a637..c5fc94d1 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -190,7 +190,7 @@ public class FileDataStorageManager { cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties()); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData()); - cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0); + cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0); cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag()); cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0); cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink()); @@ -300,7 +300,7 @@ public class FileDataStorageManager { cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties()); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData()); - cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0); + cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0); cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag()); cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0); cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink()); @@ -377,7 +377,7 @@ public class FileDataStorageManager { cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, folder.getLastSyncDateForProperties()); cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, folder.getLastSyncDateForData()); - cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, folder.keepInSync() ? 1 : 0); + cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, folder.isFavorite() ? 1 : 0); cv.put(ProviderTableMeta.FILE_ETAG, folder.getEtag()); cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, folder.isShareByLink() ? 1 : 0); cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, folder.getPublicLink()); @@ -877,7 +877,7 @@ public class FileDataStorageManager { .getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE))); file.setLastSyncDateForData(c.getLong(c. getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA))); - file.setKeepInSync(c.getInt( + file.setFavorite(c.getInt( c.getColumnIndex(ProviderTableMeta.FILE_KEEP_IN_SYNC)) == 1 ? true : false); file.setEtag(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_ETAG))); file.setShareByLink(c.getInt( @@ -1261,7 +1261,7 @@ public class FileDataStorageManager { ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData() ); - cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0); + cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.isFavorite() ? 1 : 0); cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag()); cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0); cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink()); diff --git a/src/com/owncloud/android/datamodel/OCFile.java b/src/com/owncloud/android/datamodel/OCFile.java index 2c9c53be..d1821b44 100644 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@ -60,7 +60,7 @@ public class OCFile implements Parcelable, Comparable { private boolean mNeedsUpdating; private long mLastSyncDateForProperties; private long mLastSyncDateForData; - private boolean mKeepInSync; + private boolean mFavorite; private String mEtag; @@ -107,7 +107,7 @@ public class OCFile implements Parcelable, Comparable { mLocalPath = source.readString(); mMimeType = source.readString(); mNeedsUpdating = source.readInt() == 0; - mKeepInSync = source.readInt() == 1; + mFavorite = source.readInt() == 1; mLastSyncDateForProperties = source.readLong(); mLastSyncDateForData = source.readLong(); mEtag = source.readString(); @@ -132,7 +132,7 @@ public class OCFile implements Parcelable, Comparable { dest.writeString(mLocalPath); dest.writeString(mMimeType); dest.writeInt(mNeedsUpdating ? 1 : 0); - dest.writeInt(mKeepInSync ? 1 : 0); + dest.writeInt(mFavorite ? 1 : 0); dest.writeLong(mLastSyncDateForProperties); dest.writeLong(mLastSyncDateForData); dest.writeString(mEtag); @@ -346,7 +346,7 @@ public class OCFile implements Parcelable, Comparable { mModifiedTimestampAtLastSyncForData = 0; mLastSyncDateForProperties = 0; mLastSyncDateForData = 0; - mKeepInSync = false; + mFavorite = false; mNeedsUpdating = false; mEtag = null; mShareByLink = false; @@ -444,12 +444,12 @@ public class OCFile implements Parcelable, Comparable { mLastSyncDateForData = lastSyncDate; } - public void setKeepInSync(boolean keepInSync) { - mKeepInSync = keepInSync; + public void setFavorite(boolean favorite) { + mFavorite = favorite; } - public boolean keepInSync() { - return mKeepInSync; + public boolean isFavorite() { + return mFavorite; } @Override @@ -483,8 +483,8 @@ public class OCFile implements Parcelable, Comparable { @Override public String toString() { - String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, keepInSync=%s etag=%s]"; - asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mKeepInSync), mEtag); + String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, favorite=%s etag=%s]"; + asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mFavorite), mEtag); return asString; } diff --git a/src/com/owncloud/android/files/FileMenuFilter.java b/src/com/owncloud/android/files/FileMenuFilter.java index d6c075d6..2c2754cc 100644 --- a/src/com/owncloud/android/files/FileMenuFilter.java +++ b/src/com/owncloud/android/files/FileMenuFilter.java @@ -215,6 +215,20 @@ public class FileMenuFilter { toShow.add(R.id.action_send_file); } + // FAVORITES + if (mFile == null || downloading || uploading || mFile.isFolder() || mFile.isFavorite()) { + toHide.add(R.id.action_favorite_file); + } else { + toShow.add(R.id.action_favorite_file); + } + + // UNFAVORITES + if (mFile == null || downloading || uploading || mFile.isFolder() || !mFile.isFavorite()) { + toHide.add(R.id.action_unfavorite_file); + } else { + toShow.add(R.id.action_unfavorite_file); + } + } } diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index e1568523..ddee2050 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -40,6 +40,7 @@ import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.services.OperationsService; +import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.dialog.ShareLinkToDialog; @@ -225,6 +226,24 @@ public class FileOperationsHelper { mFileActivity.startService(intent); } } + + public void toggleFavorite(OCFile file, boolean isFavorite) { + file.setFavorite(isFavorite); + mFileActivity.getStorageManager().saveFile(file); + + /// register the OCFile instance in the observer service to monitor local updates + Intent observedFileIntent = FileObserverService.makeObservedFileIntent( + mFileActivity, + file, + mFileActivity.getAccount(), + isFavorite); + mFileActivity.startService(observedFileIntent); + + /// immediate content synchronization + if (file.isFavorite()) { + syncFile(file); + } + } public void renameFile(OCFile file, String newFilename) { // RenameFile @@ -284,8 +303,8 @@ public class FileOperationsHelper { downloaderBinder.cancel(account, file); // TODO - review why is this here, and solve in a better way - // Remove etag for parent, if file is a keep_in_sync - if (file.keepInSync()) { + // Remove etag for parent, if file is a favorite + if (file.isFavorite()) { OCFile parent = mFileActivity.getStorageManager().getFileById(file.getParentId()); parent.setEtag(""); mFileActivity.getStorageManager().saveFile(parent); diff --git a/src/com/owncloud/android/operations/RefreshFolderOperation.java b/src/com/owncloud/android/operations/RefreshFolderOperation.java index 2e3c4692..ddbffb8c 100644 --- a/src/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/src/com/owncloud/android/operations/RefreshFolderOperation.java @@ -365,7 +365,7 @@ public class RefreshFolderOperation extends RemoteOperation { if (localFile != null) { // some properties of local state are kept unmodified remoteFile.setFileId(localFile.getFileId()); - remoteFile.setKeepInSync(localFile.keepInSync()); + remoteFile.setFavorite(localFile.isFavorite()); remoteFile.setLastSyncDateForData(localFile.getLastSyncDateForData()); remoteFile.setModificationTimestampAtLastSyncForData( localFile.getModificationTimestampAtLastSyncForData() @@ -397,7 +397,7 @@ public class RefreshFolderOperation extends RemoteOperation { searchForLocalFileInDefaultPath(remoteFile); // legacy /// prepare content synchronization for kept-in-sync files - if (remoteFile.keepInSync()) { + if (remoteFile.isFavorite()) { SynchronizeFileOperation operation = new SynchronizeFileOperation( localFile, remoteFile, mAccount, diff --git a/src/com/owncloud/android/operations/SynchronizeFileOperation.java b/src/com/owncloud/android/operations/SynchronizeFileOperation.java index 27b0b5ad..f94adb15 100644 --- a/src/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -245,12 +245,12 @@ public class SynchronizeFileOperation extends SyncOperation { if (mSyncFileContents) { requestForDownload(mLocalFile); // local, not server; we won't to keep - // the value of keepInSync! + // the value of favorite! // the update of local data will be done later by the FileUploader // service when the upload finishes } else { // TODO CHECK: is this really useful in some point in the code? - mServerFile.setKeepInSync(mLocalFile.keepInSync()); + mServerFile.setFavorite(mLocalFile.isFavorite()); mServerFile.setLastSyncDateForData(mLocalFile.getLastSyncDateForData()); mServerFile.setStoragePath(mLocalFile.getStoragePath()); mServerFile.setParentId(mLocalFile.getParentId()); @@ -285,7 +285,7 @@ public class SynchronizeFileOperation extends SyncOperation { i.putExtra(FileUploader.KEY_ACCOUNT, mAccount); i.putExtra(FileUploader.KEY_FILE, file); /*i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath); - // doing this we would lose the value of keepInSync in the road, and maybe + // doing this we would lose the value of isFavorite in the road, and maybe // it's not updated in the database when the FileUploader service gets it! i.putExtra(FileUploader.KEY_LOCAL_FILE, localFile.getStoragePath());*/ i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE); diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 6bf1ef82..78b6a7ba 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -321,7 +321,7 @@ public class SynchronizeFolderOperation extends SyncOperation { if (localFile != null) { // some properties of local state are kept unmodified remoteFile.setFileId(localFile.getFileId()); - remoteFile.setKeepInSync(localFile.keepInSync()); + remoteFile.setFavorite(localFile.isFavorite()); remoteFile.setLastSyncDateForData(localFile.getLastSyncDateForData()); remoteFile.setModificationTimestampAtLastSyncForData( localFile.getModificationTimestampAtLastSyncForData() @@ -360,7 +360,7 @@ public class SynchronizeFolderOperation extends SyncOperation { startSyncFolderOperation(remoteFile.getRemotePath()); } - } else if (remoteFile.keepInSync()) { + } else if (remoteFile.isFavorite()) { /// prepare content synchronization for kept-in-sync files SynchronizeFileOperation operation = new SynchronizeFileOperation( localFile, diff --git a/src/com/owncloud/android/operations/UploadFileOperation.java b/src/com/owncloud/android/operations/UploadFileOperation.java index b114195b..12cf1ac7 100644 --- a/src/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/com/owncloud/android/operations/UploadFileOperation.java @@ -407,7 +407,7 @@ public class UploadFileOperation extends RemoteOperation { newFile.setModificationTimestampAtLastSyncForData( mFile.getModificationTimestampAtLastSyncForData()); // newFile.setEtag(mFile.getEtag()) - newFile.setKeepInSync(mFile.keepInSync()); + newFile.setFavorite(mFile.isFavorite()); newFile.setLastSyncDateForProperties(mFile.getLastSyncDateForProperties()); newFile.setLastSyncDateForData(mFile.getLastSyncDateForData()); newFile.setStoragePath(mFile.getStoragePath()); diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 9a952e41..b38e77b8 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -67,6 +67,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateShareOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.OperationsService; @@ -75,6 +76,8 @@ import com.owncloud.android.ui.NavigationDrawerItem; import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter; import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SharePasswordDialogFragment; +import com.owncloud.android.ui.fragment.FileDetailFragment; +import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.ErrorMessageAdapter; import java.util.ArrayList; @@ -93,49 +96,49 @@ public class FileActivity extends ActionBarActivity "com.owncloud.android.ui.activity.WAITING_TO_PREVIEW"; public static final String EXTRA_FROM_NOTIFICATION = "com.owncloud.android.ui.activity.FROM_NOTIFICATION"; - + public static final String TAG = FileActivity.class.getSimpleName(); - + private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID"; private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD"; private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN"; private static final String KEY_ACTION_BAR_TITLE = "ACTION_BAR_TITLE"; - + protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200; - - + + /** OwnCloud {@link Account} where the main {@link OCFile} handled by the activity is located.*/ private Account mAccount; - + /** Main {@link OCFile} handled by the activity.*/ private OCFile mFile; - + /** Flag to signal that the activity will is finishing to enforce the creation of an ownCloud * {@link Account} */ private boolean mRedirectingToSetupAccount = false; - - /** Flag to signal when the value of mAccount was set */ + + /** Flag to signal when the value of mAccount was set */ protected boolean mAccountWasSet; - - /** Flag to signal when the value of mAccount was restored from a saved state */ + + /** Flag to signal when the value of mAccount was restored from a saved state */ protected boolean mAccountWasRestored; - + /** Flag to signal if the activity is launched by a notification */ private boolean mFromNotification; - + /** Messages handler associated to the main thread and the life cycle of the activity */ private Handler mHandler; - + /** Access point to the cached database for the current ownCloud {@link Account} */ private FileDataStorageManager mStorageManager = null; - + private FileOperationsHelper mFileOperationsHelper; - + private ServiceConnection mOperationsServiceConnection = null; - + private OperationsServiceBinder mOperationsServiceBinder = null; - + protected FileDownloaderBinder mDownloaderBinder = null; protected FileUploaderBinder mUploaderBinder = null; private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null; @@ -158,12 +161,12 @@ public class FileActivity extends ActionBarActivity // TODO re-enable when "Accounts" is available in Navigation Drawer // protected boolean mShowAccounts = false; - + /** - * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of + * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of * the {@link FileActivity}. - * - * Grants that a valid ownCloud {@link Account} is associated to the instance, or that the user + * + * Grants that a valid ownCloud {@link Account} is associated to the instance, or that the user * is requested to create a new one. */ @Override @@ -191,11 +194,11 @@ public class FileActivity extends ActionBarActivity // or database setAccount(account, savedInstanceState != null); - + mOperationsServiceConnection = new OperationsServiceConnection(); bindService(new Intent(this, OperationsService.class), mOperationsServiceConnection, Context.BIND_AUTO_CREATE); - + mDownloadServiceConnection = newTransferenceServiceConnection(); if (mDownloadServiceConnection != null) { bindService(new Intent(this, FileDownloader.class), mDownloadServiceConnection, @@ -220,8 +223,8 @@ public class FileActivity extends ActionBarActivity } /** - * Since ownCloud {@link Account}s can be managed from the system setting menu, - * the existence of the {@link Account} associated to the instance must be checked + * Since ownCloud {@link Account}s can be managed from the system setting menu, + * the existence of the {@link Account} associated to the instance must be checked * every time it is restarted. */ @Override @@ -235,8 +238,8 @@ public class FileActivity extends ActionBarActivity Log_OC.v(TAG, "onRestart() end"); } - - @Override + + @Override protected void onStart() { super.onStart(); @@ -244,26 +247,26 @@ public class FileActivity extends ActionBarActivity onAccountSet(mAccountWasRestored); } } - + @Override protected void onResume() { super.onResume(); - + if (mOperationsServiceBinder != null) { doOnResumeAndBound(); } } - + @Override protected void onPause() { if (mOperationsServiceBinder != null) { mOperationsServiceBinder.removeOperationListener(this); } - + super.onPause(); } - - + + @Override protected void onDestroy() { if (mOperationsServiceConnection != null) { @@ -435,12 +438,12 @@ public class FileActivity extends ActionBarActivity /** - * Sets and validates the ownCloud {@link Account} associated to the Activity. - * + * Sets and validates the ownCloud {@link Account} associated to the Activity. + * * If not valid, tries to swap it for other valid and existing ownCloud {@link Account}. - * - * POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}. - * + * + * POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}. + * * @param account New {@link Account} to set. * @param savedAccount When 'true', account was retrieved from a saved instance state. */ @@ -453,19 +456,19 @@ public class FileActivity extends ActionBarActivity mAccount = account; mAccountWasSet = true; mAccountWasRestored = (savedAccount || mAccount.equals(oldAccount)); - + } else { swapToDefaultAccount(); } } - + /** - * Tries to swap the current ownCloud {@link Account} for other valid and existing. - * - * If no valid ownCloud {@link Account} exists, the the user is requested + * Tries to swap the current ownCloud {@link Account} for other valid and existing. + * + * If no valid ownCloud {@link Account} exists, the the user is requested * to create a new ownCloud {@link Account}. - * + * * POSTCONDITION: updates {@link #mAccountWasSet} and {@link #mAccountWasRestored}. */ private void swapToDefaultAccount() { @@ -477,7 +480,7 @@ public class FileActivity extends ActionBarActivity mRedirectingToSetupAccount = true; mAccountWasSet = false; mAccountWasRestored = false; - + } else { mAccountWasSet = true; mAccountWasRestored = (newAccount.equals(mAccount)); @@ -500,7 +503,7 @@ public class FileActivity extends ActionBarActivity null); } - + /** * {@inheritDoc} */ @@ -513,32 +516,32 @@ public class FileActivity extends ActionBarActivity outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain); outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString()); } - - + + /** * Getter for the main {@link OCFile} handled by the activity. - * + * * @return Main {@link OCFile} handled by the activity. */ public OCFile getFile() { return mFile; } - + /** * Setter for the main {@link OCFile} handled by the activity. - * + * * @param file Main {@link OCFile} to be handled by the activity. */ public void setFile(OCFile file) { mFile = file; } - + /** * Getter for the ownCloud {@link Account} where the main {@link OCFile} handled by the activity * is located. - * + * * @return OwnCloud {@link Account} where the main {@link OCFile} handled by the activity * is located. */ @@ -556,7 +559,7 @@ public class FileActivity extends ActionBarActivity public boolean fromNotification() { return mFromNotification; } - + /** * @return 'True' when the Activity is finishing to enforce the setup of a new account. */ @@ -571,11 +574,11 @@ public class FileActivity extends ActionBarActivity public void setTryShareAgain(boolean tryShareAgain) { mTryShareAgain = tryShareAgain; } - + public OperationsServiceBinder getOperationsServiceBinder() { return mOperationsServiceBinder; } - + protected ServiceConnection newTransferenceServiceConnection() { return null; } @@ -583,7 +586,7 @@ public class FileActivity extends ActionBarActivity /** * Helper class handling a callback from the {@link AccountManager} after the creation of * a new ownCloud {@link Account} finished, successfully or not. - * + * * At this moment, only called after the creation of the first account. */ public class AccountCreationCallback implements AccountManagerCallback { @@ -604,11 +607,11 @@ public class FileActivity extends ActionBarActivity } } catch (OperationCanceledException e) { Log_OC.d(TAG, "Account creation canceled"); - + } catch (Exception e) { Log_OC.e(TAG, "Account creation finished in exception: ", e); } - + } else { Log_OC.e(TAG, "Account creation callback with null bundle"); } @@ -616,19 +619,19 @@ public class FileActivity extends ActionBarActivity moveTaskToBack(true); } } - + } - - + + /** * Called when the ownCloud {@link Account} associated to the Activity was just updated. - * + * * Child classes must grant that state depending on the {@link Account} is updated. */ protected void onAccountSet(boolean stateWasRecovered) { if (getAccount() != null) { mStorageManager = new FileDataStorageManager(getAccount(), getContentResolver()); - + } else { Log_OC.wtf(TAG, "onAccountChanged was called with NULL account associated!"); } @@ -648,13 +651,13 @@ public class FileActivity extends ActionBarActivity public Handler getHandler() { return mHandler; } - + public FileOperationsHelper getFileOperationsHelper() { return mFileOperationsHelper; } - + /** - * + * * @param operation Removal operation performed. * @param result Result of the removal. */ @@ -662,17 +665,17 @@ public class FileActivity extends ActionBarActivity public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the " + "FileActivities "); - + mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE); - + if (!result.isSuccess() && ( - result.getCode() == ResultCode.UNAUTHORIZED || + result.getCode() == ResultCode.UNAUTHORIZED || result.isIdPRedirection() || (result.isException() && result.getException() instanceof AuthenticatorException) )) { - + requestCredentialsUpdate(); - + if (result.getCode() == ResultCode.UNAUTHORIZED) { dismissLoadingDialog(); Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, @@ -684,13 +687,16 @@ public class FileActivity extends ActionBarActivity } else if (operation instanceof CreateShareOperation) { onCreateShareOperationFinish((CreateShareOperation) operation, result); - + } else if (operation instanceof UnshareLinkOperation) { onUnshareLinkOperationFinish((UnshareLinkOperation)operation, result); - + } else if (operation instanceof SynchronizeFolderOperation) { onSynchronizeFolderOperationFinish((SynchronizeFolderOperation)operation, result); + }else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result); + } } @@ -698,12 +704,12 @@ public class FileActivity extends ActionBarActivity Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, getAccount()); updateAccountCredentials.putExtra( - AuthenticatorActivity.EXTRA_ACTION, + AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); startActivity(updateAccountCredentials); } - + private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { @@ -711,7 +717,7 @@ public class FileActivity extends ActionBarActivity if (result.isSuccess()) { mTryShareAgain = false; updateFileFromDB(); - + Intent sendIntent = operation.getSendIntent(); startActivity(sendIntent); } else { @@ -735,22 +741,22 @@ public class FileActivity extends ActionBarActivity Toast.LENGTH_LONG); t.show(); } - } + } } - - + + private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { dismissLoadingDialog(); - + if (result.isSuccess()){ updateFileFromDB(); - + } else { Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), Toast.LENGTH_LONG); t.show(); - } + } } private void onSynchronizeFolderOperationFinish( @@ -762,7 +768,28 @@ public class FileActivity extends ActionBarActivity t.show(); } } - + + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { + dismissLoadingDialog(); + OCFile syncedFile = operation.getLocalFile(); + if (!result.isSuccess()) { + if (result.getCode() == ResultCode.SYNC_CONFLICT) { + Intent i = new Intent(this, ConflictsResolveActivity.class); + i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile); + i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, getAccount()); + startActivity(i); + + } + } else { + if (!operation.transferWasRequested()) { + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, + operation, getResources()), Toast.LENGTH_LONG); + msg.show(); + } + } + } + protected void updateFileFromDB(){ OCFile file = getFile(); if (file != null) { @@ -770,9 +797,10 @@ public class FileActivity extends ActionBarActivity setFile(file); } } - + + /** - * Show loading dialog + * Show loading dialog */ public void showLoadingDialog() { // Construct dialog @@ -780,10 +808,10 @@ public class FileActivity extends ActionBarActivity FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); loading.show(ft, DIALOG_WAIT_TAG); - + } - + /** * Dismiss loading dialog */ @@ -795,7 +823,7 @@ public class FileActivity extends ActionBarActivity } } - + private void doOnResumeAndBound() { mOperationsServiceBinder.addOperationListener(FileActivity.this, mHandler); long waitingForOpId = mFileOperationsHelper.getOpIdWaitingFor(); @@ -809,8 +837,8 @@ public class FileActivity extends ActionBarActivity } - /** - * Implements callback methods for service binding. Passed as a parameter to { + /** + * Implements callback methods for service binding. Passed as a parameter to { */ private class OperationsServiceConnection implements ServiceConnection { @@ -828,7 +856,7 @@ public class FileActivity extends ActionBarActivity return; } } - + @Override public void onServiceDisconnected(ComponentName component) { diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 6840f91c..cfeb5415 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1457,6 +1457,7 @@ public class FileDisplayActivity extends HookActivity operation, getResources()), Toast.LENGTH_LONG); msg.show(); } + invalidateOptionsMenu(); } } diff --git a/src/com/owncloud/android/ui/activity/PassCodeActivity.java b/src/com/owncloud/android/ui/activity/PassCodeActivity.java index b781e28a..09a96307 100644 --- a/src/com/owncloud/android/ui/activity/PassCodeActivity.java +++ b/src/com/owncloud/android/ui/activity/PassCodeActivity.java @@ -61,7 +61,9 @@ public class PassCodeActivity extends ActionBarActivity { private EditText[] mPassCodeEditTexts = new EditText[4]; private String [] mPassCodeDigits = {"","","",""}; + private static String KEY_PASSCODE_DIGITS = "PASSCODE_DIGITS"; private boolean mConfirmingPassCode = false; + private static String KEY_CONFIRMING_PASSCODE = "CONFIRMING_PASSCODE"; private boolean mBChange = true; // to control that only one blocks jump @@ -96,13 +98,22 @@ public class PassCodeActivity extends ActionBarActivity { setCancelButtonEnabled(false); // no option to cancel } else if (ACTION_ENABLE.equals(getIntent().getAction())) { - /// pass code preference has just been activated in Preferences; - // will receive and confirm pass code value - mPassCodeHdr.setText(R.string.pass_code_configure_your_pass_code); - //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code); - // TODO choose a header, check iOS - mPassCodeHdrExplanation.setVisibility(View.VISIBLE); - setCancelButtonEnabled(true); + if (savedInstanceState != null) { + mConfirmingPassCode = savedInstanceState.getBoolean(PassCodeActivity.KEY_CONFIRMING_PASSCODE); + mPassCodeDigits = savedInstanceState.getStringArray(PassCodeActivity.KEY_PASSCODE_DIGITS); + } + if(mConfirmingPassCode){ + //the app was in the passcodeconfirmation + requestPassCodeConfirmation(); + }else{ + /// pass code preference has just been activated in Preferences; + // will receive and confirm pass code value + mPassCodeHdr.setText(R.string.pass_code_configure_your_pass_code); + //mPassCodeHdr.setText(R.string.pass_code_enter_pass_code); + // TODO choose a header, check iOS + mPassCodeHdrExplanation.setVisibility(View.VISIBLE); + setCancelButtonEnabled(true); + } } else if (ACTION_DISABLE.equals(getIntent().getAction())) { /// pass code preference has just been disabled in Preferences; @@ -455,6 +466,13 @@ public class PassCodeActivity extends ActionBarActivity { finish(); } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean(PassCodeActivity.KEY_CONFIRMING_PASSCODE, mConfirmingPassCode); + outState.putStringArray(PassCodeActivity.KEY_PASSCODE_DIGITS, mPassCodeDigits); + } + private class PassCodeDigitTextWatcher implements TextWatcher { diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index c6ea0344..58e92552 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -268,15 +268,15 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { } // share with me icon - if (!file.isFolder()) { - ImageView sharedWithMeIconV = (ImageView) - view.findViewById(R.id.sharedWithMeIcon); - sharedWithMeIconV.bringToFront(); - if (checkIfFileIsSharedWithMe(file)) { - sharedWithMeIconV.setVisibility(View.VISIBLE); - } else { - sharedWithMeIconV.setVisibility(View.GONE); - } + ImageView sharedWithMeIconV = (ImageView) + view.findViewById(R.id.sharedWithMeIcon); + sharedWithMeIconV.bringToFront(); + if (checkIfFileIsSharedWithMe(file) && + (!file.isFolder() || !mGridMode)) { + sharedWithMeIconV.setVisibility(View.VISIBLE); + } else { + sharedWithMeIconV.setVisibility(View.GONE); + } break; @@ -286,7 +286,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // this if-else is needed even though favorite icon is visible by default // because android reuses views in listview - if (!file.keepInSync()) { + if (!file.isFavorite()) { view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE); } else { view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE); diff --git a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java index 3045b278..72f40f97 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -110,21 +110,21 @@ implements ConfirmationDialogFragmentListener { FileDataStorageManager storageManager = cg.getStorageManager(); - boolean containsKeepInSync = false; + boolean containsFavorite = false; if (mTargetFile.isFolder()) { // TODO Enable when "On Device" is recovered ? Vector files = storageManager.getFolderContent(mTargetFile/*, false*/); for(OCFile file: files) { - containsKeepInSync = file.keepInSync() || containsKeepInSync; + containsFavorite = file.isFavorite() || containsFavorite; - if (containsKeepInSync) + if (containsFavorite) break; } } - // Remove etag for parent, if file is a keep_in_sync - // or is a folder and contains keep_in_sync - if (mTargetFile.keepInSync() || containsKeepInSync) { + // Remove etag for parent, if file is a favorite + // or is a folder and contains favorite + if (mTargetFile.isFavorite() || containsFavorite) { OCFile folder = null; if (mTargetFile.isFolder()) { folder = mTargetFile; diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 4f099e49..9916a3d0 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -131,7 +131,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener mView = inflater.inflate(mLayout, null); if (mLayout == R.layout.file_details_fragment) { - mView.findViewById(R.id.fdKeepInSync).setOnClickListener(this); + mView.findViewById(R.id.fdFavorite).setOnClickListener(this); ProgressBar progressBar = (ProgressBar)mView.findViewById(R.id.fdProgressBar); mProgressListener = new ProgressListener(progressBar); mView.findViewById(R.id.fdCancelBtn).setOnClickListener(this); @@ -259,6 +259,14 @@ public class FileDetailFragment extends FileFragment implements OnClickListener } return true; } + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false); + return true; + } default: return false; } @@ -267,8 +275,9 @@ public class FileDetailFragment extends FileFragment implements OnClickListener @Override public void onClick(View v) { switch (v.getId()) { - case R.id.fdKeepInSync: { - toggleKeepInSync(); + case R.id.fdFavorite: { + CheckBox cb = (CheckBox) getView().findViewById(R.id.fdFavorite); + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(),cb.isChecked()); break; } case R.id.fdCancelBtn: { @@ -279,27 +288,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener Log_OC.e(TAG, "Incorrect view clicked!"); } } - - - private void toggleKeepInSync() { - CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync); - OCFile file = getFile(); - file.setKeepInSync(cb.isChecked()); - mContainerActivity.getStorageManager().saveFile(file); - - /// register the OCFile instance in the observer service to monitor local updates - Intent observedFileIntent = FileObserverService.makeObservedFileIntent( - getActivity(), - file, - mAccount, - cb.isChecked()); - getActivity().startService(observedFileIntent); - - /// immediate content synchronization - if (file.keepInSync()) { - mContainerActivity.getFileOperationsHelper().syncFile(getFile()); - } - } + /** * Check if the fragment was created with an empty layout. An empty fragment can't show file details, must be replaced. @@ -348,8 +337,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener setTimeModified(file.getModificationTimestamp()); - CheckBox cb = (CheckBox)getView().findViewById(R.id.fdKeepInSync); - cb.setChecked(file.keepInSync()); + CheckBox cb = (CheckBox)getView().findViewById(R.id.fdFavorite); + cb.setChecked(file.isFavorite()); // configure UI for depending upon local state of the file FileDownloaderBinder downloaderBinder = mContainerActivity.getFileDownloaderBinder(); @@ -437,7 +426,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener private void setButtonsForTransferring() { if (!isEmpty()) { // let's protect the user from himself ;) - getView().findViewById(R.id.fdKeepInSync).setEnabled(false); + getView().findViewById(R.id.fdFavorite).setEnabled(false); // show the progress bar for the transfer getView().findViewById(R.id.fdProgressBlock).setVisibility(View.VISIBLE); @@ -459,7 +448,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener */ private void setButtonsForDown() { if (!isEmpty()) { - getView().findViewById(R.id.fdKeepInSync).setEnabled(true); + getView().findViewById(R.id.fdFavorite).setEnabled(true); // hides the progress bar getView().findViewById(R.id.fdProgressBlock).setVisibility(View.GONE); @@ -473,7 +462,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener */ private void setButtonsForRemote() { if (!isEmpty()) { - getView().findViewById(R.id.fdKeepInSync).setEnabled(true); + getView().findViewById(R.id.fdFavorite).setEnabled(true); // hides the progress bar getView().findViewById(R.id.fdProgressBlock).setVisibility(View.GONE); diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 424b0d59..47d99925 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -341,6 +341,14 @@ public class OCFileListFragment extends ExtendedListFragment { getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES); return true; } + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(mTargetFile, false); + return true; + } default: return super.onContextItemSelected(item); } @@ -492,8 +500,7 @@ public class OCFileListFragment extends ExtendedListFragment { public void sortBySize(boolean descending) { mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending); - } - - + } + } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 2b0d96ce..b2d0c8cf 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -55,6 +55,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.RemoveFileOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; @@ -234,6 +235,9 @@ public class PreviewImageActivity extends FileActivity implements } else if (operation instanceof RemoveFileOperation) { finish(); + } else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation) operation, result); + } } @@ -263,6 +267,14 @@ public class PreviewImageActivity extends FileActivity implements } } + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { + if (result.isSuccess()) { + invalidateOptionsMenu(); + } + + } + @Override protected ServiceConnection newTransferenceServiceConnection() { return new PreviewImageServiceConnection(); diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 7950ec98..7ca1cfbb 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -306,7 +306,14 @@ public class PreviewImageFragment extends FileFragment { mContainerActivity.getFileOperationsHelper().syncFile(getFile()); return true; } - + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false); + return true; + } default: return false; } diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index c5883cfc..d87b82cb 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -341,7 +341,14 @@ public class PreviewMediaFragment extends FileFragment implements mContainerActivity.getFileOperationsHelper().syncFile(getFile()); return true; } - + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false); + return true; + } default: return false; }