Snap for 7510676 from ba302e8a6a to sc-release
Change-Id: I3aa2ce62b38ea7a4809ce7db9a1f61b6beee7a35
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -20,20 +20,31 @@ import static com.android.quickstep.views.OverviewActionsView.DISABLED_NO_THUMBN
|
||||
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 final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
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 @@ public final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
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 @@ public final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
@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 @@ public final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
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 @@ public final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
* 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 final class TaskOverlayFactoryGo extends TaskOverlayFactory {
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
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 @@ public class WidgetsModel {
|
||||
ComponentName providerName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Returns {@link PackageItemInfo} of a pending widget. */
|
||||
public static PackageItemInfo newPendingItemInfo(ComponentName provider) {
|
||||
return new PackageItemInfo(provider.getPackageName());
|
||||
}
|
||||
}
|
||||
@@ -141,6 +141,9 @@ enum Attribute {
|
||||
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
|
||||
|
||||
@@ -124,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"/>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
|
||||
@@ -981,11 +981,14 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
|
||||
depthController.setSurface(dimLayer);
|
||||
backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
depthController.setIsInLaunchTransition(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
// Reset depth at the end of the launch animation, so the wallpaper won't be
|
||||
// zoomed out if an app crashes.
|
||||
DEPTH.setValue(depthController, 0f);
|
||||
depthController.setIsInLaunchTransition(false);
|
||||
depthController.setSurface(null);
|
||||
if (dimLayer != null) {
|
||||
new SurfaceControl.Transaction()
|
||||
|
||||
@@ -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 @@ public final class WidgetsPredictionUpdateTask extends BaseModelUpdateTask {
|
||||
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 @@ public final class WidgetsPredictionUpdateTask extends BaseModelUpdateTask {
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.animation.Animator;
|
||||
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;
|
||||
@@ -117,6 +118,10 @@ public class DepthController implements StateHandler<LauncherState>,
|
||||
* @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;
|
||||
@@ -211,6 +216,19 @@ public class DepthController implements StateHandler<LauncherState>,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
@@ -238,7 +256,7 @@ public class DepthController implements StateHandler<LauncherState>,
|
||||
boolean opaque = mLauncher.getScrimView().isFullyOpaque() && !isOverview;
|
||||
|
||||
int blur = opaque || isOverview || !mCrossWindowBlursEnabled
|
||||
? 0 : (int) (mDepth * mMaxBlurRadius);
|
||||
|| mBlurDisabledForAppLaunch ? 0 : (int) (mDepth * mMaxBlurRadius);
|
||||
new SurfaceControl.Transaction()
|
||||
.setBackgroundBlurRadius(mSurface, blur)
|
||||
.setOpaque(mSurface, opaque)
|
||||
|
||||
@@ -19,7 +19,6 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKG
|
||||
|
||||
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 @@ public class BackgroundAppState extends OverviewState {
|
||||
|
||||
@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
|
||||
|
||||
@@ -61,6 +61,7 @@ import android.content.Intent;
|
||||
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;
|
||||
@@ -140,7 +141,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
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;
|
||||
@@ -1232,30 +1234,40 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
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() {
|
||||
@@ -1282,6 +1294,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
mGestureState.setState(STATE_END_TARGET_ANIMATION_FINISHED);
|
||||
}
|
||||
});
|
||||
setupWindowAnimation(swipePipToHomeAnimator);
|
||||
return swipePipToHomeAnimator;
|
||||
}
|
||||
|
||||
@@ -1312,6 +1325,11 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
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));
|
||||
});
|
||||
@@ -1329,7 +1347,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
if (mRecentsAnimationTargets != null) {
|
||||
mRecentsAnimationTargets.addReleaseCheck(anim);
|
||||
}
|
||||
return anim;
|
||||
}
|
||||
|
||||
public void onConsumerAboutToBeSwitched() {
|
||||
@@ -1353,8 +1370,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
@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();
|
||||
}
|
||||
@@ -1662,13 +1681,17 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
}
|
||||
} 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;
|
||||
|
||||
@@ -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 @@ public class AllSetActivity extends Activity {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,7 +130,8 @@ public class StatsLogCompatManager extends StatsLogManager {
|
||||
info.getAttribute().getNumber() /* origin */,
|
||||
getCardinality(info) /* cardinality */,
|
||||
info.getWidget().getSpanX(),
|
||||
info.getWidget().getSpanY());
|
||||
info.getWidget().getSpanY(),
|
||||
getFeatures(info));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -365,15 +366,12 @@ public class StatsLogCompatManager extends StatsLogManager {
|
||||
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();
|
||||
@@ -514,6 +512,13 @@ public class StatsLogCompatManager extends StatsLogManager {
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -56,7 +56,9 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
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 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
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 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
* @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 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
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 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
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;
|
||||
|
||||
@@ -152,6 +152,7 @@ public class FloatingWidgetView extends FrameLayout implements AnimatorListener,
|
||||
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 @@ public class FloatingWidgetView extends FrameLayout implements AnimatorListener,
|
||||
((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);
|
||||
|
||||
@@ -1665,7 +1665,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
pa.addListener(AnimatorListeners.forSuccessCallback(() -> {
|
||||
setLayoutRotation(newRotation, mOrientationState.getDisplayRotation());
|
||||
mActivity.getDragLayer().recreateControllers();
|
||||
updateChildTaskOrientations();
|
||||
setRecentsChangedOrientation(false).start();
|
||||
}));
|
||||
pa.start();
|
||||
|
||||
@@ -59,6 +59,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
|
||||
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 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
|
||||
mActivity = BaseDraggingActivity.fromContext(context);
|
||||
setClipToOutline(true);
|
||||
mTaskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,8 +126,13 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
|
||||
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 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
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));
|
||||
}
|
||||
@@ -228,8 +236,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
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 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
</view>
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
<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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
@@ -64,8 +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>
|
||||
<!-- no translation found for out_of_space (6692471482459245734) -->
|
||||
<skip />
|
||||
<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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
@@ -64,8 +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>
|
||||
<!-- no translation found for out_of_space (6692471482459245734) -->
|
||||
<skip />
|
||||
<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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
@@ -159,8 +161,8 @@
|
||||
<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="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_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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
@@ -160,7 +162,7 @@
|
||||
<string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
@@ -64,8 +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>
|
||||
<!-- no translation found for out_of_space (6692471482459245734) -->
|
||||
<skip />
|
||||
<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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user