<service android:name=".files.services.FileUploader" />
<service android:name=".media.MediaService" />
- <activity android:name=".ui.activity.PinCodeActivity" />
+ <activity android:name=".ui.activity.PassCodeActivity" />
<activity android:name=".ui.activity.ConflictsResolveActivity"/>
<activity android:name=".ui.activity.GenericExplanationActivity"/>
<activity android:name=".ui.activity.ErrorsWhileCopyingHandlerActivity"/>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ownCloud Android client application
+
+ Copyright (C) 2012 Bartek Przybylski
+ Copyright (C) 2015 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/>.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:oc="http://schemas.android.com/apk/res/com.owncloud.android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="20dp" >
+
+
+ <TextView
+ android:id="@+id/header"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/pass_code_enter_pass_code"
+ android:textColor="@android:color/black"
+ android:gravity="center_horizontal"
+ />
+
+ <TextView
+ android:id="@+id/explanation"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/pass_code_configure_your_pass_code_explanation"
+ android:textAppearance="@android:style/TextAppearance.Small"
+ android:gravity="center_horizontal"
+ />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal" >
+
+ <EditText
+ android:id="@+id/txt0"
+ android:focusable="true"
+ style="@style/PassCodeStyle"
+ android:cursorVisible="true"
+ android:imeOptions="flagNoExtractUi"
+ ><requestFocus/></EditText>
+
+ <EditText
+ android:id="@+id/txt1"
+ style="@style/PassCodeStyle"
+ android:cursorVisible="true"
+ android:imeOptions="flagNoExtractUi"
+ />
+
+ <EditText
+ android:id="@+id/txt2"
+ style="@style/PassCodeStyle"
+ android:cursorVisible="true"
+ android:imeOptions="flagNoExtractUi"
+ />
+
+ <EditText
+ android:id="@+id/txt3"
+ style="@style/PassCodeStyle"
+ android:cursorVisible="true"
+ android:imeOptions="flagNoExtractUi"
+ />
+ </LinearLayout>
+
+ <Button
+ android:id="@+id/cancel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/common_cancel" />
+
+</LinearLayout>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>\r
-<!--\r
- ownCloud Android client application\r
-\r
- Copyright (C) 2012 Bartek Przybylski\r
- Copyright (C) 2015 ownCloud Inc.\r
-\r
- This program is free software: you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License version 2,\r
- as published by the Free Software Foundation.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program. If not, see <http://www.gnu.org/licenses/>.\r
--->\r
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
- xmlns:oc="http://schemas.android.com/apk/res/com.owncloud.android"\r
- android:layout_width="fill_parent"\r
- android:layout_height="fill_parent"\r
- android:gravity="center_horizontal"\r
- android:orientation="vertical"\r
- android:padding="20dp" >\r
-\r
-\r
- <TextView\r
- android:id="@+id/pinHdr"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:text="@string/pincode_enter_pin_code"\r
- android:textColor="@android:color/black"\r
- android:gravity="center_horizontal"\r
- />\r
-\r
- <TextView\r
- android:id="@+id/pinHdrExpl"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:text="@string/pincode_configure_your_pin_explanation"\r
- android:textAppearance="@android:style/TextAppearance.Small"\r
- android:gravity="center_horizontal"\r
- />\r
- \r
- <LinearLayout\r
- android:layout_width="fill_parent"\r
- android:layout_height="wrap_content"\r
- android:gravity="center_horizontal" >\r
-\r
- <EditText\r
- android:id="@+id/txt1"\r
- android:focusable="true"\r
- style="@style/PassCodeStyle"\r
- android:cursorVisible="true"\r
- ><requestFocus/></EditText>\r
-\r
- <EditText\r
- android:id="@+id/txt2"\r
- style="@style/PassCodeStyle" />\r
-\r
- <EditText\r
- android:id="@+id/txt3"\r
- style="@style/PassCodeStyle" />\r
-\r
- <EditText\r
- android:id="@+id/txt4"\r
- style="@style/PassCodeStyle" />\r
- </LinearLayout>\r
-\r
- <Button\r
- android:id="@+id/cancel"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:text="@string/common_cancel" />\r
-\r
-</LinearLayout>\r
<string name="prefs_category_more">المزيد</string>
<string name="prefs_accounts">حسابات</string>
<string name="prefs_manage_accounts">إدارة الحسابات</string>
- <string name="prefs_pincode">كلمة سر التطبيق</string>
- <string name="prefs_pincode_summary">حماية العميل</string>
<string name="prefs_instant_upload">رفع الصورة مباشرة</string>
<string name="prefs_instant_upload_summary">رفع صورة المؤخذة عبر الكاميرا</string>
<string name="prefs_instant_video_upload">رفع فيديو مباشرة</string>
<string name="foreign_files_local_text">محلي :%1$s</string>
<string name="foreign_files_remote_text">خارجي : %1$s</string>
<string name="upload_query_move_foreign_files">لا يوجد مساحة كافية لنسخ الملفات المحددة لمجلد %1$s . هل ترغب بنقلهم بدلاً من ذلك؟</string>
- <string name="pincode_enter_pin_code">يرجى إدخال كلمة السر</string>
- <string name="pincode_configure_your_pin">أدخل كلمة السر</string>
- <string name="pincode_configure_your_pin_explanation">سيتم طلب PIN في كل مرة يتم فيها تشغيل التطبيق</string>
- <string name="pincode_reenter_your_pincode">يرجى إدخال كلمة السر مرة أخرى</string>
- <string name="pincode_remove_your_pincode">إزالة كلمة السر</string>
- <string name="pincode_mismatch">كلمتا السر غير متطابقتين</string>
- <string name="pincode_wrong">كلمه السر غير صحيحة</string>
- <string name="pincode_removed">تمت إزالة كلمه السر</string>
- <string name="pincode_stored">تم تسجيل كلمت السر</string>
<string name="media_notif_ticker">مشغل الموسيقى %1$s </string>
<string name="media_state_playing">%1$s (يتم التشغيل)</string>
<string name="media_state_loading">%1$s (يتم التحميل)</string>
<string name="prefs_category_more">Daha da</string>
<string name="prefs_accounts">Hesablar</string>
<string name="prefs_manage_accounts">İstifadəçilərin idarəedilməsi</string>
- <string name="prefs_pincode">Proqram təminatının PİN-i</string>
- <string name="prefs_pincode_summary">Müştərini qoru</string>
<string name="prefs_instant_upload">Ani şəkil yükləmələri</string>
<string name="prefs_instant_upload_summary">Kamera vasitəsi ilə götürülmüş şəkillərin tez yüklənməsi</string>
<string name="prefs_instant_video_upload">Ani video yükləmələri</string>
<string name="foreign_files_local_text">Daxili: %1$s</string>
<string name="foreign_files_remote_text">Uzaq: %1$s</string>
<string name="upload_query_move_foreign_files">Seçdiyiniz faylların %1$s qovluğuna köçüçrülməsi üçün kifayət qədər yer yoxdur. Əvəzinə onları köçürmək istəyirsinizmi?</string>
- <string name="pincode_enter_pin_code">Xahiş olunur öz proqramınızın PİN-ni daxil edəsiniz</string>
- <string name="pincode_configure_your_pin">Proqramınızın PİN-ni daxil edin</string>
- <string name="pincode_configure_your_pin_explanation">Proqram hər dəfə işə düşdükdə PİN yenidən istəniləcək</string>
- <string name="pincode_reenter_your_pincode">Öz proqramınızn PİN-ni yenidən daxil etməyi xahiş edirik</string>
- <string name="pincode_remove_your_pincode">Öz proqramınızın PİN-ni silin</string>
- <string name="pincode_mismatch">Proqram PİN-ləri eyni deyil</string>
- <string name="pincode_wrong">Yalnış proqram PİN-i</string>
- <string name="pincode_removed">Proqram PİN-i silindi</string>
- <string name="pincode_stored">Proqram PİN-i saxlanıldı </string>
<string name="media_notif_ticker">%1$s musiqi oxuducusu</string>
<string name="media_state_playing">%1$s (oxuyur)</string>
<string name="media_state_loading">%1$s (yüklənir)</string>
<string name="prefs_category_more">Още</string>
<string name="prefs_accounts">Профили</string>
<string name="prefs_manage_accounts">Управление на профилите</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Подсигури програмата</string>
<string name="prefs_instant_upload">Незабавно качване на снимки</string>
<string name="prefs_instant_upload_summary">Незабвано качване на снимки направени с камерата</string>
<string name="prefs_instant_video_upload">Незабавно качване на видео</string>
<string name="foreign_files_local_text">Локален: %1$s</string>
<string name="foreign_files_remote_text">Отдалечен: %1$s</string>
<string name="upload_query_move_foreign_files">Няма достатъчно място за копирането на избраните файлове до папка %1$s. Да се преместят ли вместо това?</string>
- <string name="pincode_enter_pin_code">Въведете своя App ПИН</string>
- <string name="pincode_configure_your_pin">Въведете своя App ПИН</string>
- <string name="pincode_configure_your_pin_explanation">ПИН-ът ще бъде поискан всеки път, когато програмата стартира.</string>
- <string name="pincode_reenter_your_pincode">Въведете своя App ПИН отново.</string>
- <string name="pincode_remove_your_pincode">Премахнете своя App ПИН</string>
- <string name="pincode_mismatch">App ПИН-овете не съвпадат</string>
- <string name="pincode_wrong">Неправилен App ПИН</string>
- <string name="pincode_removed">App ПИН премахнат</string>
- <string name="pincode_stored">App ПИН запазен</string>
<string name="media_notif_ticker">%1$s музикален плеър</string>
<string name="media_state_playing">%1$s (пусната)</string>
<string name="media_state_loading">%1$s (се зарежда)</string>
<string name="prefs_category_more">বেশী</string>
<string name="prefs_accounts">একাউন্ট</string>
<string name="prefs_manage_accounts">একাউন্ট সামলাও</string>
- <string name="prefs_pincode">অ্যাপ PIN</string>
- <string name="prefs_pincode_summary">আপনার ক্লায়েন্ট সামলান</string>
<string name="prefs_instant_upload">দ্রুত ছবি আপলোড</string>
<string name="prefs_instant_upload_summary">ক্যামেরা থেকে তোলা ছবি তৎক্ষণাৎ আপলোড</string>
<string name="prefs_instant_video_upload">দ্রুত ভিডিও আপলোড</string>
<string name="foreign_files_local_text">স্থানীয়: %1$s</string>
<string name="foreign_files_remote_text">দুরবর্তী: %1$s</string>
<string name="upload_query_move_foreign_files">%1$s ফোল্ডারে ফাইল কপি করার মত যথেষ্ট জায়গা নেই। এগুলো অন্যত্র রাখবেন? </string>
- <string name="pincode_enter_pin_code">দয়া করে আপনার App PIN দিন</string>
- <string name="pincode_configure_your_pin">আপনার App PIN দিন</string>
- <string name="pincode_configure_your_pin_explanation">প্রতিবার অ্যাপ চালু করার সময় PIN এর জন্য অনুরোধ করা হবে</string>
- <string name="pincode_reenter_your_pincode">দয়া করে আবার App PIN দিন</string>
- <string name="pincode_remove_your_pincode">আপনার অ্যাপ PIN সরিয়ে নিন</string>
- <string name="pincode_mismatch">অ্যাপ PINগুলো একরকম নয়</string>
- <string name="pincode_wrong">অশুদ্ধ অ্যাপ PIN</string>
- <string name="pincode_removed">অ্যাপ PIN সরানো হয়েছে</string>
- <string name="pincode_stored">অ্যাপ PIN সংরক্ষণ করা হয়েছে</string>
<string name="media_notif_ticker">%1$s মিউজিক প্লেয়ার</string>
<string name="media_state_playing">%1$s (বাজানো হচ্ছে)</string>
<string name="media_state_loading">%1$s (লোড করা হচ্ছে)</string>
<string name="prefs_category_more">Més</string>
<string name="prefs_accounts">Comptes</string>
<string name="prefs_manage_accounts">Gestió de comptes</string>
- <string name="prefs_pincode">PIN de l\'aplicació</string>
- <string name="prefs_pincode_summary">Protegiu el client</string>
<string name="prefs_instant_upload">Pujada instantànies de fotografies</string>
<string name="prefs_instant_upload_summary">Puja instantàniament les fotografies preses amb la càmera</string>
<string name="prefs_instant_video_upload">Pujades de vídeos instantanies</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remot: %1$s</string>
<string name="upload_query_move_foreign_files">No hi ha prou espai per copiar els fitxers seleccionats a la carpeta %1$s. Els hi voleu moure?</string>
- <string name="pincode_enter_pin_code">Escriviu el PIN de l\'aplicació</string>
- <string name="pincode_configure_your_pin">Escriviu el PIN de l\'aplicació</string>
- <string name="pincode_configure_your_pin_explanation">es requerirà el PIN cada vegada que s\'iniciï l\'aplicació</string>
- <string name="pincode_reenter_your_pincode">Torneu a escriure el PIN de l\'aplicació </string>
- <string name="pincode_remove_your_pincode">Elimina el PIN de l\'aplicació</string>
- <string name="pincode_mismatch">Els PINs de l\'aplicació no coincideixen</string>
- <string name="pincode_wrong">El PIN de l\'aplicació no és correcte</string>
- <string name="pincode_removed">S\'ha eliminat el PIN de l\'aplicació </string>
- <string name="pincode_stored">S\'ha desat el PIN de l\'aplicació </string>
<string name="media_notif_ticker">reproductor de música %1$s</string>
<string name="media_state_playing">%1$s (sonant)</string>
<string name="media_state_loading">%1$s (carregant)</string>
<string name="prefs_category_more">Více</string>
<string name="prefs_accounts">Účty</string>
<string name="prefs_manage_accounts">Spravovat účty</string>
- <string name="prefs_pincode">PIN do aplikace</string>
- <string name="prefs_pincode_summary">Chraňte svého klienta</string>
<string name="prefs_instant_upload">Okamžité nahrávání obrázků</string>
<string name="prefs_instant_upload_summary">Okamžitě nahrávat vytvořené fotografie</string>
<string name="prefs_instant_video_upload">Okamžité nahrávání videa</string>
<string name="foreign_files_local_text">Místní: %1$s</string>
<string name="foreign_files_remote_text">Vzdálené: %1$s</string>
<string name="upload_query_move_foreign_files">Není dostatek místa pro zkopírování vybraných souborů do adresáře %1$s. Přejete si je místo kopírování přesunout?</string>
- <string name="pincode_enter_pin_code">Zadejte PIN aplikace</string>
- <string name="pincode_configure_your_pin">Zadat PIN aplikace</string>
- <string name="pincode_configure_your_pin_explanation">Při každém spuštění aplikace bude vyžadováno zadání PIN</string>
- <string name="pincode_reenter_your_pincode">Zadejte znovu PIN aplikace</string>
- <string name="pincode_remove_your_pincode">Odstranit PIN aplikace</string>
- <string name="pincode_mismatch">PINy aplikace se neshodují</string>
- <string name="pincode_wrong">Neplatný PIN aplikace</string>
- <string name="pincode_removed">PIN aplikace odstraněn</string>
- <string name="pincode_stored">PIN aplikace uložen</string>
<string name="media_notif_ticker">Hudební přehrávač %1$s</string>
<string name="media_state_playing">%1$s (přehrává)</string>
<string name="media_state_loading">%1$s (načítá)</string>
<string name="filedisplay_unexpected_bad_get_content">Neočekávaný problém - zkuste zvolit soubor jinou aplikací</string>
<string name="filedisplay_no_file_selected">Žádný soubor nebyl vybrán</string>
<string name="activity_chooser_title">Odeslat odkaz ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Kopírování souboru z privátního úložiště</string>
<string name="oauth_check_onoff">Přihlásit se s oAuth2</string>
<string name="oauth_login_connection">Připojuji se k oAuth2 serveru...</string>
<string name="ssl_validator_header">Identitu stránky nelze ověřit</string>
<string name="prefs_category_general">Cyffredinol</string>
<string name="prefs_accounts">Cyfrifon</string>
<string name="prefs_manage_accounts">Rheoli Cyfrifon</string>
- <string name="prefs_pincode">PIN Ap</string>
- <string name="prefs_pincode_summary">Amddiffyn eich cleient</string>
<string name="prefs_help">Cymorth</string>
<string name="prefs_imprint">Imprint</string>
<string name="auth_username">Enw defnyddiwr</string>
<string name="foreign_files_fail">Methwyd symud rhai ffeiliau</string>
<string name="foreign_files_local_text">Lleol: %1$s</string>
<string name="foreign_files_remote_text">Pell: %1$s</string>
- <string name="pincode_enter_pin_code">Cyflwynwch PIN eich Ap</string>
- <string name="pincode_configure_your_pin">Cyflwynwch PIN eich Ap</string>
- <string name="pincode_configure_your_pin_explanation">Bydd cais am y PIN bob tro mae\'r ap yn cychwyn</string>
- <string name="pincode_reenter_your_pincode">Ailgyflwynwch PIN eich Ap</string>
- <string name="pincode_remove_your_pincode">Gwaredwch PIN eich Ap</string>
- <string name="pincode_mismatch">Nid yw PINau yr Ap yr un fath</string>
- <string name="pincode_wrong">PIN Ap anghywir</string>
- <string name="pincode_removed">Gwaredwyd PIN Ap</string>
- <string name="pincode_stored">Cadwyd PIN Ap</string>
<string name="auth_no_net_conn_title">Dim cysylltiad rhwydwaith</string>
<string name="auth_nossl_plain_ok_title">Nid oes cysylltiad diogel ar gael.</string>
<string name="auth_connection_established">Sefydlwyd y cysylltiad</string>
<string name="prefs_category_more">Mere</string>
<string name="prefs_accounts">Konti</string>
<string name="prefs_manage_accounts">Administrér konti</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Beskyt din klient</string>
<string name="prefs_instant_upload">Upload billeder straks</string>
<string name="prefs_instant_upload_summary">Upload straks billeder taget med kameraet</string>
<string name="prefs_instant_video_upload">Upload videoer straks</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Fjernplacering: %1$s</string>
<string name="upload_query_move_foreign_files">Der er ikke plads nok til at kopiere de valgte filer ind i mappen %1$s. Vil du flytte dem i stedet?</string>
- <string name="pincode_enter_pin_code">Indsæt venligst din App PIN</string>
- <string name="pincode_configure_your_pin">Indtast App PIN</string>
- <string name="pincode_configure_your_pin_explanation">PIN koden vil blive anmodet om hver gang applikationen bliver startet</string>
- <string name="pincode_reenter_your_pincode">Indtast venligst App PIN igen</string>
- <string name="pincode_remove_your_pincode">Fjern din App PIN</string>
- <string name="pincode_mismatch">App PIN er ikke ens</string>
- <string name="pincode_wrong">Forkert App PIN</string>
- <string name="pincode_removed">App PIN fjernet</string>
- <string name="pincode_stored">App PIN gemt</string>
<string name="media_notif_ticker">%1$s musikafspiller</string>
<string name="media_state_playing">%1$s (afspiller)</string>
<string name="media_state_loading">%1$s (indlæser)</string>
<string name="filedisplay_unexpected_bad_get_content">Uventet problem; prøv venligst en anden applikation til at vælge filen</string>
<string name="filedisplay_no_file_selected">Ingen fil blev valgt</string>
<string name="activity_chooser_title">Send link til ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Kopierer fil fra privat lager.</string>
<string name="oauth_check_onoff">Log på med oAuth2</string>
<string name="oauth_login_connection">Forbinder til oAuth2-server...</string>
<string name="ssl_validator_header">Sidens identitet kunne ikke verificeres</string>
<string name="prefs_category_more">Mehr</string>
<string name="prefs_accounts">Konten</string>
<string name="prefs_manage_accounts">Konten verwalten</string>
- <string name="prefs_pincode">App-PIN</string>
- <string name="prefs_pincode_summary">Schützen Sie Ihren Client</string>
<string name="prefs_instant_upload">Sofortiger Bilderupload</string>
<string name="prefs_instant_upload_summary">Fotos von der Kamera sofort hochladen</string>
<string name="prefs_instant_video_upload">Sofortiger Videoupload</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Remote: %1$s</string>
<string name="upload_query_move_foreign_files">Es steht nicht genügend Speicherplatz zur Verfügung um die ausgewählten Dateien in den Ordner %1$s zu kopieren. Möchten Sie diese stattdessen verschieben?</string>
- <string name="pincode_enter_pin_code">Bitte geben Sie Ihre App-PIN ein</string>
- <string name="pincode_configure_your_pin">Bitte geben Sie Ihre App-PIN ein</string>
- <string name="pincode_configure_your_pin_explanation">PIN-Abfrage erfolgt nach Starten der App.</string>
- <string name="pincode_reenter_your_pincode">Bitte geben Sie Ihre App-PIN erneut ein.</string>
- <string name="pincode_remove_your_pincode">App-PIN entfernen</string>
- <string name="pincode_mismatch">Die App-PINs stimmen nicht überein</string>
- <string name="pincode_wrong">Falsche App-PIN</string>
- <string name="pincode_removed">Die App-PIN wurde entfernt</string>
- <string name="pincode_stored">Die App-PIN wurde gespeichert</string>
<string name="media_notif_ticker">%1$s Musikplayer</string>
<string name="media_state_playing">%1$s (abspielend)</string>
<string name="media_state_loading">%1$s (lädt)</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="activity_chooser_title">Link senden an …</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Kopiere Datei vom privatem Speicher</string>
<string name="oauth_check_onoff">Anmelden mit oAuth2</string>
<string name="oauth_login_connection">Mit dem oAuth2-Server wird verbunden …</string>
<string name="ssl_validator_header">Die Identität der Website konnte nicht überprüft werden</string>
<string name="prefs_category_more">Mehr</string>
<string name="prefs_accounts">Konten</string>
<string name="prefs_manage_accounts">Konten verwalten</string>
- <string name="prefs_pincode">App-PIN</string>
- <string name="prefs_pincode_summary">Schütze Deinen Client</string>
<string name="prefs_instant_upload">Sofortiger Bilder-Upload</string>
<string name="prefs_instant_upload_summary">Lade Fotos von der Kamera sofort hoch</string>
<string name="prefs_instant_video_upload">Sofortiger Video-Upload</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Remote: %1$s</string>
<string name="upload_query_move_foreign_files">Es steht nicht genügend Speicherplatz zur Verfügung um die ausgewählten Dateien in den %1$s Ordner zu kopieren. Möchtest du diese stattdessen verschieben?</string>
- <string name="pincode_enter_pin_code">Bitte gib Deine App-PIN ein</string>
- <string name="pincode_configure_your_pin">Bitte gib Deine App-PIN ein</string>
- <string name="pincode_configure_your_pin_explanation">PIN-Abfrage erfolgt nach Starten der App.</string>
- <string name="pincode_reenter_your_pincode">Bitte gib Deine App-PIN erneut ein.</string>
- <string name="pincode_remove_your_pincode">App-PIN entfernen</string>
- <string name="pincode_mismatch">Die App-PINs stimmen nicht überein</string>
- <string name="pincode_wrong">Falsche App-PIN</string>
- <string name="pincode_removed">Die App-PIN wurde entfernt</string>
- <string name="pincode_stored">Die App-PIN wurde gespeichert</string>
<string name="media_notif_ticker">%1$s Musik Player</string>
<string name="media_state_playing">%1$s (playing)</string>
<string name="media_state_loading">%1$s (loading)</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="activity_chooser_title">Link senden an…</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Kopiere Datei vom privatem Speicher</string>
<string name="oauth_check_onoff">Anmelden mit oAuth2</string>
<string name="oauth_login_connection">Verbinde mit dem oAuth2-Server.</string>
<string name="ssl_validator_header">Die Identität der Website konnte nicht überprüft werden</string>
<string name="prefs_category_more">Περισσότερα</string>
<string name="prefs_accounts">Λογαριασμοί</string>
<string name="prefs_manage_accounts">Διαχείριση Λογαριασμών</string>
- <string name="prefs_pincode">PIN εφαρμογής</string>
- <string name="prefs_pincode_summary">Προστατέψτε το δέκτη σας</string>
<string name="prefs_instant_upload">Στιγμιαίες μεταφορτώσεις εικόνων</string>
<string name="prefs_instant_upload_summary">Μεταφορτώστε απευθείας φωτογραφίες από την κάμερα</string>
<string name="prefs_instant_video_upload">Στιγμιαίες μεταφορτώσεις βίντεο</string>
<string name="foreign_files_local_text">Τοπικά: %1$s</string>
<string name="foreign_files_remote_text">Απομακρυσμένα: %1$s</string>
<string name="upload_query_move_foreign_files">Δεν υπάρχει αρκετός διαθέσιμος αποθηκευτικός χώρος για να αντιγραφούν τα επιλεγμένα αρχεία στον φάκελο %1$s. Θα θέλατε να τα μετακινήσετε αντί αυτού;</string>
- <string name="pincode_enter_pin_code">Παρακαλώ, εισάγετε το PIN εφαρμογής σας</string>
- <string name="pincode_configure_your_pin">Εισάγετε το PIN της εφαρμογής</string>
- <string name="pincode_configure_your_pin_explanation">Το PIN θα ζητείται κάθε φορά που εκκινείται η εφαρμογή</string>
- <string name="pincode_reenter_your_pincode">Παρακαλώ επανεισάγετε το PIN της εφαρμογής</string>
- <string name="pincode_remove_your_pincode">Αφαιρέστε τον PIN της εφαρμογής</string>
- <string name="pincode_mismatch">Δεν ταιριάζουν τα PIN της εφαρμογής </string>
- <string name="pincode_wrong">Εσφαλμένο PIN της εφαρμογής</string>
- <string name="pincode_removed">Αφαιρέθηκε το PIN της εφαρμογής</string>
- <string name="pincode_stored">Το PIN της εφαρμογής αποθηκεύτηκε</string>
<string name="media_notif_ticker">%1$s αναπαραγωγή μουσικής</string>
<string name="media_state_playing">%1$s (αναπαραγωγή)</string>
<string name="media_state_loading">%1$s (φόρτωση)</string>
<string name="filedisplay_unexpected_bad_get_content">Απροσδόκητο σφάλμα - παρακαλώ επιλέξτε το αρχείο από μια άλλη εφαρμογή</string>
<string name="filedisplay_no_file_selected">Δεν επιλέχθηκαν αρχεία </string>
<string name="activity_chooser_title">Αποστολή συνδέσμου σε ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Αντιγραφή αρχείου από ιδιωτική αποθήκευση</string>
<string name="oauth_check_onoff">Σύνδεση με oAuth2</string>
<string name="oauth_login_connection">Σύνδεση με το διακομιστή oAuth2 σε εξέλιξη...</string>
<string name="ssl_validator_header">Η ταυτότητα της σελίδας δεν μπορεί να επληθευτεί</string>
<string name="prefs_category_more">More</string>
<string name="prefs_accounts">Accounts</string>
<string name="prefs_manage_accounts">Manage Accounts</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Protect your client</string>
<string name="prefs_instant_upload">Instant picture uploads</string>
<string name="prefs_instant_upload_summary">Instantly upload pictures taken by camera</string>
<string name="prefs_instant_video_upload">Instant video uploads</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remote: %1$s</string>
<string name="upload_query_move_foreign_files">There is not enough space to copy the selected files into the %1$s folder. Would you like to move them instead? </string>
- <string name="pincode_enter_pin_code">Please, insert your App PIN</string>
- <string name="pincode_configure_your_pin">Enter your App PIN</string>
- <string name="pincode_configure_your_pin_explanation">The PIN will be requested every time the app is started</string>
- <string name="pincode_reenter_your_pincode">Please, re-enter your App PIN</string>
- <string name="pincode_remove_your_pincode">Remove your App PIN</string>
- <string name="pincode_mismatch">The App PINs are not the same</string>
- <string name="pincode_wrong">Incorrect App PIN</string>
- <string name="pincode_removed">App PIN removed</string>
- <string name="pincode_stored">App PIN stored</string>
<string name="media_notif_ticker">%1$s music player</string>
<string name="media_state_playing">%1$s (playing)</string>
<string name="media_state_loading">%1$s (loading)</string>
<string name="prefs_category_more">Pli</string>
<string name="prefs_accounts">Kontoj</string>
<string name="prefs_manage_accounts">Administri kontojn</string>
- <string name="prefs_pincode">PIN de App-aplikaĵo</string>
- <string name="prefs_pincode_summary">Protekti vian klienton</string>
<string name="prefs_help">Helpo</string>
<string name="prefs_recommend">Rekomendi al amiko</string>
<string name="auth_check_server">Kontroli servilon</string>
<string name="foreign_files_fail">Iuj dosieroj ne povis moviĝi</string>
<string name="foreign_files_local_text">Loka: %1$s</string>
<string name="foreign_files_remote_text">Malloka: %1$s</string>
- <string name="pincode_enter_pin_code">Bonvolu enigi vian PIN-on de aplikaĵo</string>
- <string name="pincode_configure_your_pin">Enigu PIN-on de aplikaĵo</string>
- <string name="pincode_reenter_your_pincode">Bonvolu reenigi PIN-on de aplikaĵo</string>
- <string name="pincode_remove_your_pincode">Forigu vian PIN-on de aplikaĵo</string>
- <string name="pincode_mismatch">La du PIN-oj de aplikaĵo malsamas</string>
- <string name="pincode_wrong">Malĝusta PIN de aplikaĵo</string>
- <string name="pincode_removed">PIN de aplikaĵo foriĝis</string>
- <string name="pincode_stored">PIN de aplikaĵo konserviĝis</string>
<string name="media_state_playing">%1$s (ludanta)</string>
<string name="media_state_loading">%1$s (ŝarganta)</string>
<string name="auth_getting_authorization">Ekhavante rajtigon...</string>
<string name="prefs_category_more">Más</string>
<string name="prefs_accounts">Cuentas</string>
<string name="prefs_manage_accounts">Gestionar cuentas</string>
- <string name="prefs_pincode">PIN de aplicación</string>
- <string name="prefs_pincode_summary">Protejé tu cliente</string>
<string name="prefs_instant_upload">Subir fotos instantáneamente. </string>
<string name="prefs_instant_upload_summary">Subir instantáneamente fotos tomadas por la cámara.</string>
<string name="prefs_instant_video_upload">Subir videos instantáneamente. </string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remote: %1$s</string>
<string name="upload_query_move_foreign_files">No hay espacio suficiente para copiar los archivos seleccionados dentro de la carpeta %1$s. ¿Te gustaría en su lugar moverlos?</string>
- <string name="pincode_enter_pin_code">Por favor, escribí el PIN de la aplicación</string>
- <string name="pincode_configure_your_pin">Ingresá el PIN de la aplicación</string>
- <string name="pincode_configure_your_pin_explanation">Se te pedirá el PIN cada vez que esta app sea iniciada.</string>
- <string name="pincode_reenter_your_pincode">Por favor, ingresá nuevamente el PIN de la aplicación</string>
- <string name="pincode_remove_your_pincode">Borrar tu PIN de la aplicación</string>
- <string name="pincode_mismatch">Los PIN no son iguales</string>
- <string name="pincode_wrong">El PIN de la aplicación es incorrecto</string>
- <string name="pincode_removed">El PIN de la aplicación fue borrado</string>
- <string name="pincode_stored">El PIN de la aplicación fue almacenado</string>
<string name="media_notif_ticker">Reproductor de música %1$s</string>
<string name="media_state_playing">%1$s (reproduciendo)</string>
<string name="media_state_loading">%1$s (cargando)</string>
<string name="prefs_category_general">General</string>
<string name="prefs_accounts">Cuentas</string>
<string name="prefs_manage_accounts">Administrar Cuentas</string>
- <string name="prefs_pincode">PIN de la aplicación</string>
- <string name="prefs_pincode_summary">Proteger su cliente</string>
<string name="prefs_instant_upload">Subida instantánea de imagenes</string>
<string name="prefs_instant_upload_summary">Subida instantánea de imágenes tomadas con la cámara</string>
<string name="prefs_help">Ayuda</string>
<string name="foreign_files_fail">algunos archivos no pueden ser transferidos</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
- <string name="pincode_enter_pin_code">Por favor, ingreses su PIN de aplicación</string>
- <string name="pincode_configure_your_pin">Ingrese su PIN de aplicación</string>
- <string name="pincode_configure_your_pin_explanation">El PIN será solicitado cada vez que la aplicación se inicie</string>
- <string name="pincode_reenter_your_pincode">Por favor, reingrese su PIN de aplicación</string>
- <string name="pincode_remove_your_pincode">Remover el PIN de su aplicación</string>
- <string name="pincode_mismatch">Los PINs de su aplicación no coinciden</string>
- <string name="pincode_wrong">PIN de aplicación incorrecto</string>
- <string name="pincode_removed">PIN de aplicación removido</string>
- <string name="pincode_stored">PIN de aplicación almacenada</string>
<string name="media_notif_ticker">Reproductor de música %1$s</string>
<string name="media_state_playing">(sonando) %1$s</string>
<string name="media_state_loading">(cargando) %1$s</string>
<string name="prefs_category_more">Más</string>
<string name="prefs_accounts">Cuentas</string>
<string name="prefs_manage_accounts">Gestionar cuentas</string>
- <string name="prefs_pincode">PIN de aplicación </string>
- <string name="prefs_pincode_summary">Proteja su cliente</string>
<string name="prefs_log_title">Habilitar registro</string>
<string name="prefs_log_summary">Esto es usado para registrar problemas</string>
<string name="prefs_log_title_history">Historia del Registro</string>
<string name="foreign_files_fail">Algunos archivos no han podido ser movidos</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
- <string name="pincode_enter_pin_code">Por favor, inserta tu PIN de aplicación</string>
- <string name="pincode_configure_your_pin">Introduzca un PIN para la aplicación</string>
- <string name="pincode_configure_your_pin_explanation">Se solicitará el PIN cada vez que se inicie la aplicación</string>
- <string name="pincode_reenter_your_pincode">Repita el PIN para la aplicación, por favor</string>
- <string name="pincode_remove_your_pincode">Borre su PIN de aplicación</string>
- <string name="pincode_mismatch">Los PIN introducidos no son iguales</string>
- <string name="pincode_wrong">PIN de aplicación incorrecto</string>
- <string name="pincode_removed">PIN de aplicación borrado</string>
- <string name="pincode_stored">PIN de aplicación guardado</string>
<string name="media_notif_ticker">Reproductor de música %1$s</string>
<string name="media_state_playing">%1$s (reproduciendo)</string>
<string name="media_state_loading">%1$s (cargando)</string>
<string name="prefs_category_more">Más</string>
<string name="prefs_accounts">Cuentas</string>
<string name="prefs_manage_accounts">Gestionar cuentas</string>
- <string name="prefs_pincode">PIN de aplicación </string>
- <string name="prefs_pincode_summary">Proteja su cliente</string>
<string name="prefs_instant_upload">Subida instantánea de imágenes</string>
<string name="prefs_instant_upload_summary">Sube instantáneamente las fotos tomadas con la cámara</string>
<string name="prefs_instant_video_upload">Subidas instantáneas de video</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
<string name="upload_query_move_foreign_files">No hay suficiente espacio para copiar los archivos seleccionados a la carpeta %1$s. ¿Desea moverlos en vez de copiarlos?</string>
- <string name="pincode_enter_pin_code">Por favor, inserte su PIN de aplicación</string>
- <string name="pincode_configure_your_pin">Introduzca un PIN para la aplicación</string>
- <string name="pincode_configure_your_pin_explanation">Se solicitará el PIN cada vez que se inicie la aplicación</string>
- <string name="pincode_reenter_your_pincode">Repita el PIN para la aplicación, por favor</string>
- <string name="pincode_remove_your_pincode">Borre su PIN de aplicación</string>
- <string name="pincode_mismatch">Los PIN introducidos no son iguales</string>
- <string name="pincode_wrong">PIN de aplicación incorrecto</string>
- <string name="pincode_removed">PIN de aplicación borrado</string>
- <string name="pincode_stored">PIN de aplicación guardado</string>
<string name="media_notif_ticker">Reproductor de música %1$s</string>
<string name="media_state_playing">%1$s (reproduciendo)</string>
<string name="media_state_loading">%1$s (cargando)</string>
<string name="prefs_category_more">Rohkem</string>
<string name="prefs_accounts">Kontod</string>
<string name="prefs_manage_accounts">Halda kontosid</string>
- <string name="prefs_pincode">Rakenduse PIN</string>
- <string name="prefs_pincode_summary">Kaitse oma klienti</string>
<string name="prefs_instant_upload">Piltide kohene üleslaadimine</string>
<string name="prefs_instant_upload_summary">Laadi koheselt üles kaameraga tehtud pildid</string>
<string name="prefs_instant_video_upload">Videote kohene üleslaadimine</string>
<string name="foreign_files_local_text">Kohalik: %1$s</string>
<string name="foreign_files_remote_text">Serveris: %1$s</string>
<string name="upload_query_move_foreign_files">Pole piisavalt ruumi kopeerimaks valitud faile kataloogi %1$s. Kas soovid kopeerimise asemel neid ümber tõsta?</string>
- <string name="pincode_enter_pin_code">Palun sisesta oma rakenduse PIN</string>
- <string name="pincode_configure_your_pin">Sisesta oma rakenduse PIN</string>
- <string name="pincode_configure_your_pin_explanation">PIN-i nõutakse iga kord, kui rakendus käivitatakse</string>
- <string name="pincode_reenter_your_pincode">Palun sisesta oma rakenduse PIN uuesti</string>
- <string name="pincode_remove_your_pincode">Eemalda oma rakenduse PIN</string>
- <string name="pincode_mismatch">Mõlemad rakenduse PIN-id pole samad</string>
- <string name="pincode_wrong">Vigane rakenduse PIN</string>
- <string name="pincode_removed">Rakenduse PIN on eemaldatud</string>
- <string name="pincode_stored">Rakenduse PIN on salvestatud</string>
<string name="media_notif_ticker">%1$s muusika mängija</string>
<string name="media_state_playing">%1$s (mängib)</string>
<string name="media_state_loading">%1$s (laeb)</string>
<string name="prefs_category_more">Gehiago</string>
<string name="prefs_accounts">Kontuak</string>
<string name="prefs_manage_accounts">Kontuak kudeatu</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Babestu zure bezeroa</string>
<string name="prefs_instant_upload">Uneko irudi igoerak</string>
<string name="prefs_instant_upload_summary">Igo berehala kamerak ateratako argazkiak</string>
<string name="prefs_instant_video_upload">Uneko bideo igoerak</string>
<string name="foreign_files_local_text">Bertakoa: %1$s</string>
<string name="foreign_files_remote_text">Urrunekoa: %1$s</string>
<string name="upload_query_move_foreign_files">Ez dago leku nahikorik hautatutako fitxategiak %1$s karpetan kopiatzeko. Nahi al duzu kopiatu ordez bertara mugitzea?</string>
- <string name="pincode_enter_pin_code">Mesedez, sartu zure aplikazioaren PINa</string>
- <string name="pincode_configure_your_pin">Sartu aplikazioaren PINa</string>
- <string name="pincode_configure_your_pin_explanation">PINa aplikazioa abiarazten den bakoitzean eskatuko da</string>
- <string name="pincode_reenter_your_pincode">Sartu berriz aplikazioarenPINa, mesedez</string>
- <string name="pincode_remove_your_pincode">Ezabatu zure aplikazioaren PINa</string>
- <string name="pincode_mismatch">Aplikazioko bi PINak ez dira berdinak</string>
- <string name="pincode_wrong">Aplikazioaren PINa ezda zuzena</string>
- <string name="pincode_removed">Aplikazioaren PINa kendu da</string>
- <string name="pincode_stored">Aplikazioaren PINa gorde da</string>
<string name="media_notif_ticker">%1$s musika erreproduzigailua</string>
<string name="media_state_playing">%1$s (jotzen)</string>
<string name="media_state_loading">%1$s (kargatzen)</string>
<string name="prefs_category_more">بیشتر</string>
<string name="prefs_accounts">حسابها</string>
<string name="prefs_manage_accounts">مدیریت حسابها</string>
- <string name="prefs_pincode">PIN برنامه</string>
- <string name="prefs_pincode_summary">حفاظت از مشتری</string>
<string name="prefs_log_title">فعال کردن ورود</string>
<string name="prefs_log_summary">این برای مشکلات ورود استفاده شده است.</string>
<string name="prefs_log_title_history">تاریخچه ورود</string>
<string name="foreign_files_fail">بعضی از فایل ها نمی توانند انتقال یابند</string>
<string name="foreign_files_local_text">محلی: %1$s</string>
<string name="foreign_files_remote_text">دور از دسترس: %1$s</string>
- <string name="pincode_enter_pin_code">لطفا PIN برنامه خودتان را وارد کنید</string>
- <string name="pincode_configure_your_pin">PIN برنامه را وارد کنید</string>
- <string name="pincode_configure_your_pin_explanation">هر زمان که برنامه آغاز شود PIN درخواست خواهد شد.</string>
- <string name="pincode_reenter_your_pincode">لطفا PIN برنامه خودتان را دوباره وارد کنید</string>
- <string name="pincode_remove_your_pincode">PIN برنامه خودتان را حذف کنید</string>
- <string name="pincode_mismatch">PIN های برنامه یکسان نیستند</string>
- <string name="pincode_wrong">PIN برنامه نادرست است</string>
- <string name="pincode_removed">PIN برنامه حذف شده است</string>
- <string name="pincode_stored">PIN برنامه ذخیره شده است</string>
<string name="media_notif_ticker">%1$s پخش کننده موسیقی</string>
<string name="media_state_playing">%1$s ( در حال پخش موسیقی )</string>
<string name="media_state_loading">%1$s (درحال بارگذاری)</string>
<string name="prefs_category_more">Enemmän</string>
<string name="prefs_accounts">Tilit</string>
<string name="prefs_manage_accounts">Tilien hallinta</string>
- <string name="prefs_pincode">Sovelluksen PIN-koodi</string>
- <string name="prefs_pincode_summary">Suojaa asiakasohjelmasi</string>
<string name="prefs_instant_upload">Kuvien välitön lähetys</string>
<string name="prefs_instant_upload_summary">Lähetä kameralla otetut kuvat välittömästi</string>
<string name="prefs_instant_video_upload">Välittömät videolähetykset</string>
<string name="foreign_files_fail">Joidenkin tiedostojen siirtäminen epäonnistui</string>
<string name="foreign_files_local_text">Paikallinen: %1$s</string>
<string name="foreign_files_remote_text">Etä: %1$s</string>
- <string name="pincode_enter_pin_code">Aseta sovelluksesi PIN</string>
- <string name="pincode_configure_your_pin">Anna sovelluksen PIN</string>
- <string name="pincode_configure_your_pin_explanation">PIN kysytään joka kerta, kun sovellus käynnistetään</string>
- <string name="pincode_reenter_your_pincode">Anna sovelluksen PIN uudestaan</string>
- <string name="pincode_remove_your_pincode">Poista sovelluksen PIN</string>
- <string name="pincode_mismatch">Sovelluksen PIN-koodit eivät täsmää</string>
- <string name="pincode_wrong">Väärä sovelluksen PIN</string>
- <string name="pincode_removed">Sovelluksen PIN poistettu</string>
- <string name="pincode_stored">Sovelluksen PIN-koodi tallennettu</string>
<string name="media_notif_ticker">%1$s-musiikkisoitin</string>
<string name="media_state_playing">%1$s (toistetaan)</string>
<string name="media_state_loading">%1$s (ladataan)</string>
<string name="prefs_category_more">Plus</string>
<string name="prefs_accounts">Comptes</string>
<string name="prefs_manage_accounts">Gestion des comptes</string>
- <string name="prefs_pincode">Code de sécurité</string>
- <string name="prefs_pincode_summary">Protéger l\'accès à l\'application</string>
<string name="prefs_instant_upload">Téléversement immédiat des photos</string>
<string name="prefs_instant_upload_summary">Téléverser immédiatement les photos prises par la caméra</string>
<string name="prefs_instant_video_upload">Téléversement immédiat des vidéos</string>
<string name="foreign_files_local_text">Local : %1$s</string>
<string name="foreign_files_remote_text">Distant : %1$s</string>
<string name="upload_query_move_foreign_files">Il n\'y a pas assez de place disponible pour copier les fichiers sélectionnés dans le dossier %1$s. Voulez-vous les déplacer à la place ?</string>
- <string name="pincode_enter_pin_code">Veuillez saisir votre code de sécurité</string>
- <string name="pincode_configure_your_pin">Veuillez saisir votre code de sécurité </string>
- <string name="pincode_configure_your_pin_explanation">Le code de sécurité vous sera demandé à chaque lancement de l\'application</string>
- <string name="pincode_reenter_your_pincode">Veuillez saisir de nouveau votre code de sécurité</string>
- <string name="pincode_remove_your_pincode">Retirer le code de sécurité</string>
- <string name="pincode_mismatch">Les deux codes saisis ne concordent pas</string>
- <string name="pincode_wrong">Code de sécurité incorrect</string>
- <string name="pincode_removed">Code de sécurité retiré</string>
- <string name="pincode_stored">Code de sécurité enregistré</string>
<string name="media_notif_ticker">%1$s lecteur de musique</string>
<string name="media_state_playing">%1$s (lecture)</string>
<string name="media_state_loading">%1$s (chargement)</string>
<string name="prefs_category_more">Máis</string>
<string name="prefs_accounts">Contas</string>
<string name="prefs_manage_accounts">Administrar as contas</string>
- <string name="prefs_pincode">PIN da aplicación</string>
- <string name="prefs_pincode_summary">Protexa o seu cliente</string>
<string name="prefs_instant_upload">Envío instantáneo de fotos</string>
<string name="prefs_instant_upload_summary">Enviar instantaneamente as fotos tiradas coa cámara</string>
<string name="prefs_instant_video_upload">Envío instantáneo de vídeos</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
<string name="upload_query_move_foreign_files">Non hai espazo abondo para copiar os ficheiros seleccionados no cartafol %1$s. Quere movelos no canto de copialos?</string>
- <string name="pincode_enter_pin_code">Insira o seu PIN da aplicación</string>
- <string name="pincode_configure_your_pin">Introduza o seu PIN da aplicación</string>
- <string name="pincode_configure_your_pin_explanation">Pediráselle o PIN cada vez que se inicie a aplicación</string>
- <string name="pincode_reenter_your_pincode">Volva a introducir o seu PIN da aplicación</string>
- <string name="pincode_remove_your_pincode">Retirar o seu PIN da aplicación</string>
- <string name="pincode_mismatch">Os PIN da aplicación non son iguais</string>
- <string name="pincode_wrong">O PIN da aplicación é incorrecto</string>
- <string name="pincode_removed">O PIN da aplicación foi retirado</string>
- <string name="pincode_stored">Almacenouse o PIN da aplicación</string>
<string name="media_notif_ticker">%1$s reprodutor musical</string>
<string name="media_state_playing">%1$s (reproducindo)</string>
<string name="media_state_loading">%1$s (cargando)</string>
<string name="filedisplay_unexpected_bad_get_content">Produciuse un erro non agardado. Seleccione o ficheiro con outra aplicación diferente</string>
<string name="filedisplay_no_file_selected">Non se escolleu ningún ficheiro</string>
<string name="activity_chooser_title">Enviar a ligazón a ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Copiando o ficheiro desde o almacenamento privado</string>
<string name="oauth_check_onoff">Acceder con oAuth2</string>
<string name="oauth_login_connection">Conectando co servidor oAuth2…</string>
<string name="ssl_validator_header">Non foi posíbel verificar a identidade do sitio</string>
<string name="prefs_category_more">יותר</string>
<string name="prefs_accounts">חשבונות</string>
<string name="prefs_manage_accounts">ניהול חשבונות</string>
- <string name="prefs_pincode">קוד יישום</string>
- <string name="prefs_pincode_summary">הגנה על הלקוח שלך</string>
<string name="prefs_instant_upload">העלאת תמונות מהירה</string>
<string name="prefs_instant_upload_summary">העלאה מהירה של תמונות שצולמו במצלמה</string>
<string name="prefs_instant_video_upload">העלאת סרטים מהירה</string>
<string name="foreign_files_local_text">מקומי: %1$s</string>
<string name="foreign_files_remote_text">מרוחק: %1$s</string>
<string name="upload_query_move_foreign_files">אין מספיק מקום להעתקת הקבצים שנבחרו אל תיקיית %1$s . האם להעביר אותם במקום?</string>
- <string name="pincode_enter_pin_code">נא להזין את קוד היישום שלך</string>
- <string name="pincode_configure_your_pin">נא להזין את קוד היישום שלך</string>
- <string name="pincode_configure_your_pin_explanation">תופיע בקשה לקוד בכל פעם שהיישום מופעל</string>
- <string name="pincode_reenter_your_pincode">נא להזין את קוד היישום שלך מחדש</string>
- <string name="pincode_remove_your_pincode">הסרת קוד היישום שלך</string>
- <string name="pincode_mismatch">הקודים של היישום שונים</string>
- <string name="pincode_wrong">קוד היישום שגוי</string>
- <string name="pincode_removed">קוד היישום הוסר</string>
- <string name="pincode_stored">קוד היישום אוחסן</string>
<string name="media_notif_ticker">נגנן המוזיקה %1$s</string>
<string name="media_state_playing">%1$s (מתנגן)</string>
<string name="media_state_loading">%1$s (בטעינה)</string>
<string name="prefs_category_general">सामान्य </string>
<string name="prefs_category_more">और अधिक</string>
<string name="prefs_accounts">खाते </string>
- <string name="prefs_pincode">एप्प पिन </string>
- <string name="prefs_pincode_summary">अपने उपभोक्ता की सुरक्षा करें </string>
<string name="prefs_help">सहायता </string>
<string name="auth_username">उपभोक्ता का नाम</string>
<string name="auth_password">पासवर्ड</string>
<string name="prefs_category_more">više</string>
<string name="prefs_accounts">Korisnićki računi</string>
<string name="prefs_manage_accounts">Upravljaj računima</string>
- <string name="prefs_pincode">PIN aplikacije</string>
- <string name="prefs_pincode_summary">Zaštit svog klijenta</string>
<string name="prefs_instant_upload">Trenutni upload slika</string>
<string name="prefs_instant_upload_summary">Trenutni upload slika snimljenih kamerom</string>
<string name="prefs_instant_video_upload">Trenutni upload videa</string>
<string name="prefs_category_more">Több</string>
<string name="prefs_accounts">Fiókok</string>
<string name="prefs_manage_accounts">Fiókok kezelése</string>
- <string name="prefs_pincode">Alkalmazás PIN</string>
- <string name="prefs_pincode_summary">Védje meg az alkalmazást</string>
<string name="prefs_instant_upload">Azonnali képfeltöltések</string>
<string name="prefs_instant_upload_summary">Kamera által készítette képek azonnali feltöltése</string>
<string name="prefs_instant_video_upload">Azonnali video feltöltések</string>
<string name="foreign_files_local_text">Helyi: %1$s</string>
<string name="foreign_files_remote_text">Távoli: %1$s</string>
<string name="upload_query_move_foreign_files">Nincs elég hely a kiválasztott fájlok másolására a %1$s könyvtárban. Szeretnéd áthelyezni inkább?</string>
- <string name="pincode_enter_pin_code">Kérem adja meg az alkalmazás PIN-kódját</string>
- <string name="pincode_configure_your_pin">Az alkalmazás PIN-kódja</string>
- <string name="pincode_configure_your_pin_explanation">A PIN-t kötelező lesz megadni az alkalmazás minden indításakor</string>
- <string name="pincode_reenter_your_pincode">Kérem, adja meg újra az alkalmazás PIN-kódját</string>
- <string name="pincode_remove_your_pincode">Az alkalmazás PIN-kódjának eltávolítása</string>
- <string name="pincode_mismatch">A megadott PIN-ek nem egyeznek meg</string>
- <string name="pincode_wrong">Rossz a megadott PIN</string>
- <string name="pincode_removed">Az alkalmazás PIN-ját eltávolítottuk</string>
- <string name="pincode_stored">Az alkalmazás PIN-jét eltároltuk</string>
<string name="media_notif_ticker">%1$s zene lejátszó</string>
<string name="media_state_playing">%1$s (lejátszás)</string>
<string name="media_state_loading">%1$s (betöltés)</string>
<string name="prefs_category_more">Lainnya</string>
<string name="prefs_accounts">Akun</string>
<string name="prefs_manage_accounts">Kelola Akun</string>
- <string name="prefs_pincode">PIN Apl</string>
- <string name="prefs_pincode_summary">Lindungi klien Anda</string>
<string name="prefs_instant_upload">Unggah gambar cepat</string>
<string name="prefs_instant_upload_summary">Unggah gambar yang diambil kamera dengan cepat</string>
<string name="prefs_instant_video_upload">Unggah video cepat</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Jauh: %1$s</string>
<string name="upload_query_move_foreign_files">Ruang tidak cukup untuk menyalin berkas terpilih kedalam folder %1$s. Apakah Anda ingin memindahkannya saja?</string>
- <string name="pincode_enter_pin_code">Silakan masukkan PIN Apl</string>
- <string name="pincode_configure_your_pin">Masukkan PIN Apl</string>
- <string name="pincode_configure_your_pin_explanation">PIN akan selalu diminta setiap kali apl dijalankan</string>
- <string name="pincode_reenter_your_pincode">Silakan masukkan ulang PIN Apl</string>
- <string name="pincode_remove_your_pincode">Hapus PIN Apl</string>
- <string name="pincode_mismatch">PIN Apl tidak sama</string>
- <string name="pincode_wrong">PIN Apl salah</string>
- <string name="pincode_removed">PIN Apl dihapus</string>
- <string name="pincode_stored">PIN Apl disimpan</string>
<string name="media_notif_ticker">Pemutar musik %1$s</string>
<string name="media_state_playing">%1$s (dimainkan)</string>
<string name="media_state_loading">%1$s (sedang dimuat)</string>
<string name="prefs_category_more">Altro</string>
<string name="prefs_accounts">Account</string>
<string name="prefs_manage_accounts">Gestisci account</string>
- <string name="prefs_pincode">PIN App</string>
- <string name="prefs_pincode_summary">Proteggi il tuo client l\'applicazione</string>
<string name="prefs_instant_upload">Caricamenti istantanei delle foto</string>
<string name="prefs_instant_upload_summary">Carica immediatamente le foto dalla fotocamera</string>
<string name="prefs_instant_video_upload">Caricamenti istantanei dei video</string>
<string name="foreign_files_local_text">Locale: %1$s</string>
<string name="foreign_files_remote_text">Remoto %1$s</string>
<string name="upload_query_move_foreign_files">Non c\'è spazio sufficiente per copiare i file selezionati nella cartella %1$s. Vuoi invece spostarli?</string>
- <string name="pincode_enter_pin_code">Inserisci il PIN dell\'applicazione</string>
- <string name="pincode_configure_your_pin">Inserisci il PIN di l\'applicazione</string>
- <string name="pincode_configure_your_pin_explanation">Il PIN sarà richiesto ad ogni avvio dell\'applicazione</string>
- <string name="pincode_reenter_your_pincode">Inserisci nuovamente il PIN di l\'applicazione</string>
- <string name="pincode_remove_your_pincode">Rimuovi il PIN di l\'applicazione</string>
- <string name="pincode_mismatch">I PIN di l\'applicazione non corrispondono</string>
- <string name="pincode_wrong">PIN di l\'applicazione non corretto</string>
- <string name="pincode_removed">PIN di l\'applicazione rimosso</string>
- <string name="pincode_stored">PIN di l\'applicazione memorizzato</string>
<string name="media_notif_ticker">Lettore musicale %1$s</string>
<string name="media_state_playing">%1$s (in riproduzione)</string>
<string name="media_state_loading">%1$s (in caricamento)</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="activity_chooser_title">Invia collegamento a...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Copia file dall\'archiviazione privata</string>
<string name="oauth_check_onoff">Accesso con oAuth2.</string>
<string name="oauth_login_connection">Connessione al server oAuth2 in corso...</string>
<string name="ssl_validator_header">L\'identità del sito non può essere verificata</string>
<string name="prefs_category_more">もっと見る</string>
<string name="prefs_accounts">アカウント</string>
<string name="prefs_manage_accounts">アカウント管理</string>
- <string name="prefs_pincode">アプリのパスワード</string>
- <string name="prefs_pincode_summary">クライアントを保護する</string>
<string name="prefs_instant_upload">自動画像アップロード</string>
<string name="prefs_instant_upload_summary">カメラで撮影した画像を自動アップロード</string>
<string name="prefs_instant_video_upload">自動動画アップロード</string>
<string name="foreign_files_local_text">ローカル: %1$s</string>
<string name="foreign_files_remote_text">リモート: %1$s</string>
<string name="upload_query_move_foreign_files">十分なスペースがないため、選択されたファイルを %1$s フォルダーにコピーすることができません。コピーする代わりに、それらを移動させますか?</string>
- <string name="pincode_enter_pin_code">アプリのパスワードを入力してください</string>
- <string name="pincode_configure_your_pin">アプリのパスワードを入力してください</string>
- <string name="pincode_configure_your_pin_explanation">アプリ開始時に毎回PINが要求されます。</string>
- <string name="pincode_reenter_your_pincode">アプリのパスワードを再入力してください</string>
- <string name="pincode_remove_your_pincode">アプリのパスワードを削除</string>
- <string name="pincode_mismatch">アプリのパスワードが一致しません</string>
- <string name="pincode_wrong">無効なアプリのパスワードです</string>
- <string name="pincode_removed">アプリのパスワードを削除しました</string>
- <string name="pincode_stored">アプリのパスワードを保存しました</string>
<string name="media_notif_ticker">%1$s ミュージックプレーヤー</string>
<string name="media_state_playing">%1$s (プレイ中)</string>
<string name="media_state_loading">%1$s (読込中)</string>
<string name="prefs_category_more">უფრო მეტი</string>
<string name="prefs_accounts">ანგარიში</string>
<string name="prefs_manage_accounts">ანგარიშების მენეჯმენტი</string>
- <string name="prefs_pincode">აპლიკაციის PIN–ი</string>
- <string name="prefs_pincode_summary">თქვენი კლიენტის დაცვა</string>
<string name="prefs_help">დახმარება</string>
<string name="prefs_feedback">უკუკავშირი</string>
<string name="prefs_imprint">ბეჭედი</string>
<string name="foreign_files_fail">რამოდენიმე ფაილის გადატანა ვერ მოხერხდა</string>
<string name="foreign_files_local_text">ლოკალური: %1$s</string>
<string name="foreign_files_remote_text">დაშორებული: %1$s</string>
- <string name="pincode_enter_pin_code">გთხოვთ, ჩასვათ თქვენი აპლიკაციის PIN–ი</string>
- <string name="pincode_configure_your_pin">შეიყვანეთ თქვენი აპლიკაციის PIN–ი</string>
- <string name="pincode_configure_your_pin_explanation">PIN–ი მოთხოვნილი იქნება აპლიკაციის ყოველ ჩართვაზე</string>
- <string name="pincode_reenter_your_pincode">გთხოვთ შეიყვანოთ თქვენი აპლიკაციის PIN–ი ხელთავიდან</string>
- <string name="pincode_remove_your_pincode">წაშალეთ თქვენი აპლიკაციის PIN–ი</string>
- <string name="pincode_mismatch">აპლიკაციის PIN–ი არ არის იგივე</string>
- <string name="pincode_wrong">არასწორი აპლიკაციის PIN–ი</string>
- <string name="pincode_removed">აპლიკაციის PIN–ი წაიშალა</string>
- <string name="pincode_stored">აპლიკაციის PIN–ი დამახსოვრებულ იქნა</string>
<string name="auth_no_net_conn_title">ქსელური კავშირი არ არის</string>
<string name="auth_nossl_plain_ok_title">დაცული კავშირი არ არსებობს.</string>
<string name="auth_connection_established">კავშირი დამყარდა</string>
<string name="prefs_category_more">ច្រើនទៀត</string>
<string name="prefs_accounts">គណនី</string>
<string name="prefs_manage_accounts">គ្រប់គ្រងគណនី</string>
- <string name="prefs_pincode">ភីនកូដ កម្មវិធី</string>
<string name="prefs_log_title">ដំណើរការការចូលទៅកាន់</string>
<string name="prefs_log_summary">នេះជាបញ្ហាសម្រាប់អ្នកដែលបានចូលទៅកាន់</string>
<string name="prefs_log_title_history">ប្រវត្តិនៃការចូលទៅកាន់</string>
<string name="downloader_download_failed_ticker">ការទាញយកបានបរាជ័យ</string>
<string name="common_choose_account">ជ្រើសគណនី</string>
<string name="foreign_files_move">ផ្លាស់ទីទាំងអស់</string>
- <string name="pincode_enter_pin_code">សូម ដាក់បញ្ចូល App PIN របស់អ្នក</string>
- <string name="pincode_configure_your_pin">បញ្ចូល App PIN របស់អ្នក</string>
- <string name="pincode_reenter_your_pincode">សូម បញ្ចូល App PIN របស់អ្នកម្តងទៀត</string>
- <string name="pincode_remove_your_pincode">លុប App PIN របស់អ្នក</string>
- <string name="pincode_mismatch">App PIN ទាំងនេះមិនដូចគ្នាទេ</string>
- <string name="pincode_wrong">App PIN មិនត្រឹមត្រូវទេ</string>
- <string name="pincode_removed">App PIN បានលុបចេញហើយ</string>
- <string name="pincode_stored">App PIN បានយកមកវិញ</string>
<string name="auth_trying_to_login">កំពុងតែព្យាយាមដើម្បីចូល...</string>
<string name="auth_no_net_conn_title">គ្មានបណ្តាញតភ្ជាប់ទេ</string>
<string name="auth_unknown_error_title">មិនស្គាល់កំហុសបានកើតឡើង!</string>
<string name="prefs_category_more">더 보기</string>
<string name="prefs_accounts">계정</string>
<string name="prefs_manage_accounts">계정 관리</string>
- <string name="prefs_pincode">앱 암호</string>
- <string name="prefs_pincode_summary">내 클라이언트 보호</string>
<string name="prefs_instant_upload">사진 즉시 업로드</string>
<string name="prefs_instant_upload_summary">카메라로 찍은 사진 즉시 업로드</string>
<string name="prefs_instant_video_upload">동영상 즉시 업로드</string>
<string name="foreign_files_local_text">로컬: %1$s</string>
<string name="foreign_files_remote_text">원격: %1$s</string>
<string name="upload_query_move_foreign_files">선택한 파일을 폴더 %1$s(으)로 복사할 공간이 부족합니다. 파일을 이동하시겠습니까?</string>
- <string name="pincode_enter_pin_code">앱 암호를 입력하십시오</string>
- <string name="pincode_configure_your_pin">앱 암호를 입력하십시오</string>
- <string name="pincode_configure_your_pin_explanation">앱을 시작할 때마다 암호를 물어봅니다</string>
- <string name="pincode_reenter_your_pincode">앱 암호를 다시 입력하십시오</string>
- <string name="pincode_remove_your_pincode">앱 암호 삭제</string>
- <string name="pincode_mismatch">앱 암호가 일치하지 않습니다</string>
- <string name="pincode_wrong">앱 암호가 잘못되었습니다</string>
- <string name="pincode_removed">앱 암호가 삭제되었습니다</string>
- <string name="pincode_stored">앱 암호가 저장되었습니다</string>
<string name="media_notif_ticker">%1$s 음악 재생기</string>
<string name="media_state_playing">%1$s (재생 중)</string>
<string name="media_state_loading">%1$s (불러오는 중)</string>
<string name="prefs_category_more">Méi</string>
<string name="prefs_accounts">Konten</string>
<string name="prefs_manage_accounts">Konte geréieren</string>
- <string name="prefs_pincode">App-PIN</string>
- <string name="prefs_pincode_summary">D\'App schützen</string>
<string name="prefs_instant_upload">Biller direkt eroplueden</string>
<string name="prefs_instant_upload_summary">Biller vum Fotoapparat direkt eroplueden</string>
<string name="prefs_instant_video_upload">Videoen direkt eroplueden</string>
<string name="foreign_files_fail">Verschidde Fichiere konnten net geréckelt ginn</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Um Server: %1$s</string>
- <string name="pincode_enter_pin_code">Gëff w.e.g. däin App-PIN an</string>
- <string name="pincode_configure_your_pin">Gëff däin App-PIN an</string>
- <string name="pincode_configure_your_pin_explanation">De PIN gëtt all Kéier gefrot wann d\'App gestart gëtt</string>
- <string name="pincode_reenter_your_pincode">App-PIN nei aginn</string>
- <string name="pincode_remove_your_pincode">App-PIN läschen</string>
- <string name="pincode_mismatch">D\'App-PINe sinn net déi selwescht</string>
- <string name="pincode_wrong">Ongëltegen App-PIN</string>
- <string name="pincode_removed">App-PIN geläscht</string>
- <string name="pincode_stored">App-PIN gespäichert</string>
<string name="media_notif_ticker">%1$s Musek-Programm</string>
<string name="media_state_playing">%1$s (spillt of)</string>
<string name="media_state_loading">%1$s (lued)</string>
<string name="prefs_category_more">Daugiau</string>
<string name="prefs_accounts">Paskyros</string>
<string name="prefs_manage_accounts">Tvarkyti paskyras</string>
- <string name="prefs_pincode">App programos PIN kodas</string>
- <string name="prefs_pincode_summary">Apsaugokite savo klientą</string>
<string name="prefs_instant_upload">Momentiniai nuotraukų įkėlimai</string>
<string name="prefs_instant_upload_summary">Iš karto nusiųsti nufotografuotas nuotraukas</string>
<string name="prefs_instant_video_upload">Momentiniai video įkėlimai</string>
<string name="foreign_files_fail">Kai kurių failų negalima perkelti</string>
<string name="foreign_files_local_text">Vietinis: %1$s</string>
<string name="foreign_files_remote_text">Nuotolinis: %1$s</string>
- <string name="pincode_enter_pin_code">Prašome įvesti savo programos PIN kodą</string>
- <string name="pincode_configure_your_pin">Įveskite taikymas programos PIN kodą</string>
- <string name="pincode_configure_your_pin_explanation">PIN bus prašomas kiekvieną kartą paleidus programą</string>
- <string name="pincode_reenter_your_pincode">Prašome pakartoti taikymas PIN kodą</string>
- <string name="pincode_remove_your_pincode">Pašalinti taikymas programos PIN kodą</string>
- <string name="pincode_mismatch">Abu taikymas programos PIN kodai nesutampa</string>
- <string name="pincode_wrong">Neteisingas taikymas programos PIN kodas</string>
- <string name="pincode_removed">Taikymas programos PIN kodas pašalintas</string>
- <string name="pincode_stored">Taikymas programos PIN kodas išsaugotas</string>
<string name="media_notif_ticker">%1$s muzikos grotuvas</string>
<string name="media_state_playing">%1$s (grojama)</string>
<string name="media_state_loading">%1$s (įkeliama)</string>
<string name="prefs_category_more">Vairāk</string>
<string name="prefs_accounts">Konti</string>
<string name="prefs_manage_accounts">Pārvaldīt kontus</string>
- <string name="prefs_pincode">Lietotnes PIN</string>
- <string name="prefs_pincode_summary">Aizsargā savu klientu</string>
<string name="prefs_instant_upload">Automātiskā bilžu augšuplāde</string>
<string name="prefs_instant_upload_summary">Automātiski augšuplādēt tikko uzņemtās bildes</string>
<string name="prefs_instant_video_upload">Automātiskā video augšuplāde</string>
<string name="sync_conflicts_in_favourites_content">Nevarēja sinhronizēt %1$d kept-in-sync datnes</string>
<string name="sync_fail_in_favourites_ticker">Kept-in-sync datnes cieta neveiksmi</string>
<string name="sync_fail_in_favourites_content">Nevarēja sinhronizēt %1$d datņu saturu (%2$d konflikti)</string>
- <string name="pincode_enter_pin_code">Lūdzu, ierakstiet savu lietotnes PIN</string>
- <string name="pincode_configure_your_pin">Ievadiet savu lietotnes PIN</string>
- <string name="pincode_configure_your_pin_explanation">PIN tiks pieprasīts katrā lietotnes palaišanas reizē</string>
- <string name="pincode_reenter_your_pincode">Lūdzu, vēlreiz ievadiet savu lietotnes PIN</string>
- <string name="pincode_remove_your_pincode">Izņemt savu lietotnes PIN</string>
- <string name="pincode_mismatch">Lietotņu PIN nav vienādi</string>
- <string name="pincode_wrong">Nepareizs lietotnes PIN</string>
- <string name="pincode_removed">Lietotnes PIN ir izņemts</string>
- <string name="pincode_stored">Lietotnes PIN ir noglabāts</string>
<string name="auth_trying_to_login">Mēģina ierakstīties...</string>
<string name="auth_no_net_conn_title">Nav tīkla savienojumu</string>
<string name="auth_nossl_plain_ok_title">Nav pieejams drošs savienojums.</string>
<string name="prefs_category_more">Повеќе</string>
<string name="prefs_accounts">Сметки</string>
<string name="prefs_manage_accounts">Управување со сметки</string>
- <string name="prefs_pincode">Апликативен ПИН</string>
- <string name="prefs_pincode_summary">Заштитете го вашиот клиент</string>
<string name="prefs_log_title">Овозможи логирање</string>
<string name="prefs_help">Помош</string>
<string name="prefs_recommend">Препорачај на пријател</string>
<string name="sync_fail_ticker">Синхронизацијата беше неуспешна</string>
<string name="sync_conflicts_in_favourites_ticker">Пронајден е конфликт</string>
<string name="foreign_files_move">Префрли ги сите</string>
- <string name="pincode_enter_pin_code">Ве молам внесето го вашиот апликативен ПИН</string>
- <string name="pincode_configure_your_pin">Внесето го вашиот апликативен ПИН</string>
- <string name="pincode_reenter_your_pincode">Ве молам повторно внесето го вашиот апликативен ПИН</string>
- <string name="pincode_remove_your_pincode">Одстранете го го вашиот апликативен ПИН</string>
- <string name="pincode_mismatch">Апликативните ПИН-ови не се исти</string>
- <string name="pincode_wrong">Грешен апликативен ПИН</string>
- <string name="pincode_removed">Апликативниот ПИН е одстранет</string>
- <string name="pincode_stored">Апликативниот ПИН е снимен</string>
<string name="auth_trying_to_login">Обиди се да се најавиш...</string>
<string name="auth_no_net_conn_title">Нема мрежна конекција</string>
<string name="auth_nossl_plain_ok_title">Нема безбедна конекција.</string>
<string name="prefs_category_general">Umum</string>
<string name="prefs_category_more">Lanjutan</string>
<string name="prefs_accounts">Akaun</string>
- <string name="prefs_pincode">PIN App</string>
<string name="prefs_help">Bantuan</string>
<string name="auth_username">Nama pengguna</string>
<string name="auth_password">Kata laluan</string>
<string name="uploader_upload_failed_ticker">Muatnaik gagal</string>
<string name="downloader_download_in_progress_ticker">Muatturun....</string>
<string name="common_choose_account">Pilih akaun</string>
- <string name="pincode_configure_your_pin">Masukkan PIN App anda</string>
- <string name="pincode_reenter_your_pincode">Sila, memasukkan semula PIN App anda</string>
- <string name="pincode_stored">PIN App disimpan</string>
<string name="auth_no_net_conn_title">Tiada sambungan rangkaian</string>
<string name="common_rename">Namakan</string>
<string name="common_remove">Buang</string>
<string name="prefs_category_more">Mer</string>
<string name="prefs_accounts">Kontoer</string>
<string name="prefs_manage_accounts">Håndter kontoer</string>
- <string name="prefs_pincode">PIN kode</string>
- <string name="prefs_pincode_summary">Beskytt klienten din</string>
<string name="prefs_instant_upload">Umiddelbare bildeopplastninger</string>
<string name="prefs_instant_upload_summary">Last opp bilder tatt av kameraet umiddelbart</string>
<string name="prefs_instant_video_upload">Umiddelbare video-opplastninger</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Ekstern: %1$s</string>
<string name="upload_query_move_foreign_files">Det er ikke nok plass til å kopiere de valgte filene inn i mappen %1$s. Vil du flytte dem i stedet? </string>
- <string name="pincode_enter_pin_code">Vennligst tast inn din App-PIN</string>
- <string name="pincode_configure_your_pin">Skriv inn din PIN kode</string>
- <string name="pincode_configure_your_pin_explanation">PIN koden vil bli ettersourt hver gang appen starter</string>
- <string name="pincode_reenter_your_pincode">Vennligst tast inn din PIN kode på nytt</string>
- <string name="pincode_remove_your_pincode">Fjern din PIN kode</string>
- <string name="pincode_mismatch">PIN kodene du tastet er ulike</string>
- <string name="pincode_wrong">Feil PIN kode</string>
- <string name="pincode_removed">PIN kode fjernet</string>
- <string name="pincode_stored">PIN kode lagret</string>
<string name="media_notif_ticker">%1$s musikkspiller</string>
<string name="media_state_playing">%1$s (spiller)</string>
<string name="media_state_loading">%1$s (laster)</string>
<string name="prefs_category_more">Meer</string>
<string name="prefs_accounts">Accounts</string>
<string name="prefs_manage_accounts">Beheer accounts</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Beveilig je client</string>
<string name="prefs_instant_upload">Directe uploads van afbeeldingen</string>
<string name="prefs_instant_upload_summary">Direct uploaden van foto\'s genomen met de camera</string>
<string name="prefs_instant_video_upload">Direct uploaden van video\'s</string>
<string name="foreign_files_local_text">Lokaal: %1$s</string>
<string name="foreign_files_remote_text">Extern: %1$s</string>
<string name="upload_query_move_foreign_files">Er is niet genoeg ruimte om de bestanden te gekopieëren in map %1$s. Wilt u ze erheen verplaatsten? </string>
- <string name="pincode_enter_pin_code">Voer App PIN in</string>
- <string name="pincode_configure_your_pin">Voer App PIN in</string>
- <string name="pincode_configure_your_pin_explanation">De PIN wordt steeds opnieuw gevraagd als de app wordt gestart</string>
- <string name="pincode_reenter_your_pincode">Voer App PIN opnieuw in</string>
- <string name="pincode_remove_your_pincode">Verwijder App PIN</string>
- <string name="pincode_mismatch">App PIN\'s komen niet overeen</string>
- <string name="pincode_wrong">Foutieve applicatie PIN</string>
- <string name="pincode_removed">App PIN verwijderd</string>
- <string name="pincode_stored">App PIN opgeslagen</string>
<string name="media_notif_ticker">%1$s muziekspeler</string>
<string name="media_state_playing">%1$s (speelt)</string>
<string name="media_state_loading">%1$s (laden)</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="activity_chooser_title">Verstuur link naar ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Kopiëren bestand vanaf privéopslag</string>
<string name="oauth_check_onoff">Inloggen met oAuth2</string>
<string name="oauth_login_connection">Verbinden met oAuth2-server.</string>
<string name="ssl_validator_header">De identiteit van de site kan niet worden gecontroleerd</string>
<string name="prefs_category_more">Meir</string>
<string name="prefs_accounts">Kontoar</string>
<string name="prefs_manage_accounts">Behandle kontoar</string>
- <string name="prefs_pincode">Programpinkode</string>
- <string name="prefs_pincode_summary">Beskytt klienten din</string>
<string name="prefs_instant_upload">Last opp bilete omgåande</string>
<string name="prefs_instant_upload_summary">Last opp bilete når du tek dei med kameraet</string>
<string name="prefs_instant_video_upload">Last opp film</string>
<string name="common_choose_account">Vel konto</string>
<string name="sync_fail_ticker">Feil ved synkronisering</string>
<string name="sync_fail_content">Klarte ikkje å synkronisera ferdig %1$s</string>
- <string name="pincode_enter_pin_code">Ver venleg og skriv inn programpinkoden</string>
- <string name="pincode_configure_your_pin">Skriv inn programpinkoden</string>
- <string name="pincode_reenter_your_pincode">Ver venleg å skriv inn programpinkoden på nytt</string>
- <string name="pincode_remove_your_pincode">Fjern programpinkoden</string>
- <string name="pincode_mismatch">Programpinkodane er ikkje like</string>
- <string name="pincode_wrong">Feil programpinkode</string>
- <string name="pincode_removed">Programpinkode er fjerna</string>
- <string name="pincode_stored">Programpinkode er lagra</string>
<string name="auth_trying_to_login">Prøvar å logge på...</string>
<string name="auth_no_net_conn_title">Inga nettilkopling</string>
<string name="auth_nossl_plain_ok_title">Trygg tilkopling ikkje tilgjengeleg.</string>
<string name="uploader_upload_in_progress_ticker">Al avalcargar ...</string>
<string name="uploader_upload_succeeded_ticker">Capitada d\'avalcargar</string>
<string name="common_choose_account">Causís lo compte</string>
- <string name="pincode_enter_pin_code">Dintras ton PIN d\'App, se te plai</string>
<string name="common_rename">Torna nomenar</string>
<string name="empty"></string>
<string name="prefs_category_accounts">Comptes</string>
<string name="foreign_files_fail">ਕੁਝ ਫਾਇਲਾਂ ਨੂੰ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</string>
<string name="foreign_files_local_text">ਲੋਕਲ: %1$s</string>
<string name="foreign_files_remote_text">ਰਿਮੋਟ: %1$s</string>
- <string name="pincode_enter_pin_code">ਆਪਣਾ ਐਪ ਪਿੰਨ ਦਿਉ ਜੀ</string>
<string name="media_notif_ticker">%1$s ਸੰਗੀਤ ਪਲੇਅਰ</string>
<string name="media_state_playing">%1$s (ਚੱਲਦਾ ਹੈ)</string>
<string name="media_state_loading">%1$s (ਲੋਡ ਹੁੰਦਾ ਹੈ)</string>
<string name="prefs_category_more">Więcej</string>
<string name="prefs_accounts">Konta</string>
<string name="prefs_manage_accounts">Zarządzaj kontami</string>
- <string name="prefs_pincode">PIN aplikacji</string>
- <string name="prefs_pincode_summary">Chroń swojego klienta</string>
<string name="prefs_instant_upload">natychmiastowa wysyłka obrazków</string>
<string name="prefs_instant_upload_summary">Wysyłaj od razu zdjęcia zrobione aparatem</string>
<string name="prefs_instant_video_upload">Natychmiastowa wysyłka wideo</string>
<string name="foreign_files_local_text">Lokalnie: %1$s</string>
<string name="foreign_files_remote_text">Zdalnie: %1$s</string>
<string name="upload_query_move_foreign_files">Nie ma wystarczająco miejśca, aby skopiować zaznaczone pliki do folderu %1$s. Chciałbyś je przenieść?</string>
- <string name="pincode_enter_pin_code">Podaj PIN aplikacji</string>
- <string name="pincode_configure_your_pin">Wpisz PIN aplikacji</string>
- <string name="pincode_configure_your_pin_explanation">Kod PIN będzie wymagany za każdym razem, gdy aplikacja będzie uruchamiana.</string>
- <string name="pincode_reenter_your_pincode">Ponownie wpisz PIN aplikacji</string>
- <string name="pincode_remove_your_pincode">Usuń PIN aplikacji</string>
- <string name="pincode_mismatch">Podane numery PIN są różne</string>
- <string name="pincode_wrong">Niepoprawny PIN aplikacji</string>
- <string name="pincode_removed">Usunięto PIN aplikacji</string>
- <string name="pincode_stored">Zapisano PIN aplikacji</string>
<string name="media_notif_ticker">%1$s odtwarzacz muzyki</string>
<string name="media_state_playing">%1$s (odtwarzany)</string>
<string name="media_state_loading">%1$s (wczytywany)</string>
<string name="prefs_category_more">Mais</string>
<string name="prefs_accounts">Contas</string>
<string name="prefs_manage_accounts">Gerenciar Contas</string>
- <string name="prefs_pincode">PIN App</string>
- <string name="prefs_pincode_summary">Proteja seu cliente</string>
<string name="prefs_instant_upload">Envio instantâneo de imagem</string>
<string name="prefs_instant_upload_summary">Enviar instantaneamente fotos tiradas com a camera</string>
<string name="prefs_instant_video_upload">Envio instantâneo de vídeos</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
<string name="upload_query_move_foreign_files">Não existe espaço suficiente para copiar os arquivos selecionados para a pasta %1$s. Você gostaria de ao invés de copiar movê-los? </string>
- <string name="pincode_enter_pin_code">Por favor, insira o seu PIN de Aplicativo</string>
- <string name="pincode_configure_your_pin">Insira seu PIN de Aplicativo</string>
- <string name="pincode_configure_your_pin_explanation">O PIN (senha) será solicitado toda vez que o aplicativo for iniciado</string>
- <string name="pincode_reenter_your_pincode">Por favor, reinsira seu PIN de Aplicativo</string>
- <string name="pincode_remove_your_pincode">Remova seu PIN de Aplicativo</string>
- <string name="pincode_mismatch">Os PINs de Aplicativo não são iguais</string>
- <string name="pincode_wrong">PIN de Aplicativo incorreto</string>
- <string name="pincode_removed">PIN de Aplicativo removido</string>
- <string name="pincode_stored">PIN de Aplicativo armazenado</string>
<string name="media_notif_ticker">%1$s reprodutor de música</string>
<string name="media_state_playing">%1$s (reproduzindo)</string>
<string name="media_state_loading">%1$s (carregando)</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="activity_chooser_title">Enviar o link para</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Copiando o arquivo de armazenagem privada</string>
<string name="oauth_check_onoff">Login com oAuth2</string>
<string name="oauth_login_connection">Conectando-se a oAuth2 servidor ...</string>
<string name="ssl_validator_header">A identidade do site não pode ser verificada</string>
<string name="prefs_category_more">Mais</string>
<string name="prefs_accounts">Contas</string>
<string name="prefs_manage_accounts">Gerir Contas</string>
- <string name="prefs_pincode">PIN da App</string>
- <string name="prefs_pincode_summary">Proteja o seu cliente</string>
<string name="prefs_instant_upload">Envios instantâneos de imagens</string>
<string name="prefs_instant_upload_summary">Envio instantâneo de imagens tiradas com a câmara</string>
<string name="prefs_instant_video_upload">Envios instantâneos dos vídeos</string>
<string name="foreign_files_local_text">Local: %1$s</string>
<string name="foreign_files_remote_text">Remoto: %1$s</string>
<string name="upload_query_move_foreign_files">Não existe espaço disponível para copiar o ficheiro seleccionado para a pasta %1$s . Em vez disso deseja mover o ficheiro?</string>
- <string name="pincode_enter_pin_code">Por favor, insira o PIN da App</string>
- <string name="pincode_configure_your_pin">Insira o PIN da App</string>
- <string name="pincode_configure_your_pin_explanation">O PIN será pedido sempre que a app seja iniciada.</string>
- <string name="pincode_reenter_your_pincode">Por favor, reinsira o PIN da App</string>
- <string name="pincode_remove_your_pincode">Remover o seu PIN da App</string>
- <string name="pincode_mismatch">Os CÓDIGOS da APP não são iguais</string>
- <string name="pincode_wrong">CÓDIGO da App Incorreto</string>
- <string name="pincode_removed">CÓDIGOS da App removido</string>
- <string name="pincode_stored">CÓDIGO da App guardado</string>
<string name="media_notif_ticker">%1$s reprodutor de música</string>
<string name="media_state_playing">%1$s (a reproduzir)</string>
<string name="media_state_loading">%1$s (a carregar)</string>
<string name="prefs_category_more">Mai mult</string>
<string name="prefs_accounts">Conturi</string>
<string name="prefs_manage_accounts">Administrare conturi</string>
- <string name="prefs_pincode">PIN-ul aplicaţiei</string>
- <string name="prefs_pincode_summary">Protejaţi-vă clientul</string>
<string name="prefs_instant_upload">Încărcare instantă de imagini</string>
<string name="prefs_instant_upload_summary">Încarcă instantant imagini luate cu camera</string>
<string name="prefs_instant_video_upload">Încărcare instantă de videoclipuri.</string>
<string name="foreign_files_remote_text">La distanta: %1$s</string>
<string name="upload_query_move_foreign_files">Nu este suficient spațiu pentru a copia fișierele selectate în dosarul %1$s . Dorești să le muți în loc?
</string>
- <string name="pincode_enter_pin_code">Te rugăm să specifici PIN-ul aplicației</string>
- <string name="pincode_configure_your_pin">Introduceti PIN-ul aplicatiei</string>
- <string name="pincode_configure_your_pin_explanation">PIN-ul va fi solicitat ori de cate ori aplicaţia este pornita</string>
- <string name="pincode_reenter_your_pincode">Va rugam , reintroduceti PIN-ul aplicatiei</string>
- <string name="pincode_remove_your_pincode">Elimină PIN-ul aplicației</string>
- <string name="pincode_mismatch">Cele două PIN-uri ale aplicației nu sunt similare</string>
- <string name="pincode_wrong">PIN-ul aplicației este incorect</string>
- <string name="pincode_removed">PIN-ul aplicației a fost eliminat</string>
- <string name="pincode_stored">PIN-ul aplicației a fost memorat</string>
<string name="media_notif_ticker">%1$s player de muzică</string>
<string name="media_state_playing">%1$s (cântă)</string>
<string name="media_state_loading">%1$s (încarcă)</string>
<string name="prefs_category_more">Больше</string>
<string name="prefs_accounts">Учётные записи</string>
<string name="prefs_manage_accounts">Управление учётными записями</string>
- <string name="prefs_pincode">PIN приложения</string>
- <string name="prefs_pincode_summary">Защитить ваш клиент</string>
<string name="prefs_instant_upload">Мгновенная загрузка фотографий</string>
<string name="prefs_instant_upload_summary">Немедленно загружать фотографии сделанные камерой</string>
<string name="prefs_instant_video_upload">Мгновенная загрузка видео</string>
<string name="foreign_files_local_text">Локальные: %1$s</string>
<string name="foreign_files_remote_text">Удаленные: %1$s</string>
<string name="upload_query_move_foreign_files">Для копирования выбранных файлов в каталог %1$s недостаточно свободного места. Скопировать в другое место?</string>
- <string name="pincode_enter_pin_code">Укажите PIN приложения</string>
- <string name="pincode_configure_your_pin">Введите PIN приложения</string>
- <string name="pincode_configure_your_pin_explanation">PIN будет запрашиваться при каждом запуске приложения.</string>
- <string name="pincode_reenter_your_pincode">Повторите ввод PIN приложения</string>
- <string name="pincode_remove_your_pincode">Удалить PIN приложения</string>
- <string name="pincode_mismatch">Введённые PIN не совпадают</string>
- <string name="pincode_wrong">Неверный PIN приложения</string>
- <string name="pincode_removed">PIN приложения удалён</string>
- <string name="pincode_stored">PIN приложения сохранён</string>
<string name="media_notif_ticker">%1$s аудиоплеер</string>
<string name="media_state_playing">%1$s (проигрывается)</string>
<string name="media_state_loading">%1$s (загружается)</string>
<string name="prefs_category_more">වැඩි</string>
<string name="prefs_accounts">ගිණුම්</string>
<string name="prefs_manage_accounts">ගිණුම් කළමනාකරනය</string>
- <string name="prefs_pincode_summary">ඔබේ සේවාලාභියා සුරකින්න</string>
<string name="prefs_help">උදව්</string>
<string name="auth_username">පරිශීලක නම</string>
<string name="auth_password">මුර පදය</string>
<string name="prefs_category_more">Viac</string>
<string name="prefs_accounts">Účty</string>
<string name="prefs_manage_accounts">Správa účtov</string>
- <string name="prefs_pincode">PIN aplikácie</string>
- <string name="prefs_pincode_summary">Chrániť klienta aplikácie</string>
<string name="prefs_instant_upload">Okamžité nahratie obrázka</string>
<string name="prefs_instant_upload_summary">Okamžite nahrať obrázok zaznamenaný fotoaparátom</string>
<string name="prefs_instant_video_upload">Okamžité nahranie videa</string>
<string name="foreign_files_local_text">Lokálne: %1$s</string>
<string name="foreign_files_remote_text">Vzdialené: %1$s</string>
<string name="upload_query_move_foreign_files">Nie je dostatok miesta na skopírovanie vybraných súborov do priečinka %1$s. Želáte si ich namiesto toho presunúť?</string>
- <string name="pincode_enter_pin_code">Zadajte PIN aplikácie</string>
- <string name="pincode_configure_your_pin">Zadajte PIN aplikácie</string>
- <string name="pincode_configure_your_pin_explanation">Pri každom spustení aplikácie bude vyžadovaný PIN</string>
- <string name="pincode_reenter_your_pincode">Zadajte znovu PIN aplikácie</string>
- <string name="pincode_remove_your_pincode">Zrušiť PIN pre aplikáciu</string>
- <string name="pincode_mismatch">PINy sa neshodujú</string>
- <string name="pincode_wrong">Nesprávny PIN aplikácie</string>
- <string name="pincode_removed">PIN aplikácie bol odstránený</string>
- <string name="pincode_stored">PIN aplikácie bol uložený</string>
<string name="media_notif_ticker">Prehrávač hudby %1$s</string>
<string name="media_state_playing">%1$s (prehráva)</string>
<string name="media_state_loading">%1$s (načítava)</string>
<string name="prefs_category_more">Več</string>
<string name="prefs_accounts">Računi</string>
<string name="prefs_manage_accounts">Upravljanje z računi</string>
- <string name="prefs_pincode">Koda PIN programa</string>
- <string name="prefs_pincode_summary">Zaščitite odjemalec</string>
<string name="prefs_instant_upload">Takojšnje pošiljanje slik</string>
<string name="prefs_instant_upload_summary">Takojšnje pošiljanje slik, zajetih s fotoaparatom, na strežnik</string>
<string name="prefs_instant_video_upload">Takojšnje pošiljanje posnetkov</string>
<string name="foreign_files_local_text">Krajevno: %1$s</string>
<string name="foreign_files_remote_text">Oddaljeno: %1$s</string>
<string name="upload_query_move_foreign_files">Ni dovolj prostora za kopiranje izbranih datotek v mapo %1$s. Ali jih želite premakniti?</string>
- <string name="pincode_enter_pin_code">Vnesite kodo PIN programa</string>
- <string name="pincode_configure_your_pin">Vnesite kodo PIN programa</string>
- <string name="pincode_configure_your_pin_explanation">Koda PIN bo zahtevana vsakič pred zagonom programa.</string>
- <string name="pincode_reenter_your_pincode">Ponovno vnesite kodo PIN programa</string>
- <string name="pincode_remove_your_pincode">Odstrani kodo PIN programa</string>
- <string name="pincode_mismatch">Vrednosti kod PIN programa nista enaki</string>
- <string name="pincode_wrong">Nepravilna koda PIN programa</string>
- <string name="pincode_removed">Koda PIN programa je odstranjena</string>
- <string name="pincode_stored">Koda PIN programa je shranjena</string>
<string name="media_notif_ticker">Predvajalnik glasbe %1$s</string>
<string name="media_state_playing">%1$s (se predvaja)</string>
<string name="media_state_loading">%1$s (se nalaga)</string>
<string name="prefs_category_general">Përgjithshme</string>
<string name="prefs_category_more">Më tepër</string>
<string name="prefs_accounts">Llogarit</string>
- <string name="prefs_pincode">PIN-i Aplikacionit</string>
- <string name="prefs_pincode_summary">Ruani klientin tuaj</string>
<string name="prefs_help">Ndihmë</string>
<string name="prefs_imprint">Stampoj</string>
<string name="auth_username">Përdoruesi</string>
<string name="downloader_download_succeeded_content">%1$s u shkarkua me sukses</string>
<string name="downloader_download_failed_ticker">Shkarkimi dështoj</string>
<string name="common_choose_account">Zgjidhni Llogarine</string>
- <string name="pincode_enter_pin_code">Lutemi, vendosni PIN tuaj</string>
- <string name="pincode_reenter_your_pincode">Lutemi, rivendosni PIN tuaj</string>
- <string name="pincode_remove_your_pincode">Hiqni PIN in tuaj</string>
- <string name="pincode_mismatch">PIN-et nuk jane te njejte</string>
- <string name="pincode_wrong">PIN i gabuar</string>
- <string name="pincode_removed">PIN-i u hoq</string>
- <string name="pincode_stored">PIN-i u ruajt</string>
<string name="auth_no_net_conn_title">Nuk ka lidhje ne Rrjet</string>
<string name="auth_connection_established">Lidhja u vendos</string>
<string name="auth_secure_connection">Lidhja e Sigurt vendos</string>
<string name="prefs_category_more">Остало</string>
<string name="prefs_accounts">Налози</string>
<string name="prefs_manage_accounts">Управљање налозима</string>
- <string name="prefs_pincode">ПИБ апликације</string>
- <string name="prefs_pincode_summary">заштитите програм</string>
<string name="prefs_instant_upload">Отпремање фотографија</string>
<string name="prefs_instant_upload_summary">тренутно отпремај фотографије сликане камером</string>
<string name="prefs_instant_video_upload">Отпремање видеа</string>
<string name="foreign_files_local_text">Локално: %1$s</string>
<string name="foreign_files_remote_text">Удаљено: %1$s</string>
<string name="upload_query_move_foreign_files">Нема довољно простора да би се изабрани фајлови копирали у фасциклу %1$s. Желите ли да их преместите? </string>
- <string name="pincode_enter_pin_code">Унесите ПИБ за апликацију</string>
- <string name="pincode_configure_your_pin">Унесите ПИБ за апликацију</string>
- <string name="pincode_configure_your_pin_explanation">Приликом сваког покретања апликације мораћете да унесете ПИБ</string>
- <string name="pincode_reenter_your_pincode">Унесите ПИБ поново</string>
- <string name="pincode_remove_your_pincode">Уклоните ПИБ апликације</string>
- <string name="pincode_mismatch">Бројеви се не поклапају</string>
- <string name="pincode_wrong">Неисправан ПИБ</string>
- <string name="pincode_removed">ПИБ је уклоњен</string>
- <string name="pincode_stored">ПИБ је упамћен</string>
<string name="media_notif_ticker">%1$s музички плејер</string>
<string name="media_state_playing">%1$s (пуштам)</string>
<string name="media_state_loading">%1$s (учитавам)</string>
<string name="filedisplay_unexpected_bad_get_content">Неочекивани проблем. Изаберите фајл другом апликацијом</string>
<string name="filedisplay_no_file_selected">Нисте изабрали фајл</string>
<string name="activity_chooser_title">Пошаљи везу ...</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Копирам фајл из личног складишта</string>
<string name="oauth_check_onoff">Пријави се помоћу „oAuth2“</string>
<string name="oauth_login_connection">Повезујем се на „oAuth2“ сервер...</string>
<string name="ssl_validator_header">Не могу да проверим идентитет сајта</string>
<string name="prefs_category_more">Mer</string>
<string name="prefs_accounts">Konton</string>
<string name="prefs_manage_accounts">Hantera konton</string>
- <string name="prefs_pincode">applikation PIN</string>
- <string name="prefs_pincode_summary">Skydda applikation-klienten</string>
<string name="prefs_instant_upload">Direktuppladdning av kamerabilder</string>
<string name="prefs_instant_upload_summary">Direktuppladning av bilder tagna med kameran</string>
<string name="prefs_instant_video_upload">Direktuppladning av video</string>
<string name="foreign_files_local_text">Lokal: %1$s</string>
<string name="foreign_files_remote_text">Fjärr: %1$s</string>
<string name="upload_query_move_foreign_files">Det finns inte tillräckligt med ledigt utrymme för att kopiera de valda filerna till %1$s mappen. Skulle du vilja flytta dem istället?</string>
- <string name="pincode_enter_pin_code">Ange din PIN</string>
- <string name="pincode_configure_your_pin">Ange applikation PIN</string>
- <string name="pincode_configure_your_pin_explanation">Din PIN måste anges varje gång du startar programmet.</string>
- <string name="pincode_reenter_your_pincode">Ange applikation PIN igen</string>
- <string name="pincode_remove_your_pincode">Radera applikation PIN</string>
- <string name="pincode_mismatch">Båda applikation PIN är inte lika</string>
- <string name="pincode_wrong">Felaktig applikationd PIN</string>
- <string name="pincode_removed">applikation PIN raderad</string>
- <string name="pincode_stored">applikation PIN sparad</string>
<string name="media_notif_ticker">%1$ musikspelare</string>
<string name="media_state_playing">%1$s (spelar)</string>
<string name="media_state_loading">%1$s (buffrar)</string>
<string name="prefs_category_more">மேலும்</string>
<string name="prefs_accounts">கணக்குகள்</string>
<string name="prefs_manage_accounts">கணக்குகளை நிர்வகி</string>
- <string name="prefs_pincode">மென்பொருள் பதிவு எண் </string>
- <string name="prefs_pincode_summary">உங்கள் வாடிக்கையாளர் பாதுகாக்கவும்</string>
<string name="prefs_instant_upload">உடனடி புகைப்பட பதிவேற்றம்</string>
<string name="prefs_instant_upload_summary">உடனடியாக கேமரா மூலம் எடுக்கப்பட்ட படங்களை பதிவேற்றம் செய்யவும்</string>
<string name="prefs_instant_video_upload">உடனடி காணொளி பதிவேற்றம்</string>
<string name="prefs_category_more">மேலதிக</string>
<string name="prefs_accounts">கணக்குகள்</string>
<string name="prefs_manage_accounts">கணக்குகளை நிர்வகிக்க</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">உங்களுடைய சேவைப் பயனரை பாதுகாக்க</string>
<string name="prefs_help">உதவி</string>
<string name="auth_username">பயனாளர் பெயர்</string>
<string name="auth_password">கடவுச்சொல்</string>
<string name="sync_fail_content">ஒத்திசைவாக்கலின் %1$s ஆனதை முடிக்கமுடியவில்லை</string>
<string name="sync_conflicts_in_favourites_ticker">முரன்பாடுகள் கண்டுப்பிடிக்கப்பட்டன</string>
<string name="sync_fail_in_favourites_content">கோப்புகள் %1$d இலுள்ள உள்ளடக்கங்களை ஒத்திசைவாக்கமுடியாது (%2$d முரன்பாடுகள்) </string>
- <string name="pincode_enter_pin_code">தயவுசெய்து உங்களுடைய App PIN ஐ உள்ளிடுக</string>
- <string name="pincode_configure_your_pin">இன் App PIN ஐ உள்ளிடுக</string>
- <string name="pincode_configure_your_pin_explanation">செயலி தொடங்கும் ஒவ்வொரு நேரமும் PIN கேட்கப்படுகின்றது.</string>
- <string name="pincode_reenter_your_pincode">தயவுசெய்து மீண்டும் App PIN ஐ உள்ளிடுக</string>
- <string name="pincode_remove_your_pincode">உங்களுடைய App PIN ஐ அகற்றுக</string>
- <string name="pincode_mismatch">இரண்டு App PIN களும் ஒன்றே அல்ல</string>
- <string name="pincode_wrong">தவறான App PIN </string>
- <string name="pincode_removed">App PIN அகற்றப்பட்டது</string>
- <string name="pincode_stored">App PIN சேமிக்கப்பட்டது</string>
<string name="auth_trying_to_login">புகுபதிகைக்கு முயற்சிக்கின்றது...</string>
<string name="auth_no_net_conn_title">வலையமைப்பு இணைப்பு இல்லை</string>
<string name="auth_nossl_plain_ok_title">பாதுகாப்பான இணைப்பு காணப்படவில்லை.</string>
<string name="prefs_category_more">มาก</string>
<string name="prefs_accounts">บัญชี</string>
<string name="prefs_manage_accounts">บริหารจัดการบัญชี</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">ป้องกันโปรแกรมไคลเอนต์ ของคุณ</string>
<string name="prefs_help">ช่วยเหลือ</string>
<string name="auth_username">ชื่อผู้ใช้</string>
<string name="auth_password">รหัสผ่าน</string>
<string name="foreign_files_fail">มีบางแฟ้มข้อมูลไม่สามารถย้ายได้</string>
<string name="foreign_files_local_text">ต้นทาง: %1$s</string>
<string name="foreign_files_remote_text">ปลายทาง: %1$s</string>
- <string name="pincode_enter_pin_code">กรุณาใส่ PIN แอปของคุณ</string>
- <string name="pincode_configure_your_pin">กรอกรหัส PIN ของ App</string>
- <string name="pincode_configure_your_pin_explanation">หมายเลข PIN ดังกล่าวจะถูกร้องขอทุกครั้งที่เริ่มใช้งานแอปฯ</string>
- <string name="pincode_reenter_your_pincode">กรุณากรอกรหัส PIN ของแอป App ใหม่อีกครั้ง</string>
- <string name="pincode_remove_your_pincode">ลบรหัส PIN แอป ของ App ของคุณ</string>
- <string name="pincode_mismatch">รหัส App API ไม่ตรงกัน</string>
- <string name="pincode_wrong">รหัส PIN App ไม่ถูกต้อง</string>
- <string name="pincode_removed">รหัส PIN แอปสำหรับ ถูกลบออกแล้ว</string>
- <string name="pincode_stored">จัดเก็บรหัส PIN แอป ของ แล้ว</string>
<string name="auth_trying_to_login">กำลังเข้าสู่ระบบ...</string>
<string name="auth_no_net_conn_title">ไม่มีการเชื่อมต่อเครือข่ายใดๆ</string>
<string name="auth_nossl_plain_ok_title">การเชื่อมต่อแบบรักษาความปลอดภัยไม่สามารถใช้งานได้</string>
<string name="prefs_category_more">Daha fazla</string>
<string name="prefs_accounts">Hesaplar</string>
<string name="prefs_manage_accounts">Hesapları Yönet</string>
- <string name="prefs_pincode">Uygulama PIN\'i</string>
- <string name="prefs_pincode_summary">İstemcinizi koruyun</string>
<string name="prefs_instant_upload">Anında fotoğraf yüklemeleri</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="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ı içine 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 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="pincode_stored">Uygulama PIN\'i saklandı</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="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="wait_for_tmp_copy_from_private_storage">Dosyalar özel alandan kopyalanıyor</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="prefs_category_more">Більше</string>
<string name="prefs_accounts">Облікові записи</string>
<string name="prefs_manage_accounts">Управління обліковими записами</string>
- <string name="prefs_pincode">App програмний PIN</string>
- <string name="prefs_pincode_summary">Захист Вашог App клієнта</string>
<string name="prefs_instant_upload">Миттєві зображення</string>
<string name="prefs_instant_upload_summary">Миттєві зображення з камери</string>
<string name="prefs_instant_video_upload">Миттєві відео</string>
<string name="foreign_files_local_text">Локально: %1$s</string>
<string name="foreign_files_remote_text">Віддалено: %1$s</string>
<string name="upload_query_move_foreign_files">Недостатньо місця для копіювання обраних файлів у теку %1$s. Чи бажаєте ви перемістити їх замість копіювання?</string>
- <string name="pincode_enter_pin_code">Будь ласка, введіть свій програмний PIN</string>
- <string name="pincode_configure_your_pin">Введіть програмний PIN</string>
- <string name="pincode_configure_your_pin_explanation">PIN необхідно буде вводити щоразу при запуску цієї програми</string>
- <string name="pincode_reenter_your_pincode">Повторно введіть App програмний PIN, будь ласка</string>
- <string name="pincode_remove_your_pincode">Видалити свій App програмний PIN</string>
- <string name="pincode_mismatch">Обидва App програмних PIN не однакові</string>
- <string name="pincode_wrong">Не вірний App програмний PIN</string>
- <string name="pincode_removed">App програмний PIN видалено</string>
- <string name="pincode_stored">App програмний PIN збережено</string>
<string name="media_notif_ticker">%1$s музичний плеєр</string>
<string name="media_state_playing">%1$s (відтворення)</string>
<string name="media_state_loading">%1$s (завантаження)</string>
<string name="prefs_category_more">hơn</string>
<string name="prefs_accounts">Tài khoản</string>
<string name="prefs_manage_accounts">Quản lý tài khoản</string>
- <string name="prefs_pincode">Mã PIN ứng dụng App</string>
- <string name="prefs_pincode_summary">Bảo vệ App client của bạn</string>
<string name="prefs_log_title">Bật chế độ nhật trình</string>
<string name="prefs_log_summary">Được sử dụng cho các vấn đề liên quan đến nhật trình</string>
<string name="prefs_log_title_history">Nhật trình dữ kiện</string>
<string name="foreign_files_fail">Một vài tập tin không thể chuyển đi</string>
<string name="foreign_files_local_text">Cục bộ: %1$s</string>
<string name="foreign_files_remote_text">Từ xa: %1$s</string>
- <string name="pincode_enter_pin_code">Vui lòng, nhập mã PIN ứng dụng của bạn</string>
- <string name="pincode_configure_your_pin">Nhập mã PIN ứng dụng App</string>
- <string name="pincode_configure_your_pin_explanation">Mã PIN sẽ được yêu cầu mỗi khi ứng dụng được bật </string>
- <string name="pincode_reenter_your_pincode">Vui lòng nhập lại mã PIN ứng dụng App</string>
- <string name="pincode_remove_your_pincode">Hủy mã PIN ứng dụng App của bạn</string>
- <string name="pincode_mismatch">Mã PIN ứng dụng App không được trùng</string>
- <string name="pincode_wrong">Mã PIN ứng dụng App không đúng</string>
- <string name="pincode_removed">Mã PIN ứng dụng App đã bị xóa</string>
- <string name="pincode_stored">Mã PIN ứng dụng App đã được lưu trữ</string>
<string name="media_notif_ticker">%1$s trình phát nhạc</string>
<string name="media_state_playing">%1$s (đang phát)</string>
<string name="media_state_loading">%1$s (đang tải)</string>
<string name="prefs_category_more">更多</string>
<string name="prefs_accounts">账号</string>
<string name="prefs_manage_accounts">管理账号</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">保护客户端</string>
<string name="prefs_instant_upload">即时图片上传</string>
<string name="prefs_instant_upload_summary">即时上传相机拍摄的图片</string>
<string name="prefs_instant_video_upload">即时上传视频</string>
<string name="foreign_files_local_text">本地: %1$s</string>
<string name="foreign_files_remote_text">远程:%1$s</string>
<string name="upload_query_move_foreign_files">没有足够的空间以复制选定的文件到 %1$s 文件夹,您想移动文件到此文件夹吗?</string>
- <string name="pincode_enter_pin_code">请输入您的App PIN码</string>
- <string name="pincode_configure_your_pin">输入 App PIN码</string>
- <string name="pincode_configure_your_pin_explanation">每次应用启动时都会请求PIN码</string>
- <string name="pincode_reenter_your_pincode">再次输入 App PIN码</string>
- <string name="pincode_remove_your_pincode">移除 App PIN码</string>
- <string name="pincode_mismatch">两次 App PIN码不同</string>
- <string name="pincode_wrong">App PIN码不正确</string>
- <string name="pincode_removed">App PIN码已移除</string>
- <string name="pincode_stored">App PIN码已保存</string>
<string name="media_notif_ticker">%1$s 音乐播放器</string>
<string name="media_state_playing">%1$s (播放中)</string>
<string name="media_state_loading">%1$s (载入中)</string>
<string name="prefs_category_more">更多</string>
<string name="prefs_accounts">帳號</string>
<string name="prefs_manage_accounts">管理帳號</string>
- <string name="prefs_pincode">App 密碼</string>
- <string name="prefs_pincode_summary">保護您的 App 用戶端</string>
<string name="prefs_instant_upload">即時圖片上傳</string>
<string name="prefs_instant_upload_summary">即時上傳相機照片</string>
<string name="prefs_instant_video_upload">即時影像上傳</string>
<string name="foreign_files_local_text">本地: %1$s</string>
<string name="foreign_files_remote_text">遠端: %1$s</string>
<string name="upload_query_move_foreign_files">無足夠的空間可以複製檔案到 %1$s 目錄. 是否使用移動的方式來處理? </string>
- <string name="pincode_enter_pin_code">請輸入您的 App 密碼</string>
- <string name="pincode_configure_your_pin">輸入您的 App 密碼</string>
- <string name="pincode_configure_your_pin_explanation">這個密碼在你每次啟動這程式時都會被要求輸入</string>
- <string name="pincode_reenter_your_pincode">請重新輸入您的 App 密碼</string>
- <string name="pincode_remove_your_pincode">移除您的 App 密碼</string>
- <string name="pincode_mismatch">App 密碼不相符</string>
- <string name="pincode_wrong">App 密碼不正確</string>
- <string name="pincode_removed">App 密碼已移除</string>
- <string name="pincode_stored">App 密碼已儲存</string>
<string name="media_notif_ticker">%1$s 音樂播放器</string>
<string name="media_state_playing">%1$s (播放中)</string>
<string name="media_state_loading">%1$s (載入中)</string>
<string name="prefs_category_more">More</string>
<string name="prefs_accounts">Accounts</string>
<string name="prefs_manage_accounts">Manage Accounts</string>
- <string name="prefs_pincode">App PIN</string>
- <string name="prefs_pincode_summary">Protect your client</string>
+ <string name="prefs_passcode">Passcode lock</string>
<string name="prefs_instant_upload">Instant picture uploads</string>
<string name="prefs_instant_upload_summary">Instantly upload pictures taken by camera</string>
<string name="prefs_instant_video_upload">Instant video uploads</string>
<string name="foreign_files_local_text">"Local: %1$s"</string>
<string name="foreign_files_remote_text">"Remote: %1$s"</string>
<string name="upload_query_move_foreign_files">There is not space enough to copy the selected files into the %1$s folder. Would you like to move them instead? </string>
- <string name="pincode_enter_pin_code">Please, insert your App PIN</string>
+ <string name="pass_code_enter_pass_code">Please, insert your passcode</string>
- <string name="pincode_configure_your_pin">Enter your App PIN</string>
- <string name="pincode_configure_your_pin_explanation">The PIN will be requested every time the app is started</string>
- <string name="pincode_reenter_your_pincode">Please, reenter your App PIN</string>
- <string name="pincode_remove_your_pincode">Remove your App PIN</string>
- <string name="pincode_mismatch">The App PINs are not the same</string>
- <string name="pincode_wrong">Incorrect App PIN</string>
- <string name="pincode_removed">App PIN removed</string>
- <string name="pincode_stored">App PIN stored</string>
+ <string name="pass_code_configure_your_pass_code">Enter your passcode</string>
+ <string name="pass_code_configure_your_pass_code_explanation">The passcode will be requested every time the app is started</string>
+ <string name="pass_code_reenter_your_pass_code">Please, reenter your passcode</string>
+ <string name="pass_code_remove_your_pass_code">Remove your passcode</string>
+ <string name="pass_code_mismatch">The passcodes are not the same</string>
+ <string name="pass_code_wrong">Incorrect passcode</string>
+ <string name="pass_code_removed">Passcode removed</string>
+ <string name="pass_code_stored">Passcode stored</string>
<string name="media_notif_ticker">"%1$s music player"</string>
<string name="media_state_playing">"%1$s (playing)"</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="activity_chooser_title">Send link to …</string>
+ <string name="wait_for_tmp_copy_from_private_storage">Copying file from private storage</string>
<string name="oauth_check_onoff">Login with oAuth2</string>
<string name="oauth_login_connection">Connecting to oAuth2 server…</string>
</PreferenceCategory>
<PreferenceCategory android:title="@string/prefs_category_security">
- <!-- ListPreference
- android:key="select_oc_account"
- android:title="@string/prefs_select_oc_account"
- android:summary="@string/prefs_summary_select_oc_account"
- / -->
- <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:title="@string/prefs_pincode" android:key="set_pincode"
- android:summary="@string/prefs_pincode_summary"/>
+ <android.preference.CheckBoxPreference android:title="@string/prefs_passcode" android:key="set_pincode" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/prefs_category_instant_uploading" android:key="instant_uploading_category">
*/
package com.owncloud.android;
+import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import com.owncloud.android.authentication.PassCodeManager;
import com.owncloud.android.datamodel.ThumbnailsCacheManager;
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory.Policy;
import com.owncloud.android.lib.common.utils.Log_OC;
+
/**
* Main Application of the project
*
private static final String TAG = MainApp.class.getSimpleName();
private static final String AUTH_ON = "on";
-
+
@SuppressWarnings("unused")
private static final String POLICY_SINGLE_SESSION_PER_ACCOUNT = "single session per account";
@SuppressWarnings("unused")
Log_OC.startLogging();
Log_OC.d("Debug", "start logging");
}
+
+ // register global protection with pass code
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ this.registerActivityLifecycleCallbacks( new ActivityLifecycleCallbacks() {
+
+ @Override
+ public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onCreate(Bundle) starting" );
+ PassCodeManager.getPassCodeManager().onActivityCreated(activity);
+ }
+
+ @Override
+ public void onActivityStarted(Activity activity) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onStart() starting" );
+ PassCodeManager.getPassCodeManager().onActivityStarted(activity);
+ }
+
+ @Override
+ public void onActivityResumed(Activity activity) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onResume() starting" );
+ }
+
+ @Override
+ public void onActivityPaused(Activity activity) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onPause() ending");
+ }
+
+ @Override
+ public void onActivityStopped(Activity activity) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onStop() ending" );
+ PassCodeManager.getPassCodeManager().onActivityStopped(activity);
+ }
+
+ @Override
+ public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onSaveInstanceState(Bundle) starting" );
+ }
+
+ @Override
+ public void onActivityDestroyed(Activity activity) {
+ Log_OC.d(activity.getClass().getSimpleName(), "onDestroy() ending" );
+ }
+ });
+ }
}
public static Context getAppContext() {
--- /dev/null
+/**
+ * ownCloud Android client application
+ *
+ * @author David A. Velasco
+ * Copyright (C) 2015 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.authentication;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.PowerManager;
+import android.preference.PreferenceManager;
+import android.view.WindowManager;
+
+import com.owncloud.android.MainApp;
+import com.owncloud.android.ui.activity.PassCodeActivity;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class PassCodeManager {
+
+ private static final Set<Class> sExemptOfPasscodeActivites;
+
+ static {
+ sExemptOfPasscodeActivites = new HashSet<Class>();
+ sExemptOfPasscodeActivites.add(PassCodeActivity.class);
+ // other activities may be exempted, if needed
+ }
+
+ private static int PASS_CODE_TIMEOUT = 1000;
+ // keeping a "low" positive value is the easiest way to prevent the pass code is requested on rotations
+
+ public static PassCodeManager mPassCodeManagerInstance = null;
+
+ public static PassCodeManager getPassCodeManager() {
+ if (mPassCodeManagerInstance == null) {
+ mPassCodeManagerInstance = new PassCodeManager();
+ }
+ return mPassCodeManagerInstance;
+ }
+
+ private Long mTimestamp = 0l;
+ private int mVisibleActivitiesCounter = 0;
+
+ protected PassCodeManager() {};
+
+ public void onActivityCreated(Activity activity) {
+ if (passCodeIsEnabled()) {
+ activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ } else {
+ activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+ }
+
+ public void onActivityStarted(Activity activity) {
+ if (!sExemptOfPasscodeActivites.contains(activity.getClass()) &&
+ passCodeShouldBeRequested()
+ ){
+
+ Intent i = new Intent(MainApp.getAppContext(), PassCodeActivity.class);
+ i.setAction(PassCodeActivity.ACTION_REQUEST);
+ i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ activity.startActivity(i);
+
+ }
+
+ mVisibleActivitiesCounter++; // keep it AFTER passCodeShouldBeRequested was checked
+ }
+
+ public void onActivityStopped(Activity activity) {
+ if (mVisibleActivitiesCounter > 0) {
+ mVisibleActivitiesCounter--;
+ }
+ setUnlockTimestamp();
+ PowerManager powerMgr = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
+ if (passCodeIsEnabled() && powerMgr != null && !powerMgr.isScreenOn()) {
+ activity.moveTaskToBack(true);
+ }
+ }
+
+ private void setUnlockTimestamp() {
+ mTimestamp = System.currentTimeMillis();
+ }
+
+ private boolean passCodeShouldBeRequested(){
+ if ((System.currentTimeMillis() - mTimestamp) > PASS_CODE_TIMEOUT &&
+ mVisibleActivitiesCounter <= 0
+ ){
+ return passCodeIsEnabled();
+ }
+ return false;
+ }
+
+ private boolean passCodeIsEnabled() {
+ SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext());
+ return (appPrefs.getBoolean("set_pincode", false));
+ }
+
+}
@Override
protected void onStart() {
- Log_OC.v(TAG, "onStart() start");
super.onStart();
if (mAccountWasSet) {
onAccountSet(mAccountWasRestored);
}
- Log_OC.v(TAG, "onStart() end");
}
@Override
protected void onResume() {
- Log_OC.v(TAG, "onResume() start");
super.onResume();
if (mOperationsServiceBinder != null) {
doOnResumeAndBound();
}
- Log_OC.v(TAG, "onResume() end");
}
@Override
protected void onPause() {
- Log_OC.v(TAG, "onPause() start");
-
if (mOperationsServiceBinder != null) {
mOperationsServiceBinder.removeOperationListener(this);
}
super.onPause();
- Log_OC.v(TAG, "onPause() end");
}
@Override
protected void onDestroy() {
- Log_OC.v(TAG, "onDestroy() start");
if (mOperationsServiceConnection != null) {
unbindService(mOperationsServiceConnection);
mOperationsServiceBinder = null;
}
super.onDestroy();
- Log_OC.v(TAG, "onDestroy() end");
}
private OCFile mWaitingToSend;
-
+
@Override
protected void onCreate(Bundle savedInstanceState) {
- Log_OC.d(TAG, "onCreate() start");
+ Log_OC.v(TAG, "onCreate() start");
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid
- // PIN CODE request ; best location is to decide, let's try this first
- if (getIntent().getAction() != null && getIntent().getAction().equals(Intent.ACTION_MAIN) && savedInstanceState == null) {
- requestPinCode();
- } else if (getIntent().getAction() == null && savedInstanceState == null) {
- requestPinCode();
- }
-
- /// grant that FileObserverService is watching favourite files
+ /// grant that FileObserverService is watching favorite files
if (savedInstanceState == null) {
Intent initObserversIntent = FileObserverService.makeInitIntent(this);
startService(initObserversIntent);
setBackgroundText();
- Log_OC.d(TAG, "onCreate() end");
+ Log_OC.v(TAG, "onCreate() end");
}
@Override
protected void onStart() {
- Log_OC.d(TAG, "onStart() start");
+ Log_OC.v(TAG, "onStart() start");
super.onStart();
getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
- Log_OC.d(TAG, "onStart() end");
+ Log_OC.v(TAG, "onStart() end");
}
@Override
protected void onDestroy() {
- Log_OC.d(TAG, "onDestroy() start");
+ Log_OC.v(TAG, "onDestroy() start");
super.onDestroy();
- Log_OC.d(TAG, "onDestroy() end");
+ Log_OC.v(TAG, "onDestroy() end");
}
/**
sortByDate(false);
break;
-// TODO re-enable when server-side folder size calculation is available
-// case 2:
-// sortBySize(false);
-// break;
}
dialog.dismiss();
@Override
protected void onSaveInstanceState(Bundle outState) {
// responsibility of restore is preferred in onCreate() before than in onRestoreInstanceState when there are Fragments involved
- Log_OC.d(TAG, "onSaveInstanceState() start");
+ Log_OC.v(TAG, "onSaveInstanceState() start");
super.onSaveInstanceState(outState);
outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview);
outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress);
//outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress);
outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend);
- Log_OC.d(TAG, "onSaveInstanceState() end");
+ Log_OC.v(TAG, "onSaveInstanceState() end");
}
@Override
protected void onResume() {
- Log_OC.d(TAG, "onResume() start");
+ Log_OC.v(TAG, "onResume() start");
super.onResume();
// refresh list of files
mDownloadFinishReceiver = new DownloadFinishReceiver();
registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
- Log_OC.d(TAG, "onResume() end");
+ Log_OC.v(TAG, "onResume() end");
}
@Override
protected void onPause() {
- Log_OC.d(TAG, "onPause() start");
+ Log_OC.v(TAG, "onPause() start");
if (mSyncBroadcastReceiver != null) {
unregisterReceiver(mSyncBroadcastReceiver);
//LocalBroadcastManager.getInstance(this).unregisterReceiver(mSyncBroadcastReceiver);
mDownloadFinishReceiver = null;
}
-
super.onPause();
- Log_OC.d(TAG, "onPause() end");
+ Log_OC.v(TAG, "onPause() end");
}
/**
}
};
-
-
- /**
- * Launch an intent to request the PIN code to the user before letting him use the app
- */
- private void requestPinCode() {
- boolean pinStart = false;
- SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
- pinStart = appPrefs.getBoolean("set_pincode", false);
- if (pinStart) {
- Intent i = new Intent(getApplicationContext(), PinCodeActivity.class);
- i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "FileDisplayActivity");
- startActivity(i);
- }
- }
-
-
@Override
public void onSavedCertificate() {
startSyncFolderOperation(getCurrentDir(), false);
--- /dev/null
+/**
+ * ownCloud Android client application
+ *
+ * @author Bartek Przybylski
+ * @author masensio
+ * @author David A. Velasco
+ * Copyright (C) 2011 Bartek Przybylski
+ * Copyright (C) 2015 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.ui.activity;
+
+import java.util.Arrays;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.actionbarsherlock.app.ActionBar;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
+import com.owncloud.android.R;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.utils.DisplayUtils;
+
+public class PassCodeActivity extends SherlockFragmentActivity {
+
+
+ private static final String TAG = PassCodeActivity.class.getSimpleName();
+
+ public final static String ACTION_ENABLE = PassCodeActivity.class.getCanonicalName() + ".ENABLE";
+ public final static String ACTION_DISABLE = PassCodeActivity.class.getCanonicalName() + ".DISABLE";
+ public final static String ACTION_REQUEST = PassCodeActivity.class.getCanonicalName() + ".REQUEST";
+
+ private Button mBCancel;
+ private TextView mPassCodeHdr;
+ private TextView mPassCodeHdrExplanation;
+ private EditText[] mPassCodeEditTexts = new EditText[4];
+
+ private String [] mPassCodeDigits = {"","","",""};
+ private boolean mConfirmingPassCode = false;
+
+ private boolean mBChange = true; // to control that only one blocks jump
+
+
+ /**
+ * Initializes the activity.
+ *
+ * An intent with a valid ACTION is expected; if none is found, an {@link IllegalArgumentException} will be thrown.
+ *
+ * @param savedInstanceState Previously saved state - irrelevant in this case
+ */
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.passcodelock);
+
+ mBCancel = (Button) findViewById(R.id.cancel);
+ mPassCodeHdr = (TextView) findViewById(R.id.header);
+ mPassCodeHdrExplanation = (TextView) findViewById(R.id.explanation);
+ mPassCodeEditTexts[0] = (EditText) findViewById(R.id.txt0);
+ mPassCodeEditTexts[0].requestFocus();
+ getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ mPassCodeEditTexts[1] = (EditText) findViewById(R.id.txt1);
+ mPassCodeEditTexts[2] = (EditText) findViewById(R.id.txt2);
+ mPassCodeEditTexts[3] = (EditText) findViewById(R.id.txt3);
+
+ if (ACTION_REQUEST.equals(getIntent().getAction())) {
+ /// this is a pass code request; the user has to input the right value
+ mPassCodeHdr.setText(R.string.pass_code_enter_pass_code);
+ mPassCodeHdrExplanation.setVisibility(View.INVISIBLE);
+ 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);
+
+ } else if (ACTION_DISABLE.equals(getIntent().getAction())) {
+ /// pass code preference has just been disabled in Preferences;
+ // will confirm user knows pass code, then remove it
+ mPassCodeHdr.setText(R.string.pass_code_remove_your_pass_code);
+ mPassCodeHdrExplanation.setVisibility(View.INVISIBLE);
+ setCancelButtonEnabled(true);
+
+ } else {
+ throw new IllegalArgumentException("A valid ACTION is needed in the Intent passed to " + TAG);
+ }
+
+ setTextListeners();
+
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setIcon(DisplayUtils.getSeasonalIconId());
+ }
+
+
+ /**
+ * Enables or disables the cancel button to allow the user interrupt the ACTION requested to the activity.
+ *
+ * @param enabled 'True' makes the cancel button available, 'false' hides it.
+ */
+ protected void setCancelButtonEnabled(boolean enabled){
+ if(enabled){
+ mBCancel.setVisibility(View.VISIBLE);
+ mBCancel.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ revertActionAndExit();
+ }
+ });
+ } else {
+ mBCancel.setVisibility(View.GONE);
+ mBCancel.setVisibility(View.INVISIBLE);
+ mBCancel.setOnClickListener(null);
+ }
+ }
+
+
+ /**
+ * Binds the appropiate listeners to the input boxes receiving each digit of the pass code.
+ */
+ protected void setTextListeners() {
+
+ /// First input field
+ mPassCodeEditTexts[0].addTextChangedListener(new PassCodeDigitTextWatcher(0, false));
+
+
+ /*------------------------------------------------
+ * SECOND BOX
+ -------------------------------------------------*/
+ mPassCodeEditTexts[1].addTextChangedListener(new PassCodeDigitTextWatcher(1, false));
+
+ mPassCodeEditTexts[1].setOnKeyListener(new View.OnKeyListener() {
+
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) { // TODO WIP: event should be used to control what's exactly happening with DEL, not any custom field...
+ mPassCodeEditTexts[0].setText("");
+ mPassCodeEditTexts[0].requestFocus();
+ if (!mConfirmingPassCode)
+ mPassCodeDigits[0] = "";
+ mBChange = false;
+
+ } else if (!mBChange) {
+ mBChange = true;
+ }
+ return false;
+ }
+ });
+
+ mPassCodeEditTexts[1].setOnFocusChangeListener(new View.OnFocusChangeListener() {
+
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+ /// TODO WIP: should take advantage of hasFocus to reduce processing
+ if (mPassCodeEditTexts[0].getText().toString().equals("")) { // TODO WIP validation could be done in a global way, with a single OnFocusChangeListener for all the input fields
+ mPassCodeEditTexts[0].requestFocus();
+ }
+ }
+ });
+
+
+ /*------------------------------------------------
+ * THIRD BOX
+ -------------------------------------------------*/
+ mPassCodeEditTexts[2].addTextChangedListener(new PassCodeDigitTextWatcher(2, false));
+
+ mPassCodeEditTexts[2].setOnKeyListener(new View.OnKeyListener() {
+
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
+ mPassCodeEditTexts[1].requestFocus();
+ if (!mConfirmingPassCode)
+ mPassCodeDigits[1] = "";
+ mPassCodeEditTexts[1].setText("");
+ mBChange = false;
+
+ } else if (!mBChange) {
+ mBChange = true;
+
+ }
+ return false;
+ }
+ });
+
+ mPassCodeEditTexts[2].setOnFocusChangeListener(new View.OnFocusChangeListener() {
+
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+ if (mPassCodeEditTexts[0].getText().toString().equals("")) {
+ mPassCodeEditTexts[0].requestFocus();
+ } else if (mPassCodeEditTexts[1].getText().toString().equals("")) {
+ mPassCodeEditTexts[1].requestFocus();
+ }
+ }
+ });
+
+
+ /*------------------------------------------------
+ * FOURTH BOX
+ -------------------------------------------------*/
+ mPassCodeEditTexts[3].addTextChangedListener(new PassCodeDigitTextWatcher(3, true));
+
+ mPassCodeEditTexts[3].setOnKeyListener(new View.OnKeyListener() {
+
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
+ mPassCodeEditTexts[2].requestFocus();
+ if (!mConfirmingPassCode)
+ mPassCodeDigits[2] = "";
+ mPassCodeEditTexts[2].setText("");
+ mBChange = false;
+
+ } else if (!mBChange) {
+ mBChange = true;
+ }
+ return false;
+ }
+ });
+
+ mPassCodeEditTexts[3].setOnFocusChangeListener(new View.OnFocusChangeListener() {
+
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+
+ if (mPassCodeEditTexts[0].getText().toString().equals("")) {
+ mPassCodeEditTexts[0].requestFocus();
+ } else if (mPassCodeEditTexts[1].getText().toString().equals("")) {
+ mPassCodeEditTexts[1].requestFocus();
+ } else if (mPassCodeEditTexts[2].getText().toString().equals("")) {
+ mPassCodeEditTexts[2].requestFocus();
+ }
+
+ }
+ });
+
+ } // end setTextListener
+
+
+ /**
+ * Processes the pass code entered by the user just after the last digit was in.
+ *
+ * Takes into account the action requested to the activity, the currently saved pass code and the previously
+ * typed pass code, if any.
+ */
+ private void processFullPassCode() {
+ if (ACTION_REQUEST.equals(getIntent().getAction())) {
+ if (checkPassCode()) {
+ /// pass code accepted in request, user is allowed to access the app
+ finish();
+
+ } else {
+ showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, View.INVISIBLE);
+ }
+
+ } else if (ACTION_DISABLE.equals(getIntent().getAction())) {
+ if (checkPassCode()) {
+ /// pass code accepted when disabling, pass code is removed
+ SharedPreferences.Editor appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+ appPrefs.putBoolean("set_pincode", false); // TODO remove; this should be unnecessary, was done before entering in the activity
+ appPrefs.commit();
+
+ Toast.makeText(PassCodeActivity.this, R.string.pass_code_removed, Toast.LENGTH_LONG).show();
+ finish();
+
+ } else {
+ showErrorAndRestart(R.string.pass_code_wrong, R.string.pass_code_enter_pass_code, View.INVISIBLE);
+ }
+
+ } else if (ACTION_ENABLE.equals(getIntent().getAction())) {
+ /// enabling pass code
+ if (!mConfirmingPassCode) {
+ requestPassCodeConfirmation();
+
+ } else if (confirmPassCode()) {
+ /// confirmed: user typed the same pass code twice
+ savePassCodeAndExit();
+
+ } else {
+ showErrorAndRestart(
+ R.string.pass_code_mismatch, R.string.pass_code_configure_your_pass_code, View.VISIBLE
+ );
+ }
+ }
+ }
+
+
+ private void showErrorAndRestart(int errorMessage, int headerMessage, int explanationVisibility) {
+ Arrays.fill(mPassCodeDigits, null);
+ CharSequence errorSeq = getString(errorMessage);
+ Toast.makeText(this, errorSeq, Toast.LENGTH_LONG).show();
+ mPassCodeHdr.setText(headerMessage); // TODO check if really needed
+ mPassCodeHdrExplanation.setVisibility(explanationVisibility); // TODO check if really needed
+ clearBoxes();
+ }
+
+
+ /**
+ * Ask to the user for retyping the pass code just entered before saving it as the current pass code.
+ */
+ protected void requestPassCodeConfirmation(){
+ clearBoxes();
+ mPassCodeHdr.setText(R.string.pass_code_reenter_your_pass_code);
+ mPassCodeHdrExplanation.setVisibility(View.INVISIBLE);
+ mConfirmingPassCode = true;
+ }
+
+ /**
+ * Compares pass code entered by the user with the value currently saved in the app.
+ *
+ * @return 'True' if entered pass code equals to the saved one.
+ */
+ protected boolean checkPassCode(){
+ SharedPreferences appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
+ String savedPassCodeDigits[] = new String[4];
+ savedPassCodeDigits[0] = appPrefs.getString("PrefPinCode1", null);
+ savedPassCodeDigits[1] = appPrefs.getString("PrefPinCode2", null);
+ savedPassCodeDigits[2] = appPrefs.getString("PrefPinCode3", null);
+ savedPassCodeDigits[3] = appPrefs.getString("PrefPinCode4", null);
+
+ boolean result = true;
+ for (int i = 0; i < mPassCodeDigits.length && result; i++) {
+ result = result && (mPassCodeDigits[i] != null) && mPassCodeDigits[i].equals(savedPassCodeDigits[i]);
+ }
+ return result;
+ }
+
+ /**
+ * Compares pass code retyped by the user in the input fields with the value entered just before.
+ *
+ * @return 'True' if retyped pass code equals to the entered before.
+ */
+ protected boolean confirmPassCode(){
+ mConfirmingPassCode = false;
+
+ boolean result = true;
+ for (int i = 0; i < mPassCodeEditTexts.length && result; i++) {
+ result = result && ((mPassCodeEditTexts[i].getText().toString()).equals(mPassCodeDigits[i]));
+ }
+ return result;
+ }
+
+ /**
+ * Sets the input fields to empty strings and puts the focus on the first one.
+ */
+ protected void clearBoxes(){
+ for (int i=0; i < mPassCodeEditTexts.length; i++) {
+ mPassCodeEditTexts[i].setText("");
+ }
+ mPassCodeEditTexts[0].requestFocus();
+ }
+
+ /**
+ * Overrides click on the BACK arrow to correctly cancel ACTION_ENABLE or ACTION_DISABLE, while preventing
+ * than ACTION_REQUEST may be worked around.
+ *
+ * @param keyCode Key code of the key that triggered the down event.
+ * @param event Event triggered.
+ * @return 'True' when the key event was processed by this method.
+ */
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event){
+ if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){
+ if (ACTION_ENABLE.equals(getIntent().getAction()) || ACTION_DISABLE.equals(getIntent().getAction())) {
+ revertActionAndExit();
+ }
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ /**
+ * Saves the pass code input by the user as the current pass code.
+ */
+ protected void savePassCodeAndExit() {
+ SharedPreferences.Editor appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+
+ appPrefs.putString("PrefPinCode1", mPassCodeDigits[0]);
+ appPrefs.putString("PrefPinCode2", mPassCodeDigits[1]);
+ appPrefs.putString("PrefPinCode3", mPassCodeDigits[2]);
+ appPrefs.putString("PrefPinCode4", mPassCodeDigits[3]);
+ appPrefs.putBoolean("set_pincode", true); /// TODO remove; unnecessary, Preferences did it before entering here
+ appPrefs.commit();
+
+ Toast.makeText(this, R.string.pass_code_stored, Toast.LENGTH_LONG).show();
+ finish();
+ }
+
+ /**
+ * Cancellation of ACTION_ENABLE or ACTION_DISABLE; reverts the enable or disable action done by
+ * {@link Preferences}, then finishes.
+ */
+ protected void revertActionAndExit() {
+ SharedPreferences.Editor appPrefsE = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+
+ SharedPreferences appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
+ boolean state = appPrefs.getBoolean("set_pincode", false);
+ appPrefsE.putBoolean("set_pincode", !state);
+ // TODO WIP: this is reverting the value of the preference because it was changed BEFORE entering
+ // TODO in this activity; was the PreferenceCheckBox in the caller who did it
+ appPrefsE.commit();
+ finish();
+ }
+
+
+ private class PassCodeDigitTextWatcher implements TextWatcher {
+
+ private int mIndex = -1;
+ private boolean mLastOne = false;
+
+ /**
+ * Constructor
+ *
+ * @param index Position in the pass code of the input field that will be bound to this watcher.
+ * @param lastOne 'True' means that watcher corresponds to the last position of the pass code.
+ */
+ public PassCodeDigitTextWatcher(int index, boolean lastOne) {
+ mIndex = index;
+ mLastOne = lastOne;
+ if (mIndex < 0) {
+ throw new IllegalArgumentException(
+ "Invalid index in " + PassCodeDigitTextWatcher.class.getSimpleName() + " constructor"
+ );
+ }
+ }
+
+ private int next() {
+ return mLastOne ? 0 : mIndex + 1;
+ }
+
+ /**
+ * Performs several actions when the user types a digit in an input field:
+ * - saves the input digit to the state of the activity; this will allow retyping the pass code to confirm it.
+ * - moves the focus automatically to the next field
+ * - for the last field, triggers the processing of the full pass code
+ *
+ * @param s
+ */
+ @Override
+ public void afterTextChanged(Editable s) {
+ if (s.length() > 0) {
+ if (!mConfirmingPassCode) {
+ mPassCodeDigits[mIndex] = mPassCodeEditTexts[mIndex].getText().toString();
+ }
+ mPassCodeEditTexts[next()].requestFocus();
+
+ if (mLastOne) {
+ processFullPassCode();
+ }
+
+ } else {
+ Log_OC.d(TAG, "Text box " + mIndex + " was cleaned");
+ }
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ // nothing to do
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ // nothing to do
+ }
+
+ }
+
+
+}
+++ /dev/null
-/**
- * ownCloud Android client application
- *
- * Copyright (C) 2011 Bartek Przybylski
- * Copyright (C) 2015 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.ui.activity;
-
-import java.util.Arrays;
-
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockFragmentActivity;
-import com.owncloud.android.R;
-import com.owncloud.android.utils.DisplayUtils;
-
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.view.View.OnKeyListener;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-
-public class PinCodeActivity extends SherlockFragmentActivity {
-
-
- public final static String EXTRA_ACTIVITY = "com.owncloud.android.ui.activity.PinCodeActivity.ACTIVITY";
- public final static String EXTRA_NEW_STATE = "com.owncloud.android.ui.activity.PinCodeActivity.NEW_STATE";
-
- private Button mBCancel;
- private TextView mPinHdr;
- private TextView mPinHdrExplanation;
- private EditText mText1;
- private EditText mText2;
- private EditText mText3;
- private EditText mText4;
-
- private String [] mTempText ={"","","",""};
-
- private String mActivity;
-
- private boolean mConfirmingPinCode = false;
- private boolean mPinCodeChecked = false;
- private boolean mNewPasswordEntered = false;
- private boolean mBChange = true; // to control that only one blocks jump
- //private int mTCounter ; // Count the number of attempts an user could introduce the PIN code
-
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.pincodelock);
-
- Intent intent = getIntent();
- mActivity = intent.getStringExtra(EXTRA_ACTIVITY);
-
- mBCancel = (Button) findViewById(R.id.cancel);
- mPinHdr = (TextView) findViewById(R.id.pinHdr);
- mPinHdrExplanation = (TextView) findViewById(R.id.pinHdrExpl);
- mText1 = (EditText) findViewById(R.id.txt1);
- mText1.requestFocus();
- getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
- mText2 = (EditText) findViewById(R.id.txt2);
- mText3 = (EditText) findViewById(R.id.txt3);
- mText4 = (EditText) findViewById(R.id.txt4);
-
- SharedPreferences appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
-
- // Not PIN Code defined yet.
- // In a previous version settings is allow from start
- if ( (appPrefs.getString("PrefPinCode1", null) == null ) ){
- setChangePincodeView(true);
- mPinCodeChecked = true;
- mNewPasswordEntered = true;
-
- }else{
-
- if (appPrefs.getBoolean("set_pincode", false)){
- // pincode activated
- if (mActivity.equals("preferences")){
- // PIN has been activated yet
- mPinHdr.setText(R.string.pincode_configure_your_pin);
- mPinHdrExplanation.setVisibility(View.VISIBLE);
- mPinCodeChecked = true ; // No need to check it
- setChangePincodeView(true);
- }else{
- // PIN active
- mBCancel.setVisibility(View.INVISIBLE);
- mBCancel.setVisibility(View.GONE);
- mPinHdr.setText(R.string.pincode_enter_pin_code);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- setChangePincodeView(false);
- }
-
- }else {
- // pincode removal
- mPinHdr.setText(R.string.pincode_remove_your_pincode);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- mPinCodeChecked = false;
- setChangePincodeView(true);
- }
-
- }
- setTextListeners();
-
- ActionBar actionBar = getSupportActionBar();
- actionBar.setIcon(DisplayUtils.getSeasonalIconId());
- }
-
-
-
- protected void setInitVars(){
- mConfirmingPinCode = false;
- mPinCodeChecked = false;
- mNewPasswordEntered = false;
-
- }
-
- protected void setInitView(){
- mBCancel.setVisibility(View.INVISIBLE);
- mBCancel.setVisibility(View.GONE);
- mPinHdr.setText(R.string.pincode_enter_pin_code);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- }
-
-
- protected void setChangePincodeView(boolean state){
-
- if(state){
- mBCancel.setVisibility(View.VISIBLE);
- mBCancel.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- SharedPreferences.Editor appPrefsE = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
-
- SharedPreferences appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
- boolean state = appPrefs.getBoolean("set_pincode", false);
- appPrefsE.putBoolean("set_pincode",!state);
- appPrefsE.commit();
- setInitVars();
- finish();
- }
- });
- }
-
- }
-
-
-
- /*
- *
- */
- protected void setTextListeners(){
-
- /*------------------------------------------------
- * FIRST BOX
- -------------------------------------------------*/
-
- mText1.addTextChangedListener(new TextWatcher() {
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- if (!mConfirmingPinCode){
- mTempText[0] = mText1.getText().toString();
-
- }
- mText2.requestFocus();
- }
- }
- });
-
-
-
- /*------------------------------------------------
- * SECOND BOX
- -------------------------------------------------*/
- mText2.addTextChangedListener(new TextWatcher() {
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- if (!mConfirmingPinCode){
- mTempText[1] = mText2.getText().toString();
- }
-
- mText3.requestFocus();
- }
- }
- });
-
- mText2.setOnKeyListener(new OnKeyListener() {
-
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
-
- mText1.setText("");
- mText1.requestFocus();
- if (!mConfirmingPinCode)
- mTempText[0] = "";
- mBChange= false;
-
- }else if(!mBChange){
- mBChange=true;
-
- }
- return false;
- }
- });
-
- mText2.setOnFocusChangeListener(new OnFocusChangeListener() {
-
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- mText2.setCursorVisible(true);
- if (mText1.getText().toString().equals("")){
- mText2.setSelected(false);
- mText2.setCursorVisible(false);
- mText1.requestFocus();
- mText1.setSelected(true);
- mText1.setSelection(0);
- }
-
- }
- });
-
-
- /*------------------------------------------------
- * THIRD BOX
- -------------------------------------------------*/
- mText3.addTextChangedListener(new TextWatcher() {
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- if (!mConfirmingPinCode){
- mTempText[2] = mText3.getText().toString();
- }
- mText4.requestFocus();
- }
- }
- });
-
- mText3.setOnKeyListener(new OnKeyListener() {
-
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
- mText2.requestFocus();
- if (!mConfirmingPinCode)
- mTempText[1] = "";
- mText2.setText("");
- mBChange= false;
-
- }else if(!mBChange){
- mBChange=true;
-
- }
- return false;
- }
- });
-
- mText3.setOnFocusChangeListener(new OnFocusChangeListener() {
-
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- mText3.setCursorVisible(true);
- if (mText1.getText().toString().equals("")){
- mText3.setSelected(false);
- mText3.setCursorVisible(false);
- mText1.requestFocus();
- mText1.setSelected(true);
- mText1.setSelection(0);
- }else if (mText2.getText().toString().equals("")){
- mText3.setSelected(false);
- mText3.setCursorVisible(false);
- mText2.requestFocus();
- mText2.setSelected(true);
- mText2.setSelection(0);
- }
-
- }
- });
-
- /*------------------------------------------------
- * FOURTH BOX
- -------------------------------------------------*/
- mText4.addTextChangedListener(new TextWatcher() {
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
-
- if (!mConfirmingPinCode){
- mTempText[3] = mText4.getText().toString();
- }
- mText1.requestFocus();
-
- if (!mPinCodeChecked){
- mPinCodeChecked = checkPincode();
- }
-
- if (mPinCodeChecked &&
- ( mActivity.equals("FileDisplayActivity") || mActivity.equals("PreviewImageActivity") ) ){
- finish();
- } else if (mPinCodeChecked){
-
- Intent intent = getIntent();
- String newState = intent.getStringExtra(EXTRA_NEW_STATE);
-
- if (newState.equals("false")){
- SharedPreferences.Editor appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefs.putBoolean("set_pincode",false);
- appPrefs.commit();
-
- setInitVars();
- pinCodeEnd(false);
-
- }else{
-
- if (!mConfirmingPinCode){
- pinCodeChangeRequest();
-
- } else {
- confirmPincode();
- }
- }
-
-
- }
- }
- }
- });
-
-
-
- mText4.setOnKeyListener(new OnKeyListener() {
-
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_DEL && mBChange) {
- mText3.requestFocus();
- if (!mConfirmingPinCode)
- mTempText[2]="";
- mText3.setText("");
- mBChange= false;
-
- }else if(!mBChange){
- mBChange=true;
- }
- return false;
- }
- });
-
- mText4.setOnFocusChangeListener(new OnFocusChangeListener() {
-
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- mText4.setCursorVisible(true);
-
- if (mText1.getText().toString().equals("")){
- mText4.setSelected(false);
- mText4.setCursorVisible(false);
- mText1.requestFocus();
- mText1.setSelected(true);
- mText1.setSelection(0);
- }else if (mText2.getText().toString().equals("")){
- mText4.setSelected(false);
- mText4.setCursorVisible(false);
- mText2.requestFocus();
- mText2.setSelected(true);
- mText2.setSelection(0);
- }else if (mText3.getText().toString().equals("")){
- mText4.setSelected(false);
- mText4.setCursorVisible(false);
- mText3.requestFocus();
- mText3.setSelected(true);
- mText3.setSelection(0);
- }
-
- }
- });
-
-
-
- } // end setTextListener
-
-
- protected void pinCodeChangeRequest(){
-
- clearBoxes();
- mPinHdr.setText(R.string.pincode_reenter_your_pincode);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- mConfirmingPinCode =true;
-
- }
-
-
- protected boolean checkPincode(){
-
-
- SharedPreferences appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
- String pText1 = appPrefs.getString("PrefPinCode1", null);
- String pText2 = appPrefs.getString("PrefPinCode2", null);
- String pText3 = appPrefs.getString("PrefPinCode3", null);
- String pText4 = appPrefs.getString("PrefPinCode4", null);
-
- if ( mTempText[0].equals(pText1) &&
- mTempText[1].equals(pText2) &&
- mTempText[2].equals(pText3) &&
- mTempText[3].equals(pText4) ) {
-
- return true;
-
-
- }else {
- Arrays.fill(mTempText, null);
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
- CharSequence errorSeq = getString(R.string.common_error);
- aDialog.setTitle(errorSeq);
- CharSequence cseq = getString(R.string.pincode_wrong);
- aDialog.setMessage(cseq);
- CharSequence okSeq = getString(R.string.common_ok);
- aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- return;
- }
-
- });
- aDialog.show();
- clearBoxes();
- mPinHdr.setText(R.string.pincode_enter_pin_code);
- mPinHdrExplanation.setVisibility(View.INVISIBLE);
- mNewPasswordEntered = true;
- mConfirmingPinCode = false;
-
- }
-
-
- return false;
- }
-
- protected void confirmPincode(){
-
- mConfirmingPinCode = false;
-
- String rText1 = mText1.getText().toString();
- String rText2 = mText2.getText().toString();
- String rText3 = mText3.getText().toString();
- String rText4 = mText4.getText().toString();
-
- if ( mTempText[0].equals(rText1) &&
- mTempText[1].equals(rText2) &&
- mTempText[2].equals(rText3) &&
- mTempText[3].equals(rText4) ) {
-
- savePincodeAndExit();
-
- } else {
-
- Arrays.fill(mTempText, null);
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
- CharSequence errorSeq = getString(R.string.common_error);
- aDialog.setTitle(errorSeq);
- CharSequence cseq = getString(R.string.pincode_mismatch);
- aDialog.setMessage(cseq);
- CharSequence okSeq = getString(R.string.common_ok);
- aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- return;
- }
-
- });
- aDialog.show();
- mPinHdr.setText(R.string.pincode_configure_your_pin);
- mPinHdrExplanation.setVisibility(View.VISIBLE);
- clearBoxes();
- }
-
- }
-
-
- protected void pinCodeEnd(boolean state){
- AlertDialog aDialog = new AlertDialog.Builder(this).create();
-
- if (state){
- CharSequence saveSeq = getString(R.string.common_save_exit);
- aDialog.setTitle(saveSeq);
- CharSequence cseq = getString(R.string.pincode_stored);
- aDialog.setMessage(cseq);
-
- }else{
- CharSequence saveSeq = getString(R.string.common_save_exit);
- aDialog.setTitle(saveSeq);
- CharSequence cseq = getString(R.string.pincode_removed);
- aDialog.setMessage(cseq);
-
- }
- CharSequence okSeq = getString(R.string.common_ok);
- aDialog.setButton(okSeq, new DialogInterface.OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- finish();
- return;
- }
-
- });
- aDialog.show();
- }
-
- protected void savePincodeAndExit(){
- SharedPreferences.Editor appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
-
- appPrefs.putString("PrefPinCode1", mTempText[0]);
- appPrefs.putString("PrefPinCode2",mTempText[1]);
- appPrefs.putString("PrefPinCode3", mTempText[2]);
- appPrefs.putString("PrefPinCode4", mTempText[3]);
- appPrefs.putBoolean("set_pincode",true);
- appPrefs.commit();
-
- pinCodeEnd(true);
-
-
-
- }
-
-
- protected void clearBoxes(){
-
- mText1.setText("");
- mText2.setText("");
- mText3.setText("");
- mText4.setText("");
- mText1.requestFocus();
- }
-
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event){
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()== 0){
-
- if (mActivity.equals("preferences")){
- SharedPreferences.Editor appPrefsE = PreferenceManager
-
- .getDefaultSharedPreferences(getApplicationContext()).edit();
-
- SharedPreferences appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
- boolean state = appPrefs.getBoolean("set_pincode", false);
- appPrefsE.putBoolean("set_pincode",!state);
- appPrefsE.commit();
- setInitVars();
- finish();
- }
- return true;
-
- }
-
- return super.onKeyDown(keyCode, event);
- }
-
-
-
-
-
-}
import com.owncloud.android.ui.RadioButtonPreference;
import com.owncloud.android.utils.DisplayUtils;
-import java.io.File;
-
/**
* An Activity that allows the user to change the application's settings.
pCode.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- Intent i = new Intent(getApplicationContext(), PinCodeActivity.class);
- i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "preferences");
- i.putExtra(PinCodeActivity.EXTRA_NEW_STATE, newValue.toString());
+ Intent i = new Intent(getApplicationContext(), PassCodeActivity.class);
+ Boolean enable = (Boolean) newValue;
+ i.setAction(
+ enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : PassCodeActivity.ACTION_DISABLE
+ );
startActivity(i);
return true;
}
@Override
- protected void onPause() {
- super.onPause();
- }
-
- @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// Filter for only showing contextual menu when long press on the
* ownCloud Android client application
*
* @author Bartek Przybylski
+ * @author masensio
* Copyright (C) 2012 Bartek Przybylski
* Copyright (C) 2015 ownCloud Inc.
*
import java.util.Stack;
import java.util.Vector;
+
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.AlertDialog;
import android.os.Bundle;
import android.os.Parcelable;
import android.preference.PreferenceManager;
+import android.provider.MediaStore;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Video;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.operations.CreateFolderOperation;
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
+import com.owncloud.android.ui.dialog.LoadingDialog;
+import com.owncloud.android.utils.CopyTmpFileAsyncTask;
import com.owncloud.android.utils.DisplayUtils;
import com.owncloud.android.utils.ErrorMessageAdapter;
* This can be used to upload things to an ownCloud instance.
*/
public class Uploader extends FileActivity
- implements OnItemClickListener, android.view.View.OnClickListener {
+ implements OnItemClickListener, android.view.View.OnClickListener,
+ CopyTmpFileAsyncTask.OnCopyTmpFileTaskListener {
private static final String TAG = Uploader.class.getSimpleName();
private String mUploadPath;
private OCFile mFile;
private boolean mAccountSelected;
+ private boolean mAccountSelectionShowing;
+
+ private ArrayList<String> mRemoteCacheData;
+ private int mNumCacheFile;
private final static int DIALOG_NO_ACCOUNT = 0;
private final static int DIALOG_WAITING = 1;
private final static String KEY_PARENTS = "PARENTS";
private final static String KEY_FILE = "FILE";
private final static String KEY_ACCOUNT_SELECTED = "ACCOUNT_SELECTED";
+ private final static String KEY_ACCOUNT_SELECTION_SHOWING = "ACCOUNT_SELECTION_SHOWING";
+ private final static String KEY_NUM_CACHE_FILE = "NUM_CACHE_FILE";
+ private final static String KEY_REMOTE_CACHE_DATA = "REMOTE_CACHE_DATA";
+
+ private static final String DIALOG_WAIT_COPY_FILE = "DIALOG_WAIT_COPY_FILE";
@Override
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState == null) {
mParents = new Stack<String>();
mAccountSelected = false;
+ mAccountSelectionShowing = false;
+ mNumCacheFile = 0;
+
+ // ArrayList for files with path in private storage
+ mRemoteCacheData = new ArrayList<String>();
} else {
mParents = (Stack<String>) savedInstanceState.getSerializable(KEY_PARENTS);
mFile = savedInstanceState.getParcelable(KEY_FILE);
mAccountSelected = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTED);
+ mAccountSelectionShowing = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTION_SHOWING);
+ mNumCacheFile = savedInstanceState.getInt(KEY_NUM_CACHE_FILE);
+ mRemoteCacheData = savedInstanceState.getStringArrayList(KEY_REMOTE_CACHE_DATA);
}
+
super.onCreate(savedInstanceState);
+ if (mAccountSelected) {
+ setAccount((Account) savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT));
+ }
+
+
ActionBar actionBar = getSupportActionBar();
actionBar.setIcon(DisplayUtils.getSeasonalIconId());
if (accounts.length == 0) {
Log_OC.i(TAG, "No ownCloud account is available");
showDialog(DIALOG_NO_ACCOUNT);
- } else if (accounts.length > 1 && !mAccountSelected) {
+ } else if (accounts.length > 1 && !mAccountSelected && !mAccountSelectionShowing) {
Log_OC.i(TAG, "More than one ownCloud is available");
showDialog(DIALOG_MULTIPLE_ACCOUNT);
+ mAccountSelectionShowing = true;
} else {
if (!savedAccount) {
setAccount(accounts[0]);
//outState.putParcelable(KEY_ACCOUNT, mAccount);
outState.putParcelable(KEY_FILE, mFile);
outState.putBoolean(KEY_ACCOUNT_SELECTED, mAccountSelected);
+ outState.putBoolean(KEY_ACCOUNT_SELECTION_SHOWING, mAccountSelectionShowing);
+ outState.putInt(KEY_NUM_CACHE_FILE, mNumCacheFile);
+ outState.putStringArrayList(KEY_REMOTE_CACHE_DATA, mRemoteCacheData);
+ outState.putParcelable(FileActivity.EXTRA_ACCOUNT, getAccount());
Log_OC.d(TAG, "onSaveInstanceState() end");
}
onAccountSet(mAccountWasRestored);
dialog.dismiss();
mAccountSelected = true;
+ mAccountSelectionShowing = false;
}
});
builder.setCancelable(true);
builder.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
+ mAccountSelectionShowing = false;
dialog.cancel();
finish();
}
actionBar.setHomeButtonEnabled(notRoot);
String full_path = generatePath(mParents);
-
+
Log_OC.d(TAG, "Populating view with content of : " + full_path);
mFile = getStorageManager().getFileByPath(full_path);
public void uploadFiles() {
try {
+ // ArrayList for files with path in external storage
ArrayList<String> local = new ArrayList<String>();
ArrayList<String> remote = new ArrayList<String>();
for (Parcelable mStream : mStreamsToUpload) {
Uri uri = (Uri) mStream;
- if (uri !=null) {
+ String data = null;
+ String filePath = "";
+
+ if (uri != null) {
if (uri.getScheme().equals("content")) {
-
- String mimeType = getContentResolver().getType(uri);
-
- if (mimeType.contains("image")) {
- String[] CONTENT_PROJECTION = { Images.Media.DATA,
- Images.Media.DISPLAY_NAME, Images.Media.MIME_TYPE,
- Images.Media.SIZE};
- Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
- null, null);
- c.moveToFirst();
- int index = c.getColumnIndex(Images.Media.DATA);
- String data = c.getString(index);
- local.add(data);
- remote.add(mUploadPath +
- c.getString(c.getColumnIndex(Images.Media.DISPLAY_NAME)));
-
- }
- else if (mimeType.contains("video")) {
- String[] CONTENT_PROJECTION = { Video.Media.DATA,
+ String mimeType = getContentResolver().getType(uri);
+
+ if (mimeType.contains("image")) {
+ String[] CONTENT_PROJECTION = { Images.Media.DATA,
+ Images.Media.DISPLAY_NAME, Images.Media.MIME_TYPE,
+ Images.Media.SIZE };
+ Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
+ null, null);
+ c.moveToFirst();
+ int index = c.getColumnIndex(Images.Media.DATA);
+ data = c.getString(index);
+ filePath = mUploadPath +
+ c.getString(c.getColumnIndex(Images.Media.DISPLAY_NAME));
+
+ } else if (mimeType.contains("video")) {
+ String[] CONTENT_PROJECTION = { Video.Media.DATA,
Video.Media.DISPLAY_NAME, Video.Media.MIME_TYPE,
Video.Media.SIZE, Video.Media.DATE_MODIFIED };
- Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
+ Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
null, null);
- c.moveToFirst();
- int index = c.getColumnIndex(Video.Media.DATA);
- String data = c.getString(index);
- local.add(data);
- remote.add(mUploadPath +
- c.getString(c.getColumnIndex(Video.Media.DISPLAY_NAME)));
+ c.moveToFirst();
+ int index = c.getColumnIndex(Video.Media.DATA);
+ data = c.getString(index);
+ filePath = mUploadPath +
+ c.getString(c.getColumnIndex(Video.Media.DISPLAY_NAME));
- }
- else if (mimeType.contains("audio")) {
- String[] CONTENT_PROJECTION = { Audio.Media.DATA,
+ } else if (mimeType.contains("audio")) {
+ String[] CONTENT_PROJECTION = { Audio.Media.DATA,
Audio.Media.DISPLAY_NAME, Audio.Media.MIME_TYPE,
Audio.Media.SIZE };
- Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
+ Cursor c = getContentResolver().query(uri, CONTENT_PROJECTION, null,
null, null);
- c.moveToFirst();
- int index = c.getColumnIndex(Audio.Media.DATA);
- String data = c.getString(index);
- local.add(data);
- remote.add(mUploadPath +
- c.getString(c.getColumnIndex(Audio.Media.DISPLAY_NAME)));
-
- }
- else {
- String filePath = Uri.decode(uri.toString()).replace(uri.getScheme() +
- "://", "");
- // cut everything whats before mnt. It occurred to me that sometimes
- // apps send their name into the URI
- if (filePath.contains("mnt")) {
- String splitedFilePath[] = filePath.split("/mnt");
- filePath = splitedFilePath[1];
- }
- final File file = new File(filePath);
- local.add(file.getAbsolutePath());
- remote.add(mUploadPath + file.getName());
- }
-
+ c.moveToFirst();
+ int index = c.getColumnIndex(Audio.Media.DATA);
+ data = c.getString(index);
+ filePath = mUploadPath +
+ c.getString(c.getColumnIndex(Audio.Media.DISPLAY_NAME));
+
+ } else {
+ Cursor cursor = getContentResolver().query(uri,
+ new String[]{MediaStore.MediaColumns.DISPLAY_NAME},
+ null, null, null);
+ cursor.moveToFirst();
+ int nameIndex = cursor.getColumnIndex(cursor.getColumnNames()[0]);
+ if (nameIndex >= 0) {
+ filePath = mUploadPath + cursor.getString(nameIndex);
+ }
+ }
+
} else if (uri.getScheme().equals("file")) {
- String filePath = Uri.decode(uri.toString()).replace(uri.getScheme() +
+ filePath = Uri.decode(uri.toString()).replace(uri.getScheme() +
"://", "");
if (filePath.contains("mnt")) {
String splitedFilePath[] = filePath.split("/mnt");
filePath = splitedFilePath[1];
}
final File file = new File(filePath);
- local.add(file.getAbsolutePath());
- remote.add(mUploadPath + file.getName());
+ data = file.getAbsolutePath();
+ filePath = mUploadPath + file.getName();
}
else {
throw new SecurityException();
}
+ if (data == null) {
+ mRemoteCacheData.add(filePath);
+ CopyTmpFileAsyncTask copyTask = new CopyTmpFileAsyncTask(this);
+ Object[] params = { uri, filePath, mRemoteCacheData.size()-1,
+ getAccount().name, getContentResolver()};
+ mNumCacheFile++;
+ showWaitingCopyDialog();
+ copyTask.execute(params);
+ } else {
+ remote.add(filePath);
+ local.add(data);
+ }
}
else {
throw new SecurityException();
}
-
- Intent intent = new Intent(getApplicationContext(), FileUploader.class);
- intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);
- intent.putExtra(FileUploader.KEY_LOCAL_FILE, local.toArray(new String[local.size()]));
- intent.putExtra(FileUploader.KEY_REMOTE_FILE,
- remote.toArray(new String[remote.size()]));
- intent.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
- startService(intent);
- //Save the path to shared preferences
- SharedPreferences.Editor appPrefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext()).edit();
- appPrefs.putString("last_upload_path", mUploadPath);
- appPrefs.apply();
+ Intent intent = new Intent(getApplicationContext(), FileUploader.class);
+ intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);
+ intent.putExtra(FileUploader.KEY_LOCAL_FILE, local.toArray(new String[local.size()]));
+ intent.putExtra(FileUploader.KEY_REMOTE_FILE,
+ remote.toArray(new String[remote.size()]));
+ intent.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
+ startService(intent);
- finish();
+ //Save the path to shared preferences
+ SharedPreferences.Editor appPrefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext()).edit();
+ appPrefs.putString("last_upload_path", mUploadPath);
+ appPrefs.apply();
+
+ finish();
}
} catch (SecurityException e) {
// "/" equals root-directory
if(last_path.equals("/")) {
mParents.add("");
- }
- else{
+ } else{
String[] dir_names = last_path.split("/");
for (String dir : dir_names)
mParents.add(dir);
}
//Make sure that path still exists, if it doesn't pop the stack and try the previous path
- while(!getStorageManager().fileExists(generatePath(mParents)) && mParents.size() > 1){
- mParents.pop();
- }
+ while(!getStorageManager().fileExists(generatePath(mParents)) && mParents.size() > 1){
+ mParents.pop();
+ }
}
public boolean onOptionsItemSelected(MenuItem item) {
boolean retval = true;
switch (item.getItemId()) {
- case android.R.id.home: {
- if((mParents.size() > 1)) {
- onBackPressed();
- }
- break;
- }
- default:
- retval = super.onOptionsItemSelected(item);
+ case android.R.id.home:
+ if((mParents.size() > 1)) {
+ onBackPressed();
+ }
+ break;
+
+ default:
+ retval = super.onOptionsItemSelected(item);
}
return retval;
}
-
+
+ /**
+ * Process the result of CopyTmpFileAsyncTask
+ * @param result
+ * @param index
+ */
+ @Override
+ public void onTmpFileCopied(String result, int index) {
+ if (mNumCacheFile -- == 0) {
+ dismissWaitingCopyDialog();
+ }
+ if (result != null) {
+ Intent intent = new Intent(getApplicationContext(), FileUploader.class);
+ intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
+ intent.putExtra(FileUploader.KEY_LOCAL_FILE, result);
+ intent.putExtra(FileUploader.KEY_REMOTE_FILE, mRemoteCacheData.get(index));
+ intent.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
+ startService(intent);
+
+ } else {
+ String message = String.format(getString(R.string.uploader_error_forbidden_content),
+ getString(R.string.app_name));
+ Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+ Log_OC.d(TAG, message);
+ }
+
+ }
+/**
+ * Show waiting for copy dialog
+ */
+ public void showWaitingCopyDialog() {
+ // Construct dialog
+ LoadingDialog loading = new LoadingDialog(
+ getResources().getString(R.string.wait_for_tmp_copy_from_private_storage));
+ FragmentManager fm = getSupportFragmentManager();
+ FragmentTransaction ft = fm.beginTransaction();
+ loading.show(ft, DIALOG_WAIT_COPY_FILE);
+
+ }
+
+
+ /**
+ * Dismiss waiting for copy dialog
+ */
+ public void dismissWaitingCopyDialog(){
+ Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_COPY_FILE);
+ if (frag != null) {
+ LoadingDialog loading = (LoadingDialog) frag;
+ loading.dismiss();
+ }
+ }
}
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
-import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
-import android.preference.PreferenceManager;
import android.support.v4.view.ViewPager;
import android.view.View;
import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.activity.PinCodeActivity;
import com.owncloud.android.ui.fragment.FileFragment;
import com.owncloud.android.utils.DisplayUtils;
private View mFullScreenAnchorView;
-
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionBar.setIcon(DisplayUtils.getSeasonalIconId());
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.hide();
-
- // PIN CODE request
- if (getIntent().getExtras() != null && savedInstanceState == null && fromNotification()) {
- requestPinCode();
- }
// Make sure we're running on Honeycomb or higher to use FullScreen and
// Immersive Mode
@Override
protected void onResume() {
super.onResume();
- //Log_OC.e(TAG, "ACTIVITY, ONRESUME");
+
mDownloadFinishReceiver = new DownloadFinishReceiver();
IntentFilter filter = new IntentFilter(FileDownloader.getDownloadFinishMessage());
@Override
protected void onPostResume() {
- //Log_OC.e(TAG, "ACTIVITY, ONPOSTRESUME");
super.onPostResume();
}
@Override
public void onPause() {
- unregisterReceiver(mDownloadFinishReceiver);
- mDownloadFinishReceiver = null;
+ if (mDownloadFinishReceiver != null){
+ unregisterReceiver(mDownloadFinishReceiver);
+ mDownloadFinishReceiver = null;
+ }
+
super.onPause();
}
}
}
}
-
-
- /**
- * Launch an intent to request the PIN code to the user before letting him use the app
- */
- private void requestPinCode() {
- boolean pinStart = false;
- SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
- pinStart = appPrefs.getBoolean("set_pincode", false);
- if (pinStart) {
- Intent i = new Intent(getApplicationContext(), PinCodeActivity.class);
- i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "PreviewImageActivity");
- startActivity(i);
- }
- }
@Override
public void onBrowsedDownTo(OCFile folder) {
}
return false;
}
-
}
--- /dev/null
+/**
+ * ownCloud Android client application
+ *
+ * @author masensio
+ * Copyright (C) 2015 ownCloud Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package com.owncloud.android.utils;
+
+import android.content.ContentResolver;
+import android.net.Uri;
+import android.os.AsyncTask;
+
+import com.owncloud.android.lib.common.utils.Log_OC;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.lang.ref.WeakReference;
+
+/**
+ * AsyncTask to copy a file from a uri in a temporal file
+ */
+public class CopyTmpFileAsyncTask extends AsyncTask<Object, Void, String> {
+
+ private final String TAG = CopyTmpFileAsyncTask.class.getSimpleName();
+ private final WeakReference<OnCopyTmpFileTaskListener> mListener;
+ private int mIndex;
+
+ public int getIndex(){
+ return mIndex;
+ }
+
+ public CopyTmpFileAsyncTask(OnCopyTmpFileTaskListener listener) {
+ mListener = new WeakReference<OnCopyTmpFileTaskListener>(listener);
+ }
+
+ /**
+ * Params for execute:
+ * - Uri: uri of file
+ * - String: path for saving the file into the app
+ * - int: index of upload
+ * - String: accountName
+ * - ContentResolver: content resolver
+ */
+ @Override
+ protected String doInBackground(Object[] params) {
+ String result = null;
+
+ if (params != null && params.length == 5) {
+ Uri uri = (Uri) params[0];
+ String filePath = (String) params[1];
+ mIndex = ((Integer) params[2]).intValue();
+ String accountName = (String) params[3];
+ ContentResolver contentResolver = (ContentResolver) params[4];
+
+ String fullTempPath = FileStorageUtils.getTemporalPath(accountName) + filePath;
+ InputStream inputStream = null;
+ FileOutputStream outputStream = null;
+
+ try {
+ inputStream = contentResolver.openInputStream(uri);
+ File cacheFile = new File(fullTempPath);
+ File tempDir = cacheFile.getParentFile();
+ if (!tempDir.exists()) {
+ tempDir.mkdirs();
+ }
+ cacheFile.createNewFile();
+ outputStream = new FileOutputStream(fullTempPath);
+ byte[] buffer = new byte[4096];
+
+ int count = 0;
+
+ while ((count = inputStream.read(buffer)) > 0) {
+ outputStream.write(buffer, 0, count);
+ }
+
+ outputStream.close();
+ inputStream.close();
+
+ result = fullTempPath;
+ } catch (Exception e) {
+ Log_OC.e(TAG, "Exception ", e);
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (Exception e1) {
+ Log_OC.e(TAG, "Input Stream Exception ", e1);
+ }
+ }
+
+ if (outputStream != null) {
+ try {
+ outputStream.close();
+ } catch (Exception e1) {
+ Log_OC.e(TAG, "Output Stream Exception ", e1);
+ }
+ }
+
+ if (fullTempPath != null) {
+ File f = new File(fullTempPath);
+ f.delete();
+ }
+ result = null;
+ }
+ } else {
+ throw new IllegalArgumentException("Error in parameters number");
+ }
+
+ return result;
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+
+ OnCopyTmpFileTaskListener listener = mListener.get();
+ if (listener!= null)
+ {
+ listener.onTmpFileCopied(result, mIndex);
+ }
+ }
+
+ /*
+ * Interface to retrieve data from recognition task
+ */
+ public interface OnCopyTmpFileTaskListener{
+
+ void onTmpFileCopied(String result, int index);
+ }
+}