summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk55
-rw-r--r--AndroidManifest-common.xml7
-rw-r--r--AndroidManifest.xml17
-rw-r--r--build.gradle2
-rw-r--r--libs/libGoogleFeed.jarbin0 -> 50896 bytes
-rw-r--r--privapp_whitelist_com.android.launcher3-ext.xml23
-rw-r--r--proguard.flags15
-rw-r--r--quickstep/AndroidManifest.xml5
-rw-r--r--quickstep/res/values/strings.xml4
-rw-r--r--res/drawable/avd_hidden_lock.xml65
-rw-r--r--res/drawable/avd_hidden_unlock.xml63
-rw-r--r--res/drawable/avd_protected_lock.xml52
-rw-r--r--res/drawable/avd_protected_unlock.xml52
-rw-r--r--res/drawable/ic_help.xml24
-rw-r--r--res/drawable/ic_hidden_locked.xml24
-rw-r--r--res/drawable/ic_hidden_unlocked.xml26
-rw-r--r--res/drawable/ic_protected_locked.xml25
-rw-r--r--res/drawable/ic_protected_unlocked.xml25
-rw-r--r--res/layout/activity_hidden_apps.xml52
-rw-r--r--res/layout/dialog_trust_welcome.xml61
-rw-r--r--res/layout/item_hidden_app.xml59
-rw-r--r--res/menu/menu_trust_apps.xml23
-rw-r--r--res/mipmap-anydpi/ic_launcher.xml20
-rw-r--r--res/mipmap-hdpi/ic_background.pngbin0 -> 6132 bytes
-rw-r--r--res/mipmap-hdpi/ic_foreground.pngbin0 -> 9469 bytes
-rw-r--r--res/mipmap-mdpi/ic_background.pngbin0 -> 3681 bytes
-rw-r--r--res/mipmap-mdpi/ic_foreground.pngbin0 -> 4648 bytes
-rw-r--r--res/mipmap-xhdpi/ic_background.pngbin0 -> 9013 bytes
-rw-r--r--res/mipmap-xhdpi/ic_foreground.pngbin0 -> 15658 bytes
-rw-r--r--res/mipmap-xxhdpi/ic_background.pngbin0 -> 16042 bytes
-rw-r--r--res/mipmap-xxhdpi/ic_foreground.pngbin0 -> 32584 bytes
-rw-r--r--res/mipmap-xxxhdpi/ic_background.pngbin0 -> 24170 bytes
-rw-r--r--res/mipmap-xxxhdpi/ic_foreground.pngbin0 -> 54234 bytes
-rw-r--r--res/values-ar/lineage_strings.xml34
-rw-r--r--res/values-ast-rES/lineage_strings.xml34
-rw-r--r--res/values-ast-rES/strings.xml112
-rw-r--r--res/values-az/lineage_strings.xml35
-rw-r--r--res/values-bg/lineage_strings.xml35
-rw-r--r--res/values-bs/lineage_strings.xml19
-rw-r--r--res/values-ca/lineage_strings.xml35
-rw-r--r--res/values-cs/lineage_strings.xml35
-rw-r--r--res/values-cy/lineage_strings.xml35
-rw-r--r--res/values-cy/strings.xml145
-rw-r--r--res/values-da/lineage_strings.xml22
-rw-r--r--res/values-de/lineage_strings.xml35
-rw-r--r--res/values-el/lineage_strings.xml35
-rw-r--r--res/values-en-rAU/lineage_strings.xml35
-rw-r--r--res/values-en-rCA/lineage_strings.xml35
-rw-r--r--res/values-en-rGB/lineage_strings.xml35
-rw-r--r--res/values-en-rIN/lineage_strings.xml35
-rw-r--r--res/values-eo/strings.xml24
-rw-r--r--res/values-es-rMX/lineage_strings.xml27
-rw-r--r--res/values-es-rUS/lineage_strings.xml34
-rw-r--r--res/values-es/lineage_strings.xml23
-rw-r--r--res/values-et/lineage_strings.xml35
-rw-r--r--res/values-eu/lineage_strings.xml34
-rw-r--r--res/values-fi/lineage_strings.xml34
-rw-r--r--res/values-fr/lineage_strings.xml34
-rw-r--r--res/values-fy-rNL/lineage_strings.xml35
-rw-r--r--res/values-gd/lineage_strings.xml25
-rw-r--r--res/values-gd/strings.xml51
-rw-r--r--res/values-gl/lineage_strings.xml35
-rw-r--r--res/values-hr/lineage_strings.xml23
-rw-r--r--res/values-hu/lineage_strings.xml35
-rw-r--r--res/values-in/lineage_strings.xml30
-rw-r--r--res/values-it/lineage_strings.xml35
-rw-r--r--res/values-iw/lineage_strings.xml24
-rw-r--r--res/values-ja/lineage_strings.xml34
-rw-r--r--res/values-ka/lineage_strings.xml21
-rw-r--r--res/values-kn/lineage_strings.xml34
-rw-r--r--res/values-ko/lineage_strings.xml34
-rw-r--r--res/values-ku/strings.xml50
-rw-r--r--res/values-lb/strings.xml56
-rw-r--r--res/values-ldrtl/lineage_config.xml19
-rw-r--r--res/values-nl/lineage_strings.xml20
-rw-r--r--res/values-pl/lineage_strings.xml34
-rw-r--r--res/values-pt-rBR/lineage_strings.xml35
-rw-r--r--res/values-pt-rPT/lineage_strings.xml35
-rw-r--r--res/values-ro/lineage_strings.xml35
-rw-r--r--res/values-ru/lineage_strings.xml35
-rw-r--r--res/values-sk/lineage_strings.xml34
-rw-r--r--res/values-sl/lineage_strings.xml35
-rw-r--r--res/values-sq/lineage_strings.xml35
-rw-r--r--res/values-sr/lineage_strings.xml24
-rw-r--r--res/values-sv/lineage_strings.xml20
-rw-r--r--res/values-sw320dp/dimens.xml35
-rw-r--r--res/values-sw340dp/dimens.xml2
-rw-r--r--res/values-th/lineage_strings.xml35
-rw-r--r--res/values-tr/lineage_strings.xml35
-rw-r--r--res/values-ug/strings.xml22
-rw-r--r--res/values-vi/lineage_strings.xml26
-rw-r--r--res/values-zh-rCN/lineage_strings.xml35
-rw-r--r--res/values-zh-rTW/lineage_strings.xml34
-rw-r--r--res/values/config.xml6
-rw-r--r--res/values/dimens.xml2
-rw-r--r--res/values/lineage_config.xml19
-rw-r--r--res/values/lineage_strings.xml52
-rw-r--r--res/xml/default_workspace_4x4.xml87
-rw-r--r--res/xml/default_workspace_4x5.xml175
-rw-r--r--res/xml/default_workspace_5x5.xml114
-rw-r--r--res/xml/default_workspace_5x6.xml175
-rw-r--r--res/xml/default_workspace_5x7.xml175
-rw-r--r--res/xml/default_workspace_6x6.xml175
-rw-r--r--res/xml/device_profiles.xml79
-rw-r--r--res/xml/launcher_preferences.xml37
-rw-r--r--src/com/android/launcher3/AppWidgetResizeFrame.java24
-rw-r--r--src/com/android/launcher3/BubbleTextView.java17
-rw-r--r--src/com/android/launcher3/DeviceProfile.java17
-rw-r--r--src/com/android/launcher3/InvariantDeviceProfile.java33
-rw-r--r--src/com/android/launcher3/Launcher.java8
-rw-r--r--src/com/android/launcher3/PagedView.java6
-rw-r--r--src/com/android/launcher3/Utilities.java22
-rw-r--r--src/com/android/launcher3/Workspace.java3
-rw-r--r--src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java28
-rw-r--r--src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java3
-rw-r--r--src/com/android/launcher3/config/BaseFlags.java7
-rw-r--r--src/com/android/launcher3/dragndrop/DragController.java6
-rw-r--r--src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java2
-rw-r--r--src/com/android/launcher3/lineage/LineageLauncher.java32
-rw-r--r--src/com/android/launcher3/lineage/LineageLauncherCallbacks.java204
-rw-r--r--src/com/android/launcher3/lineage/LineageUtils.java78
-rw-r--r--src/com/android/launcher3/lineage/OverlayCallbackImpl.java80
-rw-r--r--src/com/android/launcher3/lineage/trust/HiddenAppsFilter.java40
-rw-r--r--src/com/android/launcher3/lineage/trust/LoadTrustComponentsTask.java104
-rw-r--r--src/com/android/launcher3/lineage/trust/TrustAppsActivity.java157
-rw-r--r--src/com/android/launcher3/lineage/trust/TrustAppsAdapter.java197
-rw-r--r--src/com/android/launcher3/lineage/trust/UpdateItemTask.java76
-rw-r--r--src/com/android/launcher3/lineage/trust/db/TrustComponent.java92
-rw-r--r--src/com/android/launcher3/lineage/trust/db/TrustDatabaseHelper.java198
-rw-r--r--src/com/android/launcher3/popup/PopupContainerWithArrow.java3
-rw-r--r--src/com/android/launcher3/popup/SystemShortcut.java2
-rw-r--r--src/com/android/launcher3/provider/ImportDataTask.java2
-rw-r--r--src/com/android/launcher3/qsb/QsbContainerView.java29
-rw-r--r--src/com/android/launcher3/qsb/QsbWidgetHostView.java6
-rw-r--r--src/com/android/launcher3/settings/SettingsActivity.java57
-rw-r--r--src/com/android/launcher3/touch/ItemClickHandler.java13
-rw-r--r--src/com/android/launcher3/util/PackageManagerHelper.java5
-rw-r--r--src/com/android/launcher3/views/OptionsPopupView.java21
138 files changed, 5214 insertions, 256 deletions
diff --git a/Android.mk b/Android.mk
index 78ea02a..e492f4a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -35,6 +35,18 @@ LOCAL_MODULE := LauncherPluginLib
include $(BUILD_STATIC_JAVA_LIBRARY)
#
+# Prebuilt Google Feed library
+#
+include $(CLEAR_VARS)
+LOCAL_MODULE := libGoogleFeed
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_SRC_FILES := libs/libGoogleFeed.jar
+LOCAL_UNINSTALLABLE_MODULE := true
+LOCAL_SDK_VERSION := 27
+include $(BUILD_PREBUILT)
+
+#
# Build rule for Launcher3 dependencies lib.
#
include $(CLEAR_VARS)
@@ -48,7 +60,9 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.preference_preference \
iconloader_base
-LOCAL_STATIC_JAVA_LIBRARIES := LauncherPluginLib
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ LauncherPluginLib \
+ libGoogleFeed
LOCAL_SRC_FILES := \
$(call all-proto-files-under, protos) \
@@ -64,7 +78,7 @@ LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/ --proto_path=$(LOCAL_PA
LOCAL_PROTO_JAVA_OUTPUT_PARAMS := enum_style=java
LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 21
+LOCAL_MIN_SDK_VERSION := 26
LOCAL_MODULE := Launcher3CommonDepsLib
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MANIFEST_FILE := AndroidManifest-common.xml
@@ -92,12 +106,13 @@ LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 21
-LOCAL_PACKAGE_NAME := Launcher3
+LOCAL_MIN_SDK_VERSION := 26
+LOCAL_PACKAGE_NAME := Trebuchet
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
+LOCAL_REQUIRED_MODULES += privapp_whitelist_com.android.launcher3-ext.xml
LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest-common.xml
@@ -123,12 +138,13 @@ LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/go/res
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 21
-LOCAL_PACKAGE_NAME := Launcher3Go
+LOCAL_MIN_SDK_VERSION := 26
+LOCAL_PACKAGE_NAME := TrebuchetGo
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3Go Launcher3QuickStep
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
+LOCAL_REQUIRED_MODULES += privapp_whitelist_com.android.launcher3-ext.xml
LOCAL_FULL_LIBS_MANIFEST_FILES := \
$(LOCAL_PATH)/AndroidManifest.xml \
@@ -191,11 +207,12 @@ else
LOCAL_SDK_VERSION := system_current
LOCAL_MIN_SDK_VERSION := 26
endif
-LOCAL_PACKAGE_NAME := Launcher3QuickStep
+LOCAL_PACKAGE_NAME := TrebuchetQuickStep
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
+LOCAL_REQUIRED_MODULES += privapp_whitelist_com.android.launcher3-ext.xml
LOCAL_RESOURCE_DIR := \
$(LOCAL_PATH)/quickstep/res \
@@ -241,11 +258,12 @@ LOCAL_RESOURCE_DIR := \
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_ENABLED := full
-LOCAL_PACKAGE_NAME := Launcher3QuickStepGo
+LOCAL_PACKAGE_NAME := TrebuchetQuickStepGo
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep Launcher3GoIconRecents
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep Launcher3QuickStepGo Launcher3GoIconRecents
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
+LOCAL_REQUIRED_MODULES += privapp_whitelist_com.android.launcher3-ext.xml
LOCAL_FULL_LIBS_MANIFEST_FILES := \
$(LOCAL_PATH)/go/AndroidManifest.xml \
@@ -287,11 +305,12 @@ LOCAL_RESOURCE_DIR := \
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_ENABLED := full
-LOCAL_PACKAGE_NAME := Launcher3GoIconRecents
+LOCAL_PACKAGE_NAME := TrebuchetGoIconRecents
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3Go Launcher3QuickStep
+LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3Go Launcher3QuickStep Launcher3GoIconRecents
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
+LOCAL_REQUIRED_MODULES += privapp_whitelist_com.android.launcher3-ext.xml
LOCAL_FULL_LIBS_MANIFEST_FILES := \
$(LOCAL_PATH)/go/AndroidManifest.xml \
@@ -302,6 +321,14 @@ LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
include $(BUILD_PACKAGE)
+include $(CLEAR_VARS)
+LOCAL_MODULE := privapp_whitelist_com.android.launcher3-ext.xml
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/permissions
+LOCAL_PRODUCT_MODULE := true
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
# ==================================================
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 555cc73..5e67e4e 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -44,6 +44,7 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
+ <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<!--
@@ -155,13 +156,13 @@
<!--
The content provider for exposing various launcher grid options.
- TODO: Add proper permissions
-->
<provider
android:name="com.android.launcher3.graphics.GridOptionsProvider"
android:authorities="${packageName}.grid_control"
- android:enabled="false"
- android:exported="true" />
+ android:exported="true"
+ android:writePermission="${packageName}.permission.WRITE_SETTINGS"
+ android:readPermission="${packageName}.permission.READ_SETTINGS" />
<!--
The settings activity. To extend point settings_fragment_name to appropriate fragment class
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b031ffb..6b7fedf 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -19,8 +19,9 @@
-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="com.android.launcher3">
- <uses-sdk android:targetSdkVersion="29" android:minSdkVersion="25"/>
+ <uses-sdk android:targetSdkVersion="29" android:minSdkVersion="26"/>
<!--
Manifest entries specific to Launcher3. This is merged with AndroidManifest-common.xml.
Refer comments around specific entries on how to extend individual components.
@@ -31,19 +32,21 @@
android:fullBackupOnly="true"
android:fullBackupContent="@xml/backupscheme"
android:hardwareAccelerated="true"
- android:icon="@drawable/ic_launcher_home"
+ android:icon="@mipmap/ic_launcher"
android:label="@string/derived_app_name"
android:theme="@style/AppTheme"
android:largeHeap="@bool/config_largeHeap"
android:restoreAnyVersion="true"
- android:supportsRtl="true" >
+ android:supportsRtl="true"
+ tools:ignore="GoogleAppIndexingWarning"
+ tools:replace="android:icon">
<!--
Main launcher activity. When extending only change the name, and keep all the
attributes and intent filters the same
-->
<activity
- android:name="com.android.launcher3.Launcher"
+ android:name="com.android.launcher3.lineage.LineageLauncher"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
@@ -53,6 +56,7 @@
android:resizeableActivity="true"
android:resumeWhilePausing="true"
android:taskAffinity=""
+ android:excludeFromRecents="true"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -66,5 +70,10 @@
android:value="${packageName}.grid_control" />
</activity>
+ <activity
+ android:name=".lineage.trust.TrustAppsActivity"
+ android:label="@string/trust_apps_manager_name"
+ android:theme="@android:style/Theme.DeviceDefault.Settings"
+ android:autoRemoveFromRecents="true" />
</application>
</manifest>
diff --git a/build.gradle b/build.gradle
index e296455..e419b0a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -147,6 +147,8 @@ repositories {
}
dependencies {
+ implementation fileTree(dir: 'libs', include: ['libGoogleFeed.jar'])
+
implementation "androidx.dynamicanimation:dynamicanimation:${ANDROID_X_VERSION}"
implementation "androidx.recyclerview:recyclerview:${ANDROID_X_VERSION}"
implementation "androidx.preference:preference:${ANDROID_X_VERSION}"
diff --git a/libs/libGoogleFeed.jar b/libs/libGoogleFeed.jar
new file mode 100644
index 0000000..158b76d
--- /dev/null
+++ b/libs/libGoogleFeed.jar
Binary files differ
diff --git a/privapp_whitelist_com.android.launcher3-ext.xml b/privapp_whitelist_com.android.launcher3-ext.xml
new file mode 100644
index 0000000..14532cc
--- /dev/null
+++ b/privapp_whitelist_com.android.launcher3-ext.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019-2020 The LineageOS 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.
+-->
+<permissions>
+ <!-- Additional permissions on top of privapp_whitelist_com.android.launcher3.xml -->
+ <privapp-permissions package="com.android.launcher3">
+ <permission name="android.permission.MANAGE_ACTIVITY_STACKS"/>
+ <permission name="android.permission.STATUS_BAR"/>
+ </privapp-permissions>
+</permissions>
diff --git a/proguard.flags b/proguard.flags
index 272ab7a..7d4f2e0 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -8,10 +8,19 @@
*;
}
+-keep class com.android.launcher3.graphics.FixedScaleDrawable {
+ public <init>(...);
+}
+
-keep class com.android.launcher3.graphics.ShadowDrawable {
public <init>(...);
}
+# QSB
+-keep class com.android.launcher3.qsb.QsbContainerView$QsbFragment {
+ public <init>(...);
+}
+
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
@@ -50,4 +59,8 @@
-dontwarn android.app.**
-dontwarn android.view.**
-dontwarn android.os.**
--dontwarn android.graphics.** \ No newline at end of file
+-dontwarn android.graphics.**
+
+-keep class com.android.launcher3.lineage.trust.** {
+ *;
+}
diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml
index 826a275..2ef1894 100644
--- a/quickstep/AndroidManifest.xml
+++ b/quickstep/AndroidManifest.xml
@@ -30,12 +30,13 @@
android:fullBackupOnly="true"
android:fullBackupContent="@xml/backupscheme"
android:hardwareAccelerated="true"
- android:icon="@drawable/ic_launcher_home"
+ android:icon="@mipmap/ic_launcher"
android:label="@string/derived_app_name"
android:theme="@style/AppTheme"
android:largeHeap="@bool/config_largeHeap"
android:restoreAnyVersion="true"
- android:supportsRtl="true" >
+ android:supportsRtl="true"
+ tools:replace="android:icon">
<service
android:name="com.android.quickstep.TouchInteractionService"
diff --git a/quickstep/res/values/strings.xml b/quickstep/res/values/strings.xml
index 4319b5d..f02e9dd 100644
--- a/quickstep/res/values/strings.xml
+++ b/quickstep/res/values/strings.xml
@@ -19,7 +19,7 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Application name -->
- <string name="derived_app_name" translatable="false">Quickstep</string>
+ <string name="derived_app_name" translatable="false">@string/lineageos_app_name</string>
<!-- Options for recent tasks -->
<!-- Title for an option to enter split screen mode for a given app -->
@@ -67,4 +67,4 @@
<string name="all_apps_prediction_tip">Your predicted apps</string>
-</resources> \ No newline at end of file
+</resources>
diff --git a/res/drawable/avd_hidden_lock.xml b/res/drawable/avd_hidden_lock.xml
new file mode 100644
index 0000000..d208150
--- /dev/null
+++ b/res/drawable/avd_hidden_lock.xml
@@ -0,0 +1,65 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<animated-vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:name="visibilitystrike"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:name="strike_thru_path"
+ android:pathData="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:strokeWidth="1"/>
+ <clip-path
+ android:name="strike_thru_mask"
+ android:pathData="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"/>
+ <path
+ android:name="eye_path"
+ android:pathData="M 12 4.5 C 7 4.5 2.73 7.61 1 12 C 2.73 16.39 7 19.5 12 19.5 C 17 19.5 21.27 16.39 23 12 C 21.27 7.61 17 4.5 12 4.5 L 12 4.5 Z M 12 17 C 9.24 17 7 14.76 7 12 C 7 9.24 9.24 7 12 7 C 14.76 7 17 9.24 17 12 C 17 14.76 14.76 17 12 17 L 12 17 Z M 12 9 C 10.34 9 9 10.34 9 12 C 9 13.66 10.34 15 12 15 C 13.66 15 15 13.66 15 12 C 15 10.34 13.66 9 12 9 L 12 9 Z"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:strokeWidth="1"/>
+ </vector>
+ </aapt:attr>
+ <target android:name="strike_thru_path">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:startOffset="268"
+ android:duration="1271"
+ android:valueFrom="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ android:valueTo="M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+ <target android:name="strike_thru_mask">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:startOffset="268"
+ android:duration="1271"
+ android:valueFrom="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ android:valueTo="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+</animated-vector>
diff --git a/res/drawable/avd_hidden_unlock.xml b/res/drawable/avd_hidden_unlock.xml
new file mode 100644
index 0000000..2199709
--- /dev/null
+++ b/res/drawable/avd_hidden_unlock.xml
@@ -0,0 +1,63 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<animated-vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:name="visibilitystrike"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:name="strike_thru_path"
+ android:pathData="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:strokeWidth="1"/>
+ <clip-path
+ android:name="strike_thru_mask"
+ android:pathData="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"/>
+ <path
+ android:name="eye_path"
+ android:pathData="M 12 4.5 C 7 4.5 2.73 7.61 1 12 C 2.73 16.39 7 19.5 12 19.5 C 17 19.5 21.27 16.39 23 12 C 21.27 7.61 17 4.5 12 4.5 L 12 4.5 Z M 12 17 C 9.24 17 7 14.76 7 12 C 7 9.24 9.24 7 12 7 C 14.76 7 17 9.24 17 12 C 17 14.76 14.76 17 12 17 L 12 17 Z M 12 9 C 10.34 9 9 10.34 9 12 C 9 13.66 10.34 15 12 15 C 13.66 15 15 13.66 15 12 C 15 10.34 13.66 9 12 9 L 12 9 Z"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:strokeWidth="1"/>
+ </vector>
+ </aapt:attr>
+ <target android:name="strike_thru_path">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="1271"
+ android:valueFrom="M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z"
+ android:valueTo="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+ <target android:name="strike_thru_mask">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="pathData"
+ android:duration="1271"
+ android:valueFrom="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z"
+ android:valueTo="M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+</animated-vector>
diff --git a/res/drawable/avd_protected_lock.xml b/res/drawable/avd_protected_lock.xml
new file mode 100644
index 0000000..464a5bf
--- /dev/null
+++ b/res/drawable/avd_protected_lock.xml
@@ -0,0 +1,52 @@
+<!--
+ Copyright (C) 2017 The LineageOS 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="24dp"
+ android:height="24dp"
+ android:alpha="1"
+ android:viewportHeight="24"
+ android:viewportWidth="24">
+ <path
+ android:name="lock"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" />
+ <group
+ android:name="group"
+ android:pivotX="8"
+ android:pivotY="6">
+ <path
+ android:name="line"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M 7, 6 L 9, 6 L 9, 8 L 7, 8 L 7, 6" />
+ </group>
+ </vector>
+ </aapt:attr>
+ <target android:name="group">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:name="group"
+ android:duration="350"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator"
+ android:propertyName="scaleY"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/res/drawable/avd_protected_unlock.xml b/res/drawable/avd_protected_unlock.xml
new file mode 100644
index 0000000..374f943
--- /dev/null
+++ b/res/drawable/avd_protected_unlock.xml
@@ -0,0 +1,52 @@
+<!--
+ Copyright (C) 2017 The LineageOS 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.
+-->
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:width="24dp"
+ android:height="24dp"
+ android:alpha="1"
+ android:viewportHeight="24"
+ android:viewportWidth="24">
+ <path
+ android:name="lock"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" />
+ <group
+ android:name="group"
+ android:pivotX="8"
+ android:pivotY="6">
+ <path
+ android:name="line"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M 7, 6 L 9, 6 L 9, 8 L 7, 8 L 7, 6" />
+ </group>
+ </vector>
+ </aapt:attr>
+ <target android:name="group">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:name="group"
+ android:duration="350"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator"
+ android:propertyName="scaleY"
+ android:valueFrom="1"
+ android:valueTo="0"
+ android:valueType="floatType" />
+ </aapt:attr>
+ </target>
+</animated-vector> \ No newline at end of file
diff --git a/res/drawable/ic_help.xml b/res/drawable/ic_help.xml
new file mode 100644
index 0000000..e9a6a70
--- /dev/null
+++ b/res/drawable/ic_help.xml
@@ -0,0 +1,24 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="?android:attr/colorAccent"
+ android:pathData="M11,18h2v-2h-2v2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12,6c-2.21,0 -4,1.79 -4,4h2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,2 -3,1.75 -3,5h2c0,-2.25 3,-2.5 3,-5 0,-2.21 -1.79,-4 -4,-4z"/>
+</vector>
diff --git a/res/drawable/ic_hidden_locked.xml b/res/drawable/ic_hidden_locked.xml
new file mode 100644
index 0000000..4cf3a0b
--- /dev/null
+++ b/res/drawable/ic_hidden_locked.xml
@@ -0,0 +1,24 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z" />
+</vector>
diff --git a/res/drawable/ic_hidden_unlocked.xml b/res/drawable/ic_hidden_unlocked.xml
new file mode 100644
index 0000000..c98d181
--- /dev/null
+++ b/res/drawable/ic_hidden_unlocked.xml
@@ -0,0 +1,26 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:name="visibilitystrike"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:pathData="M 12 4.5 C 7 4.5 2.73 7.61 1 12 C 2.73 16.39 7 19.5 12 19.5 C 17 19.5 21.27 16.39 23 12 C 21.27 7.61 17 4.5 12 4.5 L 12 4.5 Z M 12 17 C 9.24 17 7 14.76 7 12 C 7 9.24 9.24 7 12 7 C 14.76 7 17 9.24 17 12 C 17 14.76 14.76 17 12 17 L 12 17 Z M 12 9 C 10.34 9 9 10.34 9 12 C 9 13.66 10.34 15 12 15 C 13.66 15 15 13.66 15 12 C 15 10.34 13.66 9 12 9 L 12 9 Z"
+ android:fillColor="?android:attr/textColorSecondary"
+ android:strokeWidth="1"/>
+</vector>
diff --git a/res/drawable/ic_protected_locked.xml b/res/drawable/ic_protected_locked.xml
new file mode 100644
index 0000000..8c39e3e
--- /dev/null
+++ b/res/drawable/ic_protected_locked.xml
@@ -0,0 +1,25 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+
+ <path
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1s3.1,1.39 3.1,3.1v2L8.9,8L8.9,6zM18,20L6,20L6,10h12v10z"/>
+</vector>
diff --git a/res/drawable/ic_protected_unlocked.xml b/res/drawable/ic_protected_unlocked.xml
new file mode 100644
index 0000000..6789fcb
--- /dev/null
+++ b/res/drawable/ic_protected_unlocked.xml
@@ -0,0 +1,25 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+
+ <path
+ android:fillColor="?android:attr/textColorSecondary"
+ android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6h1.9c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM18,20L6,20L6,10h12v10z"/>
+</vector>
diff --git a/res/layout/activity_hidden_apps.xml b/res/layout/activity_hidden_apps.xml
new file mode 100644
index 0000000..c96dad2
--- /dev/null
+++ b/res/layout/activity_hidden_apps.xml
@@ -0,0 +1,52 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/hidden_apps_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone" />
+
+ <LinearLayout
+ android:id="@+id/hidden_apps_loading"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:orientation="vertical">
+
+ <ProgressBar
+ android:id="@+id/hidden_apps_progress_bar"
+ style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="32dp"
+ android:paddingEnd="32dp"
+ android:max="100"
+ android:progress="0" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:text="@string/trust_apps_loading"
+ android:textSize="16sp" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/dialog_trust_welcome.xml b/res/layout/dialog_trust_welcome.xml
new file mode 100644
index 0000000..e953d56
--- /dev/null
+++ b/res/layout/dialog_trust_welcome.xml
@@ -0,0 +1,61 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:padding="16dp">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+
+ <ImageView
+ android:layout_width="64dp"
+ android:layout_height="64dp"
+ android:src="@drawable/ic_protected_locked" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="8dp"
+ android:text="@string/trust_apps_info_protected"
+ android:textAlignment="center" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+
+ <ImageView
+ android:layout_width="64dp"
+ android:layout_height="64dp"
+ android:src="@drawable/ic_hidden_locked" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="8dp"
+ android:text="@string/trust_apps_info_hidden"
+ android:textAlignment="center" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/item_hidden_app.xml b/res/layout/item_hidden_app.xml
new file mode 100644
index 0000000..d40f04e
--- /dev/null
+++ b/res/layout/item_hidden_app.xml
@@ -0,0 +1,59 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="64dp">
+
+ <ImageView
+ android:id="@+id/item_hidden_app_icon"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="16dp" />
+
+ <ImageView
+ android:id="@+id/item_protected_app_switch"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:layout_marginEnd="56dp"
+ android:padding="8dp"
+ android:background="?android:attr/selectableItemBackgroundBorderless"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <ImageView
+ android:id="@+id/item_hidden_app_switch"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:layout_marginEnd="16dp"
+ android:padding="8dp"
+ android:background="?android:attr/selectableItemBackgroundBorderless"
+ android:clickable="true"
+ android:focusable="true" />
+
+ <TextView
+ android:id="@+id/item_hidden_app_title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignEnd="@id/item_hidden_app_switch"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="88dp"
+ android:layout_marginEnd="88dp" />
+</RelativeLayout>
diff --git a/res/menu/menu_trust_apps.xml b/res/menu/menu_trust_apps.xml
new file mode 100644
index 0000000..43c21b1
--- /dev/null
+++ b/res/menu/menu_trust_apps.xml
@@ -0,0 +1,23 @@
+<!--
+ Copyright (C) 2019 The LineageOS 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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <item
+ android:id="@+id/menu_trust_help"
+ android:icon="@drawable/ic_help"
+ android:showAsAction="always"
+ android:title="@string/trust_apps_help" />
+</menu>
diff --git a/res/mipmap-anydpi/ic_launcher.xml b/res/mipmap-anydpi/ic_launcher.xml
new file mode 100644
index 0000000..d8649ba
--- /dev/null
+++ b/res/mipmap-anydpi/ic_launcher.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2018 The LineageOS 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.
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_background"/>
+ <foreground android:drawable="@mipmap/ic_foreground"/>
+</adaptive-icon>
+
diff --git a/res/mipmap-hdpi/ic_background.png b/res/mipmap-hdpi/ic_background.png
new file mode 100644
index 0000000..ced9571
--- /dev/null
+++ b/res/mipmap-hdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-hdpi/ic_foreground.png b/res/mipmap-hdpi/ic_foreground.png
new file mode 100644
index 0000000..f5d06f7
--- /dev/null
+++ b/res/mipmap-hdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_background.png b/res/mipmap-mdpi/ic_background.png
new file mode 100644
index 0000000..917584c
--- /dev/null
+++ b/res/mipmap-mdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_foreground.png b/res/mipmap-mdpi/ic_foreground.png
new file mode 100644
index 0000000..31ff063
--- /dev/null
+++ b/res/mipmap-mdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_background.png b/res/mipmap-xhdpi/ic_background.png
new file mode 100644
index 0000000..9230c6e
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_foreground.png b/res/mipmap-xhdpi/ic_foreground.png
new file mode 100644
index 0000000..54e5c68
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_background.png b/res/mipmap-xxhdpi/ic_background.png
new file mode 100644
index 0000000..6d698ff
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_foreground.png b/res/mipmap-xxhdpi/ic_foreground.png
new file mode 100644
index 0000000..963bf36
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_foreground.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_background.png b/res/mipmap-xxxhdpi/ic_background.png
new file mode 100644
index 0000000..30b258a
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_background.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_foreground.png b/res/mipmap-xxxhdpi/ic_foreground.png
new file mode 100644
index 0000000..a483fe6
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_foreground.png
Binary files differ
diff --git a/res/values-ar/lineage_strings.xml b/res/values-ar/lineage_strings.xml
new file mode 100644
index 0000000..40028c3
--- /dev/null
+++ b/res/values-ar/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">أظهر تطبيق Google</string>
+ <string name="msg_minus_one_on_left">عند السحب لليمين من الشاشة الرئيسية الاساسية</string>
+ <string name="msg_minus_one_on_right">عند السحب لليسار من الشاشة الرئيسية الأساسية</string>
+ <string name="settings_edit_allow_title">السماح بالتحرير</string>
+ <string name="settings_edit_allow_summary_on">يمكن إضافة الرموز والأدوات وإزالتها ونقلها على الشاشة الرئيسية</string>
+ <string name="settings_edit_allow_summary_off">لا يمكن إضافة الرموز والأدوات وإزالتها ونقلها على الشاشة الرئيسية</string>
+ <string name="settings_edit_widgets_error">لا يمكن إضافة الأدوات إلى الشاشة الرئيسية</string>
+ <string name="desktop_show_labels">إظهار التسميات على سطح المكتب</string>
+ <string name="drawer_show_labels">إظهار التسميات في الدرج</string>
+ <string name="trust_apps_manager_name">التطبيقات المخفية و المحمية</string>
+ <string name="trust_apps_auth_manager">إفتح لإدارة التطبيقات المخفية والمحمية</string>
+ <string name="trust_apps_auth_open_app">المصادقة لفتح %1$s</string>
+ <string name="trust_apps_loading">جارٍ التحميل</string>
+ <string name="trust_apps_no_lock_error">يرجى إعداد شاشة قفل آمنة لتقييد الوصول إلى التطبيق</string>
+ <string name="trust_apps_help">مساعدة</string>
+ <string name="trust_apps_info_hidden">يتم إخفاء التطبيقات المخفية وعناصرها من الدرج</string>
+ <string name="trust_apps_info_protected">تتطلب التطبيقات المحمية فتح المصادقة من المشغِّل</string>
+</resources>
diff --git a/res/values-ast-rES/lineage_strings.xml b/res/values-ast-rES/lineage_strings.xml
new file mode 100644
index 0000000..4817ad6
--- /dev/null
+++ b/res/values-ast-rES/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Amosar l\'aplicación Google Now</string>
+ <string name="msg_minus_one_on_left">Cuando esbaries faza la drecha dende la pantalla d\'iniciu</string>
+ <string name="msg_minus_one_on_right">Cuando esbaries faza la izquierda dende la pantalla d\'iniciu</string>
+ <string name="settings_edit_allow_title">Permitir editar</string>
+ <string name="settings_edit_allow_summary_on">Los icono y widgets pueden amestase, desaniciase y movese na pantalla principal</string>
+ <string name="settings_edit_allow_summary_off">Los icono y widgets pueden amestase, desaniciase y movese na pantalla principal</string>
+ <string name="settings_edit_widgets_error">Nun ye posible amestar widgets a la pantalla d\'aniciu</string>
+ <string name="desktop_show_labels">Amosar etiquetes d\'iconos nel escritoriu</string>
+ <string name="drawer_show_labels">Amosar etiquetes d\'iconos nel caxón</string>
+ <string name="trust_apps_manager_name">Aplicaciones anubríes &amp; protexíes</string>
+ <string name="trust_apps_auth_manager">Desbloquia pa xestionar les apliicaciones anubríes y protexíes</string>
+ <string name="trust_apps_auth_open_app">Autentícate p\'abrir %1$s</string>
+ <string name="trust_apps_loading">Cargando\u2026</string>
+ <string name="trust_apps_no_lock_error">Configura una pantalla de bloquéu pa togar l\'accesu a les aplicaciones</string>
+ <string name="trust_apps_help">Ayuda</string>
+ <string name="trust_apps_info_hidden">Les aplicaciones anubríes y los sos widgets van anubrise del caxón</string>
+ <string name="trust_apps_info_protected">Les aplicaciones protexíes riquen l\'autenticación pa abriles dende\'l llanzador</string>
+</resources>
diff --git a/res/values-ast-rES/strings.xml b/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..0d2fd4b
--- /dev/null
+++ b/res/values-ast-rES/strings.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Launcher3</string>
+ <string name="work_folder_name">Trabayu</string>
+ <string name="activity_not_found">L\'aplicación nun ta instalada.</string>
+ <string name="activity_not_available">L\'aplicación nun ta disponible</string>
+ <string name="safemode_shortcut_error">L\'aplicación baxada ta desactivada nel mou seguru</string>
+ <string name="safemode_widget_error">Los widgets tán desactivaos nel mou seguru</string>
+ <string name="long_press_widget_to_add">Ten primío pa coyer un widget.</string>
+ <string name="widget_dims_format">%1$d \u00d7 %2$d</string>
+ <string name="long_press_shortcut_to_add">Ten primío &amp; pa coyer un atayu.</string>
+ <string name="long_accessible_way_to_add_shortcut">Calca dos vegaes &amp; pa escoyer un atayu o usar aiciones personalizaes.</string>
+ <string name="out_of_space">Nun queda espaciu na pantalla d\'aniciu.</string>
+ <string name="hotseat_out_of_space">Nun queda espaciu na bandexa de Favoritos</string>
+ <string name="all_apps_button_personal_label">Llista d\'apps personales</string>
+ <string name="all_apps_button_work_label">Llista d\'apps de trabayu</string>
+ <string name="all_apps_home_button_label">Aniciu</string>
+ <string name="remove_drop_target_label">Desaniciar</string>
+ <string name="uninstall_drop_target_label">Desinstalar</string>
+ <string name="app_info_drop_target_label">Información d\'aplicación</string>
+ <string name="install_drop_target_label">Instalar</string>
+ <string name="permlab_install_shortcut">instalar atayos</string>
+ <string name="permdesc_install_shortcut">Permite qu\'una aplicación amieste
+ atayos ensin la intervención del usuariu.</string>
+ <string name="permlab_read_settings">lleer axustes y atayos d\'Aniciu</string>
+ <string name="permdesc_read_settings">Permite que l\'aplicación llea los axustes
+ y atayos n\'Aniciu.</string>
+ <string name="permlab_write_settings">escribir atayos y axustes n\'Aniciu</string>
+ <string name="permdesc_write_settings">Permite que l\'aplicación camude los axustes
+ y los atayos n\'Aniciu.</string>
+ <string name="msg_no_phone_permission"><xliff:g id="app_name" example="Launcher3">%1$s</xliff:g> nun tien permisu pa facer llamaes telefóniques</string>
+ <string name="gadget_error_text">Problema cargando\'l widget</string>
+ <string name="gadget_setup_text">Configuración</string>
+ <string name="uninstall_system_app_text">Esta aplicación ye del sistema y nun pue desinstalase.</string>
+ <string name="folder_hint_text">Carpeta ensin nome</string>
+ <plurals name="dotted_app_label">
+ <item quantity="one"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, tienes <xliff:g id="notification_count" example="1">%2$d</xliff:g> avisu</item>
+ <item quantity="other"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, tienes <xliff:g id="notification_count" example="1">%2$d</xliff:g> avisos</item>
+ </plurals>
+ <string name="default_scroll_format">Páxina %1$d de %2$d</string>
+ <string name="workspace_scroll_format">Pantalla d\'aniciu %1$d de %2$d</string>
+ <string name="folder_opened">Carpeta abierta, <xliff:g id="width" example="5">%1$d</xliff:g> por <xliff:g id="height" example="3">%2$d</xliff:g></string>
+ <string name="folder_closed">Carpeta zarrada</string>
+ <string name="folder_renamed">Renomóse la carpeta a <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="folder_name_format">Carpeta: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="widget_button_text">Widgets</string>
+ <string name="wallpaper_button_text">Fondos de pantalla</string>
+ <string name="allow_rotation_title">Permitir la rotación de la Pantalla d\'aniciu</string>
+ <string name="notification_dots_title">Puntos de notificación</string>
+ <string name="title_missing_notification_access">Necesítase accesu a notificaciones</string>
+ <string name="msg_missing_notification_access">P\'amosar los Puntos de Notificación, encience l\'app de notificaciones pa <xliff:g id="name" example="My App">%1$s</xliff:g></string>
+ <string name="title_change_settings">Camudar axustes</string>
+ <string name="notification_dots_service_title">Amosar puntos d\'avisos</string>
+ <string name="auto_add_shortcuts_label">Amestar iconu a la Pantalla d\'aniciu</string>
+ <string name="package_state_unknown">Desconozse</string>
+ <string name="abandoned_clean_this">Desaniciar</string>
+ <string name="abandoned_search">Guetar</string>
+ <string name="abandoned_promises_title">Esta aplicación nun ta instalada</string>
+ <string name="abandoned_promise_explanation">L\'aplicación d\'esti iconu nun ta instalada.
+ Pues desanicialu o guetar l\'aplicación ya instalala a mano.
+ </string>
+ <string name="widgets_list">Llista de widgets</string>
+ <string name="widgets_list_closed">Llista de widgets zarrada</string>
+ <string name="action_add_to_workspace">Amestar a la pantalla d\'aniciu</string>
+ <string name="action_move_here">Mover l\'elementu equí</string>
+ <string name="item_added_to_workspace">Amestóse l\'elementu a la pantalla d\'anciu</string>
+ <string name="item_removed">Desanicióse l\'elementu</string>
+ <string name="action_move">Mover elementu</string>
+ <string name="move_to_empty_cell">Mover a la filera <xliff:g id="number" example="1">%1$s</xliff:g> columna <xliff:g id="number" example="1">%2$s</xliff:g></string>
+ <string name="move_to_position">Mover a la posición <xliff:g id="number" example="1">%1$s</xliff:g></string>
+ <string name="move_to_hotseat_position">Mover a la posición de favoritos <xliff:g id="number" example="1">%1$s</xliff:g></string>
+ <string name="item_moved">Movióse l\'elementu</string>
+ <string name="add_to_folder">Amestar a la carpeta: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="add_to_folder_with_app">Amestar a la carpeta con <xliff:g id="name" example="Messenger">%1$s</xliff:g></string>
+ <string name="added_to_folder">Amestóse l\'elementu a la carpeta</string>
+ <string name="create_folder_with">Crear carpeta con: <xliff:g id="name" example="Game">%1$s</xliff:g></string>
+ <string name="folder_created">Creóse la carpeta</string>
+ <string name="action_move_to_workspace">Mover a la pantalla d\'aniciu</string>
+ <string name="action_resize">Redimensionar</string>
+ <string name="action_increase_width">Aumentar anchor</string>
+ <string name="action_increase_height">Aumentar altor</string>
+ <string name="action_decrease_width">Amenorgar anchor</string>
+ <string name="action_decrease_height">Amenorgar altor</string>
+ <string name="widget_resized">Redimensionóse\'l widget al anchor <xliff:g id="number" example="2">%1$s</xliff:g> altor <xliff:g id="number" example="1">%2$s</xliff:g></string>
+ <string name="shortcuts_menu_with_notifications_description">Atayos y avisos </string>
+ <string name="all_apps_personal_tab">Personal</string>
+ <string name="all_apps_work_tab">Trabayu</string>
+ <string name="work_profile_toggle_label">Perfil de trabayu</string>
+ <string name="bottom_work_tab_user_education_title">Atopa apps de trabayu equí</string>
+ <string name="bottom_work_tab_user_education_body">Cada aplicación de trabayu tienuna credencial y la to organización caltiénla segura. Muevi les aplicaciones a la to Pantalla d\'aniciu pa un accesu más fácil.</string>
+ <string name="work_mode_on_label">Remanao pola to organiación</string>
+ <string name="work_mode_off_label">Avisos y apps tán inhabilitaos</string>
+ <string name="bottom_work_tab_user_education_close_button">Zarrar</string>
+ <string name="bottom_work_tab_user_education_closed">Zarráu</string>
+</resources>
diff --git a/res/values-az/lineage_strings.xml b/res/values-az/lineage_strings.xml
new file mode 100644
index 0000000..d0489f9
--- /dev/null
+++ b/res/values-az/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google tətbiqini göstər</string>
+ <string name="msg_minus_one_on_left">Əsas ekrandan sağa sürüşdürəndə</string>
+ <string name="msg_minus_one_on_right">Əsas ekrandan sola sürüşdürəndə</string>
+ <string name="settings_edit_allow_title">Düzəlişə icazə ver</string>
+ <string name="settings_edit_allow_summary_on">Nişanlar və vidgetlər əsas ekranda əlavə edilə, çıxarıla və ya köçürülə bilər</string>
+ <string name="settings_edit_allow_summary_off">Nişanlar və vidgetlər əsas ekranda əlavə edilə, çıxarıla və ya köçürülə bilməz</string>
+ <string name="settings_edit_widgets_error">Əsas ekrana vidget əlavə etmək mümkün deyil</string>
+ <string name="desktop_show_labels">Masaüstündə nişan etiketlərini göstər</string>
+ <string name="drawer_show_labels">Siyirmədə nişan etiketlərini göstər</string>
+ <string name="show_labels_landscape">Mənzərə rejimində nişan etiketlərini göstər</string>
+ <string name="trust_apps_manager_name">Gizli və Qorunan tətbiqlər</string>
+ <string name="trust_apps_auth_manager">Gizli və qorunan tətbiqləri idarə etmək üçün kilidi açın</string>
+ <string name="trust_apps_auth_open_app">%1$s tətbiqinin açılması üçün kimliyi təsdiqlə</string>
+ <string name="trust_apps_loading">Yüklənir\u2026</string>
+ <string name="trust_apps_no_lock_error">Tətbiq müraciətini məhdudlaşdırmaq üçün zəhmət olmasa təhlükəsiz bir kilid ekranı tənzimləyin</string>
+ <string name="trust_apps_help">Kömək</string>
+ <string name="trust_apps_info_hidden">Gizli tətbiqlər və vidgetləri, tətbiqlər menyusunda görünməyəcək</string>
+ <string name="trust_apps_info_protected">Qorunan tətbiqlərin başladıcıdan açılması üçün kimlik təsdiqləmə tələb olunur</string>
+</resources>
diff --git a/res/values-bg/lineage_strings.xml b/res/values-bg/lineage_strings.xml
new file mode 100644
index 0000000..b77bf5a
--- /dev/null
+++ b/res/values-bg/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Покажи Google апликацията</string>
+ <string name="msg_minus_one_on_left">Когато плъзнете надясно от главното меню</string>
+ <string name="msg_minus_one_on_right">Когато плъзнете наляво от главното меню</string>
+ <string name="settings_edit_allow_title">Разреши редактиране</string>
+ <string name="settings_edit_allow_summary_on">Икони и джаджи могат да бъдат добавяни, премахвани и местени на началния екран</string>
+ <string name="settings_edit_allow_summary_off">Икони и джаджи не могат да бъдат добавяни, премахвани и местени на началния екран</string>
+ <string name="settings_edit_widgets_error">Невъзможно е да се добавят джаджи към началния екран</string>
+ <string name="desktop_show_labels">Покажи етикетите на иконите на работния плот</string>
+ <string name="drawer_show_labels">Покажи етикетите на иконите</string>
+ <string name="show_labels_landscape">Покажи етикетите на иконите в хоризонтален режим </string>
+ <string name="trust_apps_manager_name">Скрити &amp; Защитени приложения</string>
+ <string name="trust_apps_auth_manager">Отключете за да управлявате скритите и защитените приложения</string>
+ <string name="trust_apps_auth_open_app">Попълнете правилно, за да отворите %1$s</string>
+ <string name="trust_apps_loading">Зарежда се\u2026</string>
+ <string name="trust_apps_no_lock_error">Моля, задайте сигурно заключване на екрана за да ограничи достъпа до дадено приложение</string>
+ <string name="trust_apps_help">Помощ</string>
+ <string name="trust_apps_info_hidden">Скритите приложения и техните приспособления са скрити от менюто</string>
+ <string name="trust_apps_info_protected">Защитените приложения изискват парола, за да бъдат отворени от главното меню</string>
+</resources>
diff --git a/res/values-bs/lineage_strings.xml b/res/values-bs/lineage_strings.xml
new file mode 100644
index 0000000..4a02054
--- /dev/null
+++ b/res/values-bs/lineage_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="trust_apps_loading">Učitavanje\u2026</string>
+ <string name="trust_apps_help">Pomoć</string>
+</resources>
diff --git a/res/values-ca/lineage_strings.xml b/res/values-ca/lineage_strings.xml
new file mode 100644
index 0000000..0a8a392
--- /dev/null
+++ b/res/values-ca/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Mostra l\'aplicació de Google</string>
+ <string name="msg_minus_one_on_left">Quan feu lliscar el dit cap a la dreta des de la pantalla principal d\'inici</string>
+ <string name="msg_minus_one_on_right">Quan feu lliscar el dit cap a l\'esquerra des de la pantalla principal d\'inici</string>
+ <string name="settings_edit_allow_title">Permet editar</string>
+ <string name="settings_edit_allow_summary_on">Les icones i els widgets poden ser afegits, eliminats i moguts a la pantalla d\'inici</string>
+ <string name="settings_edit_allow_summary_off">Les icones i els widgets no poden ser afegits, eliminats i moguts a la pantalla d\'inici</string>
+ <string name="settings_edit_widgets_error">No es possible afegir widgets a la pantalla d\'inici</string>
+ <string name="desktop_show_labels">Mostra les etiquetes de les icones a l\'escriptori</string>
+ <string name="drawer_show_labels">Mostra les etiquetes de les icones al calaix</string>
+ <string name="show_labels_landscape">Mostra les etiquetes de les icones en mode horitzontal</string>
+ <string name="trust_apps_manager_name">Aplicacions amagades i protegides</string>
+ <string name="trust_apps_auth_manager">Desbloqueja per gestionar les aplicacions amagades i protegides</string>
+ <string name="trust_apps_auth_open_app">Autentifica per obrir %1$s</string>
+ <string name="trust_apps_loading">S\'està carregant\u2026</string>
+ <string name="trust_apps_no_lock_error">Si us plau configura un bloqueig de pantalla segur per a restringir l\'accés a aplicacions</string>
+ <string name="trust_apps_help">Ajuda</string>
+ <string name="trust_apps_info_hidden">Les aplicacions amagades i els seus widgets s\'amagaran del calaix</string>
+ <string name="trust_apps_info_protected">Les aplicacions protegides requeriran autentificació per poder ser obertes des del llançador</string>
+</resources>
diff --git a/res/values-cs/lineage_strings.xml b/res/values-cs/lineage_strings.xml
new file mode 100644
index 0000000..5e1a6f6
--- /dev/null
+++ b/res/values-cs/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Zobrazit aplikaci Google</string>
+ <string name="msg_minus_one_on_left">Při gestu tažení vpravo z hlavní domovské obrazovky</string>
+ <string name="msg_minus_one_on_right">Při gestu tažení vlevo z hlavní domovské obrazovky</string>
+ <string name="settings_edit_allow_title">Povolit úpravy</string>
+ <string name="settings_edit_allow_summary_on">Ikony a widgety lze přidat, odebrat a přesunout na domovské obrazovce</string>
+ <string name="settings_edit_allow_summary_off">Ikony a widgety nelze přidat, odebrat a přesunout na domovské obrazovce</string>
+ <string name="settings_edit_widgets_error">Nelze přidat widgety na domovskou obrazovku</string>
+ <string name="desktop_show_labels">Zobrazit popisky ikon na ploše</string>
+ <string name="drawer_show_labels">Zobrazit popisky ikon v menu aplikací</string>
+ <string name="show_labels_landscape">Zobrazit popisky ikon v režimu na šířku</string>
+ <string name="trust_apps_manager_name">Skryté &amp; Chráněné aplikace</string>
+ <string name="trust_apps_auth_manager">Odemkněte pro nastavení skrytých a chráněných aplikací</string>
+ <string name="trust_apps_auth_open_app">Ověření pro otevření %1$s</string>
+ <string name="trust_apps_loading">Načítání\u2026</string>
+ <string name="trust_apps_no_lock_error">Pro omezení přístupu aplikace prosím nastavte zabezpečenou zamykací obrazovku</string>
+ <string name="trust_apps_help">Nápověda</string>
+ <string name="trust_apps_info_hidden">Skryté aplikace a jejich widgety se nezobrazí v seznamu aplikací</string>
+ <string name="trust_apps_info_protected">Chráněné aplikace vyžadují pro spuštění ze spouštěče ověření</string>
+</resources>
diff --git a/res/values-cy/lineage_strings.xml b/res/values-cy/lineage_strings.xml
new file mode 100644
index 0000000..c2c817d
--- /dev/null
+++ b/res/values-cy/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Dangos ap Google</string>
+ <string name="msg_minus_one_on_left">Pan rwyt yn llusgo i\'r dde o\'r brif sgrin gartref</string>
+ <string name="msg_minus_one_on_right">Pan rwyt yn llusgo i\'r chwith o\'r brif sgrin gartref</string>
+ <string name="settings_edit_allow_title">Caniatáu golygu</string>
+ <string name="settings_edit_allow_summary_on">Gellir ychwanegu, tynnu a symud eiconau a theclynnau ar y sgrin gartref</string>
+ <string name="settings_edit_allow_summary_off">Ni ellir ychwanegu, tynnu na symud eiconau a theclynnau ar y sgrin gartref</string>
+ <string name="settings_edit_widgets_error">Nid yw\'n bosib ychwanegu teclynnau i\'r sgrin gartref</string>
+ <string name="desktop_show_labels">Dangos labeli eiconau ar y sgrin gartref</string>
+ <string name="drawer_show_labels">Dangos labeli eiconau yn y drôr</string>
+ <string name="show_labels_landscape">Dangos labeli eiconau ym modd tirwedd</string>
+ <string name="trust_apps_manager_name">Apiau Cudd ac wedi\'u Gwarchod</string>
+ <string name="trust_apps_auth_manager">Datglo i reoli apiau cudd ac apiau wedi\'u gwarchod</string>
+ <string name="trust_apps_auth_open_app">Dilysu i agor %1$s</string>
+ <string name="trust_apps_loading">Yn llwytho\u2026</string>
+ <string name="trust_apps_no_lock_error">Gosoda sgrin cloi ddiogel i rwystro mynediad at apiau</string>
+ <string name="trust_apps_help">Cymorth</string>
+ <string name="trust_apps_info_hidden">Mae apiau cudd a\'u teclynnau wedi\'u cuddio o\'r drôr</string>
+ <string name="trust_apps_info_protected">Mae ar apiau wedi\'u gwarchod angen dilysiad er mwyn eu hagor o\'r lansiwr</string>
+</resources>
diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml
new file mode 100644
index 0000000..b46fe87
--- /dev/null
+++ b/res/values-cy/strings.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Launcher3</string>
+ <string name="work_folder_name">Gwaith</string>
+ <string name="activity_not_found">Dyw\'r ap heb ei osod.</string>
+ <string name="activity_not_available">Ap ddim ar gael</string>
+ <string name="safemode_shortcut_error">Mae\'r ap a lawrlwythwyd wedi\'i analluogi ym Modd Diogel</string>
+ <string name="safemode_widget_error">Mae teclynnau wedi\'u hanalluogi ym Modd Diogel</string>
+ <string name="shortcut_not_available">Llwybr byr ddim ar gael</string>
+ <string name="home_screen">Sgrin gartref</string>
+ <string name="custom_actions">Gweithredoedd addasu</string>
+ <string name="long_press_widget_to_add">Cyffyrdda a dal dy fys ar declyn i\'w symud.</string>
+ <string name="long_accessible_way_to_add">Rho dariad dwbl a dal dy gyffwrdd i godi teclyn i fyny neu ddefnyddio gweithredoedd addasu.</string>
+ <string name="widget_dims_format">%1$d \u00d7 %2$d</string>
+ <string name="widget_accessible_dims_format">%1$d o led, %2$d o uchder</string>
+ <string name="add_item_request_drag_hint">Cyffyrdda a dal i\'w osod â llaw</string>
+ <string name="place_automatically">Ychwanegu\'n awtomatig</string>
+ <string name="all_apps_search_bar_hint">Chwilio apiau</string>
+ <string name="all_apps_loading_message">Yn llwytho apiau…</string>
+ <string name="all_apps_no_search_results">Ni chanfuwyd apiau yn cydweddu â \"<xliff:g id="query" example="Android">%1$s</xliff:g>\"</string>
+ <string name="all_apps_search_market_message">Chwilio am ragor o apiau</string>
+ <string name="label_application">Ap</string>
+ <string name="notifications_header">Hysbysiadau</string>
+ <string name="long_press_shortcut_to_add">Cyffyrdda a dal dy gyffwrdd i godi llwybr byr i fyny.</string>
+ <string name="long_accessible_way_to_add_shortcut">Rho dariad dwbl a dal dy gyffwrdd i godi llwybr byr i fyny neu ddefnyddio gweithredoedd addasu.</string>
+ <string name="out_of_space">Does dim rhagor o le ar y sgrin gartref hon.</string>
+ <string name="hotseat_out_of_space">Does dim rhagor o le yn y blwch ffefrynnau</string>
+ <string name="all_apps_button_label">Rhestr apiau</string>
+ <string name="all_apps_button_personal_label">Rhestr apiau personol</string>
+ <string name="all_apps_button_work_label">Rhestr apiau gwaith</string>
+ <string name="all_apps_home_button_label">Cartref</string>
+ <string name="remove_drop_target_label">Tynnu</string>
+ <string name="uninstall_drop_target_label">Dadosod</string>
+ <string name="app_info_drop_target_label">Gwybodaeth am yr ap</string>
+ <string name="install_drop_target_label">Gosod</string>
+ <string name="permlab_install_shortcut">gosod llwybrau byr</string>
+ <string name="permdesc_install_shortcut">Mae\'n caniatáu i ap ychwanegu llwybrau byr heb ymyrraeth defnyddiwr.</string>
+ <string name="permlab_read_settings">darllen llwybrau byr a gosodiadau Cartref</string>
+ <string name="permdesc_read_settings">Mae\'n caniatáu i\'r ap ddarllen gosodiadau a llwybrau byr yn Cartref.</string>
+ <string name="permlab_write_settings">ysgrifennu llwybrau byr a gosodiadau Cartref</string>
+ <string name="permdesc_write_settings">Mae\'n caniatáu i\'r ap newid y gosodiadau a llwybrau byr yn Cartref.</string>
+ <string name="msg_no_phone_permission">Dyw <xliff:g id="app_name" example="Launcher3">%1$s</xliff:g> ddim yn cael gwneud galwadau.</string>
+ <string name="gadget_error_text">Problem wrth lwytho\'r teclyn</string>
+ <string name="gadget_setup_text">Gosod</string>
+ <string name="uninstall_system_app_text">Mae hwn yn ap system a ni ellir ei ddadosod.</string>
+ <string name="folder_hint_text">Ffolder Dienw</string>
+ <string name="disabled_app_label">Analluogwyd <xliff:g id="app_name" example="Messenger">%1$s</xliff:g></string>
+ <plurals name="dotted_app_label">
+ <item quantity="zero">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiadau</item>
+ <item quantity="one">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiad</item>
+ <item quantity="two">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiad</item>
+ <item quantity="few">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiad</item>
+ <item quantity="many">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiad</item>
+ <item quantity="other">Mae gan <xliff:g id="app_name" example="Messenger">%1$s</xliff:g> <xliff:g id="notification_count" example="3">%2$d</xliff:g> hysbysiad</item>
+ </plurals>
+ <string name="default_scroll_format">Tudalen %1$d o %2$d</string>
+ <string name="workspace_scroll_format">Sgrin gartref %1$d o %2$d</string>
+ <string name="workspace_new_page">Tudalen sgrin gartref newydd</string>
+ <string name="folder_opened">Agorwyd ffolder, <xliff:g id="width" example="5">%1$d</xliff:g> wrth <xliff:g id="height" example="3">%2$d</xliff:g></string>
+ <string name="folder_tap_to_close">Tapia i gau\'r ffolder</string>
+ <string name="folder_tap_to_rename">Tapia i gadw ailenwi</string>
+ <string name="folder_closed">Caewyd y ffolder</string>
+ <string name="folder_renamed">Ailenwyd y ffolder i <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="folder_name_format">Ffolder: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="widget_button_text">Teclynnau</string>
+ <string name="wallpaper_button_text">Papurau wal</string>
+ <string name="styles_wallpaper_button_text">Arddulliau a phapurau wal</string>
+ <string name="settings_button_text">Gosodiadau cartref</string>
+ <string name="msg_disabled_by_admin">Analluogwyd gan dy weinyddwr</string>
+ <string name="allow_rotation_title">Caniatáu troi\'r sgrin gartref</string>
+ <string name="allow_rotation_desc">Pan gaiff y ffôn ei throi</string>
+ <string name="notification_dots_title">Dotiau hysbysiadau</string>
+ <string name="notification_dots_desc_on">Ymlaen</string>
+ <string name="notification_dots_desc_off">I ffwrdd</string>
+ <string name="title_missing_notification_access">Angen mynediad at hysbysiadau</string>
+ <string name="msg_missing_notification_access">I ddangos Dotiau Hysbysiadau, tro hysbysiadau apiau ymlaen ar gyfer <xliff:g id="name" example="My App">%1$s</xliff:g></string>
+ <string name="title_change_settings">Newid gosodiadau</string>
+ <string name="notification_dots_service_title">Dangos dotiau hysbysiadau</string>
+ <string name="auto_add_shortcuts_label">Ychwanegu eicon i\'r sgrin gartref</string>
+ <string name="auto_add_shortcuts_description">Ar gyfer apiau newydd</string>
+ <string name="package_state_unknown">Anhysybys</string>
+ <string name="abandoned_clean_this">Tynnu</string>
+ <string name="abandoned_search">Chwilio</string>
+ <string name="abandoned_promises_title">Dyw\'r ap hwn heb ei osod</string>
+ <string name="abandoned_promise_explanation">Dyw\'r ap ar gyfer yr eicon hwn heb ei osod.
+Mae\'n bosib i ti ei dynnu neu i chwilio am a gosod yr ap dy hun. </string>
+ <string name="app_downloading_title"><xliff:g id="name" example="Messenger">%1$s</xliff:g> yn lawrlwytho, <xliff:g id="progress" example="30%">%2$s</xliff:g> yn gyflawn</string>
+ <string name="app_waiting_download_title"><xliff:g id="name" example="Messenger">%1$s</xliff:g> yn disgwyl i\'w osod</string>
+ <string name="widgets_bottom_sheet_title">Teclynnau <xliff:g id="name" example="Messenger">%1$s</xliff:g></string>
+ <string name="widgets_list">Rhestr teclynnau</string>
+ <string name="widgets_list_closed">Rhestr teclynnau wedi\'i chau</string>
+ <string name="action_add_to_workspace">Ychwanegu i\'r sgrin Gartref</string>
+ <string name="action_move_here">Symud yr eitem yma</string>
+ <string name="item_added_to_workspace">Ychwanegwyd yr item i\'r sgrin gartref</string>
+ <string name="item_removed">Tynnwyd yr eitem</string>
+ <string name="undo">Dadwneud</string>
+ <string name="action_move">Symud eitem</string>
+ <string name="move_to_empty_cell">Symud i res <xliff:g id="number" example="1">%1$s</xliff:g>, colofn <xliff:g id="number" example="1">%2$s</xliff:g></string>
+ <string name="move_to_position">Symud i leoliad <xliff:g id="number" example="1">%1$s</xliff:g></string>
+ <string name="move_to_hotseat_position">Symud i leoliad ffefrynnau <xliff:g id="number" example="1">%1$s</xliff:g></string>
+ <string name="item_moved">Symudwyd yr eitem</string>
+ <string name="add_to_folder">Ychwanegu i\'r ffolder: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="add_to_folder_with_app">Ychwanegu i ffolder gyda <xliff:g id="name" example="Messenger">%1$s</xliff:g></string>
+ <string name="added_to_folder">Ychwanegwyd yr eitem i\'r ffolder</string>
+ <string name="create_folder_with">Creu ffolder gyda: <xliff:g id="name" example="Game">%1$s</xliff:g></string>
+ <string name="folder_created">Crëwyd y ffolder</string>
+ <string name="action_move_to_workspace">Symud i\'r sgrin Gartref</string>
+ <string name="action_resize">Ailfeintio</string>
+ <string name="action_increase_width">Cynyddu\'r lled</string>
+ <string name="action_increase_height">Cynyddu\'r taldra</string>
+ <string name="action_decrease_width">Lleihau\'r lled</string>
+ <string name="action_decrease_height">Lleihau\'r taldra</string>
+ <string name="widget_resized">Wedi newid maint y teclyn i <xliff:g id="number" example="2">%1$s</xliff:g> o led a <xliff:g id="number" example="1">%2$s</xliff:g> o daldra</string>
+ <string name="action_deep_shortcut">Llwybrau Byr</string>
+ <string name="shortcuts_menu_with_notifications_description">Llwybrau byr a hysbysiadau </string>
+ <string name="action_dismiss_notification">Diystyru</string>
+ <string name="notification_dismissed">Cafodd yr hysbysiad ei ddiystyru</string>
+ <string name="all_apps_personal_tab">Personol</string>
+ <string name="all_apps_work_tab">Gwaith</string>
+ <string name="work_profile_toggle_label">Proffil gwaith</string>
+ <string name="bottom_work_tab_user_education_title">Dangosir apiau gwaith yma</string>
+ <string name="bottom_work_tab_user_education_body">Mae gan bob ap gwaith fathodyn ac fe gedwir yn ddiogel gan dy sefydliad. Gellir symud apiau i dy sgrin Gartref i gael atyn nhw\'n haws.</string>
+ <string name="work_mode_on_label">Rheolwyd gan dy sefydliad</string>
+ <string name="work_mode_off_label">Mae hysbysiadau ac apiau i ffwrdd</string>
+ <string name="bottom_work_tab_user_education_close_button">Cau</string>
+ <string name="bottom_work_tab_user_education_closed">Wedi cau</string>
+ <string name="remote_action_failed">Methiant: <xliff:g id="what" example="Pause">%1$s</xliff:g></string>
+</resources>
diff --git a/res/values-da/lineage_strings.xml b/res/values-da/lineage_strings.xml
new file mode 100644
index 0000000..2340b5a
--- /dev/null
+++ b/res/values-da/lineage_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="settings_edit_widgets_error">Det er ikke muligt at tilføje widgets til hjemmeskærmen</string>
+ <string name="trust_apps_manager_name">Skjulte &amp; Beskyttede apps</string>
+ <string name="trust_apps_auth_manager">Oplås for at håndtere de skjulte og beskyttede apps</string>
+ <string name="trust_apps_auth_open_app">Godkend for at åbne %1$s</string>
+ <string name="trust_apps_info_protected">Beskyttede apps kræver godkendelse, for at blive åbnet fra starteren</string>
+</resources>
diff --git a/res/values-de/lineage_strings.xml b/res/values-de/lineage_strings.xml
new file mode 100644
index 0000000..e5baa3f
--- /dev/null
+++ b/res/values-de/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google App anzeigen</string>
+ <string name="msg_minus_one_on_left">Wenn Sie vom Hauptstartbildschirm aus nach rechts wischen</string>
+ <string name="msg_minus_one_on_right">Wenn Sie vom Hauptstartbildschirm aus nach links wischen</string>
+ <string name="settings_edit_allow_title">Bearbeiten zulassen</string>
+ <string name="settings_edit_allow_summary_on">Symbole und Widgets können auf dem Startbildschirm hinzugefügt, entfernt und verschoben werden</string>
+ <string name="settings_edit_allow_summary_off">Symbole und Widgets können nicht auf dem Startbildschirm hinzugefügt, entfernt und verschoben werden</string>
+ <string name="settings_edit_widgets_error">Es ist nicht möglich, Widgets zum Startbildschirm hinzuzufügen</string>
+ <string name="desktop_show_labels">Symbolbeschriftungen auf dem Startbildschirm anzeigen</string>
+ <string name="drawer_show_labels">Symbolbeschriftungen in der App-Übersicht anzeigen</string>
+ <string name="show_labels_landscape">Symbolbeschriftungen im Querformat anzeigen</string>
+ <string name="trust_apps_manager_name">Versteckte &amp; geschützte Apps</string>
+ <string name="trust_apps_auth_manager">Entsperren, um die versteckten und geschützten Apps zu verwalten</string>
+ <string name="trust_apps_auth_open_app">Authentifizieren, um %1$s zu öffnen</string>
+ <string name="trust_apps_loading">Wird geladen\u2026</string>
+ <string name="trust_apps_no_lock_error">Bitte richten Sie einen sicheren Sperrbildschirm ein, um den Zugriff auf die Apps zu beschränken</string>
+ <string name="trust_apps_help">Hilfe</string>
+ <string name="trust_apps_info_hidden">Versteckte Apps und ihre Widgets werden in der App-Übersicht nicht angezeigt</string>
+ <string name="trust_apps_info_protected">Geschützte Apps erfordern eine Authentifizierung, um gestartet werden zu können</string>
+</resources>
diff --git a/res/values-el/lineage_strings.xml b/res/values-el/lineage_strings.xml
new file mode 100644
index 0000000..a0ded3c
--- /dev/null
+++ b/res/values-el/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Εμφάνιση εφαρμογής Google</string>
+ <string name="msg_minus_one_on_left">Όταν σύρετε προς τα δεξιά από την κύρια αρχική οθόνη</string>
+ <string name="msg_minus_one_on_right">Όταν σύρετε προς τα αριστερά από την κύρια αρχική οθόνη</string>
+ <string name="settings_edit_allow_title">Να επιτρέπεται η επεξεργασία</string>
+ <string name="settings_edit_allow_summary_on">Εικονίδια και widget μπορούν να προστεθούν, να αφαιρεθούν και να μετακινηθούν στην αρχική οθόνη</string>
+ <string name="settings_edit_allow_summary_off">Εικονίδια και widget δεν μπορούν να προστεθούν, να αφαιρεθούν και να μετακινηθούν στην αρχική οθόνη</string>
+ <string name="settings_edit_widgets_error">Δεν είναι δυνατή η προσθήκη widget στην αρχική οθόνη</string>
+ <string name="desktop_show_labels">Εμφάνιση ετικετών εικονιδίων στην επιφάνεια</string>
+ <string name="drawer_show_labels">Εμφάνιση ετικετών εικονιδίων στο συρτάρι</string>
+ <string name="show_labels_landscape">Εμφάνιση ετικετών εικονιδίων σε λειτουργία τοπίου</string>
+ <string name="trust_apps_manager_name">Κρυφές &amp; προστατευόμενες εφαρμογές</string>
+ <string name="trust_apps_auth_manager">Ξεκλειδώστε για να διαχειριστείτε τις κρυφές και προστατευόμενες εφαρμογές</string>
+ <string name="trust_apps_auth_open_app">Απαιτείται έλεγχος ταυτότητας για να ανοίξετε το \"%1$s\"</string>
+ <string name="trust_apps_loading">Φόρτωση\u2026</string>
+ <string name="trust_apps_no_lock_error">Μπορείτε να ορίσετε ένα ασφαλές κλείδωμα οθόνης για να περιορίσετε την πρόσβαση στις εφαρμογές</string>
+ <string name="trust_apps_help">Βοήθεια</string>
+ <string name="trust_apps_info_hidden">Οι κρυφές εφαρμογές και widgets τους αποκρύπτονται από το συρτάρι</string>
+ <string name="trust_apps_info_protected">Οι προστατευόμενες εφαρμογές απαιτούν έλεγχο ταυτότητας για να ανοιχτούν από την αρχική σελίδα η το συρτάρι</string>
+</resources>
diff --git a/res/values-en-rAU/lineage_strings.xml b/res/values-en-rAU/lineage_strings.xml
new file mode 100644
index 0000000..fe1399c
--- /dev/null
+++ b/res/values-en-rAU/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Show Google app</string>
+ <string name="msg_minus_one_on_left">When you swipe right from main home screen</string>
+ <string name="msg_minus_one_on_right">When you swipe left from main home screen</string>
+ <string name="settings_edit_allow_title">Allow edit</string>
+ <string name="settings_edit_allow_summary_on">Icons and widgets can be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_allow_summary_off">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_widgets_error">It\'s not possible to add widgets to the home screen</string>
+ <string name="desktop_show_labels">Show icon labels on desktop</string>
+ <string name="drawer_show_labels">Show icon labels in drawer</string>
+ <string name="show_labels_landscape">Show icon labels in landscape mode</string>
+ <string name="trust_apps_manager_name">Hidden &amp; Protected apps</string>
+ <string name="trust_apps_auth_manager">Unlock to manage the hidden and protected apps</string>
+ <string name="trust_apps_auth_open_app">Authenticate to open %1$s</string>
+ <string name="trust_apps_loading">Loading\u2026</string>
+ <string name="trust_apps_no_lock_error">Please set up a secure lock screen to restrict app access</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Hidden apps and their widgets are hidden from the drawer</string>
+ <string name="trust_apps_info_protected">Protected apps require authentication to be opened from the launcher</string>
+</resources>
diff --git a/res/values-en-rCA/lineage_strings.xml b/res/values-en-rCA/lineage_strings.xml
new file mode 100644
index 0000000..fe1399c
--- /dev/null
+++ b/res/values-en-rCA/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Show Google app</string>
+ <string name="msg_minus_one_on_left">When you swipe right from main home screen</string>
+ <string name="msg_minus_one_on_right">When you swipe left from main home screen</string>
+ <string name="settings_edit_allow_title">Allow edit</string>
+ <string name="settings_edit_allow_summary_on">Icons and widgets can be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_allow_summary_off">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_widgets_error">It\'s not possible to add widgets to the home screen</string>
+ <string name="desktop_show_labels">Show icon labels on desktop</string>
+ <string name="drawer_show_labels">Show icon labels in drawer</string>
+ <string name="show_labels_landscape">Show icon labels in landscape mode</string>
+ <string name="trust_apps_manager_name">Hidden &amp; Protected apps</string>
+ <string name="trust_apps_auth_manager">Unlock to manage the hidden and protected apps</string>
+ <string name="trust_apps_auth_open_app">Authenticate to open %1$s</string>
+ <string name="trust_apps_loading">Loading\u2026</string>
+ <string name="trust_apps_no_lock_error">Please set up a secure lock screen to restrict app access</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Hidden apps and their widgets are hidden from the drawer</string>
+ <string name="trust_apps_info_protected">Protected apps require authentication to be opened from the launcher</string>
+</resources>
diff --git a/res/values-en-rGB/lineage_strings.xml b/res/values-en-rGB/lineage_strings.xml
new file mode 100644
index 0000000..fe1399c
--- /dev/null
+++ b/res/values-en-rGB/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Show Google app</string>
+ <string name="msg_minus_one_on_left">When you swipe right from main home screen</string>
+ <string name="msg_minus_one_on_right">When you swipe left from main home screen</string>
+ <string name="settings_edit_allow_title">Allow edit</string>
+ <string name="settings_edit_allow_summary_on">Icons and widgets can be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_allow_summary_off">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_widgets_error">It\'s not possible to add widgets to the home screen</string>
+ <string name="desktop_show_labels">Show icon labels on desktop</string>
+ <string name="drawer_show_labels">Show icon labels in drawer</string>
+ <string name="show_labels_landscape">Show icon labels in landscape mode</string>
+ <string name="trust_apps_manager_name">Hidden &amp; Protected apps</string>
+ <string name="trust_apps_auth_manager">Unlock to manage the hidden and protected apps</string>
+ <string name="trust_apps_auth_open_app">Authenticate to open %1$s</string>
+ <string name="trust_apps_loading">Loading\u2026</string>
+ <string name="trust_apps_no_lock_error">Please set up a secure lock screen to restrict app access</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Hidden apps and their widgets are hidden from the drawer</string>
+ <string name="trust_apps_info_protected">Protected apps require authentication to be opened from the launcher</string>
+</resources>
diff --git a/res/values-en-rIN/lineage_strings.xml b/res/values-en-rIN/lineage_strings.xml
new file mode 100644
index 0000000..fe1399c
--- /dev/null
+++ b/res/values-en-rIN/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Show Google app</string>
+ <string name="msg_minus_one_on_left">When you swipe right from main home screen</string>
+ <string name="msg_minus_one_on_right">When you swipe left from main home screen</string>
+ <string name="settings_edit_allow_title">Allow edit</string>
+ <string name="settings_edit_allow_summary_on">Icons and widgets can be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_allow_summary_off">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_widgets_error">It\'s not possible to add widgets to the home screen</string>
+ <string name="desktop_show_labels">Show icon labels on desktop</string>
+ <string name="drawer_show_labels">Show icon labels in drawer</string>
+ <string name="show_labels_landscape">Show icon labels in landscape mode</string>
+ <string name="trust_apps_manager_name">Hidden &amp; Protected apps</string>
+ <string name="trust_apps_auth_manager">Unlock to manage the hidden and protected apps</string>
+ <string name="trust_apps_auth_open_app">Authenticate to open %1$s</string>
+ <string name="trust_apps_loading">Loading\u2026</string>
+ <string name="trust_apps_no_lock_error">Please set up a secure lock screen to restrict app access</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Hidden apps and their widgets are hidden from the drawer</string>
+ <string name="trust_apps_info_protected">Protected apps require authentication to be opened from the launcher</string>
+</resources>
diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml
new file mode 100644
index 0000000..ef0652d
--- /dev/null
+++ b/res/values-eo/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="remove_drop_target_label">Forigi</string>
+ <string name="uninstall_drop_target_label">Malinstali</string>
+ <string name="abandoned_clean_this">Forigi</string>
+ <string name="abandoned_search">Serĉi</string>
+</resources>
diff --git a/res/values-es-rMX/lineage_strings.xml b/res/values-es-rMX/lineage_strings.xml
new file mode 100644
index 0000000..bec0586
--- /dev/null
+++ b/res/values-es-rMX/lineage_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="msg_minus_one_on_left">Cuando deslizas a la derecha desde la pantalla de inicio</string>
+ <string name="msg_minus_one_on_right">Cuando deslizas a la izquierda desde la pantalla de inicio</string>
+ <string name="trust_apps_manager_name">Aplicaciones ocultas y protegidas</string>
+ <string name="trust_apps_auth_manager">Desbloquear para administrar las aplicaciones ocultas y protegidas</string>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+ <string name="trust_apps_loading">Cargando\u2026</string>
+ <string name="trust_apps_no_lock_error">Por favor, configura una pantalla de bloqueo segura para restringir el acceso a la aplicación</string>
+ <string name="trust_apps_help">Ayuda</string>
+ <string name="trust_apps_info_hidden">Las aplicaciones ocultas y sus widgets se ocultan del cajón</string>
+ <string name="trust_apps_info_protected">Las aplicaciones protegidas requieren autenticación para abrir desde el launcher</string>
+</resources>
diff --git a/res/values-es-rUS/lineage_strings.xml b/res/values-es-rUS/lineage_strings.xml
new file mode 100644
index 0000000..8ded790
--- /dev/null
+++ b/res/values-es-rUS/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Mostrar aplicación de Google</string>
+ <string name="msg_minus_one_on_left">Al deslizar a la derecha desde la pantalla principal</string>
+ <string name="msg_minus_one_on_right">Al deslizar a la izquierda desde la pantalla principal</string>
+ <string name="settings_edit_allow_title">Permitir la edición</string>
+ <string name="settings_edit_allow_summary_on">Los iconos y widgets se pueden añadir, quitar y mover en la pantalla de inicio</string>
+ <string name="settings_edit_allow_summary_off">Los iconos y widgets no se pueden añadir, quitar o mover en la pantalla de inicio</string>
+ <string name="settings_edit_widgets_error">Imposible añadir widgets a la pantalla de inicio</string>
+ <string name="desktop_show_labels">Mostrar etiquetas de iconos en el escritorio</string>
+ <string name="drawer_show_labels">Mostrar etiquetas de iconos en el cajón</string>
+ <string name="trust_apps_manager_name">Aplicaciones ocultas y protegidas</string>
+ <string name="trust_apps_auth_manager">Desbloquear para administrar las aplicaciones ocultas y protegidas</string>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+ <string name="trust_apps_loading">Cargando\u2026</string>
+ <string name="trust_apps_no_lock_error">Por favor, configura una pantalla de bloqueo segura para restringir el acceso a la aplicación</string>
+ <string name="trust_apps_help">Ayuda</string>
+ <string name="trust_apps_info_hidden">Las aplicaciones ocultas y sus widgets se ocultan del cajón</string>
+ <string name="trust_apps_info_protected">Las aplicaciones protegidas requieren que la autenticación se abra desde el lanzador</string>
+</resources>
diff --git a/res/values-es/lineage_strings.xml b/res/values-es/lineage_strings.xml
new file mode 100644
index 0000000..4497d87
--- /dev/null
+++ b/res/values-es/lineage_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="settings_edit_allow_title">Permitir edición</string>
+ <string name="settings_edit_allow_summary_on">Los iconos y widgets se pueden añadir, eliminar y mover en la pantalla principal</string>
+ <string name="settings_edit_allow_summary_off">Los iconos y widgets no se pueden añadir, eliminar y mover en la pantalla principal</string>
+ <string name="settings_edit_widgets_error">Imposible añadir widgets a la pantalla de inicio</string>
+ <string name="desktop_show_labels">Mostrar etiquetas de iconos en el escritorio</string>
+ <string name="drawer_show_labels">Mostrar etiquetas de iconos en el cajón</string>
+</resources>
diff --git a/res/values-et/lineage_strings.xml b/res/values-et/lineage_strings.xml
new file mode 100644
index 0000000..74f8462
--- /dev/null
+++ b/res/values-et/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Kuva Google\'i rakendus</string>
+ <string name="msg_minus_one_on_left">Kui viipad põhiliselt avaekraanilt paremale</string>
+ <string name="msg_minus_one_on_right">Kui viipad põhiliselt avaekraanilt vasakule</string>
+ <string name="settings_edit_allow_title">Luba redigeerimine</string>
+ <string name="settings_edit_allow_summary_on">Avaekraani ikoone ja vidinaid saab lisada, eemaldada ja liigutada</string>
+ <string name="settings_edit_allow_summary_off">Avaekraani ikoone ja vidinaid ei saa lisada, eemaldada ega liigutada</string>
+ <string name="settings_edit_widgets_error">Vidinate lisamine avaekraanile pole võimalik</string>
+ <string name="desktop_show_labels">Näita töölaual ikoonisilte</string>
+ <string name="drawer_show_labels">Näita sahtlis ikoonisilte</string>
+ <string name="show_labels_landscape">Kuva ikoonisilte rõhtasendis</string>
+ <string name="trust_apps_manager_name">Peidetud ja kaitstud rakendused</string>
+ <string name="trust_apps_auth_manager">Lukusta lahti peidetud ja kaitstud rakenduste haldamiseks</string>
+ <string name="trust_apps_auth_open_app">Autendi %1$s avamiseks</string>
+ <string name="trust_apps_loading">Laadimine\u2026</string>
+ <string name="trust_apps_no_lock_error">Palun seadista turvaline lukustuskuva, et piirata rakendustele juurdepääsu</string>
+ <string name="trust_apps_help">Abi</string>
+ <string name="trust_apps_info_hidden">Peidetud rakendused ja nende vidinad on sahtlist peidetud</string>
+ <string name="trust_apps_info_protected">Kaitstud rakendused vajavad käivitajast avamiseks autentimist</string>
+</resources>
diff --git a/res/values-eu/lineage_strings.xml b/res/values-eu/lineage_strings.xml
new file mode 100644
index 0000000..e19c9c0
--- /dev/null
+++ b/res/values-eu/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Erakutsi Google aplikazioa</string>
+ <string name="msg_minus_one_on_left">Hasiera pantailatik hatza eskuinera pasatzean</string>
+ <string name="msg_minus_one_on_right">Hasiera pantailatik hatza ezkerrera pasatzean</string>
+ <string name="settings_edit_allow_title">Baimendu editatzea</string>
+ <string name="settings_edit_allow_summary_on">Ikonoak eta trepetak hasieran pantailan gehitu, kendu daitezke eta lekuz aldatu daitezke</string>
+ <string name="settings_edit_allow_summary_off">Ezin daitezke ikonoak eta trepetak hasieran pantailan gehitu, kendu edo lekuz aldatu</string>
+ <string name="settings_edit_widgets_error">Ezin dira trepetak hasiera pantailara gehitu</string>
+ <string name="desktop_show_labels">Erakutsi ikonoen etiketa mahaigainean</string>
+ <string name="drawer_show_labels">Erakutsi ikonoen etiketak tiraderan</string>
+ <string name="trust_apps_manager_name">Ezkutatutako eta babestutako aplikazioak</string>
+ <string name="trust_apps_auth_manager">Desblokeatu ezkutatutako eta babestutako aplikazioak kudeatzeko</string>
+ <string name="trust_apps_auth_open_app">Identifikatu %1$s irekitzeko</string>
+ <string name="trust_apps_loading">Kargatzen\u2026</string>
+ <string name="trust_apps_no_lock_error">Ezarri pantaila-blokeo segurua aplikaziora sarbidea murrizteko</string>
+ <string name="trust_apps_help">Laguntza</string>
+ <string name="trust_apps_info_hidden">Ezkutatutako aplikazioak eta bere trepetak ez dira tiraderan ikusten</string>
+ <string name="trust_apps_info_protected">Babestutako aplikazioek autentifikazioa eskatzen dute abiarazletik irekitzeko</string>
+</resources>
diff --git a/res/values-fi/lineage_strings.xml b/res/values-fi/lineage_strings.xml
new file mode 100644
index 0000000..4a0ce70
--- /dev/null
+++ b/res/values-fi/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Näytä Google-sovellus</string>
+ <string name="msg_minus_one_on_left">Kun pyyhkäiset oikealle pääkotinäytöltä</string>
+ <string name="msg_minus_one_on_right">Kun pyyhkäiset vasemmalle pääkotinäytöltä</string>
+ <string name="settings_edit_allow_title">Salli muokkaaminen</string>
+ <string name="settings_edit_allow_summary_on">Kuvakkeet ja widgetit voi lisätä, poistaa tai siirtää kotinäytöllä</string>
+ <string name="settings_edit_allow_summary_off">Kuvakkeita ja widgettejä ei voi lisätä, poistaa tai siirtää kotinäytöllä</string>
+ <string name="settings_edit_widgets_error">Kotinäytölle ei ole mahdollista lisätä widgettejä</string>
+ <string name="desktop_show_labels">Näytä kuvakkeiden tekstit työpöydällä</string>
+ <string name="drawer_show_labels">Näytä kuvakkeiden tekstit valikossa</string>
+ <string name="trust_apps_manager_name">Piilotetut &amp; suojatut sovellukset</string>
+ <string name="trust_apps_auth_manager">Avaa hallitaksesi piilotettuja ja suojattuja sovelluksia</string>
+ <string name="trust_apps_auth_open_app">Todenna avataksesi %1$s</string>
+ <string name="trust_apps_loading">Ladataan\u2026</string>
+ <string name="trust_apps_no_lock_error">Aseta turvallinen näytön lukitus rajataksesi pääsyä sovelluksiin</string>
+ <string name="trust_apps_help">Ohje</string>
+ <string name="trust_apps_info_hidden">Piilotetut sovellukset ja niiden widgetit piilotetaan valikosta</string>
+ <string name="trust_apps_info_protected">Suojatut sovellukset tarvitsevat todennuksen jotta ne voidaan avata</string>
+</resources>
diff --git a/res/values-fr/lineage_strings.xml b/res/values-fr/lineage_strings.xml
new file mode 100644
index 0000000..83e2c06
--- /dev/null
+++ b/res/values-fr/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Afficher l\'application Google</string>
+ <string name="msg_minus_one_on_left">Lors d\'un balayage vers la droite sur l\'écran d\'accueil principal</string>
+ <string name="msg_minus_one_on_right">Lors d\'un balayage vers la gauche sur l\'écran d\'accueil principal</string>
+ <string name="settings_edit_allow_title">Autoriser les modifications</string>
+ <string name="settings_edit_allow_summary_on">Autoriser l\'ajout, la suppression ou le déplacement d\'icônes et de widgets sur l\'écran d\'accueil</string>
+ <string name="settings_edit_allow_summary_off">Empêcher l\'ajout, la suppression ou le déplacement d\'icônes et de widgets sur l\'écran d\'accueil</string>
+ <string name="settings_edit_widgets_error">Impossible d\'ajouter des widgets sur l\'écran d\'accueil</string>
+ <string name="desktop_show_labels">Afficher le libellé des icônes sur le bureau</string>
+ <string name="drawer_show_labels">Afficher le libellé des icônes dans le tiroir</string>
+ <string name="trust_apps_manager_name">Applications cachées &amp; protégées</string>
+ <string name="trust_apps_auth_manager">Déverrouiller pour gérer les applications cachées et protégées</string>
+ <string name="trust_apps_auth_open_app">S’authentifier pour ouvrir %1$s</string>
+ <string name="trust_apps_loading">Chargement\u2026</string>
+ <string name="trust_apps_no_lock_error">Veuillez configurer un écran de verrouillage pour restreindre l\'accès aux applications</string>
+ <string name="trust_apps_help">Aide</string>
+ <string name="trust_apps_info_hidden">Les applications cachées et leurs widgets sont cachés du tiroir</string>
+ <string name="trust_apps_info_protected">Les applications protégées nécessitent une authentification pour être ouvertes depuis le lanceur</string>
+</resources>
diff --git a/res/values-fy-rNL/lineage_strings.xml b/res/values-fy-rNL/lineage_strings.xml
new file mode 100644
index 0000000..084dc9b
--- /dev/null
+++ b/res/values-fy-rNL/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google-app toane</string>
+ <string name="msg_minus_one_on_left">Wannear\'t jo fan it startskerm út nei rjochts feie</string>
+ <string name="msg_minus_one_on_right">Wannear\'t jo fan it startskerm út nei links feie</string>
+ <string name="settings_edit_allow_title">Bewurkjen tastean</string>
+ <string name="settings_edit_allow_summary_on">Piktogrammen en widgets kinne tafoege, fuortsmiten en ferpleatst wurde op it startskerm</string>
+ <string name="settings_edit_allow_summary_off">Piktogrammen en widgets kinne net tafoege, fuortsmiten en ferpleatst wurde op it startskerm</string>
+ <string name="settings_edit_widgets_error">It is net mooglik om widgets ta te foegjen oan it startskerm</string>
+ <string name="desktop_show_labels">Piktogramlabels op it startskerm toane</string>
+ <string name="drawer_show_labels">Piktogramlabels yn it app-oersjoch toane</string>
+ <string name="show_labels_landscape">Piktogramlabels yn modus lizzend toane</string>
+ <string name="trust_apps_manager_name">Ferstoppe &amp; Befeilige apps</string>
+ <string name="trust_apps_auth_manager">Untskoattelje om de ferstoppe en beskerme apps te behearen</string>
+ <string name="trust_apps_auth_open_app">Ferifiearje om %1$s te iepenjen</string>
+ <string name="trust_apps_loading">Lade\u2026</string>
+ <string name="trust_apps_no_lock_error">Stel in feilich beskoattelingsskerm yn om de tagong ta de apps te beheinen</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Ferstoppe apps en harren widgets wurde net toand yn it app-oersjoch</string>
+ <string name="trust_apps_info_protected">Beskerme apps fereaskje autentikaasje om te starten fan de launcher út</string>
+</resources>
diff --git a/res/values-gd/lineage_strings.xml b/res/values-gd/lineage_strings.xml
new file mode 100644
index 0000000..848fa7d
--- /dev/null
+++ b/res/values-gd/lineage_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Seall aplacaid Google</string>
+ <string name="settings_edit_allow_title">Ceadaich deasachadh</string>
+ <string name="settings_edit_allow_summary_on">Gabhaidh ìomhaigheagan is widgets a deasachadh, a thoirt air falbh ’s a ghluasad air an sgrìn dhachaigh</string>
+ <string name="settings_edit_allow_summary_off">Cha ghabh ìomhaigheagan is widgets a deasachadh, a thoirt air falbh ’s a ghluasad air an sgrìn dhachaigh</string>
+ <string name="settings_edit_widgets_error">Cha ghabh widgets a chur ris an sgrìn dhachaigh</string>
+ <string name="desktop_show_labels">Seall leubailean nan ìomhaigheagan air an deasg</string>
+ <string name="drawer_show_labels">Seall leubailean nan ìomhaigheagan san drathair</string>
+ <string name="trust_apps_help">Cobhair</string>
+</resources>
diff --git a/res/values-gd/strings.xml b/res/values-gd/strings.xml
new file mode 100644
index 0000000..008b9cb
--- /dev/null
+++ b/res/values-gd/strings.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="work_folder_name">Obair</string>
+ <string name="long_press_shortcut_to_add">Suath ri ath-ghoirid ⁊ cùm sìos i airson a togail.</string>
+ <string name="long_accessible_way_to_add_shortcut">Thoir gnogag dhùbailte air ath-ghoirid ⁊ cùm sìos i airson a togail no gnìomhan gnàthaichte a ghabhail.</string>
+ <string name="all_apps_button_personal_label">Liosta nan aplacaidean pearsanta</string>
+ <string name="all_apps_button_work_label">Liosta de dh’aplacaidean na h-obrach</string>
+ <string name="uninstall_drop_target_label">Dì-stàlaich</string>
+ <string name="install_drop_target_label">Stàlaich</string>
+ <string name="gadget_setup_text">Suidheachadh</string>
+ <plurals name="dotted_app_label">
+ <item quantity="one"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, has <xliff:g id="notification_count" example="1">%2$d</xliff:g> bhrath</item>
+ <item quantity="two"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, has <xliff:g id="notification_count" example="1">%2$d</xliff:g> bhrath</item>
+ <item quantity="few"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, has <xliff:g id="notification_count" example="1">%2$d</xliff:g> brathan</item>
+ <item quantity="other"><xliff:g id="app_name" example="Messenger">%1$s</xliff:g>, has <xliff:g id="notification_count" example="1">%2$d</xliff:g> brath</item>
+ </plurals>
+ <string name="wallpaper_button_text">Pàipearan-balla</string>
+ <string name="notification_dots_service_title">Seall puingean nam brathan</string>
+ <string name="abandoned_search">Lorg</string>
+ <string name="widgets_list">Liosta nan Widgets</string>
+ <string name="widgets_list_closed">Chaidh liosta nan Widgets a dhùnadh</string>
+ <string name="action_resize">Ath-mheudaich</string>
+ <string name="shortcuts_menu_with_notifications_description">Ath-ghoiridean is brathan
+ </string>
+ <string name="all_apps_personal_tab">Pearsanta</string>
+ <string name="all_apps_work_tab">Obair</string>
+ <string name="work_profile_toggle_label">Pròifil na h-obrach</string>
+ <string name="bottom_work_tab_user_education_title">Lorg aplacaidean na h-obrach an-seo</string>
+ <string name="bottom_work_tab_user_education_body">Tha bràiste ris gach aplacaid na h-obrach agus thèid a cumail tèarainte leis a’ bhuidheann agad. Gluais aplacaidean dhan sgrìn dachaigh agad gus an inntrigeadh nas fhasa.</string>
+ <string name="work_mode_on_label">Fo stiùireadh a’ bhuidhinn agad</string>
+ <string name="work_mode_off_label">Tha na brathan is aplacaidean dheth</string>
+ <string name="bottom_work_tab_user_education_close_button">Dùin</string>
+ <string name="bottom_work_tab_user_education_closed">Dùinte</string>
+</resources>
diff --git a/res/values-gl/lineage_strings.xml b/res/values-gl/lineage_strings.xml
new file mode 100644
index 0000000..f6f2aa9
--- /dev/null
+++ b/res/values-gl/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Amosar a aplicación Google Now</string>
+ <string name="msg_minus_one_on_left">Cando deslizas cara á dereita dende a pantalla de inicio</string>
+ <string name="msg_minus_one_on_right">Cando esvaras cara á esquerda dende a pantalla de inicio</string>
+ <string name="settings_edit_allow_title">Permitir editar</string>
+ <string name="settings_edit_allow_summary_on">Iconas e widgets pódense engadir, eliminar e mover na pantalla de inicio</string>
+ <string name="settings_edit_allow_summary_off">Iconas e widgets no se poden engadir, eliminar e mover na pantalla de inicio</string>
+ <string name="settings_edit_widgets_error">Non é posíbel engadir widgets á pantalla de inicio</string>
+ <string name="desktop_show_labels">Amosar as etiquetas das iconas no escritorio</string>
+ <string name="drawer_show_labels">Amosar as etiquetas das iconas na gabeta</string>
+ <string name="show_labels_landscape">Amosar etiquetas das iconas no modo paisaxe</string>
+ <string name="trust_apps_manager_name">Aplicacións ocultas e protexidas</string>
+ <string name="trust_apps_auth_manager">Desbloquear para xestionar as aplicacións ocultas e protexidas</string>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+ <string name="trust_apps_loading">Cargando\u2026</string>
+ <string name="trust_apps_no_lock_error">Por favor, configura un bloqueo de pantalla para restrinxir o acceso ás aplicacións</string>
+ <string name="trust_apps_help">Axuda</string>
+ <string name="trust_apps_info_hidden">As aplicacións ocultas e os seus widgets están ocultos na gabeta</string>
+ <string name="trust_apps_info_protected">Requírese autenticación para abrir as aplicacións protexidas dende o lanzador</string>
+</resources>
diff --git a/res/values-hr/lineage_strings.xml b/res/values-hr/lineage_strings.xml
new file mode 100644
index 0000000..baa4af8
--- /dev/null
+++ b/res/values-hr/lineage_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="settings_edit_allow_title">Dopusti uređivanje</string>
+ <string name="settings_edit_allow_summary_on">Ikone i widgeti se mogu dodavati, uklanjati i micati na početnom zaslonu.</string>
+ <string name="settings_edit_allow_summary_off">Ikone i widgeti se ne mogu dodavati, uklanjati i micati na početnom zaslonu.</string>
+ <string name="settings_edit_widgets_error">Nije moguće dodavati widgete na početni zaslon</string>
+ <string name="desktop_show_labels">Prikaži oznake ikona na radnoj površini</string>
+ <string name="drawer_show_labels">Prikaži oznake ikona u ladici</string>
+</resources>
diff --git a/res/values-hu/lineage_strings.xml b/res/values-hu/lineage_strings.xml
new file mode 100644
index 0000000..ef06dd8
--- /dev/null
+++ b/res/values-hu/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">A Google-alkalmazás megjelenítése</string>
+ <string name="msg_minus_one_on_left">Amikor a főképernyőn jobbra csúsztat</string>
+ <string name="msg_minus_one_on_right">Amikor a főképernyőn balra csúsztat</string>
+ <string name="settings_edit_allow_title">Szerkesztés engedélyezése</string>
+ <string name="settings_edit_allow_summary_on">A kezdőképernyőn engedélyezett az ikon- és modulhozzáadás, eltávolítás és mozgatás</string>
+ <string name="settings_edit_allow_summary_off">A kezdőképernyőn nem engedélyezett az ikon- és modulhozzáadás, eltávolítás és mozgatás</string>
+ <string name="settings_edit_widgets_error">Nem lehetséges modulokat hozzáadni a kezdőképernyőhöz</string>
+ <string name="desktop_show_labels">Ikonfeliratok megjelenítése az asztalon</string>
+ <string name="drawer_show_labels">Ikonfeliratok megjelenítése az alkalmazásfiókban</string>
+ <string name="show_labels_landscape">Fekvő módban is jelenítse meg az ikonfeliratokat</string>
+ <string name="trust_apps_manager_name">Rejtett és védett alkalmazások</string>
+ <string name="trust_apps_auth_manager">Feloldás a rejtett és védett alkalmazások kezeléséhez</string>
+ <string name="trust_apps_auth_open_app">Hitelesítés a következő megnyitásához: %1$s</string>
+ <string name="trust_apps_loading">Betöltés\u2026</string>
+ <string name="trust_apps_no_lock_error">Kérjük, állítson be biztonságos (védett) képernyőzárat az alkalmazás-hozzáférések korlátozására</string>
+ <string name="trust_apps_help">Súgó</string>
+ <string name="trust_apps_info_hidden">A rejtett alkalmazások és moduljaik az alkalmazásfiókban sem láthatóak</string>
+ <string name="trust_apps_info_protected">Egy védett alkalmazás megnyitása a launcherből hitelesítést igényel</string>
+</resources>
diff --git a/res/values-in/lineage_strings.xml b/res/values-in/lineage_strings.xml
new file mode 100644
index 0000000..fb21ddf
--- /dev/null
+++ b/res/values-in/lineage_strings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Tampilkan aplikasi Google</string>
+ <string name="msg_minus_one_on_left">Ketika Anda mengusap ke kanan dari layar utama</string>
+ <string name="msg_minus_one_on_right">Ketika Anda mengusap ke kiri dari layar utama</string>
+ <string name="settings_edit_allow_title">Izinkan sunting</string>
+ <string name="settings_edit_allow_summary_on">Ikon dan widget dapat ditambahkan, dihapus dan dipindahkan pada layar utama</string>
+ <string name="settings_edit_allow_summary_off">Ikon dan widget tidak dapat ditambahkan, dihapus dan dipindahkan pada layar utama</string>
+ <string name="settings_edit_widgets_error">Tidak mungkin untuk menambah widget di layar utama</string>
+ <string name="desktop_show_labels">Tampilkan label ikon pada desktop</string>
+ <string name="drawer_show_labels">Sembunyikan label ikon di panel</string>
+ <string name="trust_apps_loading">Memuat\u2026</string>
+ <string name="trust_apps_no_lock_error">Silakan mengatur kunci layar aman untuk membatasi akses aplikasi</string>
+ <string name="trust_apps_help">Bantuan</string>
+ <string name="trust_apps_info_protected">Aplikasi yang dilindungi memerlukan otentikasi untuk dibuka dari peluncur</string>
+</resources>
diff --git a/res/values-it/lineage_strings.xml b/res/values-it/lineage_strings.xml
new file mode 100644
index 0000000..9f9d1ee
--- /dev/null
+++ b/res/values-it/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Mostra l\'app Google</string>
+ <string name="msg_minus_one_on_left">Quando scorri verso destra dalla schermata home</string>
+ <string name="msg_minus_one_on_right">Quando scorri verso sinistra dalla schermata home</string>
+ <string name="settings_edit_allow_title">Consenti modifiche</string>
+ <string name="settings_edit_allow_summary_on">É possibile aggiungere, rimuovere e spostare icone e widget nella schermata home</string>
+ <string name="settings_edit_allow_summary_off">Non é possibile aggiungere, rimuovere e spostare icone e widget nella schermata home</string>
+ <string name="settings_edit_widgets_error">Non é possibile aggiungere widget alla schermata home</string>
+ <string name="desktop_show_labels">Mostra nomi icone nella schermata home</string>
+ <string name="drawer_show_labels">Mostra nomi icone nel drawer</string>
+ <string name="show_labels_landscape">Mostra etichette icone in modalità orizzontale</string>
+ <string name="trust_apps_manager_name">App protette &amp; nascoste</string>
+ <string name="trust_apps_auth_manager">Sblocca per gestire le app protette e nascoste</string>
+ <string name="trust_apps_auth_open_app">Autenticati per aprire %1$s</string>
+ <string name="trust_apps_loading">Caricamento\u2026</string>
+ <string name="trust_apps_no_lock_error">Imposta una schermata di blocco sicura per limitare l\'accesso alle app</string>
+ <string name="trust_apps_help">Aiuto</string>
+ <string name="trust_apps_info_hidden">Le app nascoste e i loro widget sono nascosti dal drawer</string>
+ <string name="trust_apps_info_protected">Le app protette richiedono l\'autenticazione per essere aperte dal launcher</string>
+</resources>
diff --git a/res/values-iw/lineage_strings.xml b/res/values-iw/lineage_strings.xml
new file mode 100644
index 0000000..95bd305
--- /dev/null
+++ b/res/values-iw/lineage_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">הצג את חיפוש Google</string>
+ <string name="settings_edit_allow_title">אפשר עריכה</string>
+ <string name="settings_edit_allow_summary_on">ניתן להוסיף, להסיר ולהזיז סמלים ויישומונים על מסך הבית</string>
+ <string name="settings_edit_allow_summary_off">לא ניתן להוסיף, להסיר ולהזיז סמלים ויישומונים על מסך הבית</string>
+ <string name="settings_edit_widgets_error">אין אפשרות להוסיף יישומונים למסך הבית</string>
+ <string name="desktop_show_labels">הצג תוויות סמלים במסך הבית</string>
+ <string name="drawer_show_labels">הצג תוויות סמלים במגירת היישומים</string>
+</resources>
diff --git a/res/values-ja/lineage_strings.xml b/res/values-ja/lineage_strings.xml
new file mode 100644
index 0000000..a124883
--- /dev/null
+++ b/res/values-ja/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google アプリを表示</string>
+ <string name="msg_minus_one_on_left">メインホーム画面から右にスワイプする時</string>
+ <string name="msg_minus_one_on_right">メインホーム画面から左にスワイプする時</string>
+ <string name="settings_edit_allow_title">編集を許可</string>
+ <string name="settings_edit_allow_summary_on">アイコンやウィジェットの追加、削除や移動を許可します</string>
+ <string name="settings_edit_allow_summary_off">アイコンやウィジェットの追加、削除や移動を許可しません</string>
+ <string name="settings_edit_widgets_error">ウィジェットをホーム画面に追加できません</string>
+ <string name="desktop_show_labels">デスクトップ上でアイコンラベルを表示</string>
+ <string name="drawer_show_labels">ドロワーでアイコンラベルを表示</string>
+ <string name="trust_apps_manager_name">非表示 &amp; 保護アプリ</string>
+ <string name="trust_apps_auth_manager">ロック解除して非表示と保護アプリを管理する</string>
+ <string name="trust_apps_auth_open_app">認証して %1$s を開く</string>
+ <string name="trust_apps_loading">読み込み中\u2026</string>
+ <string name="trust_apps_no_lock_error">アプリのアクセスを制限するためにロック画面の保護をセットアップして下さい</string>
+ <string name="trust_apps_help">ヘルプ</string>
+ <string name="trust_apps_info_hidden">非表示アプリとそのウィジェットはドロワーから非表示になります</string>
+ <string name="trust_apps_info_protected">保護アプリはランチャーから開くのに認証が必要です</string>
+</resources>
diff --git a/res/values-ka/lineage_strings.xml b/res/values-ka/lineage_strings.xml
new file mode 100644
index 0000000..b3212f6
--- /dev/null
+++ b/res/values-ka/lineage_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="settings_edit_allow_title">ჩასწორების დაშვება</string>
+ <string name="settings_edit_allow_summary_on">მთავარ ეკრანზე შესაძლებელია ხატულებისა და ვიჯეტების დამატება, მოცილება ან გადაადგილება</string>
+ <string name="settings_edit_allow_summary_off">მთავარ ეკრანზე ვერ მოხერხდება ხატულებისა და ვიჯეტების დამატება, მოცილება ან გადაადგილება</string>
+ <string name="settings_edit_widgets_error">მთავარ ეკრანზე ვერ მოხერხდება ვიჯეტების დამატება</string>
+</resources>
diff --git a/res/values-kn/lineage_strings.xml b/res/values-kn/lineage_strings.xml
new file mode 100644
index 0000000..d4a0822
--- /dev/null
+++ b/res/values-kn/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">ಗೂಗಲ್ ಆಪ್ ತೋರಿಸು</string>
+ <string name="msg_minus_one_on_left">ತವರು ಪರದೆಯಿಂದ ನೀವು ಬಲಕ್ಕೆ ಸೆಳೆದಾಗ</string>
+ <string name="msg_minus_one_on_right">ತವರು ಪರದೆಯಿಂದ ನೀವು ಎಡಕ್ಕೆ ಸೆಳೆದಾಗ</string>
+ <string name="settings_edit_allow_title">ಸಂಪಾದನೆ ಅನುಮತಿಸು</string>
+ <string name="settings_edit_allow_summary_on">ಮುಖ್ಯ ಪರದೆಯ ಮೇಲೆ ಚಿಹ್ನೆಗಳು ಮತ್ತು ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಕೆ, ತೆಗೆಯುವಿಕೆ ಮತ್ತು ಸ್ಥಳಾಂತರ ಮಾಡಬಹುದು</string>
+ <string name="settings_edit_allow_summary_off">ತವರುಪರದೆಯ ಮೇಲೆ ಚಿಹ್ನೆಗಳು ಮತ್ತು ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಕೆ, ತೆಗೆಯುವಿಕೆ ಮತ್ತು ಸ್ಥಳಾಂತರ ಆಗುವುದಿಲ್ಲ</string>
+ <string name="settings_edit_widgets_error">ತವರು ಪರದೆಗೆ ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
+ <string name="desktop_show_labels">ಮುಖ್ಯ ಪರದೆಯಲ್ಲಿ ಚಿಹ್ನೆಗಳ ಹೆಸರುಗಳನ್ನು ತೋರಿಸು</string>
+ <string name="drawer_show_labels">ಎಳೆಗೂಡಲ್ಲಿ ಚಿಹ್ನೆಗಳ ಹೆಸರನ್ನು ತೋರಿಸು</string>
+ <string name="trust_apps_manager_name">ಅಡಗಿದ &amp; ಸಂರಕ್ಷಿತ ಆಪ್ಗಳು</string>
+ <string name="trust_apps_auth_manager">ಗುಪ್ತ ಮತ್ತು ರಕ್ಷಿತ ಆಪ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬೀಗ ತೆಗೆಯಿರಿ</string>
+ <string name="trust_apps_auth_open_app">%1$s ತೆರೆಯಲು ದೃಢೀಕರಿಸು</string>
+ <string name="trust_apps_loading">ಭರಿಸುತ್ತಿದೆ\u2026</string>
+ <string name="trust_apps_no_lock_error">ಆಪ್ ಪ್ರವೇಶವನ್ನು ನಿರ್ಬಂಧಿಸಲು ದಯವಿಟ್ಟು ಸುರಕ್ಷಿತ ಪರದೆ-ಬೀಗವನ್ನು ಹೊಂದಿಸಿ</string>
+ <string name="trust_apps_help">ಸಹಾಯ</string>
+ <string name="trust_apps_info_hidden">ಅಡಗಿದ ಆಪ್ಗಳು ಮತ್ತು ಅವುಗಳ ಕಿಂಡಿಚೂಟಿಗಳು ಎಳೆಗೂಡಿಂದ ಮರೆಯಾಗಿವೆ</string>
+ <string name="trust_apps_info_protected">ಸಂರಕ್ಷಿತ ಆಪ್ಗಳು ಏರುನೆಲೆಯಿಂದ ತೆರೆಯಲು ದೃಢೀಕರಣ ಅಗತ್ಯ</string>
+</resources>
diff --git a/res/values-ko/lineage_strings.xml b/res/values-ko/lineage_strings.xml
new file mode 100644
index 0000000..9ff48c1
--- /dev/null
+++ b/res/values-ko/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google 앱 표시</string>
+ <string name="msg_minus_one_on_left">메인 홈 화면에서 오른쪽으로 스와이프할 때</string>
+ <string name="msg_minus_one_on_right">메인 홈 화면에서 왼쪽으로 스와이프할 때</string>
+ <string name="settings_edit_allow_title">편집 허용</string>
+ <string name="settings_edit_allow_summary_on">아이콘과 위젯을 홈 화면에 추가하거나 제거, 이동할 수 있도록 허용합니다.</string>
+ <string name="settings_edit_allow_summary_off">아이콘과 위젯을 홈 화면에 추가하거나 제거, 이동할 수 없습니다.</string>
+ <string name="settings_edit_widgets_error">홈 화면에 위젯을 추가할 수 없습니다.</string>
+ <string name="desktop_show_labels">홈 화면에 아이콘 이름 표시</string>
+ <string name="drawer_show_labels">앱 서랍에 아이콘 이름 표시</string>
+ <string name="trust_apps_manager_name">숨겨지거나 보호된 앱</string>
+ <string name="trust_apps_auth_manager">숨겨지거나 보호된 앱을 관리하려면 잠금을 해제하세요.</string>
+ <string name="trust_apps_auth_open_app">인증하여 %1$s 열기</string>
+ <string name="trust_apps_loading">불러오는 중\u2026</string>
+ <string name="trust_apps_no_lock_error">앱 접근을 제한하려면 보안이 포함된 잠금 화면을 설정하세요.</string>
+ <string name="trust_apps_help">도움말</string>
+ <string name="trust_apps_info_hidden">숨겨진 앱과 해당 앱의 위젯은 앱 서랍에서 숨겨집니다.</string>
+ <string name="trust_apps_info_protected">보호된 앱을 실행기에서 열려면 인증이 필요합니다.</string>
+</resources>
diff --git a/res/values-ku/strings.xml b/res/values-ku/strings.xml
new file mode 100644
index 0000000..78b9e79
--- /dev/null
+++ b/res/values-ku/strings.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">کارخەری٣</string>
+ <string name="activity_not_found">بەرنامە دانه‌به‌زیوه‌.</string>
+ <string name="long_press_widget_to_add">بیسوو &amp; دەست ڕاگرە بۆ هەڵگرتنی ویجێتێک.</string>
+ <string name="widget_dims_format">%1$d \u00d7 %2$d</string>
+ <string name="out_of_space">لەم ماڵی ڕوونمایەدا دیوی تر نییە.</string>
+ <string name="hotseat_out_of_space">لە کەشەفەی دڵخوازەکانت دیوی تری لێ نییە</string>
+ <string name="all_apps_home_button_label">ماڵەوە</string>
+ <string name="remove_drop_target_label">لابردن</string>
+ <string name="uninstall_drop_target_label">دامه‌زرانسڕینه‌وه‌</string>
+ <string name="app_info_drop_target_label">زانیاریی بەرنامە</string>
+ <string name="permlab_install_shortcut">دامەزراندنی کورتەڕێگەکان</string>
+ <string name="permdesc_install_shortcut">ڕێگە بە بەرنامەیەک بدە بۆ
+ زیاکردنی کورتەڕێگەکان بەبێ دەستێوەردانی بەکارهێنەر.</string>
+ <string name="permlab_read_settings">خوێندنەوەی ڕێکخستنەکانی ماڵەوە و کورتەڕێگەکان</string>
+ <string name="permdesc_read_settings">ڕێگە بە بەرنامەکە بدە بۆ خوێندنەوەی ڕێکخستنەکان و
+ کورتەڕێگەکانی سەر ماڵ.</string>
+ <string name="permlab_write_settings">نووسینی ڕێکخستنەکانی ماڵەوە و کورتەڕێگەکان</string>
+ <string name="permdesc_write_settings">ڕێگە بە بەرنامەکە بدە بۆ نووسینی ڕێکخستنەکان و
+ کورتەڕێگەکانی سەر ماڵ.</string>
+ <string name="gadget_error_text">کێشەی بارکردنی ویجێت</string>
+ <string name="uninstall_system_app_text">ئەمە بەرنامەیەکی سیستەمییە و ناتوانرێت دامەزرانسڕینەوەی بۆ بکرێت.</string>
+ <string name="default_scroll_format">پەڕەی %1$d لە %2$d</string>
+ <string name="workspace_scroll_format">ڕوونمای ماڵەوە %1$d of %2$d</string>
+ <string name="folder_opened">بوخچە کراوە, <xliff:g id="width" example="5">%1$d</xliff:g> لەلایەن <xliff:g id="height" example="3">%2$d</xliff:g></string>
+ <string name="folder_closed">بوخچە داخرا</string>
+ <string name="folder_renamed">بوخچە نالێنرایەوە بۆ <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="folder_name_format">بوخچە: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="widget_button_text">ویجێتەکان</string>
+ <string name="wallpaper_button_text">دیوارپۆشەکان</string>
+ <string name="action_add_to_workspace">زیاکردن بۆ پاشبنەمای ڕوونما</string>
+</resources>
diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml
new file mode 100644
index 0000000..7af7af9
--- /dev/null
+++ b/res/values-lb/strings.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name">Launcher3</string>
+ <string name="activity_not_found">D\'App ass net installéiert.</string>
+ <string name="activity_not_available">App ass net disponibel</string>
+ <string name="safemode_shortcut_error">Erofgelueden App am séchere Modus desaktivéiert</string>
+ <string name="safemode_widget_error">Widgeten desaktivéiert am Sécherheetsmodus</string>
+ <string name="long_press_widget_to_add">Drécken an halen, fir e Widget opzerafen.</string>
+ <string name="widget_dims_format">%1$d \u00d7 %2$d</string>
+ <string name="out_of_space">Keng Plaz méi op dësem Startschierm.</string>
+ <string name="hotseat_out_of_space">Keng Plaz méi an der Favoritteläischt</string>
+ <string name="all_apps_home_button_label">Startschierm</string>
+ <string name="remove_drop_target_label">Läschen</string>
+ <string name="uninstall_drop_target_label">Desinstalléieren</string>
+ <string name="app_info_drop_target_label">App-Info</string>
+ <string name="permlab_install_shortcut">Ofkierzungen installéieren</string>
+ <string name="permdesc_install_shortcut">Erlaabt der App, Ofkierzungen ouni Benotzerinterventioun dobäizesetzen.</string>
+ <string name="permlab_read_settings">Startschierm-Astellungen an Ofkierzunge liesen</string>
+ <string name="permdesc_read_settings">Erlaabt der App, d\'Startschierm-Astellungen an -Ofkierzungen ze liesen.</string>
+ <string name="permlab_write_settings">Startschierm-Astellungen an Ofkierzunge schreiwen</string>
+ <string name="permdesc_write_settings">Erlaabt der App, d\'Startschierm-Astellungen an -Ofkierzungen z\'änneren.</string>
+ <string name="gadget_error_text">Problem beim Luede vum Widget</string>
+ <string name="gadget_setup_text">Astellen</string>
+ <string name="uninstall_system_app_text">Dëst ass eng System-App a kann net desinstalléiert ginn.</string>
+ <string name="default_scroll_format">Säit %1$d / %2$d</string>
+ <string name="workspace_scroll_format">Startschierm %1$d / %2$d</string>
+ <string name="folder_opened">Dossier opgemaach, <xliff:g id="width" example="5">%1$d</xliff:g>-mol <xliff:g id="height" example="3">%2$d</xliff:g></string>
+ <string name="folder_closed">Dossier zougemaach</string>
+ <string name="folder_renamed">Dossier ëmbenannt a(n) <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="folder_name_format">Dossier: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <string name="widget_button_text">Widgeten</string>
+ <string name="wallpaper_button_text">Hannergrondbiller</string>
+ <string name="package_state_unknown">Onbekannt</string>
+ <string name="abandoned_clean_this">Ewechhuelen</string>
+ <string name="abandoned_search">Sichen</string>
+ <string name="abandoned_promises_title">Dës App ass net installéiert</string>
+ <string name="abandoned_promise_explanation">D\'App fir dëst Symbol ass net installéiert. Du kanns et läschen, oder no der App sichen a se manuell installéieren.</string>
+ <string name="action_add_to_workspace">Op de Startschierm setzen</string>
+</resources>
diff --git a/res/values-ldrtl/lineage_config.xml b/res/values-ldrtl/lineage_config.xml
new file mode 100644
index 0000000..7067ca8
--- /dev/null
+++ b/res/values-ldrtl/lineage_config.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The LineageOS 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>
+
+ <string name="pref_show_google_now_summary" translatable="false">@string/msg_minus_one_on_left</string>
+</resources>
diff --git a/res/values-nl/lineage_strings.xml b/res/values-nl/lineage_strings.xml
new file mode 100644
index 0000000..841e801
--- /dev/null
+++ b/res/values-nl/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="settings_edit_allow_title">Bewerken toestaan</string>
+ <string name="trust_apps_manager_name">Verborgen en Beveiligde apps</string>
+ <string name="trust_apps_help">Help</string>
+</resources>
diff --git a/res/values-pl/lineage_strings.xml b/res/values-pl/lineage_strings.xml
new file mode 100644
index 0000000..075aa52
--- /dev/null
+++ b/res/values-pl/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Pokaż aplikację Google</string>
+ <string name="msg_minus_one_on_left">Gdy przesuniesz w prawo od ekranu głównego</string>
+ <string name="msg_minus_one_on_right">Gdy przesuniesz w lewo od ekranu głównego</string>
+ <string name="settings_edit_allow_title">Zezwalaj na edycję</string>
+ <string name="settings_edit_allow_summary_on">Ikony i widżety można dodawać, usuwać i przenosić na ekranie głównym</string>
+ <string name="settings_edit_allow_summary_off">Ikon i widżetów nie można dodawać, usuwać i przenosić na ekranie głównym</string>
+ <string name="settings_edit_widgets_error">Nie można dodać widżetów do ekranu głównego</string>
+ <string name="desktop_show_labels">Pokaż etykiety ikon na pulpicie</string>
+ <string name="drawer_show_labels">Pokaż etykiety ikon w szufladzie</string>
+ <string name="trust_apps_manager_name">Ukryte i chronione aplikacje</string>
+ <string name="trust_apps_auth_manager">Odblokuj, aby zarządzać ukrytymi i chronionymi aplikacjami</string>
+ <string name="trust_apps_auth_open_app">Uwierzytelnij, aby otworzyć %1$s</string>
+ <string name="trust_apps_loading">Ładowanie\u2026</string>
+ <string name="trust_apps_no_lock_error">Należy skonfigurować blokadę urządzenia, aby ograniczyć dostęp do aplikacji</string>
+ <string name="trust_apps_help">Pomoc</string>
+ <string name="trust_apps_info_hidden">Ukryte aplikacje i ich widżety są ukryte z szuflady aplikacji</string>
+ <string name="trust_apps_info_protected">Chronione aplikacje wymagają uwierzytelniania, aby mogły zostać uruchomione z poziomu ekranu głównego</string>
+</resources>
diff --git a/res/values-pt-rBR/lineage_strings.xml b/res/values-pt-rBR/lineage_strings.xml
new file mode 100644
index 0000000..452ae02
--- /dev/null
+++ b/res/values-pt-rBR/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Mostrar app do Google</string>
+ <string name="msg_minus_one_on_left">Ao deslizar para a direita na tela inicial</string>
+ <string name="msg_minus_one_on_right">Ao deslizar para a esquerda na tela inicial</string>
+ <string name="settings_edit_allow_title">Permitir edições</string>
+ <string name="settings_edit_allow_summary_on">Ícones e widgets podem ser adicionados, removidos e movidos na tela inicial</string>
+ <string name="settings_edit_allow_summary_off">Ícones e widgets não podem ser adicionados, removidos e movidos na tela inicial</string>
+ <string name="settings_edit_widgets_error">Não é possível adicionar widgets à tela inicial</string>
+ <string name="desktop_show_labels">Mostrar as legendas dos ícones na área de trabalho</string>
+ <string name="drawer_show_labels">Mostrar as legendas dos ícones na gaveta de aplicativos</string>
+ <string name="show_labels_landscape">Mostrar legendas dos ícones no modo paisagem</string>
+ <string name="trust_apps_manager_name">Aplicativos ocultos e protegidos</string>
+ <string name="trust_apps_auth_manager">Desbloquear para gerenciar os aplicativos ocultos e protegidos</string>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+ <string name="trust_apps_loading">Carregando\u2026</string>
+ <string name="trust_apps_no_lock_error">Configure uma tela de bloqueio para restringir o acesso aos aplicativos</string>
+ <string name="trust_apps_help">Ajuda</string>
+ <string name="trust_apps_info_hidden">Os aplicativos ocultos e os seus widgets estão ocultos na gaveta</string>
+ <string name="trust_apps_info_protected">Os aplicativos protegidos requerem autenticação para serem executados</string>
+</resources>
diff --git a/res/values-pt-rPT/lineage_strings.xml b/res/values-pt-rPT/lineage_strings.xml
new file mode 100644
index 0000000..7125e19
--- /dev/null
+++ b/res/values-pt-rPT/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Mostrar aplicação Google</string>
+ <string name="msg_minus_one_on_left">Ao deslizar para a direita no ecrã inicial</string>
+ <string name="msg_minus_one_on_right">Ao deslizar para a esquerda no ecrã inicial</string>
+ <string name="settings_edit_allow_title">Permitir edições</string>
+ <string name="settings_edit_allow_summary_on">Ícones e widgets podem ser adicionados, removidos e movidos no ecrã inicial</string>
+ <string name="settings_edit_allow_summary_off">Ícones e widgets não podem ser adicionados, removidos e movidos no ecrã inicial</string>
+ <string name="settings_edit_widgets_error">Não é possível adicionar widgets ao ecrã inicial</string>
+ <string name="desktop_show_labels">Mostrar as legendas dos ícones na área de trabalho</string>
+ <string name="drawer_show_labels">Mostrar as legendas dos ícones no painel de aplicações</string>
+ <string name="show_labels_landscape">Mostrar legendas dos ícones no modo paisagem</string>
+ <string name="trust_apps_manager_name">Aplicações Ocultas e Protegidas</string>
+ <string name="trust_apps_auth_manager">Desbloquear para gerir as aplicações ocultas e protegidas</string>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+ <string name="trust_apps_loading">A carregar\u2026</string>
+ <string name="trust_apps_no_lock_error">Por favor, configure um ecrã de bloqueio seguro para restringir o acesso às aplicações</string>
+ <string name="trust_apps_help">Ajuda</string>
+ <string name="trust_apps_info_hidden">As aplicações ocultas e os seus widgets estão escondidos da gaveta de aplicações</string>
+ <string name="trust_apps_info_protected">Aplicações protegidas requerem autenticação para serem abertas a partir da gaveta de aplicações</string>
+</resources>
diff --git a/res/values-ro/lineage_strings.xml b/res/values-ro/lineage_strings.xml
new file mode 100644
index 0000000..358e262
--- /dev/null
+++ b/res/values-ro/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Arată aplicația Google</string>
+ <string name="msg_minus_one_on_left">Când glisați dreapta din ecranul acasă principal</string>
+ <string name="msg_minus_one_on_right">Când glisați stânga din ecranul acasă principal</string>
+ <string name="settings_edit_allow_title">Permite editare</string>
+ <string name="settings_edit_allow_summary_on">Iconițele și widget-urile pot fi adăugate, eliminate sau mutate pe homescreen</string>
+ <string name="settings_edit_allow_summary_off">Iconițele și widget-urile nu pot fi adăugate, eliminate sau mutate pe homescreen</string>
+ <string name="settings_edit_widgets_error">Nu este posibil să adăugați widget-uri pe homescreen</string>
+ <string name="desktop_show_labels">Arată etichetele pictogramelor de pe desktop</string>
+ <string name="drawer_show_labels">Arată etichetele pictogramelor în sertarul cu aplicaţii</string>
+ <string name="show_labels_landscape">Afișează etichetele iconițelor în modul peisaj</string>
+ <string name="trust_apps_manager_name">Aplicații Ascunse &amp; Protejate</string>
+ <string name="trust_apps_auth_manager">Deblocați pentru a gestiona aplicaţiile ascunse şi protejate</string>
+ <string name="trust_apps_auth_open_app">Autentificați-vă pentru a deschide %1$s</string>
+ <string name="trust_apps_loading">Încărcare\u2026</string>
+ <string name="trust_apps_no_lock_error">Vă rugăm să setați un ecran de blocare sigură pentru a restricţiona accesul aplicației</string>
+ <string name="trust_apps_help">Ajutor</string>
+ <string name="trust_apps_info_hidden">Aplicațiile ascunse și widget-urile lor sunt ascunse în sertar</string>
+ <string name="trust_apps_info_protected">Aplicațiile protejate necesită autentificare pentru a fi deschise din launcher</string>
+</resources>
diff --git a/res/values-ru/lineage_strings.xml b/res/values-ru/lineage_strings.xml
new file mode 100644
index 0000000..490b30e
--- /dev/null
+++ b/res/values-ru/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Показать приложение Google</string>
+ <string name="msg_minus_one_on_left">При свайпе вправо от главного экрана</string>
+ <string name="msg_minus_one_on_right">При свайпе влево от главного экрана</string>
+ <string name="settings_edit_allow_title">Разрешить редактирование</string>
+ <string name="settings_edit_allow_summary_on">Иконки и виджеты могут быть добавлены, удалены и перемещены на главный экран</string>
+ <string name="settings_edit_allow_summary_off">Иконки и виджеты не могут быть добавлены, удалены и перемещены на главный экран</string>
+ <string name="settings_edit_widgets_error">Невозможно добавить виджеты на главный экран</string>
+ <string name="desktop_show_labels">Отображать подписи значков на рабочем столе</string>
+ <string name="drawer_show_labels">Отображать подписи значков в меню</string>
+ <string name="show_labels_landscape">Показывать подписи значков в альбомном режиме</string>
+ <string name="trust_apps_manager_name">Скрытые и защищенные приложения</string>
+ <string name="trust_apps_auth_manager">Разблокируйте, для управления скрытыми и защищенными приложениями</string>
+ <string name="trust_apps_auth_open_app">Авторизуйтесь, для открытия %1$s</string>
+ <string name="trust_apps_loading">Загрузка\u2026</string>
+ <string name="trust_apps_no_lock_error">Пожалуйста, установите блокировку экрана для ограничения доступа к приложениям</string>
+ <string name="trust_apps_help">Помощь</string>
+ <string name="trust_apps_info_hidden">Скрытые приложения и их виджеты не отображаются в меню приложений</string>
+ <string name="trust_apps_info_protected">Для открытия защищенных приложений из лаунчера требуется аутентификация</string>
+</resources>
diff --git a/res/values-sk/lineage_strings.xml b/res/values-sk/lineage_strings.xml
new file mode 100644
index 0000000..81d24f5
--- /dev/null
+++ b/res/values-sk/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Zobraziť Google aplikácie</string>
+ <string name="msg_minus_one_on_left">Pri potiahnutí prstom vpravo na hlavnej obrazovke</string>
+ <string name="msg_minus_one_on_right">Pri potiahnutí prstom vľavo na hlavnej obrazovke</string>
+ <string name="settings_edit_allow_title">Povoliť úpravy</string>
+ <string name="settings_edit_allow_summary_on">Ikony a miniaplikácie je možné pridať, odstrániť a presunúť na domovskú obrazovku</string>
+ <string name="settings_edit_allow_summary_off">Ikony a miniaplikácie nie je možné pridať, odstrániť a presunúť na domovskú obrazovku</string>
+ <string name="settings_edit_widgets_error">Na úvodnú obrazovku nie je možné pridať miniaplikácie</string>
+ <string name="desktop_show_labels">Zobraziť menovky ikon na pracovnej ploche</string>
+ <string name="drawer_show_labels">Zobraziť menovky ikon v ponuke</string>
+ <string name="trust_apps_manager_name">Skryté &amp; chránené aplikácie</string>
+ <string name="trust_apps_auth_manager">Pre správu skrytých a chránených aplikácií odomknite</string>
+ <string name="trust_apps_auth_open_app">Pre otvorenie %1$s potvrďte svoju totožnosť</string>
+ <string name="trust_apps_loading">Nahrávanie\u2026</string>
+ <string name="trust_apps_no_lock_error">Prosím nastavte zabezpečenie obrazovky aby ste mohli spravovať prístup k aplikáciám</string>
+ <string name="trust_apps_help">Pomocník</string>
+ <string name="trust_apps_info_hidden">Skryté aplikácie a ich widgety se nezobrazujú v zozname aplikácií</string>
+ <string name="trust_apps_info_protected">Chránené aplikácie vyžadujú pre otvorenie zo spúšťača overenie</string>
+</resources>
diff --git a/res/values-sl/lineage_strings.xml b/res/values-sl/lineage_strings.xml
new file mode 100644
index 0000000..0bdc138
--- /dev/null
+++ b/res/values-sl/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Pokaži Google aplikacijo</string>
+ <string name="msg_minus_one_on_left">Ko potegnete desno od glavnega domačega zaslona</string>
+ <string name="msg_minus_one_on_right">Ko potegnete levo od glavnega domačega zaslona</string>
+ <string name="settings_edit_allow_title">Dovoli urejanje</string>
+ <string name="settings_edit_allow_summary_on">Ikone in pripomočke je mogoče dodajati, odstranjevati ali premikati na domačem zaslonu</string>
+ <string name="settings_edit_allow_summary_off">Ikon in pripomočkov ni mogoče dodajati, odstranjevati ali premikati na domačem zaslonu</string>
+ <string name="settings_edit_widgets_error">Dodajanje pripomočkov na domači zaslon ni mogoče</string>
+ <string name="desktop_show_labels">Prikaži oznake ikon na namizju</string>
+ <string name="drawer_show_labels">Prikaži oznake ikon v predalu</string>
+ <string name="show_labels_landscape">Prikaži oznake ikon v ležečem načinu</string>
+ <string name="trust_apps_manager_name">Skrite in zaščitene aplikacije</string>
+ <string name="trust_apps_auth_manager">Odklenite za upravljanje skritih in zaščitenih aplikacij</string>
+ <string name="trust_apps_auth_open_app">Overite za odprtje %1$s</string>
+ <string name="trust_apps_loading">Nalaganje \u2026</string>
+ <string name="trust_apps_no_lock_error">Nastavite varni zaklenjen zaslon, da omejite dostop do aplikacij</string>
+ <string name="trust_apps_help">Pomoč</string>
+ <string name="trust_apps_info_hidden">Skrite aplikacije in njihovi pripomočki so skriti iz predala</string>
+ <string name="trust_apps_info_protected">Zaščitene aplikacije zahtevajo overitev za odpiranje iz zaganjalnika</string>
+</resources>
diff --git a/res/values-sq/lineage_strings.xml b/res/values-sq/lineage_strings.xml
new file mode 100644
index 0000000..c02cb53
--- /dev/null
+++ b/res/values-sq/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Shfaq Google app</string>
+ <string name="msg_minus_one_on_left">Kur rëshket djathtas nga faqja kryesore</string>
+ <string name="msg_minus_one_on_right">Kur rëshket majtas nga faqja kryesore</string>
+ <string name="settings_edit_allow_title">Lejo redaktimin</string>
+ <string name="settings_edit_allow_summary_on">Ikonat dhe veglat mund të shtohen, hiqen dhe zhvendosen në ekranin kryesor</string>
+ <string name="settings_edit_allow_summary_off">Ikonat dhe veglat nuk mund të shtohen, hiqen dhe zhvendosen në ekranin kryesor</string>
+ <string name="settings_edit_widgets_error">Nuk është e mundur të shtohen vegla në dritaren kryesore</string>
+ <string name="desktop_show_labels">Shfaq emërtimin e ikonave në ekran</string>
+ <string name="drawer_show_labels">Shfaq emërtimin e ikonave në menu</string>
+ <string name="show_labels_landscape">Shfaq emërtimet e ikonave në metodën peisazh</string>
+ <string name="trust_apps_manager_name">Programet e fshehura &amp; Mbrojtura</string>
+ <string name="trust_apps_auth_manager">Zhbllokoje për të kontrolluar programet e fshehura dhe të siguruara</string>
+ <string name="trust_apps_auth_open_app">Verifikohu për të hapur %1$s</string>
+ <string name="trust_apps_loading">Duke u ngarkuar\u2026</string>
+ <string name="trust_apps_no_lock_error">Ju lutem vendosni një bllokim ekrani të sigurtë për të kufizuar aplikacionet</string>
+ <string name="trust_apps_help">Ndihmë</string>
+ <string name="trust_apps_info_hidden">Aplikacionet e fshehura dhe mjetet e tyre fshihen nga dizenjuesi</string>
+ <string name="trust_apps_info_protected">Aplikacionet e mbrojtura kushtëzojnë vërtetim nga hapja e menu -së</string>
+</resources>
diff --git a/res/values-sr/lineage_strings.xml b/res/values-sr/lineage_strings.xml
new file mode 100644
index 0000000..aad5c13
--- /dev/null
+++ b/res/values-sr/lineage_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Прикажи Google апликацију</string>
+ <string name="settings_edit_allow_title">Омогући измене</string>
+ <string name="settings_edit_allow_summary_on">Омогући додавање, уклањање и размештање икона и алатки на почетном екрану</string>
+ <string name="settings_edit_allow_summary_off">Онемогућено додавање, уклањање и размештање икона и алатки на почетном екрану</string>
+ <string name="settings_edit_widgets_error">Није могуће додати алатке на почетни екран</string>
+ <string name="desktop_show_labels">Прикажи ознаке иконица на радној површини</string>
+ <string name="drawer_show_labels">Прикажи ознаке иконица у фиоци</string>
+</resources>
diff --git a/res/values-sv/lineage_strings.xml b/res/values-sv/lineage_strings.xml
new file mode 100644
index 0000000..bce480a
--- /dev/null
+++ b/res/values-sv/lineage_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="trust_apps_manager_name">Gömda &amp; Skyddade appar</string>
+ <string name="trust_apps_loading">Laddar\u2026</string>
+ <string name="trust_apps_help">Hjälp</string>
+</resources>
diff --git a/res/values-sw320dp/dimens.xml b/res/values-sw320dp/dimens.xml
new file mode 100644
index 0000000..2825ca9
--- /dev/null
+++ b/res/values-sw320dp/dimens.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+ <dimen name="dynamic_grid_edge_margin">4dp</dimen>
+
+</resources> \ No newline at end of file
diff --git a/res/values-sw340dp/dimens.xml b/res/values-sw340dp/dimens.xml
index c9f2981..2c7ae83 100644
--- a/res/values-sw340dp/dimens.xml
+++ b/res/values-sw340dp/dimens.xml
@@ -21,4 +21,6 @@
<dimen name="drop_target_drag_padding">20dp</dimen>
<dimen name="drop_target_text_size">16sp</dimen>
+ <dimen name="dynamic_grid_edge_margin">6dp</dimen>
+
</resources> \ No newline at end of file
diff --git a/res/values-th/lineage_strings.xml b/res/values-th/lineage_strings.xml
new file mode 100644
index 0000000..b4aed8a
--- /dev/null
+++ b/res/values-th/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">แสดงแอป Google</string>
+ <string name="msg_minus_one_on_left">เมื่อคุณปัดนิ้วไปทางขวาจากหน้าจอหลัก</string>
+ <string name="msg_minus_one_on_right">เมื่อคุณปัดนิ้วไปทางซ้ายจากหน้าจอหลัก</string>
+ <string name="settings_edit_allow_title">อนุญาต</string>
+ <string name="settings_edit_allow_summary_on">ไอคอนและวิดเจ็ต จะสามารถถูก เพิ่ม ลบ และ ย้ายบนหน้าจอหลัก</string>
+ <string name="settings_edit_allow_summary_off">ไอคอนและวิดเจ็ต จะไม่สามารถถูก เพิ่ม ลบ และ ย้ายบนหน้าจอหลัก</string>
+ <string name="settings_edit_widgets_error">ไม่สามารถที่จะเพิ่ม วิดเจ็ต บนหน้าจอหลักได้</string>
+ <string name="desktop_show_labels">แสดงชื่อไอคอนบนเดสก์ทอป</string>
+ <string name="drawer_show_labels">แสดงชื่อไอคอนในลิ้นชัก</string>
+ <string name="show_labels_landscape">แสดงชื่อไอคอนในรูปแบบแนวนอน</string>
+ <string name="trust_apps_manager_name">แอปที่ถูกซ่อน &amp; ป้องกัน</string>
+ <string name="trust_apps_auth_manager">ปลดล็อคเพื่อจัดการแอปพลิเคชั่นที่ถูกซ่อน และป้องกัน</string>
+ <string name="trust_apps_auth_open_app">ยืนยันตัวตนเพื่อเปิด %1$s</string>
+ <string name="trust_apps_loading">กำลังโหลด\u2026</string>
+ <string name="trust_apps_no_lock_error">โปรดตั้งค่าหน้าจอล็อกปลอดภัยเพื่อจำกัดการเข้าถึงของแอป</string>
+ <string name="trust_apps_help">วิธีใช้</string>
+ <string name="trust_apps_info_hidden">แอปที่ถูกซ่อนและ widget ของแอพนั้นถูกซ่อนจากตัวเลือกแอป</string>
+ <string name="trust_apps_info_protected">แอปที่ได้รับการป้องกัน จะต้องได้รับการยืนยันเพื่อที่จะเปิดจากตัว launcher</string>
+</resources>
diff --git a/res/values-tr/lineage_strings.xml b/res/values-tr/lineage_strings.xml
new file mode 100644
index 0000000..43f81b3
--- /dev/null
+++ b/res/values-tr/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Google uygulamasını göster</string>
+ <string name="msg_minus_one_on_left">Ana ekrandan sağa kaydırdığınızda</string>
+ <string name="msg_minus_one_on_right">Ana ekrandan sola kaydırdığınızda</string>
+ <string name="settings_edit_allow_title">Düzenlemeye izin ver</string>
+ <string name="settings_edit_allow_summary_on">Simgeleri ve widget\'lar ana ekrandan eklenebilir, kaldırılabilir ve taşınabilir</string>
+ <string name="settings_edit_allow_summary_off">Simgeleri ve widget\'lar ana ekrandan eklenemez, kaldırılamaz ve taşınamaz</string>
+ <string name="settings_edit_widgets_error">Ana ekrana widget eklemek mümkün değildir</string>
+ <string name="desktop_show_labels">Ana ekranda simge etiketlerini göster</string>
+ <string name="drawer_show_labels">Çekmecede simge etiketlerini göster</string>
+ <string name="show_labels_landscape">Yatay modda simge etiketlerini göster</string>
+ <string name="trust_apps_manager_name">Gizli ve Korunan uygulamalar</string>
+ <string name="trust_apps_auth_manager">Gizli ve korunan uygulamaları yönetmek için kilidi açın</string>
+ <string name="trust_apps_auth_open_app">%1$s uygulamasının açılması için kimlik doğrula</string>
+ <string name="trust_apps_loading">Yükleniyor\u2026</string>
+ <string name="trust_apps_no_lock_error">Uygulama erişimini kısıtlamak için lütfen güvenli bir kilit ekranı ayarlayın</string>
+ <string name="trust_apps_help">Yardım</string>
+ <string name="trust_apps_info_hidden">Gizli uygulamalar ve widget\'ları uygulama menüsünde görünmeyecek</string>
+ <string name="trust_apps_info_protected">Korunan uygulamaların başlatıcıdan açılması için kimlik doğrulama gerekir</string>
+</resources>
diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml
new file mode 100644
index 0000000..a4c01fb
--- /dev/null
+++ b/res/values-ug/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2008 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="work_folder_name">ئىش</string>
+ <string name="all_apps_work_tab">ئىش</string>
+</resources>
diff --git a/res/values-vi/lineage_strings.xml b/res/values-vi/lineage_strings.xml
new file mode 100644
index 0000000..5ab8181
--- /dev/null
+++ b/res/values-vi/lineage_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">Hiển thị ứng dụng Google</string>
+ <string name="msg_minus_one_on_left">Khi bạn trượt sang phải từ màn hình chính</string>
+ <string name="msg_minus_one_on_right">Khi bạn trượt sang trái từ màn hình chính</string>
+ <string name="settings_edit_allow_title">Cho phép chỉnh sửa</string>
+ <string name="settings_edit_allow_summary_on">Các biểu tượng và tiện ích con có thể được thêm, xóa và di chuyển trên màn hình chính</string>
+ <string name="settings_edit_allow_summary_off">Các biểu tượng và tiện ích con không thể được thêm, xóa và di chuyển trên màn hình chính</string>
+ <string name="settings_edit_widgets_error">Không thể thêm tiện ích con vào màn hình chính</string>
+ <string name="desktop_show_labels">Hiển thị nhãn biểu tượng trên bàn làm việc</string>
+ <string name="drawer_show_labels">Hiển thị nhãn biểu tượng trong ngăn kéo</string>
+</resources>
diff --git a/res/values-zh-rCN/lineage_strings.xml b/res/values-zh-rCN/lineage_strings.xml
new file mode 100644
index 0000000..cd0e72f
--- /dev/null
+++ b/res/values-zh-rCN/lineage_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">显示 Google 应用</string>
+ <string name="msg_minus_one_on_left">当您从主屏幕向右滑动时</string>
+ <string name="msg_minus_one_on_right">当您从主屏幕向左滑动时</string>
+ <string name="settings_edit_allow_title">允许编辑</string>
+ <string name="settings_edit_allow_summary_on">可以在桌面上添加、删除和移动图标以及小部件</string>
+ <string name="settings_edit_allow_summary_off">不能在桌面上添加、删除和移动图标以及小部件</string>
+ <string name="settings_edit_widgets_error">无法将小部件添加到主屏幕中</string>
+ <string name="desktop_show_labels">在桌面上显示图标标签</string>
+ <string name="drawer_show_labels">在抽屉里显示图标标签</string>
+ <string name="show_labels_landscape">在横屏模式中显示图标标签</string>
+ <string name="trust_apps_manager_name">隐藏和保护应用</string>
+ <string name="trust_apps_auth_manager">解锁以管理隐藏和受保护的应用</string>
+ <string name="trust_apps_auth_open_app">认证以打开 %1$s</string>
+ <string name="trust_apps_loading">正在载入\u2026</string>
+ <string name="trust_apps_no_lock_error">请设置一个安全锁定屏幕以限制应用访问</string>
+ <string name="trust_apps_help">帮助</string>
+ <string name="trust_apps_info_hidden">从抽屉中隐藏应用和其小部件</string>
+ <string name="trust_apps_info_protected">需要经过认证才能从启动器打开受保护的应用</string>
+</resources>
diff --git a/res/values-zh-rTW/lineage_strings.xml b/res/values-zh-rTW/lineage_strings.xml
new file mode 100644
index 0000000..c8f4626
--- /dev/null
+++ b/res/values-zh-rTW/lineage_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <string name="title_show_google_app">顯示 Google 應用程式</string>
+ <string name="msg_minus_one_on_left">當在主畫面向右滑動時</string>
+ <string name="msg_minus_one_on_right">當在主畫面向左滑動時</string>
+ <string name="settings_edit_allow_title">允許編輯</string>
+ <string name="settings_edit_allow_summary_on">圖示和小工具可以在主畫面上新增、刪除和移動</string>
+ <string name="settings_edit_allow_summary_off">圖示和小工具無法在主畫面上新增、刪除和移動</string>
+ <string name="settings_edit_widgets_error">無法將小工具新增至主畫面</string>
+ <string name="desktop_show_labels">在桌面上顯示圖示標籤</string>
+ <string name="drawer_show_labels">在清單中顯示圖示標籤</string>
+ <string name="trust_apps_manager_name">隱藏與受保護應用程式</string>
+ <string name="trust_apps_auth_manager">解鎖以管理隱藏和受保護的應用程式</string>
+ <string name="trust_apps_auth_open_app">進行身份驗證以開啟 %1$s</string>
+ <string name="trust_apps_loading">載入中\u2026</string>
+ <string name="trust_apps_no_lock_error">請設定安全鎖定畫面以限制應用程式存取權限</string>
+ <string name="trust_apps_help">說明</string>
+ <string name="trust_apps_info_hidden">隱藏的應用程式及其小工具隱藏在清單中</string>
+ <string name="trust_apps_info_protected">受保護的應用程式需要從啟動器開啟身份驗證</string>
+</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 9d36ee4..93b780b 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -9,7 +9,7 @@
<!-- A string pointer to the original app name string. This allows derived projects to
easily override the app name without providing all translations -->
- <string name="derived_app_name" translatable="false">@string/app_name</string>
+ <string name="derived_app_name" translatable="false">@string/lineageos_app_name</string>
<!-- String representing the intent for search on the apps market. To specify a query, add
q=<query> to the data to the intent -->
@@ -61,7 +61,7 @@
<bool name="hotseat_transpose_layout_with_orientation">true</bool>
<!-- Various classes overriden by projects/build flavors. -->
- <string name="app_filter_class" translatable="false"></string>
+ <string name="app_filter_class" translatable="false">com.android.launcher3.lineage.trust.HiddenAppsFilter</string>
<string name="icon_provider_class" translatable="false"></string>
<string name="drawable_factory_class" translatable="false"></string>
<string name="user_event_dispatcher_class" translatable="false"></string>
@@ -75,7 +75,7 @@
<string name="launcher_activity_logic_class" translatable="false"></string>
<!-- Package name of the default wallpaper picker. -->
- <string name="wallpaper_picker_package" translatable="false"></string>
+ <string name="wallpaper_picker_package" translatable="false">com.android.wallpaper</string>
<!-- Whitelisted package to retrieve packagename for badge. Can be empty. -->
<string name="shortcutinfo_badgepkg_whitelist" translatable="false"></string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4bcb8a7..d9b0f9a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -21,7 +21,7 @@
<!-- Dynamic Grid -->
<dimen name="dynamic_grid_edge_margin">8dp</dimen>
<dimen name="dynamic_grid_page_indicator_line_height">1dp</dimen>
- <dimen name="dynamic_grid_icon_drawable_padding">8dp</dimen>
+ <dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen>
<!-- Minimum space between workspace and hotseat in spring loaded mode -->
<dimen name="dynamic_grid_min_spring_loaded_space">8dp</dimen>
diff --git a/res/values/lineage_config.xml b/res/values/lineage_config.xml
new file mode 100644
index 0000000..7067ca8
--- /dev/null
+++ b/res/values/lineage_config.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The LineageOS 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>
+
+ <string name="pref_show_google_now_summary" translatable="false">@string/msg_minus_one_on_left</string>
+</resources>
diff --git a/res/values/lineage_strings.xml b/res/values/lineage_strings.xml
new file mode 100644
index 0000000..2e602ff
--- /dev/null
+++ b/res/values/lineage_strings.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018-2019 The LineageOS 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>
+ <!-- Application name -->
+ <string name="lineageos_app_name" translatable="false">Trebuchet</string>
+
+ <!-- Settings -->
+
+ <!-- Settings title to show Google Now at -1 screen on launcher. [CHAR LIMIT=50] -->
+ <string name="title_show_google_app">Show Google app</string>
+ <!-- Settings message explaining when the -1 screen is available on an LTR device. [CHAR LIMIT=100] -->
+ <string name="msg_minus_one_on_left">When you swipe right from main home screen</string>
+ <!-- Settings message explaining when the -1 screen is available on an RTL device. [CHAR LIMIT=100] -->
+ <string name="msg_minus_one_on_right">When you swipe left from main home screen</string>
+
+ <!-- Edit workspace -->
+ <string name="settings_edit_allow_title">Allow edit</string>
+ <string name="settings_edit_allow_summary_on">Icons and widgets can be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_allow_summary_off">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_edit_widgets_error">It\'s not possible to add widgets to the home screen</string>
+
+ <!-- Folder titles -->
+ <string name="google_folder_title" translatable="false">Google</string>
+
+ <!-- Hide labels -->
+ <string name="desktop_show_labels">Show icon labels on desktop</string>
+ <string name="drawer_show_labels">Show icon labels in drawer</string>
+ <string name="show_labels_landscape">Show icon labels in landscape mode</string>
+
+ <!-- Trust apps -->
+ <string name="trust_apps_manager_name">Hidden &amp; Protected apps</string>
+ <string name="trust_apps_auth_manager">Unlock to manage the hidden and protected apps</string>
+ <string name="trust_apps_auth_open_app">Authenticate to open %1$s</string>
+ <string name="trust_apps_loading">Loading\u2026</string>
+ <string name="trust_apps_no_lock_error">Please set up a secure lock screen to restrict app access</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Hidden apps and their widgets are hidden from the drawer</string>
+ <string name="trust_apps_info_protected">Protected apps require authentication to be opened from the launcher</string>
+</resources>
diff --git a/res/xml/default_workspace_4x4.xml b/res/xml/default_workspace_4x4.xml
deleted file mode 100644
index bf3c62c..0000000
--- a/res/xml/default_workspace_4x4.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
-
- <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
- <!-- Dialer, Messaging, Browser, Camera -->
- <resolve
- launcher:container="-101"
- launcher:screen="0"
- launcher:x="0"
- launcher:y="0" >
- <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
- <favorite launcher:uri="tel:123" />
- <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
- </resolve>
-
- <resolve
- launcher:container="-101"
- launcher:screen="1"
- launcher:x="1"
- launcher:y="0" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
- <favorite launcher:uri="sms:" />
- <favorite launcher:uri="smsto:" />
- <favorite launcher:uri="mms:" />
- <favorite launcher:uri="mmsto:" />
- </resolve>
-
- <resolve
- launcher:container="-101"
- launcher:screen="2"
- launcher:x="2"
- launcher:y="0" >
- <favorite
- launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
- <favorite launcher:uri="http://www.example.com/" />
- </resolve>
-
- <resolve
- launcher:container="-101"
- launcher:screen="3"
- launcher:x="3"
- launcher:y="0" >
- <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
- <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
- </resolve>
-
- <!-- Bottom row -->
- <resolve
- launcher:screen="0"
- launcher:x="0"
- launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
- <favorite launcher:uri="mailto:" />
- </resolve>
-
- <resolve
- launcher:screen="0"
- launcher:x="1"
- launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
- <favorite launcher:uri="#Intent;type=images/*;end" />
- </resolve>
-
- <resolve
- launcher:screen="0"
- launcher:x="3"
- launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" />
- <favorite launcher:uri="market://details?id=com.android.launcher" />
- </resolve>
-
-</favorites>
diff --git a/res/xml/default_workspace_4x5.xml b/res/xml/default_workspace_4x5.xml
new file mode 100644
index 0000000..347aae0
--- /dev/null
+++ b/res/xml/default_workspace_4x5.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
+
+ <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
+ <!-- Dialer, Messaging, Browser, Camera -->
+ <resolve
+ launcher:container="-101"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
+ <favorite launcher:uri="tel:123" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
+ <favorite launcher:uri="sms:" />
+ <favorite launcher:uri="smsto:" />
+ <favorite launcher:uri="mms:" />
+ <favorite launcher:uri="mmsto:" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="2"
+ launcher:x="2"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="3"
+ launcher:x="3"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
+ <favorite launcher:uri="http://www.example.com/" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="4"
+ launcher:x="4"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
+ </resolve>
+
+ <!-- Screen 0 -->
+ <appwidget
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="4"
+ launcher:spanY="1" />
+
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="1"
+ launcher:spanX="4"
+ launcher:spanY="2" />
+
+ <!-- Google folder -->
+ <!-- Google, Chrome, Gmail, Maps, YouTube, (Drive), (Music), (Movies), Hangouts, Photos -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="3">
+ <favorite
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.maps"
+ launcher:className="com.google.android.maps.MapsActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.docs"
+ launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.music"
+ launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="1"
+ launcher:y="3"
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="3"
+ launcher:y="3"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+ <appwidget
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.appwidgets.AppWidgetLarge"
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="4"
+ launcher:spanY="2" />
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
+ <favorite launcher:uri="mailto:" />
+ </resolve>
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
+ <favorite launcher:uri="#Intent;type=images/*;end" />
+ </resolve>
+
+ <favorite
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.ui.activities.HomeActivity"
+ launcher:screen="1"
+ launcher:x="2"
+ launcher:y="-1" />
+
+ <favorite
+ launcher:packageName="com.android.settings"
+ launcher:className="com.android.settings.Settings"
+ launcher:screen="1"
+ launcher:x="3"
+ launcher:y="-1" />
+
+</favorites>
diff --git a/res/xml/default_workspace_5x5.xml b/res/xml/default_workspace_5x5.xml
index ccdde2c..88ea475 100644
--- a/res/xml/default_workspace_5x5.xml
+++ b/res/xml/default_workspace_5x5.xml
@@ -45,8 +45,7 @@
launcher:screen="2"
launcher:x="2"
launcher:y="0" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MAPS;end" />
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MUSIC;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" />
</resolve>
<resolve
@@ -54,8 +53,7 @@
launcher:screen="3"
launcher:x="3"
launcher:y="0" >
- <favorite
- launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
<favorite launcher:uri="http://www.example.com/" />
</resolve>
@@ -68,30 +66,110 @@
<favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
</resolve>
- <!-- Bottom row -->
- <resolve
+ <!-- Screen 0 -->
+ <appwidget
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
launcher:screen="0"
launcher:x="0"
- launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
- <favorite launcher:uri="mailto:" />
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="1" />
- </resolve>
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="1"
+ launcher:spanX="5"
+ launcher:spanY="2" />
- <resolve
+ <!-- Google Folder -->
+ <!-- Google, Chrome, Gmail, Maps, YouTube, (Drive), (Music), (Movies), Hangouts, Photos -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="4">
+ <favorite
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.maps"
+ launcher:className="com.google.android.maps.MapsActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.docs"
+ launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.music"
+ launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <favorite
launcher:screen="0"
launcher:x="1"
- launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
- <favorite launcher:uri="#Intent;type=images/*;end" />
+ launcher:y="4"
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="4"
+ launcher:y="4"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+ <appwidget
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.appwidgets.AppWidgetLarge"
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+ <resolve
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
+ <favorite launcher:uri="mailto:" />
</resolve>
<resolve
- launcher:screen="0"
- launcher:x="4"
+ launcher:screen="1"
+ launcher:x="1"
launcher:y="-1" >
- <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" />
- <favorite launcher:uri="market://details?id=com.android.launcher" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
+ <favorite launcher:uri="#Intent;type=images/*;end" />
</resolve>
+
+ <favorite
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.ui.activities.HomeActivity"
+ launcher:screen="1"
+ launcher:x="2"
+ launcher:y="-1" />
+
+ <favorite
+ launcher:packageName="com.android.settings"
+ launcher:className="com.android.settings.Settings"
+ launcher:screen="1"
+ launcher:x="3"
+ launcher:y="-1" />
+
</favorites>
diff --git a/res/xml/default_workspace_5x6.xml b/res/xml/default_workspace_5x6.xml
new file mode 100644
index 0000000..9bb6447
--- /dev/null
+++ b/res/xml/default_workspace_5x6.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
+
+ <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
+ <!-- Dialer, Messaging, [Maps/Music], Browser, Camera -->
+ <resolve
+ launcher:container="-101"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
+ <favorite launcher:uri="tel:123" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
+ <favorite launcher:uri="sms:" />
+ <favorite launcher:uri="smsto:" />
+ <favorite launcher:uri="mms:" />
+ <favorite launcher:uri="mmsto:" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="2"
+ launcher:x="2"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="3"
+ launcher:x="3"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
+ <favorite launcher:uri="http://www.example.com/" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="4"
+ launcher:x="4"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
+ </resolve>
+
+ <!-- Screen 0 -->
+ <appwidget
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="1" />
+
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="1"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+
+ <!-- Google Folder -->
+ <!-- Google, Chrome, Gmail, Maps, YouTube, (Drive), (Music), (Movies), Hangouts, Photos -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="5">
+ <favorite
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.maps"
+ launcher:className="com.google.android.maps.MapsActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.docs"
+ launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.music"
+ launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="1"
+ launcher:y="5"
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="4"
+ launcher:y="5"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+ <appwidget
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.appwidgets.AppWidgetLarge"
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
+ <favorite launcher:uri="mailto:" />
+ </resolve>
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
+ <favorite launcher:uri="#Intent;type=images/*;end" />
+ </resolve>
+
+ <favorite
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.ui.activities.HomeActivity"
+ launcher:screen="1"
+ launcher:x="2"
+ launcher:y="-1" />
+
+ <favorite
+ launcher:packageName="com.android.settings"
+ launcher:className="com.android.settings.Settings"
+ launcher:screen="1"
+ launcher:x="3"
+ launcher:y="-1" />
+
+</favorites>
diff --git a/res/xml/default_workspace_5x7.xml b/res/xml/default_workspace_5x7.xml
new file mode 100644
index 0000000..e084138
--- /dev/null
+++ b/res/xml/default_workspace_5x7.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
+
+ <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
+ <!-- Dialer, Messaging, [Maps/Music], Browser, Camera -->
+ <resolve
+ launcher:container="-101"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
+ <favorite launcher:uri="tel:123" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
+ <favorite launcher:uri="sms:" />
+ <favorite launcher:uri="smsto:" />
+ <favorite launcher:uri="mms:" />
+ <favorite launcher:uri="mmsto:" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="2"
+ launcher:x="2"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="3"
+ launcher:x="3"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
+ <favorite launcher:uri="http://www.example.com/" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="4"
+ launcher:x="4"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
+ </resolve>
+
+ <!-- Screen 0 -->
+ <appwidget
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="1" />
+
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="1"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+
+ <!-- Google Folder -->
+ <!-- Google, Chrome, Gmail, Maps, YouTube, (Drive), (Music), (Movies), Hangouts, Photos -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="6">
+ <favorite
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.maps"
+ launcher:className="com.google.android.maps.MapsActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.docs"
+ launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.music"
+ launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="1"
+ launcher:y="6"
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="4"
+ launcher:y="6"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+ <appwidget
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.appwidgets.AppWidgetLarge"
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
+ <favorite launcher:uri="mailto:" />
+ </resolve>
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
+ <favorite launcher:uri="#Intent;type=images/*;end" />
+ </resolve>
+
+ <favorite
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.ui.activities.HomeActivity"
+ launcher:screen="1"
+ launcher:x="2"
+ launcher:y="-1" />
+
+ <favorite
+ launcher:packageName="com.android.settings"
+ launcher:className="com.android.settings.Settings"
+ launcher:screen="1"
+ launcher:x="3"
+ launcher:y="-1" />
+
+</favorites>
diff --git a/res/xml/default_workspace_6x6.xml b/res/xml/default_workspace_6x6.xml
new file mode 100644
index 0000000..14fa6b2
--- /dev/null
+++ b/res/xml/default_workspace_6x6.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
+
+ <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
+ <!-- Dialer, Messaging, [Maps/Music], Browser, Camera -->
+ <resolve
+ launcher:container="-101"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
+ <favorite launcher:uri="tel:123" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
+ <favorite launcher:uri="sms:" />
+ <favorite launcher:uri="smsto:" />
+ <favorite launcher:uri="mms:" />
+ <favorite launcher:uri="mmsto:" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="2"
+ launcher:x="2"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="3"
+ launcher:x="3"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
+ <favorite launcher:uri="http://www.example.com/" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="4"
+ launcher:x="4"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
+ </resolve>
+
+ <!-- Screen 0 -->
+ <appwidget
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="5"
+ launcher:spanY="1" />
+
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="1"
+ launcher:spanX="5"
+ launcher:spanY="2" />
+
+ <!-- Google Folder -->
+ <!-- Google, Chrome, Gmail, Maps, YouTube, (Drive), (Music), (Movies), Hangouts, Photos -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="5">
+ <favorite
+ launcher:packageName="com.google.android.googlequicksearchbox"
+ launcher:className="com.google.android.googlequicksearchbox.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.maps"
+ launcher:className="com.google.android.maps.MapsActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.docs"
+ launcher:className="com.google.android.apps.docs.app.NewMainProxyActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.music"
+ launcher:className="com.android.music.activitymanagement.TopLevelActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="1"
+ launcher:y="5"
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="4"
+ launcher:y="5"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+ <appwidget
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.appwidgets.AppWidgetLarge"
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="0"
+ launcher:spanX="6"
+ launcher:spanY="2" />
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="0"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
+ <favorite launcher:uri="mailto:" />
+ </resolve>
+
+ <resolve
+ launcher:screen="1"
+ launcher:x="1"
+ launcher:y="-1" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
+ <favorite launcher:uri="#Intent;type=images/*;end" />
+ </resolve>
+
+ <favorite
+ launcher:packageName="org.lineageos.eleven"
+ launcher:className="org.lineageos.eleven.ui.activities.HomeActivity"
+ launcher:screen="1"
+ launcher:x="2"
+ launcher:y="-1" />
+
+ <favorite
+ launcher:packageName="com.android.settings"
+ launcher:className="com.android.settings.Settings"
+ launcher:screen="1"
+ launcher:x="3"
+ launcher:y="-1" />
+
+</favorites>
diff --git a/res/xml/device_profiles.xml b/res/xml/device_profiles.xml
index 82547d5..d05a43f 100644
--- a/res/xml/device_profiles.xml
+++ b/res/xml/device_profiles.xml
@@ -45,19 +45,19 @@
</grid-option>
<grid-option
- launcher:name="4_by_4"
- launcher:numRows="4"
+ launcher:name="4_by_5"
+ launcher:numRows="5"
launcher:numColumns="4"
- launcher:numFolderRows="3"
+ launcher:numFolderRows="4"
launcher:numFolderColumns="4"
- launcher:numHotseatIcons="4"
- launcher:defaultLayoutId="@xml/default_workspace_4x4" >
+ launcher:numHotseatIcons="5"
+ launcher:defaultLayoutId="@xml/default_workspace_4x5" >
<display-option
launcher:name="Short Stubby"
launcher:minWidthDps="275"
launcher:minHeightDps="420"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="46"
launcher:iconTextSize="13.0"
launcher:canBeDefault="true" />
@@ -65,7 +65,7 @@
launcher:name="Stubby"
launcher:minWidthDps="255"
launcher:minHeightDps="450"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="46"
launcher:iconTextSize="13.0"
launcher:canBeDefault="true" />
@@ -73,7 +73,7 @@
launcher:name="Nexus S"
launcher:minWidthDps="296"
launcher:minHeightDps="491.33"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="46"
launcher:iconTextSize="13.0"
launcher:canBeDefault="true" />
@@ -81,7 +81,7 @@
launcher:name="Nexus 4"
launcher:minWidthDps="359"
launcher:minHeightDps="567"
- launcher:iconImageSize="54"
+ launcher:iconImageSize="50"
launcher:iconTextSize="13.0"
launcher:canBeDefault="true" />
@@ -89,7 +89,7 @@
launcher:name="Nexus 5"
launcher:minWidthDps="335"
launcher:minHeightDps="567"
- launcher:iconImageSize="54"
+ launcher:iconImageSize="50"
launcher:iconTextSize="13.0"
launcher:canBeDefault="true" />
@@ -122,4 +122,61 @@
</grid-option>
-</profiles> \ No newline at end of file
+ <grid-option
+ launcher:name="5_by_6"
+ launcher:numRows="6"
+ launcher:numColumns="5"
+ launcher:numFolderRows="5"
+ launcher:numFolderColumns="4"
+ launcher:numHotseatIcons="6"
+ launcher:defaultLayoutId="@xml/default_workspace_5x6" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="56"
+ launcher:iconTextSize="13.0"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
+ <grid-option
+ launcher:name="5_by_7"
+ launcher:numRows="7"
+ launcher:numColumns="5"
+ launcher:numFolderRows="6"
+ launcher:numFolderColumns="4"
+ launcher:numHotseatIcons="5"
+ launcher:defaultLayoutId="@xml/default_workspace_5x7" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="56"
+ launcher:iconTextSize="13.0"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
+ <grid-option
+ launcher:name="6_by_6"
+ launcher:numRows="6"
+ launcher:numColumns="6"
+ launcher:numFolderRows="5"
+ launcher:numFolderColumns="5"
+ launcher:numHotseatIcons="6"
+ launcher:defaultLayoutId="@xml/default_workspace_6x6" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="48"
+ launcher:iconTextSize="13.0"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
+</profiles>
diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml
index 3455cb8..b9801fe 100644
--- a/res/xml/launcher_preferences.xml
+++ b/res/xml/launcher_preferences.xml
@@ -17,6 +17,14 @@
<androidx.preference.PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
+ <SwitchPreference
+ android:defaultValue="true"
+ android:key="pref_workspace_edit"
+ android:persistent="true"
+ android:title="@string/settings_edit_allow_title"
+ android:summaryOn="@string/settings_edit_allow_summary_on"
+ android:summaryOff="@string/settings_edit_allow_summary_off" />
+
<com.android.launcher3.settings.NotificationDotsPreference
android:key="pref_icon_badging"
android:title="@string/notification_dots_title"
@@ -45,10 +53,14 @@
android:persistent="true" />
<SwitchPreference
- android:key="pref_grid_options"
- android:title="Enable grid options"
- android:defaultValue="false"
- android:persistent="true" />
+ android:defaultValue="true"
+ android:key="pref_enable_minus_one"
+ android:summary="@string/pref_show_google_now_summary"
+ android:title="@string/title_show_google_app" />
+
+ <Preference
+ android:key="pref_trust_apps"
+ android:title="@string/trust_apps_manager_name" />
<androidx.preference.PreferenceScreen
android:key="pref_developer_options"
@@ -56,4 +68,21 @@
android:title="Developer Options"
android:fragment="com.android.launcher3.settings.DeveloperOptionsFragment"/>
+ <SwitchPreference
+ android:key="pref_desktop_show_labels"
+ android:title="@string/desktop_show_labels"
+ android:defaultValue="true"
+ android:persistent="true" />
+
+ <SwitchPreference
+ android:key="pref_drawer_show_labels"
+ android:title="@string/drawer_show_labels"
+ android:defaultValue="true"
+ android:persistent="true" />
+
+ <SwitchPreference
+ android:key="pref_show_labels_landscape"
+ android:title="@string/show_labels_landscape"
+ android:defaultValue="false"
+ android:persistent="true" />
</androidx.preference.PreferenceScreen>
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index f9a8d1b..b377c0c 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -9,7 +9,6 @@ import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.appwidget.AppWidgetHostView;
-import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
@@ -76,8 +75,6 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
private boolean mTopBorderActive;
private boolean mBottomBorderActive;
- private int mResizeMode;
-
private int mRunningHInc;
private int mRunningVInc;
private int mMinHSpan;
@@ -160,7 +157,6 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
mWidgetView = widgetView;
LauncherAppWidgetProviderInfo info = (LauncherAppWidgetProviderInfo)
widgetView.getAppWidgetInfo();
- mResizeMode = info.resizeMode;
mDragLayer = dragLayer;
mMinHSpan = info.minSpanX;
@@ -169,14 +165,6 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
mWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(getContext(),
widgetView.getAppWidgetInfo().provider, null);
- if (mResizeMode == AppWidgetProviderInfo.RESIZE_HORIZONTAL) {
- mDragHandles[INDEX_TOP].setVisibility(GONE);
- mDragHandles[INDEX_BOTTOM].setVisibility(GONE);
- } else if (mResizeMode == AppWidgetProviderInfo.RESIZE_VERTICAL) {
- mDragHandles[INDEX_LEFT].setVisibility(GONE);
- mDragHandles[INDEX_RIGHT].setVisibility(GONE);
- }
-
// When we create the resize frame, we first mark all cells as unoccupied. The appropriate
// cells (same if not resized, or different) will be marked as occupied when the resize
// frame is dismissed.
@@ -186,14 +174,10 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
}
public boolean beginResizeIfPointInRegion(int x, int y) {
- boolean horizontalActive = (mResizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0;
- boolean verticalActive = (mResizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0;
-
- mLeftBorderActive = (x < mTouchTargetWidth) && horizontalActive;
- mRightBorderActive = (x > getWidth() - mTouchTargetWidth) && horizontalActive;
- mTopBorderActive = (y < mTouchTargetWidth + mTopTouchRegionAdjustment) && verticalActive;
- mBottomBorderActive = (y > getHeight() - mTouchTargetWidth + mBottomTouchRegionAdjustment)
- && verticalActive;
+ mLeftBorderActive = x < mTouchTargetWidth;
+ mRightBorderActive = x > getWidth() - mTouchTargetWidth;
+ mTopBorderActive = y < mTouchTargetWidth + mTopTouchRegionAdjustment;
+ mBottomBorderActive = y > getHeight() - mTouchTargetWidth + mBottomTouchRegionAdjustment;
boolean anyBordersActive = mLeftBorderActive || mRightBorderActive
|| mTopBorderActive || mBottomBorderActive;
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index 7adb6a4..5e73880 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -16,12 +16,15 @@
package com.android.launcher3;
+import static com.android.launcher3.InvariantDeviceProfile.KEY_SHOW_DESKTOP_LABELS;
+import static com.android.launcher3.InvariantDeviceProfile.KEY_SHOW_DRAWER_LABELS;
import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
@@ -72,7 +75,6 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
private static final int[] STATE_PRESSED = new int[] {android.R.attr.state_pressed};
-
private static final Property<BubbleTextView, Float> DOT_SCALE_PROPERTY
= new Property<BubbleTextView, Float>(Float.TYPE, "dotScale") {
@Override
@@ -134,10 +136,11 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
private boolean mIgnorePressedStateChange;
@ViewDebug.ExportedProperty(category = "launcher")
private boolean mDisableRelayout = false;
-
@ViewDebug.ExportedProperty(category = "launcher")
private final boolean mIgnorePaddingTouch;
+ private boolean mShouldShowLabel;
+
private IconLoadRequest mIconLoadRequest;
public BubbleTextView(Context context) {
@@ -157,6 +160,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
R.styleable.BubbleTextView, defStyle, 0);
mLayoutHorizontal = a.getBoolean(R.styleable.BubbleTextView_layoutHorizontal, false);
+ SharedPreferences prefs = Utilities.getPrefs(context.getApplicationContext());
+
mDisplay = a.getInteger(R.styleable.BubbleTextView_iconDisplay, DISPLAY_WORKSPACE);
final int defaultIconSize;
if (mDisplay == DISPLAY_WORKSPACE) {
@@ -164,12 +169,14 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.iconTextSizePx);
setCompoundDrawablePadding(grid.iconDrawablePaddingPx);
defaultIconSize = grid.iconSizePx;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
mIgnorePaddingTouch = true;
} else if (mDisplay == DISPLAY_ALL_APPS) {
DeviceProfile grid = mActivity.getDeviceProfile();
setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.allAppsIconTextSizePx);
setCompoundDrawablePadding(grid.allAppsIconDrawablePaddingPx);
defaultIconSize = grid.allAppsIconSizePx;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DRAWER_LABELS, true);
mIgnorePaddingTouch = true;
} else if (mDisplay == DISPLAY_FOLDER) {
DeviceProfile grid = mActivity.getDeviceProfile();
@@ -177,10 +184,12 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
setCompoundDrawablePadding(grid.folderChildDrawablePaddingPx);
defaultIconSize = grid.folderChildIconSizePx;
mIgnorePaddingTouch = true;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
} else {
// widget_selection or shortcut_popup
defaultIconSize = mActivity.getDeviceProfile().iconSizePx;
mIgnorePaddingTouch = false;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
}
mCenterVertically = a.getBoolean(R.styleable.BubbleTextView_centerVertically, false);
@@ -292,7 +301,9 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
mDotParams.color = IconPalette.getMutedColor(info.iconColor, 0.54f);
setIcon(iconDrawable);
- setText(info.title);
+ if (mShouldShowLabel) {
+ setText(info.title);
+ }
if (info.contentDescription != null) {
setContentDescription(info.isDisabled()
? getContext().getString(R.string.disabled_app_label, info.contentDescription)
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index bc6fa6e..0ffe2d7 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -16,7 +16,10 @@
package com.android.launcher3;
+import static com.android.launcher3.InvariantDeviceProfile.KEY_SHOW_LABELS_LANDSCAPE;
+
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Point;
@@ -137,6 +140,8 @@ public class DeviceProfile {
public DotRenderer mDotRendererWorkSpace;
public DotRenderer mDotRendererAllApps;
+ private SharedPreferences mPrefs;
+
public DeviceProfile(Context context, InvariantDeviceProfile inv,
InvariantDeviceProfile originalIDP, Point minSize, Point maxSize,
int width, int height, boolean isLandscape, boolean isMultiWindowMode) {
@@ -171,6 +176,8 @@ public class DeviceProfile {
transposeLayoutWithOrientation =
res.getBoolean(R.bool.hotseat_transpose_layout_with_orientation);
+ mPrefs = Utilities.getPrefs(context.getApplicationContext());
+
context = getContext(context, isVerticalBarLayout()
? Configuration.ORIENTATION_LANDSCAPE
: Configuration.ORIENTATION_PORTRAIT);
@@ -362,8 +369,8 @@ public class DeviceProfile {
allAppsCellHeightPx = getCellSize().y;
allAppsCellWidthPx = allAppsIconSizePx + allAppsIconDrawablePaddingPx;
- if (isVerticalBarLayout()) {
- // Always hide the Workspace text with vertical bar layout.
+ if (isVerticalBarLayout() && !mPrefs.getBoolean(KEY_SHOW_LABELS_LANDSCAPE, false)) {
+ // Hide Workspace text with vertical bar layout if needed.
adjustToHideWorkspaceLabels();
}
@@ -559,9 +566,15 @@ public class DeviceProfile {
}
public static int calculateCellWidth(int width, int countX) {
+ if (countX == 0) {
+ countX = 4;
+ }
return width / countX;
}
public static int calculateCellHeight(int height, int countY) {
+ if (countY == 0) {
+ countY = 5;
+ }
return height / countY;
}
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index d66ba73..b80cff8 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -19,7 +19,6 @@ package com.android.launcher3;
import static com.android.launcher3.Utilities.getDevicePrefs;
import static com.android.launcher3.config.FeatureFlags.APPLY_CONFIG_AT_RUNTIME;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-import static com.android.launcher3.settings.SettingsActivity.GRID_OPTIONS_PREFERENCE_KEY;
import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter;
import android.annotation.TargetApi;
@@ -28,6 +27,8 @@ import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -60,7 +61,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-public class InvariantDeviceProfile {
+public class InvariantDeviceProfile implements OnSharedPreferenceChangeListener {
public static final String TAG = "IDP";
// We do not need any synchronization for this variable as its only written on UI thread.
@@ -74,7 +75,11 @@ public class InvariantDeviceProfile {
public static final int CHANGE_FLAG_GRID = 1 << 0;
public static final int CHANGE_FLAG_ICON_PARAMS = 1 << 1;
+ public static final String KEY_SHOW_DESKTOP_LABELS = "pref_desktop_show_labels";
+ public static final String KEY_SHOW_DRAWER_LABELS = "pref_drawer_show_labels";
+ public static final String KEY_SHOW_LABELS_LANDSCAPE = "pref_show_labels_landscape";
public static final String KEY_ICON_PATH_REF = "pref_icon_shape_path";
+ public static final String KEY_WORKSPACE_EDIT = "pref_workspace_edit";
// Constants that affects the interpolation curve between statically defined device profile
// buckets.
@@ -132,6 +137,8 @@ public class InvariantDeviceProfile {
private ConfigMonitor mConfigMonitor;
private OverlayMonitor mOverlayMonitor;
+ private Context mContext;
+
@VisibleForTesting
public InvariantDeviceProfile() {}
@@ -156,9 +163,12 @@ public class InvariantDeviceProfile {
@TargetApi(23)
private InvariantDeviceProfile(Context context) {
- String gridName = Utilities.getPrefs(context).getBoolean(GRID_OPTIONS_PREFERENCE_KEY, false)
- ? Utilities.getPrefs(context).getString(KEY_IDP_GRID_NAME, null)
- : null;
+ mContext = context;
+
+ SharedPreferences prefs = Utilities.getPrefs(context);
+ prefs.registerOnSharedPreferenceChangeListener(this);
+
+ String gridName = prefs.getString(KEY_IDP_GRID_NAME, null);
initGrid(context, gridName);
mConfigMonitor = new ConfigMonitor(context,
APPLY_CONFIG_AT_RUNTIME.get() ? this::onConfigChanged : this::killProcess);
@@ -175,6 +185,15 @@ public class InvariantDeviceProfile {
}
}
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if (KEY_SHOW_DESKTOP_LABELS.equals(key) || KEY_SHOW_DRAWER_LABELS.equals(key)) {
+ apply(mContext, CHANGE_FLAG_ICON_PARAMS);
+ } else if (KEY_SHOW_LABELS_LANDSCAPE.equals(key)) {
+ onConfigChanged(mContext);
+ }
+ }
+
/**
* Retrieve system defined or RRO overriden icon shape.
*/
@@ -348,9 +367,7 @@ public class InvariantDeviceProfile {
InvariantDeviceProfile oldProfile = new InvariantDeviceProfile(this);
// Re-init grid
- String gridName = Utilities.getPrefs(context).getBoolean(GRID_OPTIONS_PREFERENCE_KEY, false)
- ? Utilities.getPrefs(context).getString(KEY_IDP_GRID_NAME, null)
- : null;
+ String gridName = Utilities.getPrefs(context).getString(KEY_IDP_GRID_NAME, null);
initGrid(context, gridName);
int changeFlags = 0;
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 1338b30..68c8f1e 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -102,6 +102,7 @@ import com.android.launcher3.graphics.RotationMode;
import com.android.launcher3.icons.IconCache;
import com.android.launcher3.keyboard.CustomActionsPopup;
import com.android.launcher3.keyboard.ViewGroupFocusHelper;
+import com.android.launcher3.lineage.LineageUtils;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.logging.StatsLogUtils;
import com.android.launcher3.logging.UserEventDispatcher;
@@ -1022,6 +1023,13 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
mStateManager.onWindowFocusChanged();
}
+ public void startActivitySafelyAuth(View v, Intent intent, ItemInfo item,
+ String sourceContainer) {
+ LineageUtils.showLockScreen(this, getString(R.string.trust_apps_manager_name), () -> {
+ startActivitySafely(v, intent, item, sourceContainer);
+ });
+ }
+
public interface LauncherOverlay {
/**
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index ff2b400..1fccd4f 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1163,6 +1163,12 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
if (mIsBeingDragged) {
final int activePointerId = mActivePointerId;
final int pointerIndex = ev.findPointerIndex(activePointerId);
+
+ if (pointerIndex == -1) {
+ onScrollInteractionEnd();
+ return true;
+ }
+
final float x = ev.getX(pointerIndex);
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 5d0effa..108898e 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -46,7 +46,6 @@ import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.os.TransactionTooLargeException;
-import android.provider.Settings;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
@@ -68,7 +67,6 @@ import com.android.launcher3.icons.LauncherIcons;
import com.android.launcher3.shortcuts.DeepShortcutManager;
import com.android.launcher3.shortcuts.ShortcutKey;
import com.android.launcher3.util.IntArray;
-import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.views.Transposable;
import com.android.launcher3.widget.PendingAddShortcutInfo;
@@ -117,14 +115,7 @@ public final class Utilities {
* Indicates if the device has a debug build. Should only be used to store additional info or
* add extra logging and not for changing the app behavior.
*/
- public static final boolean IS_DEBUG_DEVICE =
- Build.TYPE.toLowerCase(Locale.ROOT).contains("debug") ||
- Build.TYPE.toLowerCase(Locale.ROOT).equals("eng");
-
- public static boolean isDevelopersOptionsEnabled(Context context) {
- return Settings.Global.getInt(context.getApplicationContext().getContentResolver(),
- Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
- }
+ public static final boolean IS_DEBUG_DEVICE = false;
// An intent extra to indicate the horizontal scroll of the wallpaper.
public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
@@ -141,12 +132,6 @@ public final class Utilities {
return Log.isLoggable(propertyName, Log.VERBOSE);
}
- public static boolean existsStyleWallpapers(Context context) {
- ResolveInfo ri = context.getPackageManager().resolveActivity(
- PackageManagerHelper.getStyleWallpapersIntent(context), 0);
- return ri != null;
- }
-
/**
* Given a coordinate relative to the descendant, find the coordinate in a parent view's
* coordinates.
@@ -624,4 +609,9 @@ public final class Utilities {
return mSize;
}
}
+
+ public static boolean isWorkspaceEditAllowed(Context context) {
+ SharedPreferences prefs = getPrefs(context.getApplicationContext());
+ return prefs.getBoolean(InvariantDeviceProfile.KEY_WORKSPACE_EDIT, true);
+ }
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 9eeb286..fcb4db7 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1887,8 +1887,7 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
final LauncherAppWidgetHostView hostView = (LauncherAppWidgetHostView) cell;
AppWidgetProviderInfo pInfo = hostView.getAppWidgetInfo();
- if (pInfo != null && pInfo.resizeMode != AppWidgetProviderInfo.RESIZE_NONE
- && !d.accessibleDrag) {
+ if (pInfo != null && !d.accessibleDrag) {
onCompleteRunnable = new Runnable() {
public void run() {
if (!isPageInTransition()) {
diff --git a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
index 31fcc8c..bcfdf91 100644
--- a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
+++ b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
@@ -49,6 +49,7 @@ import com.android.launcher3.allapps.SearchUiManager;
import com.android.launcher3.anim.PropertySetter;
import com.android.launcher3.graphics.TintedDrawableSpan;
import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.views.ActivityContext;
import java.util.ArrayList;
@@ -61,6 +62,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
private final Launcher mLauncher;
+ private final ActivityContext mActivity;
private final AllAppsSearchBarController mSearchBarController;
private final SpannableStringBuilder mSearchQueryBuilder;
@@ -82,16 +84,27 @@ public class AppsSearchContainerLayout extends ExtendedEditText
public AppsSearchContainerLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
- mLauncher = Launcher.getLauncher(context);
+ mActivity = ActivityContext.lookupContext(context);
+ mLauncher = tryGetLauncher(context);
mSearchBarController = new AllAppsSearchBarController();
mSearchQueryBuilder = new SpannableStringBuilder();
Selection.setSelection(mSearchQueryBuilder, 0);
- mFixedTranslationY = getTranslationY();
+ mFixedTranslationY = Math.round(getTranslationY());
mMarginTopAdjusting = mFixedTranslationY - getPaddingTop();
setHint(prefixTextWithIcon(getContext(), R.drawable.ic_allapps_search, getHint()));
+
+ setTranslationY(0);
+ }
+
+ private Launcher tryGetLauncher(Context context) {
+ try {
+ return Launcher.getLauncher(context);
+ } catch (IllegalArgumentException e) {
+ return null;
+ }
}
@Override
@@ -109,11 +122,11 @@ public class AppsSearchContainerLayout extends ExtendedEditText
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// Update the width to match the grid padding
- DeviceProfile dp = mLauncher.getDeviceProfile();
+ DeviceProfile dp = mActivity.getDeviceProfile();
int myRequestedWidth = getSize(widthMeasureSpec);
- int rowWidth = myRequestedWidth - mAppsView.getActiveRecyclerView().getPaddingLeft()
- - mAppsView.getActiveRecyclerView().getPaddingRight();
-
+ int leftRightPadding = dp.desiredWorkspaceLeftRightMarginPx
+ + dp.cellLayoutPaddingLeftRightPx;
+ int rowWidth = myRequestedWidth - leftRightPadding * 2;
int cellWidth = DeviceProfile.calculateCellWidth(rowWidth, dp.inv.numHotseatIcons);
int iconVisibleSize = Math.round(ICON_VISIBLE_AREA_FACTOR * dp.iconSizePx);
int iconPadding = cellWidth - iconVisibleSize;
@@ -133,6 +146,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
int expectedLeft = parent.getPaddingLeft() + (availableWidth - myWidth) / 2;
int shift = expectedLeft - left;
setTranslationX(shift);
+ offsetTopAndBottom((int) mFixedTranslationY);
}
@Override
@@ -207,7 +221,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
@Override
public float getScrollRangeDelta(Rect insets) {
- if (mLauncher.getDeviceProfile().isVerticalBarLayout()) {
+ if (mActivity.getDeviceProfile().isVerticalBarLayout()) {
return 0;
} else {
int topMargin = Math.round(Math.max(
diff --git a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
index 26f6ec3..604ac83 100644
--- a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
+++ b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
@@ -141,7 +141,8 @@ public class DefaultAppSearchAlgorithm implements SearchAlgorithm {
// Always a break point for a symbol
return true;
default:
- return false;
+ // Always a break point at first character
+ return prevType == Character.UNASSIGNED;
}
}
diff --git a/src/com/android/launcher3/config/BaseFlags.java b/src/com/android/launcher3/config/BaseFlags.java
index 4b90e42..65cf121 100644
--- a/src/com/android/launcher3/config/BaseFlags.java
+++ b/src/com/android/launcher3/config/BaseFlags.java
@@ -20,6 +20,7 @@ import static androidx.core.util.Preconditions.checkNotNull;
import android.content.Context;
import android.content.SharedPreferences;
+import android.provider.Settings;
import androidx.annotation.GuardedBy;
import androidx.annotation.Keep;
@@ -52,7 +53,9 @@ public abstract class BaseFlags {
}
public static boolean showFlagTogglerUi(Context context) {
- return Utilities.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context);
+ return Utilities.IS_DEBUG_DEVICE &&
+ Settings.Global.getInt(context.getApplicationContext().getContentResolver(),
+ Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
}
public static final boolean IS_DOGFOOD_BUILD = false;
@@ -66,7 +69,7 @@ public abstract class BaseFlags {
"Adds a promise icon to the home screen for new install sessions.");
// Enable moving the QSB on the 0th screen of the workspace
- public static final boolean QSB_ON_FIRST_SCREEN = true;
+ public static final boolean QSB_ON_FIRST_SCREEN = false;
public static final TogglableFlag EXAMPLE_FLAG = new TogglableFlag("EXAMPLE_FLAG", true,
"An example flag that doesn't do anything. Useful for testing");
diff --git a/src/com/android/launcher3/dragndrop/DragController.java b/src/com/android/launcher3/dragndrop/DragController.java
index dcdf5d6..d845ad2 100644
--- a/src/com/android/launcher3/dragndrop/DragController.java
+++ b/src/com/android/launcher3/dragndrop/DragController.java
@@ -41,6 +41,7 @@ import com.android.launcher3.DropTarget;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
import com.android.launcher3.WorkspaceItemInfo;
import com.android.launcher3.accessibility.DragViewStateAnnouncer;
import com.android.launcher3.testing.TestProtocol;
@@ -429,6 +430,11 @@ public class DragController implements DragDriver.EventListener, TouchController
return false;
}
+ if (!Utilities.isWorkspaceEditAllowed(mLauncher.getApplicationContext())) {
+ cancelDrag();
+ return false;
+ }
+
// Update the velocity tracker
mFlingToDeleteHelper.recordMotionEvent(ev);
diff --git a/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java b/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java
index fde220c..b6fcdf4 100644
--- a/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java
+++ b/src/com/android/launcher3/keyboard/ViewGroupFocusHelper.java
@@ -54,7 +54,7 @@ public class ViewGroupFocusHelper extends FocusIndicatorHelper {
outRect.left += child.getX();
outRect.top += child.getY();
- if (parent != mContainer) {
+ if (parent != null && parent != mContainer) {
if (parent instanceof PagedView) {
PagedView page = (PagedView) parent;
outRect.left -= page.getScrollForPage(page.indexOfChild(child));
diff --git a/src/com/android/launcher3/lineage/LineageLauncher.java b/src/com/android/launcher3/lineage/LineageLauncher.java
new file mode 100644
index 0000000..f8aedcc
--- /dev/null
+++ b/src/com/android/launcher3/lineage/LineageLauncher.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage;
+
+import com.android.launcher3.Launcher;
+
+public class LineageLauncher extends Launcher {
+
+ private final LineageLauncherCallbacks mCallbacks;
+
+ public LineageLauncher() {
+ mCallbacks = new LineageLauncherCallbacks(this);
+ setLauncherCallbacks(mCallbacks);
+ }
+
+ public LineageLauncherCallbacks getCallbacks() {
+ return mCallbacks;
+ }
+}
diff --git a/src/com/android/launcher3/lineage/LineageLauncherCallbacks.java b/src/com/android/launcher3/lineage/LineageLauncherCallbacks.java
new file mode 100644
index 0000000..b7e662b
--- /dev/null
+++ b/src/com/android/launcher3/lineage/LineageLauncherCallbacks.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage;
+
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.os.Bundle;
+import android.os.Handler;
+
+import com.android.launcher3.AppInfo;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherCallbacks;
+import com.android.launcher3.Utilities;
+
+import com.google.android.libraries.gsa.launcherclient.LauncherClient;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+public class LineageLauncherCallbacks implements LauncherCallbacks,
+ OnSharedPreferenceChangeListener, OnDeviceProfileChangeListener {
+ public static final String KEY_ENABLE_MINUS_ONE = "pref_enable_minus_one";
+ public static final String SEARCH_PACKAGE = "com.google.android.googlequicksearchbox";
+
+ private final LineageLauncher mLauncher;
+
+ private OverlayCallbackImpl mOverlayCallbacks;
+ private LauncherClient mLauncherClient;
+ private boolean mDeferCallbacks;
+
+ public LineageLauncherCallbacks(LineageLauncher launcher) {
+ mLauncher = launcher;
+ }
+
+ public void deferCallbacksUntilNextResumeOrStop() {
+ mDeferCallbacks = true;
+ }
+
+ public LauncherClient getLauncherClient() {
+ return mLauncherClient;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ SharedPreferences prefs = Utilities.getPrefs(mLauncher);
+ mOverlayCallbacks = new OverlayCallbackImpl(mLauncher);
+ mLauncherClient = new LauncherClient(mLauncher, mOverlayCallbacks, getClientOptions(prefs));
+ mOverlayCallbacks.setClient(mLauncherClient);
+ prefs.registerOnSharedPreferenceChangeListener(this);
+
+ mLauncher.addOnDeviceProfileChangeListener(this);
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ mLauncherClient.onDetachedFromWindow();
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ mLauncherClient.onAttachedToWindow();
+ }
+
+ @Override
+ public void onHomeIntent(boolean internalStateHandled) {
+ mLauncherClient.hideOverlay(mLauncher.isStarted() && !mLauncher.isForceInvisible());
+ }
+
+ @Override
+ public void onResume() {
+ Handler handler = mLauncher.getDragLayer().getHandler();
+ if (mDeferCallbacks) {
+ if (handler == null) {
+ // Finish defer if we are not attached to window.
+ checkIfStillDeferred();
+ } else {
+ // Wait one frame before checking as we can get multiple resume-pause events
+ // in the same frame.
+ handler.post(this::checkIfStillDeferred);
+ }
+ } else {
+ mLauncherClient.onResume();
+ }
+
+ }
+
+ @Override
+ public void onPause() {
+ if (!mDeferCallbacks) {
+ mLauncherClient.onPause();
+ }
+ }
+
+ @Override
+ public void onStart() {
+ if (!mDeferCallbacks) {
+ mLauncherClient.onStart();
+ }
+ }
+
+ @Override
+ public void onStop() {
+ if (mDeferCallbacks) {
+ checkIfStillDeferred();
+ } else {
+ mLauncherClient.onStop();
+ }
+ }
+
+ @Override
+ public void onDeviceProfileChanged(DeviceProfile dp) {
+ mLauncherClient.reattachOverlay();
+ }
+
+ private void checkIfStillDeferred() {
+ if (!mDeferCallbacks) {
+ return;
+ }
+ if (!mLauncher.hasBeenResumed() && mLauncher.isStarted()) {
+ return;
+ }
+ mDeferCallbacks = false;
+
+ // Move the client to the correct state. Calling the same method twice is no-op.
+ if (mLauncher.isStarted()) {
+ mLauncherClient.onStart();
+ }
+ if (mLauncher.hasBeenResumed()) {
+ mLauncherClient.onResume();
+ } else {
+ mLauncherClient.onPause();
+ }
+ if (!mLauncher.isStarted()) {
+ mLauncherClient.onStop();
+ }
+ }
+ @Override
+ public void onDestroy() {
+ mLauncherClient.onDestroy();
+ Utilities.getPrefs(mLauncher).unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if (KEY_ENABLE_MINUS_ONE.equals(key)) {
+ mLauncherClient.setClientOptions(getClientOptions(prefs));
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) { }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) { }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { }
+
+ @Override
+ public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args) {
+ mLauncherClient.dump(prefix, w);
+ }
+
+ @Override
+ public boolean handleBackPressed() {
+ return false;
+ }
+
+ @Override
+ public void onTrimMemory(int level) { }
+
+ @Override
+ public void onLauncherProviderChange() { }
+
+ @Override
+ public boolean startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData) {
+ return false;
+ }
+
+ private LauncherClient.ClientOptions getClientOptions(SharedPreferences prefs) {
+ return new LauncherClient.ClientOptions(
+ prefs.getBoolean(KEY_ENABLE_MINUS_ONE, true),
+ true, /* enableHotword */
+ true /* enablePrewarming */
+ );
+ }
+}
diff --git a/src/com/android/launcher3/lineage/LineageUtils.java b/src/com/android/launcher3/lineage/LineageUtils.java
new file mode 100644
index 0000000..75a9252
--- /dev/null
+++ b/src/com/android/launcher3/lineage/LineageUtils.java
@@ -0,0 +1,78 @@
+package com.android.launcher3.lineage;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.hardware.biometrics.BiometricPrompt;
+import android.os.CancellationSignal;
+import android.os.Handler;
+import android.os.Looper;
+import android.widget.Toast;
+
+import com.android.launcher3.R;
+
+public class LineageUtils {
+
+ /**
+ * Shows authentication screen to confirm credentials (pin, pattern or password) for the current
+ * user of the device.
+ *
+ * @param context The {@code Context} used to get {@code KeyguardManager} service
+ * @param title the {@code String} which will be shown as the pompt title
+ * @param successRunnable The {@code Runnable} which will be executed if the user does not setup
+ * device security or if lock screen is unlocked
+ */
+ public static void showLockScreen(Context context, String title, Runnable successRunnable) {
+ if (hasSecureKeyguard(context)) {
+ final BiometricPrompt.AuthenticationCallback authenticationCallback =
+ new BiometricPrompt.AuthenticationCallback() {
+ @Override
+ public void onAuthenticationSucceeded(
+ BiometricPrompt.AuthenticationResult result) {
+ successRunnable.run();
+ }
+
+ @Override
+ public void onAuthenticationError(int errorCode, CharSequence errString) {
+ //Do nothing
+ }
+ };
+
+ final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(context)
+ .setTitle(title);
+
+ final KeyguardManager keyguardManager = context.getSystemService(KeyguardManager.class);
+
+ if (keyguardManager.isDeviceSecure()) {
+ builder.setDeviceCredentialAllowed(true);
+ }
+
+ final BiometricPrompt bp = builder.build();
+ final Handler handler = new Handler(Looper.getMainLooper());
+ bp.authenticate(new CancellationSignal(),
+ runnable -> handler.post(runnable),
+ authenticationCallback);
+ } else {
+ // Notify the user a secure keyguard is required for protected apps,
+ // but allow to set hidden apps
+ Toast.makeText(context, R.string.trust_apps_no_lock_error, Toast.LENGTH_LONG)
+ .show();
+ successRunnable.run();
+ }
+ }
+
+ public static boolean hasSecureKeyguard(Context context) {
+ final KeyguardManager keyguardManager = context.getSystemService(KeyguardManager.class);
+ return keyguardManager != null && keyguardManager.isKeyguardSecure();
+ }
+
+ public static boolean hasPackageInstalled(Context context, String pkgName) {
+ try {
+ ApplicationInfo ai = context.getPackageManager().getApplicationInfo(pkgName, 0);
+ return ai.enabled;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+}
diff --git a/src/com/android/launcher3/lineage/OverlayCallbackImpl.java b/src/com/android/launcher3/lineage/OverlayCallbackImpl.java
new file mode 100644
index 0000000..d0d6756
--- /dev/null
+++ b/src/com/android/launcher3/lineage/OverlayCallbackImpl.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.Launcher.LauncherOverlay;
+import com.android.launcher3.Launcher.LauncherOverlayCallbacks;
+import com.google.android.libraries.gsa.launcherclient.LauncherClient;
+import com.google.android.libraries.gsa.launcherclient.LauncherClientCallbacks;
+
+/**
+ * Implements {@link LauncherOverlay} and passes all the corresponding events to {@link
+ * LauncherClient}. {@see setClient}
+ *
+ * <p>Implements {@link LauncherClientCallbacks} and sends all the corresponding callbacks to {@link
+ * Launcher}.
+ */
+public class OverlayCallbackImpl implements LauncherOverlay, LauncherClientCallbacks {
+ private final Launcher mLauncher;
+
+ private LauncherClient mClient;
+ private LauncherOverlayCallbacks mLauncherOverlayCallbacks;
+ private boolean mWasOverlayAttached = false;
+
+ public OverlayCallbackImpl(Launcher launcher) {
+ mLauncher = launcher;
+ }
+
+ public void setClient(LauncherClient client) {
+ mClient = client;
+ }
+
+ @Override
+ public void onServiceStateChanged(boolean overlayAttached, boolean hotwordActive) {
+ if (overlayAttached != mWasOverlayAttached) {
+ mWasOverlayAttached = overlayAttached;
+ mLauncher.setLauncherOverlay(overlayAttached ? this : null);
+ }
+ }
+
+ @Override
+ public void onOverlayScrollChanged(float progress) {
+ if (mLauncherOverlayCallbacks != null) {
+ mLauncherOverlayCallbacks.onScrollChanged(progress);
+ }
+ }
+
+ @Override
+ public void onScrollInteractionBegin() {
+ mClient.startMove();
+ }
+
+ @Override
+ public void onScrollInteractionEnd() {
+ mClient.endMove();
+ }
+
+ @Override
+ public void onScrollChange(float progress, boolean rtl) {
+ mClient.updateMove(progress);
+ }
+
+ @Override
+ public void setOverlayCallbacks(Launcher.LauncherOverlayCallbacks callbacks) {
+ mLauncherOverlayCallbacks = callbacks;
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/HiddenAppsFilter.java b/src/com/android/launcher3/lineage/trust/HiddenAppsFilter.java
new file mode 100644
index 0000000..9428876
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/HiddenAppsFilter.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust;
+
+import android.content.ComponentName;
+import android.content.Context;
+
+import com.android.launcher3.AppFilter;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
+
+@SuppressWarnings("unused")
+public class HiddenAppsFilter extends AppFilter {
+ private TrustDatabaseHelper mDbHelper;
+
+ public HiddenAppsFilter(Context context) {
+ if (context == null) {
+ throw new IllegalArgumentException("Context must not be null!");
+ }
+
+ mDbHelper = TrustDatabaseHelper.getInstance(context);
+ }
+
+ @Override
+ public boolean shouldShowApp(ComponentName app) {
+ return !mDbHelper.isPackageHidden(app.getPackageName());
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/LoadTrustComponentsTask.java b/src/com/android/launcher3/lineage/trust/LoadTrustComponentsTask.java
new file mode 100644
index 0000000..bf0a08d
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/LoadTrustComponentsTask.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.lineage.trust.db.TrustComponent;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class LoadTrustComponentsTask extends AsyncTask<Void, Integer, List<TrustComponent>> {
+ @NonNull
+ private TrustDatabaseHelper mDbHelper;
+
+ @NonNull
+ private PackageManager mPackageManager;
+
+ @NonNull
+ private Callback mCallback;
+
+ LoadTrustComponentsTask(@NonNull TrustDatabaseHelper dbHelper,
+ @NonNull PackageManager packageManager,
+ @NonNull Callback callback) {
+ mDbHelper = dbHelper;
+ mPackageManager = packageManager;
+ mCallback = callback;
+ }
+
+ @Override
+ protected List<TrustComponent> doInBackground(Void... voids) {
+ List<TrustComponent> list = new ArrayList<>();
+
+ Intent filter = new Intent(Intent.ACTION_MAIN, null);
+ filter.addCategory(Intent.CATEGORY_LAUNCHER);
+
+ List<ResolveInfo> apps = mPackageManager.queryIntentActivities(filter,
+ PackageManager.GET_META_DATA);
+
+ int numPackages = apps.size();
+ for (int i = 0; i < numPackages; i++) {
+ ResolveInfo app = apps.get(i);
+ try {
+ String pkgName = app.activityInfo.packageName;
+ String label = mPackageManager.getApplicationLabel(
+ mPackageManager.getApplicationInfo(pkgName,
+ PackageManager.GET_META_DATA)).toString();
+ Drawable icon = app.loadIcon(mPackageManager);
+ boolean isHidden = mDbHelper.isPackageHidden(pkgName);
+ boolean isProtected = mDbHelper.isPackageProtected(pkgName);
+
+ list.add(new TrustComponent(pkgName, icon, label, isHidden, isProtected));
+
+ publishProgress(Math.round(i * 100f / numPackages));
+ } catch (PackageManager.NameNotFoundException ignored) {
+ }
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ Collections.sort(list, (a, b) -> a.getLabel().compareTo(b.getLabel()));
+ }
+
+ return list;
+ }
+
+ @Override
+ protected void onProgressUpdate(Integer... values) {
+ if (values.length > 0) {
+ mCallback.onLoadListProgress(values[0]);
+ }
+ }
+
+ @Override
+ protected void onPostExecute(List<TrustComponent> trustComponents) {
+ mCallback.onLoadCompleted(trustComponents);
+ }
+
+ interface Callback {
+ void onLoadListProgress(int progress);
+ void onLoadCompleted(List<TrustComponent> result);
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/TrustAppsActivity.java b/src/com/android/launcher3/lineage/trust/TrustAppsActivity.java
new file mode 100644
index 0000000..61bcc79
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/TrustAppsActivity.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.lineage.LineageUtils;
+import com.android.launcher3.lineage.trust.db.TrustComponent;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
+
+import java.util.List;
+
+import static com.android.launcher3.lineage.trust.db.TrustComponent.Kind.HIDDEN;
+import static com.android.launcher3.lineage.trust.db.TrustComponent.Kind.PROTECTED;
+
+public class TrustAppsActivity extends Activity implements
+ TrustAppsAdapter.Listener,
+ LoadTrustComponentsTask.Callback,
+ UpdateItemTask.UpdateCallback {
+
+ private static final String KEY_TRUST_ONBOARDING = "pref_trust_onboarding";
+
+ private RecyclerView mRecyclerView;
+ private LinearLayout mLoadingView;
+ private ProgressBar mProgressBar;
+
+ private TrustDatabaseHelper mDbHelper;
+ private TrustAppsAdapter mAdapter;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstance) {
+ super.onCreate(savedInstance);
+
+ ActionBar actionBar = getActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+
+ setContentView(R.layout.activity_hidden_apps);
+ mRecyclerView = findViewById(R.id.hidden_apps_list);
+ mLoadingView = findViewById(R.id.hidden_apps_loading);
+ mLoadingView.setVisibility(View.VISIBLE);
+ mProgressBar = findViewById(R.id.hidden_apps_progress_bar);
+
+ final boolean hasSecureKeyguard = LineageUtils.hasSecureKeyguard(this);
+ mAdapter = new TrustAppsAdapter(this, hasSecureKeyguard);
+ mDbHelper = TrustDatabaseHelper.getInstance(this);
+
+ mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
+ mRecyclerView.setItemAnimator(new DefaultItemAnimator());
+ mRecyclerView.setAdapter(mAdapter);
+
+ showOnBoarding(false);
+
+ new LoadTrustComponentsTask(mDbHelper, getPackageManager(), this).execute();
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater menuInflater = getMenuInflater();
+ menuInflater.inflate(R.menu.menu_trust_apps, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+ if (id == android.R.id.home) {
+ finish();
+ return true;
+ } else if (id == R.id.menu_trust_help) {
+ showOnBoarding(true);
+ return true;
+ } else {
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ @Override
+ public void onHiddenItemChanged(@NonNull TrustComponent component) {
+ new UpdateItemTask(mDbHelper, this, HIDDEN).execute(component);
+ }
+
+ @Override
+ public void onProtectedItemChanged(@NonNull TrustComponent component) {
+ new UpdateItemTask(mDbHelper, this, PROTECTED).execute(component);
+ }
+
+ @Override
+ public void onUpdated(boolean result) {
+ LauncherAppState state = LauncherAppState.getInstanceNoCreate();
+ if (state != null) {
+ state.getModel().forceReload();
+ }
+ }
+
+ @Override
+ public void onLoadListProgress(int progress) {
+ mProgressBar.setProgress(progress);
+ }
+
+ @Override
+ public void onLoadCompleted(List<TrustComponent> result) {
+ mLoadingView.setVisibility(View.GONE);
+ mRecyclerView.setVisibility(View.VISIBLE);
+ mAdapter.update(result);
+ }
+
+ private void showOnBoarding(boolean forceShow) {
+ SharedPreferences preferenceManager = Utilities.getPrefs(this);
+ if (!forceShow && preferenceManager.getBoolean(KEY_TRUST_ONBOARDING, false)) {
+ return;
+ }
+
+ preferenceManager.edit()
+ .putBoolean(KEY_TRUST_ONBOARDING, true)
+ .apply();
+
+ new AlertDialog.Builder(this)
+ .setView(R.layout.dialog_trust_welcome)
+ .setPositiveButton(android.R.string.ok, null)
+ .show();
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/TrustAppsAdapter.java b/src/com/android/launcher3/lineage/trust/TrustAppsAdapter.java
new file mode 100644
index 0000000..6b827d6
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/TrustAppsAdapter.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust;
+
+import android.graphics.drawable.Animatable2;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.launcher3.R;
+import com.android.launcher3.lineage.trust.db.TrustComponent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class TrustAppsAdapter extends RecyclerView.Adapter<TrustAppsAdapter.ViewHolder> {
+ private List<TrustComponent> mList = new ArrayList<>();
+ private Listener mListener;
+ private boolean mHasSecureKeyguard;
+
+ TrustAppsAdapter(Listener listener, boolean hasSecureKeyguard) {
+ mListener = listener;
+ mHasSecureKeyguard = hasSecureKeyguard;
+ }
+
+ public void update(List<TrustComponent> list) {
+ DiffUtil.DiffResult result = DiffUtil.calculateDiff(new Callback(mList, list));
+ mList = list;
+ result.dispatchUpdatesTo(this);
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int type) {
+ return new ViewHolder(LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.item_hidden_app, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
+ viewHolder.bind(mList.get(i), mHasSecureKeyguard);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mList.size();
+ }
+
+ public interface Listener {
+ void onHiddenItemChanged(@NonNull TrustComponent component);
+
+ void onProtectedItemChanged(@NonNull TrustComponent component);
+ }
+
+ class ViewHolder extends RecyclerView.ViewHolder {
+ private ImageView mIconView;
+ private TextView mLabelView;
+ private ImageView mHiddenView;
+ private ImageView mProtectedView;
+
+ ViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ mIconView = itemView.findViewById(R.id.item_hidden_app_icon);
+ mLabelView = itemView.findViewById(R.id.item_hidden_app_title);
+ mHiddenView = itemView.findViewById(R.id.item_hidden_app_switch);
+ mProtectedView = itemView.findViewById(R.id.item_protected_app_switch);
+ }
+
+ void bind(TrustComponent component, boolean hasSecureKeyguard) {
+ mIconView.setImageDrawable(component.getIcon());
+ mLabelView.setText(component.getLabel());
+
+ mHiddenView.setImageResource(component.isHidden() ?
+ R.drawable.ic_hidden_locked : R.drawable.ic_hidden_unlocked);
+ mProtectedView.setImageResource(component.isProtected() ?
+ R.drawable.ic_protected_locked : R.drawable.ic_protected_unlocked);
+
+ mProtectedView.setVisibility(hasSecureKeyguard ? View.VISIBLE : View.GONE);
+
+ mHiddenView.setOnClickListener(v -> {
+ component.invertVisibility();
+
+ mHiddenView.setImageResource(component.isHidden() ?
+ R.drawable.avd_hidden_lock : R.drawable.avd_hidden_unlock);
+ AnimatedVectorDrawable avd = (AnimatedVectorDrawable) mHiddenView.getDrawable();
+
+ int position = getAdapterPosition();
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
+ avd.registerAnimationCallback(new Animatable2.AnimationCallback() {
+ @Override
+ public void onAnimationEnd(Drawable drawable) {
+ updateHiddenList(position, component);
+ }
+ });
+ avd.start();
+ } else {
+ avd.start();
+ updateHiddenList(position, component);
+ }
+ });
+
+ mProtectedView.setOnClickListener(v -> {
+ component.invertProtection();
+
+ mProtectedView.setImageResource(component.isProtected() ?
+ R.drawable.avd_protected_lock : R.drawable.avd_protected_unlock);
+ AnimatedVectorDrawable avd = (AnimatedVectorDrawable) mProtectedView.getDrawable();
+
+ int position = getAdapterPosition();
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
+ avd.registerAnimationCallback(new Animatable2.AnimationCallback() {
+ @Override
+ public void onAnimationEnd(Drawable drawable) {
+ updateProtectedList(position, component);
+ }
+ });
+ avd.start();
+ } else {
+ avd.start();
+ updateProtectedList(position, component);
+ }
+ });
+ }
+
+ private void updateHiddenList(int position, TrustComponent component) {
+ mListener.onHiddenItemChanged(component);
+ updateList(position, component);
+ }
+
+ private void updateProtectedList(int position, TrustComponent component) {
+ mListener.onProtectedItemChanged(component);
+ updateList(position, component);
+ }
+
+ private void updateList(int position, TrustComponent component) {
+ mList.set(position, component);
+ notifyItemChanged(position);
+ }
+ }
+
+ private static class Callback extends DiffUtil.Callback {
+ List<TrustComponent> mOldList;
+ List<TrustComponent> mNewList;
+
+ public Callback(List<TrustComponent> oldList,
+ List<TrustComponent> newList) {
+ mOldList = oldList;
+ mNewList = newList;
+ }
+
+
+ @Override
+ public int getOldListSize() {
+ return mOldList.size();
+ }
+
+ @Override
+ public int getNewListSize() {
+ return mNewList.size();
+ }
+
+ @Override
+ public boolean areItemsTheSame(int iOld, int iNew) {
+ String oldPkg = mOldList.get(iOld).getPackageName();
+ String newPkg = mNewList.get(iNew).getPackageName();
+ return oldPkg.equals(newPkg);
+ }
+
+ @Override
+ public boolean areContentsTheSame(int iOld, int iNew) {
+ return mOldList.get(iOld).equals(mNewList.get(iNew));
+ }
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/UpdateItemTask.java b/src/com/android/launcher3/lineage/trust/UpdateItemTask.java
new file mode 100644
index 0000000..26ae24c
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/UpdateItemTask.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust;
+
+import android.os.AsyncTask;
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.lineage.trust.db.TrustComponent;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
+
+public class UpdateItemTask extends AsyncTask<TrustComponent, Void, Boolean> {
+ @NonNull
+ private TrustDatabaseHelper mDbHelper;
+ @NonNull
+ private UpdateCallback mCallback;
+ @NonNull
+ private TrustComponent.Kind mKind;
+
+ UpdateItemTask(@NonNull TrustDatabaseHelper dbHelper,
+ @NonNull UpdateCallback callback,
+ @NonNull TrustComponent.Kind kind) {
+ mDbHelper = dbHelper;
+ mCallback = callback;
+ mKind = kind;
+ }
+
+ @Override
+ protected Boolean doInBackground(TrustComponent... trustComponents) {
+ if (trustComponents.length < 1) {
+ return false;
+ }
+
+ TrustComponent component = trustComponents[0];
+ String pkgName = component.getPackageName();
+
+ switch (mKind) {
+ case HIDDEN:
+ if (component.isHidden()) {
+ mDbHelper.addHiddenApp(pkgName);
+ } else {
+ mDbHelper.removeHiddenApp(pkgName);
+ }
+ break;
+ case PROTECTED:
+ if (component.isProtected()) {
+ mDbHelper.addProtectedApp(pkgName);
+ } else {
+ mDbHelper.removeProtectedApp(pkgName);
+ }
+ break;
+ }
+ return true;
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ mCallback.onUpdated(result);
+ }
+
+ interface UpdateCallback {
+ void onUpdated(boolean result);
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/db/TrustComponent.java b/src/com/android/launcher3/lineage/trust/db/TrustComponent.java
new file mode 100644
index 0000000..5342bde
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/db/TrustComponent.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust.db;
+
+import android.graphics.drawable.Drawable;
+import androidx.annotation.NonNull;
+
+public class TrustComponent {
+ @NonNull
+ private final String mPackageName;
+ @NonNull
+ private final Drawable mIcon;
+ @NonNull
+ private final String mLabel;
+
+ private boolean mIsHidden;
+ private boolean mIsProtected;
+
+ public TrustComponent(@NonNull String packageName, @NonNull Drawable icon,
+ @NonNull String label, boolean isHidden, boolean isProtected) {
+ mPackageName = packageName;
+ mIcon = icon;
+ mLabel = label;
+ mIsHidden = isHidden;
+ mIsProtected = isProtected;
+ }
+
+ @NonNull
+ public String getPackageName() {
+ return mPackageName;
+ }
+
+ @NonNull
+ public Drawable getIcon() {
+ return mIcon;
+ }
+
+ @NonNull
+ public String getLabel() {
+ return mLabel;
+ }
+
+ public boolean isHidden() {
+ return mIsHidden;
+ }
+
+ public boolean isProtected() {
+ return mIsProtected;
+ }
+
+ public void invertVisibility() {
+ mIsHidden = !mIsHidden;
+ }
+
+ public void invertProtection() {
+ mIsProtected = !mIsProtected;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (!(other instanceof TrustComponent)) {
+ return false;
+ }
+
+ TrustComponent otherComponent = (TrustComponent) other;
+ return otherComponent.getPackageName().equals(mPackageName) &&
+ otherComponent.isHidden() == mIsHidden;
+ }
+
+ @Override
+ public int hashCode() {
+ return mPackageName.hashCode() + (mIsHidden ? 1 : 0);
+ }
+
+ public enum Kind {
+ HIDDEN,
+ PROTECTED,
+ }
+}
diff --git a/src/com/android/launcher3/lineage/trust/db/TrustDatabaseHelper.java b/src/com/android/launcher3/lineage/trust/db/TrustDatabaseHelper.java
new file mode 100644
index 0000000..715355c
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/db/TrustDatabaseHelper.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.launcher3.lineage.trust.db;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class TrustDatabaseHelper extends SQLiteOpenHelper {
+ private static final int DATABASE_VERSION = 1;
+ private static final String DATABASE_NAME = "trust_apps_db";
+
+ private static final String TABLE_NAME = "trust_apps";
+ private static final String KEY_UID = "uid";
+ private static final String KEY_PKGNAME = "pkgname";
+ private static final String KEY_HIDDEN = "hidden";
+ private static final String KEY_PROTECTED = "protected";
+
+ @Nullable
+ private static TrustDatabaseHelper sSingleton;
+
+ private TrustDatabaseHelper(@NonNull Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ public static synchronized TrustDatabaseHelper getInstance(@NonNull Context context) {
+ if (sSingleton == null) {
+ sSingleton = new TrustDatabaseHelper(context);
+ }
+
+ return sSingleton;
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ String CMD_CREATE_TABLE = "CREATE TABLE " + TABLE_NAME +
+ "(" +
+ KEY_UID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
+ KEY_PKGNAME + " TEXT," +
+ KEY_HIDDEN + " INTEGER DEFAULT 0," +
+ KEY_PROTECTED + " INTEGER DEFAULT 0" +
+ ")";
+ db.execSQL(CMD_CREATE_TABLE);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ }
+
+ public void addHiddenApp(@NonNull String packageName) {
+ if (isPackageHidden(packageName)) {
+ return;
+ }
+
+ SQLiteDatabase db = getWritableDatabase();
+ db.beginTransaction();
+
+ try {
+ ContentValues values = new ContentValues();
+ values.put(KEY_PKGNAME, packageName);
+ values.put(KEY_HIDDEN, 1);
+
+ int rows = db.update(TABLE_NAME, values, KEY_PKGNAME + " = ?", new String[]{KEY_PKGNAME});
+ if (rows != 1) {
+ // Entry doesn't exist, create a new one
+ db.insertOrThrow(TABLE_NAME, null, values);
+ }
+ db.setTransactionSuccessful();
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ db.endTransaction();
+ }
+ }
+
+ public void addProtectedApp(@NonNull String packageName) {
+ if (isPackageProtected(packageName)) {
+ return;
+ }
+
+ SQLiteDatabase db = getWritableDatabase();
+ db.beginTransaction();
+
+ try {
+ ContentValues values = new ContentValues();
+ values.put(KEY_PKGNAME, packageName);
+ values.put(KEY_PROTECTED, 1);
+
+ int rows = db.update(TABLE_NAME, values, KEY_PKGNAME + " = ?", new String[]{KEY_PKGNAME});
+ if (rows != 1) {
+ // Entry doesn't exist, create a new one
+ db.insertOrThrow(TABLE_NAME, null, values);
+ }
+ db.setTransactionSuccessful();
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ db.endTransaction();
+ }
+ }
+
+
+ public void removeHiddenApp(@NonNull String packageName) {
+ if (!isPackageHidden(packageName)) {
+ return;
+ }
+
+ SQLiteDatabase db = getWritableDatabase();
+ db.beginTransaction();
+
+ try {
+ ContentValues values = new ContentValues();
+ values.put(KEY_HIDDEN, 0);
+
+ db.update(TABLE_NAME, values, KEY_PKGNAME + " = ?", new String[]{packageName});
+ db.setTransactionSuccessful();
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ db.endTransaction();
+ }
+ }
+
+ public void removeProtectedApp(@NonNull String packageName) {
+ if (!isPackageProtected(packageName)) {
+ return;
+ }
+
+ SQLiteDatabase db = getWritableDatabase();
+ db.beginTransaction();
+
+ try {
+ ContentValues values = new ContentValues();
+ values.put(KEY_PROTECTED, 0);
+
+ db.update(TABLE_NAME, values, KEY_PKGNAME + " = ?", new String[]{packageName});
+ db.setTransactionSuccessful();
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ db.endTransaction();
+ }
+ }
+
+ public boolean isPackageHidden(@NonNull String packageName) {
+ String query = String.format("SELECT * FROM %s WHERE %s = ? AND %s = ?", TABLE_NAME, KEY_PKGNAME, KEY_HIDDEN);
+ SQLiteDatabase db = getReadableDatabase();
+ Cursor cursor = db.rawQuery(query, new String[]{packageName, String.valueOf(1)});
+ boolean result = false;
+ try {
+ result = cursor.getCount() != 0;
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ if (cursor != null && !cursor.isClosed()) {
+ cursor.close();
+ }
+ }
+
+ return result;
+ }
+
+ public boolean isPackageProtected(@NonNull String packageName) {
+ String query = String.format("SELECT * FROM %s WHERE %s = ? AND %s = ?", TABLE_NAME, KEY_PKGNAME, KEY_PROTECTED);
+ SQLiteDatabase db = getReadableDatabase();
+ Cursor cursor = db.rawQuery(query, new String[]{packageName, String.valueOf(1)});
+ boolean result = false;
+ try {
+ result = cursor.getCount() != 0;
+ } catch (Exception e) {
+ // Ignored
+ } finally {
+ if (cursor != null && !cursor.isClosed()) {
+ cursor.close();
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
index e8ac1d4..817a84c 100644
--- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java
+++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
@@ -53,6 +53,7 @@ import com.android.launcher3.ItemInfo;
import com.android.launcher3.ItemInfoWithIcon;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
import com.android.launcher3.accessibility.ShortcutMenuAccessibilityDelegate;
import com.android.launcher3.dot.DotInfo;
@@ -600,6 +601,8 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource,
if (!ItemLongClickListener.canStartDrag(mLauncher)) return false;
// Return early if not the correct view
if (!(v.getParent() instanceof DeepShortcutView)) return false;
+ // Return early if workspace edit is disabled
+ if (!Utilities.isWorkspaceEditAllowed(mLauncher.getApplicationContext())) return false;
// Long clicked on a shortcut.
DeepShortcutView sv = (DeepShortcutView) v.getParent();
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index a87b7b8..cad73eb 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -20,6 +20,7 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.R;
import com.android.launcher3.WorkspaceItemInfo;
+import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.model.AppLaunchTracker;
import com.android.launcher3.model.WidgetItem;
@@ -135,6 +136,7 @@ public abstract class SystemShortcut<T extends BaseDraggingActivity>
@Override
public View.OnClickListener getOnClickListener(final Launcher launcher,
final ItemInfo itemInfo) {
+ if (!Utilities.isWorkspaceEditAllowed(launcher.getApplicationContext())) return null;
if (itemInfo.getTargetComponent() == null) return null;
final List<WidgetItem> widgets =
launcher.getPopupDataProvider().getWidgetsForPackageUser(new PackageUserKey(
diff --git a/src/com/android/launcher3/provider/ImportDataTask.java b/src/com/android/launcher3/provider/ImportDataTask.java
index 970a03e..0e080f2 100644
--- a/src/com/android/launcher3/provider/ImportDataTask.java
+++ b/src/com/android/launcher3/provider/ImportDataTask.java
@@ -103,7 +103,7 @@ public class ImportDataTask {
String profileId = Long.toString(UserManagerCompat.getInstance(mContext)
.getSerialNumberForUser(Process.myUserHandle()));
- boolean createEmptyRowOnFirstScreen;
+ boolean createEmptyRowOnFirstScreen = false;
if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
try (Cursor c = mContext.getContentResolver().query(mOtherFavoritesUri, null,
// get items on the first row of the first screen (min screen id)
diff --git a/src/com/android/launcher3/qsb/QsbContainerView.java b/src/com/android/launcher3/qsb/QsbContainerView.java
index 0eb4285..3ca340a 100644
--- a/src/com/android/launcher3/qsb/QsbContainerView.java
+++ b/src/com/android/launcher3/qsb/QsbContainerView.java
@@ -30,6 +30,8 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.os.Bundle;
import android.provider.Settings;
@@ -58,6 +60,8 @@ import com.android.launcher3.graphics.FragmentWithPreview;
* AppWidgetManager directly, so that it keeps working in that case.
*/
public class QsbContainerView extends FrameLayout {
+ private static final String QSB_PROVIDER_CLASS
+ = "com.google.android.googlequicksearchbox.SearchWidgetProvider";
public static final String SEARCH_PROVIDER_SETTINGS_KEY = "SEARCH_PROVIDER_PACKAGE_NAME";
@@ -148,6 +152,26 @@ public class QsbContainerView extends FrameLayout {
super.setPadding(left, top, right, bottom);
}
+ public static void updateDefaultLayout(Context context, AppWidgetProviderInfo info) {
+ ComponentName provider = info.provider;
+ if (QSB_PROVIDER_CLASS.equals(provider.getClassName())) {
+ try {
+ ActivityInfo activityInfo =
+ context.getPackageManager().getReceiverInfo(provider,
+ PackageManager.GET_META_DATA);
+ Bundle metaData = activityInfo.metaData;
+ int resId = metaData.getInt(
+ "com.google.android.gsa.searchwidget.alt_initial_layout_cqsb", -1);
+ if (resId != -1) {
+ info.initialLayout = resId;
+ }
+ } catch (Exception e) {
+ // Ignore the exception since if any exceptions happen
+ // the original initialyLayout would be used.
+ }
+ }
+ }
+
/**
* A fragment to display the QSB.
*/
@@ -198,6 +222,11 @@ public class QsbContainerView extends FrameLayout {
return getDefaultView(container, false /* show setup icon */);
}
Bundle opts = createBindOptions();
+ // round quick search bar
+ opts.putString("attached-launcher-identifier",
+ getActivity().getPackageName());
+ opts.putString("requested-widget-style", "cqsb");
+
Context context = getContext();
AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
diff --git a/src/com/android/launcher3/qsb/QsbWidgetHostView.java b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
index f5ecda3..660ff7d 100644
--- a/src/com/android/launcher3/qsb/QsbWidgetHostView.java
+++ b/src/com/android/launcher3/qsb/QsbWidgetHostView.java
@@ -16,6 +16,7 @@
package com.android.launcher3.qsb;
+import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@@ -48,6 +49,11 @@ public class QsbWidgetHostView extends NavigableAppWidgetHostView {
super.updateAppWidget(remoteViews);
}
+ @Override
+ public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
+ QsbContainerView.updateDefaultLayout(getContext(), info);
+ super.setAppWidget(appWidgetId, info);
+ }
public boolean isReinflateRequired(int orientation) {
// Re-inflate is required if the orientation has changed since last inflation.
diff --git a/src/com/android/launcher3/settings/SettingsActivity.java b/src/com/android/launcher3/settings/SettingsActivity.java
index 8d2db78..b2520e3 100644
--- a/src/com/android/launcher3/settings/SettingsActivity.java
+++ b/src/com/android/launcher3/settings/SettingsActivity.java
@@ -24,12 +24,10 @@ import static com.android.launcher3.states.RotationHelper.getAllowRotationDefaul
import static com.android.launcher3.util.SecureSettingsObserver.newNotificationSettingsObserver;
import android.app.Activity;
+import android.app.ActivityManager;
import android.app.DialogFragment;
import android.app.Fragment;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
+import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
@@ -48,6 +46,9 @@ import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.graphics.GridOptionsProvider;
+import com.android.launcher3.lineage.LineageLauncherCallbacks;
+import com.android.launcher3.lineage.LineageUtils;
+import com.android.launcher3.lineage.trust.TrustAppsActivity;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
import com.android.launcher3.util.SecureSettingsObserver;
@@ -55,8 +56,7 @@ import com.android.launcher3.util.SecureSettingsObserver;
* Settings activity for Launcher. Currently implements the following setting: Allow rotation
*/
public class SettingsActivity extends Activity
- implements OnPreferenceStartFragmentCallback, OnPreferenceStartScreenCallback,
- SharedPreferences.OnSharedPreferenceChangeListener{
+ implements OnPreferenceStartFragmentCallback, OnPreferenceStartScreenCallback {
private static final String DEVELOPER_OPTIONS_KEY = "pref_developer_options";
private static final String FLAGS_PREFERENCE_KEY = "flag_toggler";
@@ -70,7 +70,8 @@ public class SettingsActivity extends Activity
private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 600;
public static final String SAVE_HIGHLIGHTED_KEY = "android:preference_highlighted";
- public static final String GRID_OPTIONS_PREFERENCE_KEY = "pref_grid_options";
+ public static final String KEY_MINUS_ONE = "pref_enable_minus_one";
+ public static final String KEY_TRUST_APPS = "pref_trust_apps";
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -90,28 +91,6 @@ public class SettingsActivity extends Activity
.replace(android.R.id.content, f)
.commit();
}
- Utilities.getPrefs(getApplicationContext()).registerOnSharedPreferenceChangeListener(this);
- }
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- if (GRID_OPTIONS_PREFERENCE_KEY.equals(key)) {
-
- final ComponentName cn = new ComponentName(getApplicationContext(),
- GridOptionsProvider.class);
- Context c = getApplicationContext();
- int oldValue = c.getPackageManager().getComponentEnabledSetting(cn);
- int newValue;
- if (Utilities.getPrefs(c).getBoolean(GRID_OPTIONS_PREFERENCE_KEY, false)) {
- newValue = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
- } else {
- newValue = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
- }
-
- if (oldValue != newValue) {
- c.getPackageManager().setComponentEnabledSetting(cn, newValue,
- PackageManager.DONT_KILL_APP);
- }
- }
}
private boolean startFragment(String fragment, Bundle args, String key) {
@@ -198,6 +177,7 @@ public class SettingsActivity extends Activity
switch (preference.getKey()) {
case NOTIFICATION_DOTS_PREFERENCE_KEY:
if (!Utilities.ATLEAST_OREO ||
+ getContext().getSystemService(ActivityManager.class).isLowRamDevice() ||
!getResources().getBoolean(R.bool.notification_dots_enabled)) {
return false;
}
@@ -233,10 +213,21 @@ public class SettingsActivity extends Activity
// Show if plugins are enabled or flag UI is enabled.
return FeatureFlags.showFlagTogglerUi(getContext()) ||
PluginManagerWrapper.hasPlugins(getContext());
- case GRID_OPTIONS_PREFERENCE_KEY:
- return Utilities.isDevelopersOptionsEnabled(getContext()) &&
- Utilities.IS_DEBUG_DEVICE &&
- Utilities.existsStyleWallpapers(getContext());
+
+ case KEY_MINUS_ONE:
+ return LineageUtils.hasPackageInstalled(getActivity(),
+ LineageLauncherCallbacks.SEARCH_PACKAGE);
+
+ case KEY_TRUST_APPS:
+ preference.setOnPreferenceClickListener(p -> {
+ LineageUtils.showLockScreen(getActivity(),
+ getString(R.string.trust_apps_manager_name), () -> {
+ Intent intent = new Intent(getActivity(), TrustAppsActivity.class);
+ startActivity(intent);
+ });
+ return true;
+ });
+ return true;
}
return true;
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index 03493a5..918b631 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -26,6 +26,7 @@ import static com.android.launcher3.model.AppLaunchTracker.CONTAINER_ALL_APPS;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
@@ -55,6 +56,7 @@ import com.android.launcher3.compat.AppWidgetManagerCompat;
import com.android.launcher3.compat.PackageInstallerCompat;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.views.FloatingIconView;
import com.android.launcher3.widget.PendingAppWidgetHostView;
@@ -267,6 +269,15 @@ public class ItemClickHandler {
// Preload the icon to reduce latency b/w swapping the floating view with the original.
FloatingIconView.fetchIcon(launcher, v, item, true /* isOpening */);
}
- launcher.startActivitySafely(v, intent, item, sourceContainer);
+
+ TrustDatabaseHelper db = TrustDatabaseHelper.getInstance(launcher);
+ ComponentName cn = item.getTargetComponent();
+ boolean isProtected = cn != null && db.isPackageProtected(cn.getPackageName());
+
+ if (isProtected) {
+ launcher.startActivitySafelyAuth(v, intent, item, sourceContainer);
+ } else {
+ launcher.startActivitySafely(v, intent, item, sourceContainer);
+ }
}
}
diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java
index e97adb5..78d1d3c 100644
--- a/src/com/android/launcher3/util/PackageManagerHelper.java
+++ b/src/com/android/launcher3/util/PackageManagerHelper.java
@@ -175,11 +175,6 @@ public class PackageManagerHelper {
}
}
- public static Intent getStyleWallpapersIntent(Context context) {
- return new Intent(Intent.ACTION_SET_WALLPAPER).setComponent(
- new ComponentName(context.getString(R.string.wallpaper_picker_package),
- "com.android.customization.picker.CustomizationPickerActivity"));
- }
/**
* Starts the details activity for {@code info}
diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java
index 465df44..c718d74 100644
--- a/src/com/android/launcher3/views/OptionsPopupView.java
+++ b/src/com/android/launcher3/views/OptionsPopupView.java
@@ -18,8 +18,10 @@ package com.android.launcher3.views;
import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_FLAVOR;
import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_OFFSET;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ResolveInfo;
import android.graphics.Rect;
import android.graphics.RectF;
import android.text.TextUtils;
@@ -152,13 +154,13 @@ public class OptionsPopupView extends ArrowPopup
RectF target = new RectF(x - halfSize, y - halfSize, x + halfSize, y + halfSize);
ArrayList<OptionItem> options = new ArrayList<>();
- int resString = Utilities.existsStyleWallpapers(launcher) ?
+ int resString = existsStyleWallpapers(launcher) ?
R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text;
- int resDrawable = Utilities.existsStyleWallpapers(launcher) ?
+ int resDrawable = existsStyleWallpapers(launcher) ?
R.drawable.ic_palette : R.drawable.ic_wallpaper;
options.add(new OptionItem(resString, resDrawable,
ControlType.WALLPAPER_BUTTON, OptionsPopupView::startWallpaperPicker));
- if (!FeatureFlags.GO_DISABLE_WIDGETS) {
+ if (!FeatureFlags.GO_DISABLE_WIDGETS && Utilities.isWorkspaceEditAllowed(launcher)) {
options.add(new OptionItem(R.string.widget_button_text, R.drawable.ic_widget,
ControlType.WIDGETS_BUTTON, OptionsPopupView::onWidgetsClicked));
}
@@ -168,6 +170,14 @@ public class OptionsPopupView extends ArrowPopup
show(launcher, target, options);
}
+ private static boolean existsStyleWallpapers(Launcher launcher) {
+ Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);
+ intent.setComponent(new ComponentName(launcher.getString(R.string.wallpaper_picker_package),
+ "com.android.customization.picker.CustomizationPickerActivity"));
+ ResolveInfo ri = launcher.getPackageManager().resolveActivity(intent, 0);
+ return ri != null;
+ }
+
public static boolean onWidgetsClicked(View view) {
return openWidgets(Launcher.getLauncher(view.getContext())) != null;
}
@@ -205,10 +215,13 @@ public class OptionsPopupView extends ArrowPopup
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
.putExtra(EXTRA_WALLPAPER_OFFSET,
launcher.getWorkspace().getWallpaperOffsetForCenterPage());
- if (!Utilities.existsStyleWallpapers(launcher)) {
+ if (!existsStyleWallpapers(launcher)) {
intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "wallpaper_only");
} else {
intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "focus_wallpaper");
+ intent.setComponent(new ComponentName(
+ launcher.getString(R.string.wallpaper_picker_package),
+ "com.android.customization.picker.CustomizationPickerActivity"));
}
String pickerPackage = launcher.getString(R.string.wallpaper_picker_package);
if (!TextUtils.isEmpty(pickerPackage)) {