diff options
105 files changed, 599 insertions, 445 deletions
diff --git a/res/drawable/drag_shadow_background.xml b/res/drawable/drag_shadow_background.xml index 5940bb375..58c0e1afd 100644 --- a/res/drawable/drag_shadow_background.xml +++ b/res/drawable/drag_shadow_background.xml @@ -17,9 +17,6 @@ <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/item_drag_shadow_background" /> - <stroke - android:width="1dp" - android:color="#ff9f9f9f" /> <corners android:bottomRightRadius="2dp" android:bottomLeftRadius="2dp" diff --git a/res/drawable/ic_drop_not_ok_badge.xml b/res/drawable/ic_drop_not_ok_badge.xml index 45c8b6dd7..402aff8f8 100644 --- a/res/drawable/ic_drop_not_ok_badge.xml +++ b/res/drawable/ic_drop_not_ok_badge.xml @@ -15,10 +15,10 @@ Copyright (C) 2016 The Android Open Source Project --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="15dp" - android:height="15dp" - android:viewportWidth="30.0" - android:viewportHeight="30.0"> + android:width="14dp" + android:height="14dp" + android:viewportWidth="28.0" + android:viewportHeight="28.0"> <group android:name="whiteBg"> diff --git a/res/drawable/ic_drop_ok_badge.xml b/res/drawable/ic_drop_ok_badge.xml index 48e3e838a..7f1be3151 100644 --- a/res/drawable/ic_drop_ok_badge.xml +++ b/res/drawable/ic_drop_ok_badge.xml @@ -14,10 +14,10 @@ Copyright (C) 2016 The Android Open Source Project limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="15dp" - android:height="15dp" - android:viewportWidth="30.0" - android:viewportHeight="30.0"> + android:width="14dp" + android:height="14dp" + android:viewportWidth="28.0" + android:viewportHeight="28.0"> <group android:name="whiteBg"> diff --git a/res/layout/directory_cluster.xml b/res/layout/directory_cluster.xml index 36236721d..f4a243d83 100644 --- a/res/layout/directory_cluster.xml +++ b/res/layout/directory_cluster.xml @@ -24,14 +24,6 @@ <!-- column headers are empty on small screens, in portrait or in grid mode. --> <include layout="@layout/column_headers"/> - <ProgressBar - android:id="@+id/progressbar" - android:layout_width="match_parent" - android:layout_height="@dimen/progress_bar_height" - android:indeterminate="true" - style="@style/TrimmedHorizontalProgressBar" - android:visibility="gone"/> - <FrameLayout android:id="@+id/container_directory" android:clipToPadding="false" diff --git a/res/layout/drag_shadow_layout.xml b/res/layout/drag_shadow_layout.xml index e94c443ae..0f0671820 100644 --- a/res/layout/drag_shadow_layout.xml +++ b/res/layout/drag_shadow_layout.xml @@ -14,25 +14,35 @@ limitations under the License. --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<!-- Transparent container so shadow layer can be drawn --> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingStart="8dp" - android:paddingEnd="8dp" - android:orientation="horizontal" - android:gravity="center_vertical|left" - android:background="@drawable/drag_shadow_background"> + android:padding="8dp" + android:background="@*android:color/transparent"> - <include layout="@layout/drop_badge"/> - - <TextView - android:id="@android:id/title" + <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:maxLines="1" - android:ellipsize="end" - android:textAlignment="viewStart" - android:textColor="@color/item_title" - android:paddingStart="8dp"/> + android:layout_height="match_parent" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:orientation="horizontal" + android:gravity="center_vertical" + android:background="@drawable/drag_shadow_background"> + + <include layout="@layout/drop_badge"/> + + <TextView + android:id="@android:id/title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:maxLines="1" + android:ellipsize="end" + android:textAlignment="viewStart" + android:textColor="@color/item_title" + android:paddingStart="6dp" + android:paddingBottom="1dp"/> + </LinearLayout> </LinearLayout> diff --git a/res/layout/drop_badge.xml b/res/layout/drop_badge.xml index 485f400f2..e17fa1ce0 100644 --- a/res/layout/drop_badge.xml +++ b/res/layout/drop_badge.xml @@ -17,8 +17,8 @@ <com.android.documentsui.DropBadgeView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/icon" - android:layout_width="@dimen/root_icon_size" - android:layout_height="@dimen/root_icon_size" + android:layout_width="26dp" + android:layout_height="26dp" android:scaleType="centerInside" android:contentDescription="@null" android:duplicateParentState="true"/>
\ No newline at end of file diff --git a/res/layout/fragment_directory.xml b/res/layout/fragment_directory.xml index 4d608f13e..22bcbe3c3 100644 --- a/res/layout/fragment_directory.xml +++ b/res/layout/fragment_directory.xml @@ -23,6 +23,14 @@ android:elevation="4dp" android:orientation="vertical"> + <ProgressBar + android:id="@+id/progressbar" + android:layout_width="match_parent" + android:layout_height="@dimen/progress_bar_height" + android:indeterminate="true" + style="@style/TrimmedHorizontalProgressBar" + android:visibility="gone"/> + <FrameLayout android:id="@+id/container_message_bar" android:layout_width="match_parent" diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index cc34f9290..f03ff79f0 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Vee <xliff:g id="COUNT_1">%1$d</xliff:g> items uit?</item> <item quantity="one">Vee <xliff:g id="COUNT_0">%1$d</xliff:g> item uit?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumente"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Aflaaie"</string> </resources> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index ee10d6fe0..cd0cdeb2f 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች ይሰረዙ?</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች ይሰረዙ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ሰነዶች"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"የወረዱ"</string> </resources> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 4ca1c48a0..355645005 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -192,8 +192,6 @@ <item quantity="other">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> عنصر؟</item> <item quantity="one">هل تريد حذف <xliff:g id="COUNT_0">%1$d</xliff:g> عنصر؟</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"المستندات"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"التنزيلات"</string> </resources> diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml index f29ae6c57..14940956b 100644 --- a/res/values-az-rAZ/strings.xml +++ b/res/values-az-rAZ/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> element silinsin?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element silinsin?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Sənədlər"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Endirilənlər"</string> </resources> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index c7672aec7..322e860e9 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Искате ли да изтриете <xliff:g id="COUNT_1">%1$d</xliff:g> елемента?</item> <item quantity="one">Искате ли да изтриете <xliff:g id="COUNT_0">%1$d</xliff:g> елемент?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документи"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Изтегляния"</string> </resources> diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml index 7c3743bc0..0b87ab5f4 100644 --- a/res/values-bn-rBD/strings.xml +++ b/res/values-bn-rBD/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম মুছবেন?</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম মুছবেন?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"দস্তাবেজগুলি"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ডাউনলোডগুলি"</string> </resources> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 338be81a8..71777480f 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Vols suprimir <xliff:g id="COUNT_1">%1$d</xliff:g> elements?</item> <item quantity="one">Vols suprimir <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Baixades"</string> </resources> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index b9838330d..37b0e6492 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -168,8 +168,6 @@ <item quantity="other">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> položek?</item> <item quantity="one">Smazat <xliff:g id="COUNT_0">%1$d</xliff:g> položku?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenty"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Stažené soubory"</string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 3d54e84c5..42ee82ea4 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> element?</item> <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> elementer?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenter"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 507a1b9c5..165a84689 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Elemente löschen?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Element löschen?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumente"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index e097391fe..58cb8a947 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Να διαγραφούν <xliff:g id="COUNT_1">%1$d</xliff:g> στοιχεία;</item> <item quantity="one">Να διαγραφεί <xliff:g id="COUNT_0">%1$d</xliff:g> στοιχείο;</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Έγγραφα"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Λήψεις"</string> </resources> diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 48989095e..2b7275d42 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item> <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 48989095e..2b7275d42 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item> <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 48989095e..2b7275d42 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item> <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index c56747877..8dc3af1f4 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">¿Deseas borrar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item> <item quantity="one">¿Deseas borrar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Descargas"</string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index e7c711e56..b8b840b48 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -112,7 +112,7 @@ <item quantity="other">Se han copiado <xliff:g id="COUNT_1">%1$d</xliff:g> archivos al portapapeles.</item> <item quantity="one">Se ha copiado <xliff:g id="COUNT_0">%1$d</xliff:g> archivo al portapapeles.</item> </plurals> - <string name="file_operation_error" msgid="5016141190607538391">"No se puede hacer la operación en el archivo."</string> + <string name="file_operation_error" msgid="5016141190607538391">"No se puede hacer la operación con el archivo."</string> <string name="rename_error" msgid="6700093173508118635">"No se ha podido cambiar el nombre del documento"</string> <string name="menu_eject_root" msgid="9215040039374893613">"Expulsar"</string> <string name="notification_copy_files_converted_title" msgid="6916768494891833365">"Se han convertido algunos archivos"</string> @@ -144,8 +144,6 @@ <item quantity="other">¿Eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item> <item quantity="one">¿Eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Descargas"</string> </resources> diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index 84ff18693..1a6d262e9 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Kas kustutada <xliff:g id="COUNT_1">%1$d</xliff:g> üksust?</item> <item quantity="one">Kas kustutada <xliff:g id="COUNT_0">%1$d</xliff:g> üksus?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumendid"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Allalaadimised"</string> </resources> diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml index 80404add0..6d1d69891 100644 --- a/res/values-eu-rES/strings.xml +++ b/res/values-eu-rES/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementu ezabatu nahi dituzu?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elementu ezabatu nahi duzu?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumentuak"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Deskargak"</string> </resources> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 8bd9fa9b4..55dfb09ac 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد حذف شود؟</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد حذف شود؟</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"اسناد"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"بارگیریها"</string> </resources> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 507dac0c6..b6292494a 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Poistetaanko <xliff:g id="COUNT_1">%1$d</xliff:g> kohdetta?</item> <item quantity="one">Poistetaanko <xliff:g id="COUNT_0">%1$d</xliff:g> kohde?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumentit"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Lataukset"</string> </resources> diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index d85f6d08d..0663f4799 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> élément?</item> <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> éléments?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Téléchargements"</string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index dd9077123..2736bacfc 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> élément ?</item> <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> éléments ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documents"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Téléchargements"</string> </resources> diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml index 749311ad7..09b3ffb2a 100644 --- a/res/values-gl-rES/strings.xml +++ b/res/values-gl-rES/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Queres eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item> <item quantity="one">Queres eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Descargas"</string> </resources> diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml index e203e7d4f..0d1f12dfc 100644 --- a/res/values-gu-rIN/strings.xml +++ b/res/values-gu-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ કાઢી નાખીએ?</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ કાઢી નાખીએ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"દસ્તાવેજો"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ડાઉનલોડ્સ"</string> </resources> diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index b3a74ce09..8b567d521 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम हटाएं?</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम हटाएं?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"दस्तावेज़"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"डाउनलोड"</string> </resources> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index e28fecdff..38bce6d2e 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -156,8 +156,6 @@ <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavke?</item> <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavki?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenti"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Preuzimanja"</string> </resources> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index b62574268..a2b5cc97e 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Töröl <xliff:g id="COUNT_1">%1$d</xliff:g> elemet?</item> <item quantity="one">Töröl <xliff:g id="COUNT_0">%1$d</xliff:g> elemet?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumentumok"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Letöltések"</string> </resources> diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml index 5cab4ad44..5f47beea3 100644 --- a/res/values-hy-rAM/strings.xml +++ b/res/values-hy-rAM/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item> <item quantity="other">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> տարր:</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Փաստաթղթեր"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Ներբեռնումներ"</string> </resources> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index f0ec26eba..0e53dcc1b 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Hapus <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item> <item quantity="one">Hapus <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumen"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloadan"</string> </resources> diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml index 3d734b246..f74082abd 100644 --- a/res/values-is-rIS/strings.xml +++ b/res/values-is-rIS/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> atriði?</item> <item quantity="other">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> atriðum?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Skjöl"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Niðurhal"</string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 23158de52..5d94896b3 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Eliminare <xliff:g id="COUNT_1">%1$d</xliff:g> elementi?</item> <item quantity="one">Eliminare <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documenti"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Download"</string> </resources> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 9712a2b89..8c994f85c 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -168,8 +168,6 @@ <item quantity="other">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> פריטים?</item> <item quantity="one">האם למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> פריט?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"מסמכים"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"הורדות"</string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 2a828ba29..fd7d39db0 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個の項目を削除しますか?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個の項目を削除しますか?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ドキュメント"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ダウンロード"</string> </resources> diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index 95f408b16..03cce399f 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">გსურთ <xliff:g id="COUNT_1">%1$d</xliff:g> ერთეულის წაშლა?</item> <item quantity="one">გსურთ <xliff:g id="COUNT_0">%1$d</xliff:g> ერთეულის წაშლა?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"დოკუმენტები"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ჩამოტვირთვები"</string> </resources> diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml index a7e7d84c3..2d734f407 100644 --- a/res/values-kk-rKZ/strings.xml +++ b/res/values-kk-rKZ/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> элемент жойылсын ба?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> элемент жойылсын ба?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Құжаттар"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Жүктеп алынғандар"</string> </resources> diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml index 60a52dbc0..fb359deca 100644 --- a/res/values-km-rKH/strings.xml +++ b/res/values-km-rKH/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">លុបធាតុ <xliff:g id="COUNT_1">%1$d</xliff:g> ឬ?</item> <item quantity="one">លុបធាតុ <xliff:g id="COUNT_0">%1$d</xliff:g> ឬ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ឯកសារ"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ទាញយក"</string> </resources> diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml index 57869b8f8..8a61fb27a 100644 --- a/res/values-kn-rIN/strings.xml +++ b/res/values-kn-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸುವುದೇ?</item> <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸುವುದೇ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ಡಾಕ್ಯುಮೆಂಟ್ಗಳು"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ಡೌನ್ಲೋಡ್ಗಳು"</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 9fa1d2c51..6bd3d20be 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">항목 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 삭제하시겠습니까?</item> <item quantity="one">항목 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 삭제하시겠습니까?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"문서"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"다운로드"</string> </resources> diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml index 7e755e76f..90044bef1 100644 --- a/res/values-ky-rKG/strings.xml +++ b/res/values-ky-rKG/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> нерсе жок кылынсынбы?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> нерсе жок кылынсынбы?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документтер"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Жүктөлүп алынгандар"</string> </resources> diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml index c0f397045..4e9f56a6a 100644 --- a/res/values-lo-rLA/strings.xml +++ b/res/values-lo-rLA/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">ລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ລາຍການອອກບໍ?</item> <item quantity="one">ລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ລາຍການອອກບໍ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ເອກະສານ"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ດາວໂຫລດ"</string> </resources> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index cda989b2f..4962331c0 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -168,8 +168,6 @@ <item quantity="many">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elemento?</item> <item quantity="other">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elementų?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumentai"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Atsisiuntimai"</string> </resources> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 20f0b5976..5abb982be 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -156,8 +156,6 @@ <item quantity="one">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> vienumu?</item> <item quantity="other">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> vienumus?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenti"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Lejupielādes"</string> </resources> diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml index 51392bd35..72583965c 100644 --- a/res/values-mk-rMK/strings.xml +++ b/res/values-mk-rMK/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Да се избрише <xliff:g id="COUNT_1">%1$d</xliff:g> ставка?</item> <item quantity="other">Да се избришат <xliff:g id="COUNT_1">%1$d</xliff:g> ставки?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документи"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Преземања"</string> </resources> diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml index f49f64ac5..176e3ce1a 100644 --- a/res/values-ml-rIN/strings.xml +++ b/res/values-ml-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഇനങ്ങൾ ഇല്ലാതാക്കണോ?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഇനം ഇല്ലാതാക്കണോ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ഡോക്യുമെന്റുകൾ"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ഡൗണ്ലോഡുകൾ"</string> </resources> diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml index 0d924cc71..4f99831b8 100644 --- a/res/values-mn-rMN/strings.xml +++ b/res/values-mn-rMN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> зүйлийг устгах уу?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> зүйлийг устгах уу?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документ"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Таталт"</string> </resources> diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml index 48b3f88f4..9a1bed730 100644 --- a/res/values-mr-rIN/strings.xml +++ b/res/values-mr-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम हटवायचा?</item> <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम हटवायचे?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"दस्तऐवज"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"डाउनलोड"</string> </resources> diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml index d8128bce7..e655b378d 100644 --- a/res/values-ms-rMY/strings.xml +++ b/res/values-ms-rMY/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Padamkan <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item> <item quantity="one">Padamkan <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumen"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Muat turun"</string> </resources> diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml index 1fa8ae2a6..1bb3a18a0 100644 --- a/res/values-my-rMM/strings.xml +++ b/res/values-my-rMM/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">အကြောင်းအရာ <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကို ဖျက်မှာလား။</item> <item quantity="one">အကြောင်းအရာ <xliff:g id="COUNT_0">%1$d</xliff:g> ခုကို ဖျက်မှာလား။</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"မှတ်တမ်းမှတ်ရာများ"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ဒေါင်းလုဒ်များ"</string> </resources> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 3bb31a576..ef75b52a7 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> elementer?</item> <item quantity="one">Vil du slette <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenter"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Nedlastinger"</string> </resources> diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml index 89ebf30d3..99ec11129 100644 --- a/res/values-ne-rNP/strings.xml +++ b/res/values-ne-rNP/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> वस्तुहरूलाई मेट्ने हो?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> वस्तुलाई मेट्ने हो?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"कागजातहरू"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"डाउनलोडहरू"</string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 6a80f6c51..8983dea19 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items verwijderen?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item verwijderen?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documenten"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml index aa93d3916..b961bd215 100644 --- a/res/values-pa-rIN/strings.xml +++ b/res/values-pa-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item> <item quantity="other">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ਦਸਤਾਵੇਜ਼"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ਡਾਊਨਲੋਡ"</string> </resources> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 14fdcbe02..2e5d857cd 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -168,8 +168,6 @@ <item quantity="other">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> elementu?</item> <item quantity="one">Usunąć <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenty"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Pobrane"</string> </resources> diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index cce1858f2..ca8526e35 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item> <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 2da735a75..f60205e72 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Pretende eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item> <item quantity="one">Pretende eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Transferências"</string> </resources> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index cce1858f2..ca8526e35 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item> <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documentos"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Downloads"</string> </resources> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 4df8586bb..7c0ec54f8 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -156,8 +156,6 @@ <item quantity="other">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> de elemente?</item> <item quantity="one">Ștergeți <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Documente"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Descărcări"</string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 5719457ec..117e2e63b 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -168,8 +168,6 @@ <item quantity="many">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объектов?</item> <item quantity="other">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объекта?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документы"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Скачанные файлы"</string> </resources> diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml index 003cf413e..73f084a04 100644 --- a/res/values-si-rLK/strings.xml +++ b/res/values-si-rLK/strings.xml @@ -65,7 +65,7 @@ <string name="root_type_device" msgid="1713604128005476585">"උපාංග"</string> <string name="root_type_apps" msgid="8646073235029886342">"තවත් යෙදුම්"</string> <string name="empty" msgid="5300254272613103004">"අයිතම නැත"</string> - <string name="no_results" msgid="2371026325236359209">"%1$s හි තරඟ නැත"</string> + <string name="no_results" msgid="2371026325236359209">"%1$s හි ගැළපුම් නැත"</string> <string name="toast_no_application" msgid="7555319548595113121">"ගොනුව විවෘත කළ නොහැකිය"</string> <string name="toast_failed_delete" msgid="3453846588205817591">"සමහර ලේඛන මැකීමට නොහැකිය"</string> <string name="share_via" msgid="8725082736005677161">"බෙදාගන්නේ"</string> @@ -144,8 +144,6 @@ <item quantity="one">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item> <item quantity="other">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ලේඛන"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"බාගැනීම්"</string> </resources> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 3f748f7bc..fd5068754 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -168,8 +168,6 @@ <item quantity="other">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> položiek?</item> <item quantity="one">Odstrániť <xliff:g id="COUNT_0">%1$d</xliff:g> položku?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenty"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Stiahnuté súbory"</string> </resources> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index eaac32485..0ed482d88 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -168,8 +168,6 @@ <item quantity="few">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> elemente?</item> <item quantity="other">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> elementov?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumenti"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Prenosi"</string> </resources> diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml index eeffcf439..da5320b6a 100644 --- a/res/values-sq-rAL/strings.xml +++ b/res/values-sq-rAL/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Të fshihen <xliff:g id="COUNT_1">%1$d</xliff:g> artikuj?</item> <item quantity="one">Të fshihet <xliff:g id="COUNT_0">%1$d</xliff:g> artikull?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokumentet"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Shkarkimet"</string> </resources> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index e7d836325..4831832e2 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -156,8 +156,6 @@ <item quantity="few">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> ставке?</item> <item quantity="other">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> ставки?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документи"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Преузимања"</string> </resources> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 1b373f8f8..e77fc82f3 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Vill du radera <xliff:g id="COUNT_1">%1$d</xliff:g> objekt?</item> <item quantity="one">Vill du radera <xliff:g id="COUNT_0">%1$d</xliff:g> objekt?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokument"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Nedladdningar"</string> </resources> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index eb263b3d0..e7510db93 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Ungependa kufuta vipengee <xliff:g id="COUNT_1">%1$d</xliff:g>?</item> <item quantity="one">Ungependa kufuta kipengee <xliff:g id="COUNT_0">%1$d</xliff:g>?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Hati"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Vipakuliwa"</string> </resources> diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml index d27ac83bb..b5895b514 100644 --- a/res/values-ta-rIN/strings.xml +++ b/res/values-ta-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> உருப்படிகளை நீக்கவா?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> உருப்படியை நீக்கவா?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"ஆவணங்கள்"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"பதிவிறக்கங்கள்"</string> </resources> diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml index 380e9f340..d54b16c10 100644 --- a/res/values-te-rIN/strings.xml +++ b/res/values-te-rIN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> అంశాలను తొలగించాలా?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> అంశాన్ని తొలగించాలా?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"పత్రాలు"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"డౌన్లోడ్లు"</string> </resources> diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 05dcdcdd1..b8ed6d08a 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">ลบ <xliff:g id="COUNT_1">%1$d</xliff:g> รายการใช่ไหม</item> <item quantity="one">ลบ <xliff:g id="COUNT_0">%1$d</xliff:g> รายการใช่ไหม</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"เอกสาร"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ดาวน์โหลด"</string> </resources> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 385323dc2..0e00639c0 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item> <item quantity="other">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> na item?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Mga Dokumento"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Mga Download"</string> </resources> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index ecabdbce9..82cc6c502 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> öğe silinsin mi?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> öğe silinsin mi?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Dokümanlar"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"İndirilenler"</string> </resources> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 416bfb410..bfa55f6d5 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -168,8 +168,6 @@ <item quantity="many">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елементів?</item> <item quantity="other">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елемента?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Документи"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Завантаження"</string> </resources> diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml index df415cee9..f108ab1ef 100644 --- a/res/values-ur-rPK/strings.xml +++ b/res/values-ur-rPK/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> آئٹمز حذف کریں؟</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> آئٹم حذف کریں؟</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"دستاویزات"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"ڈاؤن لوڈز"</string> </resources> diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml index 6bc471a8e..2a3fc4d7e 100644 --- a/res/values-uz-rUZ/strings.xml +++ b/res/values-uz-rUZ/strings.xml @@ -144,8 +144,6 @@ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta element o‘chirib tashlansinmi?</item> <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta element o‘chirib tashlansinmi?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Hujjatlar"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Yuklanmalar"</string> </resources> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 60b348ff1..8bf8e9a40 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">Xóa <xliff:g id="COUNT_1">%1$d</xliff:g> mục?</item> <item quantity="one">Xóa <xliff:g id="COUNT_0">%1$d</xliff:g> mục?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Tài liệu"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Nội dung tải xuống"</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index bce87110a..a61fc9c00 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">要删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 项吗?</item> <item quantity="one">要删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 项吗?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"文档"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"下载内容"</string> </resources> diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index c4bc4b193..0299d6d5c 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目嗎?</item> <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目嗎?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"文件"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"下載"</string> </resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 57d4dff02..ea492fc96 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -144,8 +144,6 @@ <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目嗎?</item> <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目嗎?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"文件"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"下載"</string> </resources> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 3c6c87a20..b9e8fb681 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -144,8 +144,6 @@ <item quantity="one">Susa izinto ezingu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item> <item quantity="other">Susa izinto ezingu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item> </plurals> - <!-- no translation found for documents_shortcut_label (6185476684846785830) --> - <skip /> - <!-- no translation found for downloads_shortcut_label (9109062409874698197) --> - <skip /> + <string name="documents_shortcut_label" msgid="6185476684846785830">"Amadokhumenti"</string> + <string name="downloads_shortcut_label" msgid="9109062409874698197">"Okulandiwe"</string> </resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 2c4ff9977..a9be865e3 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -43,8 +43,10 @@ <dimen name="drawer_edge_width">12dp</dimen> - <dimen name="drag_shadow_width">160dp</dimen> - <dimen name="drag_shadow_height">48dp</dimen> + <dimen name="drag_shadow_width">176dp</dimen> + <dimen name="drag_shadow_height">64dp</dimen> + <dimen name="drag_shadow_radius">4dp</dimen> + <dimen name="drag_shadow_padding">8dp</dimen> <dimen name="doc_header_sort_icon_size">16dp</dimen> <dimen name="doc_header_height">60dp</dimen> @@ -52,6 +54,6 @@ <dimen name="dropdown_sort_widget_margin">20dp</dimen> <dimen name="dropdown_sort_widget_icon_size">30dp</dimen> - <dimen name="drop_icon_height">15dp</dimen> - <dimen name="drop_icon_width">15dp</dimen> + <dimen name="drop_icon_height">14dp</dimen> + <dimen name="drop_icon_width">14dp</dimen> </resources> diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java index ad7295bf8..c9db7ccac 100644 --- a/src/com/android/documentsui/BaseActivity.java +++ b/src/com/android/documentsui/BaseActivity.java @@ -53,6 +53,7 @@ import com.android.documentsui.base.State; import com.android.documentsui.base.State.ViewMode; import com.android.documentsui.dirlist.AnimationView; import com.android.documentsui.dirlist.DirectoryFragment; +import com.android.documentsui.queries.DebugCommandProcessor; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.queries.SearchViewManager.SearchManagerListener; import com.android.documentsui.roots.GetRootDocumentTask; @@ -167,7 +168,14 @@ public abstract class BaseActivity mNavigator.update(); } }; - mSearchManager = new SearchViewManager(searchListener, icicle); + + // "Commands" are meta input for controlling system behavior. + // We piggy back on search input as it is the only text input + // area in the app. But the functionality is independent + // of "regular" search query processing. + DebugCommandProcessor dbgCommands = new DebugCommandProcessor(); + dbgCommands.add(new DebugCommandProcessor.DumpRootsCacheHandler(this)); + mSearchManager = new SearchViewManager(searchListener, dbgCommands, icicle); mSortController = SortController.create(this, mState.derivedMode, mState.sortModel); // Base classes must update result in their onCreate. diff --git a/src/com/android/documentsui/DocumentsApplication.java b/src/com/android/documentsui/DocumentsApplication.java index 3f1d48b76..94e9da608 100644 --- a/src/com/android/documentsui/DocumentsApplication.java +++ b/src/com/android/documentsui/DocumentsApplication.java @@ -37,7 +37,6 @@ public class DocumentsApplication extends Application { private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS; private RootsCache mRoots; - private ThumbnailCache mThumbnailCache; private ClipStorage mClipStore; private DocumentClipper mClipper; diff --git a/src/com/android/documentsui/DragShadowBuilder.java b/src/com/android/documentsui/DragShadowBuilder.java index 24e037da9..2bc6dde65 100644 --- a/src/com/android/documentsui/DragShadowBuilder.java +++ b/src/com/android/documentsui/DragShadowBuilder.java @@ -18,6 +18,8 @@ package com.android.documentsui; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -41,18 +43,23 @@ public final class DragShadowBuilder extends View.DragShadowBuilder { private final DropBadgeView mIcon; private final int mWidth; private final int mHeight; + private final int mShadowRadius; + private int mPadding; + private Paint paint; public DragShadowBuilder(Context context) { mWidth = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_width); mHeight = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_height); + mShadowRadius = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_radius); + mPadding = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_padding); mShadowView = LayoutInflater.from(context).inflate(R.layout.drag_shadow_layout, null); mTitle = (TextView) mShadowView.findViewById(android.R.id.title); mIcon = (DropBadgeView) mShadowView.findViewById(android.R.id.icon); - mShadowView - .setBackground(context.getResources().getDrawable(R.drawable.drag_shadow_background, - null)); + // Important for certain APIs + mShadowView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint); + paint = new Paint(Paint.ANTI_ALIAS_FLAG); } @Override @@ -68,8 +75,22 @@ public final class DragShadowBuilder extends View.DragShadowBuilder { // Calling measure is necessary in order for all child views to get correctly laid out. mShadowView.measure( View.MeasureSpec.makeMeasureSpec(r.right- r.left, View.MeasureSpec.EXACTLY), - View.MeasureSpec.makeMeasureSpec(r.top- r.bottom, View.MeasureSpec.EXACTLY)); + View.MeasureSpec.makeMeasureSpec(r.bottom - r.top , View.MeasureSpec.EXACTLY)); mShadowView.layout(r.left, r.top, r.right, r.bottom); + + // Since DragShadow is not an actual view drawn in hardware-accelerated window, + // android:elevation does not work; we need to draw the shadow ourselves manually. + paint.setColor(Color.TRANSPARENT); + // Shadow 1 + int opacity = (int) (255 * 0.1); + paint.setShadowLayer(mShadowRadius, 0, 0, Color.argb(opacity, 0, 0, 0)); + canvas.drawRect(r.left + mPadding, r.top + mPadding, r.right - mPadding, + r.bottom - mPadding, paint); + // Shadow 2 + opacity = (int) (255 * 0.24); + paint.setShadowLayer(mShadowRadius, 0, mShadowRadius, Color.argb(opacity, 0, 0, 0)); + canvas.drawRect(r.left + mPadding, r.top + mPadding, r.right - mPadding, + r.bottom - mPadding, paint); mShadowView.draw(canvas); } diff --git a/src/com/android/documentsui/DropBadgeView.java b/src/com/android/documentsui/DropBadgeView.java index 8ed67013d..6d18af0ab 100644 --- a/src/com/android/documentsui/DropBadgeView.java +++ b/src/com/android/documentsui/DropBadgeView.java @@ -41,6 +41,7 @@ public final class DropBadgeView extends ImageView { .getDimensionPixelSize(R.dimen.drop_icon_height); final int badgeWidth = context.getResources() .getDimensionPixelSize(R.dimen.drop_icon_width); + final int iconSize = context.getResources().getDimensionPixelSize(R.dimen.root_icon_size); Drawable okBadge = context.getResources().getDrawable(R.drawable.drop_badge_states, null); Drawable defaultIcon = context.getResources() @@ -50,7 +51,9 @@ public final class DropBadgeView extends ImageView { mBackground = new LayerDrawable(list); mBackground.setLayerGravity(1, Gravity.BOTTOM | Gravity.RIGHT); + mBackground.setLayerGravity(0, Gravity.TOP | Gravity.LEFT); mBackground.setLayerSize(1, badgeWidth, badgeHeight); + mBackground.setLayerSize(0, iconSize, iconSize); setBackground(mBackground); } diff --git a/src/com/android/documentsui/RefreshTask.java b/src/com/android/documentsui/RefreshTask.java index d2083461d..ef6a16ebc 100644 --- a/src/com/android/documentsui/RefreshTask.java +++ b/src/com/android/documentsui/RefreshTask.java @@ -111,12 +111,13 @@ public class RefreshTask extends TimeoutTask<Void, Boolean> { @Override public void finish(Boolean refreshSupported) { if (DEBUG) { - if (refreshSupported) { + // In case of timeout, refreshSupported is null. + if (Boolean.TRUE.equals(refreshSupported)) { Log.v(TAG, "Provider supports refresh and has refreshed"); } else { Log.v(TAG, "Provider does not support refresh and did not refresh"); } } - mCallback.accept(refreshSupported); + mCallback.accept(refreshSupported != null ? refreshSupported : Boolean.FALSE); } } diff --git a/src/com/android/documentsui/archives/Archive.java b/src/com/android/documentsui/archives/Archive.java index 410ec6ab4..496ffdc00 100644 --- a/src/com/android/documentsui/archives/Archive.java +++ b/src/com/android/documentsui/archives/Archive.java @@ -58,8 +58,10 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Stack; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import java.util.zip.ZipEntry; /** @@ -83,7 +85,7 @@ public class Archive implements Closeable { private final Uri mArchiveUri; private final Uri mNotificationUri; private final StrictJarFile mZipFile; - private final ExecutorService mExecutor; + private final ThreadPoolExecutor mExecutor; private final Map<String, ZipEntry> mEntries; private final Map<String, List<ZipEntry>> mTree; @@ -100,7 +102,12 @@ public class Archive implements Closeable { mZipFile = file != null ? new StrictJarFile(file.getPath(), false /* verify */, false /* signatures */) : new StrictJarFile(fd, false /* verify */, false /* signatures */); - mExecutor = Executors.newSingleThreadExecutor(); + + // At most 8 active threads. All threads idling for more than a minute will + // be closed. + mExecutor = new ThreadPoolExecutor(8, 8, 60, TimeUnit.SECONDS, + new LinkedBlockingQueue<Runnable>()); + mExecutor.allowCoreThreadTimeOut(true); // Build the tree structure in memory. mTree = new HashMap<>(); @@ -199,6 +206,9 @@ public class Archive implements Closeable { * * If the file descriptor is not seekable, then a snapshot will be created. * + * This method takes ownership for the passed descriptor. The caller must + * not close it. + * * @param context Context of the provider. * @param descriptor File descriptor for the archive's contents. * @param archiveUri Uri of the archive document. @@ -208,43 +218,54 @@ public class Archive implements Closeable { Context context, ParcelFileDescriptor descriptor, Uri archiveUri, @Nullable Uri notificationUri) throws IOException { - if (canSeek(descriptor)) { - return new Archive(context, null, descriptor.getFileDescriptor(), archiveUri, - notificationUri); - } - - // Fallback for non-seekable file descriptors. - File snapshotFile = null; + FileDescriptor fd = null; try { - // Create a copy of the archive, as ZipFile doesn't operate on streams. - // Moreover, ZipInputStream would be inefficient for large files on - // pipes. - snapshotFile = File.createTempFile("com.android.documentsui.snapshot{", - "}.zip", context.getCacheDir()); - - try ( - final FileOutputStream outputStream = - new ParcelFileDescriptor.AutoCloseOutputStream( - ParcelFileDescriptor.open( - snapshotFile, ParcelFileDescriptor.MODE_WRITE_ONLY)); - final ParcelFileDescriptor.AutoCloseInputStream inputStream = - new ParcelFileDescriptor.AutoCloseInputStream(descriptor); - ) { - final byte[] buffer = new byte[32 * 1024]; - int bytes; - while ((bytes = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytes); - } - outputStream.flush(); + if (canSeek(descriptor)) { + fd = new FileDescriptor(); + fd.setInt$(descriptor.detachFd()); + return new Archive(context, null, fd, archiveUri, + notificationUri); } - return new Archive(context, snapshotFile, null, archiveUri, - notificationUri); - } finally { - // On UNIX the file will be still available for processes which opened it, even - // after deleting it. Remove it ASAP, as it won't be used by anyone else. - if (snapshotFile != null) { - snapshotFile.delete(); + + // Fallback for non-seekable file descriptors. + File snapshotFile = null; + try { + // Create a copy of the archive, as ZipFile doesn't operate on streams. + // Moreover, ZipInputStream would be inefficient for large files on + // pipes. + snapshotFile = File.createTempFile("com.android.documentsui.snapshot{", + "}.zip", context.getCacheDir()); + + try ( + final FileOutputStream outputStream = + new ParcelFileDescriptor.AutoCloseOutputStream( + ParcelFileDescriptor.open( + snapshotFile, ParcelFileDescriptor.MODE_WRITE_ONLY)); + final ParcelFileDescriptor.AutoCloseInputStream inputStream = + new ParcelFileDescriptor.AutoCloseInputStream(descriptor); + ) { + final byte[] buffer = new byte[32 * 1024]; + int bytes; + while ((bytes = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytes); + } + outputStream.flush(); + } + return new Archive(context, snapshotFile, null, archiveUri, + notificationUri); + } finally { + // On UNIX the file will be still available for processes which opened it, even + // after deleting it. Remove it ASAP, as it won't be used by anyone else. + if (snapshotFile != null) { + snapshotFile.delete(); + } } + } catch (Exception e) { + // Since the method takes ownership of the passed descriptor, close it + // on exception. + IoUtils.closeQuietly(descriptor); + IoUtils.closeQuietly(fd); + throw e; } } @@ -479,24 +500,19 @@ public class Archive implements Closeable { } /** - * Schedules a gracefully close of the archive after any opened files are closed. + * Closes an archive. * * <p>This method does not block until shutdown. Once called, other methods should not be - * called. + * called. Any active pipes will be terminated. */ @Override public void close() { - mExecutor.execute(new Runnable() { - @Override - public void run() { - try { - mZipFile.close(); - } catch (IOException e) { - // Silent close. - } - } - }); - mExecutor.shutdown(); + mExecutor.shutdownNow(); + try { + mZipFile.close(); + } catch (IOException e) { + // Silent close. + } } private void addCursorRow(MatrixCursor cursor, ZipEntry entry) { diff --git a/src/com/android/documentsui/base/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java index bf01f2fa9..3185d0972 100644 --- a/src/com/android/documentsui/base/DocumentInfo.java +++ b/src/com/android/documentsui/base/DocumentInfo.java @@ -217,6 +217,7 @@ public class DocumentInfo implements Durable, Parcelable { + ", isContainer=" + isContainer() + ", isDirectory=" + isDirectory() + ", isArchive=" + isArchive() + + ", isInArchive=" + isInArchive() + ", isPartial=" + isPartial() + ", isVirtual=" + isVirtual() + ", isDeleteSupported=" + isDeleteSupported() @@ -254,6 +255,10 @@ public class DocumentInfo implements Durable, Parcelable { return ArchivesProvider.isSupportedArchiveType(mimeType); } + public boolean isInArchive() { + return ArchivesProvider.AUTHORITY.equals(authority); + } + public boolean isPartial() { return (flags & Document.FLAG_PARTIAL) != 0; } diff --git a/src/com/android/documentsui/base/RootInfo.java b/src/com/android/documentsui/base/RootInfo.java index 0b464172e..2d68161db 100644 --- a/src/com/android/documentsui/base/RootInfo.java +++ b/src/com/android/documentsui/base/RootInfo.java @@ -416,6 +416,12 @@ public class RootInfo implements Durable, Parcelable, Comparable<RootInfo> { + getUri(); } + public String toDebugString() { + return (TextUtils.isEmpty(summary)) + ? "\"" + title + "\" @ " + getUri() + : "\"" + title + " (" + summary + ")\" @ " + getUri(); + } + public String getDirectoryString() { return !TextUtils.isEmpty(summary) ? summary : title; } diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java index c641275f3..d15f4078d 100644 --- a/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -221,7 +221,7 @@ public class DirectoryFragment extends Fragment final View view = inflater.inflate(R.layout.fragment_directory, container, false); mMessageBar = MessageBar.create(getChildFragmentManager()); - mProgressBar = activity.findViewById(R.id.progressbar); + mProgressBar = view.findViewById(R.id.progressbar); assert(mProgressBar != null); mRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.refresh_layout); diff --git a/src/com/android/documentsui/dirlist/Model.java b/src/com/android/documentsui/dirlist/Model.java index 5094f414f..64dc3d156 100644 --- a/src/com/android/documentsui/dirlist/Model.java +++ b/src/com/android/documentsui/dirlist/Model.java @@ -16,6 +16,7 @@ package com.android.documentsui.dirlist; +import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; import static com.android.documentsui.base.Shared.DEBUG; import static com.android.documentsui.base.Shared.VERBOSE; @@ -32,6 +33,7 @@ import android.support.annotation.VisibleForTesting; import android.util.Log; import com.android.documentsui.DirectoryResult; +import com.android.documentsui.archives.ArchivesProvider; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.EventListener; import com.android.documentsui.roots.RootCursorWrapper; @@ -52,12 +54,14 @@ import java.util.function.Predicate; public class Model { /** - * Filter that passes (returns true) all non-virtual, non-partial files. + * Filter that passes (returns true) all non-virtual, non-partial files, not archived files. */ public static final Predicate<Cursor> CONCRETE_FILE_FILTER = (Cursor c) -> { - int flags = DocumentInfo.getCursorInt(c, Document.COLUMN_FLAGS); + int flags = getCursorInt(c, Document.COLUMN_FLAGS); + String authority = getCursorString(c, RootCursorWrapper.COLUMN_AUTHORITY); return (flags & Document.FLAG_VIRTUAL_DOCUMENT) == 0 - && (flags & Document.FLAG_PARTIAL) == 0; + && (flags & Document.FLAG_PARTIAL) == 0 + && !ArchivesProvider.AUTHORITY.equals(authority); }; private static final Predicate<Cursor> ANY_FILE_FILTER = (Cursor c) -> true; diff --git a/src/com/android/documentsui/files/ActionHandler.java b/src/com/android/documentsui/files/ActionHandler.java index 7c6212693..e365c4d6e 100644 --- a/src/com/android/documentsui/files/ActionHandler.java +++ b/src/com/android/documentsui/files/ActionHandler.java @@ -434,6 +434,11 @@ public class ActionHandler<T extends Activity & Addons> extends AbstractActionHa return false; } + if (doc.isInArchive()) { + Log.w(TAG, "Can't view archived files."); + return false; + } + if (doc.isContainer()) { openContainerDocument(doc); return true; diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java index ed8918724..b0b4ff49a 100644 --- a/src/com/android/documentsui/picker/PickActivity.java +++ b/src/com/android/documentsui/picker/PickActivity.java @@ -338,7 +338,9 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { @Override public void onDocumentPicked(DocumentInfo doc) { final FragmentManager fm = getFragmentManager(); - if (doc.isContainer()) { + // Do not inline-open archives, as otherwise it would be impossible to pick + // archive files. Note, that picking files inside archives is not supported. + if (doc.isDirectory()) { mInjector.actions.openContainerDocument(doc); } else if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) { // Explicit file picked, return diff --git a/src/com/android/documentsui/queries/DebugCommandProcessor.java b/src/com/android/documentsui/queries/DebugCommandProcessor.java index 7a12a18b3..727d72edf 100644 --- a/src/com/android/documentsui/queries/DebugCommandProcessor.java +++ b/src/com/android/documentsui/queries/DebugCommandProcessor.java @@ -15,18 +15,20 @@ */ package com.android.documentsui.queries; +import android.content.Context; import android.os.Build; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; +import com.android.documentsui.DocumentsApplication; import com.android.documentsui.base.DebugFlags; import com.android.documentsui.base.EventHandler; import java.util.ArrayList; import java.util.List; -final class DebugCommandProcessor implements EventHandler<String> { +public final class DebugCommandProcessor implements EventHandler<String> { @VisibleForTesting static final String COMMAND_PREFIX = "dbg:"; @@ -43,10 +45,9 @@ final class DebugCommandProcessor implements EventHandler<String> { } } - @VisibleForTesting - DebugCommandProcessor(EventHandler<String[]>... commands) { - for (EventHandler<String[]> c : commands) { - mCommands.add(c); + public void add(EventHandler<String[]> handler) { + if (Build.IS_DEBUGGABLE) { + mCommands.add(handler); } } @@ -59,7 +60,7 @@ final class DebugCommandProcessor implements EventHandler<String> { return true; } } - Log.d(SearchViewManager.TAG, "Unrecognized debug command: " + query); + Log.d(TAG, "Unrecognized debug command: " + query); } return false; } @@ -116,4 +117,21 @@ final class DebugCommandProcessor implements EventHandler<String> { } return Boolean.valueOf(val); } + + public static final class DumpRootsCacheHandler implements EventHandler<String[]> { + private final Context mContext; + + public DumpRootsCacheHandler(Context context) { + mContext = context; + } + + @Override + public boolean accept(String[] tokens) { + if ("dumpCache".equals(tokens[0])) { + DocumentsApplication.getRootsCache(mContext).logCache(); + return true; + } + return false; + } + } } diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java index 04bc53f83..ba051152a 100644 --- a/src/com/android/documentsui/queries/SearchViewManager.java +++ b/src/com/android/documentsui/queries/SearchViewManager.java @@ -44,12 +44,13 @@ public class SearchViewManager implements SearchView.OnCloseListener, OnQueryTextListener, OnClickListener, OnFocusChangeListener, OnActionExpandListener { - static final String TAG = "SearchManager"; + private static final String TAG = "SearchManager"; + private final SearchManagerListener mListener; private final DebugCommandProcessor mCommandProcessor; + private @Nullable String mCurrentSearch; private boolean mSearchExpanded; - private String mCurrentSearch; private boolean mIgnoreNextClose; private boolean mFullBar; @@ -59,16 +60,15 @@ public class SearchViewManager implements public SearchViewManager( SearchManagerListener listener, + DebugCommandProcessor commandProcessor, @Nullable Bundle savedState) { + assert (listener != null); + assert (commandProcessor != null); + mListener = listener; + mCommandProcessor = commandProcessor; mCurrentSearch = savedState != null ? savedState.getString(Shared.EXTRA_QUERY) : null; - - // "Commands" are meta input for controlling system behavior. - // We piggy back on search input as it is the only text input - // area in the app. But the functionality is independent - // of "regular" search query processing. - mCommandProcessor = new DebugCommandProcessor(); } public void install(DocumentsToolbar actionBar, boolean isFullBarSearch) { diff --git a/src/com/android/documentsui/roots/RootsCache.java b/src/com/android/documentsui/roots/RootsCache.java index 43ef61af1..ad91228c1 100644 --- a/src/com/android/documentsui/roots/RootsCache.java +++ b/src/com/android/documentsui/roots/RootsCache.java @@ -41,15 +41,16 @@ import android.util.Log; import com.android.documentsui.DocumentsApplication; import com.android.documentsui.R; +import com.android.documentsui.base.Providers; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import com.android.internal.annotations.GuardedBy; -import libcore.io.IoUtils; - import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import libcore.io.IoUtils; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -65,6 +66,14 @@ import java.util.concurrent.TimeUnit; public class RootsCache implements RootsAccess { private static final String TAG = "RootsCache"; + // Not all providers are equally well written. If a provider returns + // empty results we don't cache them...unless they're in this magical list + // of beloved providers. + private static final List<String> PERMIT_EMPTY_CACHE = new ArrayList<String>() {{ + // MTP provider commonly returns no roots (if no devices are attached). + add(Providers.AUTHORITY_MTP); + }}; + private final Context mContext; private final ContentObserver mObserver; @@ -208,10 +217,11 @@ public class RootsCache implements RootsAccess { } /** - * Bring up requested provider and query for all active roots. + * Bring up requested provider and query for all active roots. Will consult cached + * roots if not forceRefresh. Will query when cached roots is empty (which should never happen). */ - private Collection<RootInfo> loadRootsForAuthority(ContentResolver resolver, String authority, - boolean forceRefresh) { + private Collection<RootInfo> loadRootsForAuthority( + ContentResolver resolver, String authority, boolean forceRefresh) { if (VERBOSE) Log.v(TAG, "Loading roots for " + authority); synchronized (mObservedAuthorities) { @@ -228,8 +238,14 @@ public class RootsCache implements RootsAccess { // long-lived system process. final Bundle systemCache = resolver.getCache(rootsUri); if (systemCache != null) { - if (VERBOSE) Log.v(TAG, "System cache hit for " + authority); - return systemCache.getParcelableArrayList(TAG); + ArrayList<RootInfo> cachedRoots = systemCache.getParcelableArrayList(TAG); + assert(cachedRoots != null); + if (!cachedRoots.isEmpty() || PERMIT_EMPTY_CACHE.contains(authority)) { + if (VERBOSE) Log.v(TAG, "System cache hit for " + authority); + return cachedRoots; + } else { + Log.w(TAG, "Ignoring empty system cache hit for " + authority); + } } } @@ -254,15 +270,16 @@ public class RootsCache implements RootsAccess { // process, in case our process goes away. The system takes care of // invalidating the cache if the package or Uri changes. final Bundle systemCache = new Bundle(); - systemCache.putParcelableArrayList(TAG, roots); - resolver.putCache(rootsUri, systemCache); + if (roots.isEmpty() && !PERMIT_EMPTY_CACHE.contains(authority)) { + Log.i(TAG, "Provider returned no roots. Possibly naughty: " + authority); + } else { + systemCache.putParcelableArrayList(TAG, roots); + resolver.putCache(rootsUri, systemCache); + } return roots; } - /* (non-Javadoc) - * @see com.android.documentsui.roots.RootsCache#getRootOneshot(java.lang.String, java.lang.String) - */ @Override public RootInfo getRootOneshot(String authority, String rootId) { return getRootOneshot(authority, rootId, false); @@ -342,6 +359,28 @@ public class RootsCache implements RootsAccess { return mRecentsRoot; } + public void logCache() { + ContentResolver resolver = mContext.getContentResolver(); + StringBuilder output = new StringBuilder(); + + for (String authority : mObservedAuthorities) { + List<String> roots = new ArrayList<>(); + Uri rootsUri = DocumentsContract.buildRootsUri(authority); + Bundle systemCache = resolver.getCache(rootsUri); + if (systemCache != null) { + ArrayList<RootInfo> cachedRoots = systemCache.getParcelableArrayList(TAG); + for (RootInfo root : cachedRoots) { + roots.add(root.toDebugString()); + } + } + + output.append((output.length() == 0) ? "System cache: " : ", "); + output.append(authority).append("=").append(roots); + } + + Log.i(TAG, output.toString()); + } + private class UpdateTask extends AsyncTask<Void, Void, Void> { private final boolean mForceRefreshAll; private final String mForceRefreshPackage; diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index 0b767662f..0df0ffc4c 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -17,6 +17,18 @@ <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> </intent-filter> </provider> + <!-- Provider that demostrates some features, like display of INFO and ERROR messages. --> + <provider + android:name="com.android.documentsui.DemoProvider" + android:authorities="com.android.documentsui.demoprovider" + android:exported="true" + android:grantUriPermissions="true" + android:permission="android.permission.MANAGE_DOCUMENTS" + android:enabled="true"> + <intent-filter> + <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> + </intent-filter> + </provider> </application> <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner" diff --git a/tests/common/com/android/documentsui/DemoProvider.java b/tests/common/com/android/documentsui/DemoProvider.java new file mode 100644 index 000000000..67703e7b5 --- /dev/null +++ b/tests/common/com/android/documentsui/DemoProvider.java @@ -0,0 +1,158 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.documentsui; + +import android.database.Cursor; +import android.database.MatrixCursor; +import android.database.MatrixCursor.RowBuilder; +import android.os.Bundle; +import android.os.CancellationSignal; +import android.os.ParcelFileDescriptor; +import android.provider.DocumentsContract; +import android.provider.DocumentsContract.Document; +import android.provider.DocumentsContract.Root; +import android.provider.DocumentsProvider; + +import java.io.FileNotFoundException; + +/** + * Provides data view that exercises some of the more esoteric functionality...like + * display of INFO and ERROR messages. + * + * <p>Do not use this provider for automated testing. + */ +public class DemoProvider extends DocumentsProvider { + + private static final String ROOT_ID = "demo-root"; + + private static final String[] DEFAULT_ROOT_PROJECTION = new String[] { + Root.COLUMN_ROOT_ID, + Root.COLUMN_FLAGS, + Root.COLUMN_TITLE, + Root.COLUMN_DOCUMENT_ID, + Root.COLUMN_AVAILABLE_BYTES + }; + + private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] { + Document.COLUMN_DOCUMENT_ID, + Document.COLUMN_MIME_TYPE, + Document.COLUMN_DISPLAY_NAME, + Document.COLUMN_LAST_MODIFIED, + Document.COLUMN_FLAGS, + Document.COLUMN_SIZE, + }; + + @Override + public Cursor queryRoots(String[] projection) throws FileNotFoundException { + MatrixCursor c = new MatrixCursor( + projection != null ? projection : DEFAULT_ROOT_PROJECTION); + final RowBuilder row = c.newRow(); + row.add(Root.COLUMN_ROOT_ID, ROOT_ID); + row.add(Root.COLUMN_FLAGS, 0); + row.add(Root.COLUMN_TITLE, "Demo Root"); + row.add(Root.COLUMN_DOCUMENT_ID, "root0"); + row.add(Root.COLUMN_AVAILABLE_BYTES, 1024 * 1024 * 100); + return c; + } + + @Override + public Cursor queryDocument(String documentId, String[] projection) + throws FileNotFoundException { + MatrixCursor c = new MatrixCursor( + projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION); + Bundle extras = new Bundle(); + c.setExtras(extras); + extras.putString( + DocumentsContract.EXTRA_INFO, + "This provider is for feature demos only. Do not use from automated tests."); + addFolder(c, documentId); + return c; + } + + @Override + public Cursor queryChildDocuments( + String parentDocumentId, String[] projection, String sortOrder) + throws FileNotFoundException { + MatrixCursor c = new MatrixCursor( + projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION); + Bundle extras = new Bundle(); + c.setExtras(extras); + + switch (parentDocumentId) { + case "aaa": + extras.putString( + DocumentsContract.EXTRA_INFO, + "I'm a synthetic INFO. Don't judge me."); + addFile(c, "zzz"); + break; + + case "bbb": + extras.putString( + DocumentsContract.EXTRA_INFO, + "I'm a synthetic INFO. Don't judge me."); + break; + + case "ccc": + extras.putString( + DocumentsContract.EXTRA_INFO, + "INFO: I'm confused. I've show both ERROR and INFO."); + extras.putString( + DocumentsContract.EXTRA_ERROR, + "ERROR: I'm confused. I've show both ERROR and INFO."); + break; + + default: + addFolder(c, "aaa"); + addFolder(c, "bbb"); + addFolder(c, "ccc"); + break; + } + + return c; + } + + private void addFolder(MatrixCursor c, String id) { + final RowBuilder row = c.newRow(); + row.add(Document.COLUMN_DOCUMENT_ID, id); + row.add(Document.COLUMN_DISPLAY_NAME, id); + row.add(Document.COLUMN_SIZE, 0); + row.add(Document.COLUMN_MIME_TYPE, DocumentsContract.Document.MIME_TYPE_DIR); + row.add(Document.COLUMN_FLAGS, 0); + row.add(Document.COLUMN_LAST_MODIFIED, System.currentTimeMillis()); + } + + private void addFile(MatrixCursor c, String id) { + final RowBuilder row = c.newRow(); + row.add(Document.COLUMN_DOCUMENT_ID, id); + row.add(Document.COLUMN_DISPLAY_NAME, id); + row.add(Document.COLUMN_SIZE, 0); + row.add(Document.COLUMN_MIME_TYPE, "text/plain"); + row.add(Document.COLUMN_FLAGS, 0); + row.add(Document.COLUMN_LAST_MODIFIED, System.currentTimeMillis()); + } + + @Override + public ParcelFileDescriptor openDocument(String documentId, String mode, + CancellationSignal signal) throws FileNotFoundException { + throw new UnsupportedOperationException("Nope!"); + } + + @Override + public boolean onCreate() { + return true; + } + +} diff --git a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java index 560c7838e..6d84cb9d0 100644 --- a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java +++ b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java @@ -16,6 +16,7 @@ package com.android.documentsui.testing; +import com.android.documentsui.queries.DebugCommandProcessor; import com.android.documentsui.queries.SearchViewManager; /** @@ -41,6 +42,7 @@ public class TestSearchViewManager extends SearchViewManager { @Override public void onSearchViewChanged(boolean opened) { } }, + new DebugCommandProcessor(), null); } diff --git a/tests/unit/com/android/documentsui/queries/DebugCommandProcessorTest.java b/tests/unit/com/android/documentsui/queries/DebugCommandProcessorTest.java index 2398bb242..f8139a00b 100644 --- a/tests/unit/com/android/documentsui/queries/DebugCommandProcessorTest.java +++ b/tests/unit/com/android/documentsui/queries/DebugCommandProcessorTest.java @@ -40,7 +40,9 @@ public final class DebugCommandProcessorTest { public void setUp() { mCommand0 = new TestEventHandler<>(); mCommand1 = new TestEventHandler<>(); - mProcessor = new DebugCommandProcessor(mCommand0, mCommand1); + mProcessor = new DebugCommandProcessor(); + mProcessor.add(mCommand0); + mProcessor.add(mCommand1); } @Test |