From 27bae223e9abad9d7ced55ae8025ffeea51f39d3 Mon Sep 17 00:00:00 2001 From: hatrang Date: Wed, 22 Feb 2023 11:06:34 -0800 Subject: Add Reset Launcher Order option Added option to reset launcher order to alphabetized order Bug: 268656274 Test: manual, atest LauncherViewModelTest Change-Id: I7df467687ec95ae034d70c96e0e4ad87a07c444a --- AndroidManifest.xml | 16 +++++++ res/values/overlayable.xml | 3 ++ res/values/strings.xml | 4 +- res/values/themes.xml | 9 +++- .../android/car/carlauncher/AppGridActivity.java | 5 +++ .../android/car/carlauncher/LauncherViewModel.java | 28 +++++++------ .../car/carlauncher/ResetLauncherActivity.java | 49 ++++++++++++++++++++++ 7 files changed, 99 insertions(+), 15 deletions(-) create mode 100644 src/com/android/car/carlauncher/ResetLauncherActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 716504bf..050a5e72 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -96,6 +96,22 @@ + + + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 3010c3f3..04469951 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -16,7 +16,9 @@ --> Car Launcher - + Reset app grid to A-Z order + This function will remove all custom ordering. + Do you want to continue? All apps Media apps Stop app diff --git a/res/values/themes.xml b/res/values/themes.xml index 4b9e266a..ef5c37f5 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -30,5 +30,12 @@ @android:style/TextAppearance.DeviceDefault.Medium @android:style/TextAppearance.DeviceDefault.Small - + diff --git a/src/com/android/car/carlauncher/AppGridActivity.java b/src/com/android/car/carlauncher/AppGridActivity.java index 1b070db9..852747f2 100644 --- a/src/com/android/car/carlauncher/AppGridActivity.java +++ b/src/com/android/car/carlauncher/AppGridActivity.java @@ -211,6 +211,11 @@ public class AppGridActivity extends AppCompatActivity implements InsetsChangedL private void initializeLauncherModel() { ExecutorService fetchOrderExecutorService = Executors.newSingleThreadExecutor(); fetchOrderExecutorService.execute(() -> { + //If the order file is deleted, we need to reset the flag + if (!mLauncherModel.doesFileExist() && mLauncherModel.isCustomized()) { + mLauncherModel.setCustomized(false); + mLauncherModel.setAppOrderRead(false); + } mLauncherModel.updateAppsOrder(); fetchOrderExecutorService.shutdown(); }); diff --git a/src/com/android/car/carlauncher/LauncherViewModel.java b/src/com/android/car/carlauncher/LauncherViewModel.java index 21101396..1ff54d56 100644 --- a/src/com/android/car/carlauncher/LauncherViewModel.java +++ b/src/com/android/car/carlauncher/LauncherViewModel.java @@ -53,7 +53,7 @@ public class LauncherViewModel extends ViewModel { private boolean mIsCustomized; private boolean mIsAlphabetized; private boolean mAppOrderRead; - private String mFileName = "order.data"; + public static final String ORDER_FILE_NAME = "order.data"; private Map mLauncherItemMap = new HashMap<>(); private final MutableLiveData> mCurrentLauncher = new MutableLiveData<>(new ArrayList<>()); @@ -132,7 +132,7 @@ public class LauncherViewModel extends ViewModel { public void updateAppsOrder() { mItemsFromProto.clear(); try { - File order = new File(mFileDir, mFileName); + File order = new File(mFileDir, ORDER_FILE_NAME); if (order.exists()) { if (mInputStream == null) { mInputStream = new FileInputStream(order); @@ -218,7 +218,7 @@ public class LauncherViewModel extends ViewModel { mCurrentLauncher.getValue()); try { if (mOutputStream == null) { - mOutputStream = new FileOutputStream(new File(mFileDir, mFileName), false); + mOutputStream = new FileOutputStream(new File(mFileDir, ORDER_FILE_NAME), false); } launcherItemListMessage.writeDelimitedTo(mOutputStream); } catch (IOException e) { @@ -282,16 +282,18 @@ public class LauncherViewModel extends ViewModel { } /** - * Reset app order to alphabetized order + * Check if the order file exists */ - public void resetToAlphabetizedOrder() { - mCurrentLauncher.postValue(mItemsFromPlatform); - mItemsFromProto.clear(); - File order = new File(mFileDir, mFileName); - if (order.delete()) { - mIsCustomized = false; - mAppOrderRead = false; - mIsAlphabetized = true; - } + public boolean doesFileExist() { + File order = new File(mFileDir, ORDER_FILE_NAME); + return order.exists(); + } + + public void setCustomized(boolean customized) { + mIsCustomized = customized; + } + + public void setAppOrderRead(boolean appOrderRead) { + mAppOrderRead = appOrderRead; } } diff --git a/src/com/android/car/carlauncher/ResetLauncherActivity.java b/src/com/android/car/carlauncher/ResetLauncherActivity.java new file mode 100644 index 00000000..56a7a538 --- /dev/null +++ b/src/com/android/car/carlauncher/ResetLauncherActivity.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2023 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.car.carlauncher; +import android.app.Activity; +import android.app.AlertDialog; +import android.os.Bundle; + +import com.android.car.ui.AlertDialogBuilder; + +import java.io.File; +/** + * Activity that shows different dialogs from the device default theme. + */ +public class ResetLauncherActivity extends Activity { + private AlertDialog mDialog; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mDialog = createResetLauncherDialog(); + mDialog.show(); + } + private AlertDialog createResetLauncherDialog() { + File filesDir = getFilesDir(); + return new AlertDialogBuilder(/* context= */ this) + .setTitle(getString(R.string.reset_appgrid_title)) + .setMessage(getString(R.string.reset_appgrid_dialogue_message)) + .setPositiveButton(getString(android.R.string.ok), (dialogInterface, which) -> { + File order = new File(filesDir, LauncherViewModel.ORDER_FILE_NAME); + order.delete(); + finish(); + }) + .setNegativeButton(getString(android.R.string.cancel), (dialogInterface, which) -> { + finish(); + }).create(); + } +} -- cgit v1.2.3 From e8c4d008c43c5b01c10cd51f35624e6f1c189d56 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 27 Feb 2023 03:09:31 -0800 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ie50fba74aec451903d2e3bf297a5df530f9b6bc7 --- res/values-af/strings.xml | 4 ++++ res/values-am/strings.xml | 4 ++++ res/values-ar/strings.xml | 4 ++++ res/values-as/strings.xml | 4 ++++ res/values-az/strings.xml | 4 ++++ res/values-b+sr+Latn/strings.xml | 4 ++++ res/values-be/strings.xml | 4 ++++ res/values-bg/strings.xml | 4 ++++ res/values-bn/strings.xml | 4 ++++ res/values-bs/strings.xml | 4 ++++ res/values-ca/strings.xml | 4 ++++ res/values-cs/strings.xml | 4 ++++ res/values-da/strings.xml | 4 ++++ res/values-de/strings.xml | 4 ++++ res/values-el/strings.xml | 4 ++++ res/values-en-rAU/strings.xml | 4 ++++ res/values-en-rCA/strings.xml | 4 ++++ res/values-en-rGB/strings.xml | 4 ++++ res/values-en-rIN/strings.xml | 4 ++++ res/values-en-rXC/strings.xml | 4 ++++ res/values-es-rUS/strings.xml | 4 ++++ res/values-es/strings.xml | 4 ++++ res/values-et/strings.xml | 4 ++++ res/values-eu/strings.xml | 4 ++++ res/values-fa/strings.xml | 4 ++++ res/values-fi/strings.xml | 4 ++++ res/values-fr-rCA/strings.xml | 4 ++++ res/values-fr/strings.xml | 4 ++++ res/values-gl/strings.xml | 4 ++++ res/values-gu/strings.xml | 4 ++++ res/values-hi/strings.xml | 4 ++++ res/values-hr/strings.xml | 4 ++++ res/values-hu/strings.xml | 4 ++++ res/values-hy/strings.xml | 4 ++++ res/values-in/strings.xml | 4 ++++ res/values-is/strings.xml | 4 ++++ res/values-it/strings.xml | 4 ++++ res/values-iw/strings.xml | 4 ++++ res/values-ja/strings.xml | 4 ++++ res/values-ka/strings.xml | 4 ++++ res/values-kk/strings.xml | 4 ++++ res/values-km/strings.xml | 4 ++++ res/values-kn/strings.xml | 4 ++++ res/values-ko/strings.xml | 4 ++++ res/values-ky/strings.xml | 4 ++++ res/values-lo/strings.xml | 4 ++++ res/values-lt/strings.xml | 4 ++++ res/values-lv/strings.xml | 4 ++++ res/values-mk/strings.xml | 4 ++++ res/values-ml/strings.xml | 4 ++++ res/values-mn/strings.xml | 4 ++++ res/values-mr/strings.xml | 4 ++++ res/values-ms/strings.xml | 4 ++++ res/values-my/strings.xml | 4 ++++ res/values-nb/strings.xml | 4 ++++ res/values-ne/strings.xml | 4 ++++ res/values-nl/strings.xml | 4 ++++ res/values-or/strings.xml | 4 ++++ res/values-pa/strings.xml | 4 ++++ res/values-pl/strings.xml | 4 ++++ res/values-pt-rPT/strings.xml | 4 ++++ res/values-pt/strings.xml | 4 ++++ res/values-ro/strings.xml | 4 ++++ res/values-ru/strings.xml | 4 ++++ res/values-si/strings.xml | 4 ++++ res/values-sk/strings.xml | 4 ++++ res/values-sl/strings.xml | 4 ++++ res/values-sq/strings.xml | 4 ++++ res/values-sr/strings.xml | 4 ++++ res/values-sv/strings.xml | 4 ++++ res/values-sw/strings.xml | 4 ++++ res/values-ta/strings.xml | 4 ++++ res/values-te/strings.xml | 4 ++++ res/values-th/strings.xml | 4 ++++ res/values-tl/strings.xml | 4 ++++ res/values-tr/strings.xml | 4 ++++ res/values-uk/strings.xml | 4 ++++ res/values-ur/strings.xml | 4 ++++ res/values-uz/strings.xml | 4 ++++ res/values-vi/strings.xml | 4 ++++ res/values-zh-rCN/strings.xml | 4 ++++ res/values-zh-rHK/strings.xml | 4 ++++ res/values-zh-rTW/strings.xml | 4 ++++ res/values-zu/strings.xml | 4 ++++ 84 files changed, 336 insertions(+) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 5f6389c8..db2f6c47 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -18,6 +18,10 @@ "Motorlanseerder" + + + + "Alle programme" "Mediaprogramme" "Stop program" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index b49eaf41..66e0481a 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -18,6 +18,10 @@ "የመኪና ማስጀመሪያ" + + + + "ሁሉም መተግበሪያዎች" "የሚዲያ መተግበሪያዎች" "መተግበሪያን አቁም" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index c0ee83e4..fb0f0f0c 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -18,6 +18,10 @@ "مشغّل تطبيقات السيارة" + + + + "جميع التطبيقات" "تطبيقات الوسائط" "إيقاف التطبيق" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 6e3168b6..2523a8a7 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -18,6 +18,10 @@ "গাড়ী লঞ্চাৰ" + + + + "আটাইবোৰ এপ্‌" "মিডিয়া এপ্‌" "এপ্ বন্ধ কৰক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index e754c1aa..ba45fecd 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -18,6 +18,10 @@ "Avtomobil Başladıcısı" + + + + "Bütün tətbiqlər" "Media tətbiqləri" "Tətbiqi dayandırın" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 50d2d533..b2eb77dc 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -18,6 +18,10 @@ "Pokretač za automobile" + + + + "Sve aplikacije" "Aplikacije za medije" "Zaustavi aplikaciju" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index a7f35a67..bb49477b 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -18,6 +18,10 @@ "Праграма запуску для аўтамабіля" + + + + "Усе праграмы" "Мультымедыйныя праграмы" "Спыніць праграму" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 335331df..cf5a3a86 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -18,6 +18,10 @@ "Стартов панел на автомобила" + + + + "Всички приложения" "Медийни приложения" "Спиране на приложението" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 72e6dd8f..23ddd940 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "সব অ্যাপ" "মিডিয়া অ্যাপ" "অ্যাপ বন্ধ করুন" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index e3ab932f..29c91297 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -18,6 +18,10 @@ "Pokretač za automobil" + + + + "Sve aplikacije" "Medijske aplikacije" "Zaustavi aplikaciju" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 20b438f9..59008288 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -18,6 +18,10 @@ "Menú d\'aplicacions del cotxe" + + + + "Totes les aplicacions" "Aplicacions multimèdia" "Atura l\'aplicació" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index baf5a659..bbf1995d 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -18,6 +18,10 @@ "Spouštěč v autě" + + + + "Všechny aplikace" "Mediální aplikace" "Zastavit aplikaci" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index a9510cc0..d5b3854c 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Alle apps" "Medieapps" "Stands app" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 1a16140f..acd72b0e 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -18,6 +18,10 @@ "Auto-Launcher" + + + + "Alle Apps" "Medien-Apps" "App beenden" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index c9ea493c..214e0f7f 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -18,6 +18,10 @@ "Εφαρμογή εκκίνησης αυτοκινήτου" + + + + "Όλες οι εφαρμογές" "Εφαρμογές μέσων" "Διακοπή εφαρμογής" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index ecdbfa76..58bca086 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "All apps" "Media apps" "Stop app" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index ecdbfa76..58bca086 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "All apps" "Media apps" "Stop app" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index ecdbfa76..58bca086 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "All apps" "Media apps" "Stop app" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index ecdbfa76..58bca086 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "All apps" "Media apps" "Stop app" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 172745b0..fe4b5a85 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -18,6 +18,10 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎Car Launcher‎‏‎‎‏‎" + + + + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‏‎‎‏‎All apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎Media apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‎Stop app‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index ca879a79..cdb9945e 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -18,6 +18,10 @@ "Selector para vehículos" + + + + "Todas las apps" "Apps multimedia" "Detener la app" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 30fc470b..117837c3 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -18,6 +18,10 @@ "Menú de aplicaciones del coche" + + + + "Todas las aplicaciones" "Aplicaciones multimedia" "Detener aplicación" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index f9de27ae..141cfdf7 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -18,6 +18,10 @@ "Auto käivitusprogramm" + + + + "Kõik rakendused" "Meediarakendused" "Peata rakendus" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 4788cab0..77570244 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Aplikazio guztiak" "Multimedia-aplikazioak" "Gelditu aplikazioa" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 6dd4ae76..e10ae7ae 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -18,6 +18,10 @@ "راه‌انداز خودرو" + + + + "همه برنامه‌ها" "برنامه‌های رسانه" "متوقف کردن برنامه" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 4cf62789..9e8c1c20 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -18,6 +18,10 @@ "Auton käynnistysohjelma" + + + + "Kaikki sovellukset" "Mediasovellukset" "Sulje sovellus" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 1829483c..6393577d 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -18,6 +18,10 @@ "Lanceur d\'application pour la voiture" + + + + "Toutes les applications" "Applications multimédias" "Arrêter l\'application" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 36e7b688..90e75bd4 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Toutes les applications" "Applications multimédias" "Arrêter l\'appli" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 44a7cbae..175758ea 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -18,6 +18,10 @@ "Launcher do coche" + + + + "Todas as aplicacións" "Aplicacións multimedia" "Deter aplicación" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 9425e459..20401e8d 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -18,6 +18,10 @@ "કાર લૉન્ચર" + + + + "બધી ઍપ" "મીડિયા ઍપ" "ઍપ બંધ કરો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 94afac4f..7adfc0c8 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "सभी ऐप्लिकेशन" "मीडिया ऐप्लिकेशन" "ऐप्लिकेशन रोकें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 7b9c40d3..069449bb 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -18,6 +18,10 @@ "Pokretač za automobil" + + + + "Sve aplikacije" "Aplikacije za medijske sadržaje" "Zaustavi aplikaciju" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 06070034..182b8f36 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -18,6 +18,10 @@ "Autóindító" + + + + "Összes alkalmazás" "Médiaalkalmazások" "Alkalmazás leállítása" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index a54727be..cdddea52 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -18,6 +18,10 @@ "Մեքենայի գործարկիչ" + + + + "Բոլոր հավելվածները" "Մեդիա հավելվածներ" "Կանգնեցնել հավելվածը" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 9ae7f996..37398535 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Semua aplikasi" "Aplikasi media" "Hentikan aplikasi" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 4540782d..fd421e64 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -18,6 +18,10 @@ "Ræsiforrit bíls" + + + + "Öll forrit" "Margmiðlunarforrit" "Stöðva forrit" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index fab3a6ea..c8e19382 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -18,6 +18,10 @@ "Avvio app dell\'auto" + + + + "Tutte le app" "App multimediali" "Interrompi l\'app" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index a2d6eab2..5e220da7 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -18,6 +18,10 @@ "מרכז האפליקציות ברכב" + + + + "כל האפליקציות" "אפליקציות מדיה" "עצירת האפליקציה" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index d1227329..ee7b579b 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -18,6 +18,10 @@ "車用ランチャー" + + + + "すべてのアプリ" "メディアアプリ" "アプリを停止" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 8c9e84b5..6ca422b5 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -18,6 +18,10 @@ "მანქანის გამშვები" + + + + "ყველა აპი" "მედია აპები" "აპის შეჩერება" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index e99664a6..4dccd066 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Барлық қолданба" "Мультимедиа қолданбалары" "Қолданбаны тоқтату" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 0c8cc859..50cbd405 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "កម្មវិធី​ទាំងអស់" "កម្មវិធីមេឌៀ" "បញ្ឈប់កម្មវិធី" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index a476388a..148e94ac 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -18,6 +18,10 @@ "ಕಾರ್ ಲಾಂಚರ್" + + + + "ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು" "ಮಾಧ್ಯಮ ಆ್ಯಪ್‌ಗಳು" "ಆ್ಯಪ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 0f2e27c0..e960fd8e 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -18,6 +18,10 @@ "차량 런처" + + + + "모든 앱" "미디어 앱" "앱 종료" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 82f2ec63..1afab3f7 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -18,6 +18,10 @@ "Автоунааны жүргүзгүч" + + + + "Бардык колдонмолор" "Медиа колдонмолору" "Колдонмону токтотуу" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 3305c2a9..06d75056 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -18,6 +18,10 @@ "ລັນເຊີລົດ" + + + + "ແອັບທັງໝົດ" "ແອັບມີເດຍ" "ຢຸດແອັບ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 7fc15a5c..5d864dc4 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -18,6 +18,10 @@ "Automobilio paleidimo priemonė" + + + + "Visos programos" "Medijos programos" "Sustabdyti programą" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index a754649e..665f7a06 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Visas lietotnes" "Multivides lietotnes" "Apturēt lietotnes darbību" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 11be3380..d84cbe28 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -18,6 +18,10 @@ "Стартер на автомобил" + + + + "Сите апликации" "Апликации за аудиовизуелни содржини" "Запри ја апликацијата" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 751169ad..e2452e45 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -18,6 +18,10 @@ "കാർ ലോഞ്ചർ" + + + + "എല്ലാ ആപ്പുകളും" "മീഡിയ ആപ്പുകൾ" "ആപ്പിന്റെ പ്രവർത്തനം നിർത്തുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 84e367cc..f7c31b0c 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -18,6 +18,10 @@ "Машины эхлүүлэгч" + + + + "Бүх апп" "Медиа аппууд" "Аппыг зогсоох" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index c440360f..f409715d 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -18,6 +18,10 @@ "कार लाँचर" + + + + "सर्व अ‍ॅप्स" "मीडिया अ‍ॅप्स" "अ‍ॅप थांबवा" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index bf59fcdd..2bb38944 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -18,6 +18,10 @@ "Pelancar Kereta" + + + + "Semua apl" "Apl media" "Hentikan apl" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index cfdabbc9..5d54fb27 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -18,6 +18,10 @@ "ကား၏ ဖွင့်စနစ်" + + + + "အက်ပ်အားလုံး" "မီဒီယာ အက်ပ်များ" "အက်ပ်ကို ရပ်ဆိုင်းရန်" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index f7f569c2..3dc8730f 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Alle apper" "Medieapper" "Stopp appen" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 56912daa..bdce7472 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -18,6 +18,10 @@ "कार लन्चर" + + + + "सबै एपहरू" "मिडिया एपहरू" "एपलाई रोक्नुहोस्" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index ccb1e06f..6d4623ff 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Alle apps" "Media-apps" "App stoppen" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 88c3a911..44b7475f 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -18,6 +18,10 @@ "କାର୍ ଲଞ୍ଚର୍" + + + + "ସମସ୍ତ ଆପ୍" "ମିଡିଆ ଆପ୍ସ" "ଆପକୁ ବନ୍ଦ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 59cfb6ac..b3d22c7e 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -18,6 +18,10 @@ "ਕਾਰ ਲਾਂਚਰ" + + + + "ਸਾਰੀਆਂ ਐਪਾਂ" "ਮੀਡੀਆ ਐਪਾਂ" "ਐਪ ਬੰਦ ਕਰੋ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 81d5a848..aaf192d5 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -18,6 +18,10 @@ "Program uruchamiający w samochodzie" + + + + "Wszystkie aplikacje" "Aplikacje multimedialne" "Zatrzymaj aplikację" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index fa56c74c..a0ab3b10 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -18,6 +18,10 @@ "Launcher do carro" + + + + "Todas as apps" "Apps de multimédia" "Parar a app" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index db7bc80e..bd4b83bd 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -18,6 +18,10 @@ "Tela de início do carro" + + + + "Todos os apps" "Apps de mídia" "Parar o app" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index a913507d..c1262f54 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -18,6 +18,10 @@ "Lansator de aplicații pentru mașină" + + + + "Toate aplicațiile" "Aplicații media" "Oprește aplicația" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 89875a19..733935b2 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -18,6 +18,10 @@ "Панель запуска для автомобиля" + + + + "Все приложения" "Мультимедийные приложения" "Остановить" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index ed4266e5..955b0c97 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -18,6 +18,10 @@ "මෝටර් රථ දියත්කරණය" + + + + "සියලු යෙදුම්" "මාධ්‍ය යෙදුම්" "යෙදුම නවත්වන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 413b9da3..93ca9ce8 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -18,6 +18,10 @@ "Spúšťač v aute" + + + + "Všetky aplikácie" "Mediálne aplikácie" "Zastaviť aplikáciu" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index de8e330b..d244d7c7 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -18,6 +18,10 @@ "Zaganjalnik za avtomobil" + + + + "Vse aplikacije" "Aplikacije za predstavnost" "Ustavi aplikacijo" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index fca5bdf4..639477bf 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Të gjitha aplikacionet" "Aplikacionet e medias" "Ndalo aplikacionin" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 4ffa9a7f..7cbe292e 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -18,6 +18,10 @@ "Покретач за аутомобиле" + + + + "Све апликације" "Апликације за медије" "Заустави апликацију" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 129d6fcf..afead1c1 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Alla appar" "Medieappar" "Avsluta appen" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index ee3e4169..567daea6 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -18,6 +18,10 @@ "Kifungua Programu cha Gari" + + + + "Programu zote" "Programu za muziki" "Zima programu" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 19f0754b..bf91f5ea 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "அனைத்து ஆப்ஸும்" "மீடியா ஆப்ஸ்" "ஆப்ஸை நிறுத்து" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index f128a96d..605e4119 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -18,6 +18,10 @@ "కార్ లాంచర్" + + + + "అన్ని యాప్‌లు" "మీడియా యాప్‌లు" "యాప్‌ను ఆపివేయండి" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 51f1b88b..7c1ba4f0 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "แอปทั้งหมด" "แอปสื่อ" "หยุดแอป" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 6e1facd9..08fa56c8 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Lahat ng app" "Mga media app" "Ihinto ang app" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index bdc979dd..58ff079f 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "Tüm uygulamalar" "Medya uygulamaları" "Uygulamayı durdur" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index b9a79574..2b9f7972 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -18,6 +18,10 @@ "Панель запуску для автомобіля" + + + + "Усі додатки" "Мультимедійні додатки" "Припинити роботу додатка" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 02432d36..bc6dc8d4 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -18,6 +18,10 @@ "کار لانچر" + + + + "سبھی ایپس" "میڈیا ایپس" "ایپ بند کریں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 6aeb7455..bbb22e6d 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -18,6 +18,10 @@ "Avtomobil uchun launcher" + + + + "Barcha ilovalar" "Media ilovalari" "Ilovani toʻxtatish" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index c6fb00c7..f2762d8c 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -18,6 +18,10 @@ "Trình chạy cho ô tô" + + + + "Tất cả ứng dụng" "Ứng dụng đa phương tiện" "Dừng ứng dụng" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index cd3d1cd7..44dee10f 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -18,6 +18,10 @@ "车用启动器" + + + + "所有应用" "媒体应用" "停止应用" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 7311cf7c..0cf192cf 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -18,6 +18,10 @@ "Car Launcher" + + + + "所有應用程式" "媒體應用程式" "停止應用程式" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 72787f84..6e72caad 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -18,6 +18,10 @@ "車用啟動器" + + + + "所有應用程式" "媒體應用程式" "停止應用程式" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index da2e1efe..c8282392 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -18,6 +18,10 @@ "Isiqalisi Semoto" + + + + "Zonke izinhlelo zokusebenza" "Izinhlelo zokusebenza zemidiya" "Misa i-app" -- cgit v1.2.3 From 07d5c220c79ceb54e854508a442490a58eefe201 Mon Sep 17 00:00:00 2001 From: Howard Date: Mon, 27 Feb 2023 13:17:48 -0800 Subject: Remove deprecated DataCenter from p/a/C/Launcher strings. Bug: 269520654 Test: None required, app disabled Change-Id: I763ff0eccf44f7ce12e399eac135af0e7f2de3f8 --- res/values/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 3010c3f3..44e834d6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -79,7 +79,6 @@ com.google.android.embedded.projection com.android.car.bugreport com.android.car.trust - com.android.car.datacenter com.google.android.car.diagnosticrecorder com.google.android.car.diskwriteapp com.android.documentsui -- cgit v1.2.3 From 8abab0be3a92e1f4b2b1a45496d07c064191a005 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 17 Mar 2023 01:06:23 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I30205a7d9962704d8c5ef6ca5790e2b11a5e1ebd --- res/values-af/strings.xml | 13 ++++++++----- res/values-am/strings.xml | 13 ++++++++----- res/values-ar/strings.xml | 13 ++++++++----- res/values-as/strings.xml | 13 ++++++++----- res/values-az/strings.xml | 13 ++++++++----- res/values-b+sr+Latn/strings.xml | 13 ++++++++----- res/values-be/strings.xml | 13 ++++++++----- res/values-bg/strings.xml | 13 ++++++++----- res/values-bn/strings.xml | 13 ++++++++----- res/values-bs/strings.xml | 13 ++++++++----- res/values-ca/strings.xml | 13 ++++++++----- res/values-cs/strings.xml | 13 ++++++++----- res/values-da/strings.xml | 13 ++++++++----- res/values-de/strings.xml | 13 ++++++++----- res/values-el/strings.xml | 13 ++++++++----- res/values-en-rAU/strings.xml | 13 ++++++++----- res/values-en-rCA/strings.xml | 6 ++++++ res/values-en-rGB/strings.xml | 13 ++++++++----- res/values-en-rIN/strings.xml | 13 ++++++++----- res/values-en-rXC/strings.xml | 12 ++++++++---- res/values-es-rUS/strings.xml | 13 ++++++++----- res/values-es/strings.xml | 13 ++++++++----- res/values-et/strings.xml | 13 ++++++++----- res/values-eu/strings.xml | 13 ++++++++----- res/values-fa/strings.xml | 13 ++++++++----- res/values-fi/strings.xml | 13 ++++++++----- res/values-fr-rCA/strings.xml | 13 ++++++++----- res/values-fr/strings.xml | 13 ++++++++----- res/values-gl/strings.xml | 13 ++++++++----- res/values-gu/strings.xml | 13 ++++++++----- res/values-hi/strings.xml | 13 ++++++++----- res/values-hr/strings.xml | 13 ++++++++----- res/values-hu/strings.xml | 13 ++++++++----- res/values-hy/strings.xml | 13 ++++++++----- res/values-in/strings.xml | 13 ++++++++----- res/values-is/strings.xml | 13 ++++++++----- res/values-it/strings.xml | 13 ++++++++----- res/values-iw/strings.xml | 13 ++++++++----- res/values-ja/strings.xml | 13 ++++++++----- res/values-ka/strings.xml | 13 ++++++++----- res/values-kk/strings.xml | 13 ++++++++----- res/values-km/strings.xml | 13 ++++++++----- res/values-kn/strings.xml | 13 ++++++++----- res/values-ko/strings.xml | 13 ++++++++----- res/values-ky/strings.xml | 13 ++++++++----- res/values-lo/strings.xml | 13 ++++++++----- res/values-lt/strings.xml | 13 ++++++++----- res/values-lv/strings.xml | 13 ++++++++----- res/values-mk/strings.xml | 13 ++++++++----- res/values-ml/strings.xml | 13 ++++++++----- res/values-mn/strings.xml | 13 ++++++++----- res/values-mr/strings.xml | 13 ++++++++----- res/values-ms/strings.xml | 13 ++++++++----- res/values-my/strings.xml | 13 ++++++++----- res/values-nb/strings.xml | 13 ++++++++----- res/values-ne/strings.xml | 13 ++++++++----- res/values-nl/strings.xml | 13 ++++++++----- res/values-or/strings.xml | 13 ++++++++----- res/values-pa/strings.xml | 13 ++++++++----- res/values-pl/strings.xml | 13 ++++++++----- res/values-pt-rPT/strings.xml | 13 ++++++++----- res/values-pt/strings.xml | 13 ++++++++----- res/values-ro/strings.xml | 13 ++++++++----- res/values-ru/strings.xml | 13 ++++++++----- res/values-si/strings.xml | 13 ++++++++----- res/values-sk/strings.xml | 13 ++++++++----- res/values-sl/strings.xml | 13 ++++++++----- res/values-sq/strings.xml | 13 ++++++++----- res/values-sr/strings.xml | 13 ++++++++----- res/values-sv/strings.xml | 13 ++++++++----- res/values-sw/strings.xml | 13 ++++++++----- res/values-ta/strings.xml | 13 ++++++++----- res/values-te/strings.xml | 13 ++++++++----- res/values-th/strings.xml | 13 ++++++++----- res/values-tl/strings.xml | 13 ++++++++----- res/values-tr/strings.xml | 13 ++++++++----- res/values-uk/strings.xml | 13 ++++++++----- res/values-ur/strings.xml | 13 ++++++++----- res/values-uz/strings.xml | 13 ++++++++----- res/values-vi/strings.xml | 13 ++++++++----- res/values-zh-rCN/strings.xml | 13 ++++++++----- res/values-zh-rHK/strings.xml | 13 ++++++++----- res/values-zh-rTW/strings.xml | 13 ++++++++----- res/values-zu/strings.xml | 13 ++++++++----- 84 files changed, 670 insertions(+), 414 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index db2f6c47..3a732711 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -18,10 +18,8 @@ "Motorlanseerder" - - - - + "Stel approoster terug na A-Z-rangskikking" + "Hierdie funksie sal alle gepasmaakte rangskikking verwyder. Wil jy voortgaan?" "Alle programme" "Mediaprogramme" "Stop program" @@ -44,6 +42,11 @@ "Bergaansig • H: --° L: --°" "Versteek ontfoutingprogramme" "Wys ontfoutingprogramme" - + "/" + + + + + diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 66e0481a..e6e832e1 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -18,10 +18,8 @@ "የመኪና ማስጀመሪያ" - - - - + "የመተግበሪያ ፍርግርግን ወደ ሀ-ፐ ቅደም ተከተል ዳግም አስጀምር" + "ይህ ተግባር ሁሉንም ብጁ ቅደም ተከተል ማስያዞችን ያስወግዳል። መቀጠል ይፈልጋሉ?" "ሁሉም መተግበሪያዎች" "የሚዲያ መተግበሪያዎች" "መተግበሪያን አቁም" @@ -44,6 +42,11 @@ "የተራራ እይታ • ከ፦ --° ዝ፦ --°" "የአራሚ መተግበሪያዎችን ደብቅ" "የአራሚ መተግበሪያዎችን አሳይ" - + "/" + + + + + diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index fb0f0f0c..11c2bb3f 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -18,10 +18,8 @@ "مشغّل تطبيقات السيارة" - - - - + "إعادة ضبط شبكة التطبيقات بالترتيب أ-ي" + "ستزيل هذه الدالة أي ترتيب مخصّص. هل تريد المتابعة؟" "جميع التطبيقات" "تطبيقات الوسائط" "إيقاف التطبيق" @@ -44,6 +42,11 @@ "مدينة القاهرة • درجة الحرارة الأعلى: --° الأدنى: --°" "إخفاء تطبيقات تصحيح الأخطاء" "إظهار تطبيقات تصحيح الأخطاء" - + "/" + + + + + diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 2523a8a7..ca107f47 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -18,10 +18,8 @@ "গাড়ী লঞ্চাৰ" - - - - + "এপৰ গ্ৰিডটো A-Z ক্ৰমলৈ ৰিছেট কৰক" + "এই ফাংশ্বনটোৱে আটাইবোৰ কাষ্টম অৰ্ডাৰ আঁতৰাব। আপুনি অব্যাহত ৰাখিব বিচাৰেনে?" "আটাইবোৰ এপ্‌" "মিডিয়া এপ্‌" "এপ্ বন্ধ কৰক" @@ -44,6 +42,11 @@ "মাউণ্টেইন ভিউ • H: --° L: --°" "ডিবাগ এপ্‌সমূহ লুকুৱাওক" "ডিবাগ এপ্‌সমূহ দেখুৱাওক" - + "/" + + + + + diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index ba45fecd..04d8284e 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -18,10 +18,8 @@ "Avtomobil Başladıcısı" - - - - + "Tətbiq torunu A-Z-sırası ilə sıfırlayın" + "Bu funksiya bütün fərdi sıralamanı siləcək. Davam etmək istəyirsiniz?" "Bütün tətbiqlər" "Media tətbiqləri" "Tətbiqi dayandırın" @@ -44,6 +42,11 @@ "Dağ Görünüşü • Y: --° U: --°" "Sazlama tətbiqlərini gizlədin" "Sazlama tətbiqlərini göstərin" - + "/" + + + + + diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index b2eb77dc..2cdf52ea 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -18,10 +18,8 @@ "Pokretač za automobile" - - - - + "Resetuj mrežu aplikacija na raspored A–Z" + "Ova funkcija će uklinite celokupan prilagođen raspored. Želite da nastavite?" "Sve aplikacije" "Aplikacije za medije" "Zaustavi aplikaciju" @@ -44,6 +42,11 @@ "Novi Sad • Najviša: --° Najniža: --°" "Sakrij aplikacije za otklanjanje grešaka" "Prikaži aplikacije za otklanjanje grešaka" - + "/" + + + + + diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index bb49477b..444c8d90 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -18,10 +18,8 @@ "Праграма запуску для аўтамабіля" - - - - + "Сартаванне праграм у сетцы ў алфавітным парадку" + "Гэта функцыя скасуе любы карыстальніцкі парадак сартавання. Хочаце працягнуць?" "Усе праграмы" "Мультымедыйныя праграмы" "Спыніць праграму" @@ -44,6 +42,11 @@ "Маўтын-В\'ю • макс.: --°, мін.: --°" "Схаваць праграмы адладкі" "Паказаць праграмы адладкі" - + "/" + + + + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index cf5a3a86..fce193c5 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -18,10 +18,8 @@ "Стартов панел на автомобила" - - - - + "Нулиране на решетката с приложения и задаване на нареждане от А до Я" + "Тази функция ще премахне персонализираното нареждане. Искате ли да продължите?" "Всички приложения" "Медийни приложения" "Спиране на приложението" @@ -44,6 +42,11 @@ "Mountain View • Макс: --° Мин: --°" "Скриване на приложенията за отстраняване на грешки" "Показване на приложенията за отстраняв. на грешки" - + "/" + + + + + diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 23ddd940..8612ebd8 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "A-Z অর্ডারে অ্যাপ গ্রিড রিসেট করুন" + "এই ফাংশন সবকটি কাস্টম অর্ডারিং সরিয়ে দেবে। আপনি কি এগিয়ে যেতে চান?" "সব অ্যাপ" "মিডিয়া অ্যাপ" "অ্যাপ বন্ধ করুন" @@ -44,6 +42,11 @@ "পাহাড়ের দৃশ্য • H: --° L: --°" "ডিবাগ অ্যাপ আড়াল করুন" "ডিবাগ অ্যাপ দেখুন" - + "/" + + + + + diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 29c91297..7ca321b5 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -18,10 +18,8 @@ "Pokretač za automobil" - - - - + "Vratite postavke mreže aplikacije na zadano u redoslijed A–Ž" + "Ova funkcija će ukloniti sve prilagođene narudžbe. Želite li nastaviti?" "Sve aplikacije" "Medijske aplikacije" "Zaustavi aplikaciju" @@ -44,6 +42,11 @@ "Mountain View • V: --° N: --°" "Sakrij aplikacije za otklanjanje grešaka" "Prikaži aplikacije za otklanjanje grešaka" - + "/" + + + + + diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 59008288..9f6dca54 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -18,10 +18,8 @@ "Menú d\'aplicacions del cotxe" - - - - + "Restableix la quadrícula d\'aplicacions a l\'ordre alfabètic (A-Z)" + "Aquesta funció suprimirà l\'ordre personalitzat. Vols continuar?" "Totes les aplicacions" "Aplicacions multimèdia" "Atura l\'aplicació" @@ -44,6 +42,11 @@ "Mountain View • Màx.: --° Mín.: --°" "Amaga les aplicacions de depuració" "Mostra les aplicacions de depuració" - + "/" + + + + + diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index bbf1995d..6ba4e75a 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -18,10 +18,8 @@ "Spouštěč v autě" - - - - + "Resetovat mřížku aplikací do pořadí A–Z" + "Tato funkce zruší veškeré vlastní řazení. Chcete pokračovat?" "Všechny aplikace" "Mediální aplikace" "Zastavit aplikaci" @@ -44,6 +42,11 @@ "Mountain View • Nejvyšší: --° Nejnižší: --°" "Skrýt ladicí aplikace" "Zobrazit ladicí aplikace" - + "/" + + + + + diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index d5b3854c..89dbd453 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Nulstil appgitteret til rækkefølgen A-Å" + "Denne funktion fjerner alle tilpassede rækkefølger. Vil du fortsætte?" "Alle apps" "Medieapps" "Stands app" @@ -44,6 +42,11 @@ "Mountain View • H: -- ° L: -- °" "Skjul apps til fejlretning" "Vis apps til fejlretning" - + "/" + + + + + diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index acd72b0e..57353c0d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -18,10 +18,8 @@ "Auto-Launcher" - - - - + "App-Raster auf Sortierung von A–Z zurücksetzen" + "Durch diese Funktion wird die gesamte benutzerdefinierte Sortierung entfernt. Möchtest du fortfahren?" "Alle Apps" "Medien-Apps" "App beenden" @@ -44,6 +42,11 @@ "Mountain View • H: --° T: --°" "Debug-Apps verbergen" "Debug-Apps anzeigen" - + "/" + + + + + diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 214e0f7f..52cfe022 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -18,10 +18,8 @@ "Εφαρμογή εκκίνησης αυτοκινήτου" - - - - + "Επαναφορά πλέγματος εφαρμογής σε αύξουσα αλφαβητική σειρά" + "Αυτή η λειτουργία θα καταργήσει όλες τις προσαρμοσμένες ταξινομήσεις. Θέλετε να συνεχίσετε;" "Όλες οι εφαρμογές" "Εφαρμογές μέσων" "Διακοπή εφαρμογής" @@ -44,6 +42,11 @@ "Mountain View • Μ: --° Ε: --°" "Απόκρυψη εφαρμογών εντοπισμού σφαλμάτων" "Εμφάνιση εφαρμογών εντοπισμού σφαλμάτων" - + "/" + + + + + diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 58bca086..372f3741 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Reset app grid to A-Z order" + "This function will remove all customised ordering. Do you want to continue?" "All apps" "Media apps" "Stop app" @@ -44,6 +42,11 @@ "Mountain View • H: –° L: –°" "Hide debug apps" "Show debug apps" - + "/" + + + + + diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 58bca086..f4c9c545 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -46,4 +46,10 @@ "Show debug apps" + + + + + + diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 58bca086..372f3741 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Reset app grid to A-Z order" + "This function will remove all customised ordering. Do you want to continue?" "All apps" "Media apps" "Stop app" @@ -44,6 +42,11 @@ "Mountain View • H: –° L: –°" "Hide debug apps" "Show debug apps" - + "/" + + + + + diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 58bca086..372f3741 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Reset app grid to A-Z order" + "This function will remove all customised ordering. Do you want to continue?" "All apps" "Media apps" "Stop app" @@ -44,6 +42,11 @@ "Mountain View • H: –° L: –°" "Hide debug apps" "Show debug apps" - + "/" + + + + + diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index fe4b5a85..01ee3299 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -18,10 +18,8 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎Car Launcher‎‏‎‎‏‎" - - - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‎‏‏‏‎‎Reset app grid to A-Z order‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎This function will remove all custom ordering. Do you want to continue?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‏‎‎‏‎All apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎Media apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‎Stop app‎‏‎‎‏‎" @@ -45,4 +43,10 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Hide debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎Show debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‎‎‎‎/‎‏‎‎‏‎" + + + + + + diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index cdb9945e..29d88f6e 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -18,10 +18,8 @@ "Selector para vehículos" - - - - + "Restablecer la cuadrícula de apps al orden alfabético" + "Esta función quitará todo el orden personalizado. ¿Quieres continuar?" "Todas las apps" "Apps multimedia" "Detener la app" @@ -44,6 +42,11 @@ "Mountain View • M: --° M: --°" "Ocultar apps de depuración" "Mostrar apps de depuración" - + "/" + + + + + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 117837c3..48af3821 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -18,10 +18,8 @@ "Menú de aplicaciones del coche" - - - - + "Cuadrícula de aplicaciones cambiada a orden alfabético" + "Esta función eliminará todo el orden personalizado. ¿Quieres continuar?" "Todas las aplicaciones" "Aplicaciones multimedia" "Detener aplicación" @@ -44,6 +42,11 @@ "Mountain View • Máx.: --° Mín.: --°" "Ocultar aplicaciones de depuración" "Mostrar aplicaciones de depuración" - + "/" + + + + + diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 141cfdf7..29f24f91 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -18,10 +18,8 @@ "Auto käivitusprogramm" - - - - + "Lähtesta rakenduste ruudustik A–Y järjestuseks" + "See funktsioon eemaldab kogu kohandatud järjestuse. Kas soovite jätkata?" "Kõik rakendused" "Meediarakendused" "Peata rakendus" @@ -44,6 +42,11 @@ "Mountain View • K: --° M: --°" "Peida silumisrakendused" "Kuva silumisrakendused" - + "/" + + + + + diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 77570244..b537ffdf 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Berrezarri aplikazioen sareta hurrenkera alfabetikoan" + "Hori eginez gero, hurrenkera pertsonalizatua galduko da. Aurrera egin nahi duzu?" "Aplikazio guztiak" "Multimedia-aplikazioak" "Gelditu aplikazioa" @@ -44,6 +42,11 @@ "Mountain View • H: -- ° L: -- °" "Ezkutatu arazteko aplikazioak" "Erakutsi arazteko aplikazioak" - + "/" + + + + + diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index e10ae7ae..d99a7b17 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -18,10 +18,8 @@ "راه‌انداز خودرو" - - - - + "بازنشانی جدول برنامه به ترتیب الف تا ی" + "این عملکرد همه ترتیب‌های سفارشی را حذف خواهد کرد. می‌خواهید ادامه دهید؟" "همه برنامه‌ها" "برنامه‌های رسانه" "متوقف کردن برنامه" @@ -44,6 +42,11 @@ "مانتین ویو • بیشینه: --° کمینه: --°" "پنهان کردن برنامه‌های اشکال‌زدایی" "نمایش برنامه‌های اشکال‌زدایی" - + "/" + + + + + diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 9e8c1c20..d4b6e172 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -18,10 +18,8 @@ "Auton käynnistysohjelma" - - - - + "Palauta sovellusruudukko A-Ö ‑järjestykseen" + "Toiminto poistaa kaikki omat järjestykset. Haluatko jatkaa?" "Kaikki sovellukset" "Mediasovellukset" "Sulje sovellus" @@ -44,6 +42,11 @@ "Mountain View • Maks.: --° Min.: --°" "Piilota virheenkorjaussovellukset" "Näytä virheenkorjaussovellukset" - + "/" + + + + + diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 6393577d..5c638205 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -18,10 +18,8 @@ "Lanceur d\'application pour la voiture" - - - - + "Réinitialiser la grille d\'applications à l\'ordre A à Z" + "Cette fonction va retirer tous les classements personnalisés. Voulez-vous continuer?" "Toutes les applications" "Applications multimédias" "Arrêter l\'application" @@ -44,6 +42,11 @@ "Montréal • Max. : --° Min. : --°" "Masquer les applications de débogage" "Afficher les applications de débogage" - + "/" + + + + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 90e75bd4..53210e21 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Rétablir l\'ordre A-Z pour la grille d\'applications" + "Cette fonction supprimera tous les tris personnalisés. Voulez-vous continuer ?" "Toutes les applications" "Applications multimédias" "Arrêter l\'appli" @@ -44,6 +42,11 @@ "Mountain View • Max. : -- ° - Min. : -- °" "Masquer les applis de débogage" "Afficher les applis de débogage" - + "/" + + + + + diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 175758ea..cbd6a39a 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -18,10 +18,8 @@ "Launcher do coche" - - - - + "Restablecer a orde alfabética para a grade de aplicacións" + "Esta función quitará toda a orde personalizada. Queres continuar?" "Todas as aplicacións" "Aplicacións multimedia" "Deter aplicación" @@ -44,6 +42,11 @@ "Mountain View • Máxima: --°; mínima: --°" "Ocultar aplicacións de depuración" "Mostrar aplicacións de depuración" - + "/" + + + + + diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 20401e8d..245e0a63 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -18,10 +18,8 @@ "કાર લૉન્ચર" - - - - + "ઍપ ગ્રિડને A-Z ક્રમ અનુસાર રીસેટ કરો" + "આ સુવિધા, સેટ કરવામાં આવેલા બધા કસ્ટમ ક્રમ કાઢી નાખશે. શું તમે ચાલુ રાખવા માગો છો?" "બધી ઍપ" "મીડિયા ઍપ" "ઍપ બંધ કરો" @@ -44,6 +42,11 @@ "માઉન્ટેન વ્યૂ • H: --° L: --°" "ડિબગ ઍપ છુપાવો" "ડિબગ ઍપ બતાવો" - + "/" + + + + + diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 7adfc0c8..91cf2862 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "ऐप्लिकेशन ग्रिड को A से Z के क्रम में रीसेट करें" + "यह कार्रवाई करने पर, पसंद के मुताबिक सेट किए सभी क्रम हटा दिए जाएंगे. क्या आपको यह कार्रवाई करनी है?" "सभी ऐप्लिकेशन" "मीडिया ऐप्लिकेशन" "ऐप्लिकेशन रोकें" @@ -44,6 +42,11 @@ "माउंट आबू • H: --° L: --°" "डीबग ऐप्लिकेशन छिपाएं" "डीबग ऐप्लिकेशन दिखाएं" - + "/" + + + + + diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 069449bb..54940b35 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -18,10 +18,8 @@ "Pokretač za automobil" - - - - + "Vrati rešetku aplikacije na poredak od A do Ž" + "Ta će funkcija ukloniti sav prilagođeni poredak. Želite li nastaviti?" "Sve aplikacije" "Aplikacije za medijske sadržaje" "Zaustavi aplikaciju" @@ -44,6 +42,11 @@ "Mountain View • V: --° N: --°" "Sakrij aplikacije za otklanjanje pogrešaka" "Prikaži aplikacije za otklanjanje pogrešaka" - + "/" + + + + + diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 182b8f36..e55360bb 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -18,10 +18,8 @@ "Autóindító" - - - - + "Alkalmazásrács visszaállítása betűrendbe (A–Z)" + "A funkció bekapcsolásával minden egyéni elrendezést eltávolít. Biztosan folytatja?" "Összes alkalmazás" "Médiaalkalmazások" "Alkalmazás leállítása" @@ -44,6 +42,11 @@ "Mountain View • Max.: --° Min.: --°" "Hibakereső alkalmazások elrejtése" "Hibakereső alkalmazások megjelenítése" - + "/" + + + + + diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index cdddea52..97b12e3b 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -18,10 +18,8 @@ "Մեքենայի գործարկիչ" - - - - + "Հավելվածների ցանցի A–Z դասավորություն" + "Այս գործառույթը կհեռացնի հավելվածների հատուկ դասավորությունը։ Շարունակե՞լ։" "Բոլոր հավելվածները" "Մեդիա հավելվածներ" "Կանգնեցնել հավելվածը" @@ -44,6 +42,11 @@ "Մաունթին Վյու • Առավ.՝ --° Նվազ.՝ --°" "Թաքցնել վրիպազերծման հավելվածները" "Ցույց տալ վրիպազերծման հավելվածները" - + "/" + + + + + diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 37398535..f2e420bd 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Reset petak aplikasi agar sesuai urutan A-Z" + "Fungsi ini akan menghapus semua pengurutan kustom. Ingin melanjutkan?" "Semua aplikasi" "Aplikasi media" "Hentikan aplikasi" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "Sembunyikan aplikasi debug" "Tampilkan aplikasi debug" - + "/" + + + + + diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index fd421e64..a91a1d5b 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -18,10 +18,8 @@ "Ræsiforrit bíls" - - - - + "Endurstilla forritatöflu á A–Ö röðun" + "Þessi eiginleiki fjarlægir alla sérsniðna röðun. Viltu halda áfram?" "Öll forrit" "Margmiðlunarforrit" "Stöðva forrit" @@ -44,6 +42,11 @@ "Fjallasýn • H: --° L: --°" "Fela villuleitarforrit" "Sýna villuleitarforrit" - + "/" + + + + + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index c8e19382..b99779b1 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -18,10 +18,8 @@ "Avvio app dell\'auto" - - - - + "Reimposta la griglia delle app in ordine alfabetico" + "Questa funzione rimuove tutti gli ordini personalizzati. Vuoi continuare?" "Tutte le app" "App multimediali" "Interrompi l\'app" @@ -44,6 +42,11 @@ "Mountain View • Max: --° Min: --°" "Nascondi app di debug" "Mostra app di debug" - + "/" + + + + + diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 5e220da7..6fdf4cd0 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -18,10 +18,8 @@ "מרכז האפליקציות ברכב" - - - - + "איפוס תצוגת האפליקציות לסידור מ-א\' עד ת\'" + "הפונקציה הזו תסיר את כל סידורי התצוגה שהותאמו אישית. רוצה להמשיך?" "כל האפליקציות" "אפליקציות מדיה" "עצירת האפליקציה" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°‎" "הסתרת אפליקציות לניפוי באגים" "הצגת אפליקציות לניפוי באגים" - + "/" + + + + + diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index ee7b579b..27370389 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -18,10 +18,8 @@ "車用ランチャー" - - - - + "アプリグリッドをアルファベットの昇順にリセット" + "この機能を実行すると、カスタムの並べ替えがすべて削除されます。続行しますか?" "すべてのアプリ" "メディアアプリ" "アプリを停止" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "デバッグアプリを表示しない" "デバッグアプリを表示する" - + "/" + + + + + diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 6ca422b5..ce7d4e0d 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -18,10 +18,8 @@ "მანქანის გამშვები" - - - - + "აპლიკაციის ბადის გადატვირთვა A-Z შეკვეთაზე" + "ეს ფუნქცია წაშლის ყველა მორგებულ შეკვეთას. გსურთ გაგრძელება?" "ყველა აპი" "მედია აპები" "აპის შეჩერება" @@ -44,6 +42,11 @@ "მთების ხედი • მაქს.: --° მინ.: --°" "გამართვის აპების დამალვა" "გამართვის აპების ჩვენება" - + "/" + + + + + diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 4dccd066..5ca0befd 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Қолданбалар торын A-Z ретіне қайтару" + "Функция пайдаланушының барлық тапсырысын өшіреді Жалғастырғыңыз келе ме?" "Барлық қолданба" "Мультимедиа қолданбалары" "Қолданбаны тоқтату" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "Түзету қолданбаларын жасыру" "Түзету қолданбаларын көрсету" - + "/" + + + + + diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 50cbd405..05d2eb8f 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "កំណត់ក្រឡាកម្មវិធីឡើងវិញទៅជាលំដាប់ A-Z" + "មុខងារនេះនឹងដកការបញ្ជាទិញផ្ទាល់ខ្លួនទាំងអស់ចេញ។ តើ​អ្នក​ចង់​បន្ត​ដែរ​ឬ​ទេ?" "កម្មវិធី​ទាំងអស់" "កម្មវិធីមេឌៀ" "បញ្ឈប់កម្មវិធី" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "លាក់កម្មវិធីជួសជុល" "បង្ហាញកម្មវិធីជួសជុល" - + "/" + + + + + diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 148e94ac..9637fd8a 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -18,10 +18,8 @@ "ಕಾರ್ ಲಾಂಚರ್" - - - - + "ಆ್ಯಪ್ ಗ್ರಿಡ್ ಅನ್ನು A-Z ಆರ್ಡರ್‌ಗೆ ರೀಸೆಟ್ ಮಾಡಿ" + "ಈ ಕಾರ್ಯವು ಎಲ್ಲಾ ಕಸ್ಟಮ್ ಆರ್ಡರ್ ಮಾಡುವಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ನೀವು ಮುಂದುವರಿಸಲು ಬಯಸುತ್ತೀರಾ?" "ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು" "ಮಾಧ್ಯಮ ಆ್ಯಪ್‌ಗಳು" "ಆ್ಯಪ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ" @@ -44,6 +42,11 @@ "ಮೌಂಟೇನ್ ವ್ಯೂ • H: --° L: --°" "ಡೀಬಗ್ ಆ್ಯಪ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ" "ಡೀಬಗ್ ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ" - + "/" + + + + + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index e960fd8e..20f0ae74 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -18,10 +18,8 @@ "차량 런처" - - - - + "앱 그리드를 가나다순으로 재설정하기" + "이 기능은 모든 맞춤설정 정렬을 삭제합니다. 계속하시겠습니까?" "모든 앱" "미디어 앱" "앱 종료" @@ -44,6 +42,11 @@ "마운틴 뷰 • 최고: --° 최저: --°" "디버그 앱 숨기기" "디버그 앱 표시" - + "/" + + + + + diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 1afab3f7..9d1feb05 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -18,10 +18,8 @@ "Автоунааны жүргүзгүч" - - - - + "Колдонмолор торчосун A-Я тартибинде кайра иреттөө" + "Бул функция бардык ыңгайлаштырылган иреттерди өчүрөт. Улантасызбы?" "Бардык колдонмолор" "Медиа колдонмолору" "Колдонмону токтотуу" @@ -44,6 +42,11 @@ "Маунтин-Вью • Ж: --° Т: --°" "Мүчүлүштүктөрдү аныктоочу колдонмолорду жашыруу" "Мүчүлүштүктөрдү аныктоочу колдонмолорду көрсөтүү" - + "/" + + + + + diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 06d75056..79285b00 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -18,10 +18,8 @@ "ລັນເຊີລົດ" - - - - + "ຣີເຊັດຕາຕະລາງແອັບເປັນລຳດັບ A-Z" + "ຟັງຊັນນີ້ຈະລຶບການຈັດລຳດັບທີ່ກຳນົດເອງອອກທັງໝົດ. ທ່ານຕ້ອງການສືບຕໍ່ບໍ?" "ແອັບທັງໝົດ" "ແອັບມີເດຍ" "ຢຸດແອັບ" @@ -44,6 +42,11 @@ "ວິວພູເຂົາ • ສູງສຸດ: --° ຕໍ່າສຸດ: --°" "ເຊື່ອງແອັບດີບັກ" "ສະແດງແອັບດີບັກ" - + "/" + + + + + diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 5d864dc4..fff75bec 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -18,10 +18,8 @@ "Automobilio paleidimo priemonė" - - - - + "Programų tinklelio nustatymas iš naujo į A–Z tvarką" + "Ši funkcija pašalins visą tinkintą tvarką. Ar norite tęsti?" "Visos programos" "Medijos programos" "Sustabdyti programą" @@ -44,6 +42,11 @@ "Mauntin Vju • H: --° L: --°" "Slėpti derinimo programas" "Rodyti derinimo programas" - + "/" + + + + + diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 665f7a06..f12afd7d 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Lietotņu režģa atiestatīšana uz secību A–Z" + "Ar šo funkciju tiks mainīta pielāgotā lietotņu secība. Vai vēlaties turpināt?" "Visas lietotnes" "Multivides lietotnes" "Apturēt lietotnes darbību" @@ -44,6 +42,11 @@ "Mauntinvjū • Augstākā: --°; zemākā: --°" "Slēpt atkļūdošanas lietotnes" "Rādīt atkļūdošanas lietotnes" - + "/" + + + + + diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index d84cbe28..9856aeb9 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -18,10 +18,8 @@ "Стартер на автомобил" - - - - + "Ресетирај ја мрежата со апликации во редослед А-Ш" + "Оваа функција ќе ги отстрани сите приспособени подредувања. Дали сакате да продолжите?" "Сите апликации" "Апликации за аудиовизуелни содржини" "Запри ја апликацијата" @@ -44,6 +42,11 @@ "Маунтин Вју • В: -- ° Н: -- °" "Сокриј апликации за отстранување грешки" "Прикажи апликации за отстранување грешки" - + "/" + + + + + diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index e2452e45..57098222 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -18,10 +18,8 @@ "കാർ ലോഞ്ചർ" - - - - + "A-Z ക്രമത്തിൽ ആപ്പ് ഗ്രിഡ് റീസെറ്റ് ചെയ്യുക" + "ഈ ഫംഗ്ഷൻ, എല്ലാ ഇഷ്‌ടാനുസൃത ക്രമപ്പെടുത്തലുകളും നീക്കം ചെയ്യും. നിങ്ങൾക്ക് തുടരണമെന്നുണ്ടോ?" "എല്ലാ ആപ്പുകളും" "മീഡിയ ആപ്പുകൾ" "ആപ്പിന്റെ പ്രവർത്തനം നിർത്തുക" @@ -44,6 +42,11 @@ "Mountain View • കൂടിയത്: --° കുറഞ്ഞത്: --°" "ഡീബഗ് ആപ്പുകൾ മറയ്ക്കുക" "ഡീബഗ് ആപ്പുകൾ കാണിക്കുക" - + "/" + + + + + diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index f7c31b0c..0bfa2120 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -18,10 +18,8 @@ "Машины эхлүүлэгч" - - - - + "Аппын хүснэгтийг А-Я дараалалтай болгож шинэчлэх" + "Энэ функц нь бүх захиалгат дарааллыг хасна. Та үргэлжлүүлэхийг хүсэж байна уу?" "Бүх апп" "Медиа аппууд" "Аппыг зогсоох" @@ -44,6 +42,11 @@ "Mountain View • Дээд: --° Доод: --°" "Дебаг хийх аппуудыг нуух" "Дебаг хийх аппуудыг харуулах" - + "/" + + + + + diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index f409715d..24d0192c 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -18,10 +18,8 @@ "कार लाँचर" - - - - + "अ‍ॅप ग्रिडला A-Z या क्रमाने रीसेट करा" + "हे फंक्शन सर्व कस्टम ऑर्डरिंग काढून टाकेल. तुम्हाला पुढे सुरू ठेवायचे आहे का?" "सर्व अ‍ॅप्स" "मीडिया अ‍ॅप्स" "अ‍ॅप थांबवा" @@ -44,6 +42,11 @@ "महाबळेश्वर • कमाल: --° किमान: --°" "डीबग केलेली ॲप्स लपवा" "डीबग केलेली ॲप्स दाखवा" - + "/" + + + + + diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 2bb38944..75704250 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -18,10 +18,8 @@ "Pelancar Kereta" - - - - + "Tetapkan semula grid apl mengikut susunan A-Z" + "Fungsi ini akan mengalih keluar semua susunan tersuai. Adakah anda mahu meneruskan tindakan?" "Semua apl" "Apl media" "Hentikan apl" @@ -44,6 +42,11 @@ "Pemandangan Gunung • H: --° L: --°" "Sembunyikan apl nyahpepijat" "Tunjukkan apl nyahpepijat" - + "/" + + + + + diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 5d54fb27..b6ad247c 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -18,10 +18,8 @@ "ကား၏ ဖွင့်စနစ်" - - - - + "အက်ပ်ဇယားကို A-Z အစီအစဉ်သို့ ပြင်ဆင်သတ်မှတ်ရန်" + "ဤလုပ်ဆောင်ချက်သည် စိတ်ကြိုက်စီစဉ်မှုအားလုံးကို ဖယ်ရှားမည်။ ရှေ့ဆက်လိုပါသလား။" "အက်ပ်အားလုံး" "မီဒီယာ အက်ပ်များ" "အက်ပ်ကို ရပ်ဆိုင်းရန်" @@ -44,6 +42,11 @@ "Mountain View • မြင့်- --° နိမ့်- --°" "အမှားရှာပြင်သည့်အက်ပ်များ ဖျောက်ထားရန်" "အမှားရှာပြင်သည့်အက်ပ်များ ပြရန်" - + "/" + + + + + diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 3dc8730f..4a8b574e 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Tilbakestill apprutenettet til A–Å-rekkefølge" + "Denne funksjonen fjerner alle tilpassede rekkefølger. Vil du fortsette?" "Alle apper" "Medieapper" "Stopp appen" @@ -44,6 +42,11 @@ "Mountain View • Høyeste temp.: --° Laveste temp.: --°" "Skjul feilsøkingsapper" "Vis feilsøkingsapper" - + "/" + + + + + diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index bdce7472..aec98727 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -18,10 +18,8 @@ "कार लन्चर" - - - - + "एप ग्रिड A देखि Z को क्रममा रिसेट गर्नुहोस्" + "यो फङ्सनले रोजाइअनुसार सेट गरिएका सबै क्रम हटाउने छ। तपाईं जारी राख्न चाहनुहुन्छ?" "सबै एपहरू" "मिडिया एपहरू" "एपलाई रोक्नुहोस्" @@ -44,6 +42,11 @@ "माउन्टेन भ्यू • H: --° L: --°" "डिबग एपहरू लुकाइयोस्" "डिबग एपहरू देखाइयोस्" - + "/" + + + + + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 6d4623ff..0463247e 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "App-raster resetten naar de volgorde A-Z" + "Met deze functie wordt de aangepaste volgorde helemaal verwijderd. Wil je doorgaan?" "Alle apps" "Media-apps" "App stoppen" @@ -44,6 +42,11 @@ "Mountain View • Max: -- ° Min: -- °" "Foutopsporingsapps verbergen" "Foutopsporingsapps tonen" - + "/" + + + + + diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 44b7475f..4fb466c3 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -18,10 +18,8 @@ "କାର୍ ଲଞ୍ଚର୍" - - - - + "A-Z କ୍ରମରେ ଆପ ଗ୍ରିଡକୁ ରିସେଟ କରନ୍ତୁ" + "ଏହି ଫଙ୍କସନ ସମସ୍ତ କଷ୍ଟମ ଅର୍ଡରିଂକୁ କାଢ଼ି ଦେବ। ଆପଣ ଜାରି ରଖିବାକୁ ଚାହାଁନ୍ତି?" "ସମସ୍ତ ଆପ୍" "ମିଡିଆ ଆପ୍ସ" "ଆପକୁ ବନ୍ଦ କରନ୍ତୁ" @@ -44,6 +42,11 @@ "ମାଉଣ୍ଟେନ୍ ଭ୍ୟୁ • H: --° L: --°" "ଡିବଗ୍ ଆପଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ" "ଡିବଗ୍ ଆପଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ" - + "/" + + + + + diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index b3d22c7e..e7ad40e8 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -18,10 +18,8 @@ "ਕਾਰ ਲਾਂਚਰ" - - - - + "ਐਪ ਗਰਿੱਡ ਨੂੰ A-Z ਕ੍ਰਮ ਵਿੱਚ ਰੀਸੈੱਟ ਕਰੋ" + "ਇਸ ਫੰਕਸ਼ਨ ਨਾਲ ਸਾਰਾ ਵਿਉਂਤਿਆ ਕ੍ਰਮ ਹਟ ਜਾਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" "ਸਾਰੀਆਂ ਐਪਾਂ" "ਮੀਡੀਆ ਐਪਾਂ" "ਐਪ ਬੰਦ ਕਰੋ" @@ -44,6 +42,11 @@ "ਅੰਮ੍ਰਿਤਸਰ • ਉੱਚ: --° ਨਿਮਨ: --°" "ਡੀਬੱਗ ਐਪਾਂ ਲੁਕਾਓ" "ਡੀਬੱਗ ਐਪਾਂ ਦਿਖਾਓ" - + "/" + + + + + diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index aaf192d5..3c68c8fd 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -18,10 +18,8 @@ "Program uruchamiający w samochodzie" - - - - + "Zresetuj siatkę aplikacji do kolejności alfabetycznej" + "Ta funkcja usuwa wszystkie niestandardowe ustawienia kolejności. Czy chcesz kontynuować?" "Wszystkie aplikacje" "Aplikacje multimedialne" "Zatrzymaj aplikację" @@ -44,6 +42,11 @@ "Mountain View • maks.: --° min.: --°" "Ukryj aplikacje do debugowania" "Pokaż aplikacje do debugowania" - + "/" + + + + + diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index a0ab3b10..d10040d7 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -18,10 +18,8 @@ "Launcher do carro" - - - - + "Reponha a grelha de apps para a ordem A-Z" + "Esta função vai remover toda a ordenação personalizada. Quer continuar?" "Todas as apps" "Apps de multimédia" "Parar a app" @@ -44,6 +42,11 @@ "Mountain View • Máx.: --° Mín.: --°" "Ocultar apps de depuração" "Mostrar apps de depuração" - + "/" + + + + + diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index bd4b83bd..702173db 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -18,10 +18,8 @@ "Tela de início do carro" - - - - + "Redefinir a grade de apps para a ordem de A a Z" + "Esta função vai remover a ordem personalizada. Você quer continuar?" "Todos os apps" "Apps de mídia" "Parar o app" @@ -44,6 +42,11 @@ "Mountain View • Mínima: --° Máxima: --°" "Ocultar apps de depuração" "Mostrar apps de depuração" - + "/" + + + + + diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index c1262f54..276bc157 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -18,10 +18,8 @@ "Lansator de aplicații pentru mașină" - - - - + "Resetează grila de aplicații la ordinea A – Z" + "Această funcție va elimina orice ordonare personalizată. Continui?" "Toate aplicațiile" "Aplicații media" "Oprește aplicația" @@ -44,6 +42,11 @@ "Mountain View • Max: --° Min: --°" "Ascunde aplicațiile de remediere a erorilor" "Afișează aplicațiile de remediere a erorilor" - + "/" + + + + + diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 733935b2..b4df9885 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -18,10 +18,8 @@ "Панель запуска для автомобиля" - - - - + "Изменение порядка в сетке приложений" + "Текущий порядок приложений будет изменен на алфавитный. Продолжить?" "Все приложения" "Мультимедийные приложения" "Остановить" @@ -44,6 +42,11 @@ "Маунтин-Вью • Макс. --°, мин. --°" "Скрыть приложения для отладки" "Показать приложения для отладки" - + "/" + + + + + diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 955b0c97..dd9be3ad 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -18,10 +18,8 @@ "මෝටර් රථ දියත්කරණය" - - - - + "යෙදුම් ජාලකය A-Z අනුපිළිවෙලට යළි සකසන්න" + "මෙම කාර්යය සියලු අභිරුචි අනුපිළිවෙලක් ඉවත් කරනු ඇත. ඔබට ඉදිරියට යාමට අවශ්‍ය ද?" "සියලු යෙදුම්" "මාධ්‍ය යෙදුම්" "යෙදුම නවත්වන්න" @@ -44,6 +42,11 @@ "කඳුකර දර්ශනය • H: --° L: --°" "නිදොස් කිරීමේ යෙදුම් සඟවන්න" "නිදොස් කිරීමේ යෙදුම් පෙන්වන්න" - + "/" + + + + + diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 93ca9ce8..e74f0db2 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -18,10 +18,8 @@ "Spúšťač v aute" - - - - + "Resetovať mriežku aplikácií do poradia A – Z" + "Táto funkcia zruší všetko vlastné poradie. Chcete pokračovať?" "Všetky aplikácie" "Mediálne aplikácie" "Zastaviť aplikáciu" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "Skryť aplikácie na ladenie" "Zobraziť aplikácie ladenia" - + "/" + + + + + diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index d244d7c7..2e63e3e7 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -18,10 +18,8 @@ "Zaganjalnik za avtomobil" - - - - + "Ponastavi mrežo aplikacij na vrstni red od A do Ž" + "Ta funkcija bo odstranila vse razvrščanje po meri. Ali želite nadaljevati?" "Vse aplikacije" "Aplikacije za predstavnost" "Ustavi aplikacijo" @@ -44,6 +42,11 @@ "Mountain View • V: --° N: --°" "Skrij aplikacije za odpravljanje napak" "Prikaži aplikacije za odpravljanje napak" - + "/" + + + + + diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 639477bf..d06c038e 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Rivendos rrjetën e aplikacioneve sipas radhës A-Z" + "Ky funksion do të heqë të gjitha porositjet e personalizuara. Dëshiron të vazhdosh?" "Të gjitha aplikacionet" "Aplikacionet e medias" "Ndalo aplikacionin" @@ -44,6 +42,11 @@ "Mountain View • L: --° U: --°" "Fshih aplikacionet e korrigjimit" "Shfaq aplikacionet e korrigjimit" - + "/" + + + + + diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 7cbe292e..9a7f99ca 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -18,10 +18,8 @@ "Покретач за аутомобиле" - - - - + "Ресетуј мрежу апликација на распоред A–Z" + "Ова функција ће уклините целокупан прилагођен распоред. Желите да наставите?" "Све апликације" "Апликације за медије" "Заустави апликацију" @@ -44,6 +42,11 @@ "Нови Сад • Највиша: --° Најнижа: --°" "Сакриј апликације за отклањање грешака" "Прикажи апликације за отклањање грешака" - + "/" + + + + + diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index afead1c1..d6d95d84 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Återställ rutnätet för appar till ordningen A–Z" + "Funktionen tar bort alla anpassade ordningar. Vill du fortsätta?" "Alla appar" "Medieappar" "Avsluta appen" @@ -44,6 +42,11 @@ "Mountain View • max: --° min: --°" "Dölj felsökningsappar" "Visa felsökningsappar" - + "/" + + + + + diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 567daea6..523e8287 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -18,10 +18,8 @@ "Kifungua Programu cha Gari" - - - - + "Weka upya gridi ya programu kwa mpango wa A-Z" + "Utendaji huu utaondoa mipangilio yote maalum ya upangaji. Ungependa kuendelea?" "Programu zote" "Programu za muziki" "Zima programu" @@ -44,6 +42,11 @@ "Mwonekano wa Mlima • H: --° L: --°" "Ficha programu za kutatua" "Onyesha programu za kutatua" - + "/" + + + + + diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index bf91f5ea..9ede7e4c 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "ஆப்ஸ் கட்டக் காட்சியை A-Z வரிசைப்படி மீட்டமைத்தல்" + "இது அனைத்துப் பிரத்தியேக வரிசைகளையும் அகற்றும். தொடர விரும்புகிறீர்களா?" "அனைத்து ஆப்ஸும்" "மீடியா ஆப்ஸ்" "ஆப்ஸை நிறுத்து" @@ -44,6 +42,11 @@ "மவுண்டன் வியூ • H: --° L: --°" "பிழைதிருத்தும் ஆப்ஸை மறை" "பிழைதிருத்தும் ஆப்ஸைக் காட்டு" - + "/" + + + + + diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 605e4119..2090f423 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -18,10 +18,8 @@ "కార్ లాంచర్" - - - - + "యాప్ గ్రిడ్‌ను A-Z ఆర్డర్‌కు రీసెట్ చేయండి" + "ఈ ఫంక్షన్ అన్ని అనుకూల ఆర్డరింగ్‌ను తీసివేస్తుంది. మీరు కొనసాగాలనుకుంటున్నారా?" "అన్ని యాప్‌లు" "మీడియా యాప్‌లు" "యాప్‌ను ఆపివేయండి" @@ -44,6 +42,11 @@ "మౌంటెయిన్ వ్యూ • H: --° L: --°" "డీబగ్ యాప్‌లను దాచండి" "డీబగ్ యాప్‌లను చూపించండి" - + "/" + + + + + diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 7c1ba4f0..0106323a 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "รีเซ็ตตารางกริดสำหรับแอปเป็นลำดับ A-Z" + "ฟังก์ชันนี้จะนำการจัดลำดับที่กำหนดเองออกทั้งหมด ต้องการทำต่อไหม" "แอปทั้งหมด" "แอปสื่อ" "หยุดแอป" @@ -44,6 +42,11 @@ "เมาน์เทนวิว • สูงสุด: --° ต่ำสุด: --°" "ซ่อนแอปแก้ไขข้อบกพร่อง" "แสดงแอปแก้ไขข้อบกพร่อง" - + "/" + + + + + diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 08fa56c8..b3384210 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "I-reset ang grid ng app sa A-Z na pagkakasunod-sunod" + "Aalisin ng function na ito ang lahat ng custom na pagkakasunod-sunod Gusto mo bang magpatuloy?" "Lahat ng app" "Mga media app" "Ihinto ang app" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "Itago ang mga debug app" "Ipakita ang mga debug app" - + "/" + + + + + diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 58ff079f..eea4239d 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "Uygulama tablosunu A\'dan Z\'ye sıfırla" + "Bu işlev tüm özel sıralamayı kaldıracaktır. Devam etmek istiyor musunuz?" "Tüm uygulamalar" "Medya uygulamaları" "Uygulamayı durdur" @@ -44,6 +42,11 @@ "Mountain View • E.Y.: --° E.D.: --°" "Hata ayıklama uygulamalarını gizle" "Hata ayıklama uygulamalarını göster" - + "/" + + + + + diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 2b9f7972..22a02c99 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -18,10 +18,8 @@ "Панель запуску для автомобіля" - - - - + "Скинути сітку додатків і повернути розташування в алфавітному порядку (A-Я)" + "Якщо застосувати цю функцію, визначений користувачем порядок розташування додатків зміниться. Продовжити?" "Усі додатки" "Мультимедійні додатки" "Припинити роботу додатка" @@ -44,6 +42,11 @@ "Маунтін-В\'ю • Макс. --°, мін. --°" "Сховати додатки для налагодження" "Показати додатки для налагодження" - + "/" + + + + + diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index bc6dc8d4..be3d0254 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -18,10 +18,8 @@ "کار لانچر" - - - - + "ایپ گرڈ کو A-Z آرڈر پر ری سیٹ کریں" + "یہ فنکشن تمام حسب ضرورت ترتیب کو ہٹا دے گا۔ کیا آپ جاری رکھنا چاہتے ہیں؟" "سبھی ایپس" "میڈیا ایپس" "ایپ بند کریں" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°‎" "ڈیبگ ایپس چھپائیں" "ڈیبگ ایپس دکھائیں" - + "/" + + + + + diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index bbb22e6d..20ed9a53 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -18,10 +18,8 @@ "Avtomobil uchun launcher" - - - - + "Ilova jadvalini alifbo tartibiga qaytarish" + "Bu funksiya barcha maxsus buyurtmalarni bekor qiladi. Davom etasizmi?" "Barcha ilovalar" "Media ilovalari" "Ilovani toʻxtatish" @@ -44,6 +42,11 @@ "Mountain View • Maks: --° Min: --°" "Nosozliklarni aniqlash ilovalarini berkitish" "Nosozliklarni aniqlash ilovalarini chiqarish" - + "/" + + + + + diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index f2762d8c..10fc1394 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -18,10 +18,8 @@ "Trình chạy cho ô tô" - - - - + "Đặt lại lưới ứng dụng theo thứ tự A-Z" + "Chức năng này sẽ xoá mọi thứ tự tuỳ chỉnh. Bạn có muốn tiếp tục không?" "Tất cả ứng dụng" "Ứng dụng đa phương tiện" "Dừng ứng dụng" @@ -44,6 +42,11 @@ "Mountain View • H: --° L: --°" "Ẩn các ứng dụng gỡ lỗi" "Hiển thị các ứng dụng gỡ lỗi" - + "/" + + + + + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 44dee10f..dec58db1 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -18,10 +18,8 @@ "车用启动器" - - - - + "将应用网格排序重置为按名称首字母升序 (A-Z) 排列" + "此功能会撤消所有自定义排序。要继续吗?" "所有应用" "媒体应用" "停止应用" @@ -44,6 +42,11 @@ "山景城 • 高:--° 低:--°" "隐藏调试应用" "显示调试应用" - + "/" + + + + + diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 0cf192cf..160bb1cd 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -18,10 +18,8 @@ "Car Launcher" - - - - + "將應用程式網格重設為按字母排序" + "此功能會移除所有自訂順序。您要繼續嗎?" "所有應用程式" "媒體應用程式" "停止應用程式" @@ -44,6 +42,11 @@ "山景城 • H: --° L: --°" "隱藏偵錯應用程式" "顯示偵錯應用程式" - + "/" + + + + + diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 6e72caad..c7c10aca 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -18,10 +18,8 @@ "車用啟動器" - - - - + "將應用程式排列顯示重設為按英文字母順序排列" + "這項功能會移除所有自訂排序,確定要繼續嗎?" "所有應用程式" "媒體應用程式" "停止應用程式" @@ -44,6 +42,11 @@ "山景城 • 高:--° 低:--°" "隱藏偵錯應用程式" "顯示偵錯應用程式" - + "/" + + + + + diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index c8282392..2a7adaa0 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -18,10 +18,8 @@ "Isiqalisi Semoto" - - - - + "Setha kabusha igridi ye-app ku-oda le-A-Z" + "Lo msebenzi uzosusa konke uku-oda ngokwezifiso. Ingabe ufuna ukuqhubeka?" "Zonke izinhlelo zokusebenza" "Izinhlelo zokusebenza zemidiya" "Misa i-app" @@ -44,6 +42,11 @@ "Ukubuka Kwentaba • H: --° L: --°" "Fihla izinhlelo zokusebenza zokususa iphutha" "Bonisa izinhlelo zokusebenza zokususa iphutha" - + "/" + + + + + -- cgit v1.2.3 From f7e8da56dbfa468b43eee601d0527c533a25ecd8 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 28 Mar 2023 19:27:47 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ia83cd64e7d592ee0b3df667d78d0619e4ebd569b --- res/values-en-rXC/strings.xml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 01ee3299..8c0fc2e4 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -43,10 +43,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Hide debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎Show debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‎‎‎‎/‎‏‎‎‏‎" - - - - - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎No recent items‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‏‎Clear All‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎App isn\'t available‎‏‎‎‏‎" -- cgit v1.2.3 From aab47c5dc8c4d0b07d727eb4d634854732636630 Mon Sep 17 00:00:00 2001 From: Filip Date: Thu, 30 Mar 2023 21:18:00 +0000 Subject: Add CarLauncherTests to the test packages Test: none Bug: 262049770 Change-Id: I8652b966afcc9db67d19216c68b48c2baf86fd6c --- tests/Android.bp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Android.bp b/tests/Android.bp index 569f469a..8197b1eb 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -69,4 +69,9 @@ android_test { "libdexmakerjvmtiagent", "libstaticjvmtiagent", ], + + test_suites: [ + "automotive-tests", + "device-tests", + ], } -- cgit v1.2.3 From 15d4e19c1f7656d9f2e9bf936db3dec8666c8691 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Sun, 2 Apr 2023 17:40:22 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I9b52d4d95a417976c3af090983b1e8898b7fa677 --- res/values-bg/strings.xml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index fce193c5..bb3e1063 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -43,10 +43,7 @@ "Скриване на приложенията за отстраняване на грешки" "Показване на приложенията за отстраняв. на грешки" "/" - - - - - - + "Няма скорошни елементи" + "Изчистване на всичко" + "Приложението не е налично" -- cgit v1.2.3 From 0ca71036910f1b612069a51ce787f6338996db1b Mon Sep 17 00:00:00 2001 From: Filip Date: Mon, 3 Apr 2023 18:01:55 +0000 Subject: Add Suppressed to the TaskViewManagerTests It should be ignored until b/276483341 is fixed Test: none Bug: 276483341 Change-Id: I2aa7d9d4ef0dafd80d1d899747ec6a0718e5995a --- tests/src/com/android/car/carlauncher/TaskViewManagerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/src/com/android/car/carlauncher/TaskViewManagerTest.java b/tests/src/com/android/car/carlauncher/TaskViewManagerTest.java index 833fd7e7..4d69076e 100644 --- a/tests/src/com/android/car/carlauncher/TaskViewManagerTest.java +++ b/tests/src/com/android/car/carlauncher/TaskViewManagerTest.java @@ -68,6 +68,7 @@ import androidx.lifecycle.Lifecycle; import androidx.test.core.app.ActivityScenario; import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.Suppress; import com.android.car.carlauncher.taskstack.TaskStackChangeListeners; import com.android.dx.mockito.inline.extended.ExtendedMockito; @@ -101,6 +102,8 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; //TODO(b/266742500): Test that uses setUpLaunchRootTaskView get null listener + +@Suppress // Class to be ignored until resolved b/276483341 @RunWith(AndroidJUnit4.class) public class TaskViewManagerTest extends AbstractExtendedMockitoTestCase { @Rule -- cgit v1.2.3 From a3a181d57cf2c16c14b55cf8d1b4b580ea95bd00 Mon Sep 17 00:00:00 2001 From: Vaibhav Goyal Date: Sat, 4 Mar 2023 11:13:08 +0000 Subject: Grey out app icons for packages disabled due to GTOS gating When a user has not accepted terms of service, some apps are disabled by the system. These disabled apps are shown on the launcher screen with reduced opacity indicating that the app is disabled. Upon launching the app the user is redirected to the value proposition screen. Bug: 270412694 Test: atest AppLauncherUtilsTest#testGetLauncherAppsWithEnableAndTosDisabledApps Change-Id: I1b113b6cba31e5bd8d43689976add906d21f039c --- res/values/dimens.xml | 1 + res/values/overlayable.xml | 1 + res/values/strings.xml | 3 + .../android/car/carlauncher/AppLauncherUtils.java | 135 ++++++++++++++++++-- src/com/android/car/carlauncher/AppMetaData.java | 8 ++ .../android/car/carlauncher/LauncherViewModel.java | 2 + .../recyclerview/AppItemViewHolder.java | 19 ++- .../car/carlauncher/AppItemViewHolderTest.java | 97 ++++++++++++++ .../car/carlauncher/AppLauncherUtilsTest.java | 142 +++++++++++++++++++++ .../car/carlauncher/LauncherViewModelTest.java | 7 + 10 files changed, 402 insertions(+), 13 deletions(-) create mode 100644 tests/src/com/android/car/carlauncher/AppItemViewHolderTest.java diff --git a/res/values/dimens.xml b/res/values/dimens.xml index b988060f..7e69a360 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -36,6 +36,7 @@ 84dp 100dp 0.5 + 0.46 1.0 6dp 18dp diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml index 7ab18c10..79e4c437 100644 --- a/res/values/overlayable.xml +++ b/res/values/overlayable.xml @@ -259,6 +259,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + diff --git a/res/values/strings.xml b/res/values/strings.xml index fec37256..c503cce9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -71,6 +71,9 @@ / + + com.android.car.SHOW_USER_TOS_ACTIVITY + - - - - + + "Geen onlangse items nie" + "Vee alles uit" + "App is nie beskikbaar nie" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index e6e832e1..062a9acb 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -43,10 +43,9 @@ "የአራሚ መተግበሪያዎችን ደብቅ" "የአራሚ መተግበሪያዎችን አሳይ" "/" - - - - - + + "ምንም የቅርብ ጊዜ ንጥሎች የሉም" + "ሁሉንም አጽዳ" + "መተግበሪያ አይገኝም" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 11c2bb3f..abc5b1fe 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -43,10 +43,9 @@ "إخفاء تطبيقات تصحيح الأخطاء" "إظهار تطبيقات تصحيح الأخطاء" "/" - - - - - + + "ما مِن عناصر تم استخدامها مؤخرًا" + "محو الكل" + "التطبيق غير متاح" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index ca107f47..94280ff2 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -43,10 +43,9 @@ "ডিবাগ এপ্‌সমূহ লুকুৱাওক" "ডিবাগ এপ্‌সমূহ দেখুৱাওক" "/" - - - - - + + "কোনো শেহতীয়া বস্তু নাই" + "আটাইবোৰ মচক" + "এপ্‌টো উপলব্ধ নহয়" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 04d8284e..4d4527ed 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -43,10 +43,9 @@ "Sazlama tətbiqlərini gizlədin" "Sazlama tətbiqlərini göstərin" "/" - - - - - + + "Son element yoxdur" + "Hamısını silin" + "Tətbiq əlçatan deyil" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 2cdf52ea..bf999a01 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -43,10 +43,9 @@ "Sakrij aplikacije za otklanjanje grešaka" "Prikaži aplikacije za otklanjanje grešaka" "/" - - - - - + + "Nema nedavnih stavki" + "Obriši sve" + "Aplikacija nije dostupna" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 444c8d90..552626a1 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -43,10 +43,9 @@ "Схаваць праграмы адладкі" "Паказаць праграмы адладкі" "/" - - - - - + + "Няма нядаўніх элементаў" + "Ачысціць усё" + "Праграма недаступная" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index bb3e1063..84ea306b 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -43,6 +43,8 @@ "Скриване на приложенията за отстраняване на грешки" "Показване на приложенията за отстраняв. на грешки" "/" + + "Няма скорошни елементи" "Изчистване на всичко" "Приложението не е налично" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 8612ebd8..97ce05af 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -43,10 +43,9 @@ "ডিবাগ অ্যাপ আড়াল করুন" "ডিবাগ অ্যাপ দেখুন" "/" - - - - - + + "কোনও সাম্প্রতিক আইটেম নেই" + "সব মুছে দিন" + "অ্যাপ উপলভ্য নেই" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 7ca321b5..58693422 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -43,10 +43,9 @@ "Sakrij aplikacije za otklanjanje grešaka" "Prikaži aplikacije za otklanjanje grešaka" "/" - - - - - + + "Nema nedavnih stavki" + "Obriši sve" + "Aplikacija nije dostupna" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 9f6dca54..f841d14a 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -43,10 +43,9 @@ "Amaga les aplicacions de depuració" "Mostra les aplicacions de depuració" "/" - - - - - + + "No hi ha cap element recent" + "Esborra-ho tot" + "L\'aplicació no està disponible" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 6ba4e75a..0b4cf997 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -43,10 +43,9 @@ "Skrýt ladicí aplikace" "Zobrazit ladicí aplikace" "/" - - - - - + + "Žádné nedávné položky" + "Vymazat vše" + "Aplikace není k dispozici" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 89dbd453..88298ac6 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -43,10 +43,9 @@ "Skjul apps til fejlretning" "Vis apps til fejlretning" "/" - - - - - + + "Ingen nye elementer" + "Ryd alt" + "Appen er ikke tilgængelig" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 57353c0d..e1ddf316 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -43,10 +43,9 @@ "Debug-Apps verbergen" "Debug-Apps anzeigen" "/" - - - - - + + "Keine kürzlich verwendeten Elemente" + "Alle löschen" + "App nicht verfügbar" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 52cfe022..1c65d49d 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -43,10 +43,9 @@ "Απόκρυψη εφαρμογών εντοπισμού σφαλμάτων" "Εμφάνιση εφαρμογών εντοπισμού σφαλμάτων" "/" - - - - - + + "Δεν υπάρχουν πρόσφατα στοιχεία" + "Διαγραφή όλων" + "Η εφαρμογή δεν είναι διαθέσιμη" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 372f3741..73be5eff 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -43,10 +43,9 @@ "Hide debug apps" "Show debug apps" "/" - - - - - + + "No recent items" + "Clear all" + "App isn\'t available" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index f4c9c545..70cbb3dc 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -46,6 +46,8 @@ "Show debug apps" + + diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 372f3741..73be5eff 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -43,10 +43,9 @@ "Hide debug apps" "Show debug apps" "/" - - - - - + + "No recent items" + "Clear all" + "App isn\'t available" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 372f3741..73be5eff 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -43,10 +43,9 @@ "Hide debug apps" "Show debug apps" "/" - - - - - + + "No recent items" + "Clear all" + "App isn\'t available" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 8c0fc2e4..44a2fe88 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -43,6 +43,8 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Hide debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎Show debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‎‎‎‎/‎‏‎‎‏‎" + + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎No recent items‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‏‎Clear All‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎App isn\'t available‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 29d88f6e..c23b3f7a 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -43,10 +43,9 @@ "Ocultar apps de depuración" "Mostrar apps de depuración" "/" - - - - - + + "No hay elementos recientes" + "Borrar todo" + "La app no está disponible" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 48af3821..85bcaeb1 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -43,10 +43,9 @@ "Ocultar aplicaciones de depuración" "Mostrar aplicaciones de depuración" "/" - - - - - + + "No hay elementos recientes" + "Borrar todo" + "La aplicación no está disponible" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 29f24f91..292e7321 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -43,10 +43,9 @@ "Peida silumisrakendused" "Kuva silumisrakendused" "/" - - - - - + + "Hiljutisi üksusi pole" + "Kustuta kõik" + "Rakendus ei ole saadaval" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index b537ffdf..4ebfa56f 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -43,10 +43,9 @@ "Ezkutatu arazteko aplikazioak" "Erakutsi arazteko aplikazioak" "/" - - - - - + + "Ez dago azkenaldi honetako ezer" + "Garbitu guztia" + "Ez dago erabilgarri aplikazioa" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index d99a7b17..9ec7b300 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -43,10 +43,9 @@ "پنهان کردن برنامه‌های اشکال‌زدایی" "نمایش برنامه‌های اشکال‌زدایی" "/" - - - - - + + "مورد اخیری وجود ندارد" + "پاک کردن همه" + "برنامه دردسترس نیست" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index d4b6e172..f7de57c7 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -43,10 +43,9 @@ "Piilota virheenkorjaussovellukset" "Näytä virheenkorjaussovellukset" "/" - - - - - + + "Ei viimeaikaisia kohteita" + "Tyhjennä kaikki" + "Sovellus ei ole käytettävissä" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 5c638205..1382fd42 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -43,10 +43,9 @@ "Masquer les applications de débogage" "Afficher les applications de débogage" "/" - - - - - + + "Aucun élément récent" + "Tout effacer" + "L\'application n\'est pas accessible" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 53210e21..831b3a94 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -43,10 +43,9 @@ "Masquer les applis de débogage" "Afficher les applis de débogage" "/" - - - - - + + "Aucun élément récent" + "Tout effacer" + "Appli indisponible" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index cbd6a39a..af2bd870 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -43,10 +43,9 @@ "Ocultar aplicacións de depuración" "Mostrar aplicacións de depuración" "/" - - - - - + + "Non hai elementos recentes" + "Borrar todo" + "A aplicación non está dispoñible" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 245e0a63..d39f5464 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -43,10 +43,9 @@ "ડિબગ ઍપ છુપાવો" "ડિબગ ઍપ બતાવો" "/" - - - - - + + "તાજેતરની કોઈ આઇટમ નથી" + "બધી આઇટમ સાફ કરો" + "ઍપ ઉપલબ્ધ નથી" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 91cf2862..510b6095 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -43,10 +43,9 @@ "डीबग ऐप्लिकेशन छिपाएं" "डीबग ऐप्लिकेशन दिखाएं" "/" - - - - - + + "हाल ही का कोई आइटम मौजूद नहीं है" + "सभी आइटम मिटाएं" + "ऐप्लिकेशन उपलब्ध नहीं है" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 54940b35..65916e36 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -43,10 +43,9 @@ "Sakrij aplikacije za otklanjanje pogrešaka" "Prikaži aplikacije za otklanjanje pogrešaka" "/" - - - - - + + "Nema nedavnih stavki" + "Izbrišite sve" + "Aplikacija nije dostupna" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index e55360bb..98ea5b67 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -43,10 +43,9 @@ "Hibakereső alkalmazások elrejtése" "Hibakereső alkalmazások megjelenítése" "/" - - - - - + + "Nincsenek mostanában használt elemek" + "Összes törlése" + "Az alkalmazás nem áll rendelkezésre" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 97b12e3b..4744ce26 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -43,10 +43,9 @@ "Թաքցնել վրիպազերծման հավելվածները" "Ցույց տալ վրիպազերծման հավելվածները" "/" - - - - - + + "Այստեղ դեռ ոչինչ չկա" + "Ջնջել բոլորը" + "Հավելվածը հասանելի չէ" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index f2e420bd..b0696124 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -43,10 +43,9 @@ "Sembunyikan aplikasi debug" "Tampilkan aplikasi debug" "/" - - - - - + + "Tidak ada item baru" + "Hapus Semua" + "Aplikasi tidak tersedia" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index a91a1d5b..fafcaa0f 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -43,10 +43,9 @@ "Fela villuleitarforrit" "Sýna villuleitarforrit" "/" - - - - - + + "Engin nýleg atriði" + "Hreinsa allt" + "Forritið er ekki í boði" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index b99779b1..3d1c36af 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -43,10 +43,9 @@ "Nascondi app di debug" "Mostra app di debug" "/" - - - - - + + "Nessun elemento recente" + "Cancella tutto" + "App non disponibile" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 6fdf4cd0..fa44a265 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -43,10 +43,9 @@ "הסתרת אפליקציות לניפוי באגים" "הצגת אפליקציות לניפוי באגים" "/" - - - - - + + "אין פריטים אחרונים" + "ניקוי הכול" + "האפליקציה לא זמינה" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 27370389..8416af10 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -43,10 +43,9 @@ "デバッグアプリを表示しない" "デバッグアプリを表示する" "/" - - - - - + + "最近のアイテムはありません" + "すべて消去" + "このアプリは使用できません" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index ce7d4e0d..4679bbfd 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -43,10 +43,9 @@ "გამართვის აპების დამალვა" "გამართვის აპების ჩვენება" "/" - - - - - + + "ბოლოდროინდელი ერთეულები არ არის" + "ყველას გასუფთავება" + "აპი მიუწვდომელია" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 5ca0befd..ead67ee5 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -43,10 +43,9 @@ "Түзету қолданбаларын жасыру" "Түзету қолданбаларын көрсету" "/" - - - - - + + "Cоңғы қосылған элемент жоқ" + "Барлығын өшіру" + "Қолданба қолжетімді емес" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 05d2eb8f..5617fc8a 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -43,10 +43,9 @@ "លាក់កម្មវិធីជួសជុល" "បង្ហាញកម្មវិធីជួសជុល" "/" - - - - - + + "មិនមានធាតុថ្មីៗទេ" + "សម្អាតទាំងអស់" + "មិន​មាន​កម្មវិធី" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 9637fd8a..5f0dfeaa 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -43,10 +43,9 @@ "ಡೀಬಗ್ ಆ್ಯಪ್‌ಗಳನ್ನು ಮರೆಮಾಡಿ" "ಡೀಬಗ್ ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ" "/" - - - - - + + "ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ" + "ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ" + "ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 20f0ae74..c4c0a7e6 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -43,10 +43,9 @@ "디버그 앱 숨기기" "디버그 앱 표시" "/" - - - - - + + "최근 항목 없음" + "모두 지우기" + "앱을 사용할 수 없음" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 9d1feb05..a6ccf341 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -43,10 +43,9 @@ "Мүчүлүштүктөрдү аныктоочу колдонмолорду жашыруу" "Мүчүлүштүктөрдү аныктоочу колдонмолорду көрсөтүү" "/" - - - - - + + "Акыркы колдонмолор жок" + "Баарын тазалоо" + "Колдонмо жеткиликтүү эмес" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 79285b00..25cb0775 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -43,10 +43,9 @@ "ເຊື່ອງແອັບດີບັກ" "ສະແດງແອັບດີບັກ" "/" - - - - - + + "ບໍ່ມີລາຍການຫຼ້າສຸດ" + "ລຶບລ້າງທັງໝົດ" + "ແອັບບໍ່ພ້ອມໃຫ້ນຳໃຊ້" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index fff75bec..292bc27e 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -43,10 +43,9 @@ "Slėpti derinimo programas" "Rodyti derinimo programas" "/" - - - - - + + "Nėra jokių naujausių elementų" + "Išvalyti viską" + "Programa nepasiekiama" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index f12afd7d..bebc4b65 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -43,10 +43,9 @@ "Slēpt atkļūdošanas lietotnes" "Rādīt atkļūdošanas lietotnes" "/" - - - - - + + "Nav nesenu vienumu" + "Notīrīt visu" + "Lietotne nav pieejama" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 9856aeb9..218b31d9 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -43,10 +43,9 @@ "Сокриј апликации за отстранување грешки" "Прикажи апликации за отстранување грешки" "/" - - - - - + + "Нема неодамнешни ставки" + "Избриши ги сите" + "Апликацијата не е достапна" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 57098222..6ad2f433 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -43,10 +43,9 @@ "ഡീബഗ് ആപ്പുകൾ മറയ്ക്കുക" "ഡീബഗ് ആപ്പുകൾ കാണിക്കുക" "/" - - - - - + + "സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല" + "എല്ലാം മായ്‌ക്കുക" + "ആപ്പ് ലഭ്യമല്ല" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 0bfa2120..e813a296 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -43,10 +43,9 @@ "Дебаг хийх аппуудыг нуух" "Дебаг хийх аппуудыг харуулах" "/" - - - - - + + "Ямар ч саяхны зүйл байхгүй" + "Бүгдийг арилгах" + "Апп боломжгүй байна" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 24d0192c..40175407 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -43,10 +43,9 @@ "डीबग केलेली ॲप्स लपवा" "डीबग केलेली ॲप्स दाखवा" "/" - - - - - + + "कोणतेही अलीकडील आयटम नाहीत" + "सर्व साफ करा" + "अ‍ॅप उपलब्ध नाही" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 75704250..cd1fac06 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -43,10 +43,9 @@ "Sembunyikan apl nyahpepijat" "Tunjukkan apl nyahpepijat" "/" - - - - - + + "Tiada item terbaharu" + "Kosongkan Semua" + "Apl tidak tersedia" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index b6ad247c..5fa016c5 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -43,10 +43,9 @@ "အမှားရှာပြင်သည့်အက်ပ်များ ဖျောက်ထားရန်" "အမှားရှာပြင်သည့်အက်ပ်များ ပြရန်" "/" - - - - - + + "မကြာသေးမီက သုံးထားသည်များ မရှိပါ" + "အားလုံးရှင်းရန်" + "အက်ပ် မရနိုင်ပါ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 4a8b574e..bfb49d40 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -43,10 +43,9 @@ "Skjul feilsøkingsapper" "Vis feilsøkingsapper" "/" - - - - - + + "Ingen nylige elementer" + "Fjern alt" + "Appen er ikke tilgjengelig" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index aec98727..630f7a77 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -43,10 +43,9 @@ "डिबग एपहरू लुकाइयोस्" "डिबग एपहरू देखाइयोस्" "/" - - - - - + + "हालसालैको कुनै पनि सामग्री छैन" + "सबै सामग्री मेटाउनुहोस्" + "एप उपलब्ध छैन" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 0463247e..8ba1ed34 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -43,10 +43,9 @@ "Foutopsporingsapps verbergen" "Foutopsporingsapps tonen" "/" - - - - - + + "Geen recente items" + "Alles wissen" + "App is niet beschikbaar" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 4fb466c3..ffab3959 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -43,10 +43,9 @@ "ଡିବଗ୍ ଆପଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ" "ଡିବଗ୍ ଆପଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ" "/" - - - - - + + "କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ ନାହିଁ" + "ସବୁ ଖାଲି କରନ୍ତୁ" + "ଆପ ଉପଲବ୍ଧ ନାହିଁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index e7ad40e8..aa035881 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -43,10 +43,9 @@ "ਡੀਬੱਗ ਐਪਾਂ ਲੁਕਾਓ" "ਡੀਬੱਗ ਐਪਾਂ ਦਿਖਾਓ" "/" - - - - - + + "ਕੋਈ ਹਾਲੀਆ ਆਈਟਮ ਨਹੀਂ" + "ਸਭ ਕਲੀਅਰ ਕਰੋ" + "ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 3c68c8fd..7fbfb833 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -43,10 +43,9 @@ "Ukryj aplikacje do debugowania" "Pokaż aplikacje do debugowania" "/" - - - - - + + "Brak ostatnich elementów" + "Wyczyść wszystko" + "Aplikacja niedostępna" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index d10040d7..569195e8 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -43,10 +43,9 @@ "Ocultar apps de depuração" "Mostrar apps de depuração" "/" - - - - - + + "Nenhum item recente" + "Limpar tudo" + "A app não está disponível" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 702173db..77390e0a 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -43,10 +43,9 @@ "Ocultar apps de depuração" "Mostrar apps de depuração" "/" - - - - - + + "Nenhum item recente" + "Limpar tudo" + "O app não está disponível" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 276bc157..81c1c2b4 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -43,10 +43,9 @@ "Ascunde aplicațiile de remediere a erorilor" "Afișează aplicațiile de remediere a erorilor" "/" - - - - - + + "Niciun element recent" + "Șterge tot" + "Aplicația nu este disponibilă" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index b4df9885..720412f9 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -43,10 +43,9 @@ "Скрыть приложения для отладки" "Показать приложения для отладки" "/" - - - - - + + "Нет недавних объектов" + "Очистить" + "Приложение недоступно" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index dd9be3ad..4fee7447 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -43,10 +43,9 @@ "නිදොස් කිරීමේ යෙදුම් සඟවන්න" "නිදොස් කිරීමේ යෙදුම් පෙන්වන්න" "/" - - - - - + + "මෑත අයිතම නැත" + "සියල්ල හිස් කරන්න" + "යෙදුම නොතිබේ" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index e74f0db2..49f6002a 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -43,10 +43,9 @@ "Skryť aplikácie na ladenie" "Zobraziť aplikácie ladenia" "/" - - - - - + + "Žiadne nedávne položky" + "Vymazať všetko" + "Aplikácia nie je k dispozícii" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 2e63e3e7..a7a5ba60 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -43,10 +43,9 @@ "Skrij aplikacije za odpravljanje napak" "Prikaži aplikacije za odpravljanje napak" "/" - - - - - + + "Ni nedavnih elementov" + "Izbriši vse" + "Aplikacija ni na voljo" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index d06c038e..a4c230a3 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -43,10 +43,9 @@ "Fshih aplikacionet e korrigjimit" "Shfaq aplikacionet e korrigjimit" "/" - - - - - + + "Nuk ka asnjë artikull të fundit" + "Pastro të gjitha" + "Aplikacioni nuk ofrohet" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 9a7f99ca..c3129338 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -43,10 +43,9 @@ "Сакриј апликације за отклањање грешака" "Прикажи апликације за отклањање грешака" "/" - - - - - + + "Нема недавних ставки" + "Обриши све" + "Апликација није доступна" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index d6d95d84..cad9ecec 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -43,10 +43,9 @@ "Dölj felsökningsappar" "Visa felsökningsappar" "/" - - - - - + + "Listan är tom" + "Rensa allt" + "Appen är inte tillgänglig" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 523e8287..42016692 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -43,10 +43,9 @@ "Ficha programu za kutatua" "Onyesha programu za kutatua" "/" - - - - - + + "Hakuna vipengee vya hivi karibuni" + "Futa Zote" + "Programu haipatikani" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 9ede7e4c..6d158407 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -43,10 +43,9 @@ "பிழைதிருத்தும் ஆப்ஸை மறை" "பிழைதிருத்தும் ஆப்ஸைக் காட்டு" "/" - - - - - + + "சமீபத்தியவை எதுவுமில்லை" + "அனைத்தையும் அழி" + "ஆப்ஸ் கிடைக்கவில்லை" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 2090f423..f96250a1 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -43,10 +43,9 @@ "డీబగ్ యాప్‌లను దాచండి" "డీబగ్ యాప్‌లను చూపించండి" "/" - - - - - + + "ఇటీవలి ఐటెమ్‌లు ఏవీ లేవు" + "అన్నీ తీసివేయండి" + "యాప్ అందుబాటులో లేదు" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 0106323a..5dc80e7b 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -43,10 +43,9 @@ "ซ่อนแอปแก้ไขข้อบกพร่อง" "แสดงแอปแก้ไขข้อบกพร่อง" "/" - - - - - + + "ไม่มีรายการล่าสุด" + "ล้างทั้งหมด" + "แอปไม่พร้อมใช้งาน" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index b3384210..0c959a0d 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -43,10 +43,9 @@ "Itago ang mga debug app" "Ipakita ang mga debug app" "/" - - - - - + + "Walang kamakailang item" + "I-clear Lahat" + "Hindi available ang app" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index eea4239d..4d1bb042 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -43,10 +43,9 @@ "Hata ayıklama uygulamalarını gizle" "Hata ayıklama uygulamalarını göster" "/" - - - - - + + "Yeni öğe yok" + "Tümünü Temizle" + "Uygulama kullanılamıyor" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 22a02c99..38a28c54 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -43,10 +43,9 @@ "Сховати додатки для налагодження" "Показати додатки для налагодження" "/" - - - - - + + "Немає нещодавніх додатків" + "Очистити все" + "Додаток недоступний" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index be3d0254..e43cce18 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -43,10 +43,9 @@ "ڈیبگ ایپس چھپائیں" "ڈیبگ ایپس دکھائیں" "/" - - - - - + + "کوئی حالیہ آئٹم نہیں" + "تمام صاف کریں" + "ایپ دستیاب نہیں ہے" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 20ed9a53..8bd10f3c 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -43,10 +43,9 @@ "Nosozliklarni aniqlash ilovalarini berkitish" "Nosozliklarni aniqlash ilovalarini chiqarish" "/" - - - - - + + "Yaqinda ishlatilgan ilovalar yoʻq" + "Hammasini yopish" + "Ilova mavjud emas" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 10fc1394..c5601741 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -43,10 +43,9 @@ "Ẩn các ứng dụng gỡ lỗi" "Hiển thị các ứng dụng gỡ lỗi" "/" - - - - - + + "Không có mục nào gần đây" + "Xoá tất cả" + "Hiện không có ứng dụng" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index dec58db1..08e814f9 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -43,10 +43,9 @@ "隐藏调试应用" "显示调试应用" "/" - - - - - + + "近期没有任何内容" + "全部清除" + "应用无法使用" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 160bb1cd..8b15d731 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -43,10 +43,9 @@ "隱藏偵錯應用程式" "顯示偵錯應用程式" "/" - - - - - + + "最近沒有任何項目" + "全部清除" + "目前無法使用這個應用程式" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index c7c10aca..3d9d9408 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -43,10 +43,9 @@ "隱藏偵錯應用程式" "顯示偵錯應用程式" "/" - - - - - + + "沒有最近使用的項目" + "全部清除" + "應用程式目前無法使用" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 2a7adaa0..e9398f3b 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -43,10 +43,9 @@ "Fihla izinhlelo zokusebenza zokususa iphutha" "Bonisa izinhlelo zokusebenza zokususa iphutha" "/" - - - - - + + "Azikho izinto zakamuva" + "Sula konke" + "I-app ayitholakali" -- cgit v1.2.3 From 3b3857e01ea9566534acb73cb8b9e285d26bc99e Mon Sep 17 00:00:00 2001 From: Vaibhav Goyal Date: Fri, 17 Mar 2023 16:35:48 +0000 Subject: Add GTOS banner to launcher Bug: 270412647 Test: Manual testing Change-Id: I17295fb6cefffd45d60be2a909d7a6a44ba46772 --- res/drawable/banner_warning_image.xml | 10 ++ res/layout/app_grid_activity.xml | 5 + res/layout/banner.xml | 62 ++++++++++ res/values/colors.xml | 3 + res/values/dimens.xml | 5 + res/values/overlayable.xml | 3 + res/values/strings.xml | 5 + res/values/styles.xml | 17 +++ .../android/car/carlauncher/AppGridActivity.java | 25 ++++ .../android/car/carlauncher/AppLauncherUtils.java | 29 +++++ src/com/android/car/carlauncher/Banner.java | 128 +++++++++++++++++++++ .../pagination/PaginationController.java | 19 ++- 12 files changed, 309 insertions(+), 2 deletions(-) create mode 100644 res/drawable/banner_warning_image.xml create mode 100644 res/layout/banner.xml create mode 100644 src/com/android/car/carlauncher/Banner.java diff --git a/res/drawable/banner_warning_image.xml b/res/drawable/banner_warning_image.xml new file mode 100644 index 00000000..13829693 --- /dev/null +++ b/res/drawable/banner_warning_image.xml @@ -0,0 +1,10 @@ + + + diff --git a/res/layout/app_grid_activity.xml b/res/layout/app_grid_activity.xml index 8758ea8c..bbff6c6e 100644 --- a/res/layout/app_grid_activity.xml +++ b/res/layout/app_grid_activity.xml @@ -27,6 +27,11 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> + + + + + + + + + + \ No newline at end of file diff --git a/res/values/colors.xml b/res/values/colors.xml index 4d4120f0..dcbf5c4d 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -33,4 +33,7 @@ @*android:color/car_grey_900 @*android:color/car_grey_846 @*android:color/car_accent + #2E3134 + #66B5FF + #FFFFFF diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 7e69a360..1742427d 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -129,4 +129,9 @@ other handlers. --> 5 0.35 + + + 300dp + 28dp + 30dp diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml index 79e4c437..afc7d87e 100644 --- a/res/values/overlayable.xml +++ b/res/values/overlayable.xml @@ -234,6 +234,9 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index c503cce9..06533c5e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -115,4 +115,9 @@ --> + + + To use user tos disabled apps, agree to User tos + Review + Not Now diff --git a/res/values/styles.xml b/res/values/styles.xml index fc05d0ec..dad46264 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -78,4 +78,21 @@ true + + + + + + + + diff --git a/src/com/android/car/carlauncher/AppGridActivity.java b/src/com/android/car/carlauncher/AppGridActivity.java index 292098ae..342e9175 100644 --- a/src/com/android/car/carlauncher/AppGridActivity.java +++ b/src/com/android/car/carlauncher/AppGridActivity.java @@ -127,6 +127,7 @@ public class AppGridActivity extends AppCompatActivity implements InsetsChangedL private AppGridLayoutManager mLayoutManager; private boolean mIsCurrentlyDragging; private long mOffPageHoverBeforeScrollMs; + private Banner mBanner; private AppGridDragController mAppGridDragController; private PaginationController mPaginationController; @@ -436,6 +437,9 @@ public class AppGridActivity extends AppCompatActivity implements InsetsChangedL dimensionUpdateCallback.addListener(mPageIndicator); dimensionUpdateCallback.addListener(this); mPaginationController = new PaginationController(windowBackground, dimensionUpdateCallback); + + mBanner = requireViewById(R.id.tos_banner); + updateTosBanner(); } @Override @@ -499,6 +503,8 @@ public class AppGridActivity extends AppCompatActivity implements InsetsChangedL @Override protected void onResume() { super.onResume(); + + updateTosBannerVisibility(); updateScrollState(); mAdapter.setLayoutDirection(getResources().getConfiguration().getLayoutDirection()); } @@ -890,6 +896,25 @@ public class AppGridActivity extends AppCompatActivity implements InsetsChangedL delayedDismissAnimator.start(); } + private void updateTosBanner() { + mBanner.setFirstButtonText(getString(R.string.banner_review_button_text)); + mBanner.setSecondButtonText(getString(R.string.banner_dismiss_button_text)); + mBanner.setTitleText(getString(R.string.banner_title_text)); + mBanner.setFirstButtonOnClickListener( + v -> AppLauncherUtils.launchTosAcceptanceFlow(v.getContext())); + mBanner.setSecondButtonOnClickListener( + v -> mBanner.setVisibility(View.GONE)); + } + + private void updateTosBannerVisibility() { + + if (AppLauncherUtils.showTosBanner(this)) { + getMainThreadHandler().post(() -> mBanner.setVisibility(View.VISIBLE)); + } else { + mBanner.setVisibility(View.GONE); + } + } + @VisibleForTesting void setCarUxRestrictionsManager(CarUxRestrictionsManager carUxRestrictionsManager) { mCarUxRestrictionsManager = carUxRestrictionsManager; diff --git a/src/com/android/car/carlauncher/AppLauncherUtils.java b/src/com/android/car/carlauncher/AppLauncherUtils.java index 213c5590..f50dc045 100644 --- a/src/com/android/car/carlauncher/AppLauncherUtils.java +++ b/src/com/android/car/carlauncher/AppLauncherUtils.java @@ -18,6 +18,7 @@ package com.android.car.carlauncher; import static android.car.settings.CarSettings.Secure.KEY_PACKAGES_DISABLED_ON_RESOURCE_OVERUSE; import static android.car.settings.CarSettings.Secure.KEY_UNACCEPTED_TOS_DISABLED_APPS; +import static android.car.settings.CarSettings.Secure.KEY_USER_TOS_ACCEPTED; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -95,6 +96,8 @@ public class AppLauncherUtils { private static final String TYPE_VIDEO = "video"; // TODO (b/276975875): deprecate current key private static final String TOS_FIRST_RUN = "firstRun"; + // This value indicates if TOS has not been accepted by the user + private static final String TOS_NOT_ACCEPTED = "1"; static final String TOS_DISABLED_APPS_SEPARATOR = ","; static final String PACKAGES_DISABLED_ON_RESOURCE_OVERUSE_SEPARATOR = ";"; @@ -879,4 +882,30 @@ public class AppLauncherUtils { : new ArraySet<>(Arrays.asList(settingsValue.split( sep))); } + + /** + * Check if the tos banner has to be displayed + * @param context The application context + * @return true if the banner needs to be displayed, false otherwise + */ + static boolean showTosBanner(Context context) { + // TODO (b/277235742): Add backoff strategy to dismiss banner + return !tosAccepted(context); + } + + /** + * Check if a user has accepted TOS + * + * @param context The application context + * @return true if the user has accepted Tos, false otherwise + */ + private static boolean tosAccepted(Context context) { + ContentResolver contentResolverForUser = context.createContextAsUser( + UserHandle.getUserHandleForUid(Process.myUid()), /* flags= */ 0) + .getContentResolver(); + String settingsValue = Settings.Secure.getString( + contentResolverForUser, + KEY_USER_TOS_ACCEPTED); + return !Objects.equals(settingsValue, TOS_NOT_ACCEPTED); + } } diff --git a/src/com/android/car/carlauncher/Banner.java b/src/com/android/car/carlauncher/Banner.java new file mode 100644 index 00000000..68045d8f --- /dev/null +++ b/src/com/android/car/carlauncher/Banner.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2023 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.car.carlauncher; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; + +/** + * Banner view to display text with multiple cta actions + */ +public class Banner extends ConstraintLayout { + + private final TextView mFirstButton; + private final TextView mSecondButton; + private final TextView mTitleTextView; + + public Banner(@NonNull Context context) { + this(context, null); + } + + public Banner(@NonNull Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public Banner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public Banner( + @NonNull Context context, + @Nullable AttributeSet attrs, + int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + + LayoutInflater inflater = LayoutInflater.from(getContext()); + inflater.inflate(R.layout.banner, this); + + mFirstButton = requireViewById(R.id.first_button); + mSecondButton = requireViewById(R.id.second_button); + mTitleTextView = requireViewById(R.id.banner_title); + + TypedArray attrArray = context.getTheme().obtainStyledAttributes( + attrs, + R.styleable.Banner, + defStyleAttr, + defStyleRes); + + String firstButtonText; + String secondButtonText; + + try { + firstButtonText = attrArray.getString(R.styleable.Banner_first_button_text); + secondButtonText = attrArray.getString(R.styleable.Banner_second_button_text); + setFirstButtonText(firstButtonText); + setSecondButtonText(secondButtonText); + } finally { + attrArray.recycle(); + } + } + + /** + * Sets the text to be displayed on the first button + * + * @param text text to be displayed + */ + public void setFirstButtonText(String text) { + mFirstButton.setText(text); + } + + /** + * Register a callback to be invoked when the first button is clicked. + * + * @param listener The callback that will run on clicking the button + */ + public void setFirstButtonOnClickListener(@Nullable View.OnClickListener listener) { + mFirstButton.setOnClickListener(listener); + } + + /** + * Sets the text to be displayed on the second button + * + * @param text text to be displayed + */ + public void setSecondButtonText(String text) { + mSecondButton.setText(text); + } + + /** + * Register a callback to be invoked when the first button is clicked. + * + * @param listener The callback that will run on clicking the button + */ + public void setSecondButtonOnClickListener(@Nullable View.OnClickListener listener) { + mSecondButton.setOnClickListener(listener); + } + + /** + * Sets the primary text to be displayed on banner + * + * @param text text to be displayed + */ + public void setTitleText(String text) { + mTitleTextView.setText(text); + } +} diff --git a/src/com/android/car/carlauncher/pagination/PaginationController.java b/src/com/android/car/carlauncher/pagination/PaginationController.java index 5ef4650d..f12bf934 100644 --- a/src/com/android/car/carlauncher/pagination/PaginationController.java +++ b/src/com/android/car/carlauncher/pagination/PaginationController.java @@ -19,6 +19,8 @@ package com.android.car.carlauncher.pagination; import android.view.View; import android.view.ViewTreeObserver.OnGlobalLayoutListener; +import com.android.car.carlauncher.Banner; +import com.android.car.carlauncher.R; import com.android.car.carlauncher.pagination.PageMeasurementHelper.GridDimensions; import com.android.car.carlauncher.pagination.PageMeasurementHelper.PageDimensions; @@ -31,16 +33,22 @@ import java.util.Set; public class PaginationController { private final PageMeasurementHelper mPageMeasurementHelper; private final DimensionUpdateCallback mCallback; + // Terms of Service Banner + private final Banner mTosBanner; public PaginationController(View windowBackground, DimensionUpdateCallback callback) { mCallback = callback; mPageMeasurementHelper = new PageMeasurementHelper(windowBackground); + mTosBanner = windowBackground.findViewById(R.id.tos_banner); windowBackground.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - maybeHandleWindowResize(windowBackground.getMeasuredWidth(), - windowBackground.getMeasuredHeight()); + // We need to subtract the banner height from the available window height + // available to the app_grid + int windowHeight = windowBackground.getMeasuredHeight() - getBannerHeight(); + int windowWidth = windowBackground.getMeasuredWidth(); + maybeHandleWindowResize(windowWidth, windowHeight); } }); } @@ -53,6 +61,13 @@ public class PaginationController { } } + private int getBannerHeight() { + if (mTosBanner.getVisibility() == View.VISIBLE) { + return mTosBanner.getMeasuredHeight(); + } + return 0; + } + /** * Callback contract between this controller and its {@link DimensionUpdateListener} classes. * -- cgit v1.2.3 From e97e959a71eed073bd7be5136ac6c6d475f6a76c Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 21 Apr 2023 14:47:54 -0700 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I38241769d923e206609e041ec67be775ceb47a37 --- res/values-af/strings.xml | 6 ++++++ res/values-am/strings.xml | 6 ++++++ res/values-ar/strings.xml | 6 ++++++ res/values-as/strings.xml | 6 ++++++ res/values-az/strings.xml | 6 ++++++ res/values-b+sr+Latn/strings.xml | 6 ++++++ res/values-be/strings.xml | 6 ++++++ res/values-bg/strings.xml | 6 ++++++ res/values-bn/strings.xml | 6 ++++++ res/values-bs/strings.xml | 6 ++++++ res/values-ca/strings.xml | 6 ++++++ res/values-cs/strings.xml | 6 ++++++ res/values-da/strings.xml | 6 ++++++ res/values-de/strings.xml | 6 ++++++ res/values-el/strings.xml | 6 ++++++ res/values-en-rAU/strings.xml | 6 ++++++ res/values-en-rCA/strings.xml | 6 ++++++ res/values-en-rGB/strings.xml | 6 ++++++ res/values-en-rIN/strings.xml | 6 ++++++ res/values-en-rXC/strings.xml | 9 +++++++-- res/values-es-rUS/strings.xml | 6 ++++++ res/values-es/strings.xml | 6 ++++++ res/values-et/strings.xml | 6 ++++++ res/values-eu/strings.xml | 6 ++++++ res/values-fa/strings.xml | 6 ++++++ res/values-fi/strings.xml | 6 ++++++ res/values-fr-rCA/strings.xml | 6 ++++++ res/values-fr/strings.xml | 6 ++++++ res/values-gl/strings.xml | 6 ++++++ res/values-gu/strings.xml | 6 ++++++ res/values-hi/strings.xml | 6 ++++++ res/values-hr/strings.xml | 6 ++++++ res/values-hu/strings.xml | 6 ++++++ res/values-hy/strings.xml | 6 ++++++ res/values-in/strings.xml | 6 ++++++ res/values-is/strings.xml | 6 ++++++ res/values-it/strings.xml | 6 ++++++ res/values-iw/strings.xml | 6 ++++++ res/values-ja/strings.xml | 6 ++++++ res/values-ka/strings.xml | 6 ++++++ res/values-kk/strings.xml | 6 ++++++ res/values-km/strings.xml | 6 ++++++ res/values-kn/strings.xml | 6 ++++++ res/values-ko/strings.xml | 6 ++++++ res/values-ky/strings.xml | 6 ++++++ res/values-lo/strings.xml | 6 ++++++ res/values-lt/strings.xml | 6 ++++++ res/values-lv/strings.xml | 6 ++++++ res/values-mk/strings.xml | 6 ++++++ res/values-ml/strings.xml | 6 ++++++ res/values-mn/strings.xml | 6 ++++++ res/values-mr/strings.xml | 6 ++++++ res/values-ms/strings.xml | 6 ++++++ res/values-my/strings.xml | 6 ++++++ res/values-nb/strings.xml | 6 ++++++ res/values-ne/strings.xml | 6 ++++++ res/values-nl/strings.xml | 6 ++++++ res/values-or/strings.xml | 6 ++++++ res/values-pa/strings.xml | 6 ++++++ res/values-pl/strings.xml | 6 ++++++ res/values-pt-rPT/strings.xml | 6 ++++++ res/values-pt/strings.xml | 6 ++++++ res/values-ro/strings.xml | 6 ++++++ res/values-ru/strings.xml | 6 ++++++ res/values-si/strings.xml | 6 ++++++ res/values-sk/strings.xml | 6 ++++++ res/values-sl/strings.xml | 6 ++++++ res/values-sq/strings.xml | 6 ++++++ res/values-sr/strings.xml | 6 ++++++ res/values-sv/strings.xml | 6 ++++++ res/values-sw/strings.xml | 6 ++++++ res/values-ta/strings.xml | 6 ++++++ res/values-te/strings.xml | 6 ++++++ res/values-th/strings.xml | 6 ++++++ res/values-tl/strings.xml | 6 ++++++ res/values-tr/strings.xml | 6 ++++++ res/values-uk/strings.xml | 6 ++++++ res/values-ur/strings.xml | 6 ++++++ res/values-uz/strings.xml | 6 ++++++ res/values-vi/strings.xml | 6 ++++++ res/values-zh-rCN/strings.xml | 6 ++++++ res/values-zh-rHK/strings.xml | 8 +++++++- res/values-zh-rTW/strings.xml | 6 ++++++ res/values-zu/strings.xml | 6 ++++++ 84 files changed, 506 insertions(+), 3 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 9448302f..a2764e1c 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -48,4 +48,10 @@ "Geen onlangse items nie" "Vee alles uit" "App is nie beskikbaar nie" + + + + + + diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 062a9acb..efe6692d 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -48,4 +48,10 @@ "ምንም የቅርብ ጊዜ ንጥሎች የሉም" "ሁሉንም አጽዳ" "መተግበሪያ አይገኝም" + + + + + + diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index abc5b1fe..b14c4b7b 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -48,4 +48,10 @@ "ما مِن عناصر تم استخدامها مؤخرًا" "محو الكل" "التطبيق غير متاح" + + + + + + diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 94280ff2..b712b9b1 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -48,4 +48,10 @@ "কোনো শেহতীয়া বস্তু নাই" "আটাইবোৰ মচক" "এপ্‌টো উপলব্ধ নহয়" + + + + + + diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 4d4527ed..7dbd5e95 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -48,4 +48,10 @@ "Son element yoxdur" "Hamısını silin" "Tətbiq əlçatan deyil" + + + + + + diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index bf999a01..dc4a6f03 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -48,4 +48,10 @@ "Nema nedavnih stavki" "Obriši sve" "Aplikacija nije dostupna" + + + + + + diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 552626a1..ee544bdc 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -48,4 +48,10 @@ "Няма нядаўніх элементаў" "Ачысціць усё" "Праграма недаступная" + + + + + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 84ea306b..ee875334 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -48,4 +48,10 @@ "Няма скорошни елементи" "Изчистване на всичко" "Приложението не е налично" + + + + + + diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 97ce05af..e6774795 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -48,4 +48,10 @@ "কোনও সাম্প্রতিক আইটেম নেই" "সব মুছে দিন" "অ্যাপ উপলভ্য নেই" + + + + + + diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 58693422..16713e62 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -48,4 +48,10 @@ "Nema nedavnih stavki" "Obriši sve" "Aplikacija nije dostupna" + + + + + + diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index f841d14a..9bb0d319 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -48,4 +48,10 @@ "No hi ha cap element recent" "Esborra-ho tot" "L\'aplicació no està disponible" + + + + + + diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 0b4cf997..7a96192c 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -48,4 +48,10 @@ "Žádné nedávné položky" "Vymazat vše" "Aplikace není k dispozici" + + + + + + diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 88298ac6..a687d125 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -48,4 +48,10 @@ "Ingen nye elementer" "Ryd alt" "Appen er ikke tilgængelig" + + + + + + diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index e1ddf316..6073cc3a 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -48,4 +48,10 @@ "Keine kürzlich verwendeten Elemente" "Alle löschen" "App nicht verfügbar" + + + + + + diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 1c65d49d..18e18140 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -48,4 +48,10 @@ "Δεν υπάρχουν πρόσφατα στοιχεία" "Διαγραφή όλων" "Η εφαρμογή δεν είναι διαθέσιμη" + + + + + + diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 73be5eff..329e74f5 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -48,4 +48,10 @@ "No recent items" "Clear all" "App isn\'t available" + + + + + + diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 70cbb3dc..bcc1ea28 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -54,4 +54,10 @@ + + + + + + diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 73be5eff..329e74f5 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -48,4 +48,10 @@ "No recent items" "Clear all" "App isn\'t available" + + + + + + diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 73be5eff..329e74f5 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -48,4 +48,10 @@ "No recent items" "Clear all" "App isn\'t available" + + + + + + diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 44a2fe88..8b893861 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -43,9 +43,14 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Hide debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎Show debug apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‎‎‎‎/‎‏‎‎‏‎" - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎com.android.car.SHOW_USER_TOS_ACTIVITY‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎No recent items‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‏‎Clear All‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎App isn\'t available‎‏‎‎‏‎" + + + + + + diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index c23b3f7a..192ad39e 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -48,4 +48,10 @@ "No hay elementos recientes" "Borrar todo" "La app no está disponible" + + + + + + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 85bcaeb1..a36c212c 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -48,4 +48,10 @@ "No hay elementos recientes" "Borrar todo" "La aplicación no está disponible" + + + + + + diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 292e7321..e4383313 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -48,4 +48,10 @@ "Hiljutisi üksusi pole" "Kustuta kõik" "Rakendus ei ole saadaval" + + + + + + diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 4ebfa56f..563b58b6 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -48,4 +48,10 @@ "Ez dago azkenaldi honetako ezer" "Garbitu guztia" "Ez dago erabilgarri aplikazioa" + + + + + + diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 9ec7b300..e9e9880b 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -48,4 +48,10 @@ "مورد اخیری وجود ندارد" "پاک کردن همه" "برنامه دردسترس نیست" + + + + + + diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index f7de57c7..c8a78a4c 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -48,4 +48,10 @@ "Ei viimeaikaisia kohteita" "Tyhjennä kaikki" "Sovellus ei ole käytettävissä" + + + + + + diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 1382fd42..6c73fbbc 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -48,4 +48,10 @@ "Aucun élément récent" "Tout effacer" "L\'application n\'est pas accessible" + + + + + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 831b3a94..046e4089 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -48,4 +48,10 @@ "Aucun élément récent" "Tout effacer" "Appli indisponible" + + + + + + diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index af2bd870..3792dc3f 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -48,4 +48,10 @@ "Non hai elementos recentes" "Borrar todo" "A aplicación non está dispoñible" + + + + + + diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index d39f5464..ea9ada59 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -48,4 +48,10 @@ "તાજેતરની કોઈ આઇટમ નથી" "બધી આઇટમ સાફ કરો" "ઍપ ઉપલબ્ધ નથી" + + + + + + diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 510b6095..44726853 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -48,4 +48,10 @@ "हाल ही का कोई आइटम मौजूद नहीं है" "सभी आइटम मिटाएं" "ऐप्लिकेशन उपलब्ध नहीं है" + + + + + + diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 65916e36..adc4419c 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -48,4 +48,10 @@ "Nema nedavnih stavki" "Izbrišite sve" "Aplikacija nije dostupna" + + + + + + diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 98ea5b67..9f3fc88d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -48,4 +48,10 @@ "Nincsenek mostanában használt elemek" "Összes törlése" "Az alkalmazás nem áll rendelkezésre" + + + + + + diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 4744ce26..13f764ea 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -48,4 +48,10 @@ "Այստեղ դեռ ոչինչ չկա" "Ջնջել բոլորը" "Հավելվածը հասանելի չէ" + + + + + + diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index b0696124..6513ae34 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -48,4 +48,10 @@ "Tidak ada item baru" "Hapus Semua" "Aplikasi tidak tersedia" + + + + + + diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index fafcaa0f..0fe8af0d 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -48,4 +48,10 @@ "Engin nýleg atriði" "Hreinsa allt" "Forritið er ekki í boði" + + + + + + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 3d1c36af..0534f6d7 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -48,4 +48,10 @@ "Nessun elemento recente" "Cancella tutto" "App non disponibile" + + + + + + diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index fa44a265..597fbe35 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -48,4 +48,10 @@ "אין פריטים אחרונים" "ניקוי הכול" "האפליקציה לא זמינה" + + + + + + diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 8416af10..b44895db 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -48,4 +48,10 @@ "最近のアイテムはありません" "すべて消去" "このアプリは使用できません" + + + + + + diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 4679bbfd..7df18409 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -48,4 +48,10 @@ "ბოლოდროინდელი ერთეულები არ არის" "ყველას გასუფთავება" "აპი მიუწვდომელია" + + + + + + diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index ead67ee5..f8b92fcf 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -48,4 +48,10 @@ "Cоңғы қосылған элемент жоқ" "Барлығын өшіру" "Қолданба қолжетімді емес" + + + + + + diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 5617fc8a..9301fa77 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -48,4 +48,10 @@ "មិនមានធាតុថ្មីៗទេ" "សម្អាតទាំងអស់" "មិន​មាន​កម្មវិធី" + + + + + + diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 5f0dfeaa..38f94319 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -48,4 +48,10 @@ "ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ" "ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ" "ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ" + + + + + + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index c4c0a7e6..2f287f0d 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -48,4 +48,10 @@ "최근 항목 없음" "모두 지우기" "앱을 사용할 수 없음" + + + + + + diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index a6ccf341..a21583e6 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -48,4 +48,10 @@ "Акыркы колдонмолор жок" "Баарын тазалоо" "Колдонмо жеткиликтүү эмес" + + + + + + diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 25cb0775..7e2fbd72 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -48,4 +48,10 @@ "ບໍ່ມີລາຍການຫຼ້າສຸດ" "ລຶບລ້າງທັງໝົດ" "ແອັບບໍ່ພ້ອມໃຫ້ນຳໃຊ້" + + + + + + diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 292bc27e..cb71c4e1 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -48,4 +48,10 @@ "Nėra jokių naujausių elementų" "Išvalyti viską" "Programa nepasiekiama" + + + + + + diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index bebc4b65..21625a6e 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -48,4 +48,10 @@ "Nav nesenu vienumu" "Notīrīt visu" "Lietotne nav pieejama" + + + + + + diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 218b31d9..727ef97a 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -48,4 +48,10 @@ "Нема неодамнешни ставки" "Избриши ги сите" "Апликацијата не е достапна" + + + + + + diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 6ad2f433..a1814e4b 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -48,4 +48,10 @@ "സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല" "എല്ലാം മായ്‌ക്കുക" "ആപ്പ് ലഭ്യമല്ല" + + + + + + diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index e813a296..0b790683 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -48,4 +48,10 @@ "Ямар ч саяхны зүйл байхгүй" "Бүгдийг арилгах" "Апп боломжгүй байна" + + + + + + diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 40175407..234ea707 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -48,4 +48,10 @@ "कोणतेही अलीकडील आयटम नाहीत" "सर्व साफ करा" "अ‍ॅप उपलब्ध नाही" + + + + + + diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index cd1fac06..bdcedaf5 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -48,4 +48,10 @@ "Tiada item terbaharu" "Kosongkan Semua" "Apl tidak tersedia" + + + + + + diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 5fa016c5..65604f0a 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -48,4 +48,10 @@ "မကြာသေးမီက သုံးထားသည်များ မရှိပါ" "အားလုံးရှင်းရန်" "အက်ပ် မရနိုင်ပါ" + + + + + + diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index bfb49d40..29e6d5fe 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -48,4 +48,10 @@ "Ingen nylige elementer" "Fjern alt" "Appen er ikke tilgjengelig" + + + + + + diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 630f7a77..526184cf 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -48,4 +48,10 @@ "हालसालैको कुनै पनि सामग्री छैन" "सबै सामग्री मेटाउनुहोस्" "एप उपलब्ध छैन" + + + + + + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 8ba1ed34..cab52634 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -48,4 +48,10 @@ "Geen recente items" "Alles wissen" "App is niet beschikbaar" + + + + + + diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index ffab3959..f1e98244 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -48,4 +48,10 @@ "କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ ନାହିଁ" "ସବୁ ଖାଲି କରନ୍ତୁ" "ଆପ ଉପଲବ୍ଧ ନାହିଁ" + + + + + + diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index aa035881..dd873758 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -48,4 +48,10 @@ "ਕੋਈ ਹਾਲੀਆ ਆਈਟਮ ਨਹੀਂ" "ਸਭ ਕਲੀਅਰ ਕਰੋ" "ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" + + + + + + diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 7fbfb833..298eb7d8 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -48,4 +48,10 @@ "Brak ostatnich elementów" "Wyczyść wszystko" "Aplikacja niedostępna" + + + + + + diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 569195e8..525e14f7 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -48,4 +48,10 @@ "Nenhum item recente" "Limpar tudo" "A app não está disponível" + + + + + + diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 77390e0a..2abd5ede 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -48,4 +48,10 @@ "Nenhum item recente" "Limpar tudo" "O app não está disponível" + + + + + + diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 81c1c2b4..78f572f7 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -48,4 +48,10 @@ "Niciun element recent" "Șterge tot" "Aplicația nu este disponibilă" + + + + + + diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 720412f9..ec06107f 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -48,4 +48,10 @@ "Нет недавних объектов" "Очистить" "Приложение недоступно" + + + + + + diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 4fee7447..b49d6656 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -48,4 +48,10 @@ "මෑත අයිතම නැත" "සියල්ල හිස් කරන්න" "යෙදුම නොතිබේ" + + + + + + diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 49f6002a..9a06ed48 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -48,4 +48,10 @@ "Žiadne nedávne položky" "Vymazať všetko" "Aplikácia nie je k dispozícii" + + + + + + diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index a7a5ba60..4a8cbd96 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -48,4 +48,10 @@ "Ni nedavnih elementov" "Izbriši vse" "Aplikacija ni na voljo" + + + + + + diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index a4c230a3..874ab0cb 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -48,4 +48,10 @@ "Nuk ka asnjë artikull të fundit" "Pastro të gjitha" "Aplikacioni nuk ofrohet" + + + + + + diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index c3129338..88d8283b 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -48,4 +48,10 @@ "Нема недавних ставки" "Обриши све" "Апликација није доступна" + + + + + + diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index cad9ecec..c6bd38db 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -48,4 +48,10 @@ "Listan är tom" "Rensa allt" "Appen är inte tillgänglig" + + + + + + diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 42016692..245e7172 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -48,4 +48,10 @@ "Hakuna vipengee vya hivi karibuni" "Futa Zote" "Programu haipatikani" + + + + + + diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 6d158407..8dce2b60 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -48,4 +48,10 @@ "சமீபத்தியவை எதுவுமில்லை" "அனைத்தையும் அழி" "ஆப்ஸ் கிடைக்கவில்லை" + + + + + + diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index f96250a1..a2bafa8d 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -48,4 +48,10 @@ "ఇటీవలి ఐటెమ్‌లు ఏవీ లేవు" "అన్నీ తీసివేయండి" "యాప్ అందుబాటులో లేదు" + + + + + + diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 5dc80e7b..f2fc413c 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -48,4 +48,10 @@ "ไม่มีรายการล่าสุด" "ล้างทั้งหมด" "แอปไม่พร้อมใช้งาน" + + + + + + diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 0c959a0d..22ab389c 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -48,4 +48,10 @@ "Walang kamakailang item" "I-clear Lahat" "Hindi available ang app" + + + + + + diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4d1bb042..058cef7f 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -48,4 +48,10 @@ "Yeni öğe yok" "Tümünü Temizle" "Uygulama kullanılamıyor" + + + + + + diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 38a28c54..9524d93b 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -48,4 +48,10 @@ "Немає нещодавніх додатків" "Очистити все" "Додаток недоступний" + + + + + + diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index e43cce18..947d2a5b 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -48,4 +48,10 @@ "کوئی حالیہ آئٹم نہیں" "تمام صاف کریں" "ایپ دستیاب نہیں ہے" + + + + + + diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 8bd10f3c..2a10de23 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -48,4 +48,10 @@ "Yaqinda ishlatilgan ilovalar yoʻq" "Hammasini yopish" "Ilova mavjud emas" + + + + + + diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index c5601741..1b78abf7 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -48,4 +48,10 @@ "Không có mục nào gần đây" "Xoá tất cả" "Hiện không có ứng dụng" + + + + + + diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 08e814f9..0b52cda6 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -48,4 +48,10 @@ "近期没有任何内容" "全部清除" "应用无法使用" + + + + + + diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 8b15d731..41df8a94 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -19,7 +19,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Car Launcher" "將應用程式網格重設為按字母排序" - "此功能會移除所有自訂順序。您要繼續嗎?" + "此功能會移除所有自訂順序。你要繼續嗎?" "所有應用程式" "媒體應用程式" "停止應用程式" @@ -48,4 +48,10 @@ "最近沒有任何項目" "全部清除" "目前無法使用這個應用程式" + + + + + + diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 3d9d9408..bef461a8 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -48,4 +48,10 @@ "沒有最近使用的項目" "全部清除" "應用程式目前無法使用" + + + + + + diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index e9398f3b..1734b27c 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -48,4 +48,10 @@ "Azikho izinto zakamuva" "Sula konke" "I-app ayitholakali" + + + + + + -- cgit v1.2.3 From b9a910bda1744b96e2ff81c86ea563dc5fd841d9 Mon Sep 17 00:00:00 2001 From: Vaibhav Goyal Date: Thu, 20 Apr 2023 13:54:57 -0700 Subject: Use suw intent to launch value prop screen for accepting tos Bug: 276779487 Bug: 276975875 Test: atest AppLauncherUtilsTest#testGetLauncherAppsWithEnableAndTosDisabledApps, AppLauncherUtilsTest#testGetLauncherAppsWithEnableAndTosDisabledDistractionOptimizedApps Change-Id: I05592b9b6388fe49a8e22d657d2dea8d5b4d631e --- res/values/strings.xml | 9 ++++-- .../android/car/carlauncher/AppLauncherUtils.java | 13 +++++---- .../car/carlauncher/AppLauncherUtilsTest.java | 32 +++++----------------- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 06533c5e..ba13cd14 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -71,8 +71,13 @@ / - - com.android.car.SHOW_USER_TOS_ACTIVITY + + + intent:#Intent;action=com.android.car.SHOW_USER_TOS_ACTIVITY;B.show_value_prop=true;end + + + + + \ No newline at end of file diff --git a/res/drawable/recent_task_shape.xml b/res/drawable/recent_task_shape.xml index ae015f14..ecdd3465 100644 --- a/res/drawable/recent_task_shape.xml +++ b/res/drawable/recent_task_shape.xml @@ -1,4 +1,20 @@ + + diff --git a/res/layout/recent_task_view.xml b/res/layout/recent_task_view.xml index f8c9cff7..e6a41b26 100644 --- a/res/layout/recent_task_view.xml +++ b/res/layout/recent_task_view.xml @@ -17,24 +17,7 @@ - - - + \ No newline at end of file diff --git a/res/layout/recent_task_view_first.xml b/res/layout/recent_task_view_first.xml new file mode 100644 index 00000000..a01c8f66 --- /dev/null +++ b/res/layout/recent_task_view_first.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/res/layout/recent_task_view_inner.xml b/res/layout/recent_task_view_inner.xml new file mode 100644 index 00000000..5ae2dbd2 --- /dev/null +++ b/res/layout/recent_task_view_inner.xml @@ -0,0 +1,39 @@ + + + + + + + + \ No newline at end of file diff --git a/res/layout/recents_activity.xml b/res/layout/recents_activity.xml index cd812e6e..97c81abd 100644 --- a/res/layout/recents_activity.xml +++ b/res/layout/recents_activity.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/recents_background_color"> - 3 msg_mirroring_pkg_name_key msg_mirroring_redirect_uri_key + + 2 diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 1742427d..31066742 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -21,7 +21,7 @@ (Ex: date time temp) --> .6 - + @*android:dimen/car_padding_1 @*android:dimen/car_padding_1 @@ -120,7 +120,6 @@ 48dp 8dp 64dp - 12dp 0.3 @@ -129,6 +128,11 @@ other handlers. --> 5 0.35 + + 860dp + 343dp 300dp diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml index afc7d87e..93164af6 100644 --- a/res/values/overlayable.xml +++ b/res/values/overlayable.xml @@ -23,6 +23,8 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + @@ -34,6 +36,9 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + + @@ -61,6 +66,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -70,6 +76,9 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + + @@ -94,19 +103,20 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + - - - + + @@ -119,6 +129,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -136,12 +147,14 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + @@ -162,7 +175,9 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + @@ -180,6 +195,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -190,6 +206,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -197,6 +214,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -210,6 +228,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + @@ -223,6 +242,8 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + + @@ -266,6 +287,7 @@ REGENERATE USING packages/apps/Car/libs/tools/rro/generate-overlayable.py + diff --git a/res/values/styles.xml b/res/values/styles.xml index dad46264..f9d414df 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -47,8 +47,8 @@ @@ -66,19 +66,19 @@ - @@ -94,5 +94,4 @@ @color/banner_button_text_color 24dp - diff --git a/src/com/android/car/carlauncher/recents/CarRecentsActivity.java b/src/com/android/car/carlauncher/recents/CarRecentsActivity.java index cc461ead..ff4663d7 100644 --- a/src/com/android/car/carlauncher/recents/CarRecentsActivity.java +++ b/src/com/android/car/carlauncher/recents/CarRecentsActivity.java @@ -38,6 +38,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.car.carlauncher.R; import com.android.car.carlauncher.recents.view.RecentTasksAdapter; +import com.android.car.carlauncher.recents.view.RecentsRecyclerView; +import com.android.car.carlauncher.recents.view.TaskSnapHelper; import com.android.car.carlauncher.recents.view.TaskTouchHelperCallback; import java.util.HashSet; @@ -48,7 +50,7 @@ public class CarRecentsActivity extends AppCompatActivity implements RecentTasksViewModel.RecentTasksChangeListener { public static final String OPEN_RECENT_TASK_ACTION = "com.android.car.carlauncher.recents.OPEN_RECENT_TASK_ACTION"; - private RecyclerView mRecentsRecyclerView; + private RecentsRecyclerView mRecentsRecyclerView; private GridLayoutManager mGridLayoutManager; private RecentTasksViewModel mRecentTasksViewModel; private Group mRecentTasksGroup; @@ -56,8 +58,6 @@ public class CarRecentsActivity extends AppCompatActivity implements private Animator mClearAllAnimator; private NonDOHiddenPackageProvider mNonDOHiddenPackageProvider; private Set mPackagesToHideFromRecents; - private int mRecentTaskRowSpacing; - private int mRecentTaskColSpacing; @Override protected void onCreate(Bundle savedInstanceState) { @@ -66,8 +66,6 @@ public class CarRecentsActivity extends AppCompatActivity implements mRecentsRecyclerView = findViewById(R.id.recent_tasks_list); mRecentTasksGroup = findViewById(R.id.recent_tasks_group); mEmptyStateView = findViewById(R.id.empty_state); - mRecentTaskRowSpacing = getResources().getDimensionPixelSize(R.dimen.recent_task_row_space); - mRecentTaskColSpacing = getResources().getDimensionPixelSize(R.dimen.recent_task_col_space); mPackagesToHideFromRecents = new HashSet<>(List.of(getResources().getStringArray( R.array.packages_hidden_from_recents))); mRecentTasksViewModel = RecentTasksViewModel.getInstance(); @@ -102,14 +100,27 @@ public class CarRecentsActivity extends AppCompatActivity implements } }); - mRecentsRecyclerView.addItemDecoration(getRecentTasksItemDecoration()); - float swipedThreshold = getResources().getFloat(R.dimen.recent_task_swiped_threshold); - ItemTouchHelper itemTouchHelper = new ItemTouchHelper( - new TaskTouchHelperCallback( - /* dragDirs= */ 0, ItemTouchHelper.UP, swipedThreshold)); + int colSpacing = getResources().getDimensionPixelSize(R.dimen.recent_task_col_space); + mRecentsRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, + @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { + outRect.right = colSpacing / 2; + outRect.left = colSpacing / 2; + } + }); + + ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new TaskTouchHelperCallback( + /* dragDirs= */ 0, ItemTouchHelper.UP, + getResources().getFloat(R.dimen.recent_task_swiped_threshold))); itemTouchHelper.attachToRecyclerView(mRecentsRecyclerView); - mRecentsRecyclerView.setAdapter( - new RecentTasksAdapter(getLayoutInflater(), itemTouchHelper)); + + TaskSnapHelper snapHelper = new TaskSnapHelper(gridSpanCount, + getResources().getInteger(R.integer.config_recents_columns_per_page)); + snapHelper.attachToRecyclerView(mRecentsRecyclerView); + + mRecentsRecyclerView.setAdapter(new RecentTasksAdapter(this, getLayoutInflater(), + itemTouchHelper)); mClearAllAnimator = AnimatorInflater.loadAnimator(this, R.animator.recents_clear_all); @@ -135,6 +146,7 @@ public class CarRecentsActivity extends AppCompatActivity implements } mRecentTasksViewModel.fetchRecentTaskList(); resetViewState(); + mRecentsRecyclerView.resetPadding(); } @Override @@ -147,6 +159,7 @@ public class CarRecentsActivity extends AppCompatActivity implements protected void onStop() { super.onStop(); mRecentTasksViewModel.clearCache(); + mRecentsRecyclerView.resetPadding(); } @Override @@ -161,6 +174,7 @@ public class CarRecentsActivity extends AppCompatActivity implements @Override public void onRecentTasksFetched() { resetViewState(); + mRecentsRecyclerView.resetPadding(); } @Override @@ -176,27 +190,12 @@ public class CarRecentsActivity extends AppCompatActivity implements @Override public void onRecentTaskRemoved(int position) { + mRecentsRecyclerView.resetPadding(); if (mRecentTasksViewModel.getRecentTasksSize() == 0) { launchHomeIntent(); } } - - private RecyclerView.ItemDecoration getRecentTasksItemDecoration() { - return new RecyclerView.ItemDecoration() { - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, - @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = mRecentTaskColSpacing; - int position = parent.getChildAdapterPosition(view); - if (position % 2 == 0) { - outRect.top = mRecentTaskRowSpacing; - } - } - }; - } - private void launchHomeIntent() { Intent homeActivityIntent = new Intent(Intent.ACTION_MAIN); homeActivityIntent.addCategory(Intent.CATEGORY_HOME); diff --git a/src/com/android/car/carlauncher/recents/RecentTasksProvider.java b/src/com/android/car/carlauncher/recents/RecentTasksProvider.java index 51be1dd7..1f141bf5 100644 --- a/src/com/android/car/carlauncher/recents/RecentTasksProvider.java +++ b/src/com/android/car/carlauncher/recents/RecentTasksProvider.java @@ -50,8 +50,6 @@ import com.android.systemui.shared.system.TaskStackChangeListeners; import com.android.wm.shell.recents.IRecentTasks; import com.android.wm.shell.util.GroupedRecentTaskInfo; -import org.jetbrains.annotations.NotNull; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -147,7 +145,7 @@ public class RecentTasksProvider implements RecentTasksProviderInterface { return; } RECENTS_MODEL_EXECUTOR.execute(() -> { - GroupedRecentTaskInfo[] groupedRecentTasks = new GroupedRecentTaskInfo[0]; + GroupedRecentTaskInfo[] groupedRecentTasks; try { // todo: b/271498799 use ActivityManagerWrapper.getInstance().getCurrentUserId() // or equivalent instead of hidden API mContext.getUserId() @@ -165,10 +163,10 @@ public class RecentTasksProvider implements RecentTasksProviderInterface { } mRecentTaskIds = new ArrayList<>(groupedRecentTasks.length); mRecentTaskIdToTaskMap = new HashMap<>(groupedRecentTasks.length); - boolean areSplitOrFREEFORMTypeTasksPresent = false; + boolean areSplitOrFreeformTypeTasksPresent = false; for (GroupedRecentTaskInfo groupedRecentTask : groupedRecentTasks) { switch (groupedRecentTask.getType()) { - case TYPE_SINGLE -> { + case TYPE_SINGLE: // Automotive doesn't have split screen functionality, only process tasks // of TYPE_SINGLE. ActivityManager.RecentTaskInfo taskInfo = groupedRecentTask.getTaskInfo1(); @@ -186,11 +184,13 @@ public class RecentTasksProvider implements RecentTasksProviderInterface { mRecentTaskIdToTaskMap.put(task.key.id, task); getRecentTaskThumbnailAsync(task.key.id); getRecentTaskIconAsync(task.key.id); - } - case TYPE_SPLIT, TYPE_FREEFORM -> areSplitOrFREEFORMTypeTasksPresent = true; + break; + case TYPE_SPLIT: + case TYPE_FREEFORM: + areSplitOrFreeformTypeTasksPresent = true; } } - if (areSplitOrFREEFORMTypeTasksPresent && DEBUG) { + if (areSplitOrFreeformTypeTasksPresent && DEBUG) { Log.d(TAG, "Automotive doesn't support TYPE_SPLIT and TYPE_FREEFORM tasks"); } if (mRecentsDataChangeListener != null) { @@ -226,7 +226,7 @@ public class RecentTasksProvider implements RecentTasksProviderInterface { return thumbnailData != null ? thumbnailData.thumbnail : null; } - @NotNull + @NonNull @Override public Rect getRecentTaskInsets(int taskId) { ThumbnailData thumbnailData = getRecentTaskThumbnailData(taskId); @@ -252,7 +252,7 @@ public class RecentTasksProvider implements RecentTasksProviderInterface { } @Override - public boolean openTopRunningTask(@NotNull Class recentsActivity, + public boolean openTopRunningTask(@NonNull Class recentsActivity, int displayId) { ActivityManager.RunningTaskInfo[] runningTasks = mActivityManagerWrapper.getRunningTasks( /* filterOnlyVisibleRecents= */false, displayId); diff --git a/src/com/android/car/carlauncher/recents/RecentTasksViewModel.java b/src/com/android/car/carlauncher/recents/RecentTasksViewModel.java index eb66f0da..87c15bb6 100644 --- a/src/com/android/car/carlauncher/recents/RecentTasksViewModel.java +++ b/src/com/android/car/carlauncher/recents/RecentTasksViewModel.java @@ -77,6 +77,9 @@ public class RecentTasksViewModel { private Bitmap mDefaultThumbnail; private boolean isInitialised; private int mDisplayId = DEFAULT_DISPLAY; + private int mWindowWidth; + private int mWindowHeight; + private Rect mWindowInsets; private RecentTasksViewModel() { mDataStore = RecentTasksProvider.getInstance(); @@ -104,7 +107,10 @@ public class RecentTasksViewModel { isInitialised = true; mDataStore.setRecentsDataChangeListener(mRecentsDataChangeListener); mDisplayId = displayId; - createDefaultThumbnail(windowWidth, windowHeight, windowInsets, defaultThumbnailColor); + mWindowWidth = windowWidth; + mWindowHeight = windowHeight; + mWindowInsets = windowInsets; + mDefaultThumbnail = createThumbnail(defaultThumbnailColor); } /** @@ -300,12 +306,20 @@ public class RecentTasksViewModel { /* height= */ bitmap.getHeight() - insets.top - insets.bottom); } - private void createDefaultThumbnail(int width, int height, @NonNull Rect insets, + /** + * @return a new {@link Bitmap} with aspect ratio of the current window and the given + * {@code color}. + */ + public Bitmap createThumbnail(@ColorInt Integer color) { + return createThumbnail(mWindowWidth, mWindowHeight, mWindowInsets, color); + } + + private Bitmap createThumbnail(int width, int height, @NonNull Rect insets, @ColorInt Integer color) { Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawColor(color); - mDefaultThumbnail = cropInsets(bitmap, insets); + return cropInsets(bitmap, insets); } private boolean safeCheckIndex(List list, int index) { diff --git a/src/com/android/car/carlauncher/recents/view/BaseViewHolder.java b/src/com/android/car/carlauncher/recents/view/BaseViewHolder.java new file mode 100644 index 00000000..4cff06ef --- /dev/null +++ b/src/com/android/car/carlauncher/recents/view/BaseViewHolder.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2023 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.car.carlauncher.recents.view; + +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.view.View; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.car.carlauncher.R; + +/** + * Base ViewHolder for Recent tasks. + */ +public class BaseViewHolder extends RecyclerView.ViewHolder { + private final ImageView mThumbnailImageView; + private final ImageView mIconImageView; + + public BaseViewHolder(@NonNull View itemView) { + super(itemView); + mThumbnailImageView = itemView.findViewById(R.id.task_thumbnail); + mIconImageView = itemView.findViewById(R.id.task_icon); + } + + /** + * Sets the {@code icon} and the {@code thumbnail} for the task's view. + */ + public void bind(@Nullable Drawable icon, @Nullable Bitmap thumbnail) { + updateThumbnail(thumbnail); + updateIcon(icon); + } + + /** + * Sets the {@code icon} for the task's view. + */ + public void updateThumbnail(@Nullable Bitmap thumbnail) { + mThumbnailImageView.setImageBitmap(thumbnail); + } + + /** + * Sets the {@code icon} for the task's view. + */ + public void updateIcon(@Nullable Drawable icon) { + mIconImageView.setImageDrawable(icon); + } +} diff --git a/src/com/android/car/carlauncher/recents/view/RecentTasksAdapter.java b/src/com/android/car/carlauncher/recents/view/RecentTasksAdapter.java index e51cda29..4aa55997 100644 --- a/src/com/android/car/carlauncher/recents/view/RecentTasksAdapter.java +++ b/src/com/android/car/carlauncher/recents/view/RecentTasksAdapter.java @@ -16,65 +16,120 @@ package com.android.car.carlauncher.recents.view; +import android.annotation.IntDef; +import android.content.Context; import android.graphics.Bitmap; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; import com.android.car.carlauncher.R; import com.android.car.carlauncher.recents.RecentTasksViewModel; -import org.jetbrains.annotations.NotNull; - +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.List; -public class RecentTasksAdapter extends RecyclerView.Adapter implements +/** + * Adapter that is used to display the list of Recent tasks. + * ViewTypes in this adapter: + * - FIRST_ITEM_VIEW_TYPE: First task has special handling since it is takes up more area. + * - HIDDEN_ITEM_VIEW_TYPE: Hidden ViewHolders are added to/removed from the end to always maintain + * complete pages. + * - DEFAULT_ITEM_VIEW_TYPE: all other view holders that hold a recent task. + */ +public class RecentTasksAdapter extends RecyclerView.Adapter implements RecentTasksViewModel.RecentTasksChangeListener { + @IntDef({RecentsItemViewType.DEFAULT_ITEM_VIEW_TYPE, RecentsItemViewType.FIRST_ITEM_VIEW_TYPE, + RecentsItemViewType.HIDDEN_ITEM_VIEW_TYPE}) + @Retention(RetentionPolicy.SOURCE) + @interface RecentsItemViewType { + int DEFAULT_ITEM_VIEW_TYPE = 0; + int FIRST_ITEM_VIEW_TYPE = 1; + int HIDDEN_ITEM_VIEW_TYPE = 2; + } + private static final byte THUMBNAIL_UPDATED = 0x1; // 00000001 private static final byte ICON_UPDATED = 0x2; // 00000010 private final RecentTasksViewModel mRecentTasksViewModel; private final LayoutInflater mLayoutInflater; private final ItemTouchHelper mItemTouchHelper; - - public RecentTasksAdapter(LayoutInflater layoutInflater, ItemTouchHelper itemTouchHelper) { + private final float mStartSwipeThreshold; + private final int mColumnsPerPage; + private final Drawable mHiddenTaskIcon; + private final Bitmap mHiddenThumbnail; + private int mEmptyViewHolderCount; + private int mSpanCount; + + public RecentTasksAdapter(Context context, LayoutInflater layoutInflater, + ItemTouchHelper itemTouchHelper) { mRecentTasksViewModel = RecentTasksViewModel.getInstance(); mRecentTasksViewModel.addRecentTasksChangeListener(this); mLayoutInflater = layoutInflater; mItemTouchHelper = itemTouchHelper; + mColumnsPerPage = context.getResources().getInteger( + R.integer.config_recents_columns_per_page); + mStartSwipeThreshold = context.getResources().getFloat( + R.dimen.recent_task_start_swipe_threshold); + mHiddenTaskIcon = context.getResources().getDrawable( + R.drawable.recent_task_hidden_icon, /* theme= */ null); + mHiddenThumbnail = mRecentTasksViewModel.createThumbnail( + Color.argb(/* alpha= */ 0, /* red= */ 0, /* green= */ 0, /* blue= */ 0)); } - @NotNull + @NonNull @Override - public TaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new TaskViewHolder(mLayoutInflater.inflate(R.layout.recent_task_view, parent, - /* attachToRoot= */ false), mItemTouchHelper); + public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, + @RecentsItemViewType int viewType) { + switch (viewType) { + case RecentsItemViewType.FIRST_ITEM_VIEW_TYPE: + return new TaskViewHolder(mLayoutInflater.inflate(R.layout.recent_task_view_first, + parent, /* attachToRoot= */ false)); + case RecentsItemViewType.HIDDEN_ITEM_VIEW_TYPE: + return new BaseViewHolder(mLayoutInflater.inflate(R.layout.recent_task_view, parent, + /* attachToRoot= */ false)); + default: + return new TaskViewHolder(mLayoutInflater.inflate(R.layout.recent_task_view, parent, + /* attachToRoot= */ false)); + } } @Override - public void onBindViewHolder(@NonNull TaskViewHolder holder, int position) { - Drawable taskIcon = mRecentTasksViewModel.getRecentTaskIconAt(position); - Bitmap taskThumbnail = mRecentTasksViewModel.getRecentTaskThumbnailAt(position); - boolean isDisabled = mRecentTasksViewModel.isRecentTaskDisabled(position); - View.OnClickListener onClickListener = - isDisabled ? mRecentTasksViewModel.getDisabledTaskClickListener(position) - : new TaskClickListener(position); - holder.bind(taskIcon, taskThumbnail, isDisabled, onClickListener); + public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) { + if (holder instanceof TaskViewHolder) { + TaskViewHolder taskViewHolder = (TaskViewHolder) holder; + Drawable taskIcon = mRecentTasksViewModel.getRecentTaskIconAt(position); + Bitmap taskThumbnail = mRecentTasksViewModel.getRecentTaskThumbnailAt(position); + boolean isDisabled = mRecentTasksViewModel.isRecentTaskDisabled(position); + View.OnClickListener onClickListener = + isDisabled ? mRecentTasksViewModel.getDisabledTaskClickListener(position) + : new TaskClickListener(position); + View.OnTouchListener taskTouchListener = new TaskTouchListener(mStartSwipeThreshold, + mItemTouchHelper, holder); + taskViewHolder.bind(taskIcon, taskThumbnail, isDisabled, onClickListener, + taskTouchListener); + return; + } + holder.bind(mHiddenTaskIcon, mHiddenThumbnail); } @Override - public void onBindViewHolder(@NonNull TaskViewHolder holder, int position, + public void onBindViewHolder(@NonNull BaseViewHolder holder, int position, @NonNull List payloads) { if (payloads.isEmpty()) { super.onBindViewHolder(holder, position, payloads); return; } payloads.forEach(payload -> { - if (payload instanceof Byte updateType) { + if (payload instanceof Byte) { + byte updateType = (Byte) payload; if ((updateType & THUMBNAIL_UPDATED) > 0) { Bitmap taskThumbnail = mRecentTasksViewModel.getRecentTaskThumbnailAt(position); holder.updateThumbnail(taskThumbnail); @@ -89,12 +144,39 @@ public class RecentTasksAdapter extends RecyclerView.Adapter imp @Override public int getItemCount() { - return mRecentTasksViewModel.getRecentTasksSize(); + return mRecentTasksViewModel.getRecentTasksSize() + mEmptyViewHolderCount; + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return RecentsItemViewType.FIRST_ITEM_VIEW_TYPE; + } + if (position >= mRecentTasksViewModel.getRecentTasksSize()) { + return RecentsItemViewType.HIDDEN_ITEM_VIEW_TYPE; + } + return RecentsItemViewType.DEFAULT_ITEM_VIEW_TYPE; + } + + @Override + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + if (recyclerView.getLayoutManager() instanceof GridLayoutManager) { + GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager(); + mSpanCount = layoutManager.getSpanCount(); + } } @Override public void onRecentTasksFetched() { - this.notifyDataSetChanged(); + int tasksCount = mRecentTasksViewModel.getRecentTasksSize(); + if (tasksCount <= 0) { + return; + } + mEmptyViewHolderCount = calculateEmptyItemsNeededToCompletePages( + mRecentTasksViewModel.getRecentTasksSize() - 1, + mSpanCount, mColumnsPerPage); + notifyDataSetChanged(); } @Override @@ -109,13 +191,39 @@ public class RecentTasksAdapter extends RecyclerView.Adapter imp @Override public void onAllRecentTasksRemoved(int countRemoved) { + countRemoved += mEmptyViewHolderCount; + mEmptyViewHolderCount = 0; this.notifyItemRangeRemoved(0, countRemoved); } @Override public void onRecentTaskRemoved(int position) { notifyItemRemoved(position); - notifyItemRangeChanged(position, getItemCount() - position); + notifyItemRangeChanged(position, mRecentTasksViewModel.getRecentTasksSize() - position); + + int newEmptyViewHolderCount = calculateEmptyItemsNeededToCompletePages( + mRecentTasksViewModel.getRecentTasksSize() - 1, + mSpanCount, mColumnsPerPage); + int emptyViewHolderCountChange = newEmptyViewHolderCount - mEmptyViewHolderCount; + if (emptyViewHolderCountChange > 0) { + notifyItemRangeInserted(getItemCount(), + emptyViewHolderCountChange); + } else if (emptyViewHolderCountChange < 0) { + notifyItemRangeRemoved(mRecentTasksViewModel.getRecentTasksSize(), + Math.abs(emptyViewHolderCountChange)); + } + mEmptyViewHolderCount = newEmptyViewHolderCount; + } + + private int calculateEmptyItemsNeededToCompletePages(int listLength, int spanSize, + int colPerPage) { + if (listLength <= 0) { + return 0; + } + + int itemsPerPage = colPerPage * spanSize; + int lastPageItems = (listLength % itemsPerPage); + return lastPageItems == 0 ? 0 : itemsPerPage - lastPageItems; } } diff --git a/src/com/android/car/carlauncher/recents/view/RecentsRecyclerView.java b/src/com/android/car/carlauncher/recents/view/RecentsRecyclerView.java new file mode 100644 index 00000000..3e92bb96 --- /dev/null +++ b/src/com/android/car/carlauncher/recents/view/RecentsRecyclerView.java @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2023 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.car.carlauncher.recents.view; + +import android.app.Activity; +import android.content.Context; +import android.util.AttributeSet; +import android.view.WindowMetrics; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.Px; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.android.car.carlauncher.R; +import com.android.car.carlauncher.recents.RecentTasksViewModel; +import com.android.internal.annotations.VisibleForTesting; + +/** + * RecyclerView that centers the first and last elements of the Recent task list by adding + * appropriate padding. + */ +public class RecentsRecyclerView extends RecyclerView { + private final int mFirstItemWidth; + private final int mColSpacing; + private final int mItemWidth; + private final int mColsPerPage; + private RecentTasksViewModel mRecentTasksViewModel; + private WindowMetrics mWindowMetrics; + + public RecentsRecyclerView(@NonNull Context context) { + this(context, /* attrs= */ null); + } + + public RecentsRecyclerView(@NonNull Context context, + @Nullable AttributeSet attrs) { + this(context, attrs, androidx.recyclerview.R.attr.recyclerViewStyle); + } + + + public RecentsRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + mRecentTasksViewModel = RecentTasksViewModel.getInstance(); + if (context instanceof Activity) { + // needed for testing when using a mock context + mWindowMetrics = ((Activity) context).getWindowManager().getCurrentWindowMetrics(); + } + mFirstItemWidth = getResources().getDimensionPixelSize(R.dimen.recent_task_width_first); + mItemWidth = getResources().getDimensionPixelSize(R.dimen.recent_task_width); + mColSpacing = getResources().getDimensionPixelSize(R.dimen.recent_task_col_space); + mColsPerPage = getResources().getInteger(R.integer.config_recents_columns_per_page); + } + + @VisibleForTesting + public RecentsRecyclerView(@NonNull Context context, RecentTasksViewModel recentTasksViewModel, + WindowMetrics windowMetrics) { + this(context); + mRecentTasksViewModel = recentTasksViewModel; + mWindowMetrics = windowMetrics; + } + + /** + * Resets the RecyclerView's start and end padding based on the Task list size, + * recent task view width and window width where Recents activity is drawn. + */ + public void resetPadding() { + if (mRecentTasksViewModel.getRecentTasksSize() == 0) { + setPadding(/* firstItemPadding= */ 0, /* lastItemPadding= */ 0); + return; + } + int firstItemPadding, lastItemPadding; + firstItemPadding = calculateFirstItemPadding(mWindowMetrics.getBounds().width()); + if (mRecentTasksViewModel.getRecentTasksSize() == 1) { + // only one element is left, center it by adding equal padding + lastItemPadding = firstItemPadding; + } else { + lastItemPadding = calculateLastItemPadding(mWindowMetrics.getBounds().width()); + } + setPadding(/* firstItemPadding= */ firstItemPadding, + /* lastItemPadding= */ lastItemPadding); + } + + @Px + @VisibleForTesting + int calculateFirstItemPadding(@Px int windowWidth) { + // This assumes that RecyclerView's width is same as the windowWidth. This is to add padding + // before RecyclerView or its children is drawn. + return Math.max(0, (windowWidth - (mFirstItemWidth + mColSpacing)) / 2); + } + + @Px + @VisibleForTesting + int calculateLastItemPadding(@Px int windowWidth) { + // This assumes that RecyclerView's width is same as the windowWidth. This is to add padding + // before RecyclerView or its children is drawn. + return Math.max(0, (windowWidth - (mColsPerPage * (mItemWidth + mColSpacing))) / 2); + } + + + /** + * @param firstItemPadding padding set to recyclerView to fit the first item. + * @param lastItemPadding padding set to recyclerView to fit the last item. + */ + private void setPadding(@Px int firstItemPadding, @Px int lastItemPadding) { + boolean isReverseLayout = false; + if (getLayoutManager() instanceof LinearLayoutManager) { + LinearLayoutManager lm = (LinearLayoutManager) getLayoutManager(); + isReverseLayout = lm.getReverseLayout(); + } + boolean shouldBeReversed = isLayoutRtl() ^ isReverseLayout; + setPaddingRelative( + /* start= */ shouldBeReversed ? lastItemPadding : firstItemPadding, + getPaddingTop(), + /* end= */ shouldBeReversed ? firstItemPadding : lastItemPadding, + getPaddingBottom()); + } +} diff --git a/src/com/android/car/carlauncher/recents/view/TaskSnapHelper.java b/src/com/android/car/carlauncher/recents/view/TaskSnapHelper.java new file mode 100644 index 00000000..ec932d42 --- /dev/null +++ b/src/com/android/car/carlauncher/recents/view/TaskSnapHelper.java @@ -0,0 +1,207 @@ +/* + * Copyright (C) 2023 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.car.carlauncher.recents.view; + +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.LayoutManager; +import androidx.recyclerview.widget.SnapHelper; + +/** + * Snaps the first item or to the center of a page of items to the center of the RecyclerView. + */ +public class TaskSnapHelper extends SnapHelper { + private final int mSpanCount; + private final int mColPerPage; + private final int mItemsInPageCount; + private RecyclerView mRecyclerView; + + public TaskSnapHelper(int spanCount, int colPerPage) { + mSpanCount = spanCount; + mColPerPage = colPerPage; + mItemsInPageCount = mColPerPage * mSpanCount; + } + + @Nullable + @Override + public int[] calculateDistanceToFinalSnap(@NonNull LayoutManager layoutManager, + @NonNull View targetView) { + if (mRecyclerView == null) { + return new int[]{0, 0}; + } + int adapterPosition = mRecyclerView.getChildAdapterPosition(targetView); + int childCenter = Integer.MAX_VALUE; + if (adapterPosition == 0) { + childCenter = findCenterOfView(targetView); + } else { + int targetPosition = getChildPosition(adapterPosition, layoutManager, mRecyclerView); + if (targetPosition == RecyclerView.NO_POSITION) { + return new int[]{0, 0}; + } + childCenter = findCenterOfPage(targetPosition, mItemsInPageCount, layoutManager); + } + if (childCenter == Integer.MAX_VALUE) { + return new int[]{0, 0}; + } + int center = layoutManager.getWidth() / 2; + return new int[]{childCenter - center, 0}; + } + + /** + * @return View at {@code 0} adapter position if that view is to be snapped else returns 1st + * view in the page that is to be snapped + */ + @Nullable + @Override + public View findSnapView(LayoutManager layoutManager) { + int childCount = layoutManager.getChildCount(); + if (childCount == 0 || mRecyclerView == null) { + return null; + } + int center = layoutManager.getWidth() / 2; + View closestView = null; + int closestDistance = Integer.MAX_VALUE; + int i = 0; + while (i < childCount) { + View child = layoutManager.getChildAt(i); + if (child == null) { + i++; + continue; + } + int adapterPosition = mRecyclerView.getChildAdapterPosition(child); + if (adapterPosition == RecyclerView.NO_POSITION) { + i++; + continue; + } + int childCenter; + if (adapterPosition == 0) { + childCenter = findCenterOfView(child); + i++; + } else { + int colNum = (int) Math.ceil(adapterPosition / (float) mSpanCount); + // following calculations have -1 to account for the first element not following + // regular grid span + boolean isStartCol = ((colNum - 1) % mColPerPage) == 0; + boolean isFirstInStartCol = ((adapterPosition - 1) % mSpanCount) == 0; + if (isStartCol && isFirstInStartCol) { + childCenter = findCenterOfPage(i, mItemsInPageCount, layoutManager); + i += mItemsInPageCount; + } else { + i++; + continue; + } + } + if (childCenter == Integer.MAX_VALUE) { + continue; + } + int distanceToCenter = Math.abs(center - childCenter); + if (distanceToCenter < closestDistance) { + closestView = child; + closestDistance = distanceToCenter; + } + } + return closestView; + } + + @Override + public int findTargetSnapPosition(LayoutManager layoutManager, int velocityX, int velocityY) { + return RecyclerView.NO_POSITION; + } + + @Override + public void attachToRecyclerView(@Nullable RecyclerView recyclerView) + throws IllegalStateException { + super.attachToRecyclerView(recyclerView); + if (mRecyclerView == recyclerView) { + return; + } + if (mRecyclerView != null) { + mRecyclerView.setOnFlingListener(null); + } + mRecyclerView = recyclerView; + if (mRecyclerView == null) { + return; + } + mRecyclerView.setOnFlingListener(new RecyclerView.OnFlingListener() { + @Override + public boolean onFling(int velocityX, int velocityY) { + if (mRecyclerView == null) { + return false; + } + RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager(); + if (layoutManager == null) { + return false; + } + calculateDistanceToFinalSnapAndScroll(layoutManager, mRecyclerView, + findSnapView(layoutManager)); + return true; + } + }); + } + + private void calculateDistanceToFinalSnapAndScroll(@NonNull LayoutManager layoutManager, + @NonNull RecyclerView recyclerView, @Nullable View targetView) { + if (targetView == null) { + return; + } + int[] snapDistance = calculateDistanceToFinalSnap(layoutManager, targetView); + if (snapDistance == null || (snapDistance[0] == 0 && snapDistance[1] == 0)) { + return; + } + recyclerView.smoothScrollBy(snapDistance[0], snapDistance[1]); + } + + private int getChildPosition(int adapterPosition, @NonNull LayoutManager layoutManager, + @NonNull RecyclerView recyclerView) { + if (adapterPosition == RecyclerView.NO_POSITION) return RecyclerView.NO_POSITION; + for (int i = 0; i < layoutManager.getChildCount(); i++) { + View child = layoutManager.getChildAt(i); + if (child != null && adapterPosition == recyclerView.getChildAdapterPosition(child)) { + return i; + } + } + return RecyclerView.NO_POSITION; + } + + private int findCenterOfView(@NonNull View child) { + int left = child.getLeft(); + int right = child.getRight(); + return (left + right) / 2; + } + + private int findCenterOfPage(int startViewInPageIndex, int numOfViewsInPage, + LayoutManager layoutManager) { + int averageCenter = 0; + int numOfViewsPresent = 0; + for (int i = startViewInPageIndex; i < startViewInPageIndex + numOfViewsInPage; i++) { + View child = layoutManager.getChildAt(i); + if (child == null) { + continue; + } + averageCenter += findCenterOfView(child); + numOfViewsPresent++; + } + if (numOfViewsPresent == 0) { + return Integer.MAX_VALUE; + } + averageCenter = averageCenter / numOfViewsPresent; + return averageCenter; + } +} diff --git a/src/com/android/car/carlauncher/recents/view/TaskTouchHelperCallback.java b/src/com/android/car/carlauncher/recents/view/TaskTouchHelperCallback.java index 876984fe..706554e8 100644 --- a/src/com/android/car/carlauncher/recents/view/TaskTouchHelperCallback.java +++ b/src/com/android/car/carlauncher/recents/view/TaskTouchHelperCallback.java @@ -24,16 +24,14 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.car.carlauncher.recents.RecentTasksViewModel; -import org.jetbrains.annotations.NotNull; - public class TaskTouchHelperCallback extends ItemTouchHelper.SimpleCallback { private final RecentTasksViewModel mRecentTasksViewModel; private final float mSwipeThreshold; public TaskTouchHelperCallback(int dragDirs, int swipeDirs, float swipeThreshold) { super(dragDirs, swipeDirs); - mRecentTasksViewModel = RecentTasksViewModel.getInstance(); mSwipeThreshold = swipeThreshold; + mRecentTasksViewModel = RecentTasksViewModel.getInstance(); } @Override @@ -43,9 +41,9 @@ public class TaskTouchHelperCallback extends ItemTouchHelper.SimpleCallback { } @Override - public boolean onMove(@NotNull RecyclerView recyclerView, - @NotNull RecyclerView.ViewHolder viewHolder, - @NotNull RecyclerView.ViewHolder viewHolder1) { + public boolean onMove(@NonNull RecyclerView recyclerView, + @NonNull RecyclerView.ViewHolder viewHolder, + @NonNull RecyclerView.ViewHolder viewHolder1) { // no op return false; } diff --git a/src/com/android/car/carlauncher/recents/view/TaskViewHolder.java b/src/com/android/car/carlauncher/recents/view/TaskViewHolder.java index 8f3e9c2d..04926a5b 100644 --- a/src/com/android/car/carlauncher/recents/view/TaskViewHolder.java +++ b/src/com/android/car/carlauncher/recents/view/TaskViewHolder.java @@ -23,55 +23,36 @@ import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.RecyclerView; import com.android.car.carlauncher.R; -public class TaskViewHolder extends RecyclerView.ViewHolder { +/** + * Builds onto BaseViewHolder by adding functionality of disabled state and adding click and touch + * listeners. + */ +public class TaskViewHolder extends BaseViewHolder { private final ImageView mThumbnailImageView; private final ImageView mIconImageView; - private final View.OnTouchListener mTaskTouchListener; private final float mDisabledStateAlpha; - public TaskViewHolder(@NonNull View itemView, ItemTouchHelper itemTouchHelper) { + public TaskViewHolder(@NonNull View itemView) { super(itemView); mThumbnailImageView = itemView.findViewById(R.id.task_thumbnail); mIconImageView = itemView.findViewById(R.id.task_icon); mDisabledStateAlpha = itemView.getResources().getFloat( R.dimen.disabled_recent_task_alpha); - float startSwipeThreshold = itemView.getResources().getFloat( - R.dimen.recent_task_start_swipe_threshold); - mTaskTouchListener = new TaskTouchListener(startSwipeThreshold, - itemTouchHelper, /* viewHolder= */ this); } public void bind(@Nullable Drawable icon, @Nullable Bitmap thumbnail, boolean isDisabled, - @Nullable View.OnClickListener onClickListener) { - updateThumbnail(thumbnail); - updateIcon(icon); + @Nullable View.OnClickListener onClickListener, + @Nullable View.OnTouchListener taskTouchListener) { + super.bind(icon, thumbnail); setDisabledAlpha(mThumbnailImageView, isDisabled); setDisabledAlpha(mIconImageView, isDisabled); - setListeners(mThumbnailImageView, mTaskTouchListener, onClickListener); - setListeners(mIconImageView, mTaskTouchListener, onClickListener); - } - - public void updateThumbnail(@Nullable Bitmap thumbnail) { - if (thumbnail == null) { - mThumbnailImageView.setImageDrawable(null); - return; - } - mThumbnailImageView.setImageBitmap(thumbnail); - } - - public void updateIcon(@Nullable Drawable icon) { - if (icon == null) { - mIconImageView.setImageDrawable(null); - return; - } - mIconImageView.setImageDrawable(icon); + setListeners(mThumbnailImageView, taskTouchListener, onClickListener); + setListeners(mIconImageView, taskTouchListener, onClickListener); } private void setListeners(View view, View.OnTouchListener onTouchListener, diff --git a/tests/Android.bp b/tests/Android.bp index 8197b1eb..79f259e0 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -40,7 +40,9 @@ android_test { "android.car.test.utils", "androidx.test.core", "androidx.test.runner", + "androidx.test.rules", "androidx.test.espresso.core", + "androidx.test.espresso.contrib", "androidx.test.espresso.intents", "androidx.test.ext.junit", "hamcrest-library", diff --git a/tests/res/xml/empty_test_activity.xml b/tests/res/xml/empty_test_activity.xml index 8a25c41f..44e80f20 100644 --- a/tests/res/xml/empty_test_activity.xml +++ b/tests/res/xml/empty_test_activity.xml @@ -22,5 +22,8 @@ + android:layout_height="match_parent" + android:background="#3d3d3d" + android:clipToPadding="false" + /> \ No newline at end of file diff --git a/tests/src/com/android/car/carlauncher/recents/view/RecentsRecyclerViewTest.java b/tests/src/com/android/car/carlauncher/recents/view/RecentsRecyclerViewTest.java new file mode 100644 index 00000000..92d703e9 --- /dev/null +++ b/tests/src/com/android/car/carlauncher/recents/view/RecentsRecyclerViewTest.java @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2023 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.car.carlauncher.recents.view; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.graphics.Rect; +import android.testing.TestableContext; +import android.util.LayoutDirection; +import android.view.WindowMetrics; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import com.android.car.carlauncher.R; +import com.android.car.carlauncher.recents.RecentTasksViewModel; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@RunWith(AndroidJUnit4.class) +public class RecentsRecyclerViewTest { + private static final int WINDOW_WIDTH = 1000; + private static final int FIRST_TASK_WIDTH = 800; + private static final int TASK_WIDTH = 300; + private static final int COL_SPACING_BETWEEN_TASKS = 50; + private static final int COL_PER_PAGE = 2; + private RecentsRecyclerView mRecentsRecyclerView; + + @Mock + private RecentTasksViewModel mRecentTasksViewModel; + @Mock + private WindowMetrics mWindowMetrics; + @Mock + private GridLayoutManager mGridLayoutManager; + + @Rule + public final TestableContext mContext = new TestableContext( + InstrumentationRegistry.getInstrumentation().getTargetContext()) { + @Override + public Context createApplicationContext(ApplicationInfo application, int flags) { + return this; + } + }; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + Rect windowBounds = new Rect(/* left= */ 0, /* top= */ 0, + /* right= */ WINDOW_WIDTH, /* bottom= */ 0); + when(mWindowMetrics.getBounds()).thenReturn(windowBounds); + mContext.getOrCreateTestableResources().addOverride(R.dimen.recent_task_width_first, + /* value= */ FIRST_TASK_WIDTH); + mContext.getOrCreateTestableResources().addOverride(R.dimen.recent_task_width, + /* value= */ TASK_WIDTH); + mContext.getOrCreateTestableResources().addOverride(R.dimen.recent_task_col_space, + /* value= */ COL_SPACING_BETWEEN_TASKS); + mContext.getOrCreateTestableResources().addOverride( + R.integer.config_recents_columns_per_page, /* value= */ COL_PER_PAGE); + + mRecentsRecyclerView = new RecentsRecyclerView(mContext, mRecentTasksViewModel, + mWindowMetrics); + } + + @Test + public void resetPadding_setsStartPadding_toZero_whenNoRecentTasksPresent() { + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(0); + + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()).isEqualTo(0); + } + + + @Test + public void resetPadding_setsEndPadding_toZero_whenNoRecentTasksPresent() { + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(0); + + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingEnd()).isEqualTo(0); + } + + @Test + public void resetPadding_setsTheSameStartAndEndPadding_whenOneRecentTaskPresent() { + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(1); + + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()) + .isEqualTo(mRecentsRecyclerView.getPaddingEnd()); + } + + @Test + public void resetPadding_setsStartPadding_toStart_noReverseLayout_noRTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int startPadding = mRecentsRecyclerView.calculateFirstItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()).isEqualTo(startPadding); + } + + @Test + public void resetPadding_setsEndPadding_toEnd_noReverseLayout_noRTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int endPadding = mRecentsRecyclerView.calculateLastItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingEnd()).isEqualTo(endPadding); + } + + @Test + public void resetPadding_setsStartPadding_toEnd_noReverseLayout_RTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.RTL); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int startPadding = mRecentsRecyclerView.calculateFirstItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingEnd()).isEqualTo(startPadding); + } + + @Test + public void resetPadding_setsEndPadding_toStart_noReverseLayout_RTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.RTL); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int endPadding = mRecentsRecyclerView.calculateLastItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()).isEqualTo(endPadding); + } + + @Test + public void resetPadding_setsStartPadding_toEnd_reverseLayout_noRTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(true); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int startPadding = mRecentsRecyclerView.calculateFirstItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingEnd()).isEqualTo(startPadding); + } + + @Test + public void resetPadding_setsEndPadding_toStart_reverseLayout_noRTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(true); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int endPadding = mRecentsRecyclerView.calculateLastItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()).isEqualTo(endPadding); + } + + @Test + public void resetPadding_setsStartPadding_toStart_reverseLayout_RTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int startPadding = mRecentsRecyclerView.calculateFirstItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingStart()).isEqualTo(startPadding); + } + + @Test + public void resetPadding_setsEndPadding_toEnd_reverseLayout_RTL() { + mRecentsRecyclerView.setLayoutDirection(LayoutDirection.LTR); + mRecentsRecyclerView.setLayoutManager(mGridLayoutManager); + when(mGridLayoutManager.getReverseLayout()).thenReturn(false); + when(mRecentTasksViewModel.getRecentTasksSize()).thenReturn(5); + + int endPadding = mRecentsRecyclerView.calculateLastItemPadding(WINDOW_WIDTH); + mRecentsRecyclerView.resetPadding(); + + assertThat(mRecentsRecyclerView.getPaddingEnd()).isEqualTo(endPadding); + } +} diff --git a/tests/src/com/android/car/carlauncher/recents/view/TaskSnapHelperTest.java b/tests/src/com/android/car/carlauncher/recents/view/TaskSnapHelperTest.java new file mode 100644 index 00000000..6dd87cd7 --- /dev/null +++ b/tests/src/com/android/car/carlauncher/recents/view/TaskSnapHelperTest.java @@ -0,0 +1,403 @@ +/* + * Copyright (C) 2023 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.car.carlauncher.recents.view; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; + +import static org.mockito.Mockito.mock; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.Rect; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.test.core.app.ActivityScenario; +import androidx.test.espresso.IdlingRegistry; +import androidx.test.espresso.IdlingResource; +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import com.android.car.carlauncher.TestActivity; +import com.android.car.carlauncher.test.R; + +import org.hamcrest.Description; +import org.hamcrest.TypeSafeDiagnosingMatcher; +import org.hamcrest.core.CombinableMatcher; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@RunWith(AndroidJUnit4.class) +public class TaskSnapHelperTest { + private static final int FIRST_TASK_WIDTH = 800; + private static final int TASK_WIDTH = 300; + private static final boolean IS_REVERSED_LAYOUT = true; + private static final int GRID_LAYOUT_DIRECTION = GridLayoutManager.HORIZONTAL; + private static final int SPAN_COUNT = 2; + private static final int COL_PER_PAGE = 2; + private static final int TIP_OVER_VARIANCE = 5; + // the mid-point between the first task view and first consequent page of task views such that + // the center of first task view is equidistant from the center of the center of the page + private static final int MID_POINT_BETWEEN_FIRST_VIEW_AND_FIRST_PAGE = + FIRST_TASK_WIDTH / 4 + TASK_WIDTH / 2; + private TaskSnapHelper mTaskSnapHelper; + private int mWindowWidth; + @Rule + public ActivityScenarioRule mActivityRule = new ActivityScenarioRule<>( + TestActivity.class); + + @Before + public void setup() { + mActivityRule.getScenario().onActivity( + activity -> activity.setContentView(R.xml.empty_test_activity)); + onView(withId(R.id.list)).check(matches(isDisplayed())); + mActivityRule.getScenario().onActivity(activity -> { + Context testableContext = mock(Context.class); + RecyclerView rv = activity.requireViewById(R.id.list); + GridLayoutManager gridLayoutManager = new GridLayoutManager(testableContext, SPAN_COUNT, + GRID_LAYOUT_DIRECTION, IS_REVERSED_LAYOUT); + gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (position == 0) { + return SPAN_COUNT; + } + return 1; + } + }); + rv.setLayoutManager(gridLayoutManager); + // add padding to make sure the first and last element can be centered + mWindowWidth = + activity.getWindowManager().getCurrentWindowMetrics().getBounds().width(); + rv.setPaddingRelative(TASK_WIDTH, rv.getPaddingTop(), + (mWindowWidth - FIRST_TASK_WIDTH) / 2, + rv.getPaddingBottom()); + rv.setAdapter(new TestAdapter(100)); + }); + + } + + @After + public void tearDown() { + for (IdlingResource idlingResource : IdlingRegistry.getInstance().getResources()) { + IdlingRegistry.getInstance().unregister(idlingResource); + } + if (mActivityRule != null) { + mActivityRule.getScenario().close(); + } + } + + @Test + public void testScrollFromInitialPageToNextPage() { + assertPageInCenter(/* pageNumber= */ 0); + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy(-(MID_POINT_BETWEEN_FIRST_VIEW_AND_FIRST_PAGE + TIP_OVER_VARIANCE), + 0); + }); + + assertPageInCenter(/* pageNumber= */ 1); + } + + @Test + public void testScrollFromFirstPageToNextPage() { + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + rv.smoothScrollBy(-(FIRST_TASK_WIDTH / 2 + TASK_WIDTH), 0); + }); + assertPageInCenter(/* pageNumber= */ 1); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy(-(TASK_WIDTH + TIP_OVER_VARIANCE), 0); + }); + + assertPageInCenter(/* pageNumber= */ 2); + } + + @Test + public void testScrollFromInitialPageStaysOnInitialPage() { + assertPageInCenter(/* pageNumber= */ 0); + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy(-(MID_POINT_BETWEEN_FIRST_VIEW_AND_FIRST_PAGE - TIP_OVER_VARIANCE), + 0); + }); + + assertPageInCenter(/* pageNumber= */ 0); + } + + @Test + public void testScrollFromFirstPageStaysOnSamePage() { + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + rv.smoothScrollBy(-(FIRST_TASK_WIDTH / 2 + TASK_WIDTH), 0); + }); + assertPageInCenter(/* pageNumber= */ 1); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy(-(TASK_WIDTH - TIP_OVER_VARIANCE), 0); + }); + + assertPageInCenter(/* pageNumber= */ 1); + } + + @Test + public void testScrollFromFirstPageToPreviousPage() { + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + rv.smoothScrollBy(-(FIRST_TASK_WIDTH / 2 + TASK_WIDTH), 0); + }); + assertPageInCenter(/* pageNumber= */ 1); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy(MID_POINT_BETWEEN_FIRST_VIEW_AND_FIRST_PAGE + TIP_OVER_VARIANCE, 0); + }); + + assertPageInCenter(/* pageNumber= */ 0); + } + + @Test + public void testScrollFromSecondPageToPreviousPage() { + RecyclerViewIdlingResource.register(mActivityRule.getScenario()); + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + rv.smoothScrollBy(-(FIRST_TASK_WIDTH / 2 + TASK_WIDTH * 3), 0); + }); + assertPageInCenter(/* pageNumber= */ 2); + + mActivityRule.getScenario().onActivity(activity -> { + RecyclerView rv = activity.requireViewById(R.id.list); + mTaskSnapHelper = new TaskSnapHelper(SPAN_COUNT, COL_PER_PAGE); + mTaskSnapHelper.attachToRecyclerView(rv); + rv.smoothScrollBy((TASK_WIDTH + TIP_OVER_VARIANCE), 0); + }); + + assertPageInCenter(/* pageNumber= */ 1); + } + + private static String getViewTextAtPosition(int position) { + return ("test " + position); + } + + /** + * @param pageNumber page that should be checked to be in the center. + * - 0 indicates the item at adapter position 0. + * - 1+ indicates the page with {@code SPAN_COUNT * COL_PER_PAGE} items. + */ + private void assertPageInCenter(int pageNumber) { + if (pageNumber < 0) { + return; + } + int expectedCenter; + if (pageNumber == 0) { + expectedCenter = mWindowWidth / 2; + onView(withText(getViewTextAtPosition(0))).check(matches((new CombinableMatcher<>( + isCompletelyDisplayed())).and(new IsViewInCenterMatcher(expectedCenter)))); + return; + } + int itemsPerPage = SPAN_COUNT * COL_PER_PAGE; + int itemPosition = 1 + (itemsPerPage * (pageNumber - 1)); + + expectedCenter = (mWindowWidth + TASK_WIDTH) / 2; + onView(withText(getViewTextAtPosition(itemPosition++))).check( + matches((new CombinableMatcher<>(isCompletelyDisplayed())) + .and(new IsViewInCenterMatcher(expectedCenter)))); + onView(withText(getViewTextAtPosition(itemPosition++))).check( + matches((new CombinableMatcher<>(isCompletelyDisplayed())) + .and(new IsViewInCenterMatcher(expectedCenter)))); + + expectedCenter = (mWindowWidth - TASK_WIDTH) / 2; + onView(withText(getViewTextAtPosition(itemPosition++))).check( + matches((new CombinableMatcher<>(isCompletelyDisplayed())) + .and(new IsViewInCenterMatcher(expectedCenter)))); + onView(withText(getViewTextAtPosition(itemPosition))).check( + matches((new CombinableMatcher<>(isCompletelyDisplayed())) + .and(new IsViewInCenterMatcher(expectedCenter)))); + } + + private static class TestAdapter extends RecyclerView.Adapter { + private final List mData; + + TestAdapter(int itemCount) { + mData = new ArrayList<>(itemCount); + for (int i = 0; i < itemCount; i++) { + mData.add(getViewTextAtPosition(i)); + } + } + + @NonNull + @Override + public TestViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { + LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); + View view = inflater.inflate(R.xml.test_list_item, viewGroup, + /* attachToRoot= */ false); + return new TestViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull TestViewHolder testViewHolder, int i) { + ViewGroup.LayoutParams layoutParams = testViewHolder.itemView.getLayoutParams(); + if (i == 0) { + layoutParams.width = FIRST_TASK_WIDTH; + } else { + layoutParams.width = TASK_WIDTH; + } + testViewHolder.itemView.setLayoutParams(layoutParams); + testViewHolder.bind(mData.get(i)); + } + + @Override + public int getItemCount() { + return mData.size(); + } + } + + private static class TestViewHolder extends RecyclerView.ViewHolder { + TestViewHolder(View view) { + super(view); + // added different background color for easier debugging + Random random = new Random(); + int color = Color.argb(255, random.nextInt(256), random.nextInt(256), + random.nextInt(256)); + view.setBackgroundColor(color); + } + + void bind(String text) { + ((TextView) itemView.findViewById(R.id.text)).setText(text); + } + } + + public static class RecyclerViewIdlingResource implements IdlingResource, AutoCloseable { + private final RecyclerView mRecyclerView; + private ResourceCallback mResourceCallback; + + public RecyclerViewIdlingResource(RecyclerView rv) { + mRecyclerView = rv; + rv.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, + int newState) { + if (newState == RecyclerView.SCROLL_STATE_IDLE && mResourceCallback != null) { + mResourceCallback.onTransitionToIdle(); + } + } + + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, + int dy) { + } + }); + } + + @Override + public String getName() { + return RecyclerViewIdlingResource.class.getSimpleName(); + } + + @Override + public boolean isIdleNow() { + return mRecyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE; + } + + @Override + public void registerIdleTransitionCallback(ResourceCallback callback) { + mResourceCallback = callback; + } + + @Override + public void close() throws Exception { + IdlingRegistry.getInstance().unregister(this); + } + + public static RecyclerViewIdlingResource register(ActivityScenario scenario) { + final RecyclerViewIdlingResource[] idlingResources = new RecyclerViewIdlingResource[1]; + scenario.onActivity((activity -> idlingResources[0] = new RecyclerViewIdlingResource( + activity.findViewById(R.id.list)))); + IdlingRegistry.getInstance().register(idlingResources[0]); + return idlingResources[0]; + } + } + + private static class IsViewInCenterMatcher extends TypeSafeDiagnosingMatcher { + int mExpectedCenter; + + IsViewInCenterMatcher(int expectedCenter) { + mExpectedCenter = expectedCenter; + } + + @Override + protected boolean matchesSafely(View item, Description mismatchDescription) { + Rect viewPosition = new Rect(); + boolean isViewVisible = item.getGlobalVisibleRect(viewPosition); + if (!isViewVisible) { + mismatchDescription.appendText("view was not visible to the user"); + return false; + } + int centerOfChild = (viewPosition.right + viewPosition.left) / 2; + if (centerOfChild != mExpectedCenter) { + mismatchDescription.appendText("view was off from expected center of ") + .appendValue(mExpectedCenter).appendText(" by ") + .appendValue(mExpectedCenter - centerOfChild); + return false; + } + return true; + } + + @Override + public void describeTo(Description description) { + description.appendText("view's center matches with the expected center: ") + .appendValue(mExpectedCenter); + } + } +} -- cgit v1.2.3 From 2d92da7b948d43bc8493d40c239205de260c1a95 Mon Sep 17 00:00:00 2001 From: Jainam Shah Date: Thu, 20 Apr 2023 16:35:54 -0700 Subject: Fix rotary on Recents Disable snapping when rotary inputs are received. Added FocusParkingView and FocusAreas to jump between recyclerview and clear-all button. Fixes: 277654401 Bug: 271166940 Test: manual, added tests Change-Id: Ib0d582d12913014722f2d3131e406a0bb15b08af --- res/drawable/ic_recent_dismiss.xml | 29 ++++ .../recent_clear_all_button_background.xml | 43 +++++ res/drawable/recent_dismiss_button_background.xml | 40 +++++ res/layout/recent_task_view_inner.xml | 21 ++- res/layout/recents_activity.xml | 52 ++++-- res/values/dimens.xml | 5 +- res/values/overlayable.xml | 10 ++ res/values/styles.xml | 27 ++- .../carlauncher/recents/CarRecentsActivity.java | 20 ++- .../recents/view/DismissTaskClickListener.java | 39 +++++ .../recents/view/RecentTasksAdapter.java | 43 ++++- .../recents/view/RecentsRecyclerView.java | 62 ++++++- .../carlauncher/recents/view/TaskViewHolder.java | 41 ++++- .../recents/view/RecentTasksAdapterTest.java | 175 +++++++++++++++++++ .../recents/view/RecentsRecyclerViewTest.java | 193 ++++++++++++++++++++- 15 files changed, 743 insertions(+), 57 deletions(-) create mode 100644 res/drawable/ic_recent_dismiss.xml create mode 100644 res/drawable/recent_clear_all_button_background.xml create mode 100644 res/drawable/recent_dismiss_button_background.xml create mode 100644 src/com/android/car/carlauncher/recents/view/DismissTaskClickListener.java create mode 100644 tests/src/com/android/car/carlauncher/recents/view/RecentTasksAdapterTest.java diff --git a/res/drawable/ic_recent_dismiss.xml b/res/drawable/ic_recent_dismiss.xml new file mode 100644 index 00000000..59e498ad --- /dev/null +++ b/res/drawable/ic_recent_dismiss.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/res/drawable/recent_clear_all_button_background.xml b/res/drawable/recent_clear_all_button_background.xml new file mode 100644 index 00000000..8126097f --- /dev/null +++ b/res/drawable/recent_clear_all_button_background.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/drawable/recent_dismiss_button_background.xml b/res/drawable/recent_dismiss_button_background.xml new file mode 100644 index 00000000..f7bc1561 --- /dev/null +++ b/res/drawable/recent_dismiss_button_background.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/recent_task_view_inner.xml b/res/layout/recent_task_view_inner.xml index 5ae2dbd2..4ba0832c 100644 --- a/res/layout/recent_task_view_inner.xml +++ b/res/layout/recent_task_view_inner.xml @@ -17,23 +17,34 @@ + \ No newline at end of file diff --git a/res/layout/recents_activity.xml b/res/layout/recents_activity.xml index 97c81abd..a818f6dd 100644 --- a/res/layout/recents_activity.xml +++ b/res/layout/recents_activity.xml @@ -21,31 +21,49 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/recents_background_color"> - -