Merge "Revert "Don't use ProxyActivity when launching from SearchActionItemInfo intent"" into sc-dev
diff --git a/go/quickstep/res/drawable/round_rect_dialog.xml b/go/quickstep/res/drawable/round_rect_dialog.xml
new file mode 100644
index 0000000..bbb7c5b
--- /dev/null
+++ b/go/quickstep/res/drawable/round_rect_dialog.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <corners android:radius="@dimen/modal_dialog_corner_radius" />
+</shape>
diff --git a/go/quickstep/res/layout/niu_actions_confirmation_dialog.xml b/go/quickstep/res/layout/niu_actions_confirmation_dialog.xml
new file mode 100644
index 0000000..db1531a
--- /dev/null
+++ b/go/quickstep/res/layout/niu_actions_confirmation_dialog.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/niu_actions_confirmation_dialog_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:layout_gravity="center">
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="1dp"
+ android:layout_weight="1"/>
+
+ <LinearLayout
+ android:layout_width="@dimen/modal_dialog_width"
+ android:layout_height="wrap_content"
+ android:background="@drawable/round_rect_dialog"
+ android:backgroundTint="?attr/modalDialogBackground"
+ android:orientation="vertical"
+ android:layout_gravity="center"
+ android:paddingTop="@dimen/modal_dialog_padding"
+ android:paddingLeft="@dimen/modal_dialog_padding"
+ android:paddingRight="@dimen/modal_dialog_padding"
+ android:paddingBottom="@dimen/modal_dialog_padding_bottom">
+
+ <TextView
+ style="@style/ModalDialogTitle"
+ android:id="@+id/niu_actions_confirmation_header"
+ android:text="@string/niu_actions_confirmation_title"/>
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="@dimen/modal_dialog_vertical_spacer"/>
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/confirmation_dialog_text_height">
+
+ <TextView
+ style="@style/ModalDialogText"
+ android:id="@+id/niu_actions_confirmation_description"
+ android:text="@string/niu_actions_confirmation_text"/>
+ </ScrollView>
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="@dimen/modal_dialog_vertical_spacer"/>
+
+ <LinearLayout
+ android:id="@+id/niu_actions_confirmation_buttons"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_weight="1"/>
+
+ <Button
+ style="@style/ModalDialogButton"
+ android:id="@+id/niu_actions_confirmation_reject"
+ android:text="@string/niu_actions_confirmation_no"/>
+
+ <Button
+ style="@style/ModalDialogButton"
+ android:id="@+id/niu_actions_confirmation_accept"
+ android:text="@string/niu_actions_confirmation_yes"/>
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="1dp"
+ android:layout_weight="1" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/go/quickstep/res/values-gu/strings.xml b/go/quickstep/res/values-gu/strings.xml
index e9fbdc2..b024475 100644
--- a/go/quickstep/res/values-gu/strings.xml
+++ b/go/quickstep/res/values-gu/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"ઍપ શેર કરો"</string>
<string name="action_listen" msgid="2370304050784689486">"સાંભળો"</string>
- <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
+ <string name="action_translate" msgid="8028378961867277746">"અનુવાદ કરો"</string>
<string name="action_search" msgid="6269564710943755464">"Lens"</string>
</resources>
diff --git a/go/quickstep/res/values-hi/strings.xml b/go/quickstep/res/values-hi/strings.xml
index cdf83db..5238d40 100644
--- a/go/quickstep/res/values-hi/strings.xml
+++ b/go/quickstep/res/values-hi/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"ऐप्लिकेशन शेयर करें"</string>
<string name="action_listen" msgid="2370304050784689486">"सुनें"</string>
- <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
+ <string name="action_translate" msgid="8028378961867277746">"अनुवाद करें"</string>
<string name="action_search" msgid="6269564710943755464">"Google Lens"</string>
</resources>
diff --git a/go/quickstep/res/values-kn/strings.xml b/go/quickstep/res/values-kn/strings.xml
index 1083e84..77668d6 100644
--- a/go/quickstep/res/values-kn/strings.xml
+++ b/go/quickstep/res/values-kn/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"ಆ್ಯಪ್ ಹಂಚಿಕೊಳ್ಳಿ"</string>
<string name="action_listen" msgid="2370304050784689486">"ಆಲಿಸಿ"</string>
- <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
+ <string name="action_translate" msgid="8028378961867277746">"ಅನುವಾದಿಸಿ"</string>
<string name="action_search" msgid="6269564710943755464">"Lens"</string>
</resources>
diff --git a/go/quickstep/res/values-land/dimens.xml b/go/quickstep/res/values-land/dimens.xml
new file mode 100644
index 0000000..5097016
--- /dev/null
+++ b/go/quickstep/res/values-land/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+-->
+
+<resources>
+ <!-- Modal Dialogs -->
+ <dimen name="modal_dialog_width">360dp</dimen>
+ <dimen name="confirmation_dialog_text_height">168dp</dimen>
+</resources>
diff --git a/go/quickstep/res/values-mr/strings.xml b/go/quickstep/res/values-mr/strings.xml
index f1fb72a..e7d2652 100644
--- a/go/quickstep/res/values-mr/strings.xml
+++ b/go/quickstep/res/values-mr/strings.xml
@@ -3,6 +3,6 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_share_drop_target_label" msgid="5804774105974539508">"अॅप शेअर करा"</string>
<string name="action_listen" msgid="2370304050784689486">"ऐका"</string>
- <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
+ <string name="action_translate" msgid="8028378961867277746">"भाषांतर करा"</string>
<string name="action_search" msgid="6269564710943755464">"Lens"</string>
</resources>
diff --git a/go/quickstep/res/values/attrs.xml b/go/quickstep/res/values/attrs.xml
index 03eab50..cdbdc2a 100644
--- a/go/quickstep/res/values/attrs.xml
+++ b/go/quickstep/res/values/attrs.xml
@@ -19,4 +19,6 @@
<attr name="overviewButtonTextColor" format="color" />
<attr name="overviewButtonIconColor" format="color" />
<attr name="overviewButtonBackgroundColor" format="color" />
+ <!-- Modal dialog theming -->
+ <attr name="modalDialogBackground" format="color" />
</resources>
\ No newline at end of file
diff --git a/go/quickstep/res/values/colors.xml b/go/quickstep/res/values/colors.xml
index ae72ef6..8034be2 100644
--- a/go/quickstep/res/values/colors.xml
+++ b/go/quickstep/res/values/colors.xml
@@ -20,4 +20,7 @@
<color name="go_overview_text_color_dark">#F8F9FA</color>
<color name="go_overview_button_color">#70FFFFFF</color>
<color name="go_overview_button_color_dark">#474747</color>
+ <!-- Modal Dialogs -->
+ <color name="go_modal_dialog_background">#FFFFFF</color>
+ <color name="go_modal_dialog_background_dark">#424242</color>
</resources>
diff --git a/go/quickstep/res/values/dimens.xml b/go/quickstep/res/values/dimens.xml
index 55cd138..0a7ac45 100644
--- a/go/quickstep/res/values/dimens.xml
+++ b/go/quickstep/res/values/dimens.xml
@@ -28,4 +28,12 @@
<dimen name="overview_proactive_row_height">0dp</dimen>
<dimen name="overview_proactive_row_bottom_margin">24dp</dimen>
<dimen name="task_corner_radius_override">28dp</dimen>
+
+ <!-- Modal Dialogs -->
+ <dimen name="modal_dialog_width">288dp</dimen>
+ <dimen name="modal_dialog_padding">24dp</dimen>
+ <dimen name="modal_dialog_padding_bottom">8dp</dimen>
+ <dimen name="modal_dialog_vertical_spacer">12dp</dimen>
+ <dimen name="modal_dialog_corner_radius">8dp</dimen>
+ <dimen name="confirmation_dialog_text_height">216dp</dimen>
</resources>
diff --git a/go/quickstep/res/values/strings.xml b/go/quickstep/res/values/strings.xml
index 61c8cd9..6e9e63e 100644
--- a/go/quickstep/res/values/strings.xml
+++ b/go/quickstep/res/values/strings.xml
@@ -11,4 +11,13 @@
<string name="action_translate">Translate</string>
<!-- Label for a button that triggers Search on a screenshot of the current app. [CHAR_LIMIT=40] -->
<string name="action_search">Lens</string>
+ <!-- ******* NIU Actions First-Run Confirmation Dialog ******* -->
+ <!-- Dialog title -->
+ <string name="niu_actions_confirmation_title">Translate or listen to text on screen</string>
+ <!-- Dialog content -->
+ <string name="niu_actions_confirmation_text">Information such as text on your screen, web addresses, and screenshots may be shared with Google.\n\nTo change what information you share, go to <b>Settings > Apps > Default apps > Digital assistant app</b>.</string>
+ <!-- Label for a button that rejects the feature. [CHAR_LIMIT=40] -->
+ <string name="niu_actions_confirmation_no">CANCEL</string>
+ <!-- Label for a button that accepts the feature. [CHAR_LIMIT=40] -->
+ <string name="niu_actions_confirmation_yes">GOT IT</string>
</resources>
diff --git a/go/quickstep/res/values/styles.xml b/go/quickstep/res/values/styles.xml
index ffe8f46..561531b 100644
--- a/go/quickstep/res/values/styles.xml
+++ b/go/quickstep/res/values/styles.xml
@@ -20,12 +20,14 @@
<item name="overviewButtonTextColor">@color/go_overview_text_color</item>
<item name="overviewButtonIconColor">@color/go_overview_text_color</item>
<item name="overviewButtonBackgroundColor">@color/go_overview_button_color</item>
+ <item name="modalDialogBackground">@color/go_modal_dialog_background</item>
</style>
<style name="AppTheme.Dark" parent="@style/LauncherTheme.Dark">
<item name="overviewButtonTextColor">@color/go_overview_text_color_dark</item>
<item name="overviewButtonIconColor">@color/go_overview_text_color_dark</item>
<item name="overviewButtonBackgroundColor">@color/go_overview_button_color_dark</item>
+ <item name="modalDialogBackground">@color/go_modal_dialog_background_dark</item>
</style>
<!-- Overview -->
@@ -56,4 +58,33 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
</style>
+
+ <!-- Modal Dialogs -->
+ <style name="ModalDialogTitle">
+ <item name="android:fontFamily">sans-serif-medium</item>
+ <item name="android:textSize">20sp</item>
+ <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:lineHeight">24dp</item>
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_gravity">center_horizontal</item>
+ </style>
+
+ <style name="ModalDialogText">
+ <item name="android:fontFamily">sans-serif-medium</item>
+ <item name="android:textSize">16sp</item>
+ <item name="android:textColor">?android:attr/textColorSecondary</item>
+ <item name="android:lineHeight">24dp</item>
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_gravity">center_horizontal</item>
+ </style>
+
+ <style name="ModalDialogButton" parent="@style/Widget.AppCompat.Button.Borderless">
+ <item name="android:textSize">14sp</item>
+ <item name="android:textColor">?android:attr/colorAccent</item>
+ <item name="android:lineHeight">20dp</item>
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ </style>
</resources>
\ No newline at end of file
diff --git a/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java b/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
index b823c36..37f5352 100644
--- a/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
+++ b/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
@@ -20,20 +20,31 @@
import static com.android.quickstep.views.OverviewActionsView.DISABLED_ROTATED;
import android.annotation.SuppressLint;
+import android.app.AlertDialog;
import android.app.assist.AssistContent;
import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Color;
import android.graphics.Matrix;
+import android.graphics.drawable.ColorDrawable;
import android.os.SystemClock;
import android.os.UserManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
import androidx.annotation.VisibleForTesting;
+import com.android.launcher3.BaseActivity;
+import com.android.launcher3.BaseDraggingActivity;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
import com.android.quickstep.util.AssistContentRequester;
import com.android.quickstep.views.OverviewActionsView;
import com.android.quickstep.views.TaskThumbnailView;
@@ -53,6 +64,7 @@
public static final String ACTIONS_ERROR_CODE = "niu_actions_app_error_code";
public static final int ERROR_PERMISSIONS_STRUCTURE = 1;
public static final int ERROR_PERMISSIONS_SCREENSHOT = 2;
+ private static final String NIU_ACTIONS_CONFIRMED = "launcher_go.niu_actions_confirmed";
private static final String TAG = "TaskOverlayFactoryGo";
private AssistContentRequester mContentRequester;
@@ -79,6 +91,9 @@
private boolean mAssistStructurePermitted;
private boolean mAssistScreenshotPermitted;
private AssistContentRequester mFactoryContentRequester;
+ private SharedPreferences mSharedPreferences;
+ private String mPreviousAction;
+ private AlertDialog mConfirmationDialog;
private TaskOverlayGo(TaskThumbnailView taskThumbnailView,
AssistContentRequester assistContentRequester) {
@@ -92,6 +107,12 @@
@Override
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix,
boolean rotated) {
+ if (mConfirmationDialog != null && mConfirmationDialog.isShowing()) {
+ // Redraw the dialog in case the layout changed
+ mConfirmationDialog.dismiss();
+ showConfirmationDialog();
+ }
+
getActionsView().updateDisabledFlags(DISABLED_NO_THUMBNAIL, thumbnail == null);
checkSettings();
if (thumbnail == null || TextUtils.isEmpty(mNIUPackageName)) {
@@ -105,6 +126,7 @@
boolean isAllowedByPolicy = mThumbnailView.isRealSnapshot() && !isManagedProfileTask;
getActionsView().setCallbacks(new OverlayUICallbacksGoImpl(isAllowedByPolicy, task));
mTaskPackageName = task.key.getPackageName();
+ mSharedPreferences = Utilities.getPrefs(mApplicationContext);
if (!mAssistStructurePermitted || !mAssistScreenshotPermitted) {
return;
@@ -131,6 +153,12 @@
* Creates and sends an Intent corresponding to the button that was clicked
*/
private void sendNIUIntent(String actionType) {
+ if (!mSharedPreferences.getBoolean(NIU_ACTIONS_CONFIRMED, false)) {
+ mPreviousAction = actionType;
+ showConfirmationDialog();
+ return;
+ }
+
Intent intent = createNIUIntent(actionType);
// Only add and send the image if the appropriate permissions are held
if (mAssistStructurePermitted && mAssistScreenshotPermitted) {
@@ -218,6 +246,35 @@
public void setImageActionsAPI(ImageActionsApi imageActionsApi) {
mImageApi = imageActionsApi;
}
+
+ private void showConfirmationDialog() {
+ BaseDraggingActivity activity = BaseActivity.fromContext(getActionsView().getContext());
+ LayoutInflater inflater = LayoutInflater.from(activity);
+ View view = inflater.inflate(R.layout.niu_actions_confirmation_dialog, /* root */ null);
+
+ Button acceptButton = view.findViewById(R.id.niu_actions_confirmation_accept);
+ acceptButton.setOnClickListener(this::onNiuActionsConfirmationAccept);
+
+ Button rejectButton = view.findViewById(R.id.niu_actions_confirmation_reject);
+ rejectButton.setOnClickListener(this::onNiuActionsConfirmationReject);
+
+ mConfirmationDialog = new AlertDialog.Builder(activity)
+ .setView(view)
+ .create();
+ mConfirmationDialog.getWindow()
+ .setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ mConfirmationDialog.show();
+ }
+
+ private void onNiuActionsConfirmationAccept(View v) {
+ mConfirmationDialog.dismiss();
+ mSharedPreferences.edit().putBoolean(NIU_ACTIONS_CONFIRMED, true).apply();
+ sendNIUIntent(mPreviousAction);
+ }
+
+ private void onNiuActionsConfirmationReject(View v) {
+ mConfirmationDialog.cancel();
+ }
}
/**
diff --git a/go/src/com/android/launcher3/model/WidgetsModel.java b/go/src/com/android/launcher3/model/WidgetsModel.java
index cc5e1cb..f8448da 100644
--- a/go/src/com/android/launcher3/model/WidgetsModel.java
+++ b/go/src/com/android/launcher3/model/WidgetsModel.java
@@ -24,6 +24,7 @@
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.icons.ComponentWithLabelAndIcon;
+import com.android.launcher3.model.data.PackageItemInfo;
import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
@@ -81,4 +82,9 @@
ComponentName providerName) {
return null;
}
+
+ /** Returns {@link PackageItemInfo} of a pending widget. */
+ public static PackageItemInfo newPendingItemInfo(ComponentName provider) {
+ return new PackageItemInfo(provider.getPackageName());
+ }
}
\ No newline at end of file
diff --git a/protos/launcher_atom.proto b/protos/launcher_atom.proto
index 475b5be..6d49d75 100644
--- a/protos/launcher_atom.proto
+++ b/protos/launcher_atom.proto
@@ -141,6 +141,9 @@
ALL_APPS_SEARCH_RESULT_NAVVYSITE = 25;
ALL_APPS_SEARCH_RESULT_TIPS = 26;
ALL_APPS_SEARCH_RESULT_PEOPLE_TILE = 27;
+
+ WIDGETS_BOTTOM_TRAY = 28;
+ WIDGETS_TRAY_PREDICTION = 29;
}
// Main app icons
diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml
index bf9059f..b43d8d1 100644
--- a/quickstep/AndroidManifest.xml
+++ b/quickstep/AndroidManifest.xml
@@ -103,16 +103,10 @@
android:clearTaskOnLaunch="true"
android:exported="false"/>
- <!--
- Activity for gesture nav onboarding.
- It's protected by android.permission.REBOOT to ensure that only system apps can start it
- (setup wizard already has this permission)
- -->
<activity android:name="com.android.quickstep.interaction.GestureSandboxActivity"
android:autoRemoveFromRecents="true"
android:excludeFromRecents="true"
android:screenOrientation="portrait"
- android:permission="android.permission.REBOOT"
android:exported="true">
<intent-filter>
<action android:name="com.android.quickstep.action.GESTURE_SANDBOX"/>
@@ -130,6 +124,8 @@
android:excludeFromRecents="true"
android:screenOrientation="portrait"
android:permission="android.permission.REBOOT"
+ android:theme="@style/AllSetTheme"
+ android:label="@string/allset_title"
android:exported="true">
<intent-filter>
<action android:name="com.android.quickstep.action.GESTURE_ONBOARDING_ALL_SET"/>
diff --git a/quickstep/res/drawable/ic_all_set.xml b/quickstep/res/drawable/ic_all_set.xml
index 656c596..f718b8b 100644
--- a/quickstep/res/drawable/ic_all_set.xml
+++ b/quickstep/res/drawable/ic_all_set.xml
@@ -14,10 +14,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="42dp"
- android:height="42dp"
- android:viewportWidth="42"
- android:viewportHeight="42">
+ android:width="48dp"
+ android:height="48dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
<path
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"
android:fillColor="#FFFFFF"/>
diff --git a/quickstep/res/drawable/task_menu_item_bg.xml b/quickstep/res/drawable/task_menu_item_bg.xml
new file mode 100644
index 0000000..b6a8b90
--- /dev/null
+++ b/quickstep/res/drawable/task_menu_item_bg.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="?android:attr/colorPrimary"/>
+ <corners android:radius="@dimen/task_menu_item_corner_radius"/>
+</shape>
diff --git a/quickstep/res/layout/activity_allset.xml b/quickstep/res/layout/activity_allset.xml
index a6a17e5..e79e57e 100644
--- a/quickstep/res/layout/activity_allset.xml
+++ b/quickstep/res/layout/activity_allset.xml
@@ -20,8 +20,7 @@
android:paddingStart="@dimen/allset_page_margin_horizontal"
android:paddingEnd="@dimen/allset_page_margin_horizontal"
android:layoutDirection="locale"
- android:textDirection="locale"
- android:background="?android:attr/colorBackground">
+ android:textDirection="locale">
<LinearLayout
android:layout_width="match_parent"
@@ -59,13 +58,15 @@
<TextView
android:id="@+id/navigation_settings"
- style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
- android:textSize="14sp"
+ style="@style/TextAppearance.GestureTutorial.LinkText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/hint"
- android:gravity="center_horizontal"
- android:layout_marginBottom="72dp"/>
+ android:gravity="center"
+ android:layout_marginBottom="72dp"
+ android:minHeight="48dp"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/allset_navigation_settings" />
<TextView
android:id="@id/hint"
diff --git a/quickstep/res/layout/task_menu.xml b/quickstep/res/layout/task_menu.xml
index 763e45e..3a47e99 100644
--- a/quickstep/res/layout/task_menu.xml
+++ b/quickstep/res/layout/task_menu.xml
@@ -25,7 +25,7 @@
<TextView
android:id="@+id/task_name"
- android:background="?android:attr/colorPrimary"
+ android:background="@drawable/task_menu_item_bg"
android:textColor="?android:attr/textColorPrimary"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/quickstep/res/layout/task_view_menu_option.xml b/quickstep/res/layout/task_view_menu_option.xml
index 19ca3e3..5978b97 100644
--- a/quickstep/res/layout/task_view_menu_option.xml
+++ b/quickstep/res/layout/task_view_menu_option.xml
@@ -21,7 +21,7 @@
android:orientation="vertical"
android:paddingTop="@dimen/task_card_menu_option_vertical_padding"
android:paddingBottom="@dimen/task_card_menu_option_vertical_padding"
- android:background="?android:attr/colorPrimary"
+ android:background="@drawable/task_menu_item_bg"
android:theme="@style/PopupItem" >
<View
diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml
index dceab09..3c5587c 100644
--- a/quickstep/res/values-az/strings.xml
+++ b/quickstep/res/values-az/strings.xml
@@ -83,7 +83,7 @@
<string name="allset_description" msgid="6350320429953234580">"Telefondan istifadəyə başlamağa hazırsınız"</string>
<string name="allset_navigation_settings" msgid="417773244979225071"><annotation id="link">"Əlçatımlıq üzrə naviqasiya ayarları"</annotation></string>
<string name="action_share" msgid="2648470652637092375">"Paylaşın"</string>
- <string name="action_screenshot" msgid="8171125848358142917">"Ekran şəkli"</string>
+ <string name="action_screenshot" msgid="8171125848358142917">"Skrinşot"</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"Bu əməliyyata tətbiq və ya təşkilatınız tərəfindən icazə verilmir"</string>
<string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Naviqasiya dərsliyi ötürülsün?"</string>
<string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Bunu sonra <xliff:g id="NAME">%1$s</xliff:g> tətbiqində tapa bilərsiniz"</string>
diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml
index e4d9991..8a5a875 100644
--- a/quickstep/res/values-hy/strings.xml
+++ b/quickstep/res/values-hy/strings.xml
@@ -46,9 +46,9 @@
<string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"«Առաջարկվող հավելվածներ» գործառույթն անջատված է"</string>
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Առաջարկվող հավելված՝ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="back_gesture_feedback_swipe_too_far_from_left_edge" msgid="340972404868601012">"Համոզվեք, որ մատը սահեցնում եք էկրանի ձախ եզրից։"</string>
- <string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Սահեցրեք մատն էկրանի ձախ եզրից դեպի կենտրոն և բաց թողեք։"</string>
+ <string name="back_gesture_feedback_cancelled_left_edge" msgid="6671316150388702530">"Մատը սահեցրեք էկրանի ձախ եզրից դեպի կենտրոն և բաց թողեք։"</string>
<string name="back_gesture_feedback_swipe_too_far_from_right_edge" msgid="4306700023773832353">"Համոզվեք, որ մատը սահեցնում եք էկրանի աջ եզրից։"</string>
- <string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Սահեցրեք մատն էկրանի աջ եզրից դեպի կենտրոն և բաց թողեք։"</string>
+ <string name="back_gesture_feedback_cancelled_right_edge" msgid="4951916546256902552">"Մատը սահեցրեք էկրանի աջ եզրից դեպի կենտրոն և բաց թողեք։"</string>
<string name="back_gesture_feedback_complete_with_back_right_follow_up" msgid="2100639504811809267">"Դուք սովորեցիք՝ ինչպես մատը ձախից սահեցնելով հետ գնալ"</string>
<string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Դուք սովորեցիք՝ ինչպես մատը աջից սահեցնելով հետ գնալ։ Այժմ սովորենք՝ ինչպես անցնել մի հավելվածից մյուսը։"</string>
<string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Դուք սովորեցիք հետ գնալու ժեստը։"</string>
diff --git a/quickstep/res/values-night/styles.xml b/quickstep/res/values-night/styles.xml
new file mode 100644
index 0000000..1bd3f5d
--- /dev/null
+++ b/quickstep/res/values-night/styles.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+-->
+<resources>
+
+ <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ <item name="android:enforceNavigationBarContrast">false</item>
+ <item name="android:windowLightStatusBar">false</item>
+ <item name="android:windowBackground">#FF000000</item>
+ </style>
+
+</resources>
\ No newline at end of file
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 60eeaff..1f86d62 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -24,6 +24,7 @@
<!-- Task Menu View -->
<dimen name="task_menu_corner_radius">22dp</dimen>
+ <dimen name="task_menu_item_corner_radius">4dp</dimen>
<dimen name="overview_proactive_row_height">48dp</dimen>
<dimen name="overview_proactive_row_bottom_margin">16dp</dimen>
@@ -113,8 +114,8 @@
<!-- All Set page -->
<dimen name="allset_page_margin_horizontal">40dp</dimen>
- <dimen name="allset_title_margin_top">28dp</dimen>
- <dimen name="allset_title_icon_margin_top">80dp</dimen>
+ <dimen name="allset_title_margin_top">24dp</dimen>
+ <dimen name="allset_title_icon_margin_top">32dp</dimen>
<dimen name="allset_hint_margin_bottom">52dp</dimen>
<dimen name="allset_subtitle_margin_top">24dp</dimen>
diff --git a/quickstep/res/values/styles.xml b/quickstep/res/values/styles.xml
index cfca124..ca1e8c8 100644
--- a/quickstep/res/values/styles.xml
+++ b/quickstep/res/values/styles.xml
@@ -110,6 +110,14 @@
<item name="android:textSize">14sp</item>
</style>
+ <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
+ <item name="android:navigationBarColor">@android:color/transparent</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ <item name="android:enforceNavigationBarContrast">false</item>
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="android:windowBackground">#FFFFFFFF</item>
+ </style>
+
<!--
Can be applied to views to color things like ripples and list highlights the workspace text
color.
diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
index 2498d12..32e2f1a 100644
--- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
@@ -20,10 +20,10 @@
import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.NO_OFFSET;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY;
import android.animation.AnimatorSet;
@@ -181,7 +181,7 @@
@Override
protected void onScreenOff() {
super.onScreenOff();
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
RecentsView recentsView = getOverviewPanel();
recentsView.finishRecentsAnimation(true /* toRecents */, null);
}
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 3b3f0bd..5bb76d6 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -71,6 +71,7 @@
import android.view.SurfaceControl;
import android.view.View;
import android.view.ViewRootImpl;
+import android.view.ViewTreeObserver;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
@@ -256,7 +257,7 @@
/**
* @return ActivityOptions with remote animations that controls how the window of the opening
- * targets are displayed.
+ * targets are displayed.
*/
public ActivityOptionsWrapper getActivityLaunchOptions(View v) {
boolean fromRecents = isLaunchingFromRecents(v, null /* targets */);
@@ -285,7 +286,7 @@
* may not always be correct as we may resolve the opening app to a task when the animation
* starts.
*
- * @param v the view to launch from
+ * @param v the view to launch from
* @param targets apps that are opening/closing
* @return true if the app is launching from recents, false if it most likely is not
*/
@@ -298,9 +299,9 @@
/**
* Composes the animations for a launch from the recents list.
*
- * @param anim the animator set to add to
- * @param v the launching view
- * @param appTargets the apps that are opening/closing
+ * @param anim the animator set to add to
+ * @param v the launching view
+ * @param appTargets the apps that are opening/closing
* @param launcherClosing true if the launcher app is closing
*/
protected void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
@@ -327,9 +328,9 @@
/**
* Compose the animations for a launch from the app icon.
*
- * @param anim the animation to add to
- * @param v the launching view with the icon
- * @param appTargets the list of opening/closing apps
+ * @param anim the animation to add to
+ * @param v the launching view with the icon
+ * @param appTargets the list of opening/closing apps
* @param launcherClosing true if launcher is closing
*/
private void composeIconLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
@@ -367,7 +368,8 @@
public void onAnimationStart(Animator animation) {
mLauncher.addOnResumeCallback(() ->
ObjectAnimator.ofFloat(mLauncher.getDepthController(), DEPTH,
- mLauncher.getStateManager().getState().getDepth(mLauncher)).start());
+ mLauncher.getStateManager().getState().getDepth(
+ mLauncher)).start());
}
});
}
@@ -444,7 +446,7 @@
*
* @param isAppOpening True when this is called when an app is opening.
* False when this is called when an app is closing.
- * @param startDelay Start delay duration.
+ * @param startDelay Start delay duration.
*/
private Pair<AnimatorSet, Runnable> getLauncherContentAnimator(boolean isAppOpening,
int startDelay) {
@@ -452,12 +454,12 @@
Runnable endListener;
float[] alphas = isAppOpening
- ? new float[] {1, 0}
- : new float[] {0, 1};
+ ? new float[]{1, 0}
+ : new float[]{0, 1};
float[] scales = isAppOpening
- ? new float[] {1, mContentScale}
- : new float[] {mContentScale, 1};
+ ? new float[]{1, mContentScale}
+ : new float[]{mContentScale, 1};
if (mLauncher.isInState(ALL_APPS)) {
// All Apps in portrait mode is full screen, so we only animate AllAppsContainerView.
@@ -549,7 +551,7 @@
/**
* Compose recents view alpha and translation Y animation when launcher opens/closes apps.
*
- * @param anim the animator set to add to
+ * @param anim the animator set to add to
* @param alphas the alphas to animate to over time
* @param scales the scale values to animator to over time
* @return listener to run when the animation ends
@@ -702,7 +704,7 @@
float scaledCropWidth = windowCropWidth * scale;
float scaledCropHeight = windowCropHeight * scale;
- float offsetX = (scaledCropWidth - iconWidth) / 2;
+ float offsetX = (scaledCropWidth - iconWidth) / 2;
float offsetY = (scaledCropHeight - iconHeight) / 2;
// Calculate the window position to match the icon position.
@@ -723,7 +725,8 @@
floatingIconBounds.bottom += offsetY;
if (initOnly) {
- floatingView.update(mIconAlpha.value, 255, floatingIconBounds, percent, 0f,
+ // For the init pass, we want full alpha since the window is not yet ready.
+ floatingView.update(1f, 255, floatingIconBounds, percent, 0f,
mWindowRadius.value * scale, true /* isOpening */);
return;
}
@@ -980,7 +983,13 @@
depthController.setSurface(dimLayer);
backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
@Override
+ public void onAnimationStart(Animator animation) {
+ depthController.setIsInLaunchTransition(true);
+ }
+
+ @Override
public void onAnimationEnd(Animator animation) {
+ depthController.setIsInLaunchTransition(false);
depthController.setSurface(null);
if (dimLayer != null) {
new SurfaceControl.Transaction()
@@ -1084,7 +1093,7 @@
/**
* @return Runner that plays when user goes to Launcher
- * ie. pressing home, swiping up from nav bar.
+ * ie. pressing home, swiping up from nav bar.
*/
RemoteAnimationFactory createWallpaperOpenRunner(boolean fromUnlock) {
return new WallpaperOpenLauncherAnimationRunner(mHandler, fromUnlock);
@@ -1216,7 +1225,24 @@
anim.addListener(new AnimationSuccessListener() {
@Override
public void onAnimationStart(Animator animation) {
- InteractionJankMonitorWrapper.begin(mDragLayer, cuj);
+ mDragLayer.getViewTreeObserver().addOnDrawListener(
+ new ViewTreeObserver.OnDrawListener() {
+ boolean mHandled = false;
+
+ @Override
+ public void onDraw() {
+ if (mHandled) {
+ return;
+ }
+ mHandled = true;
+
+ InteractionJankMonitorWrapper.begin(mDragLayer, cuj);
+
+ mDragLayer.post(() ->
+ mDragLayer.getViewTreeObserver().removeOnDrawListener(
+ this));
+ }
+ });
super.onAnimationStart(animation);
}
diff --git a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
index 22a8c9b..3d891e8 100644
--- a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
+++ b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
@@ -15,6 +15,8 @@
*/
package com.android.launcher3.model;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
+
import android.app.prediction.AppTarget;
import android.content.ComponentName;
import android.text.TextUtils;
@@ -73,7 +75,9 @@
if (notAddedWidgets.size() > 0) {
// Even an apps have more than one widgets, we only include one widget.
fixedContainerItems.items.add(
- new PendingAddWidgetInfo(notAddedWidgets.get(0).widgetInfo));
+ new PendingAddWidgetInfo(
+ notAddedWidgets.get(0).widgetInfo,
+ CONTAINER_WIDGETS_PREDICTION));
}
}
}
@@ -90,7 +94,9 @@
new ComponentName(app.getPackageName(), app.getClassName()), app.getUser());
if (widgetItems.containsKey(targetWidget)) {
fixedContainerItems.items.add(
- new PendingAddWidgetInfo(widgetItems.get(targetWidget).widgetInfo));
+ new PendingAddWidgetInfo(widgetItems.get(
+ targetWidget).widgetInfo,
+ CONTAINER_WIDGETS_PREDICTION));
}
}
}
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
index e6333d1..bb8b62d 100644
--- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
+++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
@@ -24,7 +24,9 @@
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.os.IBinder;
+import android.os.SystemProperties;
import android.util.FloatProperty;
+import android.view.CrossWindowBlurListeners;
import android.view.SurfaceControl;
import android.view.View;
import android.view.ViewRootImpl;
@@ -41,6 +43,8 @@
import com.android.systemui.shared.system.BlurUtils;
import com.android.systemui.shared.system.WallpaperManagerCompat;
+import java.util.function.Consumer;
+
/**
* Controls blur and wallpaper zoom, for the Launcher surface only.
*/
@@ -96,11 +100,17 @@
}
};
+ private final Consumer<Boolean> mCrossWindowBlurListener = (enabled) -> {
+ mCrossWindowBlursEnabled = enabled;
+ dispatchTransactionSurface();
+ };
+
private final Launcher mLauncher;
/**
* Blur radius when completely zoomed out, in pixels.
*/
private int mMaxBlurRadius;
+ private boolean mCrossWindowBlursEnabled;
private WallpaperManagerCompat mWallpaperManager;
private SurfaceControl mSurface;
/**
@@ -108,6 +118,10 @@
* @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
*/
private float mDepth;
+ /**
+ * If we're launching and app and should not be blurring the screen for performance reasons.
+ */
+ private boolean mBlurDisabledForAppLaunch;
// Workaround for animating the depth when multiwindow mode changes.
private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false;
@@ -123,6 +137,7 @@
mMaxBlurRadius = mLauncher.getResources().getInteger(R.integer.max_depth_blur_radius);
mWallpaperManager = new WallpaperManagerCompat(mLauncher);
}
+
if (mLauncher.getRootView() != null && mOnAttachListener == null) {
mOnAttachListener = new View.OnAttachStateChangeListener() {
@Override
@@ -132,13 +147,20 @@
if (windowToken != null) {
mWallpaperManager.setWallpaperZoomOut(windowToken, mDepth);
}
+ CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
+ mCrossWindowBlurListener);
}
@Override
public void onViewDetachedFromWindow(View view) {
+ CrossWindowBlurListeners.getInstance().removeListener(mCrossWindowBlurListener);
}
};
mLauncher.getRootView().addOnAttachStateChangeListener(mOnAttachListener);
+ if (mLauncher.getRootView().isAttachedToWindow()) {
+ CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
+ mCrossWindowBlurListener);
+ }
}
}
@@ -194,6 +216,19 @@
}
}
+ /**
+ * If we're launching an app from the home screen.
+ */
+ public void setIsInLaunchTransition(boolean inLaunchTransition) {
+ boolean blurEnabled = SystemProperties.getBoolean("ro.launcher.blur.appLaunch", true);
+ mBlurDisabledForAppLaunch = inLaunchTransition && !blurEnabled;
+ if (!inLaunchTransition) {
+ // Reset depth at the end of the launch animation, so the wallpaper won't be
+ // zoomed out if an app crashes.
+ setDepth(0f);
+ }
+ }
+
private void setDepth(float depth) {
depth = Utilities.boundToRange(depth, 0, 1);
// Round out the depth to dedupe frequent, non-perceptable updates
@@ -220,7 +255,8 @@
boolean isOverview = mLauncher.isInState(LauncherState.OVERVIEW);
boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;
- int blur = opaque || isOverview ? 0 : (int) (mDepth * mMaxBlurRadius);
+ int blur = opaque || isOverview || !mCrossWindowBlursEnabled
+ || mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius);
new SurfaceControl.Transaction()
.setBackgroundBlurRadius(mSurface, blur)
.setOpaque(mSurface, opaque)
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
index 01c9e76..fe5a347 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
@@ -19,7 +19,6 @@
import android.content.Context;
import android.graphics.Color;
-import android.os.SystemProperties;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
@@ -85,8 +84,7 @@
@Override
protected float getDepthUnchecked(Context context) {
- //TODO revert when b/178661709 is fixed
- return SystemProperties.getBoolean("ro.launcher.depth.appLaunch", true) ? 1 : 0;
+ return 1;
}
@Override
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
index 521dd23..86c42ca 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
@@ -25,8 +25,8 @@
import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
import static com.android.launcher3.config.FeatureFlags.ENABLE_ALL_APPS_EDU;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import android.animation.ValueAnimator;
@@ -140,7 +140,7 @@
AnimatorControllerWithResistance.createRecentsResistanceFromOverviewAnim(mLauncher,
builder);
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
builder.addOnFrameCallback(recentsView::redrawLiveTile);
}
@@ -189,7 +189,7 @@
boolean success = interpolatedProgress >= SUCCESS_TRANSITION_PROGRESS
|| (velocity < 0 && fling);
if (success) {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
RecentsView recentsView = mLauncher.getOverviewPanel();
recentsView.switchToScreenshot(null,
() -> recentsView.finishRecentsAnimation(true /* toRecents */, null));
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 4d47ef1..e867f07 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -25,6 +25,7 @@
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
import static com.android.launcher3.anim.Interpolators.DEACCEL;
import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.IGNORE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
@@ -42,9 +43,9 @@
import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
import static com.android.quickstep.GestureState.STATE_END_TARGET_ANIMATION_FINISHED;
import static com.android.quickstep.GestureState.STATE_END_TARGET_SET;
+import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_CANCELED;
import static com.android.quickstep.GestureState.STATE_RECENTS_SCROLLING_FINISHED;
import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
@@ -60,6 +61,7 @@
import android.graphics.Matrix;
import android.graphics.PointF;
import android.graphics.Rect;
+import android.graphics.RectF;
import android.os.Build;
import android.os.IBinder;
import android.os.SystemClock;
@@ -139,7 +141,8 @@
private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>();
private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll;
- protected RecentsAnimationController mRecentsAnimationController;
+ // Null if the recents animation hasn't started yet or has been canceled or finished.
+ protected @Nullable RecentsAnimationController mRecentsAnimationController;
protected RecentsAnimationTargets mRecentsAnimationTargets;
protected T mActivity;
protected Q mRecentsView;
@@ -230,6 +233,7 @@
// Used to control launcher components throughout the swipe gesture.
private AnimatorControllerWithResistance mLauncherTransitionController;
+ private boolean mHasEndedLauncherTransition;
private AnimationFactory mAnimationFactory = (t) -> { };
@@ -324,7 +328,7 @@
mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED | STATE_FINISH_WITH_NO_END,
this::resetStateForAnimationCancel);
- if (!LIVE_TILE.get()) {
+ if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mStateCallback.addChangeListener(STATE_APP_CONTROLLER_RECEIVED | STATE_LAUNCHER_PRESENT
| STATE_SCREENSHOT_VIEW_SHOWN | STATE_CAPTURE_SCREENSHOT,
(b) -> mRecentsView.setRunningTaskHidden(!b));
@@ -378,6 +382,17 @@
activity.runOnceOnStart(this::onLauncherStart);
}
+ // Set up a entire animation lifecycle callback to notify the current recents view when
+ // the animation is canceled
+ mGestureState.runOnceAtState(STATE_RECENTS_ANIMATION_CANCELED, () -> {
+ ThumbnailData snapshot = mGestureState.consumeRecentsAnimationCanceledSnapshot();
+ if (snapshot != null) {
+ mRecentsView.switchToScreenshot(snapshot,
+ () -> mRecentsAnimationController.cleanupScreenshot());
+ mRecentsView.onRecentsAnimationComplete();
+ }
+ });
+
setupRecentsViewUi();
linkRecentsViewScroll();
@@ -476,7 +491,7 @@
}
private void onDeferredActivityLaunch() {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mActivityInterface.switchRunningTaskViewToScreenshot(
null, () -> {
mTaskAnimationManager.finishRunningRecentsAnimation(true /* toHome */);
@@ -603,11 +618,11 @@
/**
* We don't want to change mLauncherTransitionController if mGestureState.getEndTarget() == HOME
- * (it has its own animation).
+ * (it has its own animation) or if we explicitly ended the controller already.
* @return Whether we can create the launcher controller or update its progress.
*/
private boolean canCreateNewOrUpdateExistingLauncherTransitionController() {
- return mGestureState.getEndTarget() != HOME;
+ return mGestureState.getEndTarget() != HOME && !mHasEndedLauncherTransition;
}
@Override
@@ -671,6 +686,9 @@
mRecentsAnimationController.setUseLauncherSystemBarFlags(swipeUpThresholdPassed
|| (quickswitchThresholdPassed && centermostTaskFlags != 0));
mRecentsAnimationController.setSplitScreenMinimized(swipeUpThresholdPassed);
+ // Provide a hint to WM the direction that we will be settling in case the animation
+ // needs to be canceled
+ mRecentsAnimationController.setWillFinishToHome(swipeUpThresholdPassed);
if (swipeUpThresholdPassed) {
mActivity.getSystemUiController().updateUiState(UI_STATE_FULLSCREEN_TASK, 0);
@@ -1217,30 +1235,40 @@
final RecentsOrientedState orientationState = mTaskViewSimulator.getOrientationState();
final int windowRotation = orientationState.getDisplayRotation();
final int homeRotation = orientationState.getRecentsActivityRotation();
+
+ final Matrix homeToWindowPositionMap = new Matrix();
+ final RectF startRect = updateProgressForStartRect(homeToWindowPositionMap, startProgress);
+ // Move the startRect to Launcher space as floatingIconView runs in Launcher
+ final Matrix windowToHomePositionMap = new Matrix();
+ homeToWindowPositionMap.invert(windowToHomePositionMap);
+ windowToHomePositionMap.mapRect(startRect);
+
final Rect destinationBounds = SystemUiProxy.INSTANCE.get(mContext)
.startSwipePipToHome(taskInfo.topActivity,
TaskInfoCompat.getTopActivityInfo(taskInfo),
runningTaskTarget.taskInfo.pictureInPictureParams,
homeRotation,
mDp.hotseatBarSizePx);
- final SwipePipToHomeAnimator swipePipToHomeAnimator = new SwipePipToHomeAnimator(
- mContext,
- runningTaskTarget.taskId,
- taskInfo.topActivity,
- runningTaskTarget.leash.getSurfaceControl(),
- TaskInfoCompat.getPipSourceRectHint(
- runningTaskTarget.taskInfo.pictureInPictureParams),
- TaskInfoCompat.getWindowConfigurationBounds(taskInfo),
- updateProgressForStartRect(new Matrix(), startProgress),
- destinationBounds,
- mRecentsView.getPipCornerRadius(),
- mRecentsView);
+ final SwipePipToHomeAnimator.Builder builder = new SwipePipToHomeAnimator.Builder()
+ .setContext(mContext)
+ .setTaskId(runningTaskTarget.taskId)
+ .setComponentName(taskInfo.topActivity)
+ .setLeash(runningTaskTarget.leash.getSurfaceControl())
+ .setSourceRectHint(TaskInfoCompat.getPipSourceRectHint(
+ runningTaskTarget.taskInfo.pictureInPictureParams))
+ .setAppBounds(TaskInfoCompat.getWindowConfigurationBounds(taskInfo))
+ .setHomeToWindowPositionMap(homeToWindowPositionMap)
+ .setStartBounds(startRect)
+ .setDestinationBounds(destinationBounds)
+ .setCornerRadius(mRecentsView.getPipCornerRadius())
+ .setAttachedView(mRecentsView);
// We would assume home and app window always in the same rotation While homeRotation
// is not ROTATION_0 (which implies the rotation is turned on in launcher settings).
if (homeRotation == ROTATION_0
&& (windowRotation == ROTATION_90 || windowRotation == ROTATION_270)) {
- swipePipToHomeAnimator.setFromRotation(mTaskViewSimulator, windowRotation);
+ builder.setFromRotation(mTaskViewSimulator, windowRotation);
}
+ final SwipePipToHomeAnimator swipePipToHomeAnimator = builder.build();
AnimatorPlaybackController activityAnimationToHome =
homeAnimFactory.createActivityAnimationToHome();
swipePipToHomeAnimator.addAnimatorListener(new AnimatorListenerAdapter() {
@@ -1267,6 +1295,7 @@
mGestureState.setState(STATE_END_TARGET_ANIMATION_FINISHED);
}
});
+ setupWindowAnimation(swipePipToHomeAnimator);
return swipePipToHomeAnimator;
}
@@ -1297,6 +1326,11 @@
HomeAnimationFactory homeAnimationFactory) {
RectFSpringAnim anim =
super.createWindowAnimationToHome(startProgress, homeAnimationFactory);
+ setupWindowAnimation(anim);
+ return anim;
+ }
+
+ private void setupWindowAnimation(RectFSpringAnim anim) {
anim.addOnUpdateListener((v, r, p) -> {
updateSysUiFlags(Math.max(p, mCurrentShift.value));
});
@@ -1314,7 +1348,6 @@
if (mRecentsAnimationTargets != null) {
mRecentsAnimationTargets.addReleaseCheck(anim);
}
- return anim;
}
public void onConsumerAboutToBeSwitched() {
@@ -1338,8 +1371,10 @@
@UiThread
private void resumeLastTask() {
- mRecentsAnimationController.finish(false /* toRecents */, null);
- ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
+ if (mRecentsAnimationController != null) {
+ mRecentsAnimationController.finish(false /* toRecents */, null);
+ ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
+ }
doLogGesture(LAST_TASK, null);
reset();
}
@@ -1395,7 +1430,7 @@
}
private void invalidateHandler() {
- if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
+ if (!ENABLE_QUICKSTEP_LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
|| mGestureState.getEndTarget() != RECENTS) {
mInputConsumerProxy.destroy();
mTaskAnimationManager.setLiveTileCleanUpHandler(null);
@@ -1421,6 +1456,8 @@
}
private void endLauncherTransitionController() {
+ mHasEndedLauncherTransition = true;
+
if (mLauncherTransitionController != null) {
// End the animation, but stay at the same visual progress.
mLauncherTransitionController.getNormalController().dispatchSetInterpolator(
@@ -1440,7 +1477,7 @@
*/
private void resetLauncherListeners() {
// Reset the callback for deferred activity launches
- if (!LIVE_TILE.get()) {
+ if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mActivityInterface.setOnDeferredActivityLaunchCallback(null);
}
mActivity.getRootView().setOnApplyWindowInsetsListener(null);
@@ -1464,12 +1501,9 @@
mStateCallback.setStateOnUiThread(STATE_SCREENSHOT_CAPTURED);
} else {
final int runningTaskId = mGestureState.getRunningTaskId();
- final boolean refreshView = !LIVE_TILE.get() /* refreshView */;
+ final boolean refreshView = !ENABLE_QUICKSTEP_LIVE_TILE.get() /* refreshView */;
boolean finishTransitionPosted = false;
if (mRecentsAnimationController != null) {
- if (LIVE_TILE.get()) {
- mRecentsAnimationController.getController().setWillFinishToHome(true);
- }
// Update the screenshot of the task
if (mTaskSnapshot == null) {
UI_HELPER_EXECUTOR.execute(() -> {
@@ -1523,7 +1557,7 @@
}
private void finishCurrentTransitionToRecents() {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
if (mRecentsAnimationController != null) {
mRecentsAnimationController.detachNavigationBarFromApp(true);
@@ -1577,7 +1611,7 @@
}
endLauncherTransitionController();
mRecentsView.onSwipeUpAnimationSuccess();
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mTaskAnimationManager.setLiveTileCleanUpHandler(mInputConsumerProxy::destroy);
mTaskAnimationManager.enableLiveTileRestartListener();
}
@@ -1650,13 +1684,17 @@
}
} else {
mActivityInterface.onLaunchTaskFailed();
- mRecentsAnimationController.finish(true /* toRecents */, null);
+ if (mRecentsAnimationController != null) {
+ mRecentsAnimationController.finish(true /* toRecents */, null);
+ }
}
}, true /* freezeTaskList */);
} else {
mActivityInterface.onLaunchTaskFailed();
Toast.makeText(mContext, R.string.activity_not_available, LENGTH_SHORT).show();
- mRecentsAnimationController.finish(true /* toRecents */, null);
+ if (mRecentsAnimationController != null) {
+ mRecentsAnimationController.finish(true /* toRecents */, null);
+ }
}
}
mCanceled = false;
diff --git a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
index 906599f..f29d68a 100644
--- a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
@@ -15,6 +15,7 @@
*/
package com.android.quickstep;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.quickstep.SysUINavigationMode.Mode.NO_BUTTON;
import static com.android.quickstep.fallback.RecentsState.BACKGROUND_APP;
import static com.android.quickstep.fallback.RecentsState.DEFAULT;
@@ -105,8 +106,12 @@
@Override
public RecentsView getVisibleRecentsView() {
RecentsActivity activity = getCreatedActivity();
- if (activity != null && activity.hasBeenResumed()) {
- return activity.getOverviewPanel();
+ if (activity != null) {
+ RecentsView recentsView = activity.getOverviewPanel();
+ if (activity.hasBeenResumed() || (ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode()
+ && recentsView.getRunningTaskId() == -1)) {
+ return recentsView;
+ }
}
return null;
}
diff --git a/quickstep/src/com/android/quickstep/GestureState.java b/quickstep/src/com/android/quickstep/GestureState.java
index 6ad7f55..015002f 100644
--- a/quickstep/src/com/android/quickstep/GestureState.java
+++ b/quickstep/src/com/android/quickstep/GestureState.java
@@ -142,6 +142,8 @@
private RemoteAnimationTargetCompat mLastAppearedTaskTarget;
private Set<Integer> mPreviouslyAppearedTaskIds = new HashSet<>();
private int mLastStartedTaskId = -1;
+ private RecentsAnimationController mRecentsAnimationController;
+ private ThumbnailData mRecentsAnimationCanceledSnapshot;
/** The time when the swipe up gesture is triggered. */
private long mSwipeUpStartTimeMs;
@@ -351,13 +353,20 @@
@Override
public void onRecentsAnimationStart(RecentsAnimationController controller,
RecentsAnimationTargets targets) {
+ mRecentsAnimationController = controller;
mStateCallback.setState(STATE_RECENTS_ANIMATION_STARTED);
}
@Override
public void onRecentsAnimationCanceled(ThumbnailData thumbnailData) {
+ mRecentsAnimationCanceledSnapshot = thumbnailData;
mStateCallback.setState(STATE_RECENTS_ANIMATION_CANCELED);
mStateCallback.setState(STATE_RECENTS_ANIMATION_ENDED);
+ if (mRecentsAnimationCanceledSnapshot != null) {
+ // Clean up the screenshot to finalize the recents animation cancel
+ mRecentsAnimationController.cleanupScreenshot();
+ mRecentsAnimationCanceledSnapshot = null;
+ }
}
@Override
@@ -366,6 +375,17 @@
mStateCallback.setState(STATE_RECENTS_ANIMATION_ENDED);
}
+ /**
+ * Returns and clears the canceled animation thumbnail data. This call only returns a value
+ * while STATE_RECENTS_ANIMATION_CANCELED state is being set, and the caller is responsible for
+ * calling {@link RecentsAnimationController#cleanupScreenshot()}.
+ */
+ ThumbnailData consumeRecentsAnimationCanceledSnapshot() {
+ ThumbnailData data = mRecentsAnimationCanceledSnapshot;
+ mRecentsAnimationCanceledSnapshot = null;
+ return data;
+ }
+
void setSwipeUpStartTimeMs(long uptimeMs) {
mSwipeUpStartTimeMs = uptimeMs;
}
diff --git a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
index 30abfbb..fb1391a 100644
--- a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
@@ -21,6 +21,7 @@
import static com.android.launcher3.LauncherState.QUICK_SWITCH;
import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import android.animation.Animator;
@@ -184,16 +185,24 @@
@Override
public RecentsView getVisibleRecentsView() {
Launcher launcher = getVisibleLauncher();
- return launcher != null && launcher.getStateManager().getState().overviewUi
- ? launcher.getOverviewPanel() : null;
+ RecentsView recentsView =
+ launcher != null && launcher.getStateManager().getState().overviewUi
+ ? launcher.getOverviewPanel() : null;
+ if (recentsView == null || (!launcher.hasBeenResumed()
+ && recentsView.getRunningTaskId() == -1)) {
+ // If live tile has ended, return null.
+ return null;
+ }
+ return recentsView;
}
@Nullable
@UiThread
private Launcher getVisibleLauncher() {
Launcher launcher = getCreatedActivity();
- return (launcher != null) && launcher.isStarted() && launcher.hasBeenResumed()
- ? launcher : null;
+ return (launcher != null) && launcher.isStarted()
+ && ((ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode())
+ || launcher.hasBeenResumed()) ? launcher : null;
}
@Override
@@ -202,6 +211,12 @@
if (launcher == null) {
return false;
}
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode()) {
+ RecentsView recentsView = getVisibleRecentsView();
+ if (recentsView == null) {
+ return false;
+ }
+ }
closeOverlay();
launcher.getStateManager().goToState(OVERVIEW,
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 2beef0a..742d02d 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -15,6 +15,7 @@
*/
package com.android.quickstep;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.quickstep.util.ActiveGestureLog.INTENT_EXTRA_LOG_TRACE_ID;
diff --git a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
index 192738f..65847f1 100644
--- a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
+++ b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
@@ -15,8 +15,6 @@
*/
package com.android.quickstep;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
-
import android.annotation.TargetApi;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -61,8 +59,6 @@
super.init(context);
- LIVE_TILE.initialize(context);
-
// Elevate GPU priority for Quickstep and Remote animations.
ThreadedRendererCompat.setContextPriority(
ThreadedRendererCompat.EGL_CONTEXT_PRIORITY_HIGH_IMG);
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index fa5ab1c..9dfcd12 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -23,10 +23,10 @@
import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_PRE_DELAY;
import static com.android.launcher3.Utilities.createHomeIntent;
import static com.android.launcher3.graphics.SysUiScrim.SYSUI_PROGRESS;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL;
import static com.android.quickstep.TaskUtils.taskIsATargetWithMode;
import static com.android.quickstep.TaskViewUtils.createRecentsWindowAnimator;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
@@ -359,7 +359,7 @@
}
public void startHome() {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
RecentsView recentsView = getOverviewPanel();
recentsView.switchToScreenshot(() -> recentsView.finishRecentsAnimation(true,
this::startHomeInternal));
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationController.java b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
index 0ebe13b..53b6675 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationController.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
@@ -156,6 +156,14 @@
}
/**
+ * @see IRecentsAnimationController#cleanupScreenshot()
+ */
+ @UiThread
+ public void cleanupScreenshot() {
+ UI_HELPER_EXECUTOR.execute(() -> mController.cleanupScreenshot());
+ }
+
+ /**
* @see RecentsAnimationControllerCompat#detachNavigationBarFromApp
*/
@UiThread
@@ -172,6 +180,14 @@
}
/**
+ * @see IRecentsAnimationController#setWillFinishToHome(boolean)
+ */
+ @UiThread
+ public void setWillFinishToHome(boolean willFinishToHome) {
+ UI_HELPER_EXECUTOR.execute(() -> mController.setWillFinishToHome(willFinishToHome));
+ }
+
+ /**
* Sets the final surface transaction on a Task. This is used by Launcher to notify the system
* that animating Activity to PiP has completed and the associated task surface should be
* updated accordingly. This should be called before `finish`
diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
index 9731bf1..6c445e1 100644
--- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java
+++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
@@ -15,11 +15,11 @@
*/
package com.android.quickstep;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import android.app.ActivityManager;
import android.content.Context;
@@ -64,7 +64,7 @@
return;
}
BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
- if (LIVE_TILE.get() && activityInterface.isInLiveTileMode()
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && activityInterface.isInLiveTileMode()
&& activityInterface.getCreatedActivity() != null) {
RecentsView recentsView = activityInterface.getCreatedActivity().getOverviewPanel();
if (recentsView != null) {
@@ -139,14 +139,16 @@
@Override
public void onTaskAppeared(RemoteAnimationTargetCompat appearedTaskTarget) {
BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
- if (LIVE_TILE.get() && activityInterface.isInLiveTileMode()
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && activityInterface.isInLiveTileMode()
&& activityInterface.getCreatedActivity() != null) {
RecentsView recentsView =
activityInterface.getCreatedActivity().getOverviewPanel();
if (recentsView != null) {
RemoteAnimationTargetCompat[] apps = new RemoteAnimationTargetCompat[1];
apps[0] = appearedTaskTarget;
- recentsView.launchSideTaskInLiveTileMode(appearedTaskTarget.taskId, apps);
+ recentsView.launchSideTaskInLiveTileMode(appearedTaskTarget.taskId, apps,
+ new RemoteAnimationTargetCompat[0] /* wallpaper */,
+ new RemoteAnimationTargetCompat[0] /* nonApps */);
return;
}
}
diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
index c1c85de..06a3c70 100644
--- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
@@ -18,7 +18,7 @@
import static android.view.Surface.ROTATION_0;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.quickstep.views.OverviewActionsView.DISABLED_NO_THUMBNAIL;
import static com.android.quickstep.views.OverviewActionsView.DISABLED_ROTATED;
@@ -88,6 +88,7 @@
SystemShortcut screenshotShortcut = TaskShortcutFactory.SCREENSHOT
.getShortcut(activity, taskView);
if (screenshotShortcut != null) {
+ screenshotShortcut.setHasFinishRecentsInAction(true);
shortcuts.add(screenshotShortcut);
}
@@ -96,6 +97,7 @@
SystemShortcut modalShortcut = TaskShortcutFactory.MODAL
.getShortcut(activity, taskView);
if (modalShortcut != null) {
+ modalShortcut.setHasFinishRecentsInAction(true);
shortcuts.add(modalShortcut);
}
}
@@ -187,7 +189,7 @@
* @param callback callback to run, after switching to screenshot
*/
public void endLiveTileMode(@NonNull Runnable callback) {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
RecentsView recentsView = mThumbnailView.getTaskView().getRecentsView();
recentsView.switchToScreenshot(
() -> recentsView.finishRecentsAnimation(true /* toRecents */,
diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java
index 3293810..37fda73 100644
--- a/quickstep/src/com/android/quickstep/TaskViewUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java
@@ -34,7 +34,6 @@
import static com.android.launcher3.anim.Interpolators.clampToProgress;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.statehandlers.DepthController.DEPTH;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
@@ -155,7 +154,7 @@
boolean isRunningTask = v.isRunningTask();
TransformParams params = null;
TaskViewSimulator tsv = null;
- if (LIVE_TILE.get() && isRunningTask) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask) {
params = v.getRecentsView().getLiveTileParams();
tsv = v.getRecentsView().getLiveTileTaskViewSimulator();
}
@@ -176,7 +175,8 @@
boolean isQuickSwitch = v.isEndQuickswitchCuj();
v.setEndQuickswitchCuj(false);
- boolean inLiveTileMode = LIVE_TILE.get() && v.getRecentsView().getRunningTaskIndex() != -1;
+ boolean inLiveTileMode =
+ ENABLE_QUICKSTEP_LIVE_TILE.get() && v.getRecentsView().getRunningTaskIndex() != -1;
final RemoteAnimationTargets targets =
new RemoteAnimationTargets(appTargets, wallpaperTargets, nonAppTargets,
inLiveTileMode ? MODE_CLOSING : MODE_OPENING);
@@ -531,7 +531,7 @@
};
}
pa.add(launcherAnim);
- if (LIVE_TILE.get() && recentsView.getRunningTaskIndex() != -1) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && recentsView.getRunningTaskIndex() != -1) {
pa.addOnFrameCallback(recentsView::redrawLiveTile);
}
anim.play(pa.buildAnim());
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index c9b68df..069ed11 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -21,9 +21,9 @@
import static android.view.MotionEvent.ACTION_UP;
import static com.android.launcher3.config.FeatureFlags.ASSISTANT_GIVES_LAUNCHER_FOCUS;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.quickstep.GestureState.DEFAULT_STATE;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP;
@@ -64,6 +64,7 @@
import android.view.accessibility.AccessibilityManager;
import androidx.annotation.BinderThread;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.annotation.WorkerThread;
@@ -303,10 +304,10 @@
private RecentsAnimationDeviceState mDeviceState;
private TaskAnimationManager mTaskAnimationManager;
- private InputConsumer mUncheckedConsumer = InputConsumer.NO_OP;
- private InputConsumer mConsumer = InputConsumer.NO_OP;
+ private @NonNull InputConsumer mUncheckedConsumer = InputConsumer.NO_OP;
+ private @NonNull InputConsumer mConsumer = InputConsumer.NO_OP;
private Choreographer mMainChoreographer;
- private InputConsumer mResetGestureInputConsumer;
+ private @Nullable ResetGestureInputConsumer mResetGestureInputConsumer;
private GestureState mGestureState = DEFAULT_STATE;
private InputMonitorCompat mInputMonitorCompat;
@@ -635,7 +636,7 @@
// launched while device is locked even after exiting direct boot mode (e.g. camera).
return createDeviceLockedInputConsumer(newGestureState);
} else {
- return mResetGestureInputConsumer;
+ return getDefaultInputConsumer();
}
}
@@ -644,7 +645,7 @@
InputConsumer base = canStartSystemGesture
|| previousGestureState.isRecentsAnimationRunning()
? newBaseConsumer(previousGestureState, newGestureState, event)
- : mResetGestureInputConsumer;
+ : getDefaultInputConsumer();
if (mDeviceState.isGesturalNavMode()) {
handleOrientationSetup(base);
}
@@ -698,7 +699,7 @@
}
} else {
if (mDeviceState.isScreenPinningActive()) {
- base = mResetGestureInputConsumer;
+ base = getDefaultInputConsumer();
}
if (mDeviceState.canTriggerOneHandedAction(event)) {
@@ -736,18 +737,19 @@
runningComponent != null && runningComponent.equals(homeComponent);
}
- if (LIVE_TILE.get() && gestureState.getActivityInterface().isInLiveTileMode()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()
+ && gestureState.getActivityInterface().isInLiveTileMode()) {
return createOverviewInputConsumer(
previousGestureState, gestureState, event, forceOverviewInputConsumer);
} else if (gestureState.getRunningTask() == null) {
- return mResetGestureInputConsumer;
+ return getDefaultInputConsumer();
} else if (previousGestureState.isRunningAnimationToLauncher()
|| gestureState.getActivityInterface().isResumed()
|| forceOverviewInputConsumer) {
return createOverviewInputConsumer(
previousGestureState, gestureState, event, forceOverviewInputConsumer);
} else if (mDeviceState.isGestureBlockedActivity(gestureState.getRunningTask())) {
- return mResetGestureInputConsumer;
+ return getDefaultInputConsumer();
} else {
return createOtherActivityInputConsumer(gestureState, event);
}
@@ -775,7 +777,7 @@
return new DeviceLockedInputConsumer(this, mDeviceState, mTaskAnimationManager,
gestureState, mInputMonitorCompat);
} else {
- return mResetGestureInputConsumer;
+ return getDefaultInputConsumer();
}
}
@@ -784,14 +786,15 @@
boolean forceOverviewInputConsumer) {
StatefulActivity activity = gestureState.getActivityInterface().getCreatedActivity();
if (activity == null) {
- return mResetGestureInputConsumer;
+ return getDefaultInputConsumer();
}
if (activity.getRootView().hasWindowFocus()
|| previousGestureState.isRunningAnimationToLauncher()
|| (ASSISTANT_GIVES_LAUNCHER_FOCUS.get()
&& forceOverviewInputConsumer)
- || (LIVE_TILE.get()) && gestureState.getActivityInterface().isInLiveTileMode()) {
+ || (ENABLE_QUICKSTEP_LIVE_TILE.get()
+ && gestureState.getActivityInterface().isInLiveTileMode())) {
return new OverviewInputConsumer(gestureState, activity, mInputMonitorCompat,
false /* startingInActivityBounds */);
} else {
@@ -813,13 +816,7 @@
}
private void reset() {
- if (mResetGestureInputConsumer != null) {
- mConsumer = mUncheckedConsumer = mResetGestureInputConsumer;
- } else {
- // mResetGestureInputConsumer isn't initialized until onUserUnlocked(), so reset to
- // NO_OP until then (we never want these to be null).
- mConsumer = mUncheckedConsumer = InputConsumer.NO_OP;
- }
+ mConsumer = mUncheckedConsumer = getDefaultInputConsumer();
mGestureState = DEFAULT_STATE;
// By default, use batching of the input events, but check receiver before using in the rare
// case that the monitor was disposed before the swipe settled
@@ -828,6 +825,19 @@
}
}
+ /**
+ * Returns the {@link ResetGestureInputConsumer} if user is unlocked, else NO_OP.
+ */
+ private @NonNull InputConsumer getDefaultInputConsumer() {
+ if (mResetGestureInputConsumer != null) {
+ return mResetGestureInputConsumer;
+ } else {
+ // mResetGestureInputConsumer isn't initialized until onUserUnlocked(), so reset to
+ // NO_OP until then (we never want these to be null).
+ return InputConsumer.NO_OP;
+ }
+ }
+
private void preloadOverview(boolean fromInit) {
if (!mDeviceState.isUserUnlocked()) {
return;
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java b/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
index 273d1f6..eca61bb 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
@@ -15,7 +15,7 @@
*/
package com.android.quickstep.fallback;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController;
import com.android.quickstep.RecentsActivity;
@@ -28,7 +28,7 @@
@Override
protected boolean isRecentsInteractive() {
- return mActivity.hasWindowFocus() || (LIVE_TILE.get()
+ return mActivity.hasWindowFocus() || (ENABLE_QUICKSTEP_LIVE_TILE.get()
&& mActivity.getStateManager().getState().hasLiveTile());
}
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
index 4af6338..b0df286 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
@@ -15,7 +15,7 @@
*/
package com.android.quickstep.inputconsumers;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import android.media.AudioManager;
@@ -102,7 +102,7 @@
@Override
public void onKeyEvent(KeyEvent ev) {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
switch (ev.getKeyCode()) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
diff --git a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
index 6f681b3..4472bdc 100644
--- a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
@@ -16,23 +16,22 @@
package com.android.quickstep.interaction;
import android.app.Activity;
-import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
-import android.content.res.TypedArray;
import android.graphics.Color;
-import android.graphics.Typeface;
import android.os.Bundle;
-import android.text.TextPaint;
-import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.View;
+import android.view.View.AccessibilityDelegate;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
import java.net.URISyntaxException;
@@ -48,86 +47,56 @@
private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "suwColorAccentDark";
private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight";
- private int mAccentColor;
-
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_allset);
- setTitle(R.string.allset_title);
- final int mode =
- getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
- mAccentColor = getIntent().getIntExtra(
- mode == Configuration.UI_MODE_NIGHT_YES
- ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE,
- /* defValue= */ Color.BLACK);
+ int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES;
+ int accentColor = getIntent().getIntExtra(
+ isDarkTheme ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE,
+ isDarkTheme ? Color.WHITE : Color.BLACK);
- ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(mAccentColor);
+ ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(accentColor);
- TextView navigationSettings = findViewById(R.id.navigation_settings);
- navigationSettings.setMovementMethod(LinkMovementMethod.getInstance());
- AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
- AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION,
- new AllSetLinkSpan(
- /* context= */ this,
- view -> {
- try {
- startActivityForResult(
- Intent.parseUri(URI_SYSTEM_NAVIGATION_SETTING, 0), 0);
- } catch (URISyntaxException e) {
- Log.e(LOG_TAG, "Failed to parse system nav settings intent", e);
- }
- finish();
- }));
- navigationSettings.setText(
- AnnotationSpan.linkify(getText(R.string.allset_navigation_settings), linkInfo));
+ TextView tv = findViewById(R.id.navigation_settings);
+ tv.setTextColor(accentColor);
+ tv.setOnClickListener(v -> {
+ try {
+ startActivityForResult(
+ Intent.parseUri(URI_SYSTEM_NAVIGATION_SETTING, 0), 0);
+ } catch (URISyntaxException e) {
+ Log.e(LOG_TAG, "Failed to parse system nav settings intent", e);
+ }
+ finish();
+ });
+
+ findViewById(R.id.hint).setAccessibilityDelegate(new SkipButtonAccessibilityDelegate());
}
- @Override
- public void onWindowFocusChanged(boolean hasFocus) {
- super.onWindowFocusChanged(hasFocus);
- if (hasFocus) {
- hideSystemUI();
- }
- }
+ /**
+ * Accessibility delegate which exposes a click event without making the view
+ * clickable in touch mode
+ */
+ private class SkipButtonAccessibilityDelegate extends AccessibilityDelegate {
- private void hideSystemUI() {
- getWindow().getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN);
- getWindow().setNavigationBarColor(Color.TRANSPARENT);
- }
-
- private final class AllSetLinkSpan extends AnnotationSpan {
-
- private final String mFontFamily;
- private final int mTextSize;
-
- AllSetLinkSpan(Context context, View.OnClickListener listener) {
- super(listener);
- TypedArray typedArray =
- context.obtainStyledAttributes(R.style.TextAppearance_GestureTutorial_LinkText,
- R.styleable.AllSetLinkSpan);
- mFontFamily = typedArray.getString(R.styleable.AllSetLinkSpan_android_fontFamily);
- mTextSize =
- typedArray.getDimensionPixelSize(
- R.styleable.AllSetLinkSpan_android_textSize, /* defValue= */ -1);
- typedArray.recycle();
+ @Override
+ public AccessibilityNodeInfo createAccessibilityNodeInfo(View host) {
+ AccessibilityNodeInfo info = super.createAccessibilityNodeInfo(host);
+ info.addAction(AccessibilityAction.ACTION_CLICK);
+ info.setClickable(true);
+ return info;
}
@Override
- public void updateDrawState(TextPaint ds) {
- super.updateDrawState(ds);
- ds.setColor(mAccentColor);
- ds.setTypeface(Typeface.create(mFontFamily, Typeface.NORMAL));
- ds.setUnderlineText(false);
- if (mTextSize != -1) {
- ds.setTextSize(mTextSize);
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ if (action == AccessibilityAction.ACTION_CLICK.getId()) {
+ startActivity(Utilities.createHomeIntent());
+ finish();
+ return true;
}
+ return super.performAccessibilityAction(host, action, args);
}
}
-
}
diff --git a/quickstep/src/com/android/quickstep/interaction/AnnotationSpan.java b/quickstep/src/com/android/quickstep/interaction/AnnotationSpan.java
deleted file mode 100644
index fea5078..0000000
--- a/quickstep/src/com/android/quickstep/interaction/AnnotationSpan.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2018 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.quickstep.interaction;
-
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.text.Annotation;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.style.URLSpan;
-import android.util.Log;
-import android.view.View;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * This class is used to add {@link View.OnClickListener} for the text been wrapped by
- * annotation.
- *
- * Copied from packages/apps/Settings/src/com/android/settings/utils/AnnotationSpan.java.
- */
-public class AnnotationSpan extends URLSpan {
-
- private final View.OnClickListener mClickListener;
-
- AnnotationSpan(View.OnClickListener lsn) {
- super((String) null);
- mClickListener = lsn;
- }
-
- @Override
- public void onClick(View widget) {
- if (mClickListener != null) {
- mClickListener.onClick(widget);
- }
- }
-
- public static CharSequence linkify(CharSequence rawText, LinkInfo... linkInfos) {
- SpannableString msg = new SpannableString(rawText);
- Annotation[] spans = msg.getSpans(0, msg.length(), Annotation.class);
- SpannableStringBuilder builder = new SpannableStringBuilder(msg);
- for (Annotation annotation : spans) {
- final String key = annotation.getValue();
- int start = msg.getSpanStart(annotation);
- int end = msg.getSpanEnd(annotation);
- AnnotationSpan link = null;
- for (LinkInfo linkInfo : linkInfos) {
- if (linkInfo.mAnnotation.equals(key)) {
- link = linkInfo.mCustomizedSpan != null ? linkInfo.mCustomizedSpan
- : new AnnotationSpan(linkInfo.mClickListener);
- break;
- }
- }
- if (link != null) {
- builder.setSpan(link, start, end, msg.getSpanFlags(link));
- }
- }
- return builder;
- }
-
- /**
- * get the text part without having text for link part
- */
- public static CharSequence textWithoutLink(CharSequence encodedText) {
- SpannableString msg = new SpannableString(encodedText);
- Annotation[] spans = msg.getSpans(0, msg.length(), Annotation.class);
- if (spans == null) {
- return encodedText;
- }
- Arrays.sort(spans, Comparator.comparingInt(span -> -msg.getSpanStart(span)));
- StringBuilder msgWithoutLink = new StringBuilder(msg.toString());
- for (Annotation span : spans) {
- msgWithoutLink.delete(msg.getSpanStart(span), msg.getSpanEnd(span));
- }
- return msgWithoutLink.toString();
- }
-
- /** Data class to store the annotation and the click action. */
- public static class LinkInfo {
- public static final String DEFAULT_ANNOTATION = "link";
- private static final String TAG = "AnnotationSpan.LinkInfo";
- private final String mAnnotation;
- private final Boolean mActionable;
- private final View.OnClickListener mClickListener;
- private final AnnotationSpan mCustomizedSpan;
-
- public LinkInfo(String annotation, View.OnClickListener listener) {
- mAnnotation = annotation;
- mClickListener = listener;
- mActionable = true; // assume actionable
- mCustomizedSpan = null;
- }
-
- public LinkInfo(String annotation, AnnotationSpan customizedSpan) {
- mAnnotation = annotation;
- mClickListener = null;
- mActionable = customizedSpan != null;
- mCustomizedSpan = customizedSpan;
- }
-
- public LinkInfo(Context context, String annotation, Intent intent) {
- mAnnotation = annotation;
- mCustomizedSpan = null;
- if (intent != null) {
- mActionable = context.getPackageManager().resolveActivity(intent, 0) != null;
- } else {
- mActionable = false;
- }
- if (mActionable) {
- mClickListener =
- view -> {
- try {
- context.startActivity(intent);
- } catch (ActivityNotFoundException e) {
- Log.w(TAG, "Activity was not found for intent, " + intent);
- }
- };
- } else {
- mClickListener = null;
- }
- }
-
- public boolean isActionable() {
- return mActionable;
- }
- }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
index cf523d0..bc49133 100644
--- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
@@ -18,6 +18,7 @@
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
@@ -122,9 +123,9 @@
mCurrentTutorialStep = mTutorialSteps[mCurrentStep];
mFragment = TutorialFragment.newInstance(mCurrentTutorialStep);
getSupportFragmentManager().beginTransaction()
- .replace(R.id.gesture_tutorial_fragment_container, mFragment)
- .runOnCommit(() -> mFragment.onAttachedToWindow())
- .commit();
+ .replace(R.id.gesture_tutorial_fragment_container, mFragment)
+ .runOnCommit(() -> mFragment.onAttachedToWindow())
+ .commit();
mCurrentStep++;
}
@@ -141,21 +142,33 @@
private TutorialType[] getTutorialSteps(Bundle extras) {
TutorialType[] defaultSteps = new TutorialType[] {TutorialType.LEFT_EDGE_BACK_NAVIGATION};
+ mCurrentStep = 1;
+ mNumSteps = 1;
if (extras == null || !extras.containsKey(KEY_TUTORIAL_STEPS)) {
return defaultSteps;
}
- String[] tutorialStepNames = extras.getStringArray(KEY_TUTORIAL_STEPS);
+ Object savedSteps = extras.get(KEY_TUTORIAL_STEPS);
int currentStep = extras.getInt(KEY_CURRENT_STEP, -1);
+ String[] savedStepsNames;
- if (tutorialStepNames == null) {
+ if (savedSteps instanceof String) {
+ savedStepsNames = TextUtils.isEmpty((String) savedSteps)
+ ? null : ((String) savedSteps).split(",");
+ } else if (savedSteps instanceof String[]) {
+ savedStepsNames = (String[]) savedSteps;
+ } else {
return defaultSteps;
}
- TutorialType[] tutorialSteps = new TutorialType[tutorialStepNames.length];
- for (int i = 0; i < tutorialStepNames.length; i++) {
- tutorialSteps[i] = TutorialType.valueOf(tutorialStepNames[i]);
+ if (savedStepsNames == null) {
+ return defaultSteps;
+ }
+
+ TutorialType[] tutorialSteps = new TutorialType[savedStepsNames.length];
+ for (int i = 0; i < savedStepsNames.length; i++) {
+ tutorialSteps[i] = TutorialType.valueOf(savedStepsNames[i]);
}
mCurrentStep = Math.max(currentStep, 1);
diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
index 719cb0a..6575996 100644
--- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
+++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
@@ -130,7 +130,8 @@
info.getAttribute().getNumber() /* origin */,
getCardinality(info) /* cardinality */,
info.getWidget().getSpanX(),
- info.getWidget().getSpanY());
+ info.getWidget().getSpanY(),
+ getFeatures(info));
}
/**
@@ -151,6 +152,7 @@
private Optional<ToState> mToState = Optional.empty();
private Optional<String> mEditText = Optional.empty();
private SliceItem mSliceItem;
+ private LauncherAtom.Slice mSlice;
StatsCompatLogger(Context context) {
mContext = context;
@@ -193,7 +195,7 @@
@Override
public StatsLogger withContainerInfo(ContainerInfo containerInfo) {
checkState(mItemInfo == DEFAULT_ITEM_INFO,
- "ItemInfo and ContainerInfo are mutual exclusive; cannot log both.");
+ "ItemInfo and ContainerInfo are mutual exclusive; cannot log both.");
this.mContainerInfo = Optional.of(containerInfo);
return this;
}
@@ -218,9 +220,21 @@
@Override
public StatsLogger withSliceItem(@NonNull SliceItem sliceItem) {
+ checkState(mItemInfo == DEFAULT_ITEM_INFO && mSlice == null,
+ "ItemInfo, Slice and SliceItem are mutual exclusive; cannot set more than one"
+ + " of them.");
this.mSliceItem = checkNotNull(sliceItem, "expected valid sliceItem but received null");
- checkState(mItemInfo == DEFAULT_ITEM_INFO,
- "ItemInfo and SliceItem are mutual exclusive; cannot log both.");
+ return this;
+ }
+
+ @Override
+ public StatsLogger withSlice(LauncherAtom.Slice slice) {
+ checkState(mItemInfo == DEFAULT_ITEM_INFO && mSliceItem == null,
+ "ItemInfo, Slice and SliceItem are mutual exclusive; cannot set more than one"
+ + " of them.");
+ checkNotNull(slice, "expected valid slice but received null");
+ checkNotNull(slice.getUri(), "expected valid slice uri but received null");
+ this.mSlice = slice;
return this;
}
@@ -231,13 +245,16 @@
}
LauncherAppState appState = LauncherAppState.getInstanceNoCreate();
- if (mSliceItem != null) {
+ if (mSlice == null && mSliceItem != null) {
+ mSlice = LauncherAtom.Slice.newBuilder().setUri(
+ mSliceItem.getSlice().getUri().toString()).build();
+ }
+
+ if (mSlice != null) {
Executors.MODEL_EXECUTOR.execute(
() -> {
LauncherAtom.ItemInfo.Builder itemInfoBuilder =
- LauncherAtom.ItemInfo.newBuilder().setSlice(
- LauncherAtom.Slice.newBuilder().setUri(
- mSliceItem.getSlice().getUri().toString()));
+ LauncherAtom.ItemInfo.newBuilder().setSlice(mSlice);
mContainerInfo.ifPresent(itemInfoBuilder::setContainerInfo);
write(event, applyOverwrites(itemInfoBuilder.build()));
});
@@ -349,15 +366,12 @@
atomInfo.getFolderIcon().getFromLabelState().getNumber() /* fromState */,
atomInfo.getFolderIcon().getToLabelState().getNumber() /* toState */,
atomInfo.getFolderIcon().getLabelInfo() /* edittext */,
- getCardinality(atomInfo) /* cardinality */);
+ getCardinality(atomInfo) /* cardinality */,
+ getFeatures(atomInfo) /* features */);
}
}
private static int getCardinality(LauncherAtom.ItemInfo info) {
- // TODO(b/187734511): Implement a unified solution for 1x1 widgets in folders/hotseat.
- if (info.getItemCase().equals(LauncherAtom.ItemInfo.ItemCase.WIDGET)) {
- return info.getWidget().getWidgetFeatures();
- }
switch (info.getContainerInfo().getContainerCase()) {
case PREDICTED_HOTSEAT_CONTAINER:
return info.getContainerInfo().getPredictedHotseatContainer().getCardinality();
@@ -498,6 +512,13 @@
}
}
+ private static int getFeatures(LauncherAtom.ItemInfo info) {
+ if (info.getItemCase().equals(LauncherAtom.ItemInfo.ItemCase.WIDGET)) {
+ return info.getWidget().getWidgetFeatures();
+ }
+ return 0;
+ }
+
/**
* Interface to get stats log while it is dispatched to the system
diff --git a/quickstep/src/com/android/quickstep/util/NavigationModeFeatureFlag.java b/quickstep/src/com/android/quickstep/util/NavigationModeFeatureFlag.java
deleted file mode 100644
index 60c7add..0000000
--- a/quickstep/src/com/android/quickstep/util/NavigationModeFeatureFlag.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2021 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.quickstep.util;
-
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-
-import android.content.Context;
-
-import com.android.quickstep.SysUINavigationMode;
-
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-
-/** A feature flag that listens to navigation mode changes. */
-public class NavigationModeFeatureFlag implements
- SysUINavigationMode.NavigationModeChangeListener {
-
- public static final NavigationModeFeatureFlag LIVE_TILE = new NavigationModeFeatureFlag(
- ENABLE_QUICKSTEP_LIVE_TILE::get, mode -> mode.hasGestures);
-
- private final Supplier<Boolean> mBasePredicate;
- private final Predicate<SysUINavigationMode.Mode> mModePredicate;
- private boolean mSupported;
-
- private NavigationModeFeatureFlag(Supplier<Boolean> basePredicate,
- Predicate<SysUINavigationMode.Mode> modePredicate) {
- mBasePredicate = basePredicate;
- mModePredicate = modePredicate;
- }
-
- public boolean get() {
- return mBasePredicate.get() && mSupported;
- }
-
- public void initialize(Context context) {
- onNavigationModeChanged(SysUINavigationMode.INSTANCE.get(context).getMode());
- SysUINavigationMode.INSTANCE.get(context).addModeChangeListener(this);
- }
-
- @Override
- public void onNavigationModeChanged(SysUINavigationMode.Mode newMode) {
- mSupported = mModePredicate.test(newMode);
- }
-}
diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
index 67a635b..7488649 100644
--- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
@@ -56,7 +56,9 @@
private final ComponentName mComponentName;
private final SurfaceControl mLeash;
private final Rect mAppBounds = new Rect();
+ private final Matrix mHomeToWindowPositionMap = new Matrix();
private final Rect mStartBounds = new Rect();
+ private final RectF mCurrentBoundsF = new RectF();
private final Rect mCurrentBounds = new Rect();
private final Rect mDestinationBounds = new Rect();
private final PipSurfaceTransactionHelper mSurfaceTransactionHelper;
@@ -66,10 +68,9 @@
private final Rect mSourceHintRectInsets;
private final Rect mSourceInsets = new Rect();
- /** for rotation via {@link #setFromRotation(TaskViewSimulator, int)} */
- private @RecentsOrientedState.SurfaceRotation int mFromRotation = Surface.ROTATION_0;
+ /** for rotation calculations */
+ private final @RecentsOrientedState.SurfaceRotation int mFromRotation;
private final Rect mDestinationBoundsTransformed = new Rect();
- private final Rect mDestinationBoundsAnimation = new Rect();
/**
* Flag to avoid the double-end problem since the leash would have been released
@@ -91,31 +92,39 @@
* @param leash {@link SurfaceControl} this animator operates on
* @param sourceRectHint See the definition in {@link android.app.PictureInPictureParams}
* @param appBounds Bounds of the application, sourceRectHint is based on this bounds
+ * @param homeToWindowPositionMap {@link Matrix} to map a Rect from home to window space
* @param startBounds Bounds of the application when this animator starts. This can be
* different from the appBounds if user has swiped a certain distance and
* Launcher has performed transform on the leash.
* @param destinationBounds Bounds of the destination this animator ends to
+ * @param fromRotation From rotation if different from final rotation, ROTATION_0 otherwise
+ * @param destinationBoundsTransformed Destination bounds in window space
* @param cornerRadius Corner radius in pixel value for PiP window
+ * @param view Attached view for logging purpose
*/
- public SwipePipToHomeAnimator(@NonNull Context context,
+ private SwipePipToHomeAnimator(@NonNull Context context,
int taskId,
@NonNull ComponentName componentName,
@NonNull SurfaceControl leash,
@Nullable Rect sourceRectHint,
@NonNull Rect appBounds,
+ @NonNull Matrix homeToWindowPositionMap,
@NonNull RectF startBounds,
@NonNull Rect destinationBounds,
+ @RecentsOrientedState.SurfaceRotation int fromRotation,
+ @NonNull Rect destinationBoundsTransformed,
int cornerRadius,
@NonNull View view) {
- super(startBounds, new RectF(destinationBounds), context);
+ super(startBounds, new RectF(destinationBoundsTransformed), context);
mTaskId = taskId;
mComponentName = componentName;
mLeash = leash;
mAppBounds.set(appBounds);
+ mHomeToWindowPositionMap.set(homeToWindowPositionMap);
startBounds.round(mStartBounds);
mDestinationBounds.set(destinationBounds);
- mDestinationBoundsTransformed.set(mDestinationBounds);
- mDestinationBoundsAnimation.set(mDestinationBounds);
+ mFromRotation = fromRotation;
+ mDestinationBoundsTransformed.set(destinationBoundsTransformed);
mSurfaceTransactionHelper = new PipSurfaceTransactionHelper(cornerRadius);
if (sourceRectHint != null && (sourceRectHint.width() < destinationBounds.width()
@@ -191,37 +200,13 @@
addOnUpdateListener(this::onAnimationUpdate);
}
- /** sets the from rotation if it's different from the target rotation. */
- public void setFromRotation(TaskViewSimulator taskViewSimulator,
- @RecentsOrientedState.SurfaceRotation int fromRotation) {
- if (fromRotation != Surface.ROTATION_90 && fromRotation != Surface.ROTATION_270) {
- Log.wtf(TAG, "Not a supported rotation, rotation=" + fromRotation);
- return;
- }
- mFromRotation = fromRotation;
- final Matrix matrix = new Matrix();
- taskViewSimulator.applyWindowToHomeRotation(matrix);
-
- // map the destination bounds into window space. mDestinationBounds is always calculated
- // in the final home space and the animation runs in original window space.
- final RectF transformed = new RectF(mDestinationBounds);
- matrix.mapRect(transformed, new RectF(mDestinationBounds));
- transformed.round(mDestinationBoundsTransformed);
-
- // set the animation destination bounds for RectEvaluator calculation.
- // bounds and insets are calculated as if the transition is from mAppBounds to
- // mDestinationBoundsAnimation, separated from rotate / scale / position.
- mDestinationBoundsAnimation.set(mAppBounds.left, mAppBounds.top,
- mAppBounds.left + mDestinationBounds.width(),
- mAppBounds.top + mDestinationBounds.height());
- }
-
private void onAnimationUpdate(@Nullable AppCloseConfig values, RectF currentRect,
float progress) {
if (mHasAnimationEnded) return;
final SurfaceControl.Transaction tx =
PipSurfaceTransactionHelper.newSurfaceControlTransaction();
- onAnimationUpdate(tx, currentRect, progress);
+ mHomeToWindowPositionMap.mapRect(mCurrentBoundsF, currentRect);
+ onAnimationUpdate(tx, mCurrentBoundsF, progress);
tx.apply();
}
@@ -309,6 +294,108 @@
return new RotatedPosition(degree, positionX, positionY);
}
+ /** Builder class for {@link SwipePipToHomeAnimator} */
+ public static class Builder {
+ private Context mContext;
+ private int mTaskId;
+ private ComponentName mComponentName;
+ private SurfaceControl mLeash;
+ private Rect mSourceRectHint;
+ private Rect mAppBounds;
+ private Matrix mHomeToWindowPositionMap;
+ private RectF mStartBounds;
+ private Rect mDestinationBounds;
+ private int mCornerRadius;
+ private View mAttachedView;
+ private @RecentsOrientedState.SurfaceRotation int mFromRotation = Surface.ROTATION_0;
+ private final Rect mDestinationBoundsTransformed = new Rect();
+
+ public Builder setContext(Context context) {
+ mContext = context;
+ return this;
+ }
+
+ public Builder setTaskId(int taskId) {
+ mTaskId = taskId;
+ return this;
+ }
+
+ public Builder setComponentName(ComponentName componentName) {
+ mComponentName = componentName;
+ return this;
+ }
+
+ public Builder setLeash(SurfaceControl leash) {
+ mLeash = leash;
+ return this;
+ }
+
+ public Builder setSourceRectHint(Rect sourceRectHint) {
+ mSourceRectHint = new Rect(sourceRectHint);
+ return this;
+ }
+
+ public Builder setAppBounds(Rect appBounds) {
+ mAppBounds = new Rect(appBounds);
+ return this;
+ }
+
+ public Builder setHomeToWindowPositionMap(Matrix homeToWindowPositionMap) {
+ mHomeToWindowPositionMap = new Matrix(homeToWindowPositionMap);
+ return this;
+ }
+
+ public Builder setStartBounds(RectF startBounds) {
+ mStartBounds = new RectF(startBounds);
+ return this;
+ }
+
+ public Builder setDestinationBounds(Rect destinationBounds) {
+ mDestinationBounds = new Rect(destinationBounds);
+ return this;
+ }
+
+ public Builder setCornerRadius(int cornerRadius) {
+ mCornerRadius = cornerRadius;
+ return this;
+ }
+
+ public Builder setAttachedView(View attachedView) {
+ mAttachedView = attachedView;
+ return this;
+ }
+
+ public Builder setFromRotation(TaskViewSimulator taskViewSimulator,
+ @RecentsOrientedState.SurfaceRotation int fromRotation) {
+ if (fromRotation != Surface.ROTATION_90 && fromRotation != Surface.ROTATION_270) {
+ Log.wtf(TAG, "Not a supported rotation, rotation=" + fromRotation);
+ return this;
+ }
+ final Matrix matrix = new Matrix();
+ taskViewSimulator.applyWindowToHomeRotation(matrix);
+
+ // map the destination bounds into window space. mDestinationBounds is always calculated
+ // in the final home space and the animation runs in original window space.
+ final RectF transformed = new RectF(mDestinationBounds);
+ matrix.mapRect(transformed, new RectF(mDestinationBounds));
+ transformed.round(mDestinationBoundsTransformed);
+
+ mFromRotation = fromRotation;
+ return this;
+ }
+
+ public SwipePipToHomeAnimator build() {
+ if (mDestinationBoundsTransformed.isEmpty()) {
+ mDestinationBoundsTransformed.set(mDestinationBounds);
+ }
+ return new SwipePipToHomeAnimator(mContext, mTaskId, mComponentName, mLeash,
+ mSourceRectHint, mAppBounds,
+ mHomeToWindowPositionMap, mStartBounds, mDestinationBounds,
+ mFromRotation, mDestinationBoundsTransformed,
+ mCornerRadius, mAttachedView);
+ }
+ }
+
private static class RotatedPosition {
private final float degree;
private final float positionX;
diff --git a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
index b15bbf3..c97ca32 100644
--- a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
+++ b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
@@ -15,9 +15,9 @@
*/
package com.android.quickstep.util;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.states.RotationHelper.deltaRotation;
import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation;
import static com.android.quickstep.util.RecentsOrientedState.preDisplayRotation;
import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
@@ -302,7 +302,7 @@
.withWindowCrop(mTmpCropRect)
.withCornerRadius(getCurrentCornerRadius());
- if (LIVE_TILE.get() && params.getRecentsSurface() != null) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && params.getRecentsSurface() != null) {
// When relativeLayer = 0, it reverts the surfaces back to the original order.
builder.withRelativeLayerTo(params.getRecentsSurface(),
mDrawsBelowRecents ? Integer.MIN_VALUE : 0);
diff --git a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
index 22ce942..88b11a0 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
@@ -152,6 +152,7 @@
RectF widgetBackgroundPosition, Size windowSize, float windowCornerRadius,
boolean appTargetIsTranslucent, int fallbackBackgroundColor) {
mAppWidgetView = originalView;
+ // Deferrals must begin before GhostView is created. See b/190818220
mAppWidgetView.beginDeferringUpdates();
mBackgroundPosition = widgetBackgroundPosition;
mAppTargetIsTranslucent = appTargetIsTranslucent;
@@ -240,6 +241,7 @@
((ViewGroup) dragLayer.getParent()).removeView(this);
dragLayer.removeView(mListenerView);
mBackgroundView.finish();
+ // Removing GhostView must occur before ending deferrals. See b/190818220
mAppWidgetView.endDeferringUpdates();
recycle();
mLauncher.getViewCache().recycleView(R.layout.floating_widget_view, this);
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 97e09dd..d9b229a 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -38,6 +38,7 @@
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.anim.Interpolators.clampToProgress;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_CLEAR_ALL;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_DISMISS_SWIPE_UP;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_SWIPE_DOWN;
@@ -47,7 +48,6 @@
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NON_ZERO_ROTATION;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_RECENTS;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_TASKS;
@@ -131,6 +131,7 @@
import com.android.launcher3.util.MultiValueAlpha;
import com.android.launcher3.util.ResourceBasedOverride.Overrides;
import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.RunnableList;
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
import com.android.launcher3.util.Themes;
import com.android.launcher3.util.TranslateEdgeEffect;
@@ -142,6 +143,7 @@
import com.android.quickstep.RecentsAnimationTargets;
import com.android.quickstep.RecentsModel;
import com.android.quickstep.RecentsModel.TaskVisualsChangeListener;
+import com.android.quickstep.RemoteAnimationTargets;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.TaskOverlayFactory;
import com.android.quickstep.TaskThumbnailCache;
@@ -394,8 +396,6 @@
private final TaskOverlayFactory mTaskOverlayFactory;
- private int mOrientation;
-
protected boolean mDisallowScrollToClearAll;
private boolean mOverlayEnabled;
protected boolean mFreezeViewVisibility;
@@ -497,6 +497,7 @@
private float mFocusedTaskRatio;
private boolean mRunningTaskIconScaledDown = false;
+ private boolean mRunningTaskShowScreenshot = false;
private boolean mOverviewStateEnabled;
private boolean mHandleTaskStackChanges;
@@ -574,6 +575,8 @@
}
};
+ private RunnableList mSideTaskLaunchCallback;
+
public RecentsView(Context context, AttributeSet attrs, int defStyleAttr,
BaseActivityInterface sizeStrategy) {
super(context, attrs, defStyleAttr);
@@ -590,7 +593,6 @@
.getDimensionPixelSize(R.dimen.recents_fast_fling_velocity);
mModel = RecentsModel.INSTANCE.get(context);
mIdp = InvariantDeviceProfile.INSTANCE.get(context);
- mOrientation = getResources().getConfiguration().orientation;
mClearAllButton = (ClearAllButton) LayoutInflater.from(context)
.inflate(R.layout.overview_clear_all_button, this, false);
@@ -679,7 +681,8 @@
}
super.dispatchDraw(canvas);
}
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && mLiveTileParams.getTargetSet() != null) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
+ && mLiveTileParams.getTargetSet() != null) {
redrawLiveTile();
}
}
@@ -803,6 +806,7 @@
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
mSyncTransactionApplier = null;
mLiveTileParams.setSyncTransactionApplier(null);
+ executeSideTaskLaunchCallback();
RecentsModel.INSTANCE.get(getContext()).removeThumbnailChangeListener(this);
SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null);
SplitScreenBounds.INSTANCE.removeOnChangeListener(this);
@@ -844,14 +848,32 @@
super.draw(canvas);
}
- public void launchSideTaskInLiveTileModeForRestartedApp(int taskId) {
- if (mRunningTaskId != -1 && mRunningTaskId == taskId &&
- getLiveTileParams().getTargetSet().findTask(taskId) != null) {
- launchSideTaskInLiveTileMode(taskId, getLiveTileParams().getTargetSet().apps);
+ public void addSideTaskLaunchCallback(RunnableList callback) {
+ if (mSideTaskLaunchCallback == null) {
+ mSideTaskLaunchCallback = new RunnableList();
+ }
+ mSideTaskLaunchCallback.add(callback::executeAllAndDestroy);
+ }
+
+ private void executeSideTaskLaunchCallback() {
+ if (mSideTaskLaunchCallback != null) {
+ mSideTaskLaunchCallback.executeAllAndDestroy();
+ mSideTaskLaunchCallback = null;
}
}
- public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTargetCompat[] apps) {
+ public void launchSideTaskInLiveTileModeForRestartedApp(int taskId) {
+ if (mRunningTaskId != -1 && mRunningTaskId == taskId) {
+ RemoteAnimationTargets targets = getLiveTileParams().getTargetSet();
+ if (targets != null && targets.findTask(taskId) != null) {
+ launchSideTaskInLiveTileMode(taskId, targets.apps, targets.wallpapers,
+ targets.nonApps);
+ }
+ }
+ }
+
+ public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTargetCompat[] apps,
+ RemoteAnimationTargetCompat[] wallpaper, RemoteAnimationTargetCompat[] nonApps) {
AnimatorSet anim = new AnimatorSet();
TaskView taskView = getTaskView(taskId);
if (taskView == null || !isTaskViewVisible(taskView)) {
@@ -880,14 +902,11 @@
}
});
} else {
- TaskViewUtils.composeRecentsLaunchAnimator(
- anim, taskView, apps,
- mLiveTileParams.getTargetSet().wallpapers,
- mLiveTileParams.getTargetSet().nonApps, true /* launcherClosing */,
- mActivity.getStateManager(), this,
+ TaskViewUtils.composeRecentsLaunchAnimator(anim, taskView, apps, wallpaper, nonApps,
+ true /* launcherClosing */, mActivity.getStateManager(), this,
getDepthController());
+ anim.start();
}
- anim.start();
}
private void updateTaskStartIndex(View affectingView) {
@@ -1090,6 +1109,12 @@
return;
}
+ int currentTaskId = -1;
+ TaskView currentTaskView = getTaskViewAtByAbsoluteIndex(mCurrentPage);
+ if (currentTaskView != null) {
+ currentTaskId = currentTaskView.getTask().key.id;
+ }
+
// Unload existing visible task data
unloadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
@@ -1129,6 +1154,11 @@
} else if (getTaskViewCount() > 0) {
setCurrentPage(indexOfChild(getTaskViewAt(0)));
}
+ } else if (currentTaskId != -1) {
+ currentTaskView = getTaskView(currentTaskId);
+ if (currentTaskView != null) {
+ setCurrentPage(indexOfChild(currentTaskView));
+ }
}
if (mIgnoreResetTaskId != -1 && getTaskView(mIgnoreResetTaskId) != ignoreResetTaskView) {
@@ -1182,7 +1212,7 @@
taskView.setModalness(mTaskModalness);
}
}
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
// Since we reuse the same mLiveTileTaskViewSimulator in the RecentsView, we need
// to reset the params after it settles in Overview from swipe up so that we don't
// render with obsolete param values.
@@ -1190,6 +1220,12 @@
mLiveTileTaskViewSimulator.taskSecondaryTranslation.value = 0;
mLiveTileTaskViewSimulator.fullScreenProgress.value = 0;
mLiveTileTaskViewSimulator.recentsViewScale.value = 1;
+
+ // Similar to setRunningTaskHidden below, reapply the state before runningTaskView is
+ // null.
+ if (!mRunningTaskShowScreenshot) {
+ setRunningTaskViewShowScreenshot(mRunningTaskShowScreenshot);
+ }
}
if (mRunningTaskTileHidden) {
setRunningTaskHidden(mRunningTaskTileHidden);
@@ -1250,8 +1286,14 @@
}
private void updateOrientationHandler() {
+ updateOrientationHandler(true);
+ }
+
+ private void updateOrientationHandler(boolean forceRecreateDragLayerControllers) {
// Handle orientation changes.
+ PagedOrientationHandler oldOrientationHandler = mOrientationHandler;
mOrientationHandler = mOrientationState.getOrientationHandler();
+
mIsRtl = mOrientationHandler.getRecentsRtlSetting(getResources());
setLayoutDirection(mIsRtl
? View.LAYOUT_DIRECTION_RTL
@@ -1260,7 +1302,13 @@
? View.LAYOUT_DIRECTION_LTR
: View.LAYOUT_DIRECTION_RTL);
mClearAllButton.setRotation(mOrientationHandler.getDegreesRotated());
- mActivity.getDragLayer().recreateControllers();
+
+ if (forceRecreateDragLayerControllers
+ || !mOrientationHandler.equals(oldOrientationHandler)) {
+ // Changed orientations, update controllers so they intercept accordingly.
+ mActivity.getDragLayer().recreateControllers();
+ }
+
boolean isInLandscape = mOrientationState.getTouchRotation() != ROTATION_0
|| mOrientationState.getRecentsActivityRotation() != ROTATION_0;
mActionsView.updateHiddenFlags(HIDDEN_NON_ZERO_ROTATION,
@@ -1562,7 +1610,7 @@
mFocusedTaskId = -1;
if (mRecentsAnimationController != null) {
- if (LIVE_TILE.get() && mEnableDrawingLiveTile) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile) {
// We are still drawing the live tile, finish it now to clean up.
finishRecentsAnimation(true /* toRecents */, null);
} else {
@@ -1580,7 +1628,7 @@
setCurrentPage(0);
LayoutUtils.setViewEnabled(mActionsView, true);
if (mOrientationState.setGestureActive(false)) {
- updateOrientationHandler();
+ updateOrientationHandler(/* forceRecreateDragLayerControllers = */ false);
}
});
}
@@ -1668,7 +1716,6 @@
pa.addListener(AnimatorListeners.forSuccessCallback(() -> {
setLayoutRotation(newRotation, mOrientationState.getDisplayRotation());
mActivity.getDragLayer().recreateControllers();
- updateChildTaskOrientations();
setRecentsChangedOrientation(false).start();
}));
pa.start();
@@ -1735,7 +1782,7 @@
setEnableFreeScroll(true);
setEnableDrawingLiveTile(mCurrentGestureEndTarget == GestureState.GestureEndTarget.RECENTS);
- if (!LIVE_TILE.get()) {
+ if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
setRunningTaskViewShowScreenshot(true);
}
setRunningTaskHidden(false);
@@ -1841,10 +1888,11 @@
}
private void setRunningTaskViewShowScreenshot(boolean showScreenshot) {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
+ mRunningTaskShowScreenshot = showScreenshot;
TaskView runningTaskView = getRunningTaskView();
if (runningTaskView != null) {
- runningTaskView.setShowScreenshot(showScreenshot);
+ runningTaskView.setShowScreenshot(mRunningTaskShowScreenshot);
}
}
}
@@ -2234,7 +2282,8 @@
anim.add(ObjectAnimator.ofFloat(taskView, dismissingTaskViewTranslate,
positiveNegativeFactor * translateDistance * 2).setDuration(duration), LINEAR, sp);
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && taskView.isRunningTask()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
+ && taskView.isRunningTask()) {
anim.addOnFrameCallback(() -> {
mLiveTileTaskViewSimulator.taskSecondaryTranslation.value =
mOrientationHandler.getSecondaryValue(
@@ -2314,7 +2363,8 @@
anim.setFloat(child, translationProperty, scrollDiff, clampToProgress(LINEAR,
Utilities.boundToRange(INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+ additionalDismissDuration, 0f, 1f), 1));
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && child instanceof TaskView
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
+ && child instanceof TaskView
&& ((TaskView) child).isRunningTask()) {
anim.addOnFrameCallback(() -> {
mLiveTileTaskViewSimulator.taskPrimaryTranslation.value =
@@ -2358,8 +2408,8 @@
mPendingAnimation.addEndListener(new Consumer<Boolean>() {
@Override
public void accept(Boolean success) {
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && taskView.isRunningTask()
- && success) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
+ && taskView.isRunningTask() && success) {
finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
() -> onEnd(success));
} else {
@@ -2372,13 +2422,12 @@
if (success) {
if (shouldRemoveTask) {
if (taskView.getTask() != null) {
- finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
- () -> {
- UI_HELPER_EXECUTOR.getHandler().postDelayed(() ->
- ActivityManagerWrapper.getInstance().removeTask(
- taskView.getTask().key.id),
- REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
- });
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && taskView.isRunningTask()) {
+ finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
+ () -> removeTaskInternal(taskView));
+ } else {
+ removeTaskInternal(taskView);
+ }
mActivity.getStatsLogManager().logger()
.withItemInfo(taskView.getItemInfo())
.log(LAUNCHER_TASK_DISMISS_SWIPE_UP);
@@ -2424,6 +2473,13 @@
return anim;
}
+ private void removeTaskInternal(TaskView taskView) {
+ UI_HELPER_EXECUTOR.getHandler().postDelayed(() ->
+ ActivityManagerWrapper.getInstance().removeTask(
+ taskView.getTask().key.id),
+ REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
+ }
+
/**
* @return {@code true} if one of the task thumbnails would intersect/overlap with the
* {@link #mSplitPlaceholderView}
@@ -2643,15 +2699,7 @@
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && newConfig.orientation != mOrientation) {
- switchToScreenshot(
- () -> finishRecentsAnimation(true /* toRecents */, false /* showPip */,
- this::updateRecentsRotation));
- mEnableDrawingLiveTile = false;
- } else {
- updateRecentsRotation();
- }
- mOrientation = newConfig.orientation;
+ updateRecentsRotation();
}
/**
@@ -2811,7 +2859,8 @@
? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty()
: mOrientationHandler.getPrimaryViewTranslate();
translationProperty.set(child, totalTranslation);
- if (LIVE_TILE.get() && mEnableDrawingLiveTile && i == getRunningTaskIndex()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
+ && i == getRunningTaskIndex()) {
mLiveTileTaskViewSimulator.taskPrimaryTranslation.value = totalTranslation;
redrawLiveTile();
}
@@ -3170,7 +3219,7 @@
anim.play(ObjectAnimator.ofFloat(getPageAt(centerTaskIndex),
mOrientationHandler.getPrimaryViewTranslate(), primaryTranslation));
int runningTaskIndex = recentsView.getRunningTaskIndex();
- if (LIVE_TILE.get() && runningTaskIndex != -1
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && runningTaskIndex != -1
&& runningTaskIndex != taskIndex) {
anim.play(ObjectAnimator.ofFloat(
recentsView.getLiveTileTaskViewSimulator().taskPrimaryTranslation,
@@ -3254,13 +3303,13 @@
mPendingAnimation = new PendingAnimation(duration);
mPendingAnimation.add(anim);
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
mLiveTileTaskViewSimulator.addOverviewToAppAnim(mPendingAnimation, interpolator);
mPendingAnimation.addOnFrameCallback(this::redrawLiveTile);
}
mPendingAnimation.addEndListener(isSuccess -> {
if (isSuccess) {
- if (LIVE_TILE.get() && tv.isRunningTask()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && tv.isRunningTask()) {
finishRecentsAnimation(false /* toRecents */, null);
onTaskLaunchAnimationEnd(true /* success */);
} else {
@@ -3379,7 +3428,7 @@
public void finishRecentsAnimation(boolean toRecents, boolean shouldPip,
Runnable onFinishComplete) {
- if (!toRecents && LIVE_TILE.get()) {
+ if (!toRecents && ENABLE_QUICKSTEP_LIVE_TILE.get()) {
// Reset the minimized state since we force-toggled the minimized state when entering
// overview, but never actually finished the recents animation. This is a catch all for
// cases where we haven't already reset it.
@@ -3407,16 +3456,27 @@
if (onFinishComplete != null) {
onFinishComplete.run();
}
- // After we finish the recents animation, the current task id should be correctly
- // reset so that when the task is launched from Overview later, it goes through the
- // flow of starting a new task instead of finishing recents animation to app. A
- // typical example of this is (1) user swipes up from app to Overview (2) user
- // taps on QSB (3) user goes back to Overview and launch the most recent task.
- setCurrentTask(-1);
- mRecentsAnimationController = null;
+ onRecentsAnimationComplete();
}, sendUserLeaveHint);
}
+ /**
+ * Called when a running recents animation has finished or canceled.
+ */
+ public void onRecentsAnimationComplete() {
+ // At this point, the recents animation is not running and if the animation was canceled
+ // by a display rotation then reset this state to show the screenshot
+ setRunningTaskViewShowScreenshot(true);
+ // After we finish the recents animation, the current task id should be correctly
+ // reset so that when the task is launched from Overview later, it goes through the
+ // flow of starting a new task instead of finishing recents animation to app. A
+ // typical example of this is (1) user swipes up from app to Overview (2) user
+ // taps on QSB (3) user goes back to Overview and launch the most recent task.
+ setCurrentTask(-1);
+ mRecentsAnimationController = null;
+ executeSideTaskLaunchCallback();
+ }
+
public void setDisallowScrollToClearAll(boolean disallowScrollToClearAll) {
if (mDisallowScrollToClearAll != disallowScrollToClearAll) {
mDisallowScrollToClearAll = disallowScrollToClearAll;
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
index c97225e..2c6533c 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
@@ -16,7 +16,7 @@
package com.android.quickstep.views;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.quickstep.views.TaskThumbnailView.DIM_ALPHA;
import android.animation.Animator;
@@ -59,6 +59,7 @@
private static final int REVEAL_OPEN_DURATION = 150;
private static final int REVEAL_CLOSE_DURATION = 100;
+ private final float mTaskInsetMargin;
private BaseDraggingActivity mActivity;
private TextView mTaskName;
@@ -75,6 +76,7 @@
mActivity = BaseDraggingActivity.fromContext(context);
setClipToOutline(true);
+ mTaskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
}
@Override
@@ -124,8 +126,13 @@
private void setPosition(float x, float y, int overscrollShift) {
PagedOrientationHandler pagedOrientationHandler = mTaskView.getPagedOrientationHandler();
+ // Inset due to margin
+ PointF additionalInset = pagedOrientationHandler
+ .getAdditionalInsetForTaskMenu(mTaskInsetMargin);
int taskTopMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
- float adjustedY = y + taskTopMargin;
+
+ float adjustedY = y + taskTopMargin - additionalInset.y;
+ float adjustedX = x - additionalInset.x;
// Changing pivot to make computations easier
// NOTE: Changing the pivots means the rotated view gets rotated about the new pivots set,
// which would render the X and Y position set here incorrect
@@ -137,7 +144,8 @@
setPivotY(0);
}
setRotation(pagedOrientationHandler.getDegreesRotated());
- setX(pagedOrientationHandler.getTaskMenuX(x, mTaskView.getThumbnail(), overscrollShift));
+ setX(pagedOrientationHandler.getTaskMenuX(adjustedX,
+ mTaskView.getThumbnail(), overscrollShift));
setY(pagedOrientationHandler.getTaskMenuY(
adjustedY, mTaskView.getThumbnail(), overscrollShift));
}
@@ -212,7 +220,7 @@
menuOptionView.setEnabled(menuOption.isEnabled());
menuOptionView.setAlpha(menuOption.isEnabled() ? 1 : 0.5f);
menuOptionView.setOnClickListener(view -> {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && !menuOption.hasFinishRecentsInAction()) {
RecentsView recentsView = mTaskView.getRecentsView();
recentsView.switchToScreenshot(null,
() -> recentsView.finishRecentsAnimation(true /* toRecents */,
@@ -228,8 +236,7 @@
private void orientAroundTaskView(TaskView taskView) {
PagedOrientationHandler orientationHandler = taskView.getPagedOrientationHandler();
measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
- float taskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
- orientationHandler.setTaskMenuAroundTaskView(this, taskInsetMargin);
+ orientationHandler.setTaskMenuAroundTaskView(this, mTaskInsetMargin);
mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect);
Rect insets = mActivity.getDragLayer().getInsets();
BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams();
@@ -243,9 +250,6 @@
setScaleY(taskView.getScaleY());
orientationHandler.setTaskOptionsMenuLayoutOrientation(
mActivity.getDeviceProfile(), mOptionLayout);
- PointF additionalInset = orientationHandler.getAdditionalInsetForTaskMenu(taskInsetMargin);
- insets.left += additionalInset.x;
- insets.top += additionalInset.y;
setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top, 0);
}
diff --git a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
index f730d2d..8d69d88 100644
--- a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
@@ -19,7 +19,7 @@
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
import android.content.Context;
@@ -306,7 +306,7 @@
public void drawOnCanvas(Canvas canvas, float x, float y, float width, float height,
float cornerRadius) {
- if (LIVE_TILE.get()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
if (mTask != null && getTaskView().isRunningTask() && !getTaskView().showScreenshot()) {
canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mClearPaint);
canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius,
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index ae429d9..4eb721e 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -34,11 +34,11 @@
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_ICON_TAP_OR_LONGPRESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_TAP;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -540,7 +540,7 @@
if (getTask() == null) {
return;
}
- if (LIVE_TILE.get() && isRunningTask()) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask()) {
if (!mIsClickableAsLiveTile) {
return;
}
@@ -608,6 +608,13 @@
ActivityOptionsWrapper opts = mActivity.getActivityLaunchOptions(this, null);
if (ActivityManagerWrapper.getInstance()
.startActivityFromRecents(mTask.key, opts.options)) {
+ if (ENABLE_QUICKSTEP_LIVE_TILE.get() && getRecentsView().getRunningTaskId() != -1) {
+ // Return a fresh callback in the live tile case, so that it's not accidentally
+ // triggered by QuickstepTransitionManager.AppLaunchAnimationRunner.
+ RunnableList callbackList = new RunnableList();
+ getRecentsView().addSideTaskLaunchCallback(callbackList);
+ return callbackList;
+ }
return opts.onEndCallback;
} else {
notifyTaskLaunchFailed(TAG);
diff --git a/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java b/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
index 4f27e21..dc73a9a 100644
--- a/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
+++ b/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
@@ -16,7 +16,7 @@
package com.android.quickstep;
-import static com.android.quickstep.util.NavigationModeFeatureFlag.LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static org.junit.Assert.assertTrue;
@@ -75,7 +75,7 @@
private boolean isInLiveTileMode(Launcher launcher,
LauncherInstrumentation.ContainerType expectedContainerType) {
- if (!LIVE_TILE.get()
+ if (!ENABLE_QUICKSTEP_LIVE_TILE.get()
|| expectedContainerType != LauncherInstrumentation.ContainerType.OVERVIEW) {
return false;
}
diff --git a/res/color-night-v31/folder_background_dark.xml b/res/color-night-v31/folder_background_dark.xml
new file mode 100644
index 0000000..a5bd636
--- /dev/null
+++ b/res/color-night-v31/folder_background_dark.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="@android:color/system_neutral2_50"
+ android:lStar="30" />
+</selector>
diff --git a/res/color-night-v31/popup_shade_first.xml b/res/color-night-v31/popup_shade_first.xml
new file mode 100644
index 0000000..ba74128
--- /dev/null
+++ b/res/color-night-v31/popup_shade_first.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="20" />
+</selector>
diff --git a/res/color-night-v31/popup_shade_second.xml b/res/color-night-v31/popup_shade_second.xml
new file mode 100644
index 0000000..efc6205
--- /dev/null
+++ b/res/color-night-v31/popup_shade_second.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="15" />
+</selector>
diff --git a/res/color-night-v31/popup_shade_third.xml b/res/color-night-v31/popup_shade_third.xml
new file mode 100644
index 0000000..591c7ed
--- /dev/null
+++ b/res/color-night-v31/popup_shade_third.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="10" />
+</selector>
diff --git a/res/color-v31/folder_background_light.xml b/res/color-v31/folder_background_light.xml
new file mode 100644
index 0000000..e3c7e7d
--- /dev/null
+++ b/res/color-v31/folder_background_light.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="@android:color/system_neutral1_50"
+ android:lStar="98" />
+</selector>
diff --git a/res/color-v31/popup_shade_first.xml b/res/color-v31/popup_shade_first.xml
new file mode 100644
index 0000000..28d9155
--- /dev/null
+++ b/res/color-v31/popup_shade_first.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="98" />
+</selector>
diff --git a/res/color-v31/popup_shade_second.xml b/res/color-v31/popup_shade_second.xml
new file mode 100644
index 0000000..dec562c
--- /dev/null
+++ b/res/color-v31/popup_shade_second.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="95" />
+</selector>
diff --git a/res/color-v31/popup_shade_third.xml b/res/color-v31/popup_shade_third.xml
new file mode 100644
index 0000000..582232c
--- /dev/null
+++ b/res/color-v31/popup_shade_third.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:color="?attr/popupColorPrimary"
+ android:lStar="90" />
+</selector>
diff --git a/res/color/drop_target_text.xml b/res/color/drop_target_text.xml
new file mode 100644
index 0000000..18d78e7
--- /dev/null
+++ b/res/color/drop_target_text.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="?workspaceAccentColor" android:state_selected="false" />
+ <item android:color="?dropTargetHoverTextColor" android:state_selected="true" />
+</selector>
\ No newline at end of file
diff --git a/res/color/popup_shade_first.xml b/res/color/popup_shade_first.xml
new file mode 100644
index 0000000..151190b
--- /dev/null
+++ b/res/color/popup_shade_first.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:color="?attr/popupShadeFirst" />
+</selector>
diff --git a/res/color/popup_shade_second.xml b/res/color/popup_shade_second.xml
new file mode 100644
index 0000000..8660850
--- /dev/null
+++ b/res/color/popup_shade_second.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:color="?attr/popupShadeSecond" />
+</selector>
diff --git a/res/color/popup_shade_third.xml b/res/color/popup_shade_third.xml
new file mode 100644
index 0000000..9544728
--- /dev/null
+++ b/res/color/popup_shade_third.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:color="?attr/popupShadeThird" />
+</selector>
\ No newline at end of file
diff --git a/res/drawable/all_apps_tabs_background.xml b/res/drawable/all_apps_tabs_background.xml
index bf7ee8c..aea2e7a 100644
--- a/res/drawable/all_apps_tabs_background.xml
+++ b/res/drawable/all_apps_tabs_background.xml
@@ -14,18 +14,14 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android"
- android:enterFadeDuration="500">
+ android:enterFadeDuration="100">
<item
android:id="@+id/unselected"
android:state_selected="false">
- <ripple android:color="@color/all_apps_tab_background_selected">
- <item>
- <shape android:shape="rectangle">
- <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
- <solid android:color="@color/all_apps_tabs_background" />
- </shape>
- </item>
- </ripple>
+ <shape android:shape="rectangle">
+ <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
+ <solid android:color="@color/all_apps_tabs_background" />
+ </shape>
</item>
<item
diff --git a/res/drawable/drop_target_frame.xml b/res/drawable/drop_target_frame.xml
index fa6dafd..666a96e 100644
--- a/res/drawable/drop_target_frame.xml
+++ b/res/drawable/drop_target_frame.xml
@@ -18,5 +18,5 @@
android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<corners android:radius="28dp" />
- <stroke android:width="2dp" android:color="?android:attr/colorAccent" />
+ <stroke android:width="2dp" android:color="?attr/workspaceAccentColor" />
</shape>
\ No newline at end of file
diff --git a/res/drawable/drop_target_frame_hover.xml b/res/drawable/drop_target_frame_hover.xml
index 7d0e919..ddf3a4d 100644
--- a/res/drawable/drop_target_frame_hover.xml
+++ b/res/drawable/drop_target_frame_hover.xml
@@ -16,6 +16,6 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
- <solid android:color="?android:attr/colorAccent" />
+ <solid android:color="?attr/workspaceAccentColor" />
<corners android:radius="28dp" />
</shape>
\ No newline at end of file
diff --git a/res/drawable/full_rounded_transparent_ripple.xml b/res/drawable/full_rounded_transparent_ripple.xml
new file mode 100644
index 0000000..a1e7943
--- /dev/null
+++ b/res/drawable/full_rounded_transparent_ripple.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<ripple
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <item android:id="@android:id/mask">
+ <shape android:shape="oval">
+ <size android:height="24dp" android:width="24dp"/>
+ <solid android:color="@android:color/white"/>
+ </shape>
+ </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/widget_resize_frame.xml b/res/drawable/widget_resize_frame.xml
index d157f5d..9426de4 100644
--- a/res/drawable/widget_resize_frame.xml
+++ b/res/drawable/widget_resize_frame.xml
@@ -18,5 +18,5 @@
android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<corners android:radius="@android:dimen/system_app_widget_background_radius" />
- <stroke android:width="2dp" android:color="?android:attr/colorAccent" />
+ <stroke android:width="2dp" android:color="?attr/workspaceAccentColor" />
</shape>
\ No newline at end of file
diff --git a/res/drawable/work_apps_toggle_background.xml b/res/drawable/work_apps_toggle_background.xml
index b7115f8..a47c8fe 100644
--- a/res/drawable/work_apps_toggle_background.xml
+++ b/res/drawable/work_apps_toggle_background.xml
@@ -18,14 +18,18 @@
<shape android:shape="rectangle">
<corners android:radius="@dimen/work_fab_radius" />
<solid android:color="?android:attr/colorControlHighlight" />
- <padding android:left="@dimen/work_fab_radius" android:right="@dimen/work_fab_radius" />
+ <padding
+ android:left="@dimen/work_profile_footer_padding"
+ android:right="@dimen/work_profile_footer_padding" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="@dimen/work_fab_radius" />
<solid android:color="@color/all_apps_tab_background_selected" />
- <padding android:left="@dimen/work_fab_radius" android:right="@dimen/work_fab_radius" />
+ <padding
+ android:left="@dimen/work_profile_footer_padding"
+ android:right="@dimen/work_profile_footer_padding" />
</shape>
</item>
</selector>
diff --git a/res/drawable/work_card.xml b/res/drawable/work_card.xml
index 0e4b054..7048955 100644
--- a/res/drawable/work_card.xml
+++ b/res/drawable/work_card.xml
@@ -20,8 +20,5 @@
android:shape="rectangle">
<solid android:color="?androidprv:attr/colorSurface" />
<corners android:radius="@dimen/work_edu_card_margin" />
- <padding
- android:left="@dimen/work_fab_radius"
- android:right="@dimen/work_fab_radius" />
</shape>
diff --git a/res/layout/app_widget_resize_frame.xml b/res/layout/app_widget_resize_frame.xml
index 249e42c..ff07a91 100644
--- a/res/layout/app_widget_resize_frame.xml
+++ b/res/layout/app_widget_resize_frame.xml
@@ -41,7 +41,7 @@
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="@dimen/widget_handle_margin"
android:src="@drawable/ic_widget_resize_handle"
- android:tint="?android:attr/colorAccent" />
+ android:tint="?attr/workspaceAccentColor" />
<!-- Top -->
<ImageView
@@ -51,7 +51,7 @@
android:layout_gravity="top|center_horizontal"
android:layout_marginTop="@dimen/widget_handle_margin"
android:src="@drawable/ic_widget_resize_handle"
- android:tint="?android:attr/colorAccent" />
+ android:tint="?attr/workspaceAccentColor" />
<!-- Right -->
<ImageView
@@ -61,7 +61,7 @@
android:layout_gravity="right|center_vertical"
android:layout_marginRight="@dimen/widget_handle_margin"
android:src="@drawable/ic_widget_resize_handle"
- android:tint="?android:attr/colorAccent" />
+ android:tint="?attr/workspaceAccentColor" />
<!-- Bottom -->
<ImageView
@@ -71,7 +71,7 @@
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="@dimen/widget_handle_margin"
android:src="@drawable/ic_widget_resize_handle"
- android:tint="?android:attr/colorAccent" />
+ android:tint="?attr/workspaceAccentColor" />
<ImageButton
android:id="@+id/widget_reconfigure_button"
diff --git a/res/layout/launcher_preview_layout.xml b/res/layout/launcher_preview_layout.xml
index 1691680..cf2f2c7 100644
--- a/res/layout/launcher_preview_layout.xml
+++ b/res/layout/launcher_preview_layout.xml
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<com.android.launcher3.InsettableFrameLayout
+<view class="com.android.launcher3.graphics.LauncherPreviewRenderer$LauncherPreviewLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
@@ -33,4 +33,4 @@
android:id="@+id/hotseat"
layout="@layout/hotseat" />
-</com.android.launcher3.InsettableFrameLayout>
\ No newline at end of file
+</view>
\ No newline at end of file
diff --git a/res/layout/system_shortcut.xml b/res/layout/system_shortcut.xml
index 2cdf1f4..de091c5 100644
--- a/res/layout/system_shortcut.xml
+++ b/res/layout/system_shortcut.xml
@@ -32,7 +32,8 @@
android:paddingStart="@dimen/deep_shortcuts_text_padding_start"
android:paddingEnd="@dimen/popup_padding_end"
android:textSize="14sp"
- android:singleLine="true"
+ android:minLines="1"
+ android:maxLines="2"
android:ellipsize="end"
android:textColor="?android:attr/textColorPrimary"
launcher:iconDisplay="shortcut_popup"
diff --git a/res/layout/widgets_search_bar.xml b/res/layout/widgets_search_bar.xml
index 0b354e8..cb27f4f 100644
--- a/res/layout/widgets_search_bar.xml
+++ b/res/layout/widgets_search_bar.xml
@@ -31,11 +31,9 @@
android:id="@+id/widgets_search_cancel_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:paddingVertical="12dp"
- android:paddingStart="8dp"
- android:paddingEnd="12dp"
+ android:padding="12dp"
android:src="@drawable/ic_gm_close_24"
- android:background="?android:selectableItemBackground"
+ android:background="@drawable/full_rounded_transparent_ripple"
android:layout_gravity="center"
android:contentDescription="@string/widgets_full_sheet_cancel_button_description"
android:visibility="gone"/>
diff --git a/res/layout/work_apps_edu.xml b/res/layout/work_apps_edu.xml
index 97feb23..84fdfdf 100644
--- a/res/layout/work_apps_edu.xml
+++ b/res/layout/work_apps_edu.xml
@@ -22,7 +22,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="@dimen/work_edu_card_margin"
+ android:paddingHorizontal="@dimen/work_card_padding_horizontal"
+ android:paddingVertical="@dimen/work_card_padding_vertical"
android:background="@drawable/work_card"
android:layout_gravity="center_horizontal"
android:gravity="center"
@@ -34,15 +35,14 @@
android:id="@+id/work_apps_paused_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="8dp"
+ android:layout_marginBottom="@dimen/work_card_padding_vertical"
android:text="@string/work_profile_edu_work_apps"
android:textAlignment="center"
android:textSize="20sp" />
<Button
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="@dimen/rounded_button_height"
android:id="@+id/action_btn"
android:textColor="?attr/workProfileOverlayTextColor"
android:text="@string/work_profile_edu_accept"
diff --git a/res/layout/work_apps_paused.xml b/res/layout/work_apps_paused.xml
index 3819256..841734c 100644
--- a/res/layout/work_apps_paused.xml
+++ b/res/layout/work_apps_paused.xml
@@ -17,7 +17,7 @@
android:layout_height="wrap_content"
android:padding="@dimen/work_edu_card_margin"
android:orientation="vertical"
- android:gravity="center">
+ android:gravity="center_horizontal">
<TextView
style="@style/PrimaryHeadline"
@@ -25,29 +25,31 @@
android:id="@+id/work_apps_paused_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="8dp"
+ android:layout_marginTop="40dp"
android:text="@string/work_apps_paused_title"
android:textAlignment="center"
- android:textSize="20sp" />
+ android:textSize="22sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/work_apps_paused_content"
- android:textColor="?attr/workProfileOverlayTextColor"
+ android:textColor="?android:attr/textColorSecondary"
android:text="@string/work_apps_paused_body"
android:textAlignment="center"
- android:layout_marginBottom="8dp"
- android:textSize="16sp" />
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="24dp"
+ android:textSize="14sp" />
<Button
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="@dimen/rounded_button_height"
android:id="@+id/enable_work_apps"
android:textColor="?attr/workProfileOverlayTextColor"
android:text="@string/work_apps_enable_btn_text"
android:textAlignment="center"
android:background="@drawable/rounded_action_button"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
android:textSize="14sp" />
</com.android.launcher3.allapps.WorkPausedCard>
\ No newline at end of file
diff --git a/res/layout/work_mode_fab.xml b/res/layout/work_mode_fab.xml
index 1771d37..04faa15 100644
--- a/res/layout/work_mode_fab.xml
+++ b/res/layout/work_mode_fab.xml
@@ -13,6 +13,7 @@
limitations under the License.
-->
<com.android.launcher3.allapps.WorkModeSwitch xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/TextHeadline"
android:id="@+id/work_mode_toggle"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
@@ -22,8 +23,9 @@
android:includeFontPadding="false"
android:drawableTint="@color/all_apps_tab_text"
android:textColor="@color/all_apps_tab_text"
+ android:textSize="14sp"
android:background="@drawable/work_apps_toggle_background"
- android:drawablePadding="16dp"
+ android:drawablePadding="8dp"
android:drawableStart="@drawable/ic_corp_off"
android:layout_marginBottom="@dimen/work_fab_margin"
android:layout_marginEnd="@dimen/work_fab_margin"
diff --git a/res/raw/downgrade_schema.json b/res/raw/downgrade_schema.json
index 8f1780e..bc25cec 100644
--- a/res/raw/downgrade_schema.json
+++ b/res/raw/downgrade_schema.json
@@ -2,8 +2,14 @@
// Note: Comments are not supported in JSON schema, but android parser is lenient.
// Maximum DB version supported by this schema
- "version" : 28,
+ "version" : 29,
+ "downgrade_to_28" : [
+ "ALTER TABLE favorites RENAME TO temp_favorites;",
+ "CREATE TABLE favorites(_id INTEGER PRIMARY KEY, title TEXT, intent TEXT, container INTEGER, screen INTEGER, cellX INTEGER, cellY INTEGER, spanX INTEGER, spanY INTEGER, itemType INTEGER, appWidgetId INTEGER NOT NULL DEFAULT - 1, iconPackage TEXT, iconResource TEXT, icon BLOB, appWidgetProvider TEXT, modified INTEGER NOT NULL DEFAULT 0, restored INTEGER NOT NULL DEFAULT 0, profileId INTEGER DEFAULT 0, rank INTEGER NOT NULL DEFAULT 0, options INTEGER NOT NULL DEFAULT 0);",
+ "INSERT INTO favorites SELECT _id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconPackage, iconResource, icon, appWidgetProvider, modified, restored, profileId, rank, options FROM temp_favorites;",
+ "DROP TABLE temp_favorites;"
+ ],
"downgrade_to_27" : [
"CREATE TABLE workspaceScreens (_id INTEGER PRIMARY KEY,screenRank INTEGER,modified INTEGER NOT NULL DEFAULT 0)",
"insert into workspaceScreens (_id, screenRank) select screen as _id, screen as screenRank from favorites where container = -100 group by screen order by screen"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 571ad51..834e384 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dubbeltik en hou om \'n legstuk te skuif of gebruik gepasmaakte handelinge."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed by %2$d hoog"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Raak en hou die legstuk om dit op die Tuisskerm rond te beweeg"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Voeg by Tuisskerm"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Legstukke"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Soek"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Vee teks in hierdie soekkasie uit"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Geen legstukke beskikbaar nie"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Geen soekresultate nie"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Legstukke en kortpaaie is nie beskikbaar nie"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Geen legstukke of kortpaaie gekry nie"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persoonlik"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Werk"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Gesprekke"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Kennisgewings"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Raak en hou om \'n kortpad te skuif."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dubbeltik en hou om \'n kortpad te skuif of gebruik gepasmaakte handelinge."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Niks meer spasie op die tuisskerm nie."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Geen plek op hierdie tuisskerm nie"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Geen plek meer in die Gunstelinge-laai nie"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Programmelys"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lys persoonlike programme"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Werkprofiel"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Werkprogramme het \'n kenteken en is sigbaar vir jou IT-administrateur"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Het dit"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Werkprogramme is af"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Werkprogramme is onderbreek"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Jou werkprogramme kan nie vir jou kennisgewings stuur, jou battery gebruik of toegang tot jou ligging kry nie"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Werkprogramme is af. Jou werkprogramme kan nie vir jou kennisgewings stuur, jou battery gebruik of toegang tot jou ligging kry nie"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Werkprogramme het \'n kenteken en is sigbaar vir jou IT-administrateur"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index fe97163..1b9c7ee 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ምግብርን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ስፋት በ%2$d ከፍታ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"በመነሻ ገጽ አካባቢ ላይ ለማንቀሳቀስ ነክተው ይያዙት"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ወደ መነሻ ገጽ አክል"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ፍርግሞች"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ፍለጋ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ጽሁፍን ከፍለጋ ሳጥን አጽዳ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ምግብሮች አይገኙም"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ምንም የፍለጋ ውጤቶች የሉም"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"መግብሮች እና አቋራጮች አይገኙም"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ምንም መግብሮች ወይም አቋራጮች አልተገኙም"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"የግል"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ስራ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ውይይቶች"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"ማሳወቂያዎች"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"አቋራጭን ለማንቀሳቀስ ይንኩ እና ይያዙ"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"አቋራጭን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።"</string>
- <string name="out_of_space" msgid="4691004494942118364">"በዚህ መነሻ ማያ ገጽ ላይ ምንም ቦታ የለም።"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"በዚህ የመነሻ ማያ ገጽ ላይ ምንም ክፍል የለም"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"በተወዳጆች መሣቢያ ውስጥ ተጨማሪ ቦታ የለም"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"የመተግበሪያዎች ዝርዝር"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"የግል መተግበሪያዎች ዝርዝር"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"የመነሻ ቅንብሮችን እና አቋራጮችን ይጽፋል"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"መተግብሪያው ቅንብሮችን እና አቋራጮችን በመነሻ ውስጥ እንዲቀይራቸው ያስችለዋል።"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> የስልክ ጥሪዎችን ለማድረግ አልተፈቀደለትም"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ምግብርን መጫን አልተቻለም"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ማዋቀርን ለመጨረስ መታ ያድርጉ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ይህ የስርዓት መተግበሪያ ነው እና ማራገፍ አይቻልም።"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ስም ያርትዑ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ተሰናክሏል"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"የሥራ መገለጫ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"የሥራ መተግበሪያዎች ባጅ የተደረገባቸው እና ለእርስዎ የአይቲ አስተዳዳሪ የሚታዩ ናቸው"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ገባኝ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"የሥራ መተግበሪያዎች ጠፍተዋል"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"የስራ መተግበሪያዎች ባሉበት ቆመዋል"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"የስራ መተግበሪያዎችዎ ማሳወቂያዎችን ሊልክልዎ፣ ባትሪዎን መጠቀም ወይም አካባቢዎን መድረስ አይችሉም"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"የሥራ መተግበሪያዎች ጠፍተዋል። የስራ መተግበሪያዎችዎ ማሳወቂያዎችን ሊልክልዎ፣ ባትሪዎን መጠቀም ወይም አካባቢዎን መድረስ አይችሉም"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"የሥራ መተግበሪያዎች ባጅ የተደረገባቸው ሲሆን ለእርስዎ IT ቡድን ታይ ናቸው"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index ff2f51d..ac446a2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"انقر مرتين مع تثبيت إصبعك لنقل أداة أو استخدام الإجراءات المخصّصة."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"العرض %1$d الطول %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"يمكنك النقر على الأداة مع الاستمرار لتحريكها على الشاشة الرئيسية."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"إضافة إلى الشاشة الرئيسية"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -54,8 +56,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"الأدوات"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"بحث"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"محو النص من مربّع البحث"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ما مِن أدوات متاحة."</string>
- <string name="no_search_results" msgid="6518732304311458580">"ما مِن نتائج بحث."</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"الأدوات والاختصارات غير متاحة."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"لم يتم العثور على أدوات أو اختصارات."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"الأدوات الشخصية"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"أدوات العمل"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"المحادثات"</string>
@@ -72,7 +74,7 @@
<string name="notifications_header" msgid="1404149926117359025">"الإشعارات"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"انقر مرتين مع تثبيت إصبعك لنقل اختصار."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"انقر مرتين مع تثبيت إصبعك لنقل اختصار أو استخدام الإجراءات المخصّصة."</string>
- <string name="out_of_space" msgid="4691004494942118364">"لا يتبقى مساحة على هذه الشاشة الرئيسية."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ما مِن مساحة على هذه الشاشة الرئيسية."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"لا يوجد المزيد من الحقول في علبة المفضلة"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"قائمة التطبيقات"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"قائمة التطبيقات الشخصية"</string>
@@ -90,10 +92,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"كتابة إعدادات واختصارات الشاشة الرئيسية"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"للسماح للتطبيق بتغيير الإعدادات والاختصارات في الشاشة الرئيسية."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> غير مسموح به لإجراء مكالمات هاتفية"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"يتعذّر تحميل الأداة."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"انقر لإكمال الإعداد."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"هذا تطبيق نظام وتتعذر إزالته."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"تعديل الاسم"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"تم إيقاف <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -172,7 +172,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"الملف الشخصي للعمل"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات."</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"حسنًا"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"تطبيقات العمل غير مفعّلة"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"تم إيقاف تطبيقات العمل مؤقتًا."</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"لا يمكن لتطبيقات العمل إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"تطبيقات العمل غير مفعّلة، وبالتالي لا يمكنها إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات."</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 43927f5..f61a152 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"কোনো ৱিজেট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d বহল x %2$d ওখ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ৱিজেটটো গৃহ স্ক্ৰীনৰ আশে-পাশে নিবলৈ সেইটোত স্পৰ্শ কৰি ধৰি ৰাখক"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"গৃহ স্ক্ৰীনত যোগ কৰক"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ৱিজেটসমূহ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"সন্ধান"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"সন্ধান বাকচত থকা পাঠ মচক"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"কোনো ৱিজেট নাই"</string>
- <string name="no_search_results" msgid="6518732304311458580">"সন্ধানৰ কোনো ফলাফল নাই"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ৱিজেট আৰু শ্বৰ্টকাট উপলব্ধ নহয়"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"কোনো ৱিজেট আৰু শ্বৰ্টকাট পোৱা নগ’ল"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ব্যক্তিগত"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"কৰ্মস্থান"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"বাৰ্তালাপ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"জাননীসমূহ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"শ্বৰ্টকাট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক।"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"কোনো শ্বৰ্টকাট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।"</string>
- <string name="out_of_space" msgid="4691004494942118364">"এই গৃহ স্ক্ৰীণত আৰু বেছি ঠাই নাই।"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"এই গৃহ স্ক্ৰীনত খালী ঠাই নাই"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"পছন্দৰ ট্ৰে\'ত আৰু বেছি ঠাই নাই"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"এপৰ সূচী"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ব্যক্তিগত এপৰ তালিকা"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"গৃহ ছেটিং আৰু শ্বৰ্টকাটবোৰ লিখিব পাৰে"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"এপটোক গৃহ পৃষ্ঠাত ছেটিং আৰু শ্বৰ্টকাটসমূহ সলনি কৰাৰ অনুমতি দিয়ে।"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক ফ\'ন কলবোৰ কৰাৰ অনুমতি দিয়া হোৱা নাই"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ৱিজেট ল’ড কৰিব নোৱাৰি"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ছেটআপ সমাপ্ত কৰিবলৈ টিপক"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"এইটো এটা ছিষ্টেম এপ আৰু ইয়াক আনইনষ্টল কৰিব নোৱৰি"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"নাম সম্পাদনা কৰক"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> অক্ষম কৰা হ’ল"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"কৰ্মস্থানৰ প্ৰ\'ফাইল"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"কৰ্মস্থানৰ এপ্সমূহ প্ৰতীকেৰে চিহ্নিত কৰা হয় আৰু সেইবোৰ আপোনাৰ আইটি প্ৰশাসকৰ বাবে দৃশ্যমান হয়"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"বুজি পালোঁ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"কৰ্মস্থানৰ এপ্সমূহ অফ হৈ আছে"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"কাম সম্পর্কীয় এপ্সমূহ পজ হৈ আছে"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"আপোনাৰ কৰ্মস্থানৰ এপ্সমূহে আপোনালৈ জাননী পঠিয়াব, আপোনাৰ বেটাৰী ব্যৱহাৰ কৰিব অথবা আপোনাৰ অৱস্থান এক্সেছ কৰিব নোৱাৰে"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"কৰ্মস্থানৰ এপ্সমূহ অফ হৈ আছে। আপোনাৰ কৰ্মস্থানৰ এপ্সমূহে আপোনালৈ জাননী পঠিয়াব, আপোনাৰ বেটাৰী ব্যৱহাৰ কৰিব অথবা আপোনাৰ অৱস্থান এক্সেছ কৰিব নোৱাৰে"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"কর্মস্থানৰ এপ্সমূহ প্ৰতীকেৰে চিহ্নিত কৰা হয় আৰু সেইবোৰ আপোনাৰ আইটি প্ৰশাসকৰ বাবে দৃশ্যমান হয়"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 7685330..36d2051 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -27,11 +27,13 @@
<string name="safemode_widget_error" msgid="4863470563535682004">"Vidcetlər Güvənli rejimdə deaktiv edilib"</string>
<string name="shortcut_not_available" msgid="2536503539825726397">"Qısayol əlçatan deyil"</string>
<string name="home_screen" msgid="5629429142036709174">"Əsas səhifə"</string>
- <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Bölünmüş ekran"</string>
+ <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ekran bölünməsi"</string>
<string name="long_press_widget_to_add" msgid="3587712543577675817">"Vidceti daşımaq üçün toxunub saxlayın."</string>
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Vidceti daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d hündürlük %1$d enində"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Əsas ekranda hərəkət etdirmək üçün vidcetə toxunub saxlayın"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Əsas ekrana əlavə edin"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Vidcet"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Axtarış"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Axtarış qutusundan mətni silin"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Əlçatan vidcet yoxdur"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Axtarış nəticəsi yoxdur"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Vidcet və qısayollar əlçatan deyil"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Vidcet və ya qısayol tapılmayıb"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Şəxsi"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"İş"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Söhbətlər"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Bildirişlər"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Qısayolu daşımaq üçün toxunub saxlayın."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Qısayolu daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Bu Əsas ekranda boş yer yoxdur."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Bu Əsas ekranda yer qalmayıb"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritlər-də yer yoxdur"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Tətbiq siyahısı"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Şəxsi tətbiqlərin siyahısı"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Əsas Səhifə ayarlarını və qısayolları yazın"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Tətbiqə Əsas Səhifədə ayarları və qısayolları dəyişməyə icazə verir."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqinə telefon zəngləri etmək üçün icazə verilmir"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Vidceti yükləmək olmur"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Ayarlamanı tamamlamaq üçün toxunun"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu sistem tətbiqi olduğu üçün sistemdən silinə bilməz."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Adı redaktə edin"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> deaktiv edildi"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"İş profili"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"İş tətbiqləri nişanlanıb və İT administratorunuza görünür"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Anladım"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"İş tətbiqləri deaktivdir"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"İş tətbiqlərinə pauza verilib"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"İş tətbiqləriniz sizə bildirişlər göndərə, batareyanızdan istifadə edə və ya məkanınıza daxil ola bilməz"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"İş tətbiqləri deaktivdir. İş tətbiqləriniz sizə bildirişlər göndərə, batareyanızdan istifadə edə və ya məkanınıza daxil ola bilməz"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"İş tətbiqləri nişanlanıb və İT administratorunuza görünür"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 3e43c50..62e4c2b 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite da biste pomerali vidžet ili koristite prilagođene radnje."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"širina od %1$d i visina od %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i zadržite vidžet da biste ga pomerali po početnom ekranu"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni ekran"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Vidžeti"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pretražite"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Obrišite tekst iz okvira za pretragu"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nije dostupan nijedan vidžet"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nema rezultata pretrage"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Vidžeti i prečice nisu dostupni"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nije pronađen nijedan vidžet ili prečica"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Lično"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Konverzacije"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Obaveštenja"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dvaput dodirnite i zadržite radi pomeranja prečice."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite da biste pomerali prečicu ili koristite prilagođene radnje."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Nema više prostora na ovom početnom ekranu."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Nema prostora na ovom početnom ekranu"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora na traci Omiljeno"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacija"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista ličnih aplikacija"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"upisivanje podešavanja i prečica na početnom ekranu"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Dozvoljava aplikaciji da menja podešavanja i prečice na početnom ekranu."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema dozvolu za upućivanje telefonskih poziva"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Učitavanje vidžeta nije uspelo"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Dodirnite da biste dovršili podešavanje"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je sistemska aplikacija i ne može da se deinstalira."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Izmenite naziv"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogućena"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Poslovni profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne aplikacije su označene značkom i IT administrator može da ih vidi"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Važi"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Poslovne aplikacije su isključene"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Poslovne aplikacije su pauzirane"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije ne mogu da vam šalju obaveštenja, koriste bateriju niti pristupaju lokaciji"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Poslovne aplikacije ne mogu da vam šalju obaveštenja, koriste bateriju niti pristupaju lokaciji"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne aplikacije su označene značkom i IT administrator može da ih vidi"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index d999729..9162de7 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць віджэт або выкарыстоўваць спецыяльныя дзеянні."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Шырына: %1$d, вышыня: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Утрымліваючы віджэт націснутым, перамяшчайце яго па Галоўным экране"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Дадаць на Галоўны экран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Віджэты"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Пошук"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Ачысціць тэкст у полі пошуку"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Віджэты недаступныя"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Няма вынікаў пошуку"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Віджэты і ярлыкі недаступныя"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Віджэтаў і ярлыкоў не знойдзена"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Асабістыя"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Працоўныя"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Размовы"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Апавяшчэнні"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Націсніце і ўтрымлівайце ярлык для перамяшчэння."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць ярлык або выкарыстоўваць спецыяльныя дзеянні."</string>
- <string name="out_of_space" msgid="4691004494942118364">"На гэтым Галоўным экране больш няма месца."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"На гэтым Галоўным экране няма месца"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"У латку \"Абранае\" больш няма месца"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Спіс праграм"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Спіс персанальных праграм"</string>
@@ -79,17 +81,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Усталяваць"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Не прапаноўваць праграму"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Замацаваць прапанаваную праграму"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"усталёўваць ярлыкі"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"Стварэнне ярлыкоў"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Дазваляе праграмам дадаваць ярлыкі без умяшання карыстальніка."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"счытваць налады і ярлыкі на Галоўнай старонцы"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Дазваляе праграме счытваць налады і ярлыкі на Галоўнай старонцы."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"запісваць налады і ярлыкі на галоўнай старонцы"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Дазваляе праграме змяняць налады і ярлыкі на Галоўнай старонцы."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> не мае дазволу на здзяйсненне тэлефонных званкоў"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Не ўдаецца загрузіць віджэт"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Націсніце, каб завяршыць наладжванне"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Гэта сістэмная праграма, яе нельга выдаліць."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Змяніць назву"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> адключана"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Працоўны профіль"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Працоўныя праграмы маюць значкі і бачныя IT-адміністратару"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Зразумела"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Працоўныя праграмы выключаны"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Працоўныя праграмы прыпынены"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Працоўныя праграмы не могуць адпраўляць вам апавяшчэнні, выкарыстоўваць акумулятар або атрымліваць доступ да даных пра ваша месцазнаходжанне"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Працоўныя праграмы выключаны. Яны не могуць адпраўляць вам апавяшчэнні, выкарыстоўваць акумулятар або атрымліваць доступ да вашага месцазнаходжання"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Працоўныя праграмы маюць значкі і бачныя IT-адміністратару"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index a104988..f23cef9 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Докоснете двукратно и задръжте за преместване на приспособление или използвайте персонал. действия."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d и височина %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Докоснете приспособлението и го задръжте, за да го местите по началния екран"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Добавяне към началния екран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Приспособления"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Търсене"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Изчистване на текста от полето за търсене"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Няма налични приспособления"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Няма резултати от търсенето"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Няма налице преки пътища и приспособления"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Няма открити преки пътища или приспособления"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лични"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Служебни"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Разговори"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Известия"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Докоснете и задръжте за преместване на пряк път."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Докоснете двукратно и задръжте за преместване на пряк път или използвайте персонализирани действия."</string>
- <string name="out_of_space" msgid="4691004494942118364">"На този начален екран няма повече място."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Няма място на този начален екран"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Няма повече място в областта с любимите"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Списък с приложения"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Списък с лични приложения"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"запис на настройките и преките пътища в Начало"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Разрешава на приложението да променя настройките и преките пътища в Начало."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> няма разрешение да извършва телефонни обаждания"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Приспособлението не може да се зареди"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Докоснете, за да завършите настройването"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Това е системно приложение и не може да се деинсталира."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Редактиране на името"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Деактивирахте <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Служебен потребителски профил"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Служебните приложения са означени със значка и са видими за системния администратор"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Разбрах"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Служебните ви приложения са изключени"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Служебните приложения са поставени на пауза"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Служебните ви приложения не могат да ви изпращат известия, да използват батерията или да осъществяват достъп до местоположението ви"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Служебните ви приложения са изключени. Те не могат да ви изпращат известия, да използват батерията или да осъществяват достъп до местоположението ви"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Служебните приложения са означени със значка и са видими за системния администратор"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index f89aecb..0c4bdea 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"একটি উইজেট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d উচ্চতা অনুযায়ী %1$d প্রস্থ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"হোম স্ক্রিনের যেকোনও জায়গায় উইজেটটি নিয়ে যেতে, টাচ করে ধরে থাকুন"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"হোম স্ক্রিনে যোগ করুন"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"উইজেট"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"সার্চ করুন"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"সার্চ বক্স থেকে টেক্সট মুছুন"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"কোনও উইজেট ফলাফল নেই"</string>
- <string name="no_search_results" msgid="6518732304311458580">"কোনও সার্চ ফলাফল নেই"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"উইজেট এবং শর্টকার্ট উপলভ্য নেই"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"কোনও উইজেট বা শর্টকার্ট খুঁজে পাওয়া যায়নি"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ব্যক্তিগত"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"অফিস"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"কথোপকথন"</string>
@@ -64,7 +66,8 @@
<string name="notifications_header" msgid="1404149926117359025">"বিজ্ঞপ্তি"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"একটি শর্টকাট সরাতে টাচ করে ধরে রাখুন।"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"একটি শর্টকাট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।"</string>
- <string name="out_of_space" msgid="4691004494942118364">"এই হোম স্ক্রীনে আর কোনো জায়গা নেই৷"</string>
+ <!-- no translation found for out_of_space (6692471482459245734) -->
+ <skip />
<string name="hotseat_out_of_space" msgid="7448809638125333693">"পছন্দসই ট্রে-তে আর কোনো জায়গা নেই"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"অ্যাপ্লিকেশানগুলির তালিকা"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ব্যক্তিগত অ্যাপের তালিকা"</string>
@@ -82,10 +85,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"হোম সেটিংস এবং শর্টকাটগুলি লেখে"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"হোমে অ্যাপ্লিকেশানটিকে সেটিংস এবং শর্টকাটগুলি পরিবর্তন করতে দেয়৷"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ফোন কলগুলি করার জন্য <xliff:g id="APP_NAME">%1$s</xliff:g> এর অনুমতি নেই"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"উইজেট লোড করা যাচ্ছে না"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"সেটআপ সম্পূর্ণ করতে ট্যাপ করুন"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"এটি একটি সিস্টেম অ্যাপ্লিকেশান এবং আনইনস্টল করা যাবে না৷"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"নাম এডিট করুন"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> অক্ষম করা হয়েছে"</string>
@@ -158,10 +159,9 @@
<string name="all_apps_personal_tab" msgid="4190252696685155002">"ব্যক্তিগত"</string>
<string name="all_apps_work_tab" msgid="4884822796154055118">"অফিস"</string>
<string name="work_profile_toggle_label" msgid="3081029915775481146">"অফিসের প্রোফাইল"</string>
- <!-- no translation found for work_profile_edu_work_apps (7895468576497746520) -->
- <skip />
+ <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"বুঝেছি"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"অফিসের অ্যাপ বন্ধ আছে"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"অফিসের অ্যাপ বন্ধ করা আছে"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"অফিসের অ্যাপ আপনাকে নোটিফিকেশন পাঠাতে পারবে না। এছাড়া, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"অফিসের অ্যাপ বন্ধ আছে। আপনার অফিসের অ্যাপ আপনাকে বিজ্ঞপ্তি পাঠাতে, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index b265d84..79d47cb 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite da pomjerite vidžet ili da koristite prilagođene radnje."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, visina %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i držite vidžet da ga pomjerate po Početnom ekranu"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni ekran"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Vidžeti"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pretražite"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Brisanje teksta iz okvira za pretraživanje"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nijedan vidžet nije dostupan"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nema rezultata pretraživanja"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Vidžeti i prečice nisu dostupni"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nije pronađen nijedan vidžet niti prečica"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Lično"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Razgovori"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Obavještenja"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dodirnite i zadržite da pomjerite prečicu."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite da pomjerite prečicu ili da koristite prilagođene radnje."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Nema više prostora na ovom početnom ekranu."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Nema prostora na početnom ekranu"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora u ladici Omiljeno"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacija"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista ličnih aplikacija"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"zapisuj postavke na početnom ekranu i prečice"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Dopušta aplikaciji promjenu postavki i prečica na početnom ekranu."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema odobrenje da uspostavlja telefonske pozive"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Nije moguće učitati vidžet"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Dodirnite da završite postavljanje"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je sistemska aplikacija i ne može se deinstalirati."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Uređivanje naziva"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogućena"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Radni profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Razumijem"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Poslovne aplikacije su isključene"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Poslovne aplikacije su pauzirane"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije vam ne mogu slati obavještenja, koristiti bateriju niti pristupiti vašoj lokaciji"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Poslovne aplikacije vam ne mogu slati obavještenja, koristiti bateriju ili pristupiti vašoj lokaciji"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 9cd23ba..de59cfc 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Fes doble toc i mantén premut per moure un widget o per utilitzar accions personalitzades."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d d\'amplada per %2$d d\'alçada"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén premut el widget per moure\'l per la pantalla d\'inici"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Afegeix a la pantalla d\'inici"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Cerca"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Esborra el text del quadre de cerca"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No hi ha widgets disponibles"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No hi ha cap resultat de la cerca"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"No hi ha widgets ni dreceres disponibles"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No s\'ha trobat cap widget ni drecera"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Treball"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Converses"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificacions"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Fes doble toc i mantén premut per moure una drecera."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Fes doble toc i mantén premut per moure una drecera o per utilitzar accions personalitzades."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Ja no queda espai en aquesta pantalla d\'inici."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No queda espai en aquesta pantalla d\'inici"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No hi ha més espai a la safata Preferits."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Llista d\'aplicacions"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Llista d\'aplicacions personals"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"escriu la configuració i les dreceres de la pantalla d\'inici"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permet que l\'aplicació canviï la configuració i les dreceres de la pantalla d\'inici."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> no té permís per fer trucades telefòniques"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"No es pot carregar el widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Toca per finalitzar la configuració"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Aquesta aplicació és una aplicació del sistema i no es pot desinstal·lar."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Edita el nom"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"S\'ha desactivat <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -104,7 +104,7 @@
<string name="folder_name_format_exact" msgid="8626242716117004803">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> elements"</string>
<string name="folder_name_format_overflow" msgid="4270108890534995199">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> o més elements"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fons de pantalla"</string>
- <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fons de pantalla i estil"</string>
+ <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Estil i fons de pantalla"</string>
<string name="settings_button_text" msgid="8873672322605444408">"Config. pantalla d\'inici"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desactivada per l\'administrador"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permet la rotació de la pantalla d\'inici"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de treball"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Entesos"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Les aplicacions de treball estan desactivades"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Les aplicacions de treball s\'han posat en pausa"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Les aplicacions de treball no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Les aplicacions de treball estan desactivades: no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 9785754..6a4d753 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvojitým klepnutím a podržením přesunete widget, případně použijte vlastní akce."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"šířka %1$d, výška %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pokud chcete widgetem pohybovat po ploše, podržte ho"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Přidat na plochu"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgety"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Vyhledávání"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Vymazat text z vyhledávacího pole"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nejsou k dispozici žádné widgety"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Žádné výsledky hledání"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgety ani zkratky nejsou k dispozici"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nebyly nalezeny žádné widgety ani zkratky"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobní"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Práce"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Konverzace"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Oznámení"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Klepnutím a podržením přesunete zkratku."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvojitým klepnutím a podržením přesunete zkratku, případně použijte vlastní akce."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Na této ploše již není místo."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Na této ploše není místo"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Na panelu Oblíbené položky již není místo."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Seznam aplikací"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Seznam osobních aplikací"</string>
@@ -86,10 +88,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"zápis nastavení a odkazů plochy"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Umožňuje aplikaci změnit nastavení a odkazy na ploše."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> nemá oprávnění telefonovat"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widget se nepodařilo načíst"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Klepnutím dokončíte konfiguraci"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Toto je systémová aplikace a nelze ji odinstalovat."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Upravit název"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je zakázána"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Pracovní profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Pracovní aplikace jsou označené a viditelné vašemu administrátorovi IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Rozumím"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Pracovní aplikace jsou vypnuté"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Pracovní aplikace jsou pozastaveny"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Pracovní aplikace vám nemohou zasílat oznámení, používat vaši baterii ani získat přístup k vaší poloze"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Pracovní aplikace jsou vypnuté. Nemohou vám zasílat oznámení, používat vaši baterii ani získat přístup k vaší poloze"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Pracovní aplikace jsou označené a viditelné vašemu administrátorovi IT"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d757b0e..3880808 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tryk to gange, og hold en widget nede for at flytte den eller bruge tilpassede handlinger."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i bredden og %2$d i højden"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Hold widgetten nede for at flytte den rundt på startskærmen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Føj til startskærm"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Søg"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Ryd teksten i søgefeltet"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Der er ingen tilgængelig widget"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Der er ingen søgeresultater"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Der er ingen tilgængelige widgets eller genveje"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Der blev ikke fundet nogen widgets eller genveje"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personlige"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Arbejde"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Samtaler"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifikationer"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Hold en genvej nede for at flytte den."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tryk to gange, og hold en genvej nede for at flytte den eller bruge tilpassede handlinger."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Der er ikke mere plads på denne startskærm."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Der er ikke ledig plads på startskærmen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Der er ikke mere plads i bakken Favoritter"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Liste med apps"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Liste over personlige apps"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"skrive indstillinger og genveje for startskærmen"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Tillader, at appen ændrer indstillingerne og genvejene på startskærmen."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har ikke tilladelse til at foretage telefonopkald"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widgetten kan ikke indlæses"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Tryk for at fuldføre konfigurationen"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Dette er en systemapp, som ikke kan afinstalleres."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Rediger navn"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> er deaktiveret"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Arbejdsprofil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Arbejdsapps har badges og kan ses af din it-administrator"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Arbejdsapps er deaktiveret"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Dine arbejdsapps er sat på pause"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Arbejdsapps kan ikke sende dig notifikationer, bruge dit batteri eller få adgang til din lokation"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Arbejdsapps er deaktiveret. Dine arbejdsapps kan ikke sende dig notifikationer, bruge dit batteri eller få adgang til din lokation"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Arbejdsapps har badges og kan ses af din it-administrator"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 8ae811f..e7abca7 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Doppeltippen und halten, um ein Widget zu bewegen oder benutzerdefinierte Aktionen zu nutzen."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breit und %2$d hoch"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Wenn du das Widget auf dem Startbildschirm verschieben möchtest, halte es gedrückt"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Zum Startbildschirm hinzufügen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Suche"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Text aus dem Suchfeld löschen"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Keine Widgets verfügbar"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Keine Suchergebnisse"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets und Shortcuts nicht verfügbar"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Keine Widgets oder Shortcuts gefunden"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Privat"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Geschäftlich"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Unterhaltungen"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Benachrichtigungen"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tippen und halten, um eine Verknüpfung zu bewegen."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Doppeltippen und halten, um eine Verknüpfung zu bewegen oder benutzerdefinierte Aktionen zu nutzen."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Auf diesem Startbildschirm ist kein Platz mehr vorhanden."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Auf dem Startbildschirm ist kein Platz mehr vorhanden"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Ablage \"Favoriten\" ist voll."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Liste der Apps"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Liste der privaten Apps"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Einstellungen und Verknüpfungen für den Startbildschirm schreiben"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu ändern"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> darf keine Telefonanrufe tätigen."</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widget kann nicht geladen werden"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Tippen, um Einrichtung abzuschließen"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Dies ist eine Systemanwendung, die nicht deinstalliert werden kann."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Name bearbeiten"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> deaktiviert"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Arbeitsprofil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Geschäftliche Apps sind gekennzeichnet und für deinen IT-Administrator sichtbar"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Geschäftliche Apps sind deaktiviert"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Geschäftliche Apps sind pausiert"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Deine geschäftlichen Apps können dir keine Benachrichtigungen senden, deinen Akku nicht nutzen und nicht auf deinen Standort zugreifen"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Geschäftliche Apps sind deaktiviert. Sie können dir keine Benachrichtigungen senden, deinen Akku nicht nutzen und nicht auf deinen Standort zugreifen."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Geschäftliche Apps sind gekennzeichnet und für deinen IT-Administrator sichtbar"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index fc7d691..66c6bd1 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Πατήστε δύο φορές παρατεταμένα για μετακίνηση γραφικού στοιχείου ή χρήση προσαρμοσμένων ενεργειών."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Πλάτος %1$d επί ύψος %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Αγγίξτε παρατεταμένα το γραφικό στοιχείο για να το μετακινήσετε στην Αρχική οθόνη"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Προσθήκη στην Αρχική οθόνη"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Γραφικά στοιχεία"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Αναζήτηση"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Διαγραφή κειμένου από το πλαίσιο αναζήτησης"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Δεν υπάρχουν διαθέσιμα γραφικά στοιχεία"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Κανένα αποτέλεσμα αναζήτησης"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Δεν υπάρχουν διαθέσιμα γραφικά στοιχεία και συντομεύσεις."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Δεν βρέθηκαν γραφικά στοιχεία ή συντομεύσεις."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Προσωπικά"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Εργασίας"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Συζητήσεις"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Ειδοποιήσεις"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Πατήστε παρατεταμένα για μετακίνηση συντόμευσης."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Πατήστε δύο φορές παρατεταμένα για μετακίνηση συντόμευσης ή χρήση προσαρμοσμένων ενεργειών."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Δεν υπάρχει επιπλέον χώρος στην περιοχή Αγαπημένα"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Λίστα εφαρμογών"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Λίστα προσωπικών εφαρμογών"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Προφίλ εργασίας"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Οι εφαρμογές εργασιών φέρουν σήμα και είναι ορατές στον διαχειριστή IT σας"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Το κατάλαβα"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Οι εφαρμογές εργασιών είναι απενεργοποιημένες"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Οι εφαρμογές εργασίας τέθηκαν σε παύση."</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Οι εφαρμογές εργασιών δεν έχουν τη δυνατότητα αποστολής ειδοποιήσεων, χρήσης της μπαταρίας ή πρόσβασης στην τοποθεσία σας"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Οι εφαρμογές εργασιών είναι απενεργοποιημένες. Οι εφαρμογές εργασιών δεν έχουν τη δυνατότητα αποστολής ειδοποιήσεων, χρήσης της μπαταρίας ή πρόσβασης στην τοποθεσία σας"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Οι εφαρμογές εργασιών φέρουν σήμα και είναι ορατές στον διαχειριστή IT σας"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 08d032b..f032f8b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap & hold to move a widget or use custom actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Search"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Clear text from search box"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No widgets available"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No search results"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets and shortcuts aren\'t available"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No widgets or shortcuts found"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch & hold to move a shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap & hold to move a shortcut or use custom actions."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Work apps are off"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 08d032b..f032f8b 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap & hold to move a widget or use custom actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Search"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Clear text from search box"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No widgets available"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No search results"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets and shortcuts aren\'t available"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No widgets or shortcuts found"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch & hold to move a shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap & hold to move a shortcut or use custom actions."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Work apps are off"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 08d032b..f032f8b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap & hold to move a widget or use custom actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Search"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Clear text from search box"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No widgets available"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No search results"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets and shortcuts aren\'t available"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No widgets or shortcuts found"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch & hold to move a shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap & hold to move a shortcut or use custom actions."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Work apps are off"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 08d032b..f032f8b 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap & hold to move a widget or use custom actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Search"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Clear text from search box"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No widgets available"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No search results"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets and shortcuts aren\'t available"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No widgets or shortcuts found"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch & hold to move a shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap & hold to move a shortcut or use custom actions."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Work apps are off"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 7ada105..b6f01ce 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -32,6 +32,7 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap & hold to move a widget or use custom actions."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
+ <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch & hold the widget to move it around the Home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Add to Home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +47,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Search"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Clear text from search box"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No widgets available"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No search results"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets and shortcuts aren\'t available"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No widgets or shortcuts found"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +65,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch & hold to move a shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap & hold to move a shortcut or use custom actions."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No more room on this Home screen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No room on this Home screen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favorites tray"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -158,7 +159,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Got it"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Work apps are off"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery, or access your location"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery, or access your location"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 607d831..18b00c6 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Presiona dos veces y mantén presionado para mover un widget o usar acciones personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén presionado el widget para moverlo por la pantalla principal"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Agregar a pantalla principal"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Buscar"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Borra el texto del cuadro de búsqueda"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No hay widgets disponibles"</string>
- <string name="no_search_results" msgid="6518732304311458580">"La búsqueda no arrojó resultados"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Los widgets y accesos directos no están disponibles"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No se encontraron widgets ni accesos directos"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personales"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabajo"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversaciones"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificaciones"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén presionado para mover un acceso directo."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Presiona dos veces y mantén presionado para mover un acceso directo o usar acciones personalizadas."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No hay más espacio en esta pantalla principal."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No hay más espacio en esta pantalla principal"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"La bandeja de favoritos está llena."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de apps"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de apps personales"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de trabajo"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Las apps de trabajo tienen una insignia y el administrador de IT las puede ver"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Las apps de trabajo están desactivadas"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Las apps de trabajo están detenidas"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Las apps de trabajo no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Las apps de trabajo están desactivadas y, por ende, no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Las apps de trabajo tienen una insignia y el administrador de IT las puede ver"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 03ac6d1..4f4c697 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toca dos veces y mantén pulsado un widget para moverlo o usar acciones personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén pulsado el widget para moverlo por la pantalla de inicio"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Añadir a la pantalla de inicio"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Buscar"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Borrar texto del cuadro de búsqueda"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"No hay widgets disponibles"</string>
- <string name="no_search_results" msgid="6518732304311458580">"No hay resultados de búsqueda"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Los widgets y los accesos directos no están disponibles"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"No se han encontrado widgets ni accesos directos"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personales"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabajo"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversaciones"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificaciones"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén pulsado un acceso directo para moverlo."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toca dos veces y mantén pulsado un acceso directo para moverlo o usar acciones personalizadas."</string>
- <string name="out_of_space" msgid="4691004494942118364">"No queda espacio en la pantalla de inicio."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"No queda espacio en la pantalla de inicio"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"La bandeja de favoritos está completa"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicaciones"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de aplicaciones personales"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"escribir información de accesos directos y de ajustes de la pantalla de inicio"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permite que las aplicaciones cambien los ajustes y los accesos directos de la pantalla de inicio."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> no puede hacer llamadas"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"No se puede cargar el widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Toca para finalizar la configuración"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Esta aplicación es del sistema y no se puede desinstalar."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Editar nombre"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Se ha inhabilitado <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de trabajo"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Las aplicaciones de trabajo tienen una insignia, y tu administrador de TI las puede ver"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Las aplicaciones de trabajo están desactivadas"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Se han pausado las aplicaciones de trabajo"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Tus aplicaciones de trabajo no pueden enviarte notificaciones, consumir batería ni acceder a tu ubicación"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Las aplicaciones de trabajo están desactivadas, por lo que no pueden enviarte notificaciones, consumir batería ni acceder a tu ubicación"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Las aplicaciones de trabajo tienen una insignia y tu administrador de TI las puede ver"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 9ec12fc..3e3aed7 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Vidina teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lai ja %2$d kõrge"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Vidina teisaldamiseks avakuval puudutage vidinat ja hoidke seda all"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Lisa avakuvale"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Vidinad"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Otsing"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Kustuta otsingukastis olev tekst"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Ühtki vidinat pole saadaval"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Otsingutulemused puuduvad"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Vidinad ja otseteed pole saadaval"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Ei leitud ühtegi vidinat ega otseteed"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Isiklikud"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Töö"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Vestlused"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Märguanded"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Otsetee teisaldamiseks puudutage ja hoidke all."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Otsetee teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Sellel avakuval pole enam ruumi."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Sellel avakuval pole ruumi"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Salves Lemmikud pole rohkem ruumi"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Rakenduste loend"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Isiklike rakenduste loend"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"avakuva seadete ja otseteede kirjutamine"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Võimaldab rakendusel muuta avaekraanil seadeid ja otseteid."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Rakendusel <xliff:g id="APP_NAME">%1$s</xliff:g> pole lubatud helistada"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Vidinat ei saa laadida"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Puudutage seadistuse lõpuleviimiseks"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"See on süsteemirakendus ja seda ei saa desinstallida."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Muuda nime"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> on keelatud"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Tööprofiil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Töörakendustel on märk ja need on teie IT-administraatorile nähtavad"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Selge"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Töörakendused on välja lülitatud"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Töörakendused on peatatud"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Töörakendused ei saa teile märguandeid saata, akut kasutada ega teie asukohale juurde pääseda"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Töörakendused on välja lülitatud. Töörakendused ei saa teile märguandeid saata, akut kasutada ega teie asukohale juurde pääseda."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Töörakendustel on märk ja need on teie IT-administraatorile nähtavad"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 0df92ad..1f31a5f 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Sakatu birritan eta eduki sakatuta widget bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d zabal eta %2$d luze"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Eduki sakatuta widgeta hasierako pantailan zehar mugitzeko"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Gehitu hasierako pantailan"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgetak"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Bilatu"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Garbitu bilaketa-koadroko testua"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Ez dago widget erabilgarririk"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ez dago bilaketa-emaitzarik"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgetak eta lasterbideak erabilgarri daude"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Ez da aurkitu widgetik edo lasterbiderik"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pertsonalak"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Lanekoak"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Elkarrizketak"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Jakinarazpenak"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Eduki sakatuta lasterbide bat mugitzeko."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Sakatu birritan eta eduki sakatuta lasterbide bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Hasierako pantaila honetan ez dago toki gehiago."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Ez dago tokirik hasierako pantailan"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Ez dago toki gehiago Gogokoak erretiluan"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Aplikazioen zerrenda"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Aplikazio pertsonalen zerrenda"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Idatzi hasierako ezarpenak eta lasterbideak"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Hasierako pantailako ezarpenak eta lasterbideak aldatzeko baimena ematen die aplikazioei."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez du telefono-deiak egiteko baimenik"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Ezin da kargatu widgeta"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Konfiguratzen amaitzeko, sakatu hau"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Sistema-aplikazioa da hau eta ezin da desinstalatu."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Editatu izena"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> desgaituta dago"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Laneko profila"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Laneko aplikazioek bereizgarriak dituzte, eta IKT saileko administratzaileak ikus ditzake"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Ados"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Laneko aplikazioak desaktibatuta daude"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Pausatu egin dira laneko aplikazioak"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Laneko aplikazioek ezin dute jakinarazpenik bidali, bateria erabili edo kokapena atzitu"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Laneko aplikazioak desaktibatuta daude. Hori dela eta, ezin dute jakinarazpenik bidali, bateria erabili edo kokapena atzitu."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Laneko aplikazioek bereizgarriak dituzte, eta IKT saileko administratzaileak ikus ditzake"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9da53ca..513f76f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"برای جابهجا کردن ابزارک یا استفاده از کنشهای سفارشی، دوضربه بزنید و نگه دارید."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d عرض در %2$d طول"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ابزارک را لمس کنید و نگه دارید تا آن را در صفحه اصلی حرکت دهید"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"افزودن به صفحه اصلی"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ابزارکها"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"جستجو"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"پاک کردن نوشتار از چارگوش جستجو"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ابزارکی دردسترس نیست"</string>
- <string name="no_search_results" msgid="6518732304311458580">"بدون نتیجه جستجو"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ابزارک و میانبری دردسترس نیست"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"هیچ ابزارک یا میانبری پیدا نشد"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ابزارکهای شخصی"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"کار"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"مکالمهها"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"اعلانها"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"برای جابهجا کردن میانبر، لمس کنید و نگه دارید."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"برای جابهجا کردن میانبر یا استفاده از کنشهای سفارشی، دوضربه بزنید و نگه دارید."</string>
- <string name="out_of_space" msgid="4691004494942118364">"فضای بیشتری در این صفحه اصلی موجود نیست."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"فضای خالی در این صفحه اصلی وجود ندارد"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"فضای بیشتری در سینی موارد دلخواه وجود ندارد"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"فهرست برنامهها"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"فهرست برنامههای شخصی"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"نوشتن تنظیمات و میانبرهای صفحه اصلی"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"به برنامه اجازه میدهد تنظیمات و میانبرها را در صفحه اصلی تغییر دهد."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> مجاز نیست تماس تلفنی برقرار کند"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ابزارک را نمیتوان بار کرد"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"برای تکمیل راهاندازی ضربه بزنید"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"این برنامه سیستمی است و حذف نصب نمیشود."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ویرایش نام"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> غیرفعال شد"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"نمایه کاری"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"برنامههای کاری دارای نشان هستند و سرپرست سیستم میتواند آنها را ببیند"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"متوجهام"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"برنامههای کاری خاموش است"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"برنامههای کاری موقتاً متوقف میشوند"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"برنامههای کاری نمیتوانند برای شما اعلان ارسال کنند، از باتری استفاده کنند، یا به مکانتان دسترسی داشته باشند"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"برنامههای کاری خاموش است. برنامههای کاری نمیتوانند برای شما اعلان ارسال کنند، از باتری استفاده کنند، یا به مکانتان دسترسی داشته باشند"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"برنامههای کاری دارای نشان هستند و سرپرست سیستم میتواند آنها را ببیند."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index fd8b671..c930be9 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Kaksoisnapauta ja paina pitkään, niin voit siirtää widgetiä tai käyttää muokattuja toimintoja."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Leveys: %1$d, korkeus: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Voit siirtää widgetiä aloitusnäytöllä koskettamalla sitä pitkään"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Lisää aloitusnäytölle"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgetit"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Haku"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Tyhjennä teksti hakukentästä"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Ei widgetejä käytettävissä"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ei hakutuloksia"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgetit ja pikanäppäimet eivät ole saatavilla"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Widgetejä tai pikanäppäimiä ei löytynyt"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Henkilökohtaiset"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Työ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Keskustelut"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Ilmoitukset"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Kosketa pitkään, niin voit siirtää pikakuvaketta."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Kaksoisnapauta ja paina pitkään, niin voit siirtää pikakuvaketta tai käyttää muokattuja toimintoja."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Tässä aloitusruudussa ei ole enää tilaa."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Tällä aloitusnäytöllä ei ole tilaa"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Suosikit-valikossa ei ole enää tilaa"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Sovellusluettelo"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Omat sovellukset ‑luettelo"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"kirjoita aloitusruudun asetuksia ja pikakuvakkeita"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Antaa sovelluksen muuttaa aloitusruudun asetuksia ja pikakuvakkeita."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei saa soittaa puheluita."</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widgetiä ei voi ladata"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Viimeistele asennus napauttamalla"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Tämä on järjestelmäsovellus, eikä sitä voi poistaa."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Muokkaa nimeä"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> poistettiin käytöstä"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Työprofiili"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Työsovellukset on merkitty ja ne näkyvät IT-järjestelmänvalvojalle"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Selvä"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Työsovellukset ovat pois päältä"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Työsovellukset on keskeytetty"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Työsovellukset eivät voi lähettää sinulle ilmoituksia eivätkä käyttää akkuasi tai paikantaa sijaintiasi"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Työsovellukset ovat pois päältä. Ne eivät voi lähettää sinulle ilmoituksia eivätkä käyttää akkuasi tai sijaintiasi"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Työsovellukset on merkitty ja ne näkyvät IT-järjestelmänvalvojalle"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index fb358ea..6a48e94 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Touchez 2x un widget et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur sur %2$d de hauteur"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Maintenez le doigt sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Ajouter à l\'écran d\'accueil"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Rechercher"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Effacer le texte dans le champ de recherche"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Aucun widget n\'est installé"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Aucun résultat de recherche"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Aucun widget ou raccourci proposé"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Aucun widget ni raccourci trouvé"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personnels"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Professionnels"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Maintenez le doigt sur un raccourci pour le déplacer."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Touchez deux fois un raccourci et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Pas d\'espace libre sur l\'écran d\'accueil."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Pas d\'espace libre sur cet écran d\'accueil"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Il n\'y a plus d\'espace dans la zone des favoris"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Liste des applications"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Liste des applications personnelles"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"enregistrer les paramètres de la page d\'accueil et des raccourcis"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas autorisée à faire des appels téléphoniques"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Impossible de charger le widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Touchez pour terminer la configuration"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Impossible de désinstaller cette application, car il s\'agit d\'une application système."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Modifier le nom"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> est désactivée"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil professionnel"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les applications professionnelles sont indiquées par un badge et elles sont visibles pour votre administrateur informatique"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Les applications professionnelles sont désactivées"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Les applications professionnelles sont interrompues"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Les applications professionnelles ne peuvent ni vous envoyer de notifications, ni utiliser la pile, ni accéder à votre position"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Les applications professionnelles sont désactivées. Vos applications professionnelles ne peuvent ni vous envoyer de notifications, ni utiliser la pile, ni accéder à votre position"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les applications professionnelles sont indiquées par un badge et sont visibles pour votre administrateur informatique"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 098ce6f..556117d 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Appuyez deux fois et maintenez la pression pour déplacer widget ou utiliser actions personnalisées."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur et %2$d de hauteur"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Appuyez de manière prolongée sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Ajouter à l\'écran d\'accueil"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Rechercher"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Effacer le texte du champ de recherche"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Aucun widget disponible"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Aucun résultat de recherche"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Les widgets et les raccourcis ne sont pas disponibles"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Aucun widget ni raccourci trouvés"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personnels"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Professionnels"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Appuyez de manière prolongée pour déplacer raccourci."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Appuyez deux fois et maintenez la pression pour déplacer un raccourci ou utiliser les actions personnalisées."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Pas d\'espace libre sur cet écran d\'accueil."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Pas d\'espace libre sur cet écran d\'accueil"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Plus d\'espace disponible dans la zone de favoris."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Liste d\'applications"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Liste des applications personnelles"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"modifier les paramètres et les raccourcis de l\'écran d\'accueil"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permettre à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas autorisée à passer des appels téléphoniques."</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Impossible de charger le widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Appuyez pour terminer la configuration"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Impossible de désinstaller cette application, car il s\'agit d\'une application système."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Modifier le nom"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> est désactivé."</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil professionnel"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les applis professionnelles sont identifiées par un badge et votre administrateur informatique peut les voir"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Les applis professionnelles sont désactivées"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Applications professionnelles en veille"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Vos applis professionnelles ne peuvent pas vous envoyer de notifications, utiliser votre batterie ni accéder à votre position"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Vos applis professionnelles sont désactivées. Elles ne peuvent pas vous envoyer de notifications, utiliser votre batterie ni accéder à votre position."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les applis professionnelles sont identifiées par un badge et votre administrateur informatique peut les voir"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 8cc9361..6ce88ee 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toca dúas veces un widget e manteno premido para movelo ou utiliza accións personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largo por %2$d de alto"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén premido o widget para movelo pola pantalla de inicio"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Engadir á pantalla de inicio"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Busca Widgets"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Borrar texto da caixa de busca"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Non hai widgets dispoñibles"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Non hai resultados da busca"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Non hai widgets nin atallos dispoñibles"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Non se atoparon widgets nin atallos"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Widgets persoais"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Widgets do traballo"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificacións"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén premido un atallo para movelo."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toca dúas veces un atallo e manteno premido para movelo ou utiliza accións personalizadas."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Non hai máis espazo nesta pantalla de inicio."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Non queda espazo nesta pantalla de inicio"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Non hai máis espazo na bandexa de favoritos"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicacións"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de aplicacións persoais"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"modificar a configuración e os atallos da pantalla de inicio"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permite a unha aplicación cambiar a configuración e os atallos da pantalla de inicio."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> non ten permiso para facer chamadas telefónicas"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Non se puido cargar o widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Toca para rematar a configuración"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Esta aplicación é do sistema e non se pode desinstalar."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Edita o nome"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Desactivouse <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de traballo"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"As aplicacións do traballo están desactivadas"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Puxéronse en pausa as aplicacións do traballo"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"As aplicacións do traballo non poden enviarche notificacións, utilizar a batería nin acceder á túa localización"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"As aplicacións do traballo están desactivadas e non poden enviarche notificacións, utilizar a batería nin acceder á túa localización"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 2e0171d..1db9d72 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"વિજેટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d પહોળાઈ X %2$d ઊંચાઈ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"વિજેટને હોમ સ્ક્રીનની આજુબાજુ ખસેડવા માટે, તેને ટચ કરીને થોડીવાર દબાવી રાખો"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"હોમ સ્ક્રીન પર ઉમેરો"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"વિજેટ્સ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"શોધ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"શોધ બૉક્સમાંથી ટેક્સ્ટ સાફ કરો"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"કોઈ વિજેટ ઉપલબ્ધ નથી"</string>
- <string name="no_search_results" msgid="6518732304311458580">"કોઈ શોધ પરિણામો નથી"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"વિજેટ અને શૉર્ટકટ ઉપલબ્ધ નથી"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"કોઈ વિજેટ અથવા શૉર્ટકટ મળ્યા નથી"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"વ્યક્તિગત"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ઑફિસ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"વાતચીતો"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"નોટિફિકેશન"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"શૉર્ટકટ ખસેડવા ટચ કરીને થોડી વાર દબાવી રાખો."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"શૉર્ટકટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો."</string>
- <string name="out_of_space" msgid="4691004494942118364">"આ હોમ સ્ક્રીન પર વધુ જગ્યા નથી."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"આ હોમ સ્ક્રીન પર વધુ જગ્યા નથી"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"મનપસંદ ટ્રે પર વધુ જગ્યા નથી"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ઍપ્લિકેશનોની સૂચિ"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"વ્યક્તિગત ઍપની સૂચિ"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"ઇન્સ્ટૉલ કરો"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"ઍપ સૂચવશો નહીં"</string>
<string name="pin_prediction" msgid="4196423321649756498">"પૂર્વાનુમાનને પિન કરો"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"શોર્ટકટ્સ ઇન્સ્ટોલ કરો"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"શૉર્ટકટ ઇન્સ્ટૉલ કરો"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"એપ્લિકેશનને વપરાશકર્તા હસ્તક્ષેપ વગર શોર્ટકટ્સ ઉમેરવાની મંજૂરી આપે છે."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"હોમ સેટિંગ્સ અને શોર્ટકટ્સ વાંચો"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"એપ્લિકેશનને હોમમાં સેટિંગ્સ અને શોર્ટકટ્સ વાંચવાની મંજૂરી આપે છે."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"હોમ સેટિંગ્સ અને શોર્ટકટ્સ લખો"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"એપ્લિકેશનને હોમમાં સેટિંગ્સ અને શોર્ટકટ્સ બદલવાની મંજૂરી આપે છે."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ને ફોન કૉલ્સ કરવાની મંજૂરી નથી"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"વિજેટ લોડ કરી શકાતું નથી"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"સેટઅપ પૂર્ણ કરવા માટે ટૅપ કરો"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"આ એક સિસ્ટમ ઍપ્લિકેશન છે અને અનઇન્સ્ટોલ કરી શકાતી નથી."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"નામમાં ફેરફાર કરો"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> અક્ષમ કરી"</string>
@@ -158,10 +158,9 @@
<string name="all_apps_personal_tab" msgid="4190252696685155002">"મનગમતી ઍપ"</string>
<string name="all_apps_work_tab" msgid="4884822796154055118">"ઑફિસની ઍપ"</string>
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ઑફિસની પ્રોફાઇલ"</string>
- <!-- no translation found for work_profile_edu_work_apps (7895468576497746520) -->
- <skip />
+ <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT વ્યવસ્થાપક તેમને જોઈ શકે છે"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"સમજાઈ ગયું"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ઑફિસ માટેની ઍપ બંધ છે"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ઑફિસ માટેની ઍપ થોભાવવામાં આવેલ છે"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ઑફિસ માટેની તમારી ઍપ તમને નોટિફિકેશન મોકલી શકતી નથી, તમારી બૅટરી વાપરી શકતી નથી કે તમારું સ્થાન ઍક્સેસ કરી શકતી નથી"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ઑફિસ માટેની ઍપ બંધ છે. ઑફિસ માટેની તમારી ઍપ તમને નોટિફિકેશન મોકલી શકતી નથી, તમારી બૅટરી વાપરી શકતી નથી કે તમારું સ્થાન ઍક્સેસ કરી શકતી નથી"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT વ્યવસ્થાપક તેમને જોઈ શકે છે"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index fbadca6..7e96968 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौड़ाई गुणा %2$d ऊंचाई"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"होम स्क्रीन पर यहां-वहां ले जाने के लिए विजेट को दबाकर रखें"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"होम स्क्रीन पर जोड़ें"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"विजेट"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"खोजें"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"खोज बॉक्स से टेक्स्ट हटाएं"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"कोई विजेट उपलब्ध नहीं है"</string>
- <string name="no_search_results" msgid="6518732304311458580">"खोज का कोई नतीजा नहीं मिला"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"विजेट और शॉर्टकट उपलब्ध नहीं हैं"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"कोई विजेट या शॉर्टकट नहीं मिला"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"निजी विजेट"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ऑफ़िस"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"बातचीत"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"सूचनाएं"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"किसी शॉर्टकट को एक से दूसरी जगह ले जाने के लिए, उसे दबाकर रखें."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"किसी शॉर्टकट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें."</string>
- <string name="out_of_space" msgid="4691004494942118364">"इस होम स्क्रीन पर जगह नहीं बची है"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"इस होम स्क्रीन पर जगह खाली नहीं है"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"पसंदीदा ट्रे में और जगह नहीं है"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ऐप्लिकेशन सूची"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"निजी ऐप्लिकेशन की सूची"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"होम पेज की सेटिंग और शॉर्टकट लिखें"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ऐप्लिकेशन को होम पेज में सेटिंग और शॉर्टकट बदलने देती है."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> को फ़ोन कॉल करने की अनुमति नहीं है"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"विजेट को लोड नहीं किया जा सका"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"सेट अप पूरा करने के लिए टैप करें"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"यह एक सिस्टम ऐप्लिकेशन है और इसे अनइंस्टॉल नहीं किया जा सकता."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"नाम में बदलाव करें"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> अक्षम है"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"वर्क प्रोफ़ाइल"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन, बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ठीक है"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बंद हैं"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन रोके गए"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ऑफ़िस के काम से जुड़े आपके ऐप्लिकेशन, आपको सूचनाएं नहीं भेज सकते. साथ ही, आपकी बैटरी का इस्तेमाल या आपकी जगह की जानकारी को ऐक्सेस भी नहीं कर सकते"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बंद हैं. ये ऐप्लिकेशन, आपको सूचनाएं नहीं भेज सकते. साथ ही, आपकी बैटरी का इस्तेमाल या आपकी जगह की जानकारी को ऐक्सेस भी नहीं कर सकते"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन, बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 09d315f..ac19155 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite pritisak da biste premjestili widget ili upotrijebite prilagođene radnje"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d širine i %2$d visine"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i zadržite widget da biste ga pomicali po početnom zaslonu"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni zaslon"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgeti"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pretražite"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Izbrišite tekst iz okvira za pretraživanje"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nije dostupan nijedan widget"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nema rezultata pretraživanja"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgeti i prečaci nisu dostupni"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nema widgeta ili prečaca"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobni"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Razgovori"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Obavijesti"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dodirnite i zadržite da biste premjestili prečac."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite pritisak da biste premjestili prečac ili upotrijebite prilagođene radnje."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Na ovom početnom zaslonu više nema mjesta."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Na ovom početnom zaslonu više nema mjesta"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora na traci Favoriti"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Popis aplikacija"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Popis osobnih aplikacija"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"pisanje postavki početnog zaslona i prečaca"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Aplikaciji omogućuje promjenu postavki i prečaca na početnom zaslonu."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema dopuštenje za telefonske pozive"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widget se ne može učitati"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Dodirnite da biste dovršili postavljanje"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je aplikacija sustava i ne može se ukloniti."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Uređivanje naziva"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> onemogućena"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Poslovni profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne su aplikacije označene i vidljive vašem IT administratoru"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Shvaćam"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Poslovne aplikacije su isključene"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Pauzirane su poslovne lokacije"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije ne mogu vam slati obavijesti, trošiti bateriju niti pristupiti vašoj lokaciji"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Ne mogu vam slati obavijesti, trošiti bateriju ili pristupiti vašoj lokaciji"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne su aplikacije označene i vidljive vašem IT administratoru"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 2167540..2b4d914 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Modul áthelyezéséhez koppintson duplán, tartsa nyomva az ujját, vagy használjon egyéni műveleteket."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d széles és %2$d magas"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tartsa lenyomva a modult a kezdőképernyőn való mozgatáshoz"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Hozzáadás a kezdőképernyőhöz"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Modulok"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Keresés"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Keresőmezőben lévő szöveg törlése"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nincs rendelkezésre álló modul"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nincsenek keresési találatok"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"A modulok és parancsikonok nem állnak rendelkezésre"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nem található modul vagy parancsikon"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Személyes"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Munka"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Beszélgetések"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Értesítések"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tartsa lenyomva a parancsikont az áthelyezéshez."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Parancsikon áthelyezéséhez koppintson duplán, és tartsa nyomva az ujját, vagy használjon egyéni műveleteket."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Nincs több hely ezen a kezdőképernyőn."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Nincs több hely ezen a kezdőképernyőn"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Nincs több hely a Kedvencek tálcán"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Alkalmazások listája"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Személyes alkalmazások listája"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Főoldal beállításainak és parancsikonjainak írása"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a kezdőképernyő beállításait és parancsikonjait."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem kezdeményezhet telefonhívásokat"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Nem tölthető le a modul"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Koppintson a beállítás befejezéséhez"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ez egy rendszeralkalmazás, és nem lehet eltávolítani."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Név módosítása"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> letiltva"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Munkaprofil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és láthatók a rendszergazda számára"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Értem"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"A munkahelyi alkalmazások ki vannak kapcsolva"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"A munkahelyi alkalmazások szüneteltetve vannak"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"A munkahelyi alkalmazások nem küldhetnek értesítéseket, nem használhatják az akkumulátort, és nem férhetnek hozzá az Ön tartózkodási helyéhez."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"A munkahelyi alkalmazások ki vannak kapcsolva, nem küldhetnek értesítéseket, nem használhatják az akkumulátort, és nem férhetnek hozzá az Ön tartózkodási helyéhez"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és láthatók a rendszergazda számára"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index b261b02..ea421f7 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Կրկնակի հպեք և պահեք՝ վիջեթ տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Լայնությունը՝ %1$d, բարձրությունը՝ %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Հպեք վիջեթին և պահեք տեղափոխելու համար"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Ավելացնել հիմնական էկրանին"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Վիջեթներ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Որոնեք"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Մաքրել որոնման դաշտի տեքստը"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Վիջեթներ չկան"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Որոնման արդյունքներ չկան"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Հասանելի վիջեթներ և դյուրանցումներ չկան"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Ոչ մի վիջեթ կամ դյուրանցում չի գտնվել"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Անձնական"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Աշխատանքային"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Զրույցներ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Ծանուցումներ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Հպեք և պահեք՝ դյուրանցում տեղափոխելու համար։"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Կրկնակի հպեք և պահեք՝ դյուրանցում տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։"</string>
- <string name="out_of_space" msgid="4691004494942118364">"Այլևս տեղ չկա այս հիմնական էկրանին:"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Հիմնական էկրանին ազատ տեղ չկա"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Ընտրյալների ցուցակում այլևս ազատ տեղ չկա"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Հավելվածների ցանկ"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Անձնական հավելվածների ցանկ"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Տեղադրել"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Թաքցնել առաջարկը"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Ամրացնել առաջարկվող հավելվածը"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"տեղադրել դյուրանցումներ"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"Դյուրանցումների տեղադրում"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Ծրագրին թույլ է տալիս ավելացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:"</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Ծրագրին թույլ է տալիս կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները:"</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"ստեղծել հիմնաէջի կարգավորումներ ու դյուրանցումներ"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Ծրագրին թույլ է տալիս փոփոխել հիմնաէջի կարգավորումներն ու դյուրանցումները:"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածին չի թույլատրվում հեռախոսազանգեր կատարել"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Չհաջողվեց բեռնել վիջեթը"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Հպեք՝ կարգավորումն ավարտելու համար"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Սա համակարգային ծրագիր է և չի կարող ապատեղադրվել:"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Փոխել անունը"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն անջատված է"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Աշխատանքային պրոֆիլ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Աշխատանքային հավելվածները նշանակներ ունեն և տեսանելի են ՏՏ ադմինիստրատորին"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Եղավ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Աշխատանքային հավելվածներն անջատված են"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Աշխատանքային հավելվածները դադարեցված են"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Աշխատանքային հավելվածները չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Աշխատանքային հավելվածներն անջատված են։ Դրանք չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Աշխատանքային հավելվածները նշանակներ ունեն և տեսանելի են ՏՏ ադմինիստրատորին"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 8b45632..b7324ee 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ketuk dua kali & tahan untuk memindahkan widget atau gunakan tindakan khusus."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"lebar %1$d x tinggi %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Sentuh lama widget untuk memindahkannya di sekitar Layar utama"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Tambahkan ke Layar utama"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Telusuri"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Hapus teks dari kotak penelusuran"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Widget tidak tersedia"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Tidak ada hasil penelusuran"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widget dan pintasan tidak tersedia"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Tidak ada widget atau pintasan yang ditemukan"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pribadi"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Kantor"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Percakapan"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifikasi"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Sentuh lama untuk memindahkan pintasan."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ketuk dua kali & tahan untuk memindahkan pintasan atau gunakan tindakan khusus."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Tidak ada ruang lagi di Layar Utama ini."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Tidak ada ruang di Layar utama ini"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Tidak ada ruang tersisa di baki Favorit"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Daftar aplikasi"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Daftar aplikasi pribadi"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"menulis setelan dan pintasan layar Utama"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Mengizinkan aplikasi mengubah setelan dan pintasan di layar Utama."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak diizinkan untuk melakukan panggilan telepon"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Tidak dapat memuat widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Ketuk untuk menyelesaikan penyiapan"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ini adalah aplikasi sistem dan tidak dapat dicopot pemasangannya."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Sunting Nama"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> dinonaktifkan"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil kerja"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikasi kerja diberi badge dan terlihat oleh admin IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Oke"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Aplikasi kerja dinonaktifkan"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikasi kerja dijeda"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Aplikasi kerja tidak dapat mengirimkan notifikasi, menggunakan baterai, atau mengakses lokasi Anda"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikasi kerja dinonaktifkan. Aplikasi kerja tidak dapat mengirimkan notifikasi, menggunakan baterai, atau mengakses lokasi Anda"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikasi kerja diberi badge dan terlihat oleh admin IT"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index baa4a87..d9431ca 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ýttu tvisvar og haltu fingri á græju til að færa hana eða notaðu sérsniðnar aðgerðir."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d á breidd og %2$d á hæð"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Haltu fingri á græjunni til að hreyfa hana um heimaskjáinn"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Bæta á heimaskjá"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Græjur"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Leit"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Hreinsa texta úr leitarreit"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Engar græjur í boði"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Engar leitarniðurstöður"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Græjur og flýtileiðir eru ekki í boði"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Engar græjur eða flýtileiðir fundust"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persónulegt"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Vinna"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Samtöl"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Tilkynningar"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Haltu fingri á flýtileið til að færa hana."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ýttu tvisvar og haltu fingri á flýtileið til að færa hana eða notaðu sérsniðnar aðgerðir."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Ekki meira pláss á þessum heimaskjá."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Ekkert pláss á þessum heimaskjá"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Ekki meira pláss í bakka fyrir uppáhald"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Forritalisti"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Listi yfir eigin forrit"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"skrifa stillingar og flýtileiðir heimaskjás"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Leyfir forriti að breyta stillingum og flýtileiðum heimaskjás."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> hefur ekki leyfi til að hringja símtöl"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Ekki hægt að hlaða græju"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Ýttu til að ljúka við uppsetningu"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Þetta er kerfisforrit sem ekki er hægt að fjarlægja."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Breyta nafni"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Óvirkt <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Vinnusnið"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Vinnuforrit eru merkt og kerfisstjórinn getur séð þau"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Ég skil"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Slökkt er á vinnuforritum"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Hlé gert á vinnuforritum"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Vinnuforrit geta ekki sent þér tilkynningar, notað rafhlöðuorku eða fengið aðgang að staðsetningu þinni"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Slökkt er á vinnuforritum. Vinnuforrit geta ekki sent þér tilkynningar, notað rafhlöðuorku eða fengið aðgang að staðsetningu þinni"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Vinnuforrit eru merkt og kerfisstjórinn getur séð þau"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 54a6560..71b6498 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tocca due volte e tieni premuto per spostare un widget o per usare le azioni personalizzate."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d di larghezza per %2$d di altezza"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tocca e tieni premuto il widget per spostarlo nella schermata Home"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Aggiungi a schermata Home"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Cerca"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Cancella il testo nella casella di ricerca"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nessun widget disponibile"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nessun risultato di ricerca"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widget e scorciatoie non disponibili"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Impossibile trovare widget o scorciatoie"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personali"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Lavoro"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversazioni"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notifiche"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tocca e tieni premuto per spostare una scorciatoia."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tocca due volte e tieni premuto per spostare una scorciatoia o per usare le azioni personalizzate."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Spazio nella schermata Home esaurito."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Non c\'è più spazio nella schermata Home"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Spazio esaurito nella barra dei Preferiti"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Elenco di app"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Elenco di app personali"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"creazione di impostazioni e scorciatoie in Home"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Consente all\'app di modificare le impostazioni e le scorciatoie in Home."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> non è autorizzata a effettuare telefonate"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Impossibile caricare il widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Tocca per completare la configurazione"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Questa è un\'app di sistema e non può essere disinstallata."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Modifica nome"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"App <xliff:g id="APP_NAME">%1$s</xliff:g> disattivata"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profilo di lavoro"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Le app di lavoro sono contrassegnate con un badge e visibili all\'amministratore IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Le app di lavoro non sono attive"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Le app di lavoro sono in pausa"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Le app di lavoro non possono inviarti notifiche, usare la batteria o accedere alla tua posizione"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Le app di lavoro non sono attive e non possono inviarti notifiche, usare la batteria o accedere alla tua posizione"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Le app di lavoro sono contrassegnate con un badge e sono visibili dal tuo amministratore IT"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 6291e30..dc0b261 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"כדי להעביר ווידג\'ט למקום אחר או להשתמש בפעולות מותאמות אישית, יש ללחוץ פעמיים ולא להרפות."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"רוחב %1$d על גובה %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"יש ללחוץ לחיצה ארוכה על הווידג\'ט כדי להזיז אותו ברחבי מסך הבית"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"הוספה למסך הבית"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ווידג\'טים"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"חיפוש"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"מחיקת טקסט מתיבת החיפוש"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"אין ווידג\'טים זמינים"</string>
- <string name="no_search_results" msgid="6518732304311458580">"אין תוצאות חיפוש"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"אין ווידג\'טים או קיצורי דרך"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"לא נמצאו ווידג\'טים או קיצורי דרך"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ווידג\'טים אישיים"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"עבודה"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"שיחות"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"התראות"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"כדי להעביר קיצור דרך למקום אחר יש לגעת ולא להרפות."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"כדי להעביר קיצור דרך למקום אחר או להשתמש בפעולות מותאמות אישית\' יש ללחוץ פעמיים ולא להרפות."</string>
- <string name="out_of_space" msgid="4691004494942118364">"אין עוד מקום במסך הבית הזה."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"אין מקום במסך הבית הזה"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"אין עוד מקום במגש המועדפים"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"רשימת אפליקציות"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"רשימת אפליקציות אישיות"</string>
@@ -86,10 +88,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"כתיבת הגדרות וקיצורי דרך של דף הבית"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"מאפשר לאפליקציה לשנות את ההגדרות וקיצורי הדרך בדף הבית."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> אינו רשאי להתקשר"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"לא ניתן לטעון את הווידג\'ט"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"צריך להקיש כדי לסיים את תהליך ההגדרה"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"זוהי אפליקציית מערכת ולא ניתן להסיר את התקנתה."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"עריכת השם"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> מושבתת"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"פרופיל עבודה"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"האפליקציות לעבודה מתויגות ומוצגות למנהל ה-IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"הבנתי"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"האפליקציות לעבודה מושבתות"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"האפליקציות לעבודה מושהות"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"האפליקציות לעבודה לא יכולות לשלוח לך התראות, להשתמש בסוללה או לגשת למיקום שלך"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"האפליקציות לעבודה מושבתות. האפליקציות לא יכולות לשלוח לך התראות, להשתמש בסוללה או לגשת למיקום שלך"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"האפליקציות לעבודה מתויגות ומוצגות למנהל ה-IT"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 3586843..abf7667 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ウィジェットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$dx%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"幅 %1$d、高さ %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ウィジェットを押し続けると、ホーム画面上に移動できます。"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ホーム画面に追加"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ウィジェット"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"検索"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"検索ボックスからテキストを消去します"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"利用できるウィジェットはありません"</string>
- <string name="no_search_results" msgid="6518732304311458580">"検索結果がありません"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ウィジェットもショートカットも利用できません"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ウィジェットもショートカットも見つかりませんでした"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人用"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"仕事用"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"会話"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"通知"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"長押ししてショートカットを移動してください。"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ショートカットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。"</string>
- <string name="out_of_space" msgid="4691004494942118364">"このホーム画面には空きスペースがありません。"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"このホーム画面には空きスペースがありません"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"お気に入りトレイに空きスペースがありません"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"アプリのリスト"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"個人用アプリのリスト"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ホームの設定とショートカットの書き込み"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ホームの設定とショートカットの変更をアプリに許可します。"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」から電話をかけることはできません"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ウィジェットを読み込めません"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"タップして設定を完了してください"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"このシステムアプリはアンインストールできません。"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"名前の編集"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」は無効です"</string>
@@ -160,9 +160,9 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"仕事用プロファイル"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"仕事用アプリはバッジが付き、IT 管理者に公開されます"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"仕事用アプリは OFF になっています"</string>
- <string name="work_apps_paused_body" msgid="261634750995824906">"仕事用アプリは、通知の送信、バッテリーの使用、位置情報の取得を行えません"</string>
- <string name="work_apps_paused_content_description" msgid="5149623040804051095">"仕事用アプリは OFF になっています。仕事用アプリは、通知の送信、バッテリーの使用、位置情報の取得を行えません"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"仕事用アプリの一時停止"</string>
+ <string name="work_apps_paused_body" msgid="261634750995824906">"仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています"</string>
+ <string name="work_apps_paused_content_description" msgid="5149623040804051095">"仕事用アプリは OFF になっています。仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"仕事用アプリはバッジが付き、IT 管理者に公開されます"</string>
<string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
<string name="work_apps_pause_btn_text" msgid="1921059713673767460">"仕事用アプリを OFF にする"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index a03a458..8b423c0 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ორმაგი შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"სიგრძე: %1$d, სიგანე: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ხანგრძლივად შეეხეთ ვიჯეტს მთავარ ეკრანზე მის გადასაადგილებლად"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"მთავარ ეკრანზე დამატება"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ვიჯეტები"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ძიება"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ტექსტის გასუფთავება საძიებო ველიდან"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ვიჯეტები მიუწვდომელია"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ძიების შედეგები ვერ მოიძებნა"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ვიჯეტები და მალსახმობები ხელმისაწვდომი არ არის"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ვიჯეტები ან მალსახმობები ვერ მოიძებნა"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"პირადი"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"სამსახური"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"მიმოწერები"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"შეტყობინებები"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"შეხებით აირჩიეთ და გეჭიროთ მალსახმობის გადასაადგილებლად."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ორმაგი შეხებით აირჩიეთ და გეჭიროთ მალსახმობის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად."</string>
- <string name="out_of_space" msgid="4691004494942118364">"ამ მთავარ ეკრანზე ადგილი აღარ არის."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ამ მთავარ ეკრანზე ადგილი არ არის"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"რჩეულების თაროზე ადგილი არ არის"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"აპების სია"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"პერსონალური აპების სია"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"სამსახურის პროფილი"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"სამსახურის აპები ბეჯით არის მონიშნული და ხილულია IT ადმინისტრატორისთვის"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"გასაგებია"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"სამსახურის აპები გამორთულია"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"სამსახურის აპები დაპაუზებულია"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"თქვენს სამსახურის აპებს არ შეუძლია თქვენთვის შეტყობინებების გამოგზავნა, თქვენი ბატარეის გამოყენება, ან თქვენს მდებარეობაზე წვდომა"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"სამსახურის აპები გამორთულია. თქვენს სამსახურის აპებს არ შეუძლია თქვენთვის შეტყობინებების გამოგზავნა, თქვენი ბატარეის გამოყენება, ან თქვენს მდებარეობაზე წვდომა"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"სამსახურის აპები ბეჯით არის მონიშნული და ხილულია IT ადმინისტრატორისთვის"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 057ca35..a240a55 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Виджетті жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ені: %1$d, биіктігі: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Негізгі экранда қозғалту үшін виджетті басып тұрыңыз."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Негізгі экранға қосу"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виджеттер"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Іздеу"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Мәтінді іздеу өрісінен өшіру"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Қолжетімді виджет жоқ."</string>
- <string name="no_search_results" msgid="6518732304311458580">"Іздеу нәтижелері жоқ."</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Виджеттер мен таңбашалар қолжетімді емес."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Ешқандай виджет немесе таңбаша табылмады."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Жеке виджеттер"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Жұмыс виджеттері"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Әңгімелер"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Хабарландырулар"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Таңбашаны жылжыту үшін басып тұрыңыз."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Таңбашаны жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Бұл Негізгі экранда орын қалмады."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Негізгі экранда бос орын қалмады."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Қалаулылар науасында орын қалмады"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Қолданбалар тізімі"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Жеке қолданбалар тізімі"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Орнату"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Қолданбаны ұсынбау"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Болжанған қолданбаны бекіту"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"төте пернелерді орнату"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"таңбаша орнату"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Қолданбаға пайдаланушының қатысуынсыз төте пернелерді қосу мүмкіндігін береді."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"Негізгі экрандағы параметрлер мен төте пернелерді оқу"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Қолданбаға Негізгі экрандағы параметрлер мен төте пернелерді оқу мүмкіндігін береді."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"Негізгі экран параметрлері мен төте пернелерін жазу"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Қолданбаға Негізгі экрандағы параметрлер мен төте пернелерді өзгерту мүмкіндігін береді."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> арқылы телефон қоңырауларын соғуға рұқсат етілмеген"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Виджетті жүктеу мүмкін емес."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Реттеуді аяқтау үшін түртіңіз."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Бұл жүйе қолданбасы, сондықтан оны алу мүмкін емес."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Атын өңдеу"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> өшірілді"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Жұмыс профилі"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Жұмыс қолданбаларының танымбелгілері бар және олар әкімшіңізге көрінеді."</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Түсінікті"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Жұмыс қолданбалары өшірулі"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Жұмыс қолданбалары кідіртілді"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Жұмыс қолданбалары сізге хабарландырулар жібере, батареяңызды немесе локацияңызды пайдалана алмайды."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Жұмыс қолданбалары өшірулі. Олар сізге хабарландырулар жібере, батареяңызды немесе локацияңызды пайдалана алмайды."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Жұмыс қолданбаларының танымбелгілері бар және олар әкімшіңізге көрінеді."</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 08f9d0a..1b03630 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទីធាតុក្រាហ្វិក ឬប្រើសកម្មភាពតាមបំណង។"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ទទឺង %1$d គុណនឹងកម្ពស់ %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ចុចធាតុក្រាហ្វិកឱ្យជាប់ ដើម្បីផ្លាស់ទីវាជុំវិញអេក្រង់ដើម"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"បញ្ចូលទៅអេក្រង់ដើម"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ធាតុក្រាហ្វិក"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ស្វែងរក"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"សម្អាតពាក្យឬឃ្លាចេញពីប្រអប់ស្វែងរក"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"គ្មានធាតុក្រាហ្វិកទេ"</string>
- <string name="no_search_results" msgid="6518732304311458580">"គ្មានលទ្ធផលស្វែងរកទេ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"មិនមានធាតុក្រាហ្វិក និងផ្លូវកាត់បានទេ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"រកមិនឃើញធាតុក្រាហ្វិក ឬផ្លូវកាត់ទេ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ផ្ទាល់ខ្លួន"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ការងារ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ការសន្ទនា"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"ការជូនដំណឹង"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ចុចឱ្យជាប់ដើម្បីផ្លាស់ទីផ្លូវកាត់។"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទីផ្លូវកាត់ ឬប្រើសកម្មភាពតាមបំណង។"</string>
- <string name="out_of_space" msgid="4691004494942118364">"គ្មានកន្លែងនៅលើអេក្រង់ដើមនេះទៀតទេ។"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"គ្មានកន្លែងនៅលើអេក្រង់ដើមនេះទេ"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"គ្មានបន្ទប់ក្នុងថាសនិយមប្រើ"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"បញ្ជីកម្មវិធី"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"បញ្ជីកម្មវិធីផ្ទាល់ខ្លួន"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"សរសេរការកំណត់ និងផ្លូវកាត់លើអេក្រង់ដើម"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"អនុញ្ញាតឲ្យកម្មវិធីប្ដូរការកំណត់ និងផ្លូវកាត់ក្នុងអេក្រង់ដើម។"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនត្រូវបានអនុញ្ញាតឲ្យធ្វើការហៅទូរស័ព្ទទេ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"មិនអាចផ្ទុកធាតុក្រាហ្វិកបានទេ"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ចុចដើម្បីបញ្ចប់ការរៀបចំ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"នេះជាកម្មវិធីប្រព័ន្ធ មិនអាចលុបបានទេ។"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"កែឈ្មោះ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"បានបិទដំណើរការ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"កម្រងព័ត៌មានការងារ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"កម្មវិធីការងារត្រូវបានដាក់គ្រឿងសម្គាល់ ហើយអ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកអាចមើលឃើញ"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"យល់ហើយ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"កម្មវិធីការងារត្រូវបានបិទ"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"កម្មវិធីការងារត្រូវបានផ្អាក"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"កម្មវិធីការងាររបស់អ្នកមិនអាចផ្ញើការជូនដំណឹងទៅអ្នក ប្រើប្រាស់ថ្មរបស់អ្នក ឬចូលប្រើទីតាំងរបស់អ្នកបានទេ"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"កម្មវិធីការងារត្រូវបានបិទ។ កម្មវិធីការងាររបស់អ្នកមិនអាចផ្ញើការជូនដំណឹងទៅអ្នក ប្រើប្រាស់ថ្មរបស់អ្នក ឬចូលប្រើទីតាំងរបស់អ្នកបានទេ"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"កម្មវិធីការងារត្រូវបានដាក់គ្រឿងសម្គាល់ ហើយអ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកអាចមើលឃើញ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 01dda6d..938aa98 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ವಿಜೆಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ಅಗಲ ಮತ್ತು %2$d ಎತ್ತರ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ಮುಖಪುಟದ ಪರದೆ ಸುತ್ತ ವಿಜೆಟ್ ಅನ್ನು ಸರಿಸಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ಮುಖಪುಟಕ್ಕೆ ಸೇರಿಸಿ"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ವಿಜೆಟ್ಗಳು"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ಹುಡುಕಿ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ಹುಡುಕಾಟ ಪೆಟ್ಟಿಗೆಯಿಂದ ಪಠ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ಯಾವುದೇ ವಿಜೆಟ್ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ಯಾವುದೇ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳಿಲ್ಲ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ವಿಜೆಟ್ಗಳು ಮತ್ತು ಶಾರ್ಟ್ಕಟ್ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ಯಾವುದೇ ವಿಜೆಟ್ಗಳು ಅಥವಾ ಶಾರ್ಟ್ಕಟ್ಗಳು ಕಂಡುಬಂದಿಲ್ಲ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ವೈಯಕ್ತಿಕ"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ಕೆಲಸ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ಸಂವಾದಗಳು"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"ಅಧಿಸೂಚನೆಗಳು"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ಶಾರ್ಟ್ಕಟ್ ಸರಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ಶಾರ್ಟ್ಕಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
- <string name="out_of_space" msgid="4691004494942118364">"ಈ ಮುಖಪುಟದ ಪರದೆಯಲ್ಲಿ ಹೆಚ್ಚು ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ಈ ಹೋಮ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ಸ್ಥಳಾವಾಕಾಶವಿಲ್ಲ"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ಮೆಚ್ಚಿನವುಗಳ ಟ್ರೇನಲ್ಲಿ ಹೆಚ್ಚಿನ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ಅಪ್ಲಿಕೇಶನ್ಗಳ ಪಟ್ಟಿ"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ವೈಯಕ್ತಿಕ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಪಟ್ಟಿ"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ಮುಖಪುಟದ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಬರೆಯಿರಿ"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ಮುಖಪುಟದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು <xliff:g id="APP_NAME">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ವಿಜೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ಇದೊಂದು ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ ಮತ್ತು ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳನ್ನು ಬ್ಯಾಡ್ಜ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಅವುಗಳು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಗೆ ಗೋಚರಿಸುತ್ತವೆ"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ಸರಿ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳು ಆಫ್ ಆಗಿವೆ"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ಉದ್ಯೋಗದ ಆ್ಯಪ್ಗಳನ್ನು ವಿರಾಮಗೊಲಿಸಲಾಗಿದೆ"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳಿಗೆ ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು, ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಲು ಅಥವಾ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳು ಆಫ್ ಆಗಿವೆ. ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳು ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು, ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಲು ಅಥವಾ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳು ಬ್ಯಾಡ್ಜ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಗೆ ಗೋಚರಿಸುತ್ತದೆ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index c06d337..83e190d 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"두 번 탭한 다음 길게 터치하여 위젯을 이동하거나 맞춤 작업을 사용하세요."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"너비 %1$d, 높이 %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"홈 화면에서 위젯을 이동하려면 길게 터치하세요."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"홈 화면에 추가"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"위젯"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"검색"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"검색창에서 텍스트 지우기"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"사용 가능한 위젯 없음"</string>
- <string name="no_search_results" msgid="6518732304311458580">"검색결과 없음"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"위젯이나 바로가기를 사용할 수 없습니다."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"위젯이나 바로가기가 없습니다."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"개인 위젯"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"직장 위젯"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"대화"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"알림"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"길게 터치하여 바로가기를 이동하세요."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"두 번 탭한 다음 길게 터치하여 바로가기를 이동하거나 맞춤 작업을 사용하세요."</string>
- <string name="out_of_space" msgid="4691004494942118364">"홈 화면에 더 이상 공간이 없습니다."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"홈 화면에 더 이상 공간이 없습니다."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"즐겨찾기 트레이에 더 이상 공간이 없습니다."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"앱 목록"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"개인 앱 목록"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"홈 설정 및 바로가기 쓰기"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"앱이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 전화를 걸 수 없습니다."</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"위젯을 로드할 수 없습니다."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"탭하여 설정을 완료하세요."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"시스템 앱은 제거할 수 없습니다."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"이름 수정"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> 사용 안함"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"직장 프로필"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"확인"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"직장 앱이 꺼져 있음"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"직장 앱이 일시중지됨"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"직장 앱이 꺼져 있습니다. 직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다."</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 122beac..3cf86ff 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Виджетти жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Туурасы: %1$d, бийиктиги: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Башкы экранга жылдыруу үчүн виджетти коё бербей басып туруңуз"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Башкы экранга кошуу"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виджеттер"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Издөө"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Текстти издөө кутучасынан тазалоо"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Виджет жок"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Издөө жыйынтыктары жок"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Виджеттер менен ыкчам баскычтар жеткиликсиз"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Виджеттер менен ыкчам баскычтар табылган жок"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Жеке виджеттер"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Жумуш"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Сүйлөшүүлөр"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Билдирмелер"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Ыкчам баскычты жылдыруу үчүн коё бербей басып туруңуз."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ыкчам баскычты жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Бул экранда бош орун жок."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Башкы экранда бош орун жок"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Тандамалдар тайпасында орун калган жок"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Колдонмолор тизмеси"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Жеке колдономолордун тизмеси"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Үйдүн тууралоолорун жана тез чакырмаларын жазуу"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Колдонмого Үйдүн тууралоолорун жана тез чакырмаларын өзгөртүүгө уруксат берет."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> телефон чалууларды аткарууга уруксаты жок"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Виджет жүктөлбөй жатат"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Жөндөп бүтүрүү үчүн таптап коюңуз"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Бул системдик колдонмо жана аны чечкенге болбойт."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Аталышын түзөтүү"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> өчүрүлгөн"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Жумуш профили"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Жумуш колдонмолору белгиленип, аларды IT администраторлору көрөт"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Түшүндүм"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Жумуш колдонмолору өчүк"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Жумуш колдонмолору тындырылды"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Жумуш колдонмолору билдирмелерди жөнөтүп, түзмөгүңүздүн батареясын керектеп же кайда жүргөнүңүздү көрө албайт"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Жумуш колдонмолору өчүк жана билдирмелерди жөнөтүп, түзмөгүңүздүн батареясын керектеп же кайда жүргөнүңүздү көрө албайт"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Жумуш колдонмолору белгиленип, аларды IT администраторлору көрөт"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 73d9fc4..be361e0 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ກວ້າງ %1$d ຄູນສູງ %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ແຕະວິດເຈັດຄ້າງໄວ້ເພື່ອຍ້າຍມັນໄປມາຢູ່ໂຮມສະກຣີນ"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ເພີ່ມໄປໃສ່ໂຮມສະກຣີນ"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ວິດເຈັດ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ຊອກຫາ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ລຶບລ້າງຂໍ້ຄວາມຈາກກ່ອງຊອກຫາ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ບໍ່ມີວິດເຈັດທີ່ສາມາດໃຊ້ໄດ້"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ບໍ່ມີຜົນການຊອກຫາ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ບໍ່ສາມາດໃຊ້ວິດເຈັດ ຫຼື ທາງລັດໄດ້"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ບໍ່ພົບວິດເຈັດ ຫຼື ທາງລັດ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ສ່ວນຕົວ"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ວຽກ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ການສົນທະນາ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"ການແຈ້ງເຕືອນ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ແຕະຄ້າງໄວ້ເພື່ອຍ້າຍທາງລັດ."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍທາງລັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ."</string>
- <string name="out_of_space" msgid="4691004494942118364">"ບໍ່ມີບ່ອນຫວ່າງໃນໜ້ານີ້."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ບໍ່ມີບ່ອນຫວ່າງໃນໜ້າໂຮມສະກຣີນນີ້"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ບໍ່ມີບ່ອນຫວ່າງໃນຖາດສຳລັບເກັບສິ່ງທີ່ໃຊ້ເປັນປະຈຳ"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ລາຍຊື່ແອັບ"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ລາຍຊື່ແອັບສ່ວນຕົວ"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ຂຽນການຕັ້ງຄ່າໜ້າຫຼັກ ແລະທາງລັດ"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ປ່ຽນການຕັ້ງຄ່າ ແລະທາງລັດໃນໜ້າຫຼັກ."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໂທ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ບໍ່ສາມາດໂຫຼດວິດເຈັດໄດ້"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ແຕະເພື່ອຕັ້ງຄ່າໃຫ້ແລ້ວ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ນີ້ແມ່ນແອັບຯຂອງລະບົບ ແລະບໍ່ສາມາດຖອນການຕິດຕັ້ງອອກໄດ້."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ແກ້ໄຂຊື່"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"ປິດການນຳໃຊ້ <xliff:g id="APP_NAME">%1$s</xliff:g> ແລ້ວ"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ແອັບບ່ອນເຮັດວຽກແມ່ນຖືກຕິດປ້າຍ ແລະ ສະແດງໃຫ້ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານເຫັນ"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ເຂົ້າໃຈແລ້ວ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ແອັບບ່ອນເຮັດວຽກຖືກປິດໄວ້ຢູ່"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ຢຸດແອັບວຽກໄວ້ຊົ່ວຄາວແລ້ວ"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ແອັບບ່ອນເຮັດວຽກຂອງທ່ານຈະບໍ່ສາມາດສົ່ງການແຈ້ງເຕືອນຫາທ່ານ, ໃຊ້ແບັດເຕີຣີຂອງທ່ານ ຫຼື ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ແອັບບ່ອນເຮັດວຽກຖືກປິດໄວ້ຢູ່. ແອັບບ່ອນເຮັດວຽກຂອງທ່ານຈະບໍ່ສາມາດສົ່ງການແຈ້ງເຕືອນໃຫ້ທ່ານ, ໃຊ້ແບັດເຕີຣີຂອງທ່ານ ຫຼື ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ແອັບບ່ອນເຮັດວຽກແມ່ນຖືກຕິດປ້າຍ ແລະ ສະແດງໃຫ້ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານເຫັນ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 6843530..1114f26 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dukart palieskite ir palaikykite, kad perkeltumėte valdiklį ar naudotumėte tinkintus veiksmus."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plotis ir %2$d aukštis"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Paliesdami ir palaikydami valdiklį galite judėti pagrindiniame ekrane"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Pridėti prie pagrindinio ekrano"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Valdikliai"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Paieška"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Išvalyti tekstą iš paieškos laukelio"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nėra jokių pasiekiamų valdiklių"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nėra jokių paieškos rezultatų"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Valdikliai ir spartieji klavišai nepasiekiami"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Neaptikta jokių valdiklių ar sparčiųjų klavišų"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Asmeniniai"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Darbas"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Pokalbiai"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Pranešimai"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dukart pal. ir palaik., kad perk. spart. klavišą."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dukart palieskite ir palaikykite, kad perkeltumėte spartųjį klavišą ar naudotumėte tinkintus veiksmus."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Šiame pagrindiniame ekrane vietos nebėra."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Šiame pagrindiniame ekrane nebėra vietos"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Mėgstamiausių dėkle nebėra vietos"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Programų sąrašas"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Asmeninių programų sąrašas"</string>
@@ -86,10 +88,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"rašyti pagrindinio puslapio nustatymus ir sparčiuosius klavišus"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Programai leidžiama keisti pagrindinio puslapio nustatymus ir sparčiuosius klavišus."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ neleidžiama skambinti"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Nepavyko įkelti valdiklio"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Palieskite, kad užbaigtumėte sąranką"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Tai sistemos programa ir jos negalima pašalinti."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Pavadinimo redagavimas"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ išjungta"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Darbo profilis"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Darbo programos yra pažymėtos ženkleliu ir matomos IT administratoriui"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Supratau"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Darbo programos išjungtos"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Darbo programos pristabdytos"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Darbo programos negali siųsti jums pranešimų, naudoti jūsų akumuliatoriaus ar pasiekti jūsų vietovės"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Darbo programos išjungtos. Darbo programos negali siųsti jums pranešimų, naudoti jūsų akumuliatoriaus ar pasiekti jūsų vietovės"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Darbo programos yra pažymėtos ženkleliu ir matomos IT administratoriui"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index ed6ebf6..5735b06 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Lai pārvietotu logrīku, uz tā veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plats un %2$d augsts"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pieskarieties logrīkam un turiet to, lai to pārvietotu pa sākuma ekrānu."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Pievienot sākuma ekrānam"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Logrīki"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Meklēt"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Notīrīt tekstu no meklēšanas lodziņa"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nav pieejams neviens logrīks"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nav meklēšanas rezultātu"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Logrīki un saīsnes nav pieejamas."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Netika atrasts neviens logrīks vai saīsne."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personīgs"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Darba"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Sarunas"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Paziņojumi"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Lai pārvietotu saīsni, pieskarieties un turiet."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Lai pārvietotu saīsni, uz tās veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Šajā sākuma ekrānā vairs nav vietas."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Šajā sākuma ekrānā nav vietas"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Izlases joslā vairs nav vietas."</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lietotņu saraksts"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personīgo lietotņu saraksts"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"rakstīt sākuma ekrāna iestatījumus un saīsnes"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Ļauj lietotnei mainīt iestatījumus un saīsnes sākuma ekrānā."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g> nav atļauts veikt tālruņa zvanus."</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Nevar ielādēt logrīku."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Pieskarieties, lai pabeigtu iestatīšanu."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Šī ir sistēmas lietotne, un to nevar atinstalēt."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Nosaukuma rediģēšana"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> ir atspējota"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Darba profils"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Darba lietotnēm ir pievienota emblēma, un tās ir redzamas jūsu IT administratoram"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Labi"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Darba lietotnes ir izslēgtas"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Darba lietotnes ir apturētas"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Jūsu darba lietotnes nevar sūtīt jums paziņojumus, izmantot akumulatoru un piekļūt jūsu atrašanās vietai."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Darba lietotnes ir izslēgtas. Jūsu darba lietotnes nevar sūtīt jums paziņojumus, izmantot akumulatoru un piekļūt jūsu atrašanās vietai."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Darba lietotnēm ir pievienota emblēma, un tās ir redzamas jūsu IT administratoram"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 2d53811..3bf2a97 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Допрете двапати и задржете за да преместите виџет или користете приспособени дејства."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d широк на %2$d висок"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Допрете го и задржете го виџетот за да го движите наоколу на почетниот екран"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Додај на почетниот екран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виџети"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Пребарувајте"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Избриши го текстот од полето за пребарување"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Нема достапни виџети"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Нема резултати од пребарувањето"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Виџетите и кратенките не се достапни"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Не се најдени виџети или кратенки"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лични"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Работни"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Разговори"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Известувања"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Допрете и задржете за да преместите кратенка."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Допрете двапати и задржете за да преместите кратенка или користете приспособени дејства."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Нема повеќе простор на овој екран на почетната страница."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Нема простор на почетниов екран"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Нема повеќе простор на лентата „Омилени“"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Список со апликации"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Список со лични апликации"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"пишува поставки и кратенки на почетна страница"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Овозможува апликацијата да ги менува подесувањата и кратенките на почетната страница."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> нема дозвола за телефонски повици"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Не може да се вчита виџетот"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Допрете за да го завршите поставувањето"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ова е системска апликација и не може да се деинсталира."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Изменете го името"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> е оневозможена"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Работен профил"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Работните апликации имаат значка и се видливи за IT-администраторот"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Сфатив"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Работните апликации се исклучени"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Работните апликации се паузирани"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Работните апликации не може да ви испраќаат известувања, да ја користат батеријата или да пристапуваат до вашата локација"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Работните апликации се исклучени. Не може да ви испраќаат известувања, да ја користат батеријата или да пристапуваат до вашата локација"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Работните апликации имаат значка и се видливи за IT-администраторот"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f323d8f..b46f1d7 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"വിജറ്റ് നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d വീതിയും %2$d ഉയരവും"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ഹോം സ്ക്രീനിന് ചുറ്റും വിജറ്റ് നീക്കാൻ അതിൽ സ്പർശിച്ച് പിടിക്കുക"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ഹോം സ്ക്രീനിലേക്ക് ചേർക്കുക"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"വിജറ്റുകൾ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"തിരയൽ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"സെർച്ച് ബോക്സിൽ നിന്ന് ടെക്സ്റ്റ് മായ്ക്കുക"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ഒരു വിജറ്റുകളും ലഭ്യമല്ല"</string>
- <string name="no_search_results" msgid="6518732304311458580">"തിരയൽ ഫലങ്ങളൊന്നുമില്ല"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"വിജറ്റുകളും കുറുക്കുവഴികളും ലഭ്യമല്ല"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"വിജറ്റുകളോ കുറുക്കുവഴികളോ കണ്ടെത്തിയില്ല"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"വ്യക്തിപരം"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ജോലി"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"സംഭാഷണങ്ങൾ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"അറിയിപ്പുകൾ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"കുറുക്കുവഴി നീക്കാൻ സ്പർശിച്ച് പിടിക്കുക."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"കുറുക്കുവഴി നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ."</string>
- <string name="out_of_space" msgid="4691004494942118364">"ഈ ഹോം സ്ക്രീനിൽ ഒഴിവൊന്നുമില്ല."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ഈ ഹോം സ്ക്രീനിലിൽ ഇടമില്ല"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"പ്രിയപ്പെട്ടവയുടെ ട്രേയിൽ ഒഴിവൊന്നുമില്ല"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"അപ്ലിക്കേഷനുകളുടെ ലിസ്റ്റ്"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"വ്യക്തിഗത ആപ്പുകളുടെ ലിസ്റ്റ്"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ഹോം ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും റൈറ്റുചെയ്യുക"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും മാറ്റാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ഫോൺ കോൾ ചെയ്യാൻ <xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനെ അനുവദിച്ചിട്ടില്ല"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"വിജറ്റ് ലോഡ് ചെയ്യാനാകുന്നില്ല"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"സജ്ജീകരണം പൂർത്തിയാക്കാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ഇതൊരു സിസ്റ്റം അപ്ലിക്കേഷനായതിനാൽ അൺഇൻസ്റ്റാളുചെയ്യാനാവില്ല."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"പേര് എഡിറ്റ് ചെയ്യുക"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്മിന് കാണാനുമാകും"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"മനസ്സിലായി"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ഔദ്യോഗിക ആപ്പുകൾ ഓഫാണ്"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ഔദ്യോഗിക ആപ്പുകൾ ഓഫാണ്. നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്മിന് കാണാനും കഴിയും"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index fc9f772..1320658 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Жижиг хэрэгслийг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d өргөн %2$d өндөр"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Жижиг хэрэгслийг Үндсэн нүүрний эргэн тойронд зөөхийн тулд түүнд хүрээд, удаан дарна уу"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Үндсэн нүүрэнд нэмэх"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виджет"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Хайх"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Хайх хэсгээс текстийг арилгах"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Боломжтой жижиг хэрэгсэл байхгүй"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Хайлтын илэрц байхгүй"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Жижиг хэрэгсэл болон товчлол боломжгүй байна"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Жижиг хэрэгсэл эсвэл товчлол олдсонгүй"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Хувийн виджетүүд"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Ажил"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Харилцан яриа"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Мэдэгдэл"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Товчлолыг зөөхийн тулд хүрээд, удаан дарна уу."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Товчлолыг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Энэ Нүүр дэлгэц зайгүй."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Энэ үндсэн нүүрэнд зай байхгүй байна"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"\"Дуртай\" трей дээр өөр зай байхгүй байна"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Апп-н жагсаалт"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Хувийн аппын жагсаалт"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Нүүрний тохиргоо болон товчлолыг бичих"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Апп нь Нүүрэндэх товчлол болон тохиргоог өөрчилж чадна."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> утасны дуудлага хийх боломжгүй"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Жижиг хэрэгслийг ачаалах боломжгүй"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Тохируулгыг дуусгахын тулд товшино уу"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Энэ апп нь системийн апп ба устгах боломжгүй."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Нэр засах"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г идэвхгүй болгосон"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Ажлын профайл"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ажлын аппуудыг тэмдэглэсэн бөгөөд танай IT админд харагдана"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Ойлголоо"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Ажлын аппууд унтраалттай байна"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Ажлын аппуудыг түр зогсоосон"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Таны ажлын аппууд танд мэдэгдэл илгээх, таны батарейг ашиглах эсвэл байршилд тань хандах боломжгүй"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ажлын аппууд унтраалттай байна. Таны ажлын аппууд танд мэдэгдэл илгээх, таны батарейг ашиглах эсвэл байршилд тань хандах боломжгүй"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ажлын аппуудыг тэмдэглэсэн бөгөөд танай IT админд харагдана"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 6a333f7..dab39d9 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"विजेट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d रूंद बाय %2$d उंच"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"होम स्क्रीनवर ते हलवण्यासाठी विजेटला स्पर्श करा आणि धरून ठेवा"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"होम स्क्रीनवर जोडा"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"विजेट"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"शोधा"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"सर्च बॉक्समधून मजकूर साफ करा"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"कोणतीही विजेट उपलब्ध नाहीत"</string>
- <string name="no_search_results" msgid="6518732304311458580">"कोणतेही शोध परिणाम नाहीत"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"विजेट आणि शॉर्टकट उपलब्ध नाहीत"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"कोणतीही विजेट किंवा शॉर्टकट आढळले नाहीत"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"वैयक्तिक"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ऑफिस"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"संभाषणे"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"सूचना"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"शॉर्टकट हलवण्यासाठी स्पर्श करा आणि धरून ठेवा."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"शॉर्टकट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा."</string>
- <string name="out_of_space" msgid="4691004494942118364">"या मुख्य स्क्रीनवर आणखी जागा नाही."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"या होम स्क्रीनवर कोणतीही रूम नाही"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"आवडीच्या ट्रे मध्ये आणखी जागा नाही"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"अॅप्स सूची"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"वैयक्तिक अॅप्स सूची"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"इंस्टॉल करा"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"ॲप सुचवू नका"</string>
<string name="pin_prediction" msgid="4196423321649756498">"पूर्वानुमान पिन करा"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"शॉर्टकट स्थापित करा"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"शॉर्टकट इंस्टॉल करा"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"वापरकर्ता हस्तक्षेपाशिवाय शॉर्टकट जोडण्यास अॅप ला अनुमती देते."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"होम सेटिंग्ज आणि शॉर्टकट वाचा"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"मुख्यपृष्ठातील सेटिंग्ज आणि शॉर्टकट वाचण्यास अॅप ला अनुमती देते."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"होम सेटिंग्ज आणि शॉर्टकट लिहा"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"मुख्यपृष्ठातील सेटिंग्ज आणि शॉर्टकट बदलण्यास अॅप ला अनुमती देते."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ला फोन कॉल करण्याची अनुमती नाही"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"विजेट लोड करू शकत नाही"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"सेटअप पूर्ण करण्यासाठी टॅप करा"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"हा सिस्टम अॅप आहे आणि अनइंस्टॉल केला जाऊ शकत नाही."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"नाव संपादित करा"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> अक्षम केला आहे"</string>
@@ -160,8 +160,8 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"कार्य प्रोफाइल"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"कामाशी संबंधित ॲप्स ही बॅज केलेली असून तुमच्या IT ॲडमिनला दृश्यमान आहेत"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"समजले"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"कामाशी संबंधित ॲप्स बंद आहेत"</string>
- <string name="work_apps_paused_body" msgid="261634750995824906">"तुमचे कामाशी संबंधित ॲप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अॅक्सेस करू शकत नाहीत"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"कार्य ॲप्स थांबवली आहेत"</string>
+ <string name="work_apps_paused_body" msgid="261634750995824906">"तुमची कामाशी संबंधित ॲप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अॅक्सेस करू शकत नाहीत"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"कामाशी संबंधित ॲप्स बंद आहेत. तुमचे कामाशी संबंधित ॲप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अॅक्सेस करू शकत नाहीत"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps ही बॅज केलेली असून तुमच्या IT ॲडमिनला दृश्यमान आहेत"</string>
<string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"समजले"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 07b414a..b7469cd 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ketik dua kali & tahan untuk menggerakkan widget atau menggunakan tindakan tersuai."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Lebar %1$d kali tinggi %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Sentuh & tahan widget untuk menggerakkan widget di sekitar Skrin utama"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Tambahkan pada Skrin utama"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Cari"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Kosongkan teks daripada kotak carian"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Widget tidak tersedia"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Tiada hasil carian"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widget dan pintasan tidak tersedia"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Tiada widget atau pintasan yang dijumpai"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Peribadi"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Tempat kerja"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Perbualan"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Pemberitahuan"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Sentuh & tahan untuk menggerakkan pintasan."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ketik dua kali & tahan untuk menggerakkan pintasan atau menggunakan tindakan tersuai."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Tiada lagi ruang pada skrin Laman Utama ini."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Tiada ruang di skrin Utama ini"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Tiada ruang dalam dulang Kegemaran lagi"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Senarai apl"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Senarai apl peribadi"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"tulis tetapan dan pintasan Laman Utama"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Membenarkan apl menukar tetapan dan pintasan di Laman Utama."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dibenarkan membuat panggilan telefon"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Tidak dapat memuatkan widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Ketik untuk menyelesaikan persediaan"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ini ialah apl sistem dan tidak boleh dinyahpasang."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Edit Nama"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilumpuhkan"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil kerja"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Apl kerja mempunyai lencana dan kelihatan kepada pentadbir IT anda"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Apl kerja dimatikan"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Apl kerja dijeda"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Apl kerja anda tidak boleh menghantar pemberitahuan kepada anda, menggunakan bateri anda atau mengakses lokasi anda"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Apl kerja dimatikan. Apl kerja anda tidak boleh menghantar pemberitahuan kepada anda, menggunakan bateri anda atau mengakses lokasi anda"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Apl kerja mempunyai lencana dan kelihatan kepada pentadbir IT anda"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index e9f42e4..ef15561 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ဝိဂျက်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"အလျား %1$d နှင့် အမြင့် %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ပင်မစာမျက်နှာအနီးတွင် ဝိဂျက်ကိုရွှေ့ရန် ၎င်းကို တို့ထိ၍ဖိထားပါ"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ပင်မစာမျက်နှာသို့ ထည့်ရန်"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ဝိဂျက်များ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ရှာရန်"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ရှာဖွေစာလုံးဖြည့်ကွက်လပ်မှ စာသားကို ရှင်းလင်းပါ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ဝိဂျက်များ မရနိုင်ပါ"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ရှာဖွေမှု ရလဒ်များ မရှိပါ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ဝိဂျက်နှင့် ဖြတ်လမ်းလင့်ခ်များ မရနိုင်ပါ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ဝိဂျက် (သို့) ဖြတ်လမ်းလင့်ခ်များ ရှာမတွေ့ပါ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ကိုယ်ပိုင်"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"အလုပ်"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"စကားဝိုင်းများ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"အကြောင်းကြားချက်များ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ဖြတ်လမ်းလင့်ခ်ကို ရွှေ့ရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ဖြတ်လမ်းလင့်ခ်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
- <string name="out_of_space" msgid="4691004494942118364">"ဤပင်မမျက်နှာစာတွင် နေရာလွတ် မကျန်တော့ပါ"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ဤပင်မစာမျက်နှာတွင် နေရာလွတ် မရှိတော့ပါ"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"အနှစ်သက်ဆုံးများ ထားရာတွင် နေရာလွတ် မကျန်တော့ပါ"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"အက်ပ်စာရင်း"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"တစ်ကိုယ်ရေသုံး အက်ပ်စာရင်း"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"ထည့်သွင်းရန်"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"အက်ပ်ကို အကြံမပြုပါနှင့်"</string>
<string name="pin_prediction" msgid="4196423321649756498">"ခန့်မှန်းချက်ကို ပင်ထိုးရန်"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"အတိုကောက်မှတ်သားမှုများအား ထည့်သွင်းခြင်း"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"ဖြတ်လမ်းလင့်ခ်များ ထည့်သွင်းခြင်း"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"အသုံးပြုသူ လုပ်ဆောင်မှုမရှိပဲ အပ်ပလီကေးရှင်းကို အတိုကောက်မှတ်သားမှုများ ပြုလုပ်ခွင့် ပေးခြင်း"</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"ပင်မမျက်နှာစာ အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများအား ဖတ်ခြင်း"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"ပင်မမျက်နှာစာတွင်ရှိသော အပြင်အဆင်နှင့် အတိုကောက်မှတ်သားမှုများကို အပ်ပလီကေးရှင်းအား ဖတ်ခွင့်ပြုခြင်း"</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"ပင်မမျက်နှာစာ အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများအား ရေးသားခြင်း"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ပင်မမျက်နှာစာတွင် ရှိသော အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများ ကို အပ်ပလီကေးရှင်းအား ပြောင်းခွင့်ပြုခြင်း"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>သည် ဖုန်းခေါ်ဆိုခွင့် မရှိပါ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ဝိဂျက်ကို ဖွင့်၍မရပါ"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"စနစ်ထည့်သွင်းခြင်း အပြီးသတ်ရန် တို့ပါ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ဤအပ်ပလီကေးရှင်းမှာ စစ်စတန်ပိုင်းဆိုင်ရာ အပ်ပလီကေးရှင်းဖြစ်ပါသည်။ ထုတ်ပစ်၍ မရပါ"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"အမည်ကို တည်းဖြတ်ပါ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ပိတ်ထားသည်"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"အလုပ်ပရိုဖိုင်"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"အလုပ်သုံးအက်ပ်များကို တံဆိပ်တပ်ထားပြီး သင်၏ IT စီမံခန့်ခွဲသူက မြင်နိုင်ပါသည်"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ရပါပြီ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"အလုပ်သုံးအက်ပ်များ ပိတ်ထားသည်"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"အလုပ်သုံးအက်ပ်များကို ခေတ္တရပ်ထားသည်"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"သင်၏ အလုပ်သုံးအက်ပ်များက အကြောင်းကြားချက်များ ပို့ခြင်း၊ သင့်ဘက်ထရီ သုံးခြင်း (သို့) သင့်တည်နေရာ သုံးခြင်းတို့ မပြုလုပ်နိုင်ပါ"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"အလုပ်သုံးအက်ပ်များ ပိတ်ထားသည်။ သင်၏ အလုပ်သုံးအက်ပ်များက အကြောင်းကြားချက်များ ပို့ခြင်း၊ သင့်ဘက်ထရီ သုံးခြင်း (သို့) သင့်တည်နေရာ သုံးခြင်းတို့ မပြုလုပ်နိုင်ပါ"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"အလုပ်သုံးအက်ပ်များကို တံဆိပ်တပ်ထားပြီး သင်၏ IT စီမံခန့်ခွဲသူက မြင်နိုင်ပါသည်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 046f4ad..5e934c0 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dobbelttrykk og hold inne for å flytte en modul eller bruke tilpassede handlinger."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bredde x %2$d høyde"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Trykk og hold på modulen for å bevege den rundt på startskjermen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Legg til på startskjermen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,9 +48,9 @@
<string name="widget_button_text" msgid="2880537293434387943">"Moduler"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Søk"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Tøm tekst fra søkefeltet"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Ingen moduler er tilgjengelige"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ingen søkeresultater"</string>
- <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personlig"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Moduler og snarveier er ikke tilgjengelige"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Fant ingen moduler eller snarveier"</string>
+ <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personlige"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Jobb"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Samtaler"</string>
<string name="widget_education_header" msgid="4874760613775913787">"Lett tilgjengelig nyttig informasjon"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Varsler"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Trykk og hold for å flytte en snarvei."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dobbelttrykk og hold for å flytte en snarvei eller bruke tilpassede handlinger."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Denne startsiden er full."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Ingen ledig plass på denne startskjermen"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritter-skuffen er full"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"App-liste"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personlige apper-liste"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"angi startsideinnstillinger og -snarveier"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Lar appen endre innstillingene og snarveiene på startsiden."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har ikke tillatelse til å ringe"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Kan ikke laste inn modulen"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Trykk for å fullføre konfigureringen"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Dette er en systemapp som ikke kan avinstalleres."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Rediger navn"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Slo av <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Jobbprofil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Jobbapper er merket og synlige for IT-administratoren din"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Greit"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Jobbapper er av"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Jobbapper er satt på pause"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Jobbapper kan ikke sende deg varsler, bruke batteriet eller få tilgang til posisjonen din"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Jobbapper er av. De kan ikke sende deg varsler, bruke batteriet eller få tilgang til posisjonen din"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Jobbapper er merket og synlige for IT-administratoren din"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index f7dcd96..c172450 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"कुनै विजेट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौडाइ गुणा %2$d उचाइ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"यो विजेट होम स्क्रिनमा यताउता सार्न त्यसमा टच एन्ड होल्ड गर्नुहोस्"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"होम स्क्रिनमा हाल्नुहोस्"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"विजेटहरू"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"खोज्नुहोस्"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"खोज बाकसमा भएको पाठ हटाउनुहोस्"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"कुनै पनि विजेट उपलब्ध छैन"</string>
- <string name="no_search_results" msgid="6518732304311458580">"कुनै पनि खोज परिणाम भेटिएन"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"विजेट र सर्टकटहरू उपलब्ध छन्"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"कुनै पनि विजेट वा सर्टकट फेला परेन"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"व्यक्तिगत"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"कामसम्बन्धी"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"वार्तालापहरू"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"सूचनाहरू"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"कुनै सर्टकट सार्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"कुनै सर्टकट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
- <string name="out_of_space" msgid="4691004494942118364">"यो होम स्क्रिनमा थप ठाउँ छैन।"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"यो होम स्क्रिनमा ठाउँ छैन"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"मन पर्ने ट्रे अब कुनै ठाँउ छैन"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"एपको सूची"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"व्यक्तिगत अनुप्रयोगहरूको सूची"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"गृह सेटिङहरू र सर्टकटहरू लेख्नुहोस्"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"गृहमा एउटा एपलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले फोन कलहरू गर्न अनुमति छैन"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"विजेट लोड गर्न सकिएन"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"सेटअप गर्ने प्रक्रिया पूरा गर्न ट्याप गर्नुहोस्"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"यो प्रणाली एप हो र यसलाई स्थापना रद्द गर्न सकिँदैन।"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"नाम सम्पादन गर्नुहोस्"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"असक्षम पारिएको <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"कार्य प्रोफाइल"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"कामसम्बन्धी एपहरूमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्छन्"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"बुझेँ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"कामसम्बन्धी एपहरू अफ गरिएका छन्"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"कार्यसम्बन्धी एपहरू पज गरिएका छन्"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"कामसम्बन्धी एपहरू अफ गरिएका छन्। तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"कामसम्बन्धी एपमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्नुहुन्छ"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index a482147..d7e7a9a 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dubbeltik en houd vast om een widget te verplaatsen of aangepaste acties te gebruiken."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed en %2$d hoog"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Houd de widget ingedrukt om deze te verplaatsen op het startscherm"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Toevoegen aan startscherm"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Zoeken"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Tekst in zoekvak wissen"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Geen widgets beschikbaar"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Geen zoekresultaten"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgets en snelkoppelingen zijn niet beschikbaar"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Geen widgets of snelkoppelingen gevonden"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persoonlijk"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Werk"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Gesprekken"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Meldingen"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tik en houd vast om een snelkoppeling te verplaatsen."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dubbeltik en houd vast om een snelkoppeling te verplaatsen of aangepaste acties te gebruiken."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Er is geen ruimte meer op dit startscherm."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Er is geen ruimte op dit startscherm"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Geen ruimte meer in het vak \'Favorieten\'"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lijst met apps"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lijst met persoonlijke apps"</string>
@@ -158,9 +160,9 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Werkprofiel"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Werk-apps hebben badges en zijn zichtbaar voor je IT-beheerder"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Werk-apps staan uit"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Werk-apps zijn onderbroken"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Je werk-apps kunnen je geen meldingen sturen, je batterij niet gebruiken en geen toegang krijgen tot je locatie"</string>
- <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Werk-apps staan uit. Je werk-apps kunnen je geen meldingen sturen, je batterij niet gebruiken en geen toegang krijgen tot je locatie."</string>
+ <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Werk-apps staan uit. Je werk-apps kunnen geen meldingen sturen, je batterij niet gebruiken en hebben geen toegang tot je locatie."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Werk-apps hebben badges en zijn zichtbaar voor je IT-beheerder"</string>
<string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
<string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Werk-apps uitzetten"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 461c082..259b98b 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ଓସାର ଓ %2$d ଉଚ୍ଚ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ମୂଳସ୍କ୍ରିନର ଆଖପାଖରେ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଏହାକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ମୂଳସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ୱିଜେଟ୍"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ସନ୍ଧାନ କରନ୍ତୁ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ସନ୍ଧାନ ବାକ୍ସରୁ ଟେକ୍ସଟ୍ ଖାଲି କରନ୍ତୁ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"କୌଣସି ୱିଜେଟ୍ ଉପଲବ୍ଧ ନାହିଁ"</string>
- <string name="no_search_results" msgid="6518732304311458580">"କୌଣସି ସନ୍ଧାନ ଫଳାଫଳ ନାହିଁ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ୱିଜେଟ୍ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"କୌଣସି ୱିଜେଟ୍ କିମ୍ବା ସର୍ଟକଟ୍ ମିଳିଲା ନାହିଁ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ବ୍ୟକ୍ତିଗତ"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ୱାର୍କ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"ବିଜ୍ଞପ୍ତି"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ଏକ ସର୍ଟକଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ଏକ ସର୍ଟକଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
- <string name="out_of_space" msgid="4691004494942118364">"ଏହି ମୂଳସ୍କ୍ରୀନରେ ଆଉ ଜାଗା ନାହିଁ"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ଏହି ମୂଳସ୍କ୍ରିନରେ ଆଉ ଜାଗା ନାହିଁ"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ମନପସନ୍ଦ ଟ୍ରେରେ ଆଉ କୋଠରୀ ନାହିଁ"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ଆପ୍ ତାଲିକା"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ବ୍ୟକ୍ତିଗତ ଆପ୍ ତାଲିକା"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"ଆପ୍ ପରାମର୍ଶ ଦିଅନ୍ତୁ ନାହିଁ"</string>
<string name="pin_prediction" msgid="4196423321649756498">"ପୂର୍ବାନୁମାନକୁ ପିନ୍ କରନ୍ତୁ"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"ଶର୍ଟକଟ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"ସର୍ଟକଟ୍ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"ୟୁଜରଙ୍କ ବିନା ହସ୍ତକ୍ଷେପରେ ଶର୍ଟକଟ୍ ଯୋଡ଼ିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"ହୋମ୍ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍ ପଢ଼ନ୍ତୁ"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"ହୋମରେ ସେଟିଙ୍ଗ ପଢ଼ିବାକୁ ଆପ ଏବଂ ଶର୍ଟକଟକୁ ଅନୁମତି ଦିଏ।"</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"ହୋମ୍ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍ ଲେଖନ୍ତୁ"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ହୋମରେ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍ ପରିବର୍ତ୍ତନ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ଫୋନ୍ କଲ୍ କରିବାକୁ <xliff:g id="APP_NAME">%1$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ୱିଜେଟ୍ ଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ସେଟ୍ ଅପ୍ ସମ୍ପୂର୍ଣ୍ଣ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ଏହା ଏକ ସିଷ୍ଟମ୍ ଆପ୍ ଅଟେ ଏବଂ ଏହା ଅନଇନଷ୍ଟଲ୍ କରାଯାଇ ପାରିବ ନାହିଁ।"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ନାମ ସମ୍ପାଦନ କରନ୍ତୁ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଅକ୍ଷମ କରାଗଲା"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ୱର୍କ ପ୍ରୋଫାଇଲ୍"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ବୁଝିଗଲି"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ୱାର୍କ ଆପଗୁଡ଼ିକ ବନ୍ଦ ଅଛି"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ୱାର୍କ ଆପ୍ସ ବିରତ କରାଯାଇଛି"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ଆପଣଙ୍କ ୱାର୍କ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ ନାହିଁ"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ୱାର୍କ ଆପଗୁଡ଼ିକ ବନ୍ଦ ଅଛି। ଆପଣଙ୍କ ୱାର୍କ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ ନାହିଁ"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 63ec085..d0df645 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ਵਿਜੇਟ ਲਿਜਾਉਣ ਲਈ ਜਾਂ ਵਿਉਂਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤਣ ਲਈ ਦੋ ਵਾਰ ਟੈਪ ਕਰਕੇ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ਚੌੜਾਈ ਅਤੇ %2$d ਲੰਬਾਈ"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ਵਿਜੇਟ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਇੱਧਰ-ਉੱਧਰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ਵਿਜੇਟ"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ਖੋਜੋ"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ਖੋਜ ਬਾਕਸ ਤੋਂ ਸਪੱਸ਼ਟ ਲਿਖਤ"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ਕੋਈ ਵਿਜੇਟ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ਕੋਈ ਖੋਜ ਨਤੀਜਾ ਨਹੀਂ"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ਵਿਜੇਟ ਜਾਂ ਸ਼ਾਰਟਕੱਟ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ਕੋਈ ਵੀ ਵਿਜੇਟ ਜਾਂ ਸ਼ਾਰਟਕੱਟ ਨਹੀਂ ਮਿਲਿਆ"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ਨਿੱਜੀ"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ਕਾਰਜ-ਸਥਾਨ"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"ਗੱਲਾਂਬਾਤਾਂ"</string>
@@ -64,7 +66,8 @@
<string name="notifications_header" msgid="1404149926117359025">"ਸੂਚਨਾਵਾਂ"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ਕਿਸੇ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ਕਿਸੇ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਡਬਲ ਟੈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ ਜਾਂ ਵਿਉਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤੋ।"</string>
- <string name="out_of_space" msgid="4691004494942118364">"ਇਸ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਰ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਹੈ।"</string>
+ <!-- no translation found for out_of_space (6692471482459245734) -->
+ <skip />
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ਮਨਪਸੰਦ ਟ੍ਰੇ ਵਿੱਚ ਹੋਰ ਖਾਲੀ ਸਥਾਨ ਨਹੀਂ।"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ਐਪ ਸੂਚੀ"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ਨਿੱਜੀ ਐਪਾਂ ਦੀ ਸੂਚੀ"</string>
@@ -82,10 +85,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ਵਿਜੇਟ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ਇਹ ਇੱਕ ਸਿਸਟਮ ਐਪ ਹੈ ਅਤੇ ਇਸਨੂੰ ਅਣਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"ਨਾਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ"</string>
@@ -160,7 +161,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ਸਮਝ ਲਿਆ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਬੰਦ ਹਨ"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਬੰਦ ਹਨ। ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index bb54c2f..6b381a1 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Naciśnij dwukrotnie i przytrzymaj, aby przenieść widżet lub użyć działań niestandardowych."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Szerokość %1$d, wysokość %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Kliknij i przytrzymaj widżet, by poruszać nim po ekranie głównym"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj do ekranu głównego"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widżety"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Szukaj"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Wyczyść tekst w polu wyszukiwania"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Brak dostępnych widżetów"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Brak wyników wyszukiwania"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widżety i skróty nie są dostępne"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nie znaleziono widżetów ani skrótów"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobiste"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Służbowe"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Rozmowy"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Powiadomienia"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Naciśnij i przytrzymaj, aby wybrać skrót."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Naciśnij dwukrotnie i przytrzymaj, aby przenieść skrót lub użyć działań niestandardowych."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Brak miejsca na tym ekranie głównym."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Brak miejsca na tym ekranie głównym"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Brak miejsca w Ulubionych"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacji"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista aplikacji osobistych"</string>
@@ -79,17 +81,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Zainstaluj"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Nie proponuj aplikacji"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Przypnij podpowiedź"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalowanie skrótów"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"Instalowanie skrótów"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Pozwala aplikacji dodawać skróty bez interwencji użytkownika."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"odczytywanie ustawień i skrótów na ekranie głównym"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Pozwala aplikacji na odczytywanie ustawień i skrótów na ekranie głównym."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"zapisywanie ustawień i skrótów na ekranie głównym"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Umożliwia aplikacji zmianę ustawień i skrótów na ekranie głównym."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nie może wykonywać połączeń telefonicznych"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Nie udało się załadować widżetu"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Kliknij, aby dokończyć konfigurację"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"To aplikacja systemowa i nie można jej odinstalować."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Edytuj nazwę"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest wyłączona"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil służbowy"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikacje służbowe mają plakietki i są widoczne dla administratora IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Aplikacje służbowe są wyłączone"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikacje do pracy zostały wstrzymane"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Aplikacje służbowe nie mogą wysyłać powiadomień, używać baterii ani uzyskiwać dostępu do Twojej lokalizacji"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikacje służbowe są wyłączone i nie mogą wysyłać powiadomień, używać baterii ani uzyskiwać dostępu do Twojej lokalizacji"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikacje służbowe mają plakietki i są widoczne dla administratora IT"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 11f1f83..306b0bb 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toque duas vezes sem soltar para mover um widget ou utilizar ações personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Toque sem soltar no widget para o mover à volta do ecrã principal"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Adicionar ao ecrã principal"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pesquisar"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Limpe o texto da caixa de pesquisa"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nenhum widget disponível"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nenhum resultado da pesquisa"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Os widgets e os atalhos não estão disponíveis"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nenhum widget ou atalho encontrado"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pessoais"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabalho"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificações"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Toque sem soltar para mover um atalho."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toque duas vezes sem soltar para mover um atalho ou utilizar ações personalizadas."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Sem espaço suficiente neste Ecrã principal."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Sem espaço neste ecrã principal."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Não existe mais espaço no tabuleiro de Favoritos"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicações"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de aplicações pessoais"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de trabalho"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"As apps de trabalho estão desativadas"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"As apps de trabalho estão em pausa"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"As apps de trabalho estão desativadas. As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 11779ed..4c3113d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toque duas vezes e mantenha a tela pressionada para mover um widget ou usar ações personalizadas."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Toque no widget e mantenha-o pressionado para movê-lo pela tela inicial"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Adicionar à tela inicial"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pesquisa"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Limpar texto da caixa de pesquisa"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nenhum widget disponível"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Nenhum resultado de pesquisa"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Nenhum widget ou atalho disponível"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nenhum widget ou atalho encontrado"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pessoais"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabalho"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificações"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Toque e mantenha a tela pressionada para mover um atalho."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toque duas vezes e mantenha a tela pressionada para mover um atalho ou usar ações personalizadas."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Não há mais espaço na tela inicial."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Não há espaço nesta tela inicial"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Sem espaço na bandeja de favoritos"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de apps"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de apps pessoais"</string>
@@ -158,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de trabalho"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Os apps de trabalho têm um ícone e ficam visíveis para o administrador de TI"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Ok"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Os apps de trabalho estão desativados"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Os apps de trabalho foram pausados"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Os apps de trabalho não podem enviar notificações, usar a bateria nem acessar o local"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Os apps de trabalho estão desativados. Eles não podem enviar notificações, usar a bateria nem acessar o local"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Os apps de trabalho têm um ícone e ficam visíveis para o administrador de TI"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 49c787c..3dfcf5c 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Atingeți de două ori și țineți apăsat pentru a muta un widget sau folosiți acțiuni personalizate."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lățime și %2$d înălțime"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Atingeți lung widgetul pentru a-l muta pe ecranul de pornire"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Adăugați pe ecranul de pornire"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgeturi"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Căutare"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Ștergeți textul din caseta de căutare"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Niciun widget disponibil"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Niciun rezultat al căutării"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgeturile și comenzile rapide nu sunt disponibile"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nu au fost găsite widgeturi sau comenzi rapide"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personale"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Serviciu"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Conversații"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Notificări"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Atingeți și țineți apăsat pentru a muta comanda rapidă."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Atingeți de două ori și țineți apăsat pentru a muta o comandă rapidă sau folosiți acțiuni personalizate."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Nu mai este loc pe acest Ecran de pornire."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Nu este disponibilă nicio sală pe acest ecran de pornire"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Spațiu epuizat în bara Preferate"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicații"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de aplicații personale"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"scrie setări și comenzi rapide pentru ecranul de pornire"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Permite aplicației să modifice setările și comenzile rapide din ecranul de pornire."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu are permisiunea de a apela"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widgetul nu poate fi încărcat"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Atingeți pentru a finaliza configurarea"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Aceasta este o aplicație de sistem și nu poate fi dezinstalată."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Modificați numele"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"S-a dezactivat <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil de serviciu"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplicațiile pentru lucru sunt marcate și vizibile pentru administratorul IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Aplicațiile pentru lucru sunt dezactivate"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplicațiile pentru lucru sunt întrerupte"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Aplicațiile pentru lucru nu pot să vă trimită notificări, să folosească bateria sau să vă acceseze locația"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplicațiile pentru lucru sunt dezactivate. Acestea nu pot să vă trimită notificări, să folosească bateria sau să vă acceseze locația."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplicațiile pentru lucru sunt marcate și vizibile pentru administratorul IT"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 12db0e2..997924e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Чтобы использовать специальные действия или перенести виджет, нажмите на него дважды и удерживайте."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d, высота %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Чтобы переместить виджет, нажмите на него и удерживайте."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Добавить на главный экран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виджеты"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Поиск"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Удалить текст из окна поиска"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Нет доступных виджетов."</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ничего не найдено."</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Виджеты и ярлыки недоступны."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Виджеты и ярлыки не найдены."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Личные виджеты"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Рабочие виджеты"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Разговоры"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Уведомления"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Нажмите и удерживайте для переноса ярлыка."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Чтобы использовать специальные действия или перенести ярлык, нажмите на него дважды и удерживайте."</string>
- <string name="out_of_space" msgid="4691004494942118364">"На этом экране нет свободного места."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"На главном экране нет свободного места."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"В разделе \"Избранное\" больше нет места"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Список приложений"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Открыть список личных приложений"</string>
@@ -86,10 +88,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Изменение настроек и ярлыков главного экрана"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Приложение сможет изменять настройки и ярлыки на главном экране."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> не может делать телефонные звонки"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Не удается загрузить виджет."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Нажмите, чтобы завершить настройку."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Это системное приложение, его нельзя удалить."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Измените название"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> отключено"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Рабочий профиль"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"У рабочих приложений есть специальная пометка. Они видны системному администратору."</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"ОК"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Рабочие приложения отключены"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Рабочие приложения приостановлены"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Рабочие приложения отключены. Они не могут отправлять уведомления, расходовать заряд батареи и получать доступ к вашему местоположению."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"У рабочих приложений есть специальная пометка. Они видны системному администратору."</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 946e12c..66d6324 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"විජට් එකක් ගෙන යාමට හෝ අභිරුචි ක්රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"පළල %1$d උස %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"එය මුල් පිටු තිරය වටා ගෙන යාමට විජට් එක ස්පර්ශ කර අල්ලා ගන්න"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"මුල් පිටු තිරය වෙත එක් කරන්න"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"විජට්"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"සෙවීම"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"සෙවීම් කොටුවෙන් පෙළ හිස් කරන්න"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ලබා ගත හැකි විජට් නැත"</string>
- <string name="no_search_results" msgid="6518732304311458580">"සෙවීම් ප්රතිඵල නැත"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"විජට් සහ කෙටි මං ලබා ගත නොහැකිය"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"විජට් හෝ කෙටි මං හමු නොවීය"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"පුද්ගලික"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"කාර්යාලය"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"සංවාද"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"දැනුම්දීම්"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"කෙටි මගක් ගෙන යාමට ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"කෙටි මගක් ගෙන යාමට හෝ අභිරුචි ක්රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."</string>
- <string name="out_of_space" msgid="4691004494942118364">"මෙම මුල් පිටු තිරය මත තවත් අවසර නැත."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"මෙම මුල් තිරයේ ඉඩ නැත"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ප්රියතම දෑ ඇති තැටියේ තවත් ඉඩ නොමැත"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"යෙදුම් ලැයිස්තුව"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"පෞද්ගලික යෙදුම් ලැයිස්තුව"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"මුල් පිටු සැකසීම් සහ කෙටිමං ලියන්න"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"මුල් පිටුවේ සැකසීම් සහ කෙටිමං ඉවත් කිරීමට යෙදුමට අවසර දෙයි."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> හට දුරකථන ඇමතුම් සිදු කිරීමට ඉඩ නොදේ"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"විජට් පූරණය කළ නොහැකිය"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"පිහිටුවීම අවසන් කිරීමට තට්ටු කරන්න"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"මෙය පද්ධති යෙදුමක් වන අතර අස්ථාපනය කළ නොහැක."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"නම සංස්කරණය කරන්න"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> අබල කෙරිණි"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"කාර්යාල පැතිකඩ"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"කාර්යාල යෙදුම්වලට ලාංඡන යොදා ඇති අතර ඔබගේ IT පරිපාලකට දෘශ්යමාන වේ"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"තේරුණා"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"කාර්යාල යෙදුම් ක්රියාවිරහිතයි"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"කාර්යාල යෙදුම් විරාම කර ඇත"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"ඔබගේ කාර්යාල යෙදුම්වලට ඔබට දැනුම්දීම් එවීමට, ඔබගේ බැටරිය භාවිත කිරීමට හෝ ඔබගේ ස්ථානයට ප්රවේශ වීමට නොහැකිය"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"කාර්යාල යෙදුම් ක්රියාවිරහිතයි. ඔබගේ කාර්යාල යෙදුම්වලට ඔබට දැනුම්දීම් එවීමට, ඔබගේ බැටරිය භාවිත කිරීමට හෝ ඔබගේ ස්ථානයට ප්රවේශ වීමට නොහැකිය"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"කාර්යාල යෙදුම්වලට ලාංඡන යොදා ඇති අතර ඔබගේ IT පරිපාලකට දෘශ්යමාන වේ"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index d4f2e00..cf458ce 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvojitým klepnutím a pridržaním presuňte miniaplikáciu alebo použite vlastné akcie."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"šírka %1$d, výška %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Po pridržaní môžete miniaplikáciu posúvať po ploche"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Pridať na plochu"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Miniaplikácie"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Vyhľadajte"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Vymazať text z vyhľadávacieho poľa"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nie sú k dispozícii žiadne miniaplikácie"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Žiadne výsledky vyhľadávania"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Miniaplikácie a odkazy nie sú k dispozícii"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nenašli sa žiadne miniaplikácie ani odkazy"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobné"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Práca"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Konverzácie"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Upozornenia"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pridržaním presuňte skratku."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvojitým klepnutím a pridržaním presuňte odkaz alebo použite vlastné akcie."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Na tejto ploche už nie je miesto"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Na tejto ploche nie je miesto"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Na paneli Obľúbené položky už nie je miesto"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Zoznam aplikácií"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Zoznam osobných aplikácií"</string>
@@ -79,17 +81,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Inštalovať"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Nenavrhovať aplikáciu"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Pripnúť predpoveď"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"inštalovať odkazy"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"inštalácia odkazov"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Povoľuje aplikácii pridať odkazy bez zásahu používateľa."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"čítanie nastavení a odkazov plochy"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Povoľuje aplikácii čítať nastavenia a odkazy na ploche."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"zápis nastavení a odkazov plochy"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Povoľuje aplikácii zmeniť nastavenia a odkazy na ploche."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> nemá povolenie uskutočňovať telefonické hovory"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Miniaplikáciu sa nepodarilo načítať"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Nastavenie dokončíte klepnutím"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Toto je systémová aplikácia a nedá sa odinštalovať."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Úprava názvu"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je deaktivovaná"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Pracovný profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Pracovné aplikácie majú odznak a zobrazujú sa správcovi IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Dobre"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Pracovné aplikácie sú vypnuté"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Pracovné aplikácie sú pozastavené"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Pracovné aplikácie nemôžu posielať upozornenia ani používať batériu či polohu."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Pracovné aplikácie sú vypnuté. Nemôžu posielať upozornenia ani používať batériu či polohu."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Pracovné aplikácie majú odznak a zobrazujú sa správcovi IT"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index d5d9f02..4b7927b 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvakrat se dotaknite pripomočka in ga pridržite, da ga premaknete, ali pa uporabite dejanja po meri."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, višina %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pridržite pripomoček, če ga želite premikati po začetnem zaslonu."</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na začetni zaslon"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Pripomočki"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Iskanje"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Brisanje besedila v iskalnem polju"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Ni pripomočkov"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ni rezultatov iskanja"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Pripomočki in bližnjice niso na voljo."</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Najden ni noben pripomoček ali bližnjica."</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osebni"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Služba"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Pogovori"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Obvestila"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pridržite bližnjico, da jo premaknete."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvakrat se dotaknite bližnjice in jo pridržite, da jo premaknete, ali pa uporabite dejanja po meri."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Na tem začetnem zaslonu ni več prostora."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Na tem začetnem zaslonu ni prostora."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"V vrstici za priljubljene ni več prostora"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Seznam aplikacij"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Seznam osebnih aplikacij"</string>
@@ -86,10 +88,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"zapis nastavitev in bližnjic na začetnem zaslonu"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Aplikaciji dovoli spreminjanje nastavitev in bližnjic na začetnem zaslonu."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikaciji <xliff:g id="APP_NAME">%1$s</xliff:g> ni dovoljeno opravljanje klicev"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Pripomočka ni mogoče naložiti."</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Dotaknite se, da dokončate postopek nastavitve."</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"To je sistemska aplikacija in je ni mogoče odstraniti."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Urejanje imena"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogočena"</string>
@@ -166,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Delovni profil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Delovne aplikacije so označene z značko in vidne skrbniku za IT."</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Razumem"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Delovne aplikacije so izklopljene."</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Delovne aplikacije so začasno zaustavljene"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Delovne aplikacije ne smejo pošiljati obvestil, porabljati energije baterije ali dostopati do lokacije."</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Delovne aplikacije so izklopljene in ne smejo pošiljati obvestil, porabljati energije baterije ali dostopati do lokacije."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Delovne aplikacije so označene z značko in vidne skrbniku za IT."</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index f3a4649..70084df 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Trokit dy herë dhe mbaje shtypur një miniapliikacion për ta zhvendosur atë ose për të përdorur veprimet e personalizuara."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i gjerë me %2$d i lartë"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Prek dhe mbaj të shtypur miniaplikacionin për ta lëvizur nëpër \"Ekranin bazë\""</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Shto në \"Ekranin bazë\""</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Miniaplikacionet"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Kërko"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Pastro tekstin nga kutia e kërkimit"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Nuk ka asnjë miniaplikacion"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Asnjë rezultat kërkimi"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Miniaplikacionet dhe shkurtoret nuk ofrohen"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Nuk u gjet asnjë miniaplikacion ose shkurtore"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personale"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Puna"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Bisedat"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Njoftimet"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Prek dhe mbaj shtypur një shkurtore për ta zhvendosur."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Trokit dy herë dhe mbaje shtypur një shkurtore për ta zhvendosur atë ose për të përdorur veprimet e personalizuara."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Nuk ka më hapësirë në këtë ekran bazë."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Nuk ka vend në këtë ekran bazë"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Nuk ka më hapësirë në tabakanë \"Të preferuarat\""</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Lista e aplikacioneve"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista e aplikacioneve personale"</string>
@@ -75,17 +77,15 @@
<string name="install_drop_target_label" msgid="2539096853673231757">"Instalo"</string>
<string name="dismiss_prediction_label" msgid="3357562989568808658">"Mos sugjero aplikacion"</string>
<string name="pin_prediction" msgid="4196423321649756498">"Gozhdo parashikimin"</string>
- <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalo shkurtore"</string>
+ <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalimi i shkurtoreve"</string>
<string name="permdesc_install_shortcut" msgid="923466509822011139">"Lejon një aplikacion të shtojë shkurtore pa ndërhyrjen e përdoruesit."</string>
<string name="permlab_read_settings" msgid="1941457408239617576">"lexo cilësimet dhe shkurtoret e ekranit bazë"</string>
<string name="permdesc_read_settings" msgid="5833423719057558387">"Lejon aplikacionin të lexojë cilësimet dhe shkurtoret në ekranin bazë."</string>
<string name="permlab_write_settings" msgid="3574213698004620587">"shkruaj cilësimet dhe shkurtoret e ekranit bazë"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Lejon aplikacionin të ndryshojë cilësimet dhe shkurtoret në ekranin bazë."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk lejohet të kryejë telefonata"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"S\'mund të ngarkohet miniaplikacioni"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Trokit për të përfunduar konfigurimin"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ky është aplikacion sistemi dhe nuk mund të çinstalohet."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Redakto emrin"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> u çaktivizua"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profili i punës"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikacionet e punës janë të shënuara dhe të dukshme për administratorin e teknologjisë së informacionit"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"E kuptova"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Aplikacionet e punës janë joaktive"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikacionet e punës janë në pauzë"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Aplikacionet e tua të punës nuk mund të të dërgojnë njoftime, të përdorin baterinë tënde apo të kenë qasje në vendndodhjen tënde"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikacionet e punës janë joaktive. Aplikacionet e tua të punës nuk mund të të dërgojnë njoftime, të përdorin baterinë tënde apo të kenë qasje në vendndodhjen tënde"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikacionet e punës janë të shënuara dhe të dukshme për administratorin e teknologjisë së informacionit"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index b47a148..3358062 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Двапут додирните и задржите да бисте померали виџет или користите прилагођене радње."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"ширина од %1$d и висина од %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Додирните и задржите виџет да бисте га померали по почетном екрану"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Додај на почетни екран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -48,8 +50,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Виџети"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Претражите"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Обришите текст из оквира за претрагу"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Није доступан ниједан виџет"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Нема резултата претраге"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Виџети и пречице нису доступни"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Није пронађен ниједан виџет или пречица"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лично"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Посао"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Конверзације"</string>
@@ -66,7 +68,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Обавештења"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Двапут додирните и задржите ради померања пречице."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Двапут додирните и задржите да бисте померали пречицу или користите прилагођене радње."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Нема више простора на овом почетном екрану."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Нема простора на овом почетном екрану"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Нема више простора на траци Омиљено"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Листа апликација"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Листа личних апликација"</string>
@@ -84,10 +86,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"уписивање подешавања и пречица на почетном екрану"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Дозвољава апликацији да мења подешавања и пречице на почетном екрану."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> нема дозволу за упућивање телефонских позива"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Учитавање виџета није успело"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Додирните да бисте довршили подешавање"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Ово је системска апликација и не може да се деинсталира."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Измените назив"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је онемогућена"</string>
@@ -163,7 +163,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Пословни профил"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Пословне апликације су означене значком и ИТ администратор може да их види"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Важи"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Пословне апликације су искључене"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Пословне апликације су паузиране"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Пословне апликације не могу да вам шаљу обавештења, користе батерију нити приступају локацији"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Пословне апликације су искључене. Пословне апликације не могу да вам шаљу обавештења, користе батерију нити приступају локацији"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Пословне апликације су означене значком и ИТ администратор може да их види"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 415e7be..12d99d4 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tryck snabbt två gånger och håll kvar för att flytta en widget eller använda anpassade åtgärder."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bred gånger %2$d hög"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tryck länge på widgeten om du vill flytta den på startskärmen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Lägg till på startskärmen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widgetar"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Sök"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Rensa texten från sökrutan"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Det finns inga tillgängliga widgetar"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Inga sökresultat"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widgetar och genvägar är inte tillgängliga"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Inga widgetar eller genvägar hittades"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Privata"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Arbete"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Konversationer"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Aviseringar"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tryck länge för att flytta en genväg."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tryck snabbt två gånger och håll kvar för att flytta en genväg eller använda anpassade åtgärder."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Det finns inte plats för mer på den här startskärmen."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Det finns inte plats på den här startskärmen."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritfältet är fullt"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Applista"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Listan Personliga appar"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"skriva inställningar och genvägar för startsidan"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Tillåter att appen ändrar inställningar och genvägar på startsidan."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte behörighet att ringa samtal"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Det gick inte att läsa in widgeten"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Tryck för att slutföra konfigureringen"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Det här är en systemapp som inte kan avinstalleras."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Redigera namn"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inaktiverats"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Jobbprofil"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Jobbappar är märkta och synliga för IT-administratören"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Jobbappar är inaktiverade"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Jobbappar har pausats"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Dina jobbappar kan inte skicka aviseringar, använda batteriet eller komma åt din plats"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Jobbappar är inaktiverade. Dina jobbappar kan inte skicka aviseringar, använda batteriet eller komma åt din plats"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Jobbappar är märkta och synliga för IT-administratören"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 7e1c724..a16a8c1 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Gusa mara mbili na ushikilie ili usogeze wijeti au utumie vitendo maalum."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Upana wa %1$d na kimo cha %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Gusa na ushikilie wijeti ili uisogeze kwenye Skrini ya kwanza"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Weka kwenye Skrini ya kwanza"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Wijeti"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Tafuta"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Futa maandishi kwenye kisanduku cha kutafutia"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Hamna wijeti zinazopatikana"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Hamna matokeo ya utafutaji"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Wijeti na njia za mkato hazipatikani"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Hakuna wijeti wala njia za mkato zilizopatikana"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Binafsi"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Kazini"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Mazungumzo"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Arifa"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Gusa na ushikilie ili usogeze njia ya mkato."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Gusa mara mbili na ushikilie ili usogeze njia ya mkato au utumie vitendo maalum."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Hakuna nafasi katika skrini hii ya Mwanzo."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Hakuna nafasi kwenye Skrini hii ya kwanza"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Hakuna nafasi zaidi katika treya ya Vipendeleo"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Orodha ya programu"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Orodha ya programu za binafsi"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"andika mipangilio ya skrini ya Mwanzo na njia za mkato"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Huruhusu programu kubadilisha mipangilio na njia za mkato katika skrini ya Mwanzo."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> hairuhusiwi kupiga simu"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Imeshindwa kupakia wijeti"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Gusa ili umalize kuweka mipangilio"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Hii ni programu ya mfumo na haiwezi kuondolewa."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Badilisha Jina"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> imezimwa"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Wasifu wa kazini"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Programu za kazini zina beji na zinaonekana kwa msimamizi wako wa TEHAMA"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Nimeelewa"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Programu za kazini zimezimwa"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Programu za kazini zimesimamishwa"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Programu zako za kazini haziwezi kukutumia arifa, kutumia betri yako au kufikia maelezo ya mahali ulipo"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Programu za kazini zimezimwa. Programu zako za kazini haziwezi kukutumia arifa, kutumia betri yako au kufikia maelezo ya mahali ulipo"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Programu za kazini zina beji na zinaonekana kwa msimamizi wako wa TEHAMA"</string>
diff --git a/res/values-sw340dp/dimens.xml b/res/values-sw340dp/dimens.xml
index c9f2981..33b06f5 100644
--- a/res/values-sw340dp/dimens.xml
+++ b/res/values-sw340dp/dimens.xml
@@ -19,6 +19,5 @@
<!-- Drag padding to add to the bottom of drop targets -->
<dimen name="drop_target_drag_padding">20dp</dimen>
- <dimen name="drop_target_text_size">16sp</dimen>
</resources>
\ No newline at end of file
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 877d92d..0117f6b 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"விட்ஜெட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d அகலத்திற்கு %2$d உயரம்"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"முகப்புத் திரைக்கு விட்ஜெட்டை நகர்த்த அதைத் தொட்டுப் பிடிக்கவும்"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"முகப்புத் திரையில் சேர்"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"விட்ஜெட்கள்"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"தேடுக"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"தேடல் பெட்டியிலுள்ள உரையை அழிக்கும்"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"விட்ஜெட்டுகள் எதுவுமில்லை"</string>
- <string name="no_search_results" msgid="6518732304311458580">"தேடல் முடிவுகள் இல்லை"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"விட்ஜெட்டுகளும் ஷார்ட்கட்களும் கிடைக்கவில்லை"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"விட்ஜெட்டுகள்/ஷார்ட்கட்டுகள் எதுவும் இல்லை"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"தனிப்பட்டவை"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"பணி"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"உரையாடல்கள்"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"அறிவிப்புகள்"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ஷார்ட்கட்டை நகர்த்தத் தொட்டுப் பிடிக்கவும்."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ஷார்ட்கட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்."</string>
- <string name="out_of_space" msgid="4691004494942118364">"முகப்புத் திரையில் இடமில்லை."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"இந்த முகப்புத் திரையில் இடமில்லை"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"பிடித்தவை ட்ரேயில் இடமில்லை"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ஆப்ஸின் பட்டியல்"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"தனிப்பட்ட ஆப்ஸ் பட்டியல்"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"முகப்பின் அமைப்பு மற்றும் குறுக்குவழிகளை எழுதுதல்"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"முகப்பில் உள்ள அமைப்பு மற்றும் குறுக்குவழிகளை மாற்ற ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ஃபோன் அழைப்புகள் செய்ய, <xliff:g id="APP_NAME">%1$s</xliff:g> அனுமதிக்கப்படவில்லை"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"விட்ஜெட்டை ஏற்ற முடியவில்லை"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"அமைவை நிறைவுசெய்யத் தட்டவும்"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"இது அமைப்பு ஆப்ஸ் என்பதால் நிறுவல் நீக்கம் செய்ய முடியாது."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"பெயரைத் திருத்துதல்"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> முடக்கப்பட்டது"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"பணிக் கணக்கு"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டுள்ளன. உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"முடிந்தது"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"பணி ஆப்ஸ் முடக்கப்பட்டுள்ளன"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"பணி ஆப்ஸால் உங்களுக்கு அறிவிப்புகளை அனுப்பவோ பேட்டரியைப் பயன்படுத்தவோ உங்கள் இருப்பிடத்தை அணுகவோ முடியாது"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"பணி ஆப்ஸ் முடக்கப்பட்டுள்ளன. அவற்றால் உங்களுக்கு அறிவிப்புகளை அனுப்பவோ பேட்டரியைப் பயன்படுத்தவோ உங்கள் இருப்பிடத்தை அணுகவோ முடியாது"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"பணி ஆப்ஸ் பேட்ஜ் குறியிடப்பட்டுள்ளன. மேலும் உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index e5bd96e..07bb80b 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"విడ్జెట్ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి & హోల్డ్ చేయి."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d వెడల్పు X %2$d ఎత్తు"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ఈ విడ్జెట్ను మొదటి స్క్రీన్లో కావాల్సిన చోట ఉంచడానికి, దాన్ని తాకి అలాగే నొక్కి పట్టుకోండి"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"మొదటి స్క్రీన్కు జోడించు"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"విడ్జెట్లు"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"సెర్చ్ చేయండి"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"సెర్చ్ బాక్స్ నుండి టెక్స్ట్ను క్లియర్ చేయి"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"విడ్జెట్లు అందుబాటులో లేవు"</string>
- <string name="no_search_results" msgid="6518732304311458580">"సెర్చ్ ఫలితాలు లేవు"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"విడ్జెట్లు, షార్ట్కట్లు అందుబాటులో లేవు"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"విడ్జెట్లు లేదా షార్ట్కట్లు కనుగొనబడలేదు"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"వ్యక్తిగత గ్యాడ్జెట్స్"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ఆఫీస్"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"సంభాషణలు"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"నోటిఫికేషన్లు"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"షార్ట్కట్ను తరలించడానికి తాకి & నొక్కి ఉంచు."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"షార్ట్కట్ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి & హోల్డ్ చేయండి."</string>
- <string name="out_of_space" msgid="4691004494942118364">"ఈ హోమ్ స్క్రీన్లో ఖాళీ లేదు."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ఈ మొదటి స్క్రీన్లో స్థలం లేదు"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ఇష్టమైనవి ట్రేలో ఖాళీ లేదు"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"అనువర్తనాల జాబితా"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"వ్యక్తిగత యాప్ల జాబితా"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"హోమ్ సెట్టింగ్లు మరియు సత్వరమార్గాలను వ్రాయడం"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"హోమ్లో సెట్టింగ్లు మరియు సత్వరమార్గాలను మార్చడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"ఫోన్ కాల్లను చేసేందుకు <xliff:g id="APP_NAME">%1$s</xliff:g>కి అనుమతి లేదు"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"విడ్జెట్ను లోడ్ చేయడం సాధ్యం కాలేదు"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"సెటప్ను పూర్తి చేయడానికి ట్యాప్ చేయండి"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"ఇది సిస్టమ్ యాప్ మరియు దీన్ని అన్ఇన్స్టాల్ చేయడం సాధ్యపడదు."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"పేరును ఎడిట్ చేయండి"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> నిలిపివేయబడింది"</string>
@@ -158,10 +158,9 @@
<string name="all_apps_personal_tab" msgid="4190252696685155002">"వ్యక్తిగతం"</string>
<string name="all_apps_work_tab" msgid="4884822796154055118">"కార్యాలయం"</string>
<string name="work_profile_toggle_label" msgid="3081029915775481146">"కార్యాలయ ప్రొఫైల్"</string>
- <!-- no translation found for work_profile_edu_work_apps (7895468576497746520) -->
- <skip />
+ <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"వర్క్ యాప్లు బ్యాడ్జ్ చేయబడ్డాయి, మీ IT అడ్మిన్కు కనిపిస్తాయి"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"అర్థమైంది"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"వర్క్ యాప్లు ఆఫ్లో ఉన్నాయి"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"వర్క్ యాప్లు పాజ్ చేయబడ్డాయి"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"మీకు నోటిఫికేషన్లు పంపడం, మీ బ్యాటరీని ఉపయోగించడం, లేదా మీ లొకేషన్ను యాక్సెస్ చేయడం మీ వర్క్ యాప్లకు సాధ్యపడదు"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"వర్క్ యాప్లు ఆఫ్లో ఉన్నాయి. మీకు నోటిఫికేషన్లు పంపడం, మీ బ్యాటరీని ఉపయోగించడం, లేదా మీ లొకేషన్ను యాక్సెస్ చేయడం మీ వర్క్ యాప్లకు సాధ్యపడదు"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"వర్క్ యాప్లు బ్యాడ్జ్ చేయబడ్డాయి, మీ IT అడ్మిన్కి కనిపిస్తాయి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 795bc7d..77a20be 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"แตะสองครั้งค้างไว้เพื่อย้ายวิดเจ็ตหรือใช้การดำเนินการที่กำหนดเอง"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"กว้าง %1$d x สูง %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"แตะวิดเจ็ตค้างไว้เพื่อย้ายไปรอบๆ หน้าจอหลัก"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"เพิ่มลงในหน้าจอหลัก"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"วิดเจ็ต"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ค้นหา"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ล้างข้อความออกจากช่องค้นหา"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"ไม่มีวิดเจ็ตพร้อมใช้งาน"</string>
- <string name="no_search_results" msgid="6518732304311458580">"ไม่พบผลการค้นหา"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"วิดเจ็ตและทางลัดไม่พร้อมให้บริการ"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"ไม่พบวิดเจ็ตหรือทางลัด"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ส่วนตัว"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"งาน"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"การสนทนา"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"การแจ้งเตือน"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"แตะค้างไว้เพื่อย้ายทางลัด"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"แตะสองครั้งค้างไว้เพื่อย้ายทางลัดหรือใช้การดำเนินการที่กำหนดเอง"</string>
- <string name="out_of_space" msgid="4691004494942118364">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"ไม่มีพื้นที่เหลือในถาดรายการโปรด"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"รายชื่อแอป"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"รายการแอปส่วนตัว"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"เขียนการตั้งค่าและทางลัดหน้าแรกแล้ว"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"อนุญาตให้แอปเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่ได้รับอนุญาตให้โทรออก"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"โหลดวิดเจ็ตไม่ได้"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"แตะเพื่อสิ้นสุดการตั้งค่า"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"นี่เป็นแอประบบและไม่สามารถถอนการติดตั้งได้"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"แก้ไขชื่อ"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"ปิดใช้ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"โปรไฟล์งาน"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"แอปงานจะติดป้ายไว้และผู้ดูแลระบบไอทีจะมองเห็น"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"รับทราบ"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"แอปงานปิดอยู่"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"แอปงานปิดอยู่"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"แอปงานจะส่งการแจ้งเตือน ใช้แบตเตอรี่ หรือเข้าถึงตำแหน่งของคุณไม่ได้"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"แอปงานปิดอยู่ แอปงานจะส่งการแจ้งเตือน ใช้แบตเตอรี่ หรือเข้าถึงตำแหน่งของคุณไม่ได้"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"แอปงานจะติดป้ายไว้และผู้ดูแลระบบไอทีจะมองเห็น"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 558b96b..c6e919a 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"I-double tap at pindutin nang matagal para ilipat ang widget o gumamit ng mga custom na pagkilos."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ang lapad at %2$d ang taas"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pindutin nang matagal ang widget para ilipat-lipat ito sa Home screen"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Idagdag sa Home screen"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Mga Widget"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Maghanap"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"I-clear ang text sa box para sa paghahanap"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Walang available na widget"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Walang resulta ng paghahanap"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Hindi available ang mga widget at shortcut"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Walang nakitang widget o shortcut"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabaho"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Mga Pag-uusap"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Mga Notification"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pindutin nang matagal para ilipat ang shortcut."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"I-double tap at pindutin nang matagal para ilipat ang shortcut o gumamit ng mga custom na pagkilos."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Wala nang lugar sa Home screen na ito."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Walang espasyo sa Home screen na ito"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Wala nang lugar sa tray ng Mga Paborito"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Listahan ng mga app"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Listahan ng mga personal na app"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"magsulat ng mga setting at shortcut ng Home"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Pinapayagan ang app na baguhin ang mga setting at shortcut sa Home."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"Hindi pinahihintulutang tumawag ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Hindi ma-load ang widget"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"I-tap para tapusin ang pag-set up"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Isa itong app ng system at hindi maaaring i-uninstall."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"I-edit ang Pangalan"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Naka-disable ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Profile sa trabaho"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"May badge at nakikita ng iyong IT admin ang mga app para sa trabaho"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Naka-off ang mga app para sa trabaho"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Naka-pause ang mga app para sa trabaho"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Ang mga app mo para sa trabaho ay hindi makakapagpadala sa iyo ng mga notification, makakagamit ng baterya mo, o makaka-access ng iyong lokasyon"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Naka-off ang mga app para sa trabaho. Ang mga app mo para sa trabaho ay hindi makakapagpadala sa iyo ng mga notification, makakagamit ng baterya mo, o makaka-access ng iyong lokasyon"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"May badge at nakikita ng iyong IT admin ang mga app para sa trabaho"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c5980a9..ce75276 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Widget\'ı taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"genişlik: %1$d, yükseklik: %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Ana ekranda taşımak için widget\'a dokunup basılı tutun"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Ana ekrana ekle"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Widget\'lar"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Ara"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Arama kutusundaki metni temizle"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Kullanılabilir widget yok"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Arama sonucu yok"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Widget\'lar ve kısayollar kullanılamıyor"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Widget veya kısayol bulunamadı"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Kişisel"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"İş"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Görüşmeler"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Bildirimler"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Kısayolu taşımak için dokunup basılı tutun."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Kısayolu taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Bu Ana ekranda yer kalmadı."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Bu Ana ekranda yer yok"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoriler tepsisinde başka yer kalmadı"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Uygulamalar listesi"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Kişisel uygulamalar listesi"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Ana ekran ayarlarını ve kısayollarını yaz"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Uygulamaya, Ana ekrandaki ayarları ve kısayolları değiştirme izni verir."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının telefon etmesine izin verilmiyor"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Widget yüklenemiyor"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Kurulumu tamamlamak için dokunun"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu bir sistem uygulamasıdır ve yüklemesi kaldırılamaz."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Adı Düzenle"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> devre dışı"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"İş profili"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"İş uygulamaları rozetle işaretlenmiş olup BT yöneticisi tarafından görülebilir"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Anladım"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"İş uygulamaları kapalı"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"İş uygulamaları duraklatıldı"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"İş uygulamaları size bildirim gönderemez, pilinizi kullanamaz veya konum bilginize erişemez"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"İş uygulamaları kapalı. İş uygulamalarınız size bildirim gönderemez, pilinizi kullanamaz veya konum bilginize erişemez"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"İş uygulamaları rozetle işaretlenmiş olup BT yöneticisi tarafından görülebilir"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index d7612df..e8a7bfc 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Двічі натисніть і втримуйте віджет, щоб перемістити його або виконати інші дії."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина – %1$d, висота – %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Натисніть і втримуйте віджет, щоб перемістити його в потрібне місце на головному екрані"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Додати на головний екран"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -50,8 +52,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Віджети"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Пошук"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Очистити текст у полі пошуку"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Немає доступних віджетів"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Нічого не знайдено"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Віджети та ярлики недоступні"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Не знайдено віджетів чи ярликів"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Особисті"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Робочі"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Розмови"</string>
@@ -68,7 +70,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Сповіщення"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Натисніть і втримуйте, щоб перемістити ярлик."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Двічі натисніть і втримуйте ярлик, щоб перемістити його або виконати інші дії."</string>
- <string name="out_of_space" msgid="4691004494942118364">"На цьому головному екрані більше немає місця."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"На головному екрані немає місця"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"В області \"Вибране\" немає місця"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Список додатків"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Список особистих додатків"</string>
@@ -164,7 +166,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Робочий профіль"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Робочі додатки відповідно позначені й видимі системному адміністратору"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Робочі додатки вимкнено"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Робочі додатки призупинено"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Ваші робочі додатки не можуть надсилати сповіщення, використовувати заряд акумулятора й отримувати доступ до геоданих"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Робочі додатки вимкнено. Вони не можуть надсилати сповіщення, використовувати заряд акумулятора й отримувати доступ до геоданих."</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Робочі додатки відповідно позначені й видимі системному адміністратору"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index aba11d3..90da57c 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"ویجیٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d چوڑا اور %2$d اونچا"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"ویجیٹ کو ہوم اسکرین کے چاروں طرف منتقل کرنے کیلئے اسے ٹچ کریں اور دبائے رکھیں"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"ہوم اسکرین میں شامل کریں"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"ویجیٹس"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"تلاش کریں"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"تلاش کے خانے سے ٹیکسٹ صاف کریں"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"کوئی ویجیٹ دستیاب نہیں ہے"</string>
- <string name="no_search_results" msgid="6518732304311458580">"تلاش کا کوئی نتیجہ نہیں ہے"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"ویجیٹس اور شارٹ کٹس دستیاب نہیں ہیں"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"کوئی ویجیٹ یا شارٹ کٹ نہیں ملا"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ذاتی"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"دفتری ویجیٹس"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"گفتگوئیں"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"اطلاعات"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"شارٹ کٹ منتقل کرنے کیلیے ٹچ کریں اور پکڑ کر رکھیں۔"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"شارٹ کٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔"</string>
- <string name="out_of_space" msgid="4691004494942118364">"اس ہوم اسکرین پر مزید کوئی گنجائش نہیں ہے۔"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"اس ہوم اسکرین پر کوئی گنجائش نہیں ہے"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"پسندیدہ ٹرے میں مزید کوئی گنجائش نہیں ہے"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"ایپس کی فہرست"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"ذاتی ایپس کی فہرست"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ہوم ترتیبات اور شارٹ کٹس کو لکھیں"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"ایپ کو ہوم میں ترتیبات اور شارٹ کٹس کو تبدیل کرنے کی اجازت دیتا ہے۔"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو فون کالیں کرنے کی اجازت نہیں ہے"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"ویجیٹ لوڈ نہیں کیا جا سکتا"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"سیٹ اپ مکمل کرنے کے لیے تھپتھپائیں"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"یہ ایک سسٹم ایپ ہے اور اسے اَن انسٹال نہیں کیا جا سکتا ہے۔"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"نام میں ترمیم کریں"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> غیر فعال ہے"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"دفتری پروفائل"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ورک ایپس پر بَیج لگایا گیا ہے اور آپ کا IT منتظم اسے دیکھ سکتا ہے"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"سمجھ آ گئی"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"ورک ایپس آف ہیں"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"ورک ایپس موقوف ہیں"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"آپ کی ورک ایپس آپ کو اطلاعات نہیں بھیج سکتیں، آپ کی بیٹری کا استعمال یا آپ کے مقام تک رسائی حاصل نہیں کر سکتی ہیں"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"ورک ایپس آف ہیں۔ آپ کی ورک ایپس آپ کو اطلاعات نہیں بھیج سکتیں، آپ کی بیٹری استعمال یا آپ کے مقام تک رسائی حاصل نہیں کر سکتی ہیں"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ورک ایپس پر بَیج لگایا ہے اور آپ کا IT منتظم انہیں دیکھ سکتا ہے"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 022e748..bd80989 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ikki marta bosib va bosib turgan holatda vidjetni tanlang yoki maxsus amaldan foydalaning."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Eni %1$d, bo‘yi %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Vidjetni ushlagan holda kerakli joyga siljiting"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Bosh ekranga chiqarish"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Vidjetlar"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Qidiruv"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Qidiruv maydoni matnini tozalash"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Hech qanday vidjet mavjud emas"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Hech narsa topilmadi"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Vidjet va yorliqlar mavjud emas"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Hech qanday vidjet yoki yorliq topilmadi"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Shaxsiy"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Ish"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Suhbatlar"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Bildirishnomalar"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Yorliqni bosib turgan holatda suring."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ikki marta bosing va yorliqni bosib turgan holatda suring yoki maxsus amaldan foydalaning."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Bosh ekranda joy qolmadi."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Bosh ekranda joy qolmadi."</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Ajratilganlarda birorta ham xona yo‘q"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Ilovalar ro‘yxati"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Shaxsiy ilovalar ro‘yxati"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"Uy sozlamalari va yorliqlarini yozish"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Ilovaga \"Uy\" ekranidagi yorliqlar va sozlamalrni o‘zgartirish uchun ruxsat beradi."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasiga qo‘ng‘iroqlarni amalga oshirishga ruxsat berilmagan"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Vidjet yuklanmadi"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Sozlashni yakunlash uchun bosing"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu tizim ilovasi, shuning uchun o‘chirib bo‘lmaydi."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Nomini tahrirlash"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi o‘chirib qo‘yildi"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Ish profili"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ishga oid ilovalar qadalgan va IT administratoringizga koʻrinadi"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Ishga oid ilovalar faolsizlantirilgan"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Ishga oid ilovalar pauza qilingan"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Ishga oid ilovalar batareya sarfi haqida bildirishnomalar yubora olmaydi va joylashuv axborotidan foydalana olmaydi"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ishga oid ilovalar faolsizlantirilgan. Ular batareya sarfi haqida bildirishnomalar yubora olmaydi va joylashuv axborotidan foydalana olmaydi"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ishga oid ilovalar qadalgan va IT administratoringizga koʻrinadi"</string>
diff --git a/res/values-v29/styles.xml b/res/values-v29/styles.xml
index 8254d48..5370b79 100644
--- a/res/values-v29/styles.xml
+++ b/res/values-v29/styles.xml
@@ -26,8 +26,6 @@
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowShowWallpaper">true</item>
- <item name="folderTextColor">?attr/workspaceTextColor</item>
- <item name="isFolderDarkText">?attr/isWorkspaceDarkText</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:enforceStatusBarContrast">false</item>
<item name="android:enforceNavigationBarContrast">false</item>
diff --git a/res/values-v30/styles.xml b/res/values-v30/styles.xml
index a144363..ec5c113 100644
--- a/res/values-v30/styles.xml
+++ b/res/values-v30/styles.xml
@@ -26,8 +26,6 @@
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowShowWallpaper">true</item>
- <item name="folderTextColor">?attr/workspaceTextColor</item>
- <item name="isFolderDarkText">?attr/isWorkspaceDarkText</item>
<item name="android:windowLayoutInDisplayCutoutMode">always</item>
<item name="android:enforceStatusBarContrast">false</item>
<item name="android:enforceNavigationBarContrast">false</item>
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
index 1785623..fb37e85 100644
--- a/res/values-v31/colors.xml
+++ b/res/values-v31/colors.xml
@@ -39,8 +39,9 @@
<color name="text_color_tertiary_dark">@android:color/system_neutral2_400</color>
<color name="wallpaper_popup_scrim">@android:color/system_neutral1_900</color>
- <color name="folder_background_light" android:lstar="98">@android:color/system_neutral1_50</color>
- <color name="folder_background_dark" android:lstar="30">@android:color/system_neutral2_800</color>
-
+
<color name="folder_dot_color">@android:color/system_accent2_50</color>
+
+ <color name="workspace_accent_color_light">@android:color/system_accent2_700</color>
+ <color name="workspace_accent_color_dark">@android:color/system_accent1_50</color>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index c3e2363..8a32ee7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Nhấn đúp và giữ để di chuyển một tiện ích hoặc sử dụng các thao tác tùy chỉnh."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"Rộng %1$d x cao %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Chạm và giữ để di chuyển tiện ích xung quanh Màn hình chính"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Thêm vào Màn hình chính"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Tiện ích"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Tìm kiếm"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Xóa văn bản khỏi hộp tìm kiếm"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Không có tiện ích nào"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Không có kết quả tìm kiếm nào"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Không có tiện ích và lối tắt nào"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Không tìm thấy tiện ích hoặc lối tắt nào"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Cá nhân"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Công việc"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Cuộc trò chuyện"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Thông báo"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Chạm và giữ để di chuyển một lối tắt."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Nhấn đúp và giữ để di chuyển một lối tắt hoặc sử dụng các thao tác tùy chỉnh."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Không còn chỗ trên Màn hình chính này."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Không còn khoảng trống trên Màn hình chính này"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Không còn chỗ trong khay Mục yêu thích"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Danh sách ứng dụng"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Danh sách ứng dụng cá nhân"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"ghi cài đặt và lối tắt trên Màn hình chính"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Cho phép ứng dụng thay đổi cài đặt và lối tắt trên Màn hình chính."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> không được phép thực hiện cuộc gọi điện thoại"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Không thể tải tiện ích"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Nhấn để hoàn tất quá trình thiết lập"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Đây là ứng dụng hệ thống và không thể gỡ cài đặt."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Chỉnh sửa tên"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Đã vô hiệu hóa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Hồ sơ công việc"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT sẽ nhìn thấy các ứng dụng này"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Ứng dụng công việc đang tắt"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Đã tạm dừng ứng dụng công việc"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Các ứng dụng công việc không thể gửi thông báo cho bạn, sử dụng pin hoặc truy cập thông tin vị trí của bạn"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ứng dụng công việc đang tắt. Các ứng dụng công việc không thể gửi thông báo cho bạn, sử dụng pin hoặc truy cập thông tin vị trí của bạn"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT sẽ nhìn thấy các ứng dụng này"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index b5f8e33..225a7e1 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"点按两次并按住微件即可移动该微件或使用自定义操作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"宽 %1$d,高 %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"轻触并按住该微件即可将其在主屏幕上四处移动"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"添加到主屏幕"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"微件"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"搜索"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"清除搜索框中的文字"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"没有可用的微件"</string>
- <string name="no_search_results" msgid="6518732304311458580">"无搜索结果"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"无法使用微件和快捷方式"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"未找到任何微件或快捷方式"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"个人"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"对话"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"通知"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"轻触并按住快捷方式即可移动该快捷方式。"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"点按两次并按住快捷方式即可移动该快捷方式或使用自定义操作。"</string>
- <string name="out_of_space" msgid="4691004494942118364">"此主屏幕上已没有空间。"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"此主屏幕上已没有空间"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"收藏栏已满"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"应用列表"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"个人应用列表"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"写入主屏幕设置和快捷方式"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"允许应用更改主屏幕中的设置和快捷方式。"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"不允许使用“<xliff:g id="APP_NAME">%1$s</xliff:g>”拨打电话"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"无法加载微件"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"点按即可完成设置"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"这是系统应用,无法卸载。"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"修改名称"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"已停用<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"工作资料"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作应用带有标志,您的 IT 管理员可以看到此类应用"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"知道了"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"工作应用已关闭"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"工作应用已暂停"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"工作应用已关闭。工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作应用带有标志,您的 IT 管理员可以看到工作应用"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 0379e5b..98f9ef7 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"㩒兩下之後㩒住,就可以郁小工具或者用自訂操作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d 闊,%2$d 高"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"按住小工具即可隨意在主畫面上移動"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"新增至主畫面"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"搜尋"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"清除搜尋框中的文字"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"沒有可用的小工具"</string>
- <string name="no_search_results" msgid="6518732304311458580">"沒有相符的搜尋結果"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"無法使用小工具和捷徑"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"找不到小工具或捷徑"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"對話"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"通知"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"輕觸並按住即可移動捷徑。"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"㩒兩下之後㩒住,就可以郁捷徑或者用自訂操作。"</string>
- <string name="out_of_space" msgid="4691004494942118364">"主畫面已無空間。"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"這個主畫面已無空間"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"我的收藏寄存區沒有足夠空間"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"應用程式清單"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"個人應用程式清單"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"寫入主畫面的設定和捷徑"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"允許應用程式更改主畫面中的設定和捷徑。"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"不允許 <xliff:g id="APP_NAME">%1$s</xliff:g> 撥打電話"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"無法載入小工具"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"輕按即可完成設定"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"這是系統應用程式,無法將其解除安裝。"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"編輯名稱"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」已停用"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"工作設定檔"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作應用程式會加上標誌,且你的 IT 管理員可以看到這類應用程式"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"知道了"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"工作應用程式已關閉"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"已暫停工作應用程式"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"工作應用程式無法向您傳送通知、使用電池或存取位置"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"工作應用程式已關閉。工作應用程式無法向您傳送通知、使用電池或存取位置"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"IT 管理員可看到工作應用程式和相關標誌"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 0f6ccd8..f38f143 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"輕觸兩下並按住即可移動小工具或使用自訂操作。"</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"寬度為 %1$d,高度為 %2$d"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"按住小工具即可將它拖放到主畫面上的任何位置"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"新增到主畫面"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"搜尋"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"清除搜尋框中的文字"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"沒有可用的小工具"</string>
- <string name="no_search_results" msgid="6518732304311458580">"找不到相符的搜尋結果"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"無法使用小工具和捷徑"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"找不到小工具或捷徑"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"對話"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"通知"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"按住即可移動捷徑。"</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"輕觸兩下並按住即可移動捷徑或使用自訂操作。"</string>
- <string name="out_of_space" msgid="4691004494942118364">"這個主畫面已無空間。"</string>
+ <string name="out_of_space" msgid="6692471482459245734">"這個主畫面已無空間"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"「我的最愛」匣已無可用空間"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"應用程式清單"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"個人應用程式清單"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"寫入主畫面設定和捷徑"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"允許應用程式變更主畫面中的設定和捷徑。"</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> 無法撥打電話"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"無法載入小工具"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"輕觸即可完成設定"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"這是系統應用程式,不可解除安裝。"</string>
<string name="folder_hint_text" msgid="5174843001373488816">"編輯名稱"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"已停用 <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"工作資料夾"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作應用程式會加上標記,而且你的 IT 管理員可以看到這類應用程式"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"我知道了"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"工作應用程式已關閉"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"系統已暫停工作應用程式"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"工作應用程式不會消耗電量、無法傳送通知,也無法存取你的位置資訊"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"工作應用程式已關閉。工作應用程式不會消耗電量、無法傳送通知,也無法存取你的位置資訊"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"你的 IT 管理員可以看見工作應用程式和相關標記"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 5bf5104..9f48102 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -32,6 +32,8 @@
<string name="long_accessible_way_to_add" msgid="2733588281439571974">"Thepha kabili uphinde ubambe ukuze uhambise iwijethi noma usebenzise izindlela ezingokwezifiso."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ububanzi ngokungu-%2$d ukuya phezulu"</string>
+ <!-- no translation found for widget_preview_context_description (9045841361655787574) -->
+ <skip />
<string name="add_item_request_drag_hint" msgid="5653291305078645405">"Thinta uphinde ubambe iwijethi ukuyihambisa Kusikrini sasekhaya"</string>
<string name="add_to_home_screen" msgid="8631549138215492708">"Engeza kusikrini sasekhaya"</string>
<plurals name="widgets_count" formatted="false" msgid="656794749266073027">
@@ -46,8 +48,8 @@
<string name="widget_button_text" msgid="2880537293434387943">"Amawijethi"</string>
<string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Sesha"</string>
<string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Sula umbhalo ovela ebhokisini lokusesha"</string>
- <string name="no_widgets_available" msgid="9140948620298620513">"Awekho amawijethi atholakalayo"</string>
- <string name="no_search_results" msgid="6518732304311458580">"Ayikho imiphumela yosesho"</string>
+ <string name="no_widgets_available" msgid="4337693382501046170">"Amawijethi nezinqamuleli akutholakali"</string>
+ <string name="no_search_results" msgid="3787956167293097509">"Awekho amajiwethi noma izinqamuleli ezitholakele"</string>
<string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Okwabantu siqu"</string>
<string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Umsebenzi"</string>
<string name="widget_category_conversations" msgid="8894438636213590446">"Izingxoxo"</string>
@@ -64,7 +66,7 @@
<string name="notifications_header" msgid="1404149926117359025">"Izaziso"</string>
<string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Thinta uphinde ubambe ukuze uhambise isinqamuleli."</string>
<string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Thepha kabili uphinde ubambe ukuze uhambise isinqamuleli noma usebenzise izenzo ezingokwezifiso."</string>
- <string name="out_of_space" msgid="4691004494942118364">"Asisekho isikhala kulesi sikrini Sasekhaya."</string>
+ <string name="out_of_space" msgid="6692471482459245734">"Asikho isikhala kulesi sikrini sasekhaya"</string>
<string name="hotseat_out_of_space" msgid="7448809638125333693">"Asisekho isikhala kwitreyi lezintandokazi"</string>
<string name="all_apps_button_label" msgid="8130441508702294465">"Uhlu lwezinhlelo zokusebenza"</string>
<string name="all_apps_button_personal_label" msgid="1315764287305224468">"Uhlu lwezinhlelo zokusebenza zomuntu siqu"</string>
@@ -82,10 +84,8 @@
<string name="permlab_write_settings" msgid="3574213698004620587">"bhala izilungiselelo zokuthi Ikhaya nezinqamuleli"</string>
<string name="permdesc_write_settings" msgid="5440712911516509985">"Ivumela uhlelo lokusebenza ukuthi lushintshe izilungiselelo nezinqamuleli Ekhaya."</string>
<string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ayivunyelwe ukwenza amakholi wefoni"</string>
- <!-- no translation found for gadget_error_text (740356548025791839) -->
- <skip />
- <!-- no translation found for gadget_setup_text (1745356155479272374) -->
- <skip />
+ <string name="gadget_error_text" msgid="740356548025791839">"Ayikwazi ukulayisha iwijethi"</string>
+ <string name="gadget_setup_text" msgid="1745356155479272374">"Thepha ukuze uqede ukusetha"</string>
<string name="uninstall_system_app_text" msgid="4172046090762920660">"Lolu uhlelo lokusebenza lwesistimu futhi alikwazi ukukhishwa."</string>
<string name="folder_hint_text" msgid="5174843001373488816">"Hlela igama"</string>
<string name="disabled_app_label" msgid="6673129024321402780">"Kukhutshaziwe <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -160,7 +160,7 @@
<string name="work_profile_toggle_label" msgid="3081029915775481146">"Iphrofayela yomsebenzi"</string>
<string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ama-app omsebenzi anebheji futhi ayabonakala kumphathi wakho we-IT"</string>
<string name="work_profile_edu_accept" msgid="6069788082535149071">"Ngiyezwa"</string>
- <string name="work_apps_paused_title" msgid="3007471013401118920">"Ama-app omsebenzi avaliwe"</string>
+ <string name="work_apps_paused_title" msgid="3040901117349444598">"Izinhlelo zokusebenza zomsebenzi ziphunyuziwe"</string>
<string name="work_apps_paused_body" msgid="261634750995824906">"Ama-app akho omsebenzi awakwazi ukukuthumela izaziso, ukusebenzisa ibhethri lakho, noma ukufinyelela indawo yakho"</string>
<string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ama-app omsebenzi avaliwe. Ama-app akho omsebenzi awakwazi ukukuthumela izaziso, ukusebenzisa ibhethri lakho, noma ukufinyelela indawo yakho"</string>
<string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ama-app omsebenzi anebheji futhi ayabonakala kumphathi wakho we-IT"</string>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 1fadc88..00cf31c 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -25,6 +25,9 @@
<attr name="popupColorPrimary" format="color" />
<attr name="popupColorSecondary" format="color" />
<attr name="popupColorTertiary" format="color" />
+ <attr name="popupShadeFirst" format="color" />
+ <attr name="popupShadeSecond" format="color" />
+ <attr name="popupShadeThird" format="color" />
<attr name="isMainColorDark" format="boolean" />
<attr name="isWorkspaceDarkText" format="boolean" />
<attr name="workspaceTextColor" format="color" />
@@ -46,7 +49,8 @@
<attr name="folderHintColor" format="color" />
<attr name="isFolderDarkText" format="boolean" />
<attr name="workProfileOverlayTextColor" format="color" />
- <attr name="gridColor" format="color" />
+ <attr name="workspaceAccentColor" format="color" />
+ <attr name="dropTargetHoverTextColor" format="color" />
<!-- BubbleTextView specific attributes. -->
<declare-styleable name="BubbleTextView">
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 01f5364..76fd1d7 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -53,6 +53,13 @@
<color name="popup_color_secondary_dark">#202124</color>
<color name="popup_color_tertiary_dark">#757575</color> <!-- Gray 600 -->
+ <color name="popup_shade_first_light">#F9F9F9</color>
+ <color name="popup_shade_second_light">#F1F1F1</color>
+ <color name="popup_shade_third_light">#E2E2E2</color>
+ <color name="popup_shade_first_dark">#303030</color>
+ <color name="popup_shade_second_dark">#262626</color>
+ <color name="popup_shade_third_dark">#1B1B1B</color>
+
<color name="popup_notification_dot_light">#FFF</color>
<color name="popup_notification_dot_dark">#757575</color>
@@ -62,8 +69,8 @@
<color name="folder_hint_text_color_light">#FFF</color>
<color name="folder_hint_text_color_dark">#FF000000</color>
- <color name="folder_background_light">#FFFFFF</color>
- <color name="folder_background_dark">#FF3C4043</color>
+ <color name="folder_background_light">#F9F9F9</color>
+ <color name="folder_background_dark">#464746</color>
<color name="folder_dot_color">?attr/colorPrimary</color>
@@ -73,4 +80,7 @@
<color name="wallpaper_popup_scrim">?android:attr/colorAccent</color>
<color name="wallpaper_scrim_color">#0D878787</color>
+
+ <color name="workspace_accent_color_light">#ff254e47</color>
+ <color name="workspace_accent_color_dark">#ff9cfff2</color>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index bc63c06..ee2304c 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -41,6 +41,7 @@
<!-- Scalable Grid -->
<dimen name="scalable_grid_left_right_margin">22dp</dimen>
+ <dimen name="scalable_grid_qsb_bottom_margin">42dp</dimen>
<!-- Workspace page indicator -->
<dimen name="workspace_page_indicator_height">24dp</dimen>
@@ -120,6 +121,8 @@
<!-- Floating action button inside work tab to toggle work profile -->
<dimen name="work_fab_height">48dp</dimen>
<dimen name="work_fab_radius">24dp</dimen>
+ <dimen name="work_card_padding_horizontal">24dp</dimen>
+ <dimen name="work_card_padding_vertical">32dp</dimen>
<dimen name="work_fab_margin">16dp</dimen>
<dimen name="work_profile_footer_padding">20dp</dimen>
<dimen name="work_profile_footer_text_size">16sp</dimen>
@@ -188,8 +191,9 @@
<!-- Dragging -->
<!-- Drag padding to add to the bottom of drop targets -->
<dimen name="drop_target_drag_padding">14dp</dimen>
- <dimen name="drop_target_text_size">20sp</dimen>
+ <dimen name="drop_target_text_size">16sp</dimen>
<dimen name="drop_target_shadow_elevation">2dp</dimen>
+ <dimen name="drop_target_bar_margin_horizontal">4dp</dimen>
<!-- the distance an icon must be dragged before button drop targets accept it -->
<dimen name="drag_distanceThreshold">30dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3dbd760..ddd838d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -55,6 +55,9 @@
<string name="widget_dims_format">%1$d \u00d7 %2$d</string>
<!-- Accessibility spoken message format for the dimensions of a widget in the drawer -->
<string name="widget_accessible_dims_format">%1$d wide by %2$d high</string>
+ <!-- Spoken text for a screen reader. The placeholder text is the widget name.
+ [CHAR_LIMIT=none]-->
+ <string name="widget_preview_context_description"><xliff:g id="widget_name" example="Calendar month view">%1$s</xliff:g> widget</string>
<!-- Message to tell the user to press and hold a widget/icon to add it to the home screen.
[CHAR LIMIT=NONE] -->
<string name="add_item_request_drag_hint">Touch & hold the widget to move it around the Home screen</string>
@@ -140,8 +143,8 @@
<string name="long_accessible_way_to_add_shortcut">Double-tap & hold to move a shortcut or use custom actions.</string>
<skip />
- <!-- Error message when user has filled a home screen -->
- <string name="out_of_space">No more room on this Home screen.</string>
+ <!-- Error message when a user can't add more apps, widgets, or shortcuts to a Home screen. -->
+ <string name="out_of_space">No room on this Home screen</string>
<!-- Error message when user has filled the hotseat -->
<string name="hotseat_out_of_space">No more room in the Favorites tray</string>
@@ -394,7 +397,7 @@
<string name="work_profile_edu_accept">Got it</string>
<!--- heading shown when user opens work apps tab while work apps are paused -->
- <string name="work_apps_paused_title">Work apps are off</string>
+ <string name="work_apps_paused_title">Work apps are paused</string>
<!--- body shown when user opens work apps tab while work apps are paused -->
<string name="work_apps_paused_body">Your work apps can’t send you notifications, use your battery, or access your location</string>
<!-- content description for paused work apps list -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 1cacc28..24851f2 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -26,8 +26,6 @@
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowShowWallpaper">true</item>
- <item name="folderTextColor">?attr/workspaceTextColor</item>
- <item name="isFolderDarkText">?attr/isWorkspaceDarkText</item>
</style>
<style name="LauncherTheme" parent="@style/BaseLauncherTheme">
@@ -39,6 +37,9 @@
<item name="popupColorPrimary">@color/popup_color_primary_light</item>
<item name="popupColorSecondary">@color/popup_color_secondary_light</item>
<item name="popupColorTertiary">@color/popup_color_tertiary_light</item>
+ <item name="popupShadeFirst">@color/popup_shade_first_light</item>
+ <item name="popupShadeSecond">@color/popup_shade_second_light</item>
+ <item name="popupShadeThird">@color/popup_shade_third_light</item>
<item name="popupNotificationDotColor">@color/popup_notification_dot_light</item>
<item name="isMainColorDark">false</item>
<item name="isWorkspaceDarkText">false</item>
@@ -59,7 +60,8 @@
<item name="workProfileOverlayTextColor">#FF212121</item>
<item name="eduHalfSheetBGColor">?android:attr/colorAccent</item>
<item name="disabledIconAlpha">.54</item>
- <item name="gridColor">?android:attr/colorAccent</item>
+ <item name="workspaceAccentColor">@color/workspace_accent_color_light</item>
+ <item name="dropTargetHoverTextColor">@color/workspace_text_color_light</item>
<item name="overviewScrimColor">@color/overview_scrim</item>
<item name="android:windowTranslucentStatus">false</item>
@@ -72,11 +74,9 @@
</style>
<style name="LauncherTheme.DarkMainColor" parent="@style/LauncherTheme">
- <item name="folderFillColor">@color/folder_background_dark</item>
- <item name="folderTextColor">@color/workspace_text_color_light</item>
- <item name="isFolderDarkText">false</item>
- <item name="folderHintColor">@color/folder_hint_text_color_light</item>
<item name="disabledIconAlpha">.254</item>
+ <item name="workspaceAccentColor">@color/workspace_accent_color_dark</item>
+ <item name="dropTargetHoverTextColor">@color/workspace_text_color_dark</item>
</style>
@@ -87,12 +87,6 @@
<item name="workspaceKeyShadowColor">@android:color/transparent</item>
<item name="isWorkspaceDarkText">true</item>
<item name="workspaceStatusBarScrim">@null</item>
- <item name="folderDotColor">@color/folder_dot_color</item>
- <item name="folderFillColor">@color/folder_background_light</item>
- <item name="folderIconBorderColor">#FF80868B</item>
- <item name="folderTextColor">@color/workspace_text_color_dark</item>
- <item name="isFolderDarkText">true</item>
- <item name="folderHintColor">@color/folder_hint_text_color_dark</item>
</style>
<style name="LauncherTheme.Dark" parent="@style/LauncherTheme">
@@ -109,6 +103,9 @@
<item name="popupColorSecondary">@color/popup_color_secondary_dark</item>
<item name="popupColorTertiary">@color/popup_color_tertiary_dark</item>
<item name="popupNotificationDotColor">@color/popup_notification_dot_dark</item>
+ <item name="popupShadeFirst">@color/popup_shade_first_dark</item>
+ <item name="popupShadeSecond">@color/popup_shade_second_dark</item>
+ <item name="popupShadeThird">@color/popup_shade_third_dark</item>
<item name="widgetsTheme">@style/WidgetContainerTheme.Dark</item>
<item name="folderDotColor">@color/folder_dot_color</item>
<item name="folderFillColor">@color/folder_background_dark</item>
@@ -125,25 +122,17 @@
</style>
<style name="LauncherTheme.Dark.DarkMainColor" parent="@style/LauncherTheme.Dark">
- <item name="folderFillColor">@color/folder_background_dark</item>
- <item name="folderTextColor">@color/workspace_text_color_light</item>
- <item name="isFolderDarkText">false</item>
- <item name="folderHintColor">@color/folder_hint_text_color_light</item>
<item name="disabledIconAlpha">.54</item>
</style>
<style name="LauncherTheme.Dark.DarkText" parent="@style/LauncherTheme.Dark">
<item name="android:colorControlHighlight">#19212121</item>
- <item name="folderFillColor">@color/folder_background_light</item>
<item name="workspaceTextColor">@color/workspace_text_color_dark</item>
<item name="workspaceShadowColor">@android:color/transparent</item>
<item name="workspaceAmbientShadowColor">@android:color/transparent</item>
<item name="workspaceKeyShadowColor">@android:color/transparent</item>
<item name="isWorkspaceDarkText">true</item>
<item name="workspaceStatusBarScrim">@null</item>
- <item name="folderTextColor">@color/workspace_text_color_dark</item>
- <item name="isFolderDarkText">true</item>
- <item name="folderHintColor">@color/folder_hint_text_color_dark</item>
</style>
<!-- A derivative project can extend these themes to customize the application theme without
@@ -269,8 +258,8 @@
<!-- Drop targets -->
<style name="DropTargetButtonBase" parent="@android:style/TextAppearance.DeviceDefault">
<item name="android:drawablePadding">8dp</item>
- <item name="android:padding">16dp</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:padding">14dp</item>
+ <item name="android:textColor">@color/drop_target_text</item>
<item name="android:textSize">@dimen/drop_target_text_size</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">end</item>
diff --git a/res/xml/device_profiles.xml b/res/xml/device_profiles.xml
index 1c99dfc..256999c 100644
--- a/res/xml/device_profiles.xml
+++ b/res/xml/device_profiles.xml
@@ -116,6 +116,14 @@
launcher:canBeDefault="true" />
<display-option
+ launcher:name="Large Phone Split Display"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="56"
+ launcher:iconTextSize="14.4"
+ launcher:canBeDefault="split_display" />
+
+ <display-option
launcher:name="Shorter Stubby"
launcher:minWidthDps="255"
launcher:minHeightDps="400"
diff --git a/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java b/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
index 2d87957..a6f892c 100644
--- a/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
+++ b/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
@@ -122,6 +122,8 @@
@Test
public void initSpans_minResizeWidthSmallerThanCellWidth_shouldInitializeMinSpansToOne() {
LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
+ info.minWidth = 100;
+ info.minHeight = 100;
info.minResizeWidth = 20;
info.minResizeHeight = 20;
InvariantDeviceProfile idp = createIDP();
@@ -135,6 +137,8 @@
@Test
public void initSpans_minResizeWidthLargerThanCellWidth_shouldInitializeMinSpans() {
LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
+ info.minWidth = 100;
+ info.minHeight = 100;
info.minResizeWidth = 80;
info.minResizeHeight = 80;
InvariantDeviceProfile idp = createIDP();
@@ -157,6 +161,8 @@
Mockito.when(dp.shouldInsetWidgets()).thenReturn(true);
LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
+ info.minWidth = CELL_SIZE * 3;
+ info.minHeight = CELL_SIZE * 3;
info.minResizeWidth = CELL_SIZE * 2 + maxPadding;
info.minResizeHeight = CELL_SIZE * 2 + maxPadding;
@@ -177,6 +183,8 @@
dp.cellLayoutBorderSpacingPx = maxPadding - 1;
Mockito.when(dp.shouldInsetWidgets()).thenReturn(false);
LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
+ info.minWidth = CELL_SIZE * 3;
+ info.minHeight = CELL_SIZE * 3;
info.minResizeWidth = CELL_SIZE * 2 + maxPadding;
info.minResizeHeight = CELL_SIZE * 2 + maxPadding;
@@ -187,6 +195,22 @@
}
@Test
+ public void
+ initSpans_minResizeWidthHeightLargerThanMinWidth_shouldUseMinWidthHeightAsMinSpans() {
+ LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
+ info.minWidth = 20;
+ info.minHeight = 20;
+ info.minResizeWidth = 80;
+ info.minResizeHeight = 80;
+ InvariantDeviceProfile idp = createIDP();
+
+ info.initSpans(mContext, idp);
+
+ assertThat(info.minSpanX).isEqualTo(1);
+ assertThat(info.minSpanY).isEqualTo(1);
+ }
+
+ @Test
public void isMinSizeFulfilled_minWidthAndHeightWithinGridSize_shouldReturnTrue() {
LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
info.minWidth = 80;
diff --git a/robolectric_tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java b/robolectric_tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java
index c946c72..b9f183c 100644
--- a/robolectric_tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java
+++ b/robolectric_tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java
@@ -58,7 +58,7 @@
@RunWith(RobolectricTestRunner.class)
public final class WidgetsDiffReporterTest {
- private static final String TEST_PACKAGE_PREFIX = "com.google.test";
+ private static final String TEST_PACKAGE_PREFIX = "com.android.test";
private static final WidgetListBaseRowEntryComparator COMPARATOR =
new WidgetListBaseRowEntryComparator();
@@ -241,6 +241,30 @@
assertThat(currentList).containsExactlyElementsIn(newList);
}
+ @Test
+ public void headersContentsMix_contentMaxSpanSizeModified_shouldInvokeCorrectCallbacks() {
+ // GIVEN the current list has app headers [A, B, E content].
+ ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
+ List.of(mHeaderA, mHeaderB, mContentE));
+ // GIVEN the new list has max span size in "E content" modified.
+ List<WidgetsListBaseEntry> newList = List.of(
+ mHeaderA,
+ mHeaderB,
+ new WidgetsListContentEntry(
+ mContentE.mPkgItem,
+ mContentE.mTitleSectionName,
+ mContentE.mWidgets,
+ mContentE.getMaxSpanSizeInCells() + 1));
+
+ // WHEN computing the list difference.
+ mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
+
+ // THEN notify "E content" has been changed.
+ verify(mAdapter).notifyItemChanged(/* position= */ 2);
+ // THEN the current list contains all elements from the new list.
+ assertThat(currentList).containsExactlyElementsIn(newList);
+ }
+
private WidgetsListHeaderEntry createWidgetsHeaderEntry(String packageName, String appName,
int numOfWidgets) {
diff --git a/robolectric_tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java b/robolectric_tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
index 2d22c45..106cac0 100644
--- a/robolectric_tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
+++ b/robolectric_tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
@@ -49,8 +49,10 @@
@RunWith(RobolectricTestRunner.class)
public final class WidgetsListContentEntryTest {
- private static final String PACKAGE_NAME = "com.google.test";
- private final PackageItemInfo mPackageItemInfo = new PackageItemInfo(PACKAGE_NAME);
+ private static final String PACKAGE_NAME = "com.android.test";
+ private static final String PACKAGE_NAME_2 = "com.android.test2";
+ private final PackageItemInfo mPackageItemInfo1 = new PackageItemInfo(PACKAGE_NAME);
+ private final PackageItemInfo mPackageItemInfo2 = new PackageItemInfo(PACKAGE_NAME_2);
private final ComponentName mWidget1 = ComponentName.createRelative(PACKAGE_NAME, ".mWidget1");
private final ComponentName mWidget2 = ComponentName.createRelative(PACKAGE_NAME, ".mWidget2");
private final ComponentName mWidget3 = ComponentName.createRelative(PACKAGE_NAME, ".mWidget3");
@@ -91,7 +93,7 @@
WidgetItem widgetItem3 = createWidgetItem(mWidget3, /* spanX= */ 2, /* spanY= */ 3);
// WHEN creates a WidgetsListRowEntry with the unsorted widgets.
- WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo,
+ WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo1,
/* titleSectionName= */ "T",
List.of(widgetItem1, widgetItem2, widgetItem3));
@@ -100,7 +102,7 @@
.containsExactly(widgetItem3, widgetItem1, widgetItem2)
.inOrder();
assertThat(widgetsListRowEntry.mTitleSectionName).isEqualTo("T");
- assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo);
+ assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo1);
}
@Test
@@ -114,7 +116,7 @@
WidgetItem widgetItem3 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 2);
// WHEN creates a WidgetsListRowEntry with the unsorted widgets.
- WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo,
+ WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo1,
/* titleSectionName= */ "T",
List.of(widgetItem1, widgetItem2, widgetItem3));
@@ -124,7 +126,7 @@
.containsExactly(widgetItem2, widgetItem3, widgetItem1)
.inOrder();
assertThat(widgetsListRowEntry.mTitleSectionName).isEqualTo("T");
- assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo);
+ assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo1);
}
@Test
@@ -140,7 +142,7 @@
WidgetItem widgetItem4 = createWidgetItem(mWidget3, /* spanX= */ 2, /* spanY= */ 2);
// WHEN creates a WidgetsListRowEntry with the unsorted widgets.
- WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo,
+ WidgetsListContentEntry widgetsListRowEntry = new WidgetsListContentEntry(mPackageItemInfo1,
/* titleSectionName= */ "T",
List.of(widgetItem1, widgetItem2, widgetItem3, widgetItem4));
@@ -151,9 +153,96 @@
.containsExactly(widgetItem4, widgetItem2, widgetItem1, widgetItem3)
.inOrder();
assertThat(widgetsListRowEntry.mTitleSectionName).isEqualTo("T");
- assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo);
+ assertThat(widgetsListRowEntry.mPkgItem).isEqualTo(mPackageItemInfo1);
}
+ @Test
+ public void equals_entriesWithDifferentPackageItemInfo_returnFalse() {
+ WidgetItem widgetItem1 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry1 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry2 = new WidgetsListContentEntry(
+ mPackageItemInfo2,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+
+ assertThat(widgetsListRowEntry1.equals(widgetsListRowEntry2)).isFalse();
+ }
+
+ @Test
+ public void equals_entriesWithDifferentTitleSectionName_returnFalse() {
+ WidgetItem widgetItem1 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry1 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry2 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "S",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+
+ assertThat(widgetsListRowEntry1.equals(widgetsListRowEntry2)).isFalse();
+ }
+
+ @Test
+ public void equals_entriesWithDifferentWidgetsList_returnFalse() {
+ WidgetItem widgetItem1 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetItem widgetItem2 = createWidgetItem(mWidget2, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry1 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry2 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem2),
+ /* maxSpanSizeInCells= */ 3);
+
+ assertThat(widgetsListRowEntry1.equals(widgetsListRowEntry2)).isFalse();
+ }
+
+ @Test
+ public void equals_entriesWithDifferentMaxSpanSize_returnFalse() {
+ WidgetItem widgetItem1 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry1 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry2 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 2);
+
+ assertThat(widgetsListRowEntry1.equals(widgetsListRowEntry2)).isFalse();
+ }
+
+ @Test
+ public void equals_entriesWithSameContents_returnTrue() {
+ WidgetItem widgetItem1 = createWidgetItem(mWidget1, /* spanX= */ 2, /* spanY= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry1 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+ WidgetsListContentEntry widgetsListRowEntry2 = new WidgetsListContentEntry(
+ mPackageItemInfo1,
+ /* titleSectionName= */ "T",
+ List.of(widgetItem1),
+ /* maxSpanSizeInCells= */ 3);
+
+ assertThat(widgetsListRowEntry1.equals(widgetsListRowEntry2)).isTrue();
+ }
+
+
private WidgetItem createWidgetItem(ComponentName componentName, int spanX, int spanY) {
String label = mWidgetsToLabels.get(componentName);
ShadowPackageManager packageManager = shadowOf(mContext.getPackageManager());
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index 9e21e1a..ee71146 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -108,7 +108,8 @@
private boolean mTopBorderActive;
private boolean mBottomBorderActive;
- private int mResizeMode;
+ private boolean mHorizontalResizeActive;
+ private boolean mVerticalResizeActive;
private int mRunningHInc;
private int mRunningVInc;
@@ -207,7 +208,6 @@
mWidgetView.addOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
LauncherAppWidgetProviderInfo info = (LauncherAppWidgetProviderInfo)
widgetView.getAppWidgetInfo();
- mResizeMode = info.resizeMode;
mDragLayer = dragLayer;
mMinHSpan = info.minSpanX;
@@ -218,10 +218,17 @@
mWidgetPadding = getDefaultPaddingForWidget(getContext(),
widgetView.getAppWidgetInfo().provider, null);
- if (mResizeMode == AppWidgetProviderInfo.RESIZE_HORIZONTAL) {
+ // Only show resize handles for the directions in which resizing is possible.
+ InvariantDeviceProfile idp = LauncherAppState.getIDP(cellLayout.getContext());
+ mVerticalResizeActive = (info.resizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0
+ && mMinVSpan < idp.numRows && mMaxVSpan > 1;
+ if (!mVerticalResizeActive) {
mDragHandles[INDEX_TOP].setVisibility(GONE);
mDragHandles[INDEX_BOTTOM].setVisibility(GONE);
- } else if (mResizeMode == AppWidgetProviderInfo.RESIZE_VERTICAL) {
+ }
+ mHorizontalResizeActive = (info.resizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0
+ && mMinHSpan < idp.numColumns && mMaxHSpan > 1;
+ if (!mHorizontalResizeActive) {
mDragHandles[INDEX_LEFT].setVisibility(GONE);
mDragHandles[INDEX_RIGHT].setVisibility(GONE);
}
@@ -255,6 +262,14 @@
}
}
+ CellLayout.LayoutParams lp = (CellLayout.LayoutParams) mWidgetView.getLayoutParams();
+ ItemInfo widgetInfo = (ItemInfo) mWidgetView.getTag();
+ lp.cellX = lp.tmpCellX = widgetInfo.cellX;
+ lp.cellY = lp.tmpCellY = widgetInfo.cellY;
+ lp.cellHSpan = widgetInfo.spanX;
+ lp.cellVSpan = widgetInfo.spanY;
+ lp.isLockedToGrid = true;
+
// When we create the resize frame, we first mark all cells as unoccupied. The appropriate
// cells (same if not resized, or different) will be marked as occupied when the resize
// frame is dismissed.
@@ -263,21 +278,19 @@
mLauncher.getStatsLogManager()
.logger()
.withInstanceId(logInstanceId)
- .withItemInfo((ItemInfo) mWidgetView.getTag())
+ .withItemInfo(widgetInfo)
.log(LAUNCHER_WIDGET_RESIZE_STARTED);
setOnKeyListener(this);
}
public boolean beginResizeIfPointInRegion(int x, int y) {
- boolean horizontalActive = (mResizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0;
- boolean verticalActive = (mResizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0;
-
- mLeftBorderActive = (x < mTouchTargetWidth) && horizontalActive;
- mRightBorderActive = (x > getWidth() - mTouchTargetWidth) && horizontalActive;
- mTopBorderActive = (y < mTouchTargetWidth + mTopTouchRegionAdjustment) && verticalActive;
+ mLeftBorderActive = (x < mTouchTargetWidth) && mHorizontalResizeActive;
+ mRightBorderActive = (x > getWidth() - mTouchTargetWidth) && mHorizontalResizeActive;
+ mTopBorderActive = (y < mTouchTargetWidth + mTopTouchRegionAdjustment)
+ && mVerticalResizeActive;
mBottomBorderActive = (y > getHeight() - mTouchTargetWidth + mBottomTouchRegionAdjustment)
- && verticalActive;
+ && mVerticalResizeActive;
boolean anyBordersActive = mLeftBorderActive || mRightBorderActive
|| mTopBorderActive || mBottomBorderActive;
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index d1cb5b8..61b5564 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -20,15 +20,12 @@
import static com.android.launcher3.LauncherState.NORMAL;
-import android.animation.AnimatorSet;
import android.content.Context;
-import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
-import android.util.Property;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -40,6 +37,7 @@
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.dragndrop.DragOptions;
+import com.android.launcher3.dragndrop.DragView;
import com.android.launcher3.model.data.ItemInfo;
/**
@@ -48,20 +46,6 @@
public abstract class ButtonDropTarget extends TextView
implements DropTarget, DragController.DragListener, OnClickListener {
- private static final Property<ButtonDropTarget, Integer> TEXT_COLOR =
- new Property<ButtonDropTarget, Integer>(Integer.TYPE, "textColor") {
-
- @Override
- public Integer get(ButtonDropTarget target) {
- return target.getTextColor();
- }
-
- @Override
- public void set(ButtonDropTarget target, Integer value) {
- target.setTextColor(value);
- }
- };
-
private static final int[] sTempCords = new int[2];
private static final int DRAG_VIEW_DROP_DURATION = 285;
private static final float DRAG_VIEW_HOVER_OVER_OPACITY = 0.65f;
@@ -84,15 +68,12 @@
private final int mDrawableSize;
protected CharSequence mText;
- protected ColorStateList mOriginalTextColor;
protected Drawable mDrawable;
private boolean mTextVisible = true;
private PopupWindow mToolTip;
private int mToolTipLocation;
- private AnimatorSet mCurrentColorAnim;
-
public ButtonDropTarget(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
@@ -110,7 +91,6 @@
protected void onFinishInflate() {
super.onFinishInflate();
mText = getText();
- mOriginalTextColor = getTextColors();
setContentDescription(mText);
}
@@ -125,6 +105,7 @@
// drawableLeft and drawableStart.
mDrawable = getContext().getDrawable(resId).mutate();
mDrawable.setBounds(0, 0, mDrawableSize, mDrawableSize);
+ mDrawable.setTintList(getTextColors());
setCompoundDrawablesRelative(mDrawable, null, null, null);
}
@@ -191,12 +172,6 @@
@Override
public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
mActive = !options.isKeyboardDrag && supportsDrop(dragObject.dragInfo);
- mDrawable.setColorFilter(null);
- if (mCurrentColorAnim != null) {
- mCurrentColorAnim.cancel();
- mCurrentColorAnim = null;
- }
- setTextColor(mOriginalTextColor);
setVisibility(mActive ? View.VISIBLE : View.GONE);
mAccessibleDrag = options.isAccessibleDrag;
@@ -235,18 +210,23 @@
return;
}
final DragLayer dragLayer = mLauncher.getDragLayer();
+ final DragView dragView = d.dragView;
final Rect from = new Rect();
dragLayer.getViewRectRelativeToSelf(d.dragView, from);
final Rect to = getIconRect(d);
final float scale = (float) to.width() / from.width();
- d.dragView.detachContentView(/* reattachToPreviousParent= */ true);
+ dragView.disableColorExtraction();
+ dragView.detachContentView(/* reattachToPreviousParent= */ true);
mDropTargetBar.deferOnDragEnd();
Runnable onAnimationEndRunnable = () -> {
completeDrop(d);
mDropTargetBar.onDragEnd();
mLauncher.getStateManager().goToState(NORMAL);
+ // Only re-enable updates once the workspace is back to normal, which will be after the
+ // current frame.
+ post(dragView::resumeColorExtraction);
};
dragLayer.animateView(d.dragView, from, to, scale, 1f, 1f, 0.1f, 0.1f,
@@ -317,10 +297,6 @@
mLauncher.getAccessibilityDelegate().handleAccessibleDrop(this, null, null);
}
- public int getTextColor() {
- return getTextColors().getDefaultColor();
- }
-
public void setTextVisible(boolean isVisible) {
CharSequence newText = isVisible ? mText : "";
if (mTextVisible != isVisible || !TextUtils.equals(newText, getText())) {
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 3823437..00278e4 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -263,7 +263,7 @@
mBackground.setCallback(this);
mBackground.setAlpha(0);
- mGridColor = Themes.getAttrColor(getContext(), R.attr.gridColor);
+ mGridColor = Themes.getAttrColor(getContext(), R.attr.workspaceAccentColor);
mGridVisualizationPadding =
res.getDimensionPixelSize(R.dimen.grid_visualization_cell_spacing);
mGridVisualizationRoundingRadius =
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index d301787..88e8171 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -120,6 +120,7 @@
public int iconDrawablePaddingPx;
public int iconDrawablePaddingOriginalPx;
+ public float cellScaleToFit;
public int cellWidthPx;
public int cellHeightPx;
public int workspaceCellPaddingXPx;
@@ -158,6 +159,9 @@
public final int hotseatBarSidePaddingStartPx;
public final int hotseatBarSidePaddingEndPx;
+ public final float qsbBottomMarginOriginalPx;
+ public int qsbBottomMarginPx;
+
// All apps
public int allAppsOpenVerticalTranslate;
public int allAppsCellHeightPx;
@@ -331,6 +335,10 @@
res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size);
updateHotseatIconSize(pxFromDp(inv.iconSize, mMetrics, 1f));
+ qsbBottomMarginOriginalPx = isScalableGrid
+ ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin)
+ : 0;
+
overviewTaskMarginPx = res.getDimensionPixelSize(R.dimen.overview_task_margin);
overviewTaskIconSizePx =
isTablet && FeatureFlags.ENABLE_OVERVIEW_GRID.get() ? res.getDimensionPixelSize(
@@ -347,18 +355,20 @@
// Now that we have all of the variables calculated, we can tune certain sizes.
if (isScalableGrid && inv.devicePaddings != null) {
// Paddings were created assuming no scaling, so we first unscale the extra space.
- int unscaledExtraSpace = (int) (extraSpace / iconScale);
+ int unscaledExtraSpace = (int) (extraSpace / cellScaleToFit);
DevicePadding padding = inv.devicePaddings.getDevicePadding(unscaledExtraSpace);
int paddingWorkspaceTop = padding.getWorkspaceTopPadding(unscaledExtraSpace);
int paddingWorkspaceBottom = padding.getWorkspaceBottomPadding(unscaledExtraSpace);
int paddingHotseatBottom = padding.getHotseatBottomPadding(unscaledExtraSpace);
- workspaceTopPadding = Math.round(paddingWorkspaceTop * iconScale);
- workspaceBottomPadding = Math.round(paddingWorkspaceBottom * iconScale);
- extraHotseatBottomPadding = Math.round(paddingHotseatBottom * iconScale);
+ workspaceTopPadding = Math.round(paddingWorkspaceTop * cellScaleToFit);
+ workspaceBottomPadding = Math.round(paddingWorkspaceBottom * cellScaleToFit);
+ extraHotseatBottomPadding = Math.round(paddingHotseatBottom * cellScaleToFit);
hotseatBarSizePx += extraHotseatBottomPadding;
+
+ qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * cellScaleToFit);
} else if (!isVerticalBarLayout() && isPhone && isTallDevice) {
// We increase the hotseat size when there is extra space.
// ie. For a display with a large aspect ratio, we can keep the icons on the workspace
@@ -526,15 +536,18 @@
* hotseat sizes, workspaceSpringLoadedShrinkFactor, folderIconSizePx, and folderIconOffsetYPx.
*/
public void updateIconSize(float scale, Resources res) {
- iconScale = scale;
+ // Icon scale should never exceed 1, otherwise pixellation may occur.
+ iconScale = Math.min(1f, scale);
+ cellScaleToFit = scale;
+
// Workspace
final boolean isVerticalLayout = isVerticalBarLayout();
float invIconSizeDp = isLandscape ? inv.landscapeIconSize : inv.iconSize;
- iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale));
+ iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale));
float invIconTextSizeSp = isLandscape ? inv.landscapeIconTextSize : inv.iconTextSize;
- iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * scale);
- iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * scale);
+ iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale);
+ iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * iconScale);
setCellLayoutBorderSpacing((int) (cellLayoutBorderSpacingOriginalPx * scale));
@@ -878,6 +891,9 @@
writer.println(prefix + "\tinv.minCellWidth:" + inv.minCellWidth + "dp");
writer.println(prefix + "\tinv.minCellHeight:" + inv.minCellHeight + "dp");
+ writer.println(prefix + "\tinv.numColumns:" + inv.numColumns);
+ writer.println(prefix + "\tinv.numRows:" + inv.numRows);
+
writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx));
writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx));
@@ -931,7 +947,8 @@
writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right));
writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom));
- writer.println(prefix + pxToDpStr("scaleToFit", iconScale));
+ writer.println(prefix + pxToDpStr("iconScale", iconScale));
+ writer.println(prefix + pxToDpStr("cellScaleToFit ", cellScaleToFit));
writer.println(prefix + pxToDpStr("extraSpace", extraSpace));
if (inv.devicePaddings != null) {
diff --git a/src/com/android/launcher3/DropTargetBar.java b/src/com/android/launcher3/DropTargetBar.java
index 4a1b084..88f6c49 100644
--- a/src/com/android/launcher3/DropTargetBar.java
+++ b/src/com/android/launcher3/DropTargetBar.java
@@ -105,7 +105,8 @@
/ (2 * (grid.inv.numColumns + 1)))
+ grid.edgeMarginPx;
} else {
- gap = grid.desiredWorkspaceLeftRightMarginPx - grid.inv.defaultWidgetPadding.right;
+ gap = getContext().getResources()
+ .getDimensionPixelSize(R.dimen.drop_target_bar_margin_horizontal);
}
lp.width = grid.availableWidthPx - 2 * gap;
diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java
index e8510b7..a4e1af6 100644
--- a/src/com/android/launcher3/ExtendedEditText.java
+++ b/src/com/android/launcher3/ExtendedEditText.java
@@ -70,6 +70,9 @@
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// If this is a back key, propagate the key back to the listener
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
+ if (TextUtils.isEmpty(getText())) {
+ hideKeyboard();
+ }
if (mBackKeyListener != null) {
return mBackKeyListener.onBackKey();
}
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index ff380ce..42b4e89 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -206,8 +206,14 @@
int freeSpace = dp.isTaskbarPresent
? dp.workspacePadding.bottom
: dp.hotseatBarSizePx - dp.hotseatCellHeightPx - mQsbHeight;
- return (int) (freeSpace * QSB_CENTER_FACTOR)
- + (dp.isTaskbarPresent ? dp.taskbarSize : dp.getInsets().bottom);
+
+ if (dp.isScalableGrid && dp.qsbBottomMarginPx <= freeSpace) {
+ return dp.qsbBottomMarginPx;
+ } else {
+ return (int) (freeSpace * QSB_CENTER_FACTOR) + (dp.isTaskbarPresent
+ ? dp.taskbarSize
+ : dp.getInsets().bottom);
+ }
}
/**
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index c5d280d..099f256 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -140,6 +140,7 @@
import com.android.launcher3.model.ItemInstallQueue;
import com.android.launcher3.model.ModelUtils;
import com.android.launcher3.model.ModelWriter;
+import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.ItemInfo;
@@ -1079,7 +1080,7 @@
if (ALL_APPS.equals(mPrevLauncherState) && !ALL_APPS.equals(state)
// Making sure mAllAppsSessionLogId is not null to avoid double logging.
&& mAllAppsSessionLogId != null) {
- getAppsView().getSearchUiManager().resetSearch();
+ getAppsView().reset(false);
getStatsLogManager().logger()
.withContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
.setWorkspace(
@@ -1338,6 +1339,12 @@
launcherInfo.minSpanX = itemInfo.minSpanX;
launcherInfo.minSpanY = itemInfo.minSpanY;
launcherInfo.user = appWidgetInfo.getProfile();
+ if (itemInfo instanceof PendingAddWidgetInfo) {
+ launcherInfo.sourceContainer = ((PendingAddWidgetInfo) itemInfo).sourceContainer;
+ } else if (itemInfo instanceof PendingRequestArgs) {
+ launcherInfo.sourceContainer =
+ ((PendingRequestArgs) itemInfo).getWidgetSourceContainer();
+ }
getModelWriter().addItemToDatabase(launcherInfo,
itemInfo.container, itemInfo.screenId, itemInfo.cellX, itemInfo.cellY);
@@ -1346,6 +1353,40 @@
prepareAppWidget(hostView, launcherInfo);
mWorkspace.addInScreen(hostView, launcherInfo);
announceForAccessibility(R.string.item_added_to_workspace);
+
+ // Show the widget resize frame.
+ if (hostView instanceof LauncherAppWidgetHostView) {
+ final LauncherAppWidgetHostView launcherHostView = (LauncherAppWidgetHostView) hostView;
+ CellLayout cellLayout = getCellLayout(launcherInfo.container, launcherInfo.screenId);
+ if (mStateManager.getState() == NORMAL) {
+ // Show resize frame once the widget layout is drawn.
+ View.OnLayoutChangeListener onLayoutChangeListener =
+ new View.OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View view, int left, int top, int right,
+ int bottom, int oldLeft, int oldTop, int oldRight,
+ int oldBottom) {
+ AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout);
+ launcherHostView.removeOnLayoutChangeListener(this);
+ }
+ };
+ launcherHostView.addOnLayoutChangeListener(onLayoutChangeListener);
+ // There is a small chance that the layout was already drawn before the layout
+ // change listener was registered, which means that the resize frame wouldn't be
+ // shown. Directly call requestLayout to force a layout change.
+ launcherHostView.requestLayout();
+ } else {
+ mStateManager.addStateListener(new StateManager.StateListener<LauncherState>() {
+ @Override
+ public void onStateTransitionComplete(LauncherState finalState) {
+ if (mPrevLauncherState == SPRING_LOADED && finalState == NORMAL) {
+ AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout);
+ mStateManager.removeStateListener(this);
+ }
+ }
+ });
+ }
+ }
}
private void prepareAppWidget(AppWidgetHostView hostView, LauncherAppWidgetInfo item) {
@@ -2329,24 +2370,45 @@
try {
final LauncherAppWidgetProviderInfo appWidgetInfo;
+ String removalReason = "";
if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)) {
// If the provider is not ready, bind as a pending widget.
appWidgetInfo = null;
+ removalReason = "the provider isn't ready.";
} else if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)) {
// The widget id is not valid. Try to find the widget based on the provider info.
appWidgetInfo = mAppWidgetManager.findProvider(item.providerName, item.user);
+ if (appWidgetInfo == null) {
+ if (WidgetsModel.GO_DISABLE_WIDGETS) {
+ removalReason = "widgets are disabled on go device.";
+ } else {
+ removalReason =
+ "WidgetManagerHelper cannot find a provider from provider info.";
+ }
+ }
} else {
appWidgetInfo = mAppWidgetManager.getLauncherAppWidgetInfo(item.appWidgetId);
+ if (appWidgetInfo == null) {
+ if (item.appWidgetId <= LauncherAppWidgetInfo.CUSTOM_WIDGET_ID) {
+ removalReason =
+ "CustomWidgetManager cannot find provider from that widget id.";
+ } else {
+ removalReason = "AppWidgetManager cannot find provider for that widget id."
+ + " It could be because AppWidgetService is not available, or the"
+ + " appWidgetId has not been bound to a the provider yet, or you"
+ + " don't have access to that appWidgetId.";
+ }
+ }
}
// If the provider is ready, but the width is not yet restored, try to restore it.
if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)
&& (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) {
if (appWidgetInfo == null) {
- Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId
- + " belongs to component " + item.providerName
- + ", as the provider is null");
+ FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId
+ + " belongs to component " + item.providerName + " user " + item.user
+ + ", as the provider is null and " + removalReason);
getModelWriter().deleteItemFromDatabase(item);
return null;
}
@@ -2360,7 +2422,8 @@
// Also try to bind the widget. If the bind fails, the user will be shown
// a click to setup UI, which will ask for the bind permission.
- PendingAddWidgetInfo pendingInfo = new PendingAddWidgetInfo(appWidgetInfo);
+ PendingAddWidgetInfo pendingInfo =
+ new PendingAddWidgetInfo(appWidgetInfo, item.sourceContainer);
pendingInfo.spanX = item.spanX;
pendingInfo.spanY = item.spanY;
pendingInfo.minSpanX = item.minSpanX;
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 39b16fd..440e9e3 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -61,6 +61,7 @@
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.DbDowngradeHelper;
+import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.provider.LauncherDbUtils;
import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
@@ -98,7 +99,7 @@
* Represents the schema of the database. Changes in scheme need not be backwards compatible.
* When increasing the scheme version, ensure that downgrade_schema.json is updated
*/
- public static final int SCHEMA_VERSION = 28;
+ public static final int SCHEMA_VERSION = 29;
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".settings";
public static final String KEY_LAYOUT_PROVIDER_AUTHORITY = "KEY_LAYOUT_PROVIDER_AUTHORITY";
@@ -879,9 +880,18 @@
}
dropTable(db, "workspaceScreens");
}
- case 28:
+ case 28: {
+ boolean columnAdded = addIntegerColumn(
+ db, Favorites.APPWIDGET_SOURCE, Favorites.CONTAINER_UNKNOWN);
+ if (!columnAdded) {
+ // Old version remains, which means we wipe old data
+ break;
+ }
+ }
+ case 29: {
// DB Upgraded successfully
return;
+ }
}
// DB was not upgraded
diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java
index 22c257a..d663480 100644
--- a/src/com/android/launcher3/LauncherSettings.java
+++ b/src/com/android/launcher3/LauncherSettings.java
@@ -197,6 +197,8 @@
public static final int CONTAINER_HOTSEAT_PREDICTION = -103;
public static final int CONTAINER_ALL_APPS = -104;
public static final int CONTAINER_WIDGETS_TRAY = -105;
+ public static final int CONTAINER_BOTTOM_WIDGETS_TRAY = -112;
+ public static final int CONTAINER_PIN_WIDGETS = -113;
// Represents search results view.
public static final int CONTAINER_SEARCH_RESULTS = -106;
public static final int CONTAINER_SHORTCUTS = -107;
@@ -207,6 +209,8 @@
// Represents any of the extended containers implemented in non-AOSP variants.
public static final int EXTENDED_CONTAINERS = -200;
+ public static final int CONTAINER_UNKNOWN = -1;
+
public static final String containerToString(int container) {
switch (container) {
case CONTAINER_DESKTOP: return "desktop";
@@ -306,6 +310,12 @@
*/
public static final String OPTIONS = "options";
+ /**
+ * Stores the source container that the widget was added from.
+ * <p>Type: INTEGER</p>
+ */
+ public static final String APPWIDGET_SOURCE = "appWidgetSource";
+
public static void addTableToDb(SQLiteDatabase db, long myProfileId, boolean optional) {
addTableToDb(db, myProfileId, optional, TABLE_NAME);
}
@@ -333,7 +343,8 @@
"restored INTEGER NOT NULL DEFAULT 0," +
"profileId INTEGER DEFAULT " + myProfileId + "," +
"rank INTEGER NOT NULL DEFAULT 0," +
- "options INTEGER NOT NULL DEFAULT 0" +
+ "options INTEGER NOT NULL DEFAULT 0," +
+ APPWIDGET_SOURCE + " INTEGER NOT NULL DEFAULT " + CONTAINER_UNKNOWN +
");");
}
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 303bb01..5bdc402 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1786,8 +1786,11 @@
onDropExternal(touchXY, dropTargetLayout, d);
} else {
final View cell = mDragInfo.cell;
+ final DragView dragView = d.dragView;
boolean droppedOnOriginalCellDuringTransition = false;
- Runnable onCompleteRunnable = null;
+ Runnable onCompleteRunnable = dragView::resumeColorExtraction;
+
+ dragView.disableColorExtraction();
if (dropTargetLayout != null && !d.cancelled) {
// Move internally
@@ -1898,7 +1901,9 @@
AppWidgetProviderInfo pInfo = hostView.getAppWidgetInfo();
if (pInfo != null && pInfo.resizeMode != AppWidgetProviderInfo.RESIZE_NONE
&& !options.isAccessibleDrag) {
+ final Runnable previousRunnable = onCompleteRunnable;
onCompleteRunnable = () -> {
+ previousRunnable.run();
if (!isPageInTransition()) {
AppWidgetResizeFrame.showForWidget(hostView, cellLayout);
}
@@ -1967,7 +1972,7 @@
parent.onDropChild(cell);
mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY,
- onCompleteRunnable == null ? null : forSuccessCallback(onCompleteRunnable));
+ forSuccessCallback(onCompleteRunnable));
mStatsLogManager.logger().withItemInfo(d.dragInfo).withInstanceId(d.logInstanceId)
.log(LauncherEvent.LAUNCHER_ITEM_DROP_COMPLETED);
}
@@ -2792,7 +2797,7 @@
}
} else if (mDragInfo != null) {
// When drag is cancelled, reattach content view back to its original parent.
- if (mDragInfo.cell instanceof LauncherAppWidgetHostView) {
+ if (mDragInfo.cell instanceof LauncherAppWidgetHostView && d.dragView != null) {
d.dragView.detachContentView(/* reattachToPreviousParent= */ true);
}
final CellLayout cellLayout = mLauncher.getCellLayout(
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index aabbe65..516af59 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -51,7 +51,6 @@
import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.ColorUtils;
-import androidx.core.os.BuildCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -184,16 +183,19 @@
} catch (Exception e) {
Log.e("AllAppsContainerView", "restoreInstanceState viewId = 0", e);
}
+
Bundle state = (Bundle) sparseArray.get(R.id.work_tab_state_id, null);
if (state != null) {
int currentPage = state.getInt(BUNDLE_KEY_CURRENT_PAGE, 0);
- if (currentPage != 0) {
- rebindAdapters(true);
+ if (currentPage != 0 && mViewPager != null) {
mViewPager.setCurrentPage(currentPage);
+ rebindAdapters(true);
+ } else {
+ reset(true);
}
}
- }
+ }
@Override
protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) {
@@ -255,22 +257,6 @@
mWorkModeSwitch.updateCurrentState(isEnabled);
}
mWorkAdapterProvider.updateCurrentState(isEnabled);
- mAH[AdapterHolder.WORK].applyPadding();
- }
-
- private void hideInput() {
- if (!BuildCompat.isAtLeastR() || !FeatureFlags.ENABLE_DEVICE_SEARCH.get()) return;
-
- WindowInsets insets = getRootWindowInsets();
- if (insets == null) return;
-
- if (insets.isVisible(WindowInsets.Type.ime())) {
- hideIme();
- }
- }
-
- protected void hideIme() {
- getWindowInsetsController().hide(WindowInsets.Type.ime());
}
/**
@@ -288,7 +274,6 @@
}
if (rv.getScrollbar().getThumbOffsetY() >= 0 &&
mLauncher.getDragLayer().isEventOverView(rv.getScrollbar(), ev)) {
- hideInput();
return false;
}
return rv.shouldContainerScroll(ev, mLauncher.getDragLayer());
@@ -509,7 +494,10 @@
R.layout.work_mode_fab, this, false);
this.addView(mWorkModeSwitch);
mWorkModeSwitch.setInsets(mInsets);
- mWorkModeSwitch.post(this::resetWorkProfile);
+ mWorkModeSwitch.post(() -> {
+ mAH[AdapterHolder.WORK].applyPadding();
+ resetWorkProfile();
+ });
}
}
@@ -633,6 +621,7 @@
mSearchModeWhileUsingTabs = true;
rebindAdapters(false); // hide tabs
}
+ mHeader.setCollapsed(true);
}
public void onClearSearchResult() {
@@ -715,7 +704,7 @@
if (mHeaderPaint.getColor() != mScrimColor && mHeaderPaint.getColor() != 0) {
int bottom = mUsingTabs && mHeader.mHeaderCollapsed ? mHeader.getVisibleBottomBound()
: mSearchContainer.getBottom();
- canvas.drawRect(0, 0, getWidth(), bottom + getTranslationY(),
+ canvas.drawRect(0, 0, canvas.getWidth(), bottom + getTranslationY(),
mHeaderPaint);
if (FeatureFlags.ENABLE_DEVICE_SEARCH.get() && getTranslationY() == 0) {
@@ -787,7 +776,6 @@
int bottomOffset = mWorkModeSwitch != null && mIsWork ? switchH : 0;
recyclerView.setPadding(padding.left, padding.top, padding.right,
padding.bottom + bottomOffset);
- recyclerView.scrollToTop();
}
}
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index 52dc19b..9a5f3f2 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -40,6 +40,7 @@
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
+import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.views.RecyclerViewFastScroller;
@@ -166,7 +167,7 @@
// Always scroll the view to the top so the user can see the changed results
scrollToTop();
- if (mApps.hasNoFilteredResults()) {
+ if (mApps.hasNoFilteredResults() && !FeatureFlags.ENABLE_DEVICE_SEARCH.get()) {
if (mEmptySearchBackground == null) {
mEmptySearchBackground = new AllAppsBackgroundDrawable(getContext());
mEmptySearchBackground.setAlpha(0);
@@ -454,8 +455,8 @@
*/
public int getTabWidth() {
DeviceProfile grid = BaseDraggingActivity.fromContext(getContext()).getDeviceProfile();
- int totalWidth = (grid.availableWidthPx - getPaddingLeft() - getPaddingRight());
+ int totalWidth = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
int iconPadding = totalWidth / grid.numShownAllAppsColumns - grid.allAppsIconSizePx;
- return totalWidth - iconPadding;
+ return totalWidth - iconPadding - grid.allAppsIconDrawablePaddingPx;
}
}
diff --git a/src/com/android/launcher3/allapps/FloatingHeaderView.java b/src/com/android/launcher3/allapps/FloatingHeaderView.java
index f1381e9..8ea83d5 100644
--- a/src/com/android/launcher3/allapps/FloatingHeaderView.java
+++ b/src/com/android/launcher3/allapps/FloatingHeaderView.java
@@ -154,6 +154,14 @@
PluginManagerWrapper.INSTANCE.get(getContext()).removePluginListener(this);
}
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ if (mMainRV != null) {
+ mTabLayout.getLayoutParams().width = mMainRV.getTabWidth();
+ }
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+
private void recreateAllRowsArray() {
int pluginCount = mPluginRows.size();
if (pluginCount == 0) {
@@ -224,8 +232,6 @@
mTabsHidden = tabsHidden;
mTabLayout.setVisibility(tabsHidden ? View.GONE : View.VISIBLE);
- mTabLayout.getLayoutParams().width =
- mAH[AllAppsContainerView.AdapterHolder.MAIN].recyclerView.getTabWidth();
mMainRV = setupRV(mMainRV, mAH[AllAppsContainerView.AdapterHolder.MAIN].recyclerView);
mWorkRV = setupRV(mWorkRV, mAH[AllAppsContainerView.AdapterHolder.WORK].recyclerView);
mParent = (ViewGroup) mMainRV.getParent();
diff --git a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
index 1eb726c..f64b7cb 100644
--- a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
@@ -15,8 +15,6 @@
*/
package com.android.launcher3.allapps;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_KEYBOARD_CLOSED;
-
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
@@ -88,10 +86,4 @@
public void onActivePageChanged(int currentActivePage) {
super.onActivePageChanged(currentActivePage);
}
-
- @Override
- protected void hideIme() {
- super.hideIme();
- mLauncher.getStatsLogManager().logger().log(LAUNCHER_ALLAPPS_KEYBOARD_CLOSED);
- }
}
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index d65eb22..aab6cb2 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -78,6 +78,9 @@
public static final BooleanFlag UNSTABLE_SPRINGS = getDebugFlag(
"UNSTABLE_SPRINGS", false, "Enable unstable springs for quickstep animations");
+ public static final BooleanFlag ENABLE_LOCAL_COLOR_POPUPS = getDebugFlag(
+ "ENABLE_LOCAL_COLOR_POPUPS", false, "Enable local color extraction for popups.");
+
public static final BooleanFlag KEYGUARD_ANIMATION = getDebugFlag(
"KEYGUARD_ANIMATION", false, "Enable animation for keyguard going away on wallpaper");
@@ -99,6 +102,10 @@
public static final BooleanFlag ENABLE_DEVICE_SEARCH = new DeviceFlag(
"ENABLE_DEVICE_SEARCH", true, "Allows on device search in all apps");
+ public static final BooleanFlag ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING = new DeviceFlag(
+ "ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING", true,
+ "Allows on device search in all apps logging");
+
public static final BooleanFlag IME_STICKY_SNACKBAR_EDU = getDebugFlag(
"IME_STICKY_SNACKBAR_EDU", true, "Show sticky IME edu in AllApps");
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index 1503167..df97bfb 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -16,6 +16,7 @@
package com.android.launcher3.dragndrop;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PIN_WIDGETS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_BACK;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_CANCELLED;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_DRAGGED;
@@ -249,7 +250,8 @@
mAppWidgetManager = new WidgetManagerHelper(this);
mAppWidgetHost = new LauncherAppWidgetHost(this);
- PendingAddWidgetInfo pendingInfo = new PendingAddWidgetInfo(widgetInfo);
+ PendingAddWidgetInfo pendingInfo =
+ new PendingAddWidgetInfo(widgetInfo, CONTAINER_PIN_WIDGETS);
pendingInfo.spanX = Math.min(mIdp.numColumns, widgetInfo.spanX);
pendingInfo.spanY = Math.min(mIdp.numRows, widgetInfo.spanY);
mWidgetOptions = pendingInfo.getDefaultSizeOptions(this);
diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java
index 1664980..3fdb256 100644
--- a/src/com/android/launcher3/dragndrop/DragView.java
+++ b/src/com/android/launcher3/dragndrop/DragView.java
@@ -66,6 +66,7 @@
import com.android.launcher3.util.RunnableList;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.views.BaseDragLayer;
+import com.android.launcher3.widget.LauncherAppWidgetHostView;
/** A custom view for rendering an icon, folder, shortcut or widget during drag-n-drop. */
public class DragView extends FrameLayout implements StateListener<LauncherState> {
@@ -471,12 +472,12 @@
mContent.draw(picture.beginRecording(mWidth, mHeight));
picture.endRecording();
View view = new View(mLauncher);
- view.setClipToOutline(mContent.getClipToOutline());
- view.setOutlineProvider(mContent.getOutlineProvider());
view.setBackground(new PictureDrawable(picture));
view.measure(makeMeasureSpec(mWidth, EXACTLY), makeMeasureSpec(mHeight, EXACTLY));
view.layout(mContent.getLeft(), mContent.getTop(),
mContent.getRight(), mContent.getBottom());
+ setClipToOutline(mContent.getClipToOutline());
+ setOutlineProvider(mContent.getOutlineProvider());
addViewInLayout(view, indexOfChild(mContent), mContent.getLayoutParams(), true);
removeViewInLayout(mContent);
@@ -491,6 +492,24 @@
}
/**
+ * If the drag view uses color extraction, block it.
+ */
+ public void disableColorExtraction() {
+ if (mContent instanceof LauncherAppWidgetHostView) {
+ ((LauncherAppWidgetHostView) mContent).disableColorExtraction();
+ }
+ }
+
+ /**
+ * If the drag view uses color extraction, restores it.
+ */
+ public void resumeColorExtraction() {
+ if (mContent instanceof LauncherAppWidgetHostView) {
+ ((LauncherAppWidgetHostView) mContent).enableColorExtraction(/* updateColors= */ false);
+ }
+ }
+
+ /**
* Removes this view from the {@link DragLayer}.
*
* <p>If the drag content is a {@link #mContent}, this call doesn't reattach the
diff --git a/src/com/android/launcher3/dragndrop/PinItemDragListener.java b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
index 9f12e6e..2bdf8a0 100644
--- a/src/com/android/launcher3/dragndrop/PinItemDragListener.java
+++ b/src/com/android/launcher3/dragndrop/PinItemDragListener.java
@@ -17,6 +17,8 @@
package com.android.launcher3.dragndrop;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PIN_WIDGETS;
+
import android.annotation.TargetApi;
import android.appwidget.AppWidgetManager;
import android.content.pm.LauncherApps.PinItemRequest;
@@ -84,7 +86,7 @@
mLauncher, mRequest.getAppWidgetProviderInfo(mLauncher));
final PinWidgetFlowHandler flowHandler =
new PinWidgetFlowHandler(providerInfo, mRequest);
- item = new PendingAddWidgetInfo(providerInfo) {
+ item = new PendingAddWidgetInfo(providerInfo, CONTAINER_PIN_WIDGETS) {
@Override
public WidgetAddFlowHandler getHandler() {
return flowHandler;
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index 25a0141..e704957 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -196,7 +196,7 @@
icon.mFolderName.setText(folderInfo.title);
icon.mFolderName.setCompoundDrawablePadding(0);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) icon.mFolderName.getLayoutParams();
- lp.topMargin = grid.cellYPaddingPx + grid.iconSizePx + grid.iconDrawablePaddingPx;
+ lp.topMargin = grid.iconSizePx + grid.iconDrawablePaddingPx;
icon.setTag(folderInfo);
icon.setOnClickListener(ItemClickHandler.INSTANCE);
diff --git a/src/com/android/launcher3/folder/PreviewItemManager.java b/src/com/android/launcher3/folder/PreviewItemManager.java
index a6674fc..8bef6ad 100644
--- a/src/com/android/launcher3/folder/PreviewItemManager.java
+++ b/src/com/android/launcher3/folder/PreviewItemManager.java
@@ -269,6 +269,9 @@
setDrawable(p, items.get(i));
if (!animate) {
+ if (p.anim != null) {
+ p.anim.cancel();
+ }
computePreviewItemDrawingParams(i, numItemsInFirstPagePreview, p);
if (mReferenceDrawable == null) {
mReferenceDrawable = p.drawable;
diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
index 2a1aec8..cf3da4b 100644
--- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
+++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
@@ -43,6 +43,7 @@
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
@@ -467,4 +468,16 @@
view.measure(makeMeasureSpec(width, EXACTLY), makeMeasureSpec(height, EXACTLY));
view.layout(0, 0, width, height);
}
+
+ /** Root layout for launcher preview that intercepts all touch events. */
+ public static class LauncherPreviewLayout extends InsettableFrameLayout {
+ public LauncherPreviewLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ return true;
+ }
+ }
}
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index ddff338..79e5b5d 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -27,6 +27,7 @@
import androidx.slice.SliceItem;
import com.android.launcher3.R;
+import com.android.launcher3.logger.LauncherAtom;
import com.android.launcher3.logger.LauncherAtom.ContainerInfo;
import com.android.launcher3.logger.LauncherAtom.FromState;
import com.android.launcher3.logger.LauncherAtom.ToState;
@@ -600,6 +601,13 @@
}
/**
+ * Sets logging fields from provided {@link LauncherAtom.Slice}.
+ */
+ default StatsLogger withSlice(LauncherAtom.Slice slice) {
+ return this;
+ }
+
+ /**
* Builds the final message and logs it as {@link EventEnum}.
*/
default void log(EventEnum event) {
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
index 365cab1..01b3e6e 100644
--- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
+++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
@@ -32,13 +32,11 @@
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.ItemInfoWithIcon;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.PackageInstallInfo;
import com.android.launcher3.util.GridOccupancy;
-import com.android.launcher3.util.IOUtils;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.PackageManagerHelper;
@@ -182,13 +180,6 @@
// log bitmap and label
FileLog.d(LOG, "Adding item info to workspace: " + itemInfo);
- if (itemInfo instanceof ItemInfoWithIcon) {
- ItemInfoWithIcon infoWithIcon = (ItemInfoWithIcon) itemInfo;
-
- FileLog.d(LOG, "Item info icon base 64 string: "
- + infoWithIcon.bitmap.icon == null
- ? "null" : IOUtils.toBase64String(infoWithIcon.bitmap.icon));
- }
}
}
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index 318496a..28fd389 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -75,7 +75,6 @@
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.ItemInfoWithIcon;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
-import com.android.launcher3.model.data.PackageItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.PackageInstallInfo;
@@ -380,6 +379,8 @@
LauncherSettings.Favorites.RANK);
final int optionsIndex = c.getColumnIndexOrThrow(
LauncherSettings.Favorites.OPTIONS);
+ final int sourceContainerIndex = c.getColumnIndexOrThrow(
+ LauncherSettings.Favorites.APPWIDGET_SOURCE);
final LongSparseArray<Boolean> unlockedUsers = new LongSparseArray<>();
@@ -747,6 +748,7 @@
appWidgetInfo.spanY = c.getInt(spanYIndex);
appWidgetInfo.options = c.getInt(optionsIndex);
appWidgetInfo.user = c.user;
+ appWidgetInfo.sourceContainer = c.getInt(sourceContainerIndex);
if (appWidgetInfo.spanX <= 0 || appWidgetInfo.spanY <= 0) {
c.markDeleted("Widget has invalid size: "
@@ -791,8 +793,8 @@
if (appWidgetInfo.restoreStatus !=
LauncherAppWidgetInfo.RESTORE_COMPLETED) {
- String pkg = appWidgetInfo.providerName.getPackageName();
- appWidgetInfo.pendingItemInfo = new PackageItemInfo(pkg);
+ appWidgetInfo.pendingItemInfo = WidgetsModel.newPendingItemInfo(
+ appWidgetInfo.providerName);
appWidgetInfo.pendingItemInfo.user = appWidgetInfo.user;
mIconCache.getTitleAndIconForApp(
appWidgetInfo.pendingItemInfo, false);
diff --git a/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java b/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
index 658c6e1..0283d5f 100644
--- a/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
+++ b/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
@@ -16,6 +16,11 @@
package com.android.launcher3.model.data;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_ALL_APPS;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_BOTTOM_WIDGETS_TRAY;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PIN_WIDGETS;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY;
import static com.android.launcher3.Utilities.ATLEAST_S;
import android.appwidget.AppWidgetHostView;
@@ -139,6 +144,11 @@
private boolean mHasNotifiedInitialWidgetSizeChanged;
+ /**
+ * The container from which this widget was added (e.g. widgets tray, pin widget, search)
+ */
+ public int sourceContainer = LauncherSettings.Favorites.CONTAINER_UNKNOWN;
+
public LauncherAppWidgetInfo(int appWidgetId, ComponentName providerName) {
this.appWidgetId = appWidgetId;
this.providerName = providerName;
@@ -187,7 +197,8 @@
.put(LauncherSettings.Favorites.APPWIDGET_PROVIDER, providerName.flattenToString())
.put(LauncherSettings.Favorites.RESTORED, restoreStatus)
.put(LauncherSettings.Favorites.OPTIONS, options)
- .put(LauncherSettings.Favorites.INTENT, bindOptions);
+ .put(LauncherSettings.Favorites.INTENT, bindOptions)
+ .put(LauncherSettings.Favorites.APPWIDGET_SOURCE, sourceContainer);
}
/**
@@ -255,11 +266,29 @@
return widgetFeatures;
}
+ public static LauncherAtom.Attribute getAttribute(int container) {
+ switch (container) {
+ case CONTAINER_WIDGETS_TRAY:
+ return LauncherAtom.Attribute.WIDGETS;
+ case CONTAINER_BOTTOM_WIDGETS_TRAY:
+ return LauncherAtom.Attribute.WIDGETS_BOTTOM_TRAY;
+ case CONTAINER_PIN_WIDGETS:
+ return LauncherAtom.Attribute.PINITEM;
+ case CONTAINER_WIDGETS_PREDICTION:
+ return LauncherAtom.Attribute.WIDGETS_TRAY_PREDICTION;
+ case CONTAINER_ALL_APPS:
+ return LauncherAtom.Attribute.ALL_APPS_SEARCH_RESULT_WIDGETS;
+ default:
+ return LauncherAtom.Attribute.UNKNOWN;
+ }
+ }
+
@Override
public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
return info.toBuilder()
.setWidget(info.getWidget().toBuilder().setWidgetFeatures(widgetFeatures))
+ .setAttribute(getAttribute(sourceContainer))
.build();
}
}
diff --git a/src/com/android/launcher3/pm/InstallSessionHelper.java b/src/com/android/launcher3/pm/InstallSessionHelper.java
index 2bd9ba0..ab35bd6 100644
--- a/src/com/android/launcher3/pm/InstallSessionHelper.java
+++ b/src/com/android/launcher3/pm/InstallSessionHelper.java
@@ -25,7 +25,6 @@
import android.content.pm.PackageInstaller;
import android.content.pm.PackageInstaller.SessionInfo;
import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
@@ -41,7 +40,6 @@
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.ItemInstallQueue;
-import com.android.launcher3.util.IOUtils;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
import com.android.launcher3.util.MainThreadInitializedObject;
@@ -231,37 +229,12 @@
}
public boolean verifySessionInfo(PackageInstaller.SessionInfo sessionInfo) {
- boolean validSessionInfo = verify(sessionInfo) != null
+ return verify(sessionInfo) != null
&& sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER
&& sessionInfo.getAppIcon() != null
&& !TextUtils.isEmpty(sessionInfo.getAppLabel())
&& !new PackageManagerHelper(mAppContext).isAppInstalled(
sessionInfo.getAppPackageName(), getUserHandle(sessionInfo));
-
- if (sessionInfo != null) {
- Bitmap appIcon = sessionInfo.getAppIcon();
-
- if (Utilities.IS_DEBUG_DEVICE) {
- FileLog.d(LOG, String.format(
- "Verifying session info. Valid: %b,"
- + " Session verified: %b,"
- + " Install reason valid: %b,"
- + " App icon: %s,"
- + " App label: %s,"
- + " App installed: %b.",
- validSessionInfo,
- verify(sessionInfo) != null,
- sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER,
- appIcon == null ? "null" : IOUtils.toBase64String(appIcon),
- sessionInfo.getAppLabel(),
- new PackageManagerHelper(mAppContext).isAppInstalled(
- sessionInfo.getAppPackageName(), getUserHandle(sessionInfo))));
- }
- } else {
- FileLog.d(LOG, "Verifying session info failed: session info null.");
- }
-
- return validSessionInfo;
}
public InstallSessionTracker registerInstallTracker(InstallSessionTracker.Callback callback) {
diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java
index cb35f74..a534ee3 100644
--- a/src/com/android/launcher3/popup/ArrowPopup.java
+++ b/src/com/android/launcher3/popup/ArrowPopup.java
@@ -16,9 +16,12 @@
package com.android.launcher3.popup;
+import static androidx.core.content.ContextCompat.getColorStateList;
+
import static com.android.launcher3.anim.Interpolators.ACCELERATED_EASE;
import static com.android.launcher3.anim.Interpolators.DECELERATED_EASE;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_LOCAL_COLOR_POPUPS;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -28,6 +31,7 @@
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Resources;
+import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.ColorDrawable;
@@ -133,6 +137,8 @@
private final String mIterateChildrenTag;
+ private final int[] mColors;
+
public ArrowPopup(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mInflater = LayoutInflater.from(context);
@@ -171,9 +177,19 @@
boolean isAboveAnotherSurface = getTopOpenViewWithType(mLauncher, TYPE_FOLDER) != null
|| mLauncher.getStateManager().getState() == LauncherState.ALL_APPS;
- if (!isAboveAnotherSurface && Utilities.ATLEAST_S) {
+ if (!isAboveAnotherSurface && Utilities.ATLEAST_S && ENABLE_LOCAL_COLOR_POPUPS.get()) {
setupColorExtraction();
}
+
+ if (isAboveAnotherSurface) {
+ mColors = new int[] {
+ getColorStateList(context, R.color.popup_shade_first).getDefaultColor()};
+ } else {
+ mColors = new int[] {
+ getColorStateList(context, R.color.popup_shade_first).getDefaultColor(),
+ getColorStateList(context, R.color.popup_shade_second).getDefaultColor(),
+ getColorStateList(context, R.color.popup_shade_third).getDefaultColor()};
+ }
}
public ArrowPopup(Context context, AttributeSet attrs) {
@@ -220,6 +236,16 @@
* Set the margins and radius of backgrounds after views are properly ordered.
*/
public void assignMarginsAndBackgrounds(ViewGroup viewGroup) {
+ assignMarginsAndBackgrounds(viewGroup, Color.TRANSPARENT);
+ }
+
+ /**
+ * @param backgroundColor When Color.TRANSPARENT, we get color from {@link #mColors}.
+ * Otherwise, we will use this color for all child views.
+ */
+ private void assignMarginsAndBackgrounds(ViewGroup viewGroup, int backgroundColor) {
+ final boolean getColorFromColorArray = backgroundColor == Color.TRANSPARENT;
+
int count = viewGroup.getChildCount();
int totalVisibleShortcuts = 0;
for (int i = 0; i < count; i++) {
@@ -229,8 +255,10 @@
}
}
+ int numVisibleChild = 0;
int numVisibleShortcut = 0;
View lastView = null;
+ AnimatorSet colorAnimator = new AnimatorSet();
for (int i = 0; i < count; i++) {
View view = viewGroup.getChildAt(i);
if (view.getVisibility() == VISIBLE) {
@@ -242,8 +270,14 @@
MarginLayoutParams mlp = (MarginLayoutParams) lastView.getLayoutParams();
mlp.bottomMargin = 0;
+
+ if (getColorFromColorArray) {
+ backgroundColor = mColors[numVisibleChild % mColors.length];
+ }
+
if (view instanceof ViewGroup && mIterateChildrenTag.equals(view.getTag())) {
- assignMarginsAndBackgrounds((ViewGroup) view);
+ assignMarginsAndBackgrounds((ViewGroup) view, backgroundColor);
+ numVisibleChild++;
continue;
}
@@ -261,8 +295,22 @@
numVisibleShortcut++;
}
}
+
+ if (!ENABLE_LOCAL_COLOR_POPUPS.get()) {
+ setChildColor(view, backgroundColor, colorAnimator);
+ // Arrow color matches the first child or the last child.
+ if (!mIsAboveIcon && numVisibleChild == 0) {
+ mArrowColor = backgroundColor;
+ } else if (mIsAboveIcon) {
+ mArrowColor = backgroundColor;
+ }
+ }
+
+ numVisibleChild++;
}
}
+
+ colorAnimator.setDuration(0).start();
measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
}
@@ -463,8 +511,8 @@
mArrowOffsetHorizontal, -mArrowOffsetVertical,
!mIsAboveIcon, mIsLeftAligned,
mArrowColor));
- // TODO: Remove elevation when arrow is above as it casts a shadow on the container
- mArrow.setElevation(mIsAboveIcon ? mElevation : 0);
+ setElevation(mElevation);
+ mArrow.setElevation(mElevation);
}
}
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index e5424cf..d3f4909 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -50,6 +50,8 @@
*/
private boolean isEnabled = true;
+ private boolean mHasFinishRecentsInAction = false;
+
public SystemShortcut(int iconResId, int labelResId, T target, ItemInfo itemInfo) {
mIconResId = iconResId;
mLabelResId = labelResId;
@@ -100,6 +102,14 @@
return mAccessibilityActionId == action;
}
+ public void setHasFinishRecentsInAction(boolean hasFinishRecentsInAction) {
+ mHasFinishRecentsInAction = hasFinishRecentsInAction;
+ }
+
+ public boolean hasFinishRecentsInAction() {
+ return mHasFinishRecentsInAction;
+ }
+
public interface Factory<T extends BaseDraggingActivity> {
@Nullable SystemShortcut<T> getShortcut(T activity, ItemInfo itemInfo);
diff --git a/src/com/android/launcher3/util/IOUtils.java b/src/com/android/launcher3/util/IOUtils.java
index d7fa905..1cec0ec 100644
--- a/src/com/android/launcher3/util/IOUtils.java
+++ b/src/com/android/launcher3/util/IOUtils.java
@@ -16,9 +16,7 @@
package com.android.launcher3.util;
-import android.graphics.Bitmap;
import android.os.FileUtils;
-import android.util.Base64;
import android.util.Log;
import com.android.launcher3.Utilities;
@@ -52,12 +50,6 @@
return out.toByteArray();
}
- public static String toBase64String(Bitmap bitmap) {
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
- return Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT);
- }
-
public static long copy(InputStream from, OutputStream to) throws IOException {
if (Utilities.ATLEAST_Q) {
return FileUtils.copy(from, to);
diff --git a/src/com/android/launcher3/util/OnboardingPrefs.java b/src/com/android/launcher3/util/OnboardingPrefs.java
index c395d6c..40bc9c3 100644
--- a/src/com/android/launcher3/util/OnboardingPrefs.java
+++ b/src/com/android/launcher3/util/OnboardingPrefs.java
@@ -36,7 +36,7 @@
public static final String HOME_BOUNCE_COUNT = "launcher.home_bounce_count";
public static final String HOTSEAT_DISCOVERY_TIP_COUNT = "launcher.hotseat_discovery_tip_count";
public static final String HOTSEAT_LONGPRESS_TIP_SEEN = "launcher.hotseat_longpress_tip_seen";
- public static final String SEARCH_EDU_SEEN = "launcher.search_edu";
+ public static final String SEARCH_EDU_SEEN = "launcher.search_edu_seen";
public static final String SEARCH_SNACKBAR_COUNT = "launcher.keyboard_snackbar_count";
/**
diff --git a/src/com/android/launcher3/util/PendingRequestArgs.java b/src/com/android/launcher3/util/PendingRequestArgs.java
index 9b8c6a6..77c8c0c 100644
--- a/src/com/android/launcher3/util/PendingRequestArgs.java
+++ b/src/com/android/launcher3/util/PendingRequestArgs.java
@@ -20,7 +20,9 @@
import android.os.Parcel;
import android.os.Parcelable;
+import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.WidgetAddFlowHandler;
/**
@@ -34,11 +36,13 @@
private static final int TYPE_APP_WIDGET = 2;
private final int mArg1;
+ private final int mArg2;
private final int mObjectType;
private final Parcelable mObject;
public PendingRequestArgs(ItemInfo info) {
mArg1 = 0;
+ mArg2 = 0;
mObjectType = TYPE_NONE;
mObject = null;
@@ -46,7 +50,12 @@
}
private PendingRequestArgs(int arg1, int objectType, Parcelable object) {
+ this(arg1, 0, objectType, object);
+ }
+
+ private PendingRequestArgs(int arg1, int arg2, int objectType, Parcelable object) {
mArg1 = arg1;
+ mArg2 = arg2;
mObjectType = objectType;
mObject = object;
}
@@ -56,6 +65,7 @@
user = parcel.readParcelable(null);
mArg1 = parcel.readInt();
+ mArg2 = parcel.readInt();
mObjectType = parcel.readInt();
mObject = parcel.readParcelable(getClass().getClassLoader());
}
@@ -73,6 +83,7 @@
dest.writeParcelable(user, flags);
dest.writeInt(mArg1);
+ dest.writeInt(mArg2);
dest.writeInt(mObjectType);
dest.writeParcelable(mObject, flags);
}
@@ -85,6 +96,10 @@
return mObjectType == TYPE_APP_WIDGET ? mArg1 : 0;
}
+ public int getWidgetSourceContainer() {
+ return mObjectType == TYPE_APP_WIDGET ? mArg2 : Favorites.CONTAINER_UNKNOWN;
+ }
+
public Intent getPendingIntent() {
return mObjectType == TYPE_INTENT ? (Intent) mObject : null;
}
@@ -95,8 +110,13 @@
public static PendingRequestArgs forWidgetInfo(
int appWidgetId, WidgetAddFlowHandler widgetHandler, ItemInfo info) {
+ int sourceContainer = Favorites.CONTAINER_UNKNOWN;
+ if (info instanceof PendingAddWidgetInfo) {
+ sourceContainer = ((PendingAddWidgetInfo) info).sourceContainer;
+ }
PendingRequestArgs args =
- new PendingRequestArgs(appWidgetId, TYPE_APP_WIDGET, widgetHandler);
+ new PendingRequestArgs(
+ appWidgetId, sourceContainer, TYPE_APP_WIDGET, widgetHandler);
args.copyFrom(info);
return args;
}
diff --git a/src/com/android/launcher3/views/RecyclerViewFastScroller.java b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
index 78916ac..a88b8b7 100644
--- a/src/com/android/launcher3/views/RecyclerViewFastScroller.java
+++ b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
@@ -18,6 +18,8 @@
import static android.view.HapticFeedbackConstants.CLOCK_TICK;
+import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
+
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.Resources;
@@ -30,6 +32,7 @@
import android.graphics.RectF;
import android.os.Build;
import android.util.AttributeSet;
+import android.util.Log;
import android.util.Property;
import android.view.MotionEvent;
import android.view.View;
@@ -54,9 +57,14 @@
* The track and scrollbar that shows when you scroll the list.
*/
public class RecyclerViewFastScroller extends View {
-
- private static final int FASTSCROLL_THRESHOLD_MILLIS = 200;
+ private static final String TAG = "RecyclerViewFastScroller";
+ private static final boolean DEBUG = false;
+ private static final int FASTSCROLL_THRESHOLD_MILLIS = 40;
private static final int SCROLL_DELTA_THRESHOLD_DP = 4;
+
+ // Track is very narrow to target and correctly. This is especially the case if a user is
+ // using a hardware case. Even if x is offset by following amount, we consider it to be valid.
+ private static final int SCROLLBAR_LEFT_OFFSET_TOUCH_DELEGATE_DP = 5;
private static final Rect sTempRect = new Rect();
private static final Property<RecyclerViewFastScroller, Integer> TRACK_WIDTH =
@@ -86,6 +94,7 @@
/** Keeps the last known scrolling delta/velocity along y-axis. */
private int mDy = 0;
private final float mDeltaThreshold;
+ private final float mScrollbarLeftOffsetTouchDelegate;
private final ViewConfiguration mConfig;
@@ -157,6 +166,8 @@
mConfig = ViewConfiguration.get(context);
mDeltaThreshold = res.getDisplayMetrics().density * SCROLL_DELTA_THRESHOLD_DP;
+ mScrollbarLeftOffsetTouchDelegate = res.getDisplayMetrics().density
+ * SCROLLBAR_LEFT_OFFSET_TOUCH_DELEGATE_DP;
TypedArray ta =
context.obtainStyledAttributes(attrs, R.styleable.RecyclerViewFastScroller, defStyleAttr, 0);
@@ -239,6 +250,7 @@
public boolean handleTouchEvent(MotionEvent ev, Point offset) {
int x = (int) ev.getX() - offset.x;
int y = (int) ev.getY() - offset.y;
+
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// Keep track of the down positions
@@ -247,7 +259,7 @@
mDownTimeStampMillis = ev.getDownTime();
if ((Math.abs(mDy) < mDeltaThreshold &&
- mRv.getScrollState() != RecyclerView.SCROLL_STATE_IDLE)) {
+ mRv.getScrollState() != SCROLL_STATE_IDLE)) {
// now the touch events are being passed to the {@link WidgetCell} until the
// touch sequence goes over the touch slop.
mRv.stopScroll();
@@ -293,6 +305,13 @@
}
break;
}
+ if (DEBUG) {
+ Log.d(TAG, (ev.getAction() == MotionEvent.ACTION_DOWN ? "\n" : "")
+ + "handleTouchEvent " + MotionEvent.actionToString(ev.getAction())
+ + " (" + x + "," + y + ")" + " isDragging=" + mIsDragging
+ + " mIgnoreDragGesture=" + mIgnoreDragGesture);
+
+ }
return mIsDragging;
}
@@ -401,7 +420,8 @@
* Returns whether the specified x position is near the scroll bar.
*/
public boolean isNearScrollBar(int x) {
- return x >= (getWidth() - mMaxWidth) / 2 && x <= (getWidth() + mMaxWidth) / 2;
+ return x >= (getWidth() - mMaxWidth) / 2 - mScrollbarLeftOffsetTouchDelegate
+ && x <= (getWidth() + mMaxWidth) / 2;
}
private void animatePopupVisibility(boolean visible) {
diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java
index fb1485b..1eb79ad 100644
--- a/src/com/android/launcher3/views/ScrimView.java
+++ b/src/com/android/launcher3/views/ScrimView.java
@@ -97,8 +97,10 @@
private void updateSysUiColors() {
// Use a light system UI (dark icons) if all apps is behind at least half of the
// status bar.
- boolean forceChange =
- getVisibility() == VISIBLE && getAlpha() > STATUS_BAR_COLOR_FORCE_UPDATE_THRESHOLD;
+ final float threshold = STATUS_BAR_COLOR_FORCE_UPDATE_THRESHOLD;
+ boolean forceChange = getVisibility() == VISIBLE
+ && getAlpha() > threshold
+ && (Color.alpha(mBackgroundColor) / 255f) > threshold;
if (forceChange) {
getSystemUiController().updateUiState(UI_STATE_SCRIM_VIEW, !isScrimDark());
} else {
diff --git a/src/com/android/launcher3/views/SpringRelativeLayout.java b/src/com/android/launcher3/views/SpringRelativeLayout.java
index 8f814a1..923eb19 100644
--- a/src/com/android/launcher3/views/SpringRelativeLayout.java
+++ b/src/com/android/launcher3/views/SpringRelativeLayout.java
@@ -105,9 +105,8 @@
@NonNull @Override
protected EdgeEffect createEdgeEffect(RecyclerView view, int direction) {
- switch (direction) {
- case DIRECTION_TOP:
- return new EdgeEffectProxy(getContext(), mEdgeGlowTop);
+ if (direction == DIRECTION_TOP) {
+ return new EdgeEffectProxy(getContext(), mEdgeGlowTop);
}
return super.createEdgeEffect(view, direction);
}
diff --git a/src/com/android/launcher3/views/TopRoundedCornerView.java b/src/com/android/launcher3/views/TopRoundedCornerView.java
index 5519df1..92cce92 100644
--- a/src/com/android/launcher3/views/TopRoundedCornerView.java
+++ b/src/com/android/launcher3/views/TopRoundedCornerView.java
@@ -17,12 +17,10 @@
import android.content.Context;
import android.graphics.Canvas;
-import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
-import com.android.launcher3.R;
import com.android.launcher3.util.Themes;
/**
@@ -34,41 +32,23 @@
private final Path mClipPath = new Path();
private float[] mRadii;
- private final Paint mNavBarScrimPaint;
- private int mNavBarScrimHeight = 0;
-
public TopRoundedCornerView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
float radius = Themes.getDialogCornerRadius(context);
mRadii = new float[] {radius, radius, radius, radius, 0, 0, 0, 0};
-
- mNavBarScrimPaint = new Paint();
- mNavBarScrimPaint.setColor(Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor));
}
public TopRoundedCornerView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
- public void setNavBarScrimHeight(int height) {
- if (mNavBarScrimHeight != height) {
- mNavBarScrimHeight = height;
- invalidate();
- }
- }
-
@Override
public void draw(Canvas canvas) {
canvas.save();
canvas.clipPath(mClipPath);
super.draw(canvas);
canvas.restore();
-
- if (mNavBarScrimHeight > 0) {
- canvas.drawRect(0, getHeight() - mNavBarScrimHeight, getWidth(), getHeight(),
- mNavBarScrimPaint);
- }
}
@Override
diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java
index 3bf993e..9f0b9d9 100644
--- a/src/com/android/launcher3/widget/BaseWidgetSheet.java
+++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java
@@ -24,11 +24,14 @@
import android.view.View.OnLongClickListener;
import android.widget.Toast;
+import androidx.annotation.GuardedBy;
import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat;
+import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget.DragObject;
+import com.android.launcher3.Insettable;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
@@ -47,10 +50,11 @@
*/
public abstract class BaseWidgetSheet extends AbstractSlideInView<Launcher>
implements OnClickListener, OnLongClickListener, DragSource,
- PopupDataProvider.PopupDataChangeListener {
+ PopupDataProvider.PopupDataChangeListener, Insettable {
protected static final String KEY_WIDGETS_EDUCATION_TIP_SEEN =
"launcher.widgets_education_tip_seen";
+ protected final Rect mInsets = new Rect();
/* Touch handling related member variables. */
private Toast mWidgetInstructionToast;
@@ -105,6 +109,35 @@
return true;
}
+ @Override
+ public void setInsets(Rect insets) {
+ mInsets.set(insets);
+ }
+
+
+ /**
+ * Measures the dimension of this view and its children by taking system insets, navigation bar,
+ * status bar, into account.
+ */
+ @GuardedBy("MainThread")
+ protected void doMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
+ int widthUsed;
+ if (mInsets.bottom > 0) {
+ widthUsed = mInsets.left + mInsets.right;
+ } else {
+ Rect padding = deviceProfile.workspacePadding;
+ widthUsed = Math.max(padding.left + padding.right,
+ 2 * (mInsets.left + mInsets.right));
+ }
+
+ int heightUsed = mInsets.top + deviceProfile.edgeMarginPx;
+ measureChildWithMargins(mContent, widthMeasureSpec,
+ widthUsed, heightMeasureSpec, heightUsed);
+ setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
+ MeasureSpec.getSize(heightMeasureSpec));
+ }
+
private boolean beginDraggingWidget(WidgetCell v) {
// Get the widget preview as the drag representation
WidgetImageView image = v.getWidgetView();
diff --git a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
index 6de3e11..4ec7e60 100644
--- a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
+++ b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
@@ -98,12 +98,17 @@
private final IconCache mIconCache;
private final UserCache mUserCache;
private final CacheDb mDb;
+ private final float mPreviewBoxCornerRadius;
public DatabaseWidgetPreviewLoader(Context context, IconCache iconCache) {
mContext = context;
mIconCache = iconCache;
mUserCache = UserCache.INSTANCE.get(context);
mDb = new CacheDb(context);
+ float previewCornerRadius = RoundedCornerEnforcement.computeEnforcedRadius(context);
+ mPreviewBoxCornerRadius = previewCornerRadius > 0
+ ? previewCornerRadius
+ : mContext.getResources().getDimension(R.dimen.widget_preview_corner_radius);
}
/**
@@ -412,7 +417,8 @@
previewHeight = drawable.getIntrinsicHeight();
} else {
DeviceProfile dp = launcher.getDeviceProfile();
- Size widgetSize = WidgetSizes.getWidgetSizePx(dp, spanX, spanY);
+ Size widgetSize = WidgetSizes.getWidgetPaddedSizePx(mContext, info.provider, dp, spanX,
+ spanY);
previewWidth = widgetSize.getWidth();
previewHeight = widgetSize.getHeight();
}
@@ -521,7 +527,7 @@
ShadowGenerator.Builder builder = new ShadowGenerator.Builder(Color.WHITE);
builder.shadowBlur = res.getDimension(R.dimen.widget_preview_shadow_blur);
- builder.radius = res.getDimension(R.dimen.widget_preview_corner_radius);
+ builder.radius = mPreviewBoxCornerRadius;
builder.keyShadowDistance = res.getDimension(R.dimen.widget_preview_key_shadow_distance);
builder.bounds.set(builder.shadowBlur, builder.shadowBlur,
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index 70ed02f..63bc416 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -116,7 +116,10 @@
private final Object mUpdateLock = new Object();
private final ViewGroupFocusHelper mDragLayerRelativeCoordinateHelper;
private long mDeferUpdatesUntilMillis = 0;
- private RemoteViews mMostRecentRemoteViews;
+ private RemoteViews mDeferredRemoteViews;
+ private boolean mHasDeferredColorChange = false;
+ private @Nullable SparseIntArray mDeferredColorChange = null;
+ private boolean mEnableColorExtraction = true;
public LauncherAppWidgetHostView(Context context) {
super(context);
@@ -173,8 +176,11 @@
@Override
public void updateAppWidget(RemoteViews remoteViews) {
synchronized (mUpdateLock) {
- mMostRecentRemoteViews = remoteViews;
- if (SystemClock.uptimeMillis() < mDeferUpdatesUntilMillis) return;
+ if (isDeferringUpdates()) {
+ mDeferredRemoteViews = remoteViews;
+ return;
+ }
+ mDeferredRemoteViews = null;
}
super.updateAppWidget(remoteViews);
@@ -211,10 +217,19 @@
}
/**
+ * Returns true if the application of {@link RemoteViews} through {@link #updateAppWidget} and
+ * colors through {@link #onColorsChanged} are currently being deferred.
+ * @see #beginDeferringUpdates()
+ */
+ private boolean isDeferringUpdates() {
+ return SystemClock.uptimeMillis() < mDeferUpdatesUntilMillis;
+ }
+
+ /**
* Begin deferring the application of any {@link RemoteViews} updates made through
- * {@link #updateAppWidget(RemoteViews)} until {@link #endDeferringUpdates()} has been called or
- * the next {@link #updateAppWidget(RemoteViews)} call after {@link #UPDATE_LOCK_TIMEOUT_MILLIS}
- * have elapsed.
+ * {@link #updateAppWidget} and color changes through {@link #onColorsChanged} until
+ * {@link #endDeferringUpdates()} has been called or the next {@link #updateAppWidget} or
+ * {@link #onColorsChanged} call after {@link #UPDATE_LOCK_TIMEOUT_MILLIS} have elapsed.
*/
public void beginDeferringUpdates() {
synchronized (mUpdateLock) {
@@ -224,18 +239,28 @@
/**
* Stop deferring the application of {@link RemoteViews} updates made through
- * {@link #updateAppWidget(RemoteViews)} and apply the most recently received update.
+ * {@link #updateAppWidget} and color changes made through {@link #onColorsChanged} and apply
+ * any deferred updates.
*/
public void endDeferringUpdates() {
RemoteViews remoteViews;
+ SparseIntArray deferredColors;
+ boolean hasDeferredColors;
synchronized (mUpdateLock) {
mDeferUpdatesUntilMillis = 0;
- remoteViews = mMostRecentRemoteViews;
- mMostRecentRemoteViews = null;
+ remoteViews = mDeferredRemoteViews;
+ mDeferredRemoteViews = null;
+ deferredColors = mDeferredColorChange;
+ hasDeferredColors = mHasDeferredColorChange;
+ mDeferredColorChange = null;
+ mHasDeferredColorChange = false;
}
if (remoteViews != null) {
updateAppWidget(remoteViews);
}
+ if (hasDeferredColors) {
+ onColorsChanged(null /* rectF */, deferredColors);
+ }
}
public boolean onInterceptTouchEvent(MotionEvent ev) {
@@ -323,13 +348,7 @@
}
mIsScrollable = checkScrollableRecursively(this);
- if (!mIsInDragMode && getTag() instanceof LauncherAppWidgetInfo) {
-
- LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) getTag();
- mDragLayerRelativeCoordinateHelper.viewToRect(this, mCurrentWidgetSize);
- updateColorExtraction(mCurrentWidgetSize,
- mWorkspace.getPageIndexForScreenId(info.screenId));
- }
+ updateColorExtraction();
enforceRoundedCorners();
}
@@ -358,6 +377,7 @@
* @param pageId The workspace page the widget is on.
*/
private void updateColorExtraction(Rect rectInDragLayer, int pageId) {
+ if (!mEnableColorExtraction) return;
mColorExtractor.getExtractedRectForViewRect(mLauncher, pageId, rectInDragLayer, mTempRectF);
if (mTempRectF.isEmpty()) {
@@ -372,6 +392,38 @@
}
}
+ /**
+ * Update the color extraction, using the current position of the app widget.
+ */
+ private void updateColorExtraction() {
+ if (!mIsInDragMode && getTag() instanceof LauncherAppWidgetInfo) {
+ LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) getTag();
+ mDragLayerRelativeCoordinateHelper.viewToRect(this, mCurrentWidgetSize);
+ updateColorExtraction(mCurrentWidgetSize,
+ mWorkspace.getPageIndexForScreenId(info.screenId));
+ }
+ }
+
+ /**
+ * Enables the local color extraction.
+ *
+ * @param updateColors If true, this will update the color extraction using the current location
+ * of the App Widget.
+ */
+ public void enableColorExtraction(boolean updateColors) {
+ mEnableColorExtraction = true;
+ if (updateColors) {
+ updateColorExtraction();
+ }
+ }
+
+ /**
+ * Disables the local color extraction.
+ */
+ public void disableColorExtraction() {
+ mEnableColorExtraction = false;
+ }
+
// Compare two location rectangles. Locations are always in the [0;1] range.
private static boolean isSameLocation(@NonNull RectF rect1, @Nullable RectF rect2,
float epsilon) {
@@ -388,6 +440,16 @@
@Override
public void onColorsChanged(RectF rectF, SparseIntArray colors) {
+ synchronized (mUpdateLock) {
+ if (isDeferringUpdates()) {
+ mDeferredColorChange = colors;
+ mHasDeferredColorChange = true;
+ return;
+ }
+ mDeferredColorChange = null;
+ mHasDeferredColorChange = false;
+ }
+
// setColorResources will reapply the view, which must happen in the UI thread.
post(() -> setColorResources(colors));
}
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java b/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
index 5a29171..d77d99d 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
@@ -160,8 +160,11 @@
}
}
- this.minSpanX = minSpanX;
- this.minSpanY = minSpanY;
+ // If minSpanX/Y > spanX/Y, ignore the minSpanX/Y to match the behavior described in
+ // minResizeWidth & minResizeHeight Android documentation. See
+ // https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo
+ this.minSpanX = Math.min(spanX, minSpanX);
+ this.minSpanY = Math.min(spanY, minSpanY);
this.maxSpanX = maxSpanX;
this.maxSpanY = maxSpanY;
this.mIsMinSizeFulfilled = Math.min(spanX, minSpanX) <= idp.numColumns
diff --git a/src/com/android/launcher3/widget/PendingAddWidgetInfo.java b/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
index c04c8dc..cbec642 100644
--- a/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
+++ b/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
@@ -15,14 +15,15 @@
*/
package com.android.launcher3.widget;
-import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY;
-
import android.appwidget.AppWidgetHostView;
import android.content.Context;
import android.os.Bundle;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.PendingAddItemInfo;
+import com.android.launcher3.logger.LauncherAtom;
+import com.android.launcher3.model.data.FolderInfo;
+import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.widget.util.WidgetSizes;
/**
@@ -36,8 +37,9 @@
public LauncherAppWidgetProviderInfo info;
public AppWidgetHostView boundWidget;
public Bundle bindOptions = null;
+ public int sourceContainer;
- public PendingAddWidgetInfo(LauncherAppWidgetProviderInfo i) {
+ public PendingAddWidgetInfo(LauncherAppWidgetProviderInfo i, int container) {
if (i.isCustomWidget()) {
itemType = LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET;
} else {
@@ -53,7 +55,7 @@
spanY = i.spanY;
minSpanX = i.minSpanX;
minSpanY = i.minSpanY;
- this.container = CONTAINER_WIDGETS_TRAY;
+ this.sourceContainer = this.container = container;
}
public WidgetAddFlowHandler getHandler() {
@@ -63,4 +65,12 @@
public Bundle getDefaultSizeOptions(Context context) {
return WidgetSizes.getWidgetSizeOptions(context, componentName, spanX, spanY);
}
+
+ @Override
+ public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
+ LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
+ return info.toBuilder()
+ .setAttribute(LauncherAppWidgetInfo.getAttribute(sourceContainer))
+ .build();
+ }
}
diff --git a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
index 47a8914..47f30be 100644
--- a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
@@ -17,6 +17,7 @@
package com.android.launcher3.widget;
import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon;
+import static com.android.launcher3.model.data.PackageItemInfo.CONVERSATIONS;
import android.content.Context;
import android.graphics.Canvas;
@@ -35,6 +36,8 @@
import android.view.View.OnClickListener;
import android.widget.RemoteViews;
+import androidx.annotation.Nullable;
+
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.icons.FastBitmapDrawable;
@@ -146,21 +149,32 @@
mCenterDrawable = null;
}
if (info.bitmap.icon != null) {
+ Drawable widgetCategoryIcon = getWidgetCategoryIcon();
// The view displays three modes,
// 1) App icon in the center
// 2) Preload icon in the center
// 3) App icon in the center with a setup icon on the top left corner.
if (mDisabledForSafeMode) {
- FastBitmapDrawable disabledIcon = info.newIcon(getContext());
- disabledIcon.setIsDisabled(true);
- mCenterDrawable = disabledIcon;
+ if (widgetCategoryIcon == null) {
+ FastBitmapDrawable disabledIcon = info.newIcon(getContext());
+ disabledIcon.setIsDisabled(true);
+ mCenterDrawable = disabledIcon;
+ } else {
+ widgetCategoryIcon.setColorFilter(
+ FastBitmapDrawable.getDisabledFColorFilter(/* disabledAlpha= */ 1f));
+ mCenterDrawable = widgetCategoryIcon;
+ }
mSettingIconDrawable = null;
} else if (isReadyForClickSetup()) {
- mCenterDrawable = info.newIcon(getContext());
+ mCenterDrawable = widgetCategoryIcon == null
+ ? info.newIcon(getContext())
+ : widgetCategoryIcon;
mSettingIconDrawable = getResources().getDrawable(R.drawable.ic_setting).mutate();
updateSettingColor(info.bitmap.color);
} else {
- mCenterDrawable = newPendingIcon(getContext(), info);
+ mCenterDrawable = widgetCategoryIcon == null
+ ? newPendingIcon(getContext(), info)
+ : widgetCategoryIcon;
mSettingIconDrawable = null;
applyState();
}
@@ -316,4 +330,19 @@
}
}
+
+ /**
+ * Returns the widget category icon for {@link #mInfo}.
+ *
+ * <p>If {@link #mInfo}'s category is {@code PackageItemInfo#NO_CATEGORY} or unknown, returns
+ * {@code null}.
+ */
+ @Nullable
+ private Drawable getWidgetCategoryIcon() {
+ switch (mInfo.pendingItemInfo.category) {
+ case CONVERSATIONS:
+ return getContext().getDrawable(R.drawable.ic_conversations_widget_category);
+ }
+ return null;
+ }
}
diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java
index 91529be..c3edcce 100644
--- a/src/com/android/launcher3/widget/WidgetCell.java
+++ b/src/com/android/launcher3/widget/WidgetCell.java
@@ -16,6 +16,7 @@
package com.android.launcher3.widget;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY;
import static com.android.launcher3.Utilities.ATLEAST_S;
import android.content.Context;
@@ -99,6 +100,7 @@
private RemoteViews mRemoteViewsPreview;
private NavigableAppWidgetHostView mAppWidgetHostViewPreview;
+ private int mSourceContainer = CONTAINER_WIDGETS_TRAY;
public WidgetCell(Context context) {
this(context, null);
@@ -177,17 +179,24 @@
mAppWidgetHostViewPreview = null;
}
+ public void setSourceContainer(int sourceContainer) {
+ this.mSourceContainer = sourceContainer;
+ }
+
public void applyFromCellItem(WidgetItem item, WidgetPreviewLoader loader) {
applyPreviewOnAppWidgetHostView(item);
+ Context context = getContext();
mItem = item;
mWidgetName.setText(mItem.label);
- mWidgetDims.setText(getContext().getString(R.string.widget_dims_format,
+ mWidgetName.setContentDescription(
+ context.getString(R.string.widget_preview_context_description, mItem.label));
+ mWidgetDims.setText(context.getString(R.string.widget_dims_format,
mItem.spanX, mItem.spanY));
- mWidgetDims.setContentDescription(getContext().getString(
+ mWidgetDims.setContentDescription(context.getString(
R.string.widget_accessible_dims_format, mItem.spanX, mItem.spanY));
if (ATLEAST_S && mItem.widgetInfo != null) {
- CharSequence description = mItem.widgetInfo.loadDescription(getContext());
+ CharSequence description = mItem.widgetInfo.loadDescription(context);
if (description != null && description.length() > 0) {
mWidgetDescription.setText(description);
mWidgetDescription.setVisibility(VISIBLE);
@@ -202,7 +211,7 @@
mPreviewWidth += mShortcutPreviewPadding;
mPreviewHeight += mShortcutPreviewPadding;
} else {
- setTag(new PendingAddWidgetInfo(item.widgetInfo));
+ setTag(new PendingAddWidgetInfo(item.widgetInfo, mSourceContainer));
}
}
@@ -238,6 +247,7 @@
NavigableAppWidgetHostView appWidgetHostViewPreview,
LauncherAppWidgetProviderInfo providerInfo,
@Nullable RemoteViews remoteViews) {
+ appWidgetHostViewPreview.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
appWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, providerInfo);
Rect padding;
DeviceProfile deviceProfile = mActivity.getDeviceProfile();
@@ -353,7 +363,9 @@
/** Sets the widget preview image size, in number of cells, and preview scale. */
public Size setPreviewSize(int spanX, int spanY, float previewScale) {
DeviceProfile deviceProfile = mActivity.getDeviceProfile();
- Size widgetSize = WidgetSizes.getWidgetSizePx(deviceProfile, spanX, spanY);
+ Size widgetSize =
+ mItem != null ? WidgetSizes.getWidgetItemSizePx(getContext(), deviceProfile, mItem)
+ : WidgetSizes.getWidgetSizePx(deviceProfile, spanX, spanY);
mPreviewWidth = widgetSize.getWidth();
mPreviewHeight = widgetSize.getHeight();
mPreviewScale = previewScale;
diff --git a/src/com/android/launcher3/widget/WidgetsBottomSheet.java b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
index d0e69fa..c045cf1 100644
--- a/src/com/android/launcher3/widget/WidgetsBottomSheet.java
+++ b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
@@ -16,6 +16,7 @@
package com.android.launcher3.widget;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_BOTTOM_WIDGETS_TRAY;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import android.animation.PropertyValuesHolder;
@@ -36,7 +37,6 @@
import android.widget.TextView;
import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.Insettable;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.anim.PendingAnimation;
@@ -50,7 +50,8 @@
/**
* Bottom sheet for the "Widgets" system shortcut in the long-press popup.
*/
-public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
+public class WidgetsBottomSheet extends BaseWidgetSheet {
+ private static final String TAG = "WidgetsBottomSheet";
private static final IntProperty<View> PADDING_BOTTOM =
new IntProperty<View>("paddingBottom") {
@@ -70,7 +71,6 @@
private static final long EDUCATION_TIP_DELAY_MS = 300;
private ItemInfo mOriginalItemInfo;
- private final Rect mInsets;
private final int mMaxTableHeight;
private int mMaxHorizontalSpan = 4;
@@ -110,7 +110,6 @@
public WidgetsBottomSheet(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWillNotDraw(false);
- mInsets = new Rect();
DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
// Set the max table height to 2 / 3 of the grid height so that the bottom picker won't
// take over the entire view vertically.
@@ -128,32 +127,27 @@
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
- int widthUsed;
- if (mInsets.bottom > 0) {
- widthUsed = mInsets.left + mInsets.right;
- } else {
- Rect padding = deviceProfile.workspacePadding;
- widthUsed = Math.max(padding.left + padding.right,
- 2 * (mInsets.left + mInsets.right));
+ doMeasure(widthMeasureSpec, heightMeasureSpec);
+ if (updateMaxSpansPerRow()) {
+ doMeasure(widthMeasureSpec, heightMeasureSpec);
}
+ }
- int heightUsed = mInsets.top + deviceProfile.edgeMarginPx;
- measureChildWithMargins(mContent, widthMeasureSpec,
- widthUsed, heightMeasureSpec, heightUsed);
- setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
- MeasureSpec.getSize(heightMeasureSpec));
+ /** Returns {@code true} if the max spans have been updated. */
+ private boolean updateMaxSpansPerRow() {
+ if (getMeasuredWidth() == 0) return false;
int paddingPx = 2 * getResources().getDimensionPixelOffset(
R.dimen.widget_cell_horizontal_padding);
int maxHorizontalSpan = findViewById(R.id.widgets_table).getMeasuredWidth()
/ (mActivityContext.getDeviceProfile().cellWidthPx + paddingPx);
-
if (mMaxHorizontalSpan != maxHorizontalSpan) {
// Ensure the table layout is showing widgets in the right column after measure.
mMaxHorizontalSpan = maxHorizontalSpan;
onWidgetsBound();
+ return true;
}
+ return false;
}
@Override
@@ -236,6 +230,7 @@
previewContainer.setOnClickListener(this);
previewContainer.setOnLongClickListener(this);
widget.setAnimatePreview(false);
+ widget.setSourceContainer(CONTAINER_BOTTOM_WIDGETS_TRAY);
parent.addView(widget);
return widget;
@@ -265,7 +260,8 @@
@Override
public void setInsets(Rect insets) {
- mInsets.set(insets);
+ super.setInsets(insets);
+
mContent.setPadding(mContent.getPaddingStart(),
mContent.getPaddingTop(), mContent.getPaddingEnd(), insets.bottom);
if (insets.bottom > 0) {
diff --git a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
index 0328cf6..73b17f1 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
@@ -26,14 +26,39 @@
*/
public final class WidgetsListContentEntry extends WidgetsListBaseEntry {
+ private final int mMaxSpanSizeInCells;
+
+ /**
+ * Constructor for {@link WidgetsListContentEntry}.
+ *
+ * @param pkgItem package info associated with the entry
+ * @param titleSectionName title section name associated with the entry.
+ * @param items list of widgets for the package.
+ */
public WidgetsListContentEntry(PackageItemInfo pkgItem, String titleSectionName,
List<WidgetItem> items) {
+ this(pkgItem, titleSectionName, items, /* maxSpanSizeInCells= */ 0);
+ }
+
+ /**
+ * Constructor for {@link WidgetsListContentEntry}.
+ *
+ * @param pkgItem package info associated with the entry
+ * @param titleSectionName title section name associated with the entry.
+ * @param items list of widgets for the package.
+ * @param maxSpanSizeInCells the max horizontal span in cells that is allowed for grouping more
+ * than one widgets in a table row.
+ */
+ public WidgetsListContentEntry(PackageItemInfo pkgItem, String titleSectionName,
+ List<WidgetItem> items, int maxSpanSizeInCells) {
super(pkgItem, titleSectionName, items);
+ mMaxSpanSizeInCells = maxSpanSizeInCells;
}
@Override
public String toString() {
- return "Content:" + mPkgItem.packageName + ":" + mWidgets.size();
+ return "Content:" + mPkgItem.packageName + ":" + mWidgets.size() + " maxSpanSizeInCells: "
+ + mMaxSpanSizeInCells;
}
@Override
@@ -42,11 +67,36 @@
return RANK_WIDGETS_LIST_CONTENT;
}
+ /**
+ * Returns a copy of this {@link WidgetsListContentEntry} with updated
+ * {@param maxSpanSizeInCells}.
+ *
+ * @param maxSpanSizeInCells the maximum horizontal span in cells that is allowed for grouping
+ * more than one widgets in a table row.
+ */
+ public WidgetsListContentEntry withMaxSpanSize(int maxSpanSizeInCells) {
+ if (mMaxSpanSizeInCells == maxSpanSizeInCells) return this;
+ return new WidgetsListContentEntry(
+ mPkgItem,
+ mTitleSectionName,
+ mWidgets,
+ /* maxSpanSizeInCells= */ maxSpanSizeInCells);
+ }
+
+ /**
+ * Returns the max horizontal span size in cells that is allowed for grouping more than one
+ * widget in a table row.
+ */
+ public int getMaxSpanSizeInCells() {
+ return mMaxSpanSizeInCells;
+ }
+
@Override
public boolean equals(Object obj) {
if (!(obj instanceof WidgetsListContentEntry)) return false;
WidgetsListContentEntry otherEntry = (WidgetsListContentEntry) obj;
return mWidgets.equals(otherEntry.mWidgets) && mPkgItem.equals(otherEntry.mPkgItem)
- && mTitleSectionName.equals(otherEntry.mTitleSectionName);
+ && mTitleSectionName.equals(otherEntry.mTitleSectionName)
+ && mMaxSpanSizeInCells == otherEntry.mMaxSpanSizeInCells;
}
}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java b/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java
index dfe447a..99374f5 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java
@@ -115,7 +115,7 @@
// or did the widget size and desc, span, etc change?
if (!isSamePackageItemInfo(orgRowEntry.mPkgItem, newRowEntry.mPkgItem)
|| hasHeaderUpdated(orgRowEntry, newRowEntry)
- || hasWidgetsListChanged(orgRowEntry, newRowEntry)) {
+ || hasWidgetsListContentChanged(orgRowEntry, newRowEntry)) {
index = currentEntries.indexOf(orgRowEntry);
currentEntries.set(index, newRowEntry);
mListener.notifyItemChanged(index);
@@ -158,17 +158,15 @@
/**
* Returns {@code true} if both {@code curRow} & {@code newRow} are
- * {@link WidgetsListContentEntry}s with a different list of widgets.
+ * {@link WidgetsListContentEntry}s with a different list or arrangement of widgets.
*/
- private boolean hasWidgetsListChanged(WidgetsListBaseEntry curRow,
+ private boolean hasWidgetsListContentChanged(WidgetsListBaseEntry curRow,
WidgetsListBaseEntry newRow) {
if (!(curRow instanceof WidgetsListContentEntry)
|| !(newRow instanceof WidgetsListContentEntry)) {
return false;
}
- WidgetsListContentEntry orgRowEntry = (WidgetsListContentEntry) curRow;
- WidgetsListContentEntry newRowEntry = (WidgetsListContentEntry) newRow;
- return !orgRowEntry.mWidgets.equals(newRowEntry.mWidgets);
+ return !curRow.equals(newRow);
}
/**
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index 1a58bb0..6c2cca6 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -45,8 +45,6 @@
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.RecyclerView;
-import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.Insettable;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
@@ -76,7 +74,7 @@
* Popup for showing the full list of available widgets
*/
public class WidgetsFullSheet extends BaseWidgetSheet
- implements Insettable, ProviderChangedListener, OnActivePageChangedListener,
+ implements ProviderChangedListener, OnActivePageChangedListener,
WidgetsRecyclerView.HeaderViewDimensionsProvider, SearchModeListener {
private static final String TAG = WidgetsFullSheet.class.getSimpleName();
@@ -131,6 +129,22 @@
}
};
+ private final OnAttachStateChangeListener mBindScrollbarInSearchMode =
+ new OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(View view) {
+ WidgetsRecyclerView searchRecyclerView =
+ mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView;
+ if (mIsInSearchMode && searchRecyclerView != null) {
+ searchRecyclerView.bindFastScrollbar();
+ }
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(View view) {
+ }
+ };
+
private final int mTabsHeight;
private final int mViewPagerTopPadding;
private final int mSearchAndRecommendationContainerBottomMargin;
@@ -305,11 +319,17 @@
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mActivityContext.getAppWidgetHost().removeProviderChangeListener(this);
+ mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView
+ .removeOnAttachStateChangeListener(mBindScrollbarInSearchMode);
+ if (mHasWorkProfile) {
+ mAdapters.get(AdapterHolder.WORK).mWidgetsRecyclerView
+ .removeOnAttachStateChangeListener(mBindScrollbarInSearchMode);
+ }
}
@Override
public void setInsets(Rect insets) {
- mInsets.set(insets);
+ super.setInsets(insets);
setBottomPadding(mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView, insets.bottom);
setBottomPadding(mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView, insets.bottom);
@@ -323,7 +343,6 @@
clearNavBarColor();
}
- ((TopRoundedCornerView) mContent).setNavBarScrimHeight(mInsets.bottom);
requestLayout();
}
@@ -352,24 +371,6 @@
}
}
- private void doMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
- int widthUsed;
- if (mInsets.bottom > 0) {
- widthUsed = mInsets.left + mInsets.right;
- } else {
- Rect padding = deviceProfile.workspacePadding;
- widthUsed = Math.max(padding.left + padding.right,
- 2 * (mInsets.left + mInsets.right));
- }
-
- int heightUsed = mInsets.top + deviceProfile.edgeMarginPx;
- measureChildWithMargins(mContent, widthMeasureSpec,
- widthUsed, heightMeasureSpec, heightUsed);
- setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
- MeasureSpec.getSize(heightMeasureSpec));
- }
-
/** Returns {@code true} if the max spans have been updated. */
private boolean updateMaxSpansPerRow() {
if (getMeasuredWidth() == 0) return false;
@@ -773,6 +774,12 @@
mWidgetsRecyclerView.setHeaderViewDimensionsProvider(WidgetsFullSheet.this);
mWidgetsRecyclerView.setEdgeEffectFactory(
((TopRoundedCornerView) mContent).createEdgeEffectFactory());
+ // Recycler view binds to fast scroller when it is attached to screen. Make sure
+ // search recycler view is bound to fast scroller if user is in search mode at the time
+ // of attachment.
+ if (mAdapterType == PRIMARY || mAdapterType == WORK) {
+ mWidgetsRecyclerView.addOnAttachStateChangeListener(mBindScrollbarInSearchMode);
+ }
mWidgetsListAdapter.setApplyBitmapDeferred(false, mWidgetsRecyclerView);
mWidgetsListAdapter.setMaxHorizontalSpansPerRow(mMaxSpansPerRow);
}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
index b668c90..1125b82 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
@@ -111,6 +111,7 @@
@Nullable private PackageUserKey mPendingClickHeader;
private final int mShortcutPreviewPadding;
private final int mSpacingBetweenEntries;
+ private int mMaxSpanSize = 4;
private final WidgetPreviewLoadedCallback mPreviewLoadedCallback =
ignored -> updateVisibleEntries();
@@ -249,10 +250,14 @@
.filter(entry -> (mFilter == null || mFilter.test(entry))
&& mHeaderAndSelectedContentFilter.test(entry))
.map(entry -> {
- // Adjust the original entries to expand headers for the selected content.
if (entry instanceof WidgetsListBaseEntry.Header<?>
&& matchesKey(entry, mWidgetsContentVisiblePackageUserKey)) {
+ // Adjust the original entries to expand headers for the selected content.
return ((WidgetsListBaseEntry.Header<?>) entry).withWidgetListShown();
+ } else if (entry instanceof WidgetsListContentEntry) {
+ // Adjust the original content entries to accommodate for the current
+ // maxSpanSize.
+ return ((WidgetsListContentEntry) entry).withMaxSpanSize(mMaxSpanSize);
}
return entry;
})
@@ -291,11 +296,8 @@
for (int i = 0; i < entry.mWidgets.size(); i++) {
WidgetItem widgetItem = entry.mWidgets.get(i);
DeviceProfile deviceProfile = activity.getDeviceProfile();
- Size widgetSize =
- WidgetSizes.getWidgetSizePx(
- deviceProfile,
- widgetItem.spanX,
- widgetItem.spanY);
+ Size widgetSize = WidgetSizes.getWidgetItemSizePx(mContext, deviceProfile,
+ widgetItem);
if (widgetItem.isShortcut()) {
widgetSize =
new Size(
@@ -491,20 +493,12 @@
}
/**
- * Sets the max horizontal spans that are allowed for grouping more than one widgets in a table
- * row.
- *
- * <p>If there is only one widget in a row, that widget horizontal span is allowed to exceed
- * {@code maxHorizontalSpans}.
- * <p>Let's say the max horizontal spans is set to 5. Widgets can be grouped in the same row if
- * their total horizontal spans added don't exceed 5.
- * Example 1: Row 1: 2x2, 2x3, 1x1. Total horizontal spans is 5. This is okay.
- * Example 2: Row 1: 2x2, 4x3, 1x1. the total horizontal spans is 7. This is wrong.
- * 4x3 and 1x1 should be moved to a new row.
- * Example 3: Row 1: 6x4. This is okay because this is the only item in the row.
+ * Sets the max horizontal span in cells that is allowed for grouping more than one widget in a
+ * table row.
*/
public void setMaxHorizontalSpansPerRow(int maxHorizontalSpans) {
- mWidgetsListTableViewHolderBinder.setMaxSpansPerRow(maxHorizontalSpans);
+ mMaxSpanSize = maxHorizontalSpans;
+ updateVisibleEntries();
}
/**
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java b/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
index 7b52663..57dec14 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
@@ -49,7 +49,6 @@
private static final boolean DEBUG = false;
private static final String TAG = "WidgetsListRowViewHolderBinder";
- private int mMaxSpansPerRow = 4;
private final LayoutInflater mLayoutInflater;
private final OnClickListener mIconClickListener;
private final OnLongClickListener mIconLongClickListener;
@@ -82,10 +81,6 @@
mApplyBitmapDeferred = applyBitmapDeferred;
}
- public void setMaxSpansPerRow(int maxSpansPerRow) {
- mMaxSpansPerRow = maxSpansPerRow;
- }
-
@Override
public WidgetsRowViewHolder newViewHolder(ViewGroup parent) {
if (DEBUG) {
@@ -113,7 +108,8 @@
position == mWidgetsListAdapter.getItemCount() - 1 ? LAST : MIDDLE);
List<ArrayList<WidgetItem>> widgetItemsTable =
- WidgetsTableUtils.groupWidgetItemsIntoTable(entry.mWidgets, mMaxSpansPerRow);
+ WidgetsTableUtils.groupWidgetItemsIntoTable(
+ entry.mWidgets, entry.getMaxSpanSizeInCells());
recycleTableBeforeBinding(table, widgetItemsTable);
// Bind the widget items.
for (int i = 0; i < widgetItemsTable.size(); i++) {
diff --git a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
index fe42ddf..3800ede 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java
@@ -15,6 +15,8 @@
*/
package com.android.launcher3.widget.picker;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
+
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
@@ -132,6 +134,7 @@
previewContainer.setOnClickListener(mWidgetCellOnClickListener);
previewContainer.setOnLongClickListener(mWidgetCellOnLongClickListener);
widget.setAnimatePreview(false);
+ widget.setSourceContainer(CONTAINER_WIDGETS_PREDICTION);
parent.addView(widget);
return widget;
@@ -152,8 +155,8 @@
float rowHeight = 0;
for (int j = 0; j < widgetItems.size(); j++) {
WidgetItem widgetItem = widgetItems.get(j);
- Size widgetSize = WidgetSizes.getWidgetSizePx(
- deviceProfile, widgetItem.spanX, widgetItem.spanY);
+ Size widgetSize = WidgetSizes.getWidgetItemSizePx(getContext(), deviceProfile,
+ widgetItem);
float previewHeight = widgetSize.getHeight() * previewScale;
rowHeight = Math.max(rowHeight,
previewHeight + mWidgetCellTextViewsHeight + mWidgetCellVerticalPadding);
diff --git a/src/com/android/launcher3/widget/util/WidgetSizes.java b/src/com/android/launcher3/widget/util/WidgetSizes.java
index 5c8ea72..e2c84b5 100644
--- a/src/com/android/launcher3/widget/util/WidgetSizes.java
+++ b/src/com/android/launcher3/widget/util/WidgetSizes.java
@@ -17,9 +17,7 @@
import static android.appwidget.AppWidgetHostView.getDefaultPaddingForWidget;
-import static com.android.launcher3.Utilities.ATLEAST_S;
-import android.annotation.SuppressLint;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
@@ -34,24 +32,34 @@
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.model.WidgetItem;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
/** A utility class for widget sizes related calculations. */
public final class WidgetSizes {
/**
* Returns the list of all possible sizes, in dp, for a widget of given spans on this device.
+ *
+ * <p>The returned sizes already take into account the system padding, and whether it is applied
+ * or not in that specific configuration.
*/
- public static ArrayList<SizeF> getWidgetSizes(Context context, int spanX, int spanY) {
+ public static ArrayList<SizeF> getWidgetPaddedSizes(Context context, ComponentName provider,
+ int spanX, int spanY) {
+ Rect padding = getDefaultPaddingForWidget(context, provider, /* padding= */ null);
+
ArrayList<SizeF> sizes = new ArrayList<>(2);
final float density = context.getResources().getDisplayMetrics().density;
final Point cellSize = new Point();
for (DeviceProfile profile : LauncherAppState.getIDP(context).supportedProfiles) {
Size widgetSizePx = getWidgetSizePx(profile, spanX, spanY, cellSize);
+ if (!profile.shouldInsetWidgets()) {
+ widgetSizePx = new Size(widgetSizePx.getWidth() - padding.left - padding.right,
+ widgetSizePx.getHeight() - padding.top - padding.bottom);
+ }
sizes.add(new SizeF(widgetSizePx.getWidth() / density,
widgetSizePx.getHeight() / density));
}
@@ -63,6 +71,32 @@
return getWidgetSizePx(profile, spanX, spanY, /* recycledCellSize= */ null);
}
+ /**
+ * Returns the size, in pixels and removing padding, a widget of given spans & {@code profile}.
+ */
+ public static Size getWidgetPaddedSizePx(Context context, ComponentName component,
+ DeviceProfile profile, int spanX, int spanY) {
+ Size size = getWidgetSizePx(profile, spanX, spanY);
+ if (profile.shouldInsetWidgets()) {
+ return size;
+ }
+ Rect padding = getDefaultPaddingForWidget(context, component, /* padding= */ null);
+ return new Size(size.getWidth() - padding.left - padding.right,
+ size.getHeight() - padding.top - padding.bottom);
+ }
+
+ /**
+ * Returns the size of a WidgetItem.
+ */
+ public static Size getWidgetItemSizePx(Context context, DeviceProfile profile,
+ WidgetItem widgetItem) {
+ if (widgetItem.isShortcut()) {
+ return getWidgetSizePx(profile, widgetItem.spanX, widgetItem.spanY);
+ }
+ return getWidgetPaddedSizePx(context, widgetItem.componentName, profile, widgetItem.spanX,
+ widgetItem.spanY);
+ }
+
private static Size getWidgetSizePx(DeviceProfile profile, int spanX, int spanY,
@Nullable Point recycledCellSize) {
final int hBorderSpacing = (spanX - 1) * profile.cellLayoutBorderSpacingPx;
@@ -81,17 +115,22 @@
* <p>On Android S+, it also updates the given {@code widgetView} with a list of sizes derived
* from {@code spanX}, {@code spanY} in all supported device profiles.
*/
- @SuppressLint("NewApi") // Already added API check.
public static void updateWidgetSizeRanges(AppWidgetHostView widgetView, Context context,
int spanX, int spanY) {
- List<SizeF> sizes = getWidgetSizes(context, spanX, spanY);
- if (ATLEAST_S) {
- widgetView.updateAppWidgetSize(new Bundle(), sizes);
- } else {
- Rect bounds = getMinMaxSizes(sizes);
- widgetView.updateAppWidgetSize(new Bundle(), bounds.left, bounds.top, bounds.right,
- bounds.bottom);
+ AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
+ int widgetId = widgetView.getAppWidgetId();
+ if (widgetId <= 0) {
+ return;
}
+ Bundle sizeOptions = getWidgetSizeOptions(context, widgetView.getAppWidgetInfo().provider,
+ spanX, spanY);
+ if (sizeOptions.<SizeF>getParcelableArrayList(
+ AppWidgetManager.OPTION_APPWIDGET_SIZES).equals(
+ widgetManager.getAppWidgetOptions(widgetId).<SizeF>getParcelableArrayList(
+ AppWidgetManager.OPTION_APPWIDGET_SIZES))) {
+ return;
+ }
+ widgetManager.updateAppWidgetOptions(widgetId, sizeOptions);
}
/**
@@ -99,17 +138,7 @@
*/
public static Bundle getWidgetSizeOptions(Context context, ComponentName provider, int spanX,
int spanY) {
- ArrayList<SizeF> sizes = getWidgetSizes(context, spanX, spanY);
- Rect padding = getDefaultPaddingForWidget(context, provider, null);
- float density = context.getResources().getDisplayMetrics().density;
- float xPaddingDips = (padding.left + padding.right) / density;
- float yPaddingDips = (padding.top + padding.bottom) / density;
-
- ArrayList<SizeF> paddedSizes = sizes.stream()
- .map(size -> new SizeF(
- Math.max(0.f, size.getWidth() - xPaddingDips),
- Math.max(0.f, size.getHeight() - yPaddingDips)))
- .collect(Collectors.toCollection(ArrayList::new));
+ ArrayList<SizeF> paddedSizes = getWidgetPaddedSizes(context, provider, spanX, spanY);
Rect rect = getMinMaxSizes(paddedSizes);
Bundle options = new Bundle();
diff --git a/src/com/android/launcher3/widget/util/WidgetsTableUtils.java b/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
index 7294a3a..54aaf93 100644
--- a/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
+++ b/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
@@ -56,6 +56,13 @@
* 3. The order shortcuts are grouped together in the same row until their total horizontal
* spans exceed the {@code maxSpansPerRow} - 1.
* 4. If there is only one widget in a row, its width may exceed the {@code maxSpansPerRow}.
+ *
+ * <p>Let's say the {@code maxSpansPerRow} is set to 6. Widgets can be grouped in the same row
+ * if their total horizontal spans added don't exceed 5.
+ * Example 1: Row 1: 2x2, 2x3, 1x1. Total horizontal spans is 5. This is okay.
+ * Example 2: Row 1: 2x2, 4x3, 1x1. the total horizontal spans is 7. This is wrong. 4x3 and 1x1
+ * should be moved to a new row.
+ * Example 3: Row 1: 6x4. This is okay because this is the only item in the row.
*/
public static List<ArrayList<WidgetItem>> groupWidgetItemsIntoTable(
List<WidgetItem> widgetItems, final int maxSpansPerRow) {
diff --git a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
index a66b031..631067b 100644
--- a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
+++ b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
@@ -225,6 +225,14 @@
return null;
}
+ /** Returns {@link PackageItemInfo} of a pending widget. */
+ public static PackageItemInfo newPendingItemInfo(ComponentName provider) {
+ if (CONVERSATION_WIDGET.equals(provider)) {
+ return new PackageItemInfo(provider.getPackageName(), PackageItemInfo.CONVERSATIONS);
+ }
+ return new PackageItemInfo(provider.getPackageName());
+ }
+
private WidgetPackageOrCategoryKey getWidgetPackageOrCategoryKey(WidgetItem item) {
if (CONVERSATION_WIDGET.equals(item.componentName)) {
return new WidgetPackageOrCategoryKey(PackageItemInfo.CONVERSATIONS, item.user);
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 2712bc0..bf4eba0 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -65,6 +65,7 @@
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.rule.FailureWatcher;
import com.android.launcher3.util.rule.LauncherActivityRule;
+import com.android.launcher3.util.rule.ScreenRecordRule;
import com.android.launcher3.util.rule.ShellCommandRule;
import com.android.launcher3.util.rule.TestStabilityRule;
@@ -204,6 +205,9 @@
public ShellCommandRule mDisableHeadsUpNotification =
ShellCommandRule.disableHeadsUpNotification();
+ @Rule
+ public ScreenRecordRule mScreenRecordRule = new ScreenRecordRule();
+
protected void clearPackageData(String pkg) throws IOException, InterruptedException {
final CountDownLatch count = new CountDownLatch(2);
final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
index 06bc26a..4dd44f4 100644
--- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
+++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
@@ -36,6 +36,7 @@
import com.android.launcher3.tapl.AppIconMenuItem;
import com.android.launcher3.tapl.Widgets;
import com.android.launcher3.tapl.Workspace;
+import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import com.android.launcher3.views.OptionsPopupView;
import com.android.launcher3.widget.picker.WidgetsFullSheet;
import com.android.launcher3.widget.picker.WidgetsRecyclerView;
@@ -92,6 +93,7 @@
}
@Test
+ @ScreenRecord //b/187080582
public void testDevicePressMenu() throws Exception {
mDevice.pressMenu();
mDevice.waitForIdle();
diff --git a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
index b421b0e..0c9c463 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
@@ -102,6 +102,8 @@
setResult(acceptConfig);
if (acceptConfig) {
+ // Dismiss widget resize frame.
+ mDevice.pressHome();
Wait.atMost("", new WidgetSearchCondition(), DEFAULT_ACTIVITY_TIMEOUT, mLauncher);
assertNotNull(mAppWidgetManager.getAppWidgetInfo(mWidgetId));
} else {
diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
index 714b11b..dad4f2b 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
@@ -58,6 +58,8 @@
openAllWidgets().
getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())).
dragToWorkspace(false, false);
+ // Dismiss widget resize frame.
+ mDevice.pressHome();
assertTrue(mActivityMonitor.itemExists(
(info, view) -> info instanceof LauncherAppWidgetInfo &&
diff --git a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
index 822fefc..745dc22 100644
--- a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
@@ -42,6 +42,7 @@
import com.android.launcher3.ui.AbstractLauncherUiTest;
import com.android.launcher3.util.Wait;
import com.android.launcher3.util.Wait.Condition;
+import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
import com.android.launcher3.util.rule.ShellCommandRule;
import org.junit.Before;
@@ -77,6 +78,7 @@
public void testEmpty() throws Throwable { /* needed while the broken tests are being fixed */ }
@Test
+ @ScreenRecord //b/192010616
public void testPinWidgetNoConfig() throws Throwable {
runTest("pinWidgetNoConfig", true, (info, view) -> info instanceof LauncherAppWidgetInfo &&
((LauncherAppWidgetInfo) info).appWidgetId == mAppWidgetId &&
@@ -85,6 +87,7 @@
}
@Test
+ @ScreenRecord //b/192005114
public void testPinWidgetNoConfig_customPreview() throws Throwable {
// Command to set custom preview
Intent command = RequestPinItemActivity.getCommandIntent(
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
index 4c47947..dc59bdd 100644
--- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
+++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
@@ -2,6 +2,8 @@
import static androidx.test.InstrumentationRegistry.getInstrumentation;
+import android.os.FileUtils;
+import android.os.ParcelFileDescriptor.AutoCloseInputStream;
import android.util.Log;
import androidx.test.uiautomator.UiDevice;
@@ -12,9 +14,12 @@
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
-import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
public class FailureWatcher extends TestWatcher {
private static final String TAG = "FailureWatcher";
@@ -26,20 +31,6 @@
mLauncher = launcher;
}
- private static void dumpViewHierarchy(UiDevice device) {
- final ByteArrayOutputStream stream = new ByteArrayOutputStream();
- try {
- device.dumpWindowHierarchy(stream);
- stream.flush();
- stream.close();
- for (String line : stream.toString().split("\\r?\\n")) {
- Log.e(TAG, line.trim());
- }
- } catch (IOException e) {
- Log.e(TAG, "error dumping XML to logcat", e);
- }
- }
-
@Override
protected void succeeded(Description description) {
super.succeeded(description);
@@ -53,22 +44,41 @@
public static void onError(UiDevice device, Description description, Throwable e) {
if (device == null) return;
- final String pathname = getInstrumentation().getTargetContext().
- getFilesDir().getPath() + "/TestScreenshot-" + description.getMethodName()
- + ".png";
- Log.e(TAG, "Failed test " + description.getMethodName() +
- ", screenshot will be saved to " + pathname +
- ", track trace is below, UI object dump is further below:\n" +
- Log.getStackTraceString(e));
- dumpViewHierarchy(device);
+ final File parentFile = getInstrumentation().getTargetContext().getFilesDir();
+ final File sceenshot = new File(parentFile,
+ "TestScreenshot-" + description.getMethodName() + ".png");
+ final File hierarchy = new File(parentFile,
+ "Hierarchy-" + description.getMethodName() + ".zip");
- try {
- final String dumpsysResult = device.executeShellCommand(
- "dumpsys activity service TouchInteractionService");
- Log.d(TAG, "TouchInteractionService: " + dumpsysResult);
- } catch (IOException ex) {
+ // Dump window hierarchy
+ try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(hierarchy))) {
+ out.putNextEntry(new ZipEntry("bugreport.txt"));
+ dumpStringCommand("dumpsys window windows", out);
+ dumpStringCommand("dumpsys package", out);
+ dumpStringCommand("dumpsys activity service TouchInteractionService", out);
+ out.closeEntry();
+
+ out.putNextEntry(new ZipEntry("visible_windows.zip"));
+ dumpCommand("cmd window dump-visible-window-views", out);
+ out.closeEntry();
+ } catch (IOException ex) { }
+
+ Log.e(TAG, "Failed test " + description.getMethodName()
+ + ",\nscreenshot will be saved to " + sceenshot
+ + ",\nUI dump at: " + hierarchy
+ + " (use go/web-hv to open the dump file)", e);
+ device.takeScreenshot(sceenshot);
+ }
+
+ private static void dumpStringCommand(String cmd, OutputStream out) throws IOException {
+ out.write(("\n\n" + cmd + "\n").getBytes());
+ dumpCommand(cmd, out);
+ }
+
+ private static void dumpCommand(String cmd, OutputStream out) throws IOException {
+ try (AutoCloseInputStream in = new AutoCloseInputStream(getInstrumentation()
+ .getUiAutomation().executeShellCommand(cmd))) {
+ FileUtils.copy(in, out);
}
-
- device.takeScreenshot(new File(pathname));
}
}
diff --git a/tests/src/com/android/launcher3/util/rule/ScreenRecordRule.java b/tests/src/com/android/launcher3/util/rule/ScreenRecordRule.java
new file mode 100644
index 0000000..00b1cdd
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/rule/ScreenRecordRule.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2021 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.launcher3.util.rule;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import android.app.Instrumentation;
+import android.app.UiAutomation;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import androidx.test.uiautomator.UiDevice;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.io.File;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Rule which captures a screen record for a test.
+ * After adding this rule to the test class, apply the annotation @ScreenRecord to individual tests
+ */
+public class ScreenRecordRule implements TestRule {
+
+ private static final String TAG = "ScreenRecordRule";
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ if (description.getAnnotation(ScreenRecord.class) == null) {
+ return base;
+ }
+
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ Instrumentation inst = getInstrumentation();
+ UiAutomation automation = inst.getUiAutomation();
+ UiDevice device = UiDevice.getInstance(inst);
+
+ File outputFile = new File(inst.getTargetContext().getFilesDir(),
+ "screenrecord-" + description.getMethodName() + ".mp4");
+ device.executeShellCommand("killall screenrecord");
+ ParcelFileDescriptor output =
+ automation.executeShellCommand("screenrecord " + outputFile);
+ String screenRecordPid = device.executeShellCommand("pidof screenrecord");
+ try {
+ base.evaluate();
+ } finally {
+ device.executeShellCommand("kill -INT " + screenRecordPid);
+ Log.e(TAG, "Screenrecord captured at: " + outputFile);
+ output.close();
+ }
+ }
+ };
+ }
+
+ /**
+ * Interface to indicate that the test should capture screenrecord
+ */
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(ElementType.METHOD)
+ public @interface ScreenRecord { }
+}
diff --git a/tests/src/com/android/launcher3/util/rule/ShellCommandRule.java b/tests/src/com/android/launcher3/util/rule/ShellCommandRule.java
index 0ec0f02..2b2fef4 100644
--- a/tests/src/com/android/launcher3/util/rule/ShellCommandRule.java
+++ b/tests/src/com/android/launcher3/util/rule/ShellCommandRule.java
@@ -15,21 +15,27 @@
*/
package com.android.launcher3.util.rule;
-import static com.android.launcher3.tapl.TestHelpers.getLauncherInMyProcess;
-
import static androidx.test.InstrumentationRegistry.getInstrumentation;
+import static com.android.launcher3.tapl.TestHelpers.getLauncherInMyProcess;
+
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
-
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
+import android.util.Log;
import androidx.annotation.Nullable;
import androidx.test.InstrumentationRegistry;
import androidx.test.uiautomator.UiDevice;
+import com.android.systemui.shared.system.PackageManagerWrapper;
+
+import org.junit.Assert;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.util.ArrayList;
+
/**
* Test rule which executes a shell command at the start of the test.
*/
@@ -37,10 +43,19 @@
private final String mCmd;
private final String mRevertCommand;
+ private final boolean mCheckSuccess;
+ private final Runnable mAdditionalChecks;
- public ShellCommandRule(String cmd, @Nullable String revertCommand) {
+ public ShellCommandRule(String cmd, @Nullable String revertCommand, boolean checkSuccess,
+ Runnable additionalChecks) {
mCmd = cmd;
mRevertCommand = revertCommand;
+ mCheckSuccess = checkSuccess;
+ mAdditionalChecks = additionalChecks;
+ }
+
+ public ShellCommandRule(String cmd, @Nullable String revertCommand) {
+ this(cmd, revertCommand, false, null);
}
@Override
@@ -48,12 +63,27 @@
return new Statement() {
@Override
public void evaluate() throws Throwable {
- UiDevice.getInstance(getInstrumentation()).executeShellCommand(mCmd);
+ final String result =
+ UiDevice.getInstance(getInstrumentation()).executeShellCommand(mCmd);
+ if (mCheckSuccess) {
+ Assert.assertTrue(
+ "Failed command: " + mCmd + ", result: " + result,
+ "Success".equals(result.replaceAll("\\s", "")));
+ }
+ if (mAdditionalChecks != null) mAdditionalChecks.run();
try {
base.evaluate();
} finally {
if (mRevertCommand != null) {
- UiDevice.getInstance(getInstrumentation()).executeShellCommand(mRevertCommand);
+ final String revertResult = UiDevice.getInstance(
+ getInstrumentation()).executeShellCommand(
+ mRevertCommand);
+ if (mCheckSuccess) {
+ Assert.assertTrue(
+ "Failed command: " + mRevertCommand
+ + ", result: " + revertResult,
+ "Success".equals(result.replaceAll("\\s", "")));
+ }
}
}
}
@@ -72,7 +102,15 @@
* Sets the target launcher as default launcher.
*/
public static ShellCommandRule setDefaultLauncher() {
- return new ShellCommandRule(getLauncherCommand(getLauncherInMyProcess()), null);
+ final ActivityInfo launcher = getLauncherInMyProcess();
+ Log.d("b/187080582", "Launcher: " + new ComponentName(launcher.packageName, launcher.name)
+ .flattenToString());
+ return new ShellCommandRule(getLauncherCommand(launcher), null, true, () ->
+ Assert.assertEquals("Setting default launcher failed",
+ new ComponentName(launcher.packageName, launcher.name)
+ .flattenToString(),
+ PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>())
+ .flattenToString()));
}
public static String getLauncherCommand(ActivityInfo launcher) {
diff --git a/tests/src_common/com/android/launcher3/common/WidgetUtils.java b/tests/src_common/com/android/launcher3/common/WidgetUtils.java
index 5e17e0a..97500e3 100644
--- a/tests/src_common/com/android/launcher3/common/WidgetUtils.java
+++ b/tests/src_common/com/android/launcher3/common/WidgetUtils.java
@@ -56,7 +56,9 @@
item.container = LauncherSettings.Favorites.CONTAINER_DESKTOP;
if (bindWidget) {
- PendingAddWidgetInfo pendingInfo = new PendingAddWidgetInfo(info);
+ PendingAddWidgetInfo pendingInfo =
+ new PendingAddWidgetInfo(
+ info, LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY);
pendingInfo.spanX = item.spanX;
pendingInfo.spanY = item.spanY;
pendingInfo.minSpanX = item.minSpanX;
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index af36175..05ccf2e 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -926,6 +926,16 @@
}
}
+ void waitForObjectEnabled(UiObject2 object, String waitReason) {
+ try {
+ assertTrue("Timed out waiting for object to be enabled for " + waitReason + " "
+ + object.getResourceName(),
+ object.wait(Until.enabled(true), WAIT_TIME_MS));
+ } catch (StaleObjectException e) {
+ fail("The object disappeared from screen");
+ }
+ }
+
@NonNull
UiObject2 waitForObjectInContainer(UiObject2 container, BySelector selector) {
try {
@@ -1072,6 +1082,7 @@
}
void clickLauncherObject(UiObject2 object) {
+ waitForObjectEnabled(object, "clickLauncherObject");
expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_DOWN);
expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_UP);
if (!isLauncher3() && getNavigationModel() != NavigationModel.THREE_BUTTON) {
diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
index a809e2e..710e3cd 100644
--- a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
+++ b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
@@ -15,6 +15,10 @@
*/
package com.android.launcher3.tapl;
+import static com.android.launcher3.testing.TestProtocol.SEQUENCE_MAIN;
+import static com.android.launcher3.testing.TestProtocol.SEQUENCE_PILFER;
+import static com.android.launcher3.testing.TestProtocol.SEQUENCE_TIS;
+
import android.os.SystemClock;
import com.android.launcher3.testing.TestProtocol;
@@ -87,6 +91,24 @@
final ListMap<String> actualEvents = finishSync(waitForExpectedCountMs);
if (actualEvents == null) return "null event sequences because launcher likely died";
+ final String lowLevelDiags = lowLevelMismatchDiagnostics(actualEvents);
+ // If we have a sequence mismatch for a successful gesture, we want to provide all low-level
+ // details.
+ if (successfulGesture) {
+ return lowLevelDiags;
+ }
+
+ final String sequenceMismatchInEnglish = highLevelMismatchDiagnostics(actualEvents);
+
+ if (sequenceMismatchInEnglish != null) {
+ LauncherInstrumentation.log(lowLevelDiags);
+ return "Hint: " + sequenceMismatchInEnglish;
+ } else {
+ return lowLevelDiags;
+ }
+ }
+
+ private String lowLevelMismatchDiagnostics(ListMap<String> actualEvents) {
final StringBuilder sb = new StringBuilder();
boolean hasMismatches = false;
for (Map.Entry<String, List<Pattern>> expectedEvents : mExpectedEvents.entrySet()) {
@@ -118,6 +140,42 @@
return hasMismatches ? "Mismatching events: " + sb.toString() : null;
}
+ private String highLevelMismatchDiagnostics(ListMap<String> actualEvents) {
+ if (!mExpectedEvents.getNonNull(SEQUENCE_TIS).isEmpty()
+ && actualEvents.getNonNull(SEQUENCE_TIS).isEmpty()) {
+ return "TouchInteractionService didn't receive any of the touch events sent by the "
+ + "test";
+ }
+ if (getMismatchPosition(mExpectedEvents.getNonNull(SEQUENCE_TIS),
+ actualEvents.getNonNull(SEQUENCE_TIS)) != -1) {
+ // If TIS has a mismatch that we can't convert to high-level diags, don't convert
+ // other sequences either.
+ return null;
+ }
+
+ if (mExpectedEvents.getNonNull(SEQUENCE_PILFER).size() == 1
+ && actualEvents.getNonNull(SEQUENCE_PILFER).isEmpty()) {
+ return "Launcher didn't detect the navigation gesture sent by the test";
+ }
+ if (mExpectedEvents.getNonNull(SEQUENCE_PILFER).isEmpty()
+ && actualEvents.getNonNull(SEQUENCE_PILFER).size() == 1) {
+ return "Launcher detected a navigation gesture, but the test didn't send one";
+ }
+ if (getMismatchPosition(mExpectedEvents.getNonNull(SEQUENCE_PILFER),
+ actualEvents.getNonNull(SEQUENCE_PILFER)) != -1) {
+ // If Pilfer has a mismatch that we can't convert to high-level diags, don't analyze
+ // other sequences.
+ return null;
+ }
+
+ if (!mExpectedEvents.getNonNull(SEQUENCE_MAIN).isEmpty()
+ && actualEvents.getNonNull(SEQUENCE_MAIN).isEmpty()) {
+ return "None of the touch or keyboard events sent by the test was received by "
+ + "Launcher's main thread";
+ }
+ return null;
+ }
+
// If the list of actual events matches the list of expected events, returns -1, otherwise
// the position of the mismatch.
private static int getMismatchPosition(List<Pattern> expected, List<String> actual) {
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
index e3e0f42..950c052 100644
--- a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
+++ b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
@@ -64,6 +64,7 @@
"want to click screenshot button and exit screenshot ui")) {
UiObject2 screenshot = mLauncher.waitForObjectInContainer(mOverviewActions,
"action_screenshot");
+
mLauncher.clickLauncherObject(screenshot);
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
"clicked screenshot button")) {