Merge tag 'android-13.0.0_r63' into staging/lineage-20.0_merge-android-13.0.0_r63
Android 13.0.0 release 63
# -----BEGIN PGP SIGNATURE-----
#
# iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZKXJRAAKCRDorT+BmrEO
# eMf/AJ40KJn9wYbJmlvxq6/kdYfQ0e3alQCfcVKQk1g2NZs3fMO1n6tSnJmqJlk=
# =Ni/b
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Jul 5 22:49:24 2023 EEST
# gpg: using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78
# gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [marginal]
# gpg: initial-contribution@android.com: Verified 1790 signatures in the past
# 20 months. Encrypted 4 messages in the past 18 months.
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg: It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 4340 D135 70EF 945E 8381 0964 E8AD 3F81 9AB1 0E78
# By Sunny Goyal
# Via Android Build Coastguard Worker
* tag 'android-13.0.0_r63':
Fixing syntax error due to java-version changes
Fixing icon cache thrashing due to an unsupported icon
Change-Id: I0a142415a85518ca3f083717c115ea5d97bff192
diff --git a/.gitupstream b/.gitupstream
new file mode 100644
index 0000000..4bb08c4
--- /dev/null
+++ b/.gitupstream
@@ -0,0 +1 @@
+https://android.googlesource.com/platform/packages/apps/Launcher3
diff --git a/Android.bp b/Android.bp
index e730c9d..ae50ec6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -136,6 +136,13 @@
min_sdk_version: min_launcher3_sdk_version,
}
+java_import {
+ name: "libGoogleFeed",
+ jars: [
+ "libs/libGoogleFeed.jar",
+ ],
+}
+
// Library with all the dependencies for building Launcher3
android_library {
name: "Launcher3ResLib",
@@ -153,7 +160,8 @@
"androidx.cardview_cardview",
"com.google.android.material_material",
"iconloader_base",
- "view_capture"
+ "view_capture",
+ "libGoogleFeed",
],
manifest: "AndroidManifest-common.xml",
sdk_version: "current",
@@ -172,6 +180,7 @@
static_libs: [
"Launcher3ResLib",
"launcher-testing-shared",
+ "org.lineageos.platform"
],
sdk_version: "current",
min_sdk_version: min_launcher3_sdk_version,
@@ -185,7 +194,7 @@
// Build rule for Launcher3 app.
//
android_app {
- name: "Launcher3",
+ name: "Trebuchet",
static_libs: [
"Launcher3CommonDepsLib",
@@ -214,6 +223,7 @@
overrides: [
"Home",
"Launcher2",
+ "QuickSearchBox",
],
required: ["privapp_whitelist_com.android.launcher3"],
@@ -317,7 +327,7 @@
// Build rule for Launcher3 Go app for Android Go devices.
android_app {
- name: "Launcher3Go",
+ name: "TrebuchetGo",
static_libs: ["Launcher3CommonDepsLib"],
@@ -343,6 +353,8 @@
"Launcher2",
"Launcher3",
"Launcher3QuickStep",
+ "Launcher3Go",
+ "QuickSearchBox",
],
required: ["privapp_whitelist_com.android.launcher3"],
@@ -360,7 +372,7 @@
// Build rule for Quickstep app.
android_app {
- name: "Launcher3QuickStep",
+ name: "TrebuchetQuickStep",
static_libs: ["Launcher3QuickStepLib"],
optimize: {
@@ -377,6 +389,8 @@
"Home",
"Launcher2",
"Launcher3",
+ "Launcher3QuickStep",
+ "QuickSearchBox",
],
required: ["privapp_whitelist_com.android.launcher3"],
@@ -396,7 +410,7 @@
// Build rule for Launcher3 Go app with quickstep for Android Go devices.
android_app {
- name: "Launcher3QuickStepGo",
+ name: "TrebuchetQuickStepGo",
static_libs: [
"SystemUI-statsd",
@@ -428,6 +442,8 @@
"Launcher2",
"Launcher3",
"Launcher3QuickStep",
+ "Launcher3QuickStepGo",
+ "QuickSearchBox",
],
required: ["privapp_whitelist_com.android.launcher3"],
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 0c7b48fe..febe10b 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -45,6 +45,7 @@
<uses-permission android:name="android.permission.ROTATE_SURFACE_FLINGER" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_HOME_APP_SEARCH_DATA" />
+ <uses-permission android:name="android.permission.USE_BIOMETRIC" />
<!--
Permissions required for read/write access to the workspace data. These permission name
@@ -71,7 +72,7 @@
android:backupInForeground="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:largeHeap="@bool/config_largeHeap"
android:restoreAnyVersion="true"
@@ -132,12 +133,13 @@
<!--
The content provider for exposing various launcher grid options.
- TODO: Add proper permissions
-->
<provider
android:name="com.android.launcher3.graphics.GridCustomizationsProvider"
android:authorities="${packageName}.grid_control"
- 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
@@ -183,5 +185,11 @@
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
+
+ <activity
+ android:name="com.android.launcher3.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/AndroidManifest.xml b/AndroidManifest.xml
index 4f580e0..b83cb8a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -19,6 +19,7 @@
-->
<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="33" android:minSdkVersion="26"/>
<!--
@@ -32,12 +33,14 @@
android:fullBackupContent="@xml/backupscheme"
android:hardwareAccelerated="true"
android:debuggable="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
@@ -67,6 +70,9 @@
<meta-data
android:name="com.android.launcher3.grid.control"
android:value="${packageName}.grid_control" />
+ <meta-data
+ android:name="com.android.launcher3.themedicon.option"
+ android:value="${packageName}.grid_control" />
</activity>
</application>
diff --git a/build.gradle b/build.gradle
index 090bafe..e169dc7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -143,6 +143,8 @@
}
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/go/AndroidManifest-launcher.xml b/go/AndroidManifest-launcher.xml
index 2223036..527afa9 100644
--- a/go/AndroidManifest-launcher.xml
+++ b/go/AndroidManifest-launcher.xml
@@ -31,7 +31,7 @@
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"
@@ -65,6 +65,9 @@
<meta-data
android:name="com.android.launcher3.grid.control"
android:value="${packageName}.grid_control" />
+ <meta-data
+ android:name="com.android.launcher3.themedicon.option"
+ android:value="${packageName}.grid_control" />
</activity>
</application>
diff --git a/go/AndroidManifest.xml b/go/AndroidManifest.xml
index 728b326..ef3d6fb 100644
--- a/go/AndroidManifest.xml
+++ b/go/AndroidManifest.xml
@@ -31,7 +31,7 @@
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"
diff --git a/go/res/xml/default_workspace_4x4.xml b/go/res/xml/default_workspace_4x4.xml
new file mode 100644
index 0000000..0eed6ab
--- /dev/null
+++ b/go/res/xml/default_workspace_4x4.xml
@@ -0,0 +1,140 @@
+<?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 -->
+
+ <!-- Google folder -->
+ <!-- Google Go, Gmail Go, Assistant Go, Maps Go, YouTube, Duo, Gallery Go -->
+ <folder
+ launcher:title="@string/google_folder_title"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="3">
+ <favorite
+ launcher:packageName="com.google.android.apps.searchlite"
+ launcher:className="com.google.android.apps.searchlite.ui.SearchActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.gm"
+ launcher:className="com.google.android.gm.ConversationListActivityGmail"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.assistant"
+ launcher:className="com.google.android.apps.assistant.go.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.mapslite"
+ launcher:className="org.chromium.webapk.shell_apk.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.youtube"
+ launcher:className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photosgo"
+ launcher:className="com.google.android.apps.photosgo.home.HomeActivity"/>
+ </folder>
+
+ <favorite
+ launcher:screen="0"
+ launcher:x="3"
+ launcher:y="3"
+ launcher:packageName="com.android.vending"
+ launcher:className="com.android.vending.AssetBrowserActivity"/>
+
+ <!-- Screen 1 -->
+
+ <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/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/proguard.flags b/proguard.flags
index 53a68de..1d02f9a 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -57,3 +57,7 @@
-keep class com.android.quickstep.** {
*;
}
+
+-keep class com.android.launcher3.lineage.trust.** {
+ *;
+}
diff --git a/quickstep/AndroidManifest-launcher.xml b/quickstep/AndroidManifest-launcher.xml
index 7d7054f..047d1b7 100644
--- a/quickstep/AndroidManifest-launcher.xml
+++ b/quickstep/AndroidManifest-launcher.xml
@@ -31,7 +31,7 @@
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"
@@ -66,6 +66,9 @@
<meta-data
android:name="com.android.launcher3.grid.control"
android:value="${packageName}.grid_control" />
+ <meta-data
+ android:name="com.android.launcher3.themedicon.option"
+ android:value="${packageName}.grid_control" />
</activity>
</application>
diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml
index 8e1baba..cdcb767 100644
--- a/quickstep/AndroidManifest.xml
+++ b/quickstep/AndroidManifest.xml
@@ -45,7 +45,7 @@
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"
diff --git a/quickstep/res/values/strings.xml b/quickstep/res/values/strings.xml
index 09ea534..530d369 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 keep an app pinned to the screen until it is unpinned -->
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
index 3d8bf9e..d12391b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
@@ -63,6 +63,8 @@
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
+import lineageos.providers.LineageSettings;
+
import java.io.PrintWriter;
import java.util.StringJoiner;
@@ -82,11 +84,15 @@
private static final Uri NAV_BAR_KIDS_MODE = Settings.Secure.getUriFor(
Settings.Secure.NAV_BAR_KIDS_MODE);
+ private static final Uri ENABLE_TASKBAR_URI = LineageSettings.System.getUriFor(
+ LineageSettings.System.ENABLE_TASKBAR);
+
private final Context mContext;
private final DisplayController mDisplayController;
private final TaskbarNavButtonController mNavButtonController;
private final SettingsCache.OnChangeListener mUserSetupCompleteListener;
private final SettingsCache.OnChangeListener mNavBarKidsModeListener;
+ private final SettingsCache.OnChangeListener mEnableTaskBarListener;
private final ComponentCallbacks mComponentCallbacks;
private final SimpleBroadcastReceiver mShutdownReceiver;
@@ -143,6 +149,16 @@
SystemUiProxy.INSTANCE.get(mContext), new Handler());
mUserSetupCompleteListener = isUserSetupComplete -> recreateTaskbar();
mNavBarKidsModeListener = isNavBarKidsMode -> recreateTaskbar();
+ mEnableTaskBarListener = isTaskBarEnabled -> {
+ // Create the illusion of this taking effect immediately
+ // Also needed because TaskbarManager inits before SystemUiProxy on start
+ boolean enabled = LineageSettings.System.getInt(mContext.getContentResolver(),
+ LineageSettings.System.ENABLE_TASKBAR, 0) == 1;
+ SystemUiProxy.INSTANCE.get(mContext).setTaskbarEnabled(enabled);
+
+ // Restart launcher
+ System.exit(0);
+ };
// TODO(b/227669780): Consolidate this w/ DisplayController callbacks
mComponentCallbacks = new ComponentCallbacks() {
private Configuration mOldConfig = mContext.getResources().getConfiguration();
@@ -223,6 +239,8 @@
mUserSetupCompleteListener);
SettingsCache.INSTANCE.get(mContext).register(NAV_BAR_KIDS_MODE,
mNavBarKidsModeListener);
+ SettingsCache.INSTANCE.get(mContext).register(ENABLE_TASKBAR_URI,
+ mEnableTaskBarListener);
mContext.registerComponentCallbacks(mComponentCallbacks);
mShutdownReceiver.register(mContext, Intent.ACTION_SHUTDOWN);
UI_HELPER_EXECUTOR.execute(() -> {
@@ -358,13 +376,14 @@
destroyExistingTaskbar();
boolean isTaskbarEnabled = dp != null && isTaskbarPresent(dp);
+ SystemUiProxy sysui = SystemUiProxy.INSTANCE.get(mContext);
+ sysui.setTaskbarEnabled(isTaskbarEnabled);
debugWhyTaskbarNotDestroyed("recreateTaskbar: isTaskbarEnabled=" + isTaskbarEnabled
+ " [dp != null (i.e. mUserUnlocked)]=" + (dp != null)
+ " FLAG_HIDE_NAVBAR_WINDOW=" + FLAG_HIDE_NAVBAR_WINDOW
+ " dp.isTaskbarPresent=" + (dp == null ? "null" : dp.isTaskbarPresent));
if (!isTaskbarEnabled) {
- SystemUiProxy.INSTANCE.get(mContext)
- .notifyTaskbarStatus(/* visible */ false, /* stashed */ false);
+ sysui.notifyTaskbarStatus(/* visible */ false, /* stashed */ false);
return;
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverlayCallbackImpl.java b/quickstep/src/com/android/launcher3/uioverrides/OverlayCallbackImpl.java
new file mode 100644
index 0000000..e5f343b
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/OverlayCallbackImpl.java
@@ -0,0 +1,184 @@
+/*
+ * 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.uioverrides;
+
+import android.app.Activity;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherPrefs;
+import com.android.systemui.plugins.shared.LauncherOverlayManager;
+import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay;
+import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks;
+
+import com.google.android.libraries.gsa.launcherclient.LauncherClient;
+import com.google.android.libraries.gsa.launcherclient.LauncherClientCallbacks;
+
+import java.io.PrintWriter;
+
+/**
+ * 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, LauncherOverlayManager,
+ SharedPreferences.OnSharedPreferenceChangeListener {
+
+ private static final String KEY_ENABLE_MINUS_ONE = "pref_enable_minus_one";
+
+ private final Launcher mLauncher;
+ private final LauncherClient mClient;
+
+ private LauncherOverlayCallbacks mLauncherOverlayCallbacks;
+ private boolean mWasOverlayAttached = false;
+
+ public OverlayCallbackImpl(Launcher launcher) {
+ SharedPreferences prefs = LauncherPrefs.getPrefs(launcher);
+
+ mLauncher = launcher;
+ mClient = new LauncherClient(mLauncher, this, getClientOptions(prefs));
+ prefs.registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onDeviceProvideChanged() {
+ mClient.reattachOverlay();
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ mClient.onAttachedToWindow();
+ }
+
+ @Override
+ public void onDetachedFromWindow() {
+ mClient.onDetachedFromWindow();
+ }
+
+ @Override
+ public void dump(String prefix, PrintWriter w) {
+ mClient.dump(prefix, w);
+ }
+
+ @Override
+ public void openOverlay() {
+ mClient.showOverlay(true);
+ }
+
+ @Override
+ public void hideOverlay(boolean animate) {
+ mClient.hideOverlay(animate);
+ }
+
+ @Override
+ public void hideOverlay(int duration) {
+ mClient.hideOverlay(duration);
+ }
+
+ @Override
+ public boolean startSearch(byte[] config, Bundle extras) {
+ return false;
+ }
+
+ @Override
+ public void onActivityCreated(Activity activity, Bundle bundle) {
+ // Not called
+ }
+
+ @Override
+ public void onActivityStarted(Activity activity) {
+ mClient.onStart();
+ }
+
+ @Override
+ public void onActivityResumed(Activity activity) {
+ mClient.onResume();
+ }
+
+ @Override
+ public void onActivityPaused(Activity activity) {
+ mClient.onPause();
+ }
+
+ @Override
+ public void onActivityStopped(Activity activity) {
+ mClient.onStop();
+ }
+
+ @Override
+ public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { }
+
+ @Override
+ public void onActivityDestroyed(Activity activity) {
+ mClient.onDestroy();
+ mLauncher.getSharedPrefs().unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if (KEY_ENABLE_MINUS_ONE.equals(key)) {
+ mClient.setClientOptions(getClientOptions(prefs));
+ }
+ }
+
+ @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.onOverlayScrollChanged(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(LauncherOverlayCallbacks callbacks) {
+ mLauncherOverlayCallbacks = callbacks;
+ }
+
+ private LauncherClient.ClientOptions getClientOptions(SharedPreferences prefs) {
+ return new LauncherClient.ClientOptions(
+ prefs.getBoolean(KEY_ENABLE_MINUS_ONE, true),
+ true, /* enableHotword */
+ true /* enablePrewarming */
+ );
+ }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index 0a72f36..913ec7b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -173,6 +173,7 @@
import com.android.quickstep.views.OverviewActionsView;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
+import com.android.systemui.plugins.shared.LauncherOverlayManager;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.unfold.RemoteUnfoldSharedComponent;
import com.android.systemui.unfold.UnfoldSharedComponent;
@@ -232,6 +233,11 @@
private boolean mEnableWidgetDepth;
@Override
+ protected LauncherOverlayManager getDefaultOverlay() {
+ return new OverlayCallbackImpl(this);
+ }
+
+ @Override
protected void setupViews() {
super.setupViews();
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index f3fb259..1c260ab 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -505,15 +505,13 @@
HashMap<Integer, ThumbnailData> snapshots =
mGestureState.consumeRecentsAnimationCanceledSnapshot();
if (snapshots != null) {
- mRecentsView.switchToScreenshot(snapshots, () -> {
- if (mRecentsAnimationController != null) {
- mRecentsAnimationController.cleanupScreenshot();
- } else if (mDeferredCleanupRecentsAnimationController != null) {
- mDeferredCleanupRecentsAnimationController.cleanupScreenshot();
- mDeferredCleanupRecentsAnimationController = null;
- }
- });
mRecentsView.onRecentsAnimationComplete();
+ if (mRecentsAnimationController != null) {
+ mRecentsAnimationController.cleanupScreenshot();
+ } else if (mDeferredCleanupRecentsAnimationController != null) {
+ mDeferredCleanupRecentsAnimationController.cleanupScreenshot();
+ mDeferredCleanupRecentsAnimationController = null;
+ }
}
});
diff --git a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
index ea9f032..34eecd1 100644
--- a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
@@ -237,7 +237,7 @@
@Override
public void onStateTransitionComplete(LauncherState toState) {
// Are we going from Recents to Workspace?
- if (toState == LauncherState.NORMAL) {
+ if (toState == LauncherState.NORMAL || toState == LauncherState.ALL_APPS) {
exitRunnable.run();
notifyRecentsOfOrientation(deviceState);
stateManager.removeStateListener(this);
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index b3bee6c..12c74c0 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -369,6 +369,18 @@
}
@Override
+ public void setTaskbarEnabled(boolean enabled) {
+ if (mSystemUiProxy != null) {
+ try {
+ mSystemUiProxy.setTaskbarEnabled(enabled);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Failed call setTaskbarEnabled with arg: " +
+ enabled, e);
+ }
+ }
+ }
+
+ @Override
public void notifyTaskbarStatus(boolean visible, boolean stashed) {
if (mSystemUiProxy != null) {
try {
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/bg_all_apps_searchbox.xml b/res/drawable/bg_all_apps_searchbox.xml
index 3c321e4..b95e468 100644
--- a/res/drawable/bg_all_apps_searchbox.xml
+++ b/res/drawable/bg_all_apps_searchbox.xml
@@ -14,7 +14,6 @@
limitations under the License.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
- <solid android:color="?attr/popupColorPrimary" />
+ <solid android:color="?attr/allappsHeaderProtectionColor" />
<corners android:radius="@dimen/rounded_button_radius" />
- <stroke android:color="?attr/allappsHeaderProtectionColor" android:width=".5dp" />
</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_allapps_search.xml b/res/drawable/ic_allapps_search.xml
index dbed824..3659bd5 100644
--- a/res/drawable/ic_allapps_search.xml
+++ b/res/drawable/ic_allapps_search.xml
@@ -1,25 +1,28 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- Copyright (C) 2016 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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
+ 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
+ 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.
--->
+ 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:viewportHeight="24.0"
- android:viewportWidth="24.0"
- android:autoMirrored="true">
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?android:attr/textColorSecondary"
+ android:autoMirrored="true">
<path
- android:fillColor="?android:attr/textColorTertiary"
- android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
+ android:fillColor="#FF000000"
+ android:pathData="M20.49,19l-5.73,-5.73C15.53,12.2 16,10.91 16,9.5C16,5.91 13.09,3 9.5,3S3,5.91 3,9.5C3,13.09 5.91,16 9.5,16c1.41,0 2.7,-0.47 3.77,-1.24L19,20.49L20.49,19zM5,9.5C5,7.01 7.01,5 9.5,5S14,7.01 14,9.5S11.99,14 9.5,14S5,11.99 5,9.5z"/>
</vector>
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_launcher_background.xml b/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..fb2ab55
--- /dev/null
+++ b/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:pathData="M0,0h108v108h-108z"
+ android:fillColor="#CAE1E2"/>
+ <path
+ android:pathData="M66,66m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0"
+ android:fillColor="#85BABC"/>
+ <path
+ android:pathData="M42,66m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0"
+ android:fillColor="#85BABC"/>
+ <path
+ android:pathData="M54,62m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0"
+ android:fillColor="#167C80"/>
+</vector>
diff --git a/res/drawable/ic_launcher_foreground.xml b/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2d10ca5
--- /dev/null
+++ b/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <group>
+ <clip-path
+ android:pathData="M0,0h108v108h-108z"/>
+ <path
+ android:pathData="M108,0H0V108H108V0ZM42,30C39.791,30 38,31.791 38,34V74C38,76.209 39.791,78 42,78H66C68.209,78 70,76.209 70,74V34C70,31.791 68.209,30 66,30H42Z"
+ android:fillColor="#2A3232"
+ android:fillType="evenOdd"/>
+ <path
+ android:pathData="M28.54,28.54m-72,0a72,72 0,1 1,144 0a72,72 0,1 1,-144 0"
+ android:fillAlpha="0.6">
+ <aapt:attr name="android:fillColor">
+ <gradient
+ android:gradientRadius="72"
+ android:centerX="28.54"
+ android:centerY="28.54"
+ android:type="radial">
+ <item android:offset="0" android:color="#19FFFFFF"/>
+ <item android:offset="1" android:color="#00FFFFFF"/>
+ </gradient>
+ </aapt:attr>
+ </path>
+ </group>
+</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/all_apps_personal_work_tabs.xml b/res/layout/all_apps_personal_work_tabs.xml
index e04b207..fb9b047 100644
--- a/res/layout/all_apps_personal_work_tabs.xml
+++ b/res/layout/all_apps_personal_work_tabs.xml
@@ -36,6 +36,7 @@
android:layout_weight="1"
android:background="@drawable/all_apps_tabs_background"
android:text="@string/all_apps_personal_tab"
+ android:textAllCaps="false"
android:textColor="@color/all_apps_tab_text"
android:textSize="14sp"
style="?android:attr/borderlessButtonStyle" />
@@ -48,6 +49,7 @@
android:layout_weight="1"
android:background="@drawable/all_apps_tabs_background"
android:text="@string/all_apps_work_tab"
+ android:textAllCaps="false"
android:textColor="@color/all_apps_tab_text"
android:textSize="14sp"
style="?android:attr/borderlessButtonStyle" />
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..5c4b3d1
--- /dev/null
+++ b/res/layout/item_hidden_app.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.
+-->
+<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:textColor="?android:attr/textColorPrimary"
+ android:textSize="16sp"
+ android:layout_marginStart="88dp"
+ android:layout_marginEnd="88dp" />
+</RelativeLayout>
diff --git a/res/layout/search_container_all_apps.xml b/res/layout/search_container_all_apps.xml
index db218c3..47acde0 100644
--- a/res/layout/search_container_all_apps.xml
+++ b/res/layout/search_container_all_apps.xml
@@ -17,21 +17,25 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/search_container_all_apps"
android:layout_width="match_parent"
- android:layout_height="@dimen/all_apps_search_bar_field_height"
+ android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="top|center_horizontal"
android:background="@drawable/bg_all_apps_searchbox"
android:focusableInTouchMode="true"
- android:gravity="center"
+ android:gravity="center_vertical"
android:hint="@string/all_apps_search_bar_hint"
android:imeOptions="actionSearch|flagNoExtractUi"
android:importantForAutofill="no"
android:inputType="text|textNoSuggestions|textCapWords"
android:maxLines="1"
- android:padding="8dp"
+ android:paddingVertical="12dp"
+ android:paddingStart="12dp"
+ android:paddingEnd="12dp"
+ android:drawablePadding="8dp"
+ android:drawableStart="@drawable/ic_allapps_search"
android:saveEnabled="false"
android:scrollHorizontally="true"
android:singleLine="true"
android:textColor="?android:attr/textColorSecondary"
- android:textColorHint="@drawable/all_apps_search_hint"
- android:textSize="16sp" />
\ No newline at end of file
+ android:textColorHint="?android:attr/textColorSecondary"
+ android:textSize="20sp" />
\ No newline at end of file
diff --git a/res/drawable/all_apps_search_hint.xml b/res/menu/menu_trust_apps.xml
similarity index 64%
rename from res/drawable/all_apps_search_hint.xml
rename to res/menu/menu_trust_apps.xml
index b2ff7a4..43c21b1 100644
--- a/res/drawable/all_apps_search_hint.xml
+++ b/res/menu/menu_trust_apps.xml
@@ -1,6 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (C) 2016 The Android Open Source Project
+ 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.
@@ -14,7 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/transparent" android:state_focused="true" />
- <item android:color="?android:attr/colorAccent"/>
-</selector>
\ No newline at end of file
+<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..3d90bc5
--- /dev/null
+++ b/res/mipmap-anydpi/ic_launcher.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background"/>
+ <foreground android:drawable="@drawable/ic_launcher_foreground"/>
+</adaptive-icon>
diff --git a/res/mipmap-hdpi/ic_launcher_home_foreground.png b/res/mipmap-hdpi/ic_launcher_home_foreground.png
deleted file mode 100644
index d068d92..0000000
--- a/res/mipmap-hdpi/ic_launcher_home_foreground.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_home_foreground.png b/res/mipmap-mdpi/ic_launcher_home_foreground.png
deleted file mode 100644
index 0ed9f4d..0000000
--- a/res/mipmap-mdpi/ic_launcher_home_foreground.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_home_foreground.png b/res/mipmap-xhdpi/ic_launcher_home_foreground.png
deleted file mode 100644
index 7a9daf5..0000000
--- a/res/mipmap-xhdpi/ic_launcher_home_foreground.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_home_foreground.png b/res/mipmap-xxhdpi/ic_launcher_home_foreground.png
deleted file mode 100644
index 03b493e..0000000
--- a/res/mipmap-xxhdpi/ic_launcher_home_foreground.png
+++ /dev/null
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..91c808a
--- /dev/null
+++ b/res/values-ar/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">قفل التخطيط</string>
+ <string name="settings_lock_layout_summary_on">لا يمكن إضافة الرموز والأدوات وإزالتها ونقلها على الشاشة الرئيسية</string>
+ <string name="settings_lock_layout_summary_off">يمكن إضافة الرموز والأدوات وإزالتها ونقلها على الشاشة الرئيسية</string>
+ <string name="settings_edit_widgets_error">لا يمكن إضافة الأدوات إلى الشاشة الرئيسية</string>
+ <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="pref_themed_icons_title">استخدام أيقونات مخصصة في درج التطبيقات</string>
+ <string name="pref_themed_icons_summary">اتبع الأيونات المنسقة المستخدمة على الشاشة الرئيسية</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>
+ <string name="pref_suggestions_title">الاقتراحات</string>
+ <string name="pref_suggestions_summary">لدرج التطبيقات & اقتراحات الشاشة الرئيسية</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..df7bc18
--- /dev/null
+++ b/res/values-ast-rES/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Bloquiar la distribución</string>
+ <string name="settings_lock_layout_summary_on">Na pantalla d\'aniciu, los iconos y los widgets nun se puen amestar, quitar o mover</string>
+ <string name="settings_lock_layout_summary_off">Na pantalla d\'aniciu, los iconos y los widgets puen amestase, quitase o movese</string>
+ <string name="settings_edit_widgets_error">Nun ye posible amestar widgets a la pantalla d\'aniciu</string>
+ <string name="title_show_google_app">Amosar l\'aplicación «Google»</string>
+ <string name="msg_minus_one_on_left">Cuando eslices a la derecha dende la pantalla d\'aniciu principal</string>
+ <string name="msg_minus_one_on_right">Cuando eslices a la esquierda dende la pantalla d\'aniciu principal</string>
+ <string name="pref_themed_icons_title">Usar iconos temáticos nel caxón</string>
+ <string name="pref_themed_icons_summary">Sigue los iconos temáticos que s\'usen na pantalla d\'aniciu</string>
+ <string name="desktop_show_labels">Amosar les etiquetes de los iconos nel escritoriu</string>
+ <string name="drawer_show_labels">Amosar les etiquetes de los iconos nel caxón</string>
+ <string name="trust_apps_manager_name">Aplicaciones anubríes y protexíes</string>
+ <string name="trust_apps_auth_manager">Desbloquia pa xestionar les aplicaciones 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">Nel caxón, les aplicaciones anubríes y los sos widgets escuéndense</string>
+ <string name="trust_apps_info_protected">Les aplicaciones protexíes riquen l\'autenticación p\'abriles dende\'l llanzador</string>
+ <string name="pref_suggestions_title">Suxerencies</string>
+ <string name="pref_suggestions_summary">Pa consiguir suxerencies nel caxón d\'aplicaciones y na pantalla d\'aniciu</string>
+</resources>
diff --git a/res/values-az/lineage_strings.xml b/res/values-az/lineage_strings.xml
new file mode 100644
index 0000000..9e5c7ef
--- /dev/null
+++ b/res/values-az/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Kilid düzülüşü</string>
+ <string name="settings_lock_layout_summary_on">Nişanlar və vidgetlər əsas ekranda əlavə edilə, çıxarıla və ya köçürülə bilməz</string>
+ <string name="settings_lock_layout_summary_off">Nişanlar və vidgetlər əsas ekranda əlavə edilə, çıxarıla və ya köçürülə bilər</string>
+ <string name="settings_edit_widgets_error">Əsas ekrana vidget əlavə etmək mümkün deyil</string>
+ <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="pref_themed_icons_title">Siyirmədə temalı nişanları istifadə et</string>
+ <string name="pref_themed_icons_summary">Əsas ekranda istifadə edilən temalı nişanları izlə</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="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>
+ <string name="pref_suggestions_title">Təkliflər</string>
+ <string name="pref_suggestions_summary">Tətbiq siyirməsi və əsas ekran təklifləri üçün</string>
+</resources>
diff --git a/res/values-be/lineage_strings.xml b/res/values-be/lineage_strings.xml
new file mode 100644
index 0000000..cb13f59
--- /dev/null
+++ b/res/values-be/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">Немагчыма дадаць віджэты на галоўны экран</string>
+ <string name="trust_apps_auth_open_app">Аўтарызуйцеся для адкрыцця %1$s</string>
+ <string name="trust_apps_loading">Загрузка\u2026</string>
+ <string name="trust_apps_help">Дапамога</string>
+ <string name="pref_suggestions_title">Прапановы</string>
+</resources>
diff --git a/res/values-bg/lineage_strings.xml b/res/values-bg/lineage_strings.xml
new file mode 100644
index 0000000..4604bb1
--- /dev/null
+++ b/res/values-bg/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="settings_lock_layout_title">Оформление на заключването</string>
+ <string name="settings_lock_layout_summary_on">Икони и джаджи не могат да бъдат добавяни, премахвани и местени на началния екран</string>
+ <string name="settings_lock_layout_summary_off">Икони и джаджи могат да бъдат добавяни, премахвани и местени на началния екран</string>
+ <string name="settings_edit_widgets_error">Невъзможно е да се добавят джаджи към началния екран</string>
+ <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="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-bn/lineage_strings.xml b/res/values-bn/lineage_strings.xml
new file mode 100644
index 0000000..ba9689e
--- /dev/null
+++ b/res/values-bn/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_lock_layout_title">লেআউট লক করো</string>
+ <string name="title_show_google_app">গুগল অ্যাপ প্রদর্শিত হবে</string>
+ <string name="msg_minus_one_on_left">যখন আপনি মূল হোম স্ক্রিন থেকে ডানে সোয়াইপ করেন</string>
+</resources>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values-bs/lineage_strings.xml
similarity index 65%
copy from res/drawable/ic_launcher_home.xml
copy to res/values-bs/lineage_strings.xml
index 7038775..4a02054 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values-bs/lineage_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,7 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<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..114dd29
--- /dev/null
+++ b/res/values-ca/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Bloqueja la disposició</string>
+ <string name="settings_lock_layout_summary_on">Les icones i els widgets no poden ser afegits, eliminats i moguts a la pantalla d\'inici</string>
+ <string name="settings_lock_layout_summary_off">Les icones i els widgets 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="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="pref_themed_icons_title">Utilitza icones temàtiques al calaix</string>
+ <string name="pref_themed_icons_summary">Segueix les icones temàtiques utilitzades 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="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>
+ <string name="pref_suggestions_title">Suggeriments</string>
+ <string name="pref_suggestions_summary">Per obtenir suggeriments sobre el calaix d\'aplicacions i la pantalla d\'inici</string>
+</resources>
diff --git a/res/values-cs/lineage_strings.xml b/res/values-cs/lineage_strings.xml
new file mode 100644
index 0000000..309a981
--- /dev/null
+++ b/res/values-cs/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="settings_lock_layout_title">Uzamknout rozložení</string>
+ <string name="settings_lock_layout_summary_on">Ikony a widgety nelze přidat, odebrat a přesunout na domovské obrazovce</string>
+ <string name="settings_lock_layout_summary_off">Ikony a widgety lze 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="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="desktop_show_labels">Zobrazit popisky ikon na ploše</string>
+ <string name="drawer_show_labels">Zobrazit popisky ikon v menu aplikací</string>
+ <string name="trust_apps_manager_name">Skryté & 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..215b02a
--- /dev/null
+++ b/res/values-cy/lineage_strings.xml
@@ -0,0 +1,36 @@
+<?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_lock_layout_title">Gosodiad y clo</string>
+ <string name="settings_lock_layout_summary_on">Ni ellir ychwanegu, tynnu na symud eiconau a theclynnau ar y sgrin gartref</string>
+ <string name="settings_lock_layout_summary_off">Gellir ychwanegu, tynnu a 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="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="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="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>
+ <string name="pref_suggestions_title">Awgrymiadau</string>
+ <string name="pref_suggestions_summary">Ar gyfer drôr apiau ac awgrymiadau sgrin gartref</string>
+</resources>
diff --git a/res/values-da/lineage_strings.xml b/res/values-da/lineage_strings.xml
new file mode 100644
index 0000000..3d6373f
--- /dev/null
+++ b/res/values-da/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_title">Lås layout</string>
+ <string name="settings_lock_layout_summary_on">Ikoner og widgets kan ikke tilføjes, fjernes og flyttes på hjemmeskærmen</string>
+ <string name="settings_lock_layout_summary_off">Ikoner og widgets kan tilføjes, fjernes og flyttes på hjemmeskærmen</string>
+ <string name="settings_edit_widgets_error">Det er ikke muligt at tilføje widgets til hjemmeskærmen</string>
+ <string name="title_show_google_app">Vis Google app</string>
+ <string name="pref_themed_icons_title">Brug tematiserede ikoner i skuffen</string>
+ <string name="pref_themed_icons_summary">Følg temaikoner, der bruges på startskærmen</string>
+ <string name="desktop_show_labels">Vis ikontekst på startskærmen</string>
+ <string name="drawer_show_labels">Vis ikontekst i skuffen</string>
+ <string name="trust_apps_manager_name">Skjulte & 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_help">Hjælp</string>
+ <string name="trust_apps_info_protected">Beskyttede apps kræver godkendelse, for at blive åbnet fra starteren</string>
+ <string name="pref_suggestions_title">Forslag</string>
+ <string name="pref_suggestions_summary">For til app-skuffe & startskærms forslag</string>
+</resources>
diff --git a/res/values-de/lineage_strings.xml b/res/values-de/lineage_strings.xml
new file mode 100644
index 0000000..2162ace
--- /dev/null
+++ b/res/values-de/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Layout sperren</string>
+ <string name="settings_lock_layout_summary_on">Symbole und Widgets können nicht auf dem Startbildschirm hinzugefügt, entfernt und verschoben werden</string>
+ <string name="settings_lock_layout_summary_off">Symbole und Widgets können 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="title_show_google_app">Google App anzeigen</string>
+ <string name="msg_minus_one_on_left">Wenn du vom Hauptstartbildschirm aus nach rechts wischst</string>
+ <string name="msg_minus_one_on_right">Wenn du vom Hauptstartbildschirm aus nach links wischst</string>
+ <string name="pref_themed_icons_title">Designbezogene Symbole in der App-Übersicht verwenden</string>
+ <string name="pref_themed_icons_summary">Gleiche Symboldesigns wie auf dem Startbildschirm verwenden</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="trust_apps_manager_name">Versteckte & 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 richte 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>
+ <string name="pref_suggestions_title">Vorschläge</string>
+ <string name="pref_suggestions_summary">Vorschläge für die App-Übersicht & den Startbildschirm</string>
+</resources>
diff --git a/res/values-el/lineage_strings.xml b/res/values-el/lineage_strings.xml
new file mode 100644
index 0000000..41abe9b
--- /dev/null
+++ b/res/values-el/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Κλείδωμα διάταξης</string>
+ <string name="settings_lock_layout_summary_on">Εικονίδια και widget δεν μπορούν να προστεθούν, να αφαιρεθούν και να μετακινηθούν στην αρχική οθόνη</string>
+ <string name="settings_lock_layout_summary_off">Εικονίδια και widget μπορούν να προστεθούν, να αφαιρεθούν και να μετακινηθούν στην αρχική οθόνη</string>
+ <string name="settings_edit_widgets_error">Δεν είναι δυνατή η προσθήκη widget στην αρχική οθόνη</string>
+ <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="pref_themed_icons_title">Χρήση θεματικών εικονιδίων στο συρτάρι εφαρμογών</string>
+ <string name="pref_themed_icons_summary">Ακολουθήστε τα θεματικά εικονίδια που χρησιμοποιούνται στην αρχική οθόνη</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">Οι κρυφές εφαρμογές και widgets τους αποκρύπτονται από το συρτάρι</string>
+ <string name="trust_apps_info_protected">Οι προστατευόμενες εφαρμογές απαιτούν έλεγχο ταυτότητας για να ανοιχτούν από την αρχική σελίδα η το συρτάρι</string>
+ <string name="pref_suggestions_title">Προτάσεις</string>
+ <string name="pref_suggestions_summary">Εμφάνιση προτεινόμενων εφαρμογών στο συρτάρι & την αρχική οθόνη</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..80fdca4
--- /dev/null
+++ b/res/values-en-rAU/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Lock layout</string>
+ <string name="settings_lock_layout_summary_on">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_lock_layout_summary_off">Icons and widgets can 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="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="pref_themed_icons_title">Use themed icons in drawer</string>
+ <string name="pref_themed_icons_summary">Follow themed icons used on 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="trust_apps_manager_name">Hidden & 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>
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">For app drawer & home screen suggestions</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..80fdca4
--- /dev/null
+++ b/res/values-en-rCA/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Lock layout</string>
+ <string name="settings_lock_layout_summary_on">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_lock_layout_summary_off">Icons and widgets can 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="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="pref_themed_icons_title">Use themed icons in drawer</string>
+ <string name="pref_themed_icons_summary">Follow themed icons used on 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="trust_apps_manager_name">Hidden & 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>
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">For app drawer & home screen suggestions</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..80fdca4
--- /dev/null
+++ b/res/values-en-rGB/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Lock layout</string>
+ <string name="settings_lock_layout_summary_on">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_lock_layout_summary_off">Icons and widgets can 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="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="pref_themed_icons_title">Use themed icons in drawer</string>
+ <string name="pref_themed_icons_summary">Follow themed icons used on 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="trust_apps_manager_name">Hidden & 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>
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">For app drawer & home screen suggestions</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..80fdca4
--- /dev/null
+++ b/res/values-en-rIN/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Lock layout</string>
+ <string name="settings_lock_layout_summary_on">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_lock_layout_summary_off">Icons and widgets can 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="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="pref_themed_icons_title">Use themed icons in drawer</string>
+ <string name="pref_themed_icons_summary">Follow themed icons used on 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="trust_apps_manager_name">Hidden & 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>
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">For app drawer & home screen suggestions</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..ec73322
--- /dev/null
+++ b/res/values-es-rUS/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">Los iconos y widgets no se pueden añadir, quitar o mover en la pantalla de inicio</string>
+ <string name="settings_lock_layout_summary_off">Los iconos y widgets se pueden añadir, quitar y 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="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="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..ac8475e
--- /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_lock_layout_summary_on">Los iconos y widgets no se pueden añadir, eliminar y mover en la pantalla principal</string>
+ <string name="settings_lock_layout_summary_off">Los iconos y widgets 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>
+ <string name="trust_apps_auth_open_app">Autenticar para abrir %1$s</string>
+</resources>
diff --git a/res/values-et/lineage_strings.xml b/res/values-et/lineage_strings.xml
new file mode 100644
index 0000000..10ab139
--- /dev/null
+++ b/res/values-et/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">Avaekraani ikoone ja vidinaid ei saa lisada, eemaldada ega liigutada</string>
+ <string name="settings_lock_layout_summary_off">Avaekraani ikoone ja vidinaid saab lisada, eemaldada ja liigutada</string>
+ <string name="settings_edit_widgets_error">Vidinate lisamine avaekraanile pole võimalik</string>
+ <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="desktop_show_labels">Näita töölaual ikoonisilte</string>
+ <string name="drawer_show_labels">Näita sahtlis ikoonisilte</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..096db0e
--- /dev/null
+++ b/res/values-eu/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">Ezin daitezke ikonoak eta trepetak hasieran pantailan gehitu, kendu edo lekuz aldatu</string>
+ <string name="settings_lock_layout_summary_off">Ikonoak eta trepetak hasieran pantailan gehitu, kendu daitezke eta lekuz aldatu daitezke</string>
+ <string name="settings_edit_widgets_error">Ezin dira trepetak hasiera pantailara gehitu</string>
+ <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="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..6a4199b
--- /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="settings_lock_layout_title">Lukitse asettelu</string>
+ <string name="settings_lock_layout_summary_on">Kuvakkeita ja widgettejä ei voi lisätä, poistaa tai siirtää kotinäytöllä</string>
+ <string name="settings_lock_layout_summary_off">Kuvakkeet ja widgetit 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="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="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 & 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..bb28d0e
--- /dev/null
+++ b/res/values-fr/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Verrouiller la disposition</string>
+ <string name="settings_lock_layout_summary_on">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_lock_layout_summary_off">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_widgets_error">Impossible d\'ajouter des widgets sur l\'écran d\'accueil</string>
+ <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="pref_themed_icons_title">Utiliser les icônes stylisées dans le tiroir d\'applications</string>
+ <string name="pref_themed_icons_summary">Suivre le style des icônes utilisé 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 & 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>
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">Pour les suggestions du tiroir d\'applications et de l\'écran d\'accueil</string>
+</resources>
diff --git a/res/values-fur-rIT/lineage_strings.xml b/res/values-fur-rIT/lineage_strings.xml
new file mode 100644
index 0000000..4497ad4
--- /dev/null
+++ b/res/values-fur-rIT/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Bloche la disposizion</string>
+ <string name="settings_lock_layout_summary_on">Nol è pussibil zontâ, gjavâ e spostâ iconis e widgets su la schermade di inizi</string>
+ <string name="settings_lock_layout_summary_off">Al è pussibil zontâ, gjavâ e spostâ iconis e widgets su la schermade di inizi</string>
+ <string name="settings_edit_widgets_error">Nol è pussibil zontâ widgets ae schermade di inizi</string>
+ <string name="title_show_google_app">Mostre la aplicazion Google</string>
+ <string name="msg_minus_one_on_left">Cuant che, de schermade di inizi, tu scoris viers diestre</string>
+ <string name="msg_minus_one_on_right">Cuant che, de schermade di inizi, tu scoris viers çampe</string>
+ <string name="pref_themed_icons_title">Tal scansel, dopre lis iconis a teme</string>
+ <string name="pref_themed_icons_summary">Va daûr dal stîl des iconis doprât te schermade di inizi</string>
+ <string name="desktop_show_labels">Mostre lis etichetis des iconis te schermade di inizi</string>
+ <string name="drawer_show_labels">Mostre lis etichetis des iconis tal scansel</string>
+ <string name="trust_apps_manager_name">Aplicazions protetis & platadis</string>
+ <string name="trust_apps_auth_manager">Sbloche par gjestî lis aplicazions protetis e platadis</string>
+ <string name="trust_apps_auth_open_app">Autentichiti par vierzi %1$s</string>
+ <string name="trust_apps_loading">Daûr a cjariâ\u2026</string>
+ <string name="trust_apps_no_lock_error">Stabilìs une schermade di bloc sigure par limitâ l\'acès ae aplicazion</string>
+ <string name="trust_apps_help">Jutori</string>
+ <string name="trust_apps_info_hidden">Lis aplicazions platadis e i lôr widgets a son platâts dal scansel</string>
+ <string name="trust_apps_info_protected">Lis aplicazions protetis a domandin la autenticazion par jessi viertis dal inviadôr</string>
+ <string name="pref_suggestions_title">Sugjeriments</string>
+ <string name="pref_suggestions_summary">Par visualizâ sugjeriments tal scansel e te schermade di inizi</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..5fcb451
--- /dev/null
+++ b/res/values-fy-rNL/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">Piktogrammen en widgets kinne net tafoege, fuortsmiten en ferpleatst wurde op it startskerm</string>
+ <string name="settings_lock_layout_summary_off">Piktogrammen en widgets kinne 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="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="desktop_show_labels">Piktogramlabels op it startskerm toane</string>
+ <string name="drawer_show_labels">Piktogramlabels yn it app-oersjoch toane</string>
+ <string name="trust_apps_manager_name">Ferstoppe & 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..3aa076c
--- /dev/null
+++ b/res/values-gd/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="settings_lock_layout_title">Co-dhealbhachd na glaise</string>
+ <string name="settings_lock_layout_summary_on">Cha ghabh ìomhaigheagan is widgets a deasachadh, a thoirt air falbh ’s a ghluasad air an sgrìn dhachaigh</string>
+ <string name="settings_lock_layout_summary_off">Gabhaidh ìomhaigheagan is widgets a dheasachadh, 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="title_show_google_app">Seall aplacaid Google</string>
+ <string name="msg_minus_one_on_left">Le grad-shlaighdeadh gu deas on phrìomh sgrìn dhachaigh</string>
+ <string name="msg_minus_one_on_right">Le grad-shlaighdeadh gu clì on phrìomh 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_manager_name">Falach ⁊ dìon aplacaidean</string>
+ <string name="trust_apps_auth_manager">Thoir a’ ghlais dheth a stiùireadh nan aplacaidean falaichte ’s dìonta</string>
+ <string name="trust_apps_auth_open_app">Dearbh gus %1$s fhosgladh</string>
+ <string name="trust_apps_loading">’Ga luchdadh\u2026</string>
+ <string name="trust_apps_no_lock_error">Suidhich sgrìn-ghlasaidh thèarainte airson inntrigeadh aplacaidean a chuingeachadh</string>
+ <string name="trust_apps_help">Cobhair</string>
+ <string name="trust_apps_info_hidden">Tha aplacaidean falaichte ’s na widgets aca ’gam falach on drathair</string>
+ <string name="trust_apps_info_protected">Iarraidh aplacaidean dìonta dearbhadh mus dèid am fosgladh on lòinsear</string>
+</resources>
diff --git a/res/values-gl/lineage_strings.xml b/res/values-gl/lineage_strings.xml
new file mode 100644
index 0000000..6040b0b
--- /dev/null
+++ b/res/values-gl/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="settings_lock_layout_title">Bloquear disposición</string>
+ <string name="settings_lock_layout_summary_on">Iconas e widgets no se poden engadir, eliminar e mover na pantalla de inicio</string>
+ <string name="settings_lock_layout_summary_off">Iconas e widgets pódense 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="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="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="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..b1ffddb
--- /dev/null
+++ b/res/values-hr/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_lock_layout_summary_on">Ikone i widgeti se ne mogu dodavati, uklanjati i micati na početnom zaslonu.</string>
+ <string name="settings_lock_layout_summary_off">Ikone i widgeti se 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..e9c7744
--- /dev/null
+++ b/res/values-hu/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="settings_lock_layout_title">Elrendezés-zárolás</string>
+ <string name="settings_lock_layout_summary_on">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_lock_layout_summary_off">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_widgets_error">Nem lehetséges modulokat hozzáadni a kezdőképernyőhöz</string>
+ <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="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="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..e2291e4
--- /dev/null
+++ b/res/values-in/lineage_strings.xml
@@ -0,0 +1,32 @@
+<?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_lock_layout_title">Kunci layout</string>
+ <string name="settings_lock_layout_summary_on">Ikon dan widget tidak dapat ditambahkan, dihapus dan dipindahkan pada layar utama</string>
+ <string name="settings_lock_layout_summary_off">Ikon dan widget 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="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="desktop_show_labels">Tampilkan label ikon pada desktop</string>
+ <string name="drawer_show_labels">Sembunyikan label ikon di panel</string>
+ <string name="trust_apps_auth_open_app">Autentikasi untuk membuka %1$s</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>
+ <string name="pref_suggestions_title">Saran</string>
+</resources>
diff --git a/res/values-is/lineage_strings.xml b/res/values-is/lineage_strings.xml
new file mode 100644
index 0000000..cd5a280
--- /dev/null
+++ b/res/values-is/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="settings_lock_layout_title">Læsa útliti</string>
+ <string name="settings_lock_layout_summary_on">Táknmyndum og viðmótshlutum er ekki hægt að bæta við, færa eða fjarlægja á heimaskjá</string>
+ <string name="settings_lock_layout_summary_off">Táknmyndum og viðmótshlutum er hægt að bæta við, færa eða fjarlægja á heimaskjá</string>
+ <string name="settings_edit_widgets_error">Það er ekki hægt að bæta viðmótshlutum á heimaskjáinn</string>
+ <string name="title_show_google_app">Birta Google-forrit</string>
+ <string name="msg_minus_one_on_left">Þegar þú strýkur til hægri af aðal-heimaskjánum</string>
+ <string name="msg_minus_one_on_right">Þegar þú strýkur til vinstri af aðal-heimaskjánum</string>
+ <string name="desktop_show_labels">Birta skýringar táknmynda á skjáborði</string>
+ <string name="drawer_show_labels">Birta skýringar táknmynda í leiðsagnarsleða</string>
+ <string name="trust_apps_manager_name">Falin og varin forrit</string>
+ <string name="trust_apps_auth_manager">Aflæsa til að sýsla með falin og vernduð forrit</string>
+ <string name="trust_apps_auth_open_app">Auðkenndu til að opna %1$s</string>
+ <string name="trust_apps_loading">Hleð inn\u2026</string>
+ <string name="trust_apps_no_lock_error">Settu upp öruggan læsiskjá til að takmarka aðgang forrits</string>
+ <string name="trust_apps_help">Hjálp</string>
+ <string name="trust_apps_info_hidden">Falin forrit og viðmótshlutar þeirra eru falin frá leiðsagnarsleðanum</string>
+ <string name="trust_apps_info_protected">Vernduð forrit krefjast auðkenningar ef opna á þau úr ræsinum</string>
+ <string name="pref_suggestions_title">Tillögur</string>
+</resources>
diff --git a/res/values-it/lineage_strings.xml b/res/values-it/lineage_strings.xml
new file mode 100644
index 0000000..7c304ff
--- /dev/null
+++ b/res/values-it/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Blocca layout</string>
+ <string name="settings_lock_layout_summary_on">Non è possibile aggiungere, rimuovere e spostare icone e widget nella schermata home</string>
+ <string name="settings_lock_layout_summary_off">È 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="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="pref_themed_icons_title">Usa le icone a tema nel drawer</string>
+ <string name="pref_themed_icons_summary">Segui lo stile delle icone utilizzato nella 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="trust_apps_manager_name">App protette & 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>
+ <string name="pref_suggestions_title">Suggerimenti</string>
+ <string name="pref_suggestions_summary">Per visualizzare suggerimenti nel drawer e nella schermata Home</string>
+</resources>
diff --git a/res/values-iw/lineage_strings.xml b/res/values-iw/lineage_strings.xml
new file mode 100644
index 0000000..8f4ac60
--- /dev/null
+++ b/res/values-iw/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_lock_layout_summary_on">לא ניתן להוסיף, להסיר ולהזיז סמלים ויישומונים על מסך הבית</string>
+ <string name="settings_lock_layout_summary_off">ניתן להוסיף, להסיר ולהזיז סמלים ויישומונים על מסך הבית</string>
+ <string name="settings_edit_widgets_error">אין אפשרות להוסיף יישומונים למסך הבית</string>
+ <string name="title_show_google_app">הצג את חיפוש Google</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..d28e676
--- /dev/null
+++ b/res/values-ja/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">レイアウトをロック</string>
+ <string name="settings_lock_layout_summary_on">アイコンやウィジェットの追加、削除や移動を許可しません</string>
+ <string name="settings_lock_layout_summary_off">アイコンやウィジェットの追加、削除や移動を許可します</string>
+ <string name="settings_edit_widgets_error">ウィジェットをホーム画面に追加できません</string>
+ <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="pref_themed_icons_title">ドロワーでテーマアイコンを使用する</string>
+ <string name="pref_themed_icons_summary">ホーム画面で使われるテーマのアイコンを使用します</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>
+ <string name="pref_suggestions_title">おすすめ</string>
+ <string name="pref_suggestions_summary">アプリドロワーとホーム画面のサジェスト</string>
+</resources>
diff --git a/res/values-ka/lineage_strings.xml b/res/values-ka/lineage_strings.xml
new file mode 100644
index 0000000..05ee414
--- /dev/null
+++ b/res/values-ka/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">განლაგების ჩაკეტვა</string>
+ <string name="settings_lock_layout_summary_on">მთავარ ეკრანზე ვერ მოხერხდება ხატულებისა და ვიჯეტების დამატება, მოცილება ან გადაადგილება</string>
+ <string name="settings_lock_layout_summary_off">მთავარ ეკრანზე შესაძლებელია ხატულებისა და ვიჯეტების დამატება, მოცილება ან გადაადგილება</string>
+ <string name="settings_edit_widgets_error">მთავარ ეკრანზე ვერ მოხერხდება ვიჯეტების დამატება</string>
+ <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="pref_themed_icons_title">გაფორმების ხატულები მენიუში</string>
+ <string name="pref_themed_icons_summary">გაფორმების შესაბამისი ხატულები მთავარ ეკრანზე</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>
+ <string name="pref_suggestions_title">შემოთავაზებები</string>
+ <string name="pref_suggestions_summary">შემოთავაზებები აპების მენიუსა და მთავარ ეკრანზე</string>
+</resources>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values-kab-rDZ/lineage_strings.xml
similarity index 65%
rename from res/drawable/ic_launcher_home.xml
rename to res/values-kab-rDZ/lineage_strings.xml
index 7038775..4ee7464 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values-kab-rDZ/lineage_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,7 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<resources>
+ <string name="trust_apps_loading">Asali\u2026</string>
+ <string name="trust_apps_help">Tallelt</string>
+</resources>
diff --git a/res/values-kn/lineage_strings.xml b/res/values-kn/lineage_strings.xml
new file mode 100644
index 0000000..1fce4ad
--- /dev/null
+++ b/res/values-kn/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">ತವರುಪರದೆಯ ಮೇಲೆ ಚಿಹ್ನೆಗಳು ಮತ್ತು ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಕೆ, ತೆಗೆಯುವಿಕೆ ಮತ್ತು ಸ್ಥಳಾಂತರ ಆಗುವುದಿಲ್ಲ</string>
+ <string name="settings_lock_layout_summary_off">ಮುಖ್ಯ ಪರದೆಯ ಮೇಲೆ ಚಿಹ್ನೆಗಳು ಮತ್ತು ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಕೆ, ತೆಗೆಯುವಿಕೆ ಮತ್ತು ಸ್ಥಳಾಂತರ ಮಾಡಬಹುದು</string>
+ <string name="settings_edit_widgets_error">ತವರು ಪರದೆಗೆ ಕಿಂಡಿಚೂಟಿಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
+ <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="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-ko/lineage_strings.xml b/res/values-ko/lineage_strings.xml
new file mode 100644
index 0000000..5affe9b
--- /dev/null
+++ b/res/values-ko/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">레이아웃 잠금</string>
+ <string name="settings_lock_layout_summary_on">아이콘과 위젯을 홈 화면에 추가하거나 제거, 이동할 수 없습니다.</string>
+ <string name="settings_lock_layout_summary_off">아이콘과 위젯을 홈 화면에 추가하거나 제거, 이동할 수 있도록 허용합니다.</string>
+ <string name="settings_edit_widgets_error">홈 화면에 위젯을 추가할 수 없습니다.</string>
+ <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="pref_themed_icons_title">앱 서랍에 테마가 적용된 아이콘 사용</string>
+ <string name="pref_themed_icons_summary">홈 화면에 사용하는, 테마가 적용된 아이콘 사용</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>
+ <string name="pref_suggestions_title">제안</string>
+ <string name="pref_suggestions_summary">앱 서랍 및 홈 화면 제안</string>
+</resources>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values-ldrtl/lineage_config.xml
similarity index 65%
copy from res/drawable/ic_launcher_home.xml
copy to res/values-ldrtl/lineage_config.xml
index 7038775..5830000 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values-ldrtl/lineage_config.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,7 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<resources>
+
+ <string name="pref_show_google_now_summary" translatable="false">@string/msg_minus_one_on_right</string>
+</resources>
diff --git a/res/values-nl/lineage_strings.xml b/res/values-nl/lineage_strings.xml
new file mode 100644
index 0000000..6d28401
--- /dev/null
+++ b/res/values-nl/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Leg lay-out vast</string>
+ <string name="settings_lock_layout_summary_on">Iconen en widgets kunnen niet worden toegevoegd, verwijderd en verplaatst op het startscherm</string>
+ <string name="settings_lock_layout_summary_off">Iconen en widgets kunnen worden toegevoegd, verwijderd en verplaatst op het startscherm</string>
+ <string name="settings_edit_widgets_error">Het is niet mogelijk om widgets toe te voegen aan het startscherm</string>
+ <string name="title_show_google_app">Toon Google app</string>
+ <string name="msg_minus_one_on_left">Wanneer je naar rechts veegt vanuit het startscherm</string>
+ <string name="msg_minus_one_on_right">Wanneer je naar links veegt vanuit het startscherm</string>
+ <string name="pref_themed_icons_title">Gebruik gethematiseerde pictogrammen in de lade</string>
+ <string name="pref_themed_icons_summary">Volg gethematiseerde pictogrammen gebruikt op startscherm</string>
+ <string name="desktop_show_labels">Toon pictogramlabels op het bureaublad</string>
+ <string name="drawer_show_labels">Pictogramlabels in app-overzicht weergeven</string>
+ <string name="trust_apps_manager_name">Verborgen en Beveiligde apps</string>
+ <string name="trust_apps_auth_manager">Ontgrendel om de verborgen en beschermde apps te beheren</string>
+ <string name="trust_apps_auth_open_app">Verifieer om %1$s te openen</string>
+ <string name="trust_apps_loading">Laden van\u2026</string>
+ <string name="trust_apps_no_lock_error">Stel een veilig vergrendelingsscherm in om de toegang tot de apps te beperken</string>
+ <string name="trust_apps_help">Help</string>
+ <string name="trust_apps_info_hidden">Verborgen apps en hun widgets worden niet weergegeven in het app-overzicht</string>
+ <string name="trust_apps_info_protected">Beschermde apps vereisen authenticatie om te starten vanuit de launcher</string>
+ <string name="pref_suggestions_title">Suggesties</string>
+ <string name="pref_suggestions_summary">Voor app drawer & home screen suggesties</string>
+</resources>
diff --git a/res/values-pl/lineage_strings.xml b/res/values-pl/lineage_strings.xml
new file mode 100644
index 0000000..86ee990
--- /dev/null
+++ b/res/values-pl/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Zablokuj układ</string>
+ <string name="settings_lock_layout_summary_on">Ikon i widżetów nie można dodawać, usuwać i przenosić na ekranie głównym</string>
+ <string name="settings_lock_layout_summary_off">Ikony i widżety 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="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="pref_themed_icons_title">Użyj ikon motywu w szufladzie aplikacji</string>
+ <string name="pref_themed_icons_summary">Zgodnie z ikonami motywu na ekranie głównym</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>
+ <string name="pref_suggestions_title">Sugestie</string>
+ <string name="pref_suggestions_summary">Dla wskazówek szuflady aplikacji i 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..a0581c1
--- /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="settings_lock_layout_title">Bloquear layout</string>
+ <string name="settings_lock_layout_summary_on">Ícones e widgets não podem ser adicionados, removidos e movidos na tela inicial</string>
+ <string name="settings_lock_layout_summary_off">Ícones e widgets 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="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="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="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>
+ <string name="pref_suggestions_title">Sugestões</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..8826f5e
--- /dev/null
+++ b/res/values-pt-rPT/lineage_strings.xml
@@ -0,0 +1,36 @@
+<?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_lock_layout_title">Bloquear esquema</string>
+ <string name="settings_lock_layout_summary_on">Ícones e widgets não podem ser adicionados, removidos e movidos no ecrã inicial</string>
+ <string name="settings_lock_layout_summary_off">Ícones e widgets 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="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="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 aplicações</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>
+ <string name="pref_suggestions_title">Sugestões</string>
+ <string name="pref_suggestions_summary">Sugestões para a gaveta de aplicações e para a Página Inicial</string>
+</resources>
diff --git a/res/values-ro/lineage_strings.xml b/res/values-ro/lineage_strings.xml
new file mode 100644
index 0000000..51c1ea2
--- /dev/null
+++ b/res/values-ro/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Blocare aspect</string>
+ <string name="settings_lock_layout_summary_on">Iconițele și widget-urile nu pot fi adăugate, eliminate sau mutate pe homescreen</string>
+ <string name="settings_lock_layout_summary_off">Iconițele și widget-urile 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="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="pref_themed_icons_title">Utilizează iconițe cu temă în sertarul cu aplicații</string>
+ <string name="pref_themed_icons_summary">Urmărește iconițele cu temă utilizate pe ecranul principal</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="trust_apps_manager_name">Aplicații Ascunse & 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>
+ <string name="pref_suggestions_title">Sugestii</string>
+ <string name="pref_suggestions_summary">Pentru toate aplicațiile & sugestiile pentru ecranul de pornire</string>
+</resources>
diff --git a/res/values-ru/lineage_strings.xml b/res/values-ru/lineage_strings.xml
new file mode 100644
index 0000000..08d3631
--- /dev/null
+++ b/res/values-ru/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Блокировка макета</string>
+ <string name="settings_lock_layout_summary_on">Иконки и виджеты не могут быть добавлены, удалены и перемещены на главный экран</string>
+ <string name="settings_lock_layout_summary_off">Иконки и виджеты могут быть добавлены, удалены и перемещены на главный экран</string>
+ <string name="settings_edit_widgets_error">Невозможно добавить виджеты на главный экран</string>
+ <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="pref_themed_icons_title">Использовать значки темы в панели приложений</string>
+ <string name="pref_themed_icons_summary">Использовать значки темы на главном экране</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>
+ <string name="pref_suggestions_title">Предложения</string>
+ <string name="pref_suggestions_summary">Для панели приложений и предложений на главном экране</string>
+</resources>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values-si/lineage_strings.xml
similarity index 65%
copy from res/drawable/ic_launcher_home.xml
copy to res/values-si/lineage_strings.xml
index 7038775..956dc89 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values-si/lineage_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,6 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<resources>
+ <string name="settings_lock_layout_title">පිරිසැලසුම අගුළුලන්න</string>
+</resources>
diff --git a/res/values-sk/lineage_strings.xml b/res/values-sk/lineage_strings.xml
new file mode 100644
index 0000000..186bdd4
--- /dev/null
+++ b/res/values-sk/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">Ikony a miniaplikácie nie je možné pridať, odstrániť a presunúť na domovskú obrazovku</string>
+ <string name="settings_lock_layout_summary_off">Ikony a miniaplikácie 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="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="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é & 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..81694fe
--- /dev/null
+++ b/res/values-sl/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Zakleni razporeditev</string>
+ <string name="settings_lock_layout_summary_on">Ikon in pripomočkov ni mogoče dodajati, odstranjevati ali premikati na domačem zaslonu</string>
+ <string name="settings_lock_layout_summary_off">Ikone in pripomočke je 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="title_show_google_app">Pokaži Google aplikacijo</string>
+ <string name="msg_minus_one_on_left">Ko povlečete desno od glavnega domačega zaslona</string>
+ <string name="msg_minus_one_on_right">Ko povlečete levo od glavnega domačega zaslona</string>
+ <string name="pref_themed_icons_title">Uporabi temske ikone v predalu</string>
+ <string name="pref_themed_icons_summary">Sledi temskim ikonam na domačem zaslonu</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="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>
+ <string name="pref_suggestions_title">Predlogi</string>
+ <string name="pref_suggestions_summary">Za predloge predala aplikacij in domačega zaslona</string>
+</resources>
diff --git a/res/values-sq/lineage_strings.xml b/res/values-sq/lineage_strings.xml
new file mode 100644
index 0000000..74e054d
--- /dev/null
+++ b/res/values-sq/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Struktura e bllokimit</string>
+ <string name="settings_lock_layout_summary_on">Ikonat dhe veglat nuk mund të shtohen, hiqen dhe zhvendosen në ekranin kryesor</string>
+ <string name="settings_lock_layout_summary_off">Ikonat dhe veglat 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="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="pref_themed_icons_title">Përdorni ikonat me temë në sirtar</string>
+ <string name="pref_themed_icons_summary">Ndiqni ikonat me temë të përdorura në ekranin bazë</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="trust_apps_manager_name">Programet e fshehura & 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>
+ <string name="pref_suggestions_title">Sugjerimet</string>
+ <string name="pref_suggestions_summary">Për sirtarin e aplikacioneve & sugjerime për ekranin bazë</string>
+</resources>
diff --git a/res/values-sr/lineage_strings.xml b/res/values-sr/lineage_strings.xml
new file mode 100644
index 0000000..bc89115
--- /dev/null
+++ b/res/values-sr/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_lock_layout_summary_on">Онемогућено додавање, уклањање и размештање икона и алатки на почетном екрану</string>
+ <string name="settings_lock_layout_summary_off">Омогући додавање, уклањање и размештање икона и алатки на почетном екрану</string>
+ <string name="settings_edit_widgets_error">Није могуће додати алатке на почетни екран</string>
+ <string name="title_show_google_app">Прикажи Google апликацију</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..ff5624c
--- /dev/null
+++ b/res/values-sv/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="settings_edit_widgets_error">Det går inte att lägga till widgetar på hemskärmen</string>
+ <string name="pref_themed_icons_title">Använd temaikoner i appskärmen</string>
+ <string name="pref_themed_icons_summary">Följ temaikoner som används på hemskärmen</string>
+ <string name="trust_apps_manager_name">Gömda & Skyddade appar</string>
+ <string name="trust_apps_loading">Laddar\u2026</string>
+ <string name="trust_apps_help">Hjälp</string>
+ <string name="pref_suggestions_title">Förslag</string>
+ <string name="pref_suggestions_summary">För förslag på app- & hemskärmen</string>
+</resources>
diff --git a/res/values-th/lineage_strings.xml b/res/values-th/lineage_strings.xml
new file mode 100644
index 0000000..2bb6651
--- /dev/null
+++ b/res/values-th/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">ไอคอนและวิดเจ็ต จะไม่สามารถถูก เพิ่ม ลบ และ ย้ายบนหน้าจอหลัก</string>
+ <string name="settings_lock_layout_summary_off">ไอคอนและวิดเจ็ต จะสามารถถูก เพิ่ม ลบ และ ย้ายบนหน้าจอหลัก</string>
+ <string name="settings_edit_widgets_error">ไม่สามารถที่จะเพิ่ม วิดเจ็ต บนหน้าจอหลักได้</string>
+ <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="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">แอปที่ถูกซ่อนและ 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..a9b32c9
--- /dev/null
+++ b/res/values-tr/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Kilit düzeni</string>
+ <string name="settings_lock_layout_summary_on">Simgeleri ve widget\'lar ana ekrandan eklenemez, kaldırılamaz ve taşınamaz</string>
+ <string name="settings_lock_layout_summary_off">Simgeleri ve widget\'lar ana ekrandan eklenebilir, kaldırılabilir ve taşınabilir</string>
+ <string name="settings_edit_widgets_error">Ana ekrana widget eklemek mümkün değildir</string>
+ <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="pref_themed_icons_title">Çekmecede temalı simgeler uygula</string>
+ <string name="pref_themed_icons_summary">Ana ekranda kullanılan temalı simgeleri takip edin</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="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>
+ <string name="pref_suggestions_title">Öneriler</string>
+ <string name="pref_suggestions_summary">Uygulama çekmecesi ve ana ekran önerileri için</string>
+</resources>
diff --git a/res/values-uk/lineage_strings.xml b/res/values-uk/lineage_strings.xml
new file mode 100644
index 0000000..6142dbf
--- /dev/null
+++ b/res/values-uk/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="settings_lock_layout_title">Закріпити композицію</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_info_hidden">Схованих застосунків і віджетів не видно в меню</string>
+ <string name="trust_apps_info_protected">Захищені застосунки запитують пароль при запуску</string>
+</resources>
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
index 054fe47..8e4160b 100644
--- a/res/values-v31/colors.xml
+++ b/res/values-v31/colors.xml
@@ -19,7 +19,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<color name="popup_color_primary_light">@android:color/system_accent2_50</color>
<color name="popup_color_secondary_light">@android:color/system_neutral2_100</color>
- <color name="popup_color_tertiary_light">@android:color/system_neutral2_300</color>
+ <color name="popup_color_tertiary_light">@android:color/system_neutral2_100</color>
<color name="popup_color_neutral_dark">@android:color/system_neutral1_1000</color>
<color name="popup_color_primary_dark">@android:color/system_neutral2_800</color>
<color name="popup_color_secondary_dark">@android:color/system_neutral1_900</color>
diff --git a/res/values-vi/lineage_strings.xml b/res/values-vi/lineage_strings.xml
new file mode 100644
index 0000000..a9cbffa
--- /dev/null
+++ b/res/values-vi/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">Khóa bố cục</string>
+ <string name="settings_lock_layout_summary_on">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_lock_layout_summary_off">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_widgets_error">Không thể thêm tiện ích con vào màn hình chính</string>
+ <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="pref_themed_icons_title">Sử dụng các biểu tượng theo chủ đề trong ngăn kéo</string>
+ <string name="pref_themed_icons_summary">Làm theo các biểu tượng theo chủ đề được sử dụng trên 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>
+ <string name="trust_apps_manager_name">Ứng dụng được Ẩn & Bảo vệ</string>
+ <string name="trust_apps_auth_manager">Mở khóa để quản lý các ứng dụng ẩn và được bảo vệ</string>
+ <string name="trust_apps_auth_open_app">Xác thực để mở %1$s</string>
+ <string name="trust_apps_loading">Đang tải\u2026</string>
+ <string name="trust_apps_no_lock_error">Vui lòng thiết lập màn hình khóa an toàn để hạn chế quyền truy cập ứng dụng</string>
+ <string name="trust_apps_help">Trợ giúp</string>
+ <string name="trust_apps_info_hidden">Các ứng dụng ẩn và các tiện ích con của chúng được ẩn khỏi drawer</string>
+ <string name="trust_apps_info_protected">Các ứng dụng được bảo vệ yêu cầu xác thực để được mở từ trình khởi chạy</string>
+ <string name="pref_suggestions_title">Đề xuất</string>
+ <string name="pref_suggestions_summary">Đề xuất cho ngăn ứng dụng & màn hình chính</string>
+</resources>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values-zh-rCN/lineage_config.xml
similarity index 65%
copy from res/drawable/ic_launcher_home.xml
copy to res/values-zh-rCN/lineage_config.xml
index 7038775..5d58bcb 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values-zh-rCN/lineage_config.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- Copyright (C) 2023 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.
@@ -13,9 +13,8 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<resources>
+ <!-- Sort sections of apps list, in case AlphabeticIndex (of current locale)
+ returns duplicate labels for some reasons. -->
+ <bool name="config_appsListSortSections">true</bool>
+</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..4ff12de
--- /dev/null
+++ b/res/values-zh-rCN/lineage_strings.xml
@@ -0,0 +1,38 @@
+<?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_lock_layout_title">锁定布局</string>
+ <string name="settings_lock_layout_summary_on">不能在桌面上添加、删除和移动图标以及小部件</string>
+ <string name="settings_lock_layout_summary_off">可以在桌面上添加、删除和移动图标以及小部件</string>
+ <string name="settings_edit_widgets_error">无法将小部件添加到主屏幕中</string>
+ <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="pref_themed_icons_title">在抽屉内应用带主题的图标</string>
+ <string name="pref_themed_icons_summary">依照主屏幕上使用的主题图标</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>
+ <string name="pref_suggestions_title">建议</string>
+ <string name="pref_suggestions_summary">对于应用抽屉 & 主屏幕的建议</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..a9bcc88
--- /dev/null
+++ b/res/values-zh-rTW/lineage_strings.xml
@@ -0,0 +1,33 @@
+<?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_lock_layout_summary_on">圖示和小工具無法在主畫面上新增、刪除和移動</string>
+ <string name="settings_lock_layout_summary_off">圖示和小工具可以在主畫面上新增、刪除和移動</string>
+ <string name="settings_edit_widgets_error">無法將小工具新增至主畫面</string>
+ <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="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 5a6698b..52e35d6 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -21,7 +21,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 -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index cd41baf..e434e1b9 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -107,7 +107,12 @@
<dimen name="all_apps_search_bar_field_height">48dp</dimen>
<!-- all_apps_search_bar_field_height / 2 -->
<dimen name="all_apps_search_bar_content_overlap">24dp</dimen>
- <dimen name="all_apps_search_bar_bottom_padding">30dp</dimen>
+ <!-- affects padding above apps lists when tabs and floating header rows are not visible -->
+ <!-- (always affects padding above search results) -->
+ <dimen name="all_apps_search_bar_bottom_padding">24dp</dimen>
+ <!-- margin adjustment for layout relative to bottom of search container -->
+ <!-- if the search container is obscuring things, try adjusting this -->
+ <dimen name="all_apps_search_bar_bottom_adjustment">-6dp</dimen>
<dimen name="all_apps_empty_search_message_top_offset">40dp</dimen>
<dimen name="all_apps_header_pill_height">48dp</dimen>
<dimen name="all_apps_header_pill_corner_radius">12dp</dimen>
@@ -117,7 +122,10 @@
<dimen name="all_apps_header_top_padding">36dp</dimen>
<!-- Additional top padding to add when Floating Searchbar is enabled. -->
<dimen name="all_apps_additional_top_padding_floating_search">16dp</dimen>
- <dimen name="all_apps_header_bottom_padding">14dp</dimen>
+ <!-- influences header protection drawn height below personal/work tabs -->
+ <!-- if app icons are appearing above the protection rectangle, or if they are shifted below
+ it and cropped at the top, try adjusting this -->
+ <dimen name="all_apps_header_bottom_padding">10dp</dimen>
<dimen name="all_apps_header_top_adjustment">6dp</dimen>
<dimen name="all_apps_header_bottom_adjustment">4dp</dimen>
<dimen name="all_apps_work_profile_tab_footer_top_padding">16dp</dimen>
diff --git a/res/drawable/ic_launcher_home.xml b/res/values/lineage_config.xml
similarity index 61%
copy from res/drawable/ic_launcher_home.xml
copy to res/values/lineage_config.xml
index 7038775..877c77b 100644
--- a/res/drawable/ic_launcher_home.xml
+++ b/res/values/lineage_config.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -13,9 +13,11 @@
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="@color/icon_background" />
- <foreground>
- <bitmap android:src="@mipmap/ic_launcher_home_foreground"/>
- </foreground>
-</adaptive-icon>
+<resources>
+
+ <string name="pref_show_google_now_summary" translatable="false">@string/msg_minus_one_on_left</string>
+
+ <!-- Sort sections of apps list, in case AlphabeticIndex (of current locale)
+ returns duplicate labels for some reasons. -->
+ <bool name="config_appsListSortSections">false</bool>
+</resources>
diff --git a/res/values/lineage_strings.xml b/res/values/lineage_strings.xml
new file mode 100644
index 0000000..dd03335
--- /dev/null
+++ b/res/values/lineage_strings.xml
@@ -0,0 +1,59 @@
+<?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 -->
+
+ <!-- Edit workspace -->
+ <string name="settings_lock_layout_title">Lock layout</string>
+ <string name="settings_lock_layout_summary_on">Icons and widgets can\'t be added, removed and moved on the homescreen</string>
+ <string name="settings_lock_layout_summary_off">Icons and widgets can 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>
+
+ <!-- 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>
+
+ <!-- Folder titles -->
+ <string name="google_folder_title" translatable="false">Google</string>
+
+ <!-- All apps themed icons -->
+ <string name="pref_themed_icons_title">Use themed icons in drawer</string>
+ <string name="pref_themed_icons_summary">Follow themed icons used on home screen</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>
+
+ <!-- Trust apps -->
+ <string name="trust_apps_manager_name">Hidden & 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>
+
+ <!-- App suggestions -->
+ <string name="pref_suggestions_title">Suggestions</string>
+ <string name="pref_suggestions_summary">For app drawer & home screen suggestions</string>
+</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 5dc4f0a..f5d6472 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -94,6 +94,7 @@
<item name="android:colorControlHighlight">#19FFFFFF</item>
<item name="android:colorPrimary">#FF212121</item>
<item name="allAppsScrimColor">?android:attr/colorBackgroundFloating</item>
+ <item name="allappsHeaderProtectionColor">@color/popup_color_tertiary_dark</item>
<item name="allAppsNavBarScrimColor">#80000000</item>
<item name="popupColorPrimary">@color/popup_color_primary_dark</item>
<item name="popupColorSecondary">@color/popup_color_secondary_dark</item>
diff --git a/res/xml/default_workspace_4x4.xml b/res/xml/default_workspace_2x2.xml
similarity index 66%
rename from res/xml/default_workspace_4x4.xml
rename to res/xml/default_workspace_2x2.xml
index bf3c62c..51d9e07 100644
--- a/res/xml/default_workspace_4x4.xml
+++ b/res/xml/default_workspace_2x2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
+<!-- Copyright (C) 2015 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.
@@ -17,22 +17,13 @@
<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 -->
+ <!-- Messaging, Dialer -->
+
<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:" />
@@ -45,18 +36,9 @@
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" />
+ <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>
<!-- Bottom row -->
@@ -76,12 +58,4 @@
<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..05c64ac
--- /dev/null
+++ b/res/xml/default_workspace_4x5.xml
@@ -0,0 +1,163 @@
+<?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>
+
+ <!-- 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, Gmail, Maps, YouTube, Drive, YouTube Music, Play Movies, Duo, 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.apps.youtube.music"
+ launcher:className="com.google.android.apps.youtube.music.activities.MusicActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <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 b4ac8f6..dba3601 100644
--- a/res/xml/default_workspace_5x5.xml
+++ b/res/xml/default_workspace_5x5.xml
@@ -17,7 +17,7 @@
<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 -->
+ <!-- Dialer, Messaging, Contacts, Browser, Camera -->
<resolve
launcher:container="-101"
launcher:screen="0"
@@ -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,31 +66,106 @@
<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>
-
- <resolve
+ <appwidget
+ launcher:packageName="com.android.deskclock"
+ launcher:className="com.android.alarmclock.DigitalAppWidgetProvider"
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:x="0"
+ launcher:y="1"
+ launcher:spanX="5"
+ launcher:spanY="2" />
- </resolve>
+ <!-- Google Folder -->
+ <!-- Google, Gmail, Maps, YouTube, Drive, YouTube Music, Play Movies, Duo, 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.apps.youtube.music"
+ launcher:className="com.google.android.apps.youtube.music.activities.MusicActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
- <resolve
+ <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_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_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_5x6.xml b/res/xml/default_workspace_5x6.xml
new file mode 100644
index 0000000..7e3257d
--- /dev/null
+++ b/res/xml/default_workspace_5x6.xml
@@ -0,0 +1,171 @@
+<?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, Gmail, Maps, YouTube, Drive, YouTube Music, Play Movies, Duo, 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.apps.youtube.music"
+ launcher:className="com.google.android.apps.youtube.music.activities.MusicActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <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..fe2362f
--- /dev/null
+++ b/res/xml/default_workspace_5x7.xml
@@ -0,0 +1,171 @@
+<?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, Gmail, Maps, YouTube, Drive, YouTube Music, Play Movies, Duo, 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.apps.youtube.music"
+ launcher:className="com.google.android.apps.youtube.music.activities.MusicActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <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..f6ab929
--- /dev/null
+++ b/res/xml/default_workspace_6x6.xml
@@ -0,0 +1,171 @@
+<?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, Gmail, Maps, YouTube, Drive, YouTube Music, Play Movies, Duo, 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.apps.youtube.music"
+ launcher:className="com.google.android.apps.youtube.music.activities.MusicActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.videos"
+ launcher:className="com.google.android.youtube.videos.EntryPoint"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.tachyon"
+ launcher:className="com.google.android.apps.tachyon.MainActivity"/>
+ <favorite
+ launcher:packageName="com.google.android.apps.photos"
+ launcher:className="com.google.android.apps.photos.home.HomeActivity"/>
+ </folder>
+
+ <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 c9a44a1..4f1f480 100644
--- a/res/xml/device_profiles.xml
+++ b/res/xml/device_profiles.xml
@@ -18,9 +18,48 @@
<profiles xmlns:launcher="http://schemas.android.com/apk/res-auto" >
<grid-option
+ launcher:name="2_by_2"
+ launcher:numRows="2"
+ launcher:numColumns="2"
+ launcher:numAllAppsColumns="4"
+ launcher:numFolderRows="2"
+ launcher:numFolderColumns="2"
+ launcher:numHotseatIcons="2"
+ launcher:dbFile="launcher_2_by_2.db"
+ launcher:defaultLayoutId="@xml/default_workspace_2x2"
+ launcher:deviceCategory="phone|multi_display" >
+
+ <display-option
+ launcher:name="Super Short Stubby"
+ launcher:minWidthDps="200"
+ launcher:minHeightDps="200"
+ launcher:iconImageSize="120"
+ launcher:iconTextSize="17.0"
+ launcher:allAppsIconSize="60.0"
+ launcher:allAppsIconTextSize="14.0"
+ launcher:allAppsBorderSpace="16"
+ launcher:allAppsCellHeight="104"
+ launcher:canBeDefault="true" />
+
+ <display-option
+ launcher:name="Shorter Stubby"
+ launcher:minWidthDps="200"
+ launcher:minHeightDps="300"
+ launcher:iconImageSize="120"
+ launcher:iconTextSize="17.0"
+ launcher:allAppsIconSize="60"
+ launcher:allAppsIconTextSize="14.0"
+ launcher:allAppsBorderSpace="16"
+ launcher:allAppsCellHeight="104"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
+ <grid-option
launcher:name="3_by_3"
launcher:numRows="3"
launcher:numColumns="3"
+ launcher:numAllAppsColumns="4"
launcher:numFolderRows="2"
launcher:numFolderColumns="3"
launcher:numHotseatIcons="3"
@@ -32,8 +71,10 @@
launcher:name="Super Short Stubby"
launcher:minWidthDps="255"
launcher:minHeightDps="300"
- launcher:iconImageSize="48"
- launcher:iconTextSize="13.0"
+ launcher:iconImageSize="85"
+ launcher:iconTextSize="15.0"
+ launcher:allAppsIconSize="60"
+ launcher:allAppsIconTextSize="14.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
launcher:canBeDefault="true" />
@@ -42,8 +83,10 @@
launcher:name="Shorter Stubby"
launcher:minWidthDps="255"
launcher:minHeightDps="400"
- launcher:iconImageSize="48"
- launcher:iconTextSize="13.0"
+ launcher:iconImageSize="85"
+ launcher:iconTextSize="15.0"
+ launcher:allAppsIconSize="60"
+ launcher:allAppsIconTextSize="14.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
launcher:canBeDefault="true" />
@@ -51,23 +94,23 @@
</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:numFolderColumns="4"
+ launcher:numFolderColumns="3"
launcher:numHotseatIcons="4"
launcher:numExtendedHotseatIcons="6"
- launcher:dbFile="launcher_4_by_4.db"
+ launcher:dbFile="launcher_4_by_5.db"
launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_split"
- launcher:defaultLayoutId="@xml/default_workspace_4x4"
+ launcher:defaultLayoutId="@xml/default_workspace_4x5"
launcher:deviceCategory="phone|multi_display" >
<display-option
launcher:name="Short Stubby"
launcher:minWidthDps="275"
launcher:minHeightDps="420"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="65"
launcher:iconTextSize="13.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
@@ -77,7 +120,7 @@
launcher:name="Stubby"
launcher:minWidthDps="255"
launcher:minHeightDps="450"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="65"
launcher:iconTextSize="13.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
@@ -87,7 +130,7 @@
launcher:name="Nexus S"
launcher:minWidthDps="296"
launcher:minHeightDps="491.33"
- launcher:iconImageSize="48"
+ launcher:iconImageSize="65"
launcher:iconTextSize="13.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
@@ -97,7 +140,7 @@
launcher:name="Nexus 4"
launcher:minWidthDps="359"
launcher:minHeightDps="567"
- launcher:iconImageSize="54"
+ launcher:iconImageSize="65"
launcher:iconTextSize="13.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
@@ -107,7 +150,7 @@
launcher:name="Nexus 5"
launcher:minWidthDps="335"
launcher:minHeightDps="567"
- launcher:iconImageSize="54"
+ launcher:iconImageSize="65"
launcher:iconTextSize="13.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
@@ -133,7 +176,7 @@
launcher:minWidthDps="406"
launcher:minHeightDps="694"
launcher:iconImageSize="56"
- launcher:iconTextSize="14.4"
+ launcher:iconTextSize="12.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
launcher:canBeDefault="true" />
@@ -143,7 +186,7 @@
launcher:minWidthDps="406"
launcher:minHeightDps="694"
launcher:iconImageSize="56"
- launcher:iconTextSize="14.4"
+ launcher:iconTextSize="12.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
launcher:canBeDefault="true" />
@@ -153,7 +196,53 @@
launcher:minWidthDps="255"
launcher:minHeightDps="400"
launcher:iconImageSize="48"
- launcher:iconTextSize="13.0"
+ launcher:iconTextSize="12.0"
+ launcher:allAppsBorderSpace="16"
+ launcher:allAppsCellHeight="104"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
+ <grid-option
+ launcher:name="5_by_6"
+ launcher:numRows="6"
+ launcher:numColumns="5"
+ launcher:numFolderRows="5"
+ launcher:numFolderColumns="4"
+ launcher:numHotseatIcons="5"
+ launcher:dbFile="launcher_5_by_6.db"
+ launcher:defaultLayoutId="@xml/default_workspace_5x6"
+ launcher:deviceCategory="phone|multi_display" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="56"
+ launcher:iconTextSize="12.0"
+ launcher:allAppsBorderSpace="16"
+ launcher:allAppsCellHeight="104"
+ 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:dbFile="launcher_5_by_7.db"
+ launcher:defaultLayoutId="@xml/default_workspace_5x7"
+ launcher:deviceCategory="phone|multi_display" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="56"
+ launcher:iconTextSize="12.0"
launcher:allAppsBorderSpace="16"
launcher:allAppsCellHeight="104"
launcher:canBeDefault="true" />
@@ -208,4 +297,27 @@
</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:dbFile="launcher_6_by_6.db"
+ launcher:defaultLayoutId="@xml/default_workspace_6x6"
+ launcher:deviceCategory="phone|multi_display" >
+
+ <display-option
+ launcher:name="Large Phone"
+ launcher:minWidthDps="406"
+ launcher:minHeightDps="694"
+ launcher:iconImageSize="48"
+ launcher:iconTextSize="12.0"
+ launcher:allAppsBorderSpace="16"
+ launcher:allAppsCellHeight="104"
+ launcher:canBeDefault="true" />
+
+ </grid-option>
+
</profiles>
\ No newline at end of file
diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml
index 284ab9e..83ef5b3 100644
--- a/res/xml/launcher_preferences.xml
+++ b/res/xml/launcher_preferences.xml
@@ -18,6 +18,14 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto">
+ <SwitchPreference
+ android:defaultValue="false"
+ android:key="pref_workspace_lock"
+ android:persistent="true"
+ android:title="@string/settings_lock_layout_title"
+ android:summaryOn="@string/settings_lock_layout_summary_on"
+ android:summaryOff="@string/settings_lock_layout_summary_off" />
+
<com.android.launcher3.settings.NotificationDotsPreference
android:key="pref_icon_badging"
android:title="@string/notification_dots_title"
@@ -50,4 +58,42 @@
launcher:logIdOn="615"
launcher:logIdOff="616" />
+ <SwitchPreference
+ 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_suggestions"
+ android:title="@string/pref_suggestions_title"
+ android:summary="@string/pref_suggestions_summary"
+ android:persistent="false">
+
+ <intent android:action="android.settings.ACTION_CONTENT_SUGGESTIONS_SETTINGS" />
+ </androidx.preference.PreferenceScreen>
+
+ <SwitchPreference
+ android:key="pref_allapps_themed_icons"
+ android:title="@string/pref_themed_icons_title"
+ android:summary="@string/pref_themed_icons_summary"
+ android:defaultValue="false"
+ android:persistent="true" />
+
+ <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" />
+
</androidx.preference.PreferenceScreen>
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index bc4a5c3..38ce740 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -15,7 +15,6 @@
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
-import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -221,23 +220,6 @@
mWidgetPadding = getDefaultPaddingForWidget(getContext(),
widgetView.getAppWidgetInfo().provider, null);
- // Only show resize handles for the directions in which resizing is possible.
- InvariantDeviceProfile idp = LauncherAppState.getIDP(cellLayout.getContext());
- mVerticalResizeActive = (info.resizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0
- && mMinVSpan < idp.numRows && mMaxVSpan > 1
- && mMinVSpan < mMaxVSpan;
- if (!mVerticalResizeActive) {
- mDragHandles[INDEX_TOP].setVisibility(GONE);
- mDragHandles[INDEX_BOTTOM].setVisibility(GONE);
- }
- mHorizontalResizeActive = (info.resizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0
- && mMinHSpan < idp.numColumns && mMaxHSpan > 1
- && mMinHSpan < mMaxHSpan;
- if (!mHorizontalResizeActive) {
- mDragHandles[INDEX_LEFT].setVisibility(GONE);
- mDragHandles[INDEX_RIGHT].setVisibility(GONE);
- }
-
mReconfigureButton = (ImageButton) findViewById(R.id.widget_reconfigure_button);
if (info.isReconfigurable()) {
mReconfigureButton.setVisibility(VISIBLE);
@@ -293,12 +275,10 @@
}
public boolean beginResizeIfPointInRegion(int x, int y) {
- mLeftBorderActive = (x < mTouchTargetWidth) && mHorizontalResizeActive;
- mRightBorderActive = (x > getWidth() - mTouchTargetWidth) && mHorizontalResizeActive;
- mTopBorderActive = (y < mTouchTargetWidth + mTopTouchRegionAdjustment)
- && mVerticalResizeActive;
- mBottomBorderActive = (y > getHeight() - mTouchTargetWidth + mBottomTouchRegionAdjustment)
- && mVerticalResizeActive;
+ 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 53d9281..89e457b 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -16,6 +16,9 @@
package com.android.launcher3;
+import static com.android.launcher3.InvariantDeviceProfile.KEY_ALLAPPS_THEMED_ICONS;
+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.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2;
import static com.android.launcher3.config.FeatureFlags.ENABLE_ICON_LABEL_AUTO_SCALING;
import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon;
@@ -29,6 +32,7 @@
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;
@@ -180,6 +184,9 @@
@ViewDebug.ExportedProperty(category = "launcher")
private boolean mDisableRelayout = false;
+ private boolean mShouldShowLabel;
+ private boolean mThemeAllAppsIcons;
+
private HandlerRunnable mIconLoadRequest;
private boolean mEnableIconUpdateAnimation = false;
@@ -203,6 +210,8 @@
== View.LAYOUT_DIRECTION_RTL);
DeviceProfile grid = mActivity.getDeviceProfile();
+ SharedPreferences prefs = LauncherPrefs.getPrefs(context.getApplicationContext());
+
mDisplay = a.getInteger(R.styleable.BubbleTextView_iconDisplay, DISPLAY_WORKSPACE);
final int defaultIconSize;
if (mDisplay == DISPLAY_WORKSPACE) {
@@ -210,25 +219,32 @@
setCompoundDrawablePadding(grid.iconDrawablePaddingPx);
defaultIconSize = grid.iconSizePx;
setCenterVertically(grid.isScalableGrid);
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
} else if (mDisplay == DISPLAY_ALL_APPS) {
setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.allAppsIconTextSizePx);
setCompoundDrawablePadding(grid.allAppsIconDrawablePaddingPx);
defaultIconSize = grid.allAppsIconSizePx;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DRAWER_LABELS, true);
+ mThemeAllAppsIcons = prefs.getBoolean(KEY_ALLAPPS_THEMED_ICONS, false);
} else if (mDisplay == DISPLAY_FOLDER) {
setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.folderChildTextSizePx);
setCompoundDrawablePadding(grid.folderChildDrawablePaddingPx);
defaultIconSize = grid.folderChildIconSizePx;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
} else if (mDisplay == DISPLAY_SEARCH_RESULT) {
setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.allAppsIconTextSizePx);
defaultIconSize = getResources().getDimensionPixelSize(R.dimen.search_row_icon_size);
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
} else if (mDisplay == DISPLAY_SEARCH_RESULT_SMALL) {
defaultIconSize = getResources().getDimensionPixelSize(
R.dimen.search_row_small_icon_size);
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
} else if (mDisplay == DISPLAY_TASKBAR) {
defaultIconSize = grid.iconSizePx;
} else {
// widget_selection or shortcut_popup
defaultIconSize = grid.iconSizePx;
+ mShouldShowLabel = prefs.getBoolean(KEY_SHOW_DESKTOP_LABELS, true);
}
mCenterVertically = a.getBoolean(R.styleable.BubbleTextView_centerVertically, false);
@@ -395,14 +411,15 @@
protected boolean shouldUseTheme() {
return mDisplay == DISPLAY_WORKSPACE || mDisplay == DISPLAY_FOLDER
- || mDisplay == DISPLAY_TASKBAR;
+ || mDisplay == DISPLAY_TASKBAR
+ || (mThemeAllAppsIcons && mDisplay == DISPLAY_ALL_APPS);
}
@UiThread
@VisibleForTesting
public void applyLabel(ItemInfoWithIcon info) {
CharSequence label = info.title;
- if (label != null) {
+ if (label != null && mShouldShowLabel) {
mLastOriginalText = label;
mLastModifiedText = mLastOriginalText;
mBreakPointsIntArray = StringMatcherUtility.getListOfBreakpoints(label, MATCHER);
@@ -710,6 +727,10 @@
}
}
+ public boolean shouldShowLabel() {
+ return mShouldShowLabel;
+ }
+
public boolean shouldTextBeVisible() {
// Text should be visible everywhere but the hotseat.
Object tag = getParent() instanceof FolderIcon ? ((View) getParent()).getTag() : getTag();
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 86c9f16..9e8aef7 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -57,6 +57,8 @@
import com.android.launcher3.util.DisplayController.Info;
import com.android.launcher3.util.WindowBounds;
+import lineageos.providers.LineageSettings;
+
import java.io.PrintWriter;
import java.util.Locale;
import java.util.function.Consumer;
@@ -297,7 +299,9 @@
isTablet = info.isTablet(windowBounds);
isPhone = !isTablet;
isTwoPanels = isTablet && isMultiDisplay;
- isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS;
+ boolean isTaskBarEnabled = LineageSettings.System.getInt(context.getContentResolver(),
+ LineageSettings.System.ENABLE_TASKBAR, isTablet ? 1 : 0) == 1;
+ isTaskbarPresent = isTaskBarEnabled && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS;
// Some more constants.
context = getContext(context, info, isVerticalBarLayout() || (isTablet && isLandscape)
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index 4c34648..f495ed4 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -29,6 +29,8 @@
import android.appwidget.AppWidgetHostView;
import android.content.ComponentName;
import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -75,7 +77,7 @@
import java.util.List;
import java.util.stream.Collectors;
-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.
@@ -92,6 +94,11 @@
private static final float ICON_SIZE_DEFINED_IN_APP_DP = 48;
+ public static final String KEY_ALLAPPS_THEMED_ICONS = "pref_allapps_themed_icons";
+ 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_WORKSPACE_LOCK = "pref_workspace_lock";
+
// Constants that affects the interpolation curve between statically defined device profile
// buckets.
private static final float KNEARESTNEIGHBOR = 3;
@@ -194,6 +201,8 @@
public Point defaultWallpaperSize;
public Rect defaultWidgetPadding;
+ private Context mContext;
+
private final ArrayList<OnIDPChangeListener> mChangeListeners = new ArrayList<>();
@VisibleForTesting
@@ -201,6 +210,10 @@
@TargetApi(23)
private InvariantDeviceProfile(Context context) {
+ mContext = context;
+
+ SharedPreferences prefs = LauncherPrefs.getPrefs(context);
+ prefs.registerOnSharedPreferenceChangeListener(this);
String gridName = getCurrentGridName(context);
String newGridName = initGrid(context, gridName);
if (!newGridName.equals(gridName)) {
@@ -313,6 +326,17 @@
}
}
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ switch (key) {
+ case KEY_ALLAPPS_THEMED_ICONS:
+ case KEY_SHOW_DESKTOP_LABELS:
+ case KEY_SHOW_DRAWER_LABELS:
+ onConfigChanged(mContext);
+ break;
+ }
+ }
+
public static String getCurrentGridName(Context context) {
return LauncherPrefs.get(context).get(GRID_NAME);
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7da16c0..e1b151e 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -150,6 +150,7 @@
import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.icons.IconCache;
import com.android.launcher3.keyboard.ViewGroupFocusHelper;
+import com.android.launcher3.lineage.LineageUtils;
import com.android.launcher3.logger.LauncherAtom;
import com.android.launcher3.logger.LauncherAtom.ContainerInfo;
import com.android.launcher3.logger.LauncherAtom.WorkspaceContainer;
@@ -2184,6 +2185,12 @@
return success;
}
+ public void startActivitySafelyAuth(View v, Intent intent, ItemInfo item) {
+ LineageUtils.showLockScreen(this, getString(R.string.trust_apps_manager_name), () -> {
+ startActivitySafely(v, intent, item);
+ });
+ }
+
boolean isHotseatLayout(View layout) {
// TODO: Remove this method
return mHotseat != null && (layout == mHotseat);
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index abf5866..377e99c 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -44,6 +44,7 @@
import com.android.launcher3.icons.IconProvider;
import com.android.launcher3.icons.LauncherIconProvider;
import com.android.launcher3.icons.LauncherIcons;
+import com.android.launcher3.lineage.trust.HiddenAppsFilter;
import com.android.launcher3.notification.NotificationListener;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.InstallSessionTracker;
@@ -155,7 +156,7 @@
mIconProvider = new LauncherIconProvider(context);
mIconCache = new IconCache(mContext, mInvariantDeviceProfile,
iconCacheFileName, mIconProvider);
- mModel = new LauncherModel(context, this, mIconCache, new AppFilter(mContext),
+ mModel = new LauncherModel(context, this, mIconCache, new HiddenAppsFilter(mContext),
iconCacheFileName != null);
mOnTerminateCallback.add(mIconCache::close);
}
diff --git a/src/com/android/launcher3/LauncherFiles.java b/src/com/android/launcher3/LauncherFiles.java
index e59eac8..9845d88 100644
--- a/src/com/android/launcher3/LauncherFiles.java
+++ b/src/com/android/launcher3/LauncherFiles.java
@@ -16,7 +16,10 @@
private static final String XML = ".xml";
public static final String LAUNCHER_DB = "launcher.db";
+ public static final String LAUNCHER_6_BY_6_DB = "launcher_6_by_6.db";
public static final String LAUNCHER_6_BY_5_DB = "launcher_6_by_5.db";
+ public static final String LAUNCHER_5_BY_7_DB = "launcher_5_by_7.db";
+ public static final String LAUNCHER_5_BY_6_DB = "launcher_5_by_6.db";
public static final String LAUNCHER_4_BY_5_DB = "launcher_4_by_5.db";
public static final String LAUNCHER_4_BY_4_DB = "launcher_4_by_4.db";
public static final String LAUNCHER_3_BY_3_DB = "launcher_3_by_3.db";
@@ -33,7 +36,10 @@
public static final List<String> GRID_DB_FILES = Collections.unmodifiableList(Arrays.asList(
LAUNCHER_DB,
+ LAUNCHER_6_BY_6_DB,
LAUNCHER_6_BY_5_DB,
+ LAUNCHER_5_BY_7_DB,
+ LAUNCHER_5_BY_6_DB,
LAUNCHER_4_BY_5_DB,
LAUNCHER_4_BY_4_DB,
LAUNCHER_3_BY_3_DB,
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 0fbaecb..e512011 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -27,6 +27,7 @@
import android.app.Person;
import android.app.WallpaperManager;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.ShortcutInfo;
@@ -135,7 +136,8 @@
* @deprecated Use {@link BuildConfig#IS_DEBUG_DEVICE} directly
*/
@Deprecated
- public static final boolean IS_DEBUG_DEVICE = BuildConfig.IS_DEBUG_DEVICE;
+ public static final boolean IS_DEBUG_DEVICE =
+ Build.TYPE.toLowerCase(Locale.ROOT).equals("eng");
public static final int TRANSLATE_UP = 0;
public static final int TRANSLATE_DOWN = 1;
@@ -799,4 +801,9 @@
// No-Op
}
}
+
+ public static boolean isWorkspaceEditAllowed(Context context) {
+ SharedPreferences prefs = LauncherPrefs.getPrefs(context.getApplicationContext());
+ return !prefs.getBoolean(InvariantDeviceProfile.KEY_WORKSPACE_LOCK, false);
+ }
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index ba492d5..482a1c5 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -2150,8 +2150,7 @@
private Runnable getWidgetResizeFrameRunnable(DragOptions options,
LauncherAppWidgetHostView hostView, CellLayout cellLayout) {
AppWidgetProviderInfo pInfo = hostView.getAppWidgetInfo();
- if (pInfo != null && pInfo.resizeMode != AppWidgetProviderInfo.RESIZE_NONE
- && !options.isAccessibleDrag) {
+ if (pInfo != null && !options.isAccessibleDrag) {
return () -> {
if (!isPageInTransition()) {
AppWidgetResizeFrame.showForWidget(hostView, cellLayout);
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index bc8c23e..fe914dc 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -103,7 +103,8 @@
public static final float PULL_MULTIPLIER = .02f;
public static final float FLING_VELOCITY_MULTIPLIER = 1200f;
protected static final String BUNDLE_KEY_CURRENT_PAGE = "launcher.allapps.current_page";
- private static final long DEFAULT_SEARCH_TRANSITION_DURATION_MS = 300;
+ // As of this writing, search transition does not seem to work properly, so set duration to 0.
+ private static final long DEFAULT_SEARCH_TRANSITION_DURATION_MS = 0;
// Render the header protection at all times to debug clipping issues.
private static final boolean DEBUG_HEADER_PROTECTION = false;
/** Context of an activity or window that is inflating this container. */
@@ -332,6 +333,7 @@
// If exiting search, revert predictive back scale on all apps
mAllAppsTransitionController.animateAllAppsToNoScale();
}
+ setScrollbarVisibility(!goingToSearch);
mSearchTransitionController.animateToSearchState(goingToSearch, durationMs,
/* onEndRunnable = */ () -> {
mIsSearching = goingToSearch;
@@ -595,13 +597,22 @@
tabsHidden);
int padding = mHeader.getMaxTranslation();
- mAH.forEach(adapterHolder -> {
- adapterHolder.mPadding.top = padding;
+ for (int i = 0; i < mAH.size(); i++) {
+ final AdapterHolder adapterHolder = mAH.get(i);
+ // Search and other adapters need to be handled a bit differently; otherwise, when
+ // when leaving search, the All Apps view may be noticeably shifted downward because
+ // its padding was unnecessarily impacted, and never restored, upon entering search.
+ if (i != AdapterHolder.SEARCH && !tabsHidden && mHeader.getFloatingRowsHeight() == 0) {
+ // Only the Search adapter needs padding when there are tabs but no floating rows.
+ adapterHolder.mPadding.top = 0;
+ } else {
+ adapterHolder.mPadding.top = padding;
+ }
adapterHolder.applyPadding();
if (adapterHolder.mRecyclerView != null) {
adapterHolder.mRecyclerView.scrollToTop();
}
- });
+ }
removeCustomRules(mHeader);
if (!isSearchSupported()) {
@@ -625,6 +636,7 @@
mTabsProtectionAlpha = tabsAlpha;
invalidateHeader();
}
+ getSearchView().setBackgroundResource(R.drawable.bg_all_apps_searchbox);
if (mSearchUiManager.getEditText() == null) {
return;
}
@@ -664,13 +676,15 @@
}
RelativeLayout.LayoutParams layoutParams = (LayoutParams) v.getLayoutParams();
- layoutParams.addRule(RelativeLayout.ALIGN_TOP, R.id.search_container_all_apps);
+ layoutParams.addRule(RelativeLayout.BELOW, R.id.search_container_all_apps);
int topMargin = getContext().getResources().getDimensionPixelSize(
- R.dimen.all_apps_header_top_margin);
+ R.dimen.all_apps_search_bar_bottom_adjustment);
if (includeTabsMargin) {
topMargin += getContext().getResources().getDimensionPixelSize(
- R.dimen.all_apps_header_pill_height);
+ R.dimen.all_apps_header_pill_height)
+ + getContext().getResources().getDimensionPixelSize(
+ R.dimen.all_apps_tabs_margin_top);
}
layoutParams.topMargin = topMargin;
}
@@ -707,6 +721,7 @@
layoutParams.removeRule(RelativeLayout.ABOVE);
layoutParams.removeRule(RelativeLayout.ALIGN_TOP);
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
+ layoutParams.removeRule(RelativeLayout.BELOW);
}
protected BaseAllAppsAdapter<T> createAdapter(AlphabeticalAppsList<T> appsList) {
@@ -1001,6 +1016,13 @@
}
}
+ protected void setScrollbarVisibility(boolean visible) {
+ AllAppsRecyclerView rv = getActiveRecyclerView();
+ if (rv != null && rv.getScrollbar() != null) {
+ rv.getScrollbar().setVisibility(visible ? VISIBLE : GONE);
+ }
+ }
+
protected void updateSearchResultsVisibility() {
if (isSearching()) {
getSearchRecyclerView().setVisibility(VISIBLE);
diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index 29767bf..2567fab 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -20,6 +20,7 @@
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.DiffUtil;
+import com.android.launcher3.R;
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.ItemInfo;
@@ -28,7 +29,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.Locale;
import java.util.Objects;
import java.util.TreeMap;
import java.util.function.Predicate;
@@ -85,6 +85,7 @@
private final int mNumAppsPerRowAllApps;
private int mNumAppRowsInAdapter;
private Predicate<ItemInfo> mItemFilter;
+ private final boolean mSortSections;
public AlphabeticalAppsList(Context context, @Nullable AllAppsStore appsStore,
WorkProfileManager workProfileManager) {
@@ -96,6 +97,7 @@
if (mAllAppsStore != null) {
mAllAppsStore.addUpdateListener(this);
}
+ mSortSections = context.getResources().getBoolean(R.bool.config_appsListSortSections);
}
public void updateItemFilter(Predicate<ItemInfo> itemFilter) {
@@ -201,9 +203,7 @@
// As a special case for some languages (currently only Simplified Chinese), we may need to
// coalesce sections
- Locale curLocale = mActivityContext.getResources().getConfiguration().locale;
- boolean localeRequiresSectionSorting = curLocale.equals(Locale.SIMPLIFIED_CHINESE);
- if (localeRequiresSectionSorting) {
+ if (mSortSections) {
// Compute the section headers. We use a TreeMap with the section name comparator to
// ensure that the sections are ordered when we iterate over it later
appSteam = appSteam.collect(Collectors.groupingBy(
diff --git a/src/com/android/launcher3/allapps/FloatingHeaderView.java b/src/com/android/launcher3/allapps/FloatingHeaderView.java
index b3ea3ab..050e810 100644
--- a/src/com/android/launcher3/allapps/FloatingHeaderView.java
+++ b/src/com/android/launcher3/allapps/FloatingHeaderView.java
@@ -225,7 +225,6 @@
for (FloatingHeaderRow row : mAllRows) {
row.setup(this, mAllRows, tabsHidden);
}
- updateExpectedHeight();
mTabsHidden = tabsHidden;
mTabLayout.setVisibility(tabsHidden ? View.GONE : View.VISIBLE);
@@ -250,6 +249,8 @@
rvType == AdapterHolder.MAIN ? mMainRV
: rvType == AdapterHolder.WORK ? mWorkRV : mSearchRV;
mCurrentRV.addOnScrollListener(mOnScrollListener);
+
+ updateExpectedHeight();
}
private void updateExpectedHeight() {
@@ -259,10 +260,7 @@
return;
}
mMaxTranslation += mFloatingRowsHeight;
- if (!mTabsHidden) {
- mMaxTranslation += mTabsAdditionalPaddingBottom
- + getResources().getDimensionPixelSize(R.dimen.all_apps_tabs_margin_top);
- }
+ // No need for mMaxTranslation to be any taller now that we align below the header.
}
int getMaxTranslation() {
diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
index 4427a49..f94658c 100644
--- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
+++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
@@ -132,7 +132,7 @@
public boolean onBackKey() {
// Only hide the search field if there is no query
String query = Utilities.trim(mInput.getEditableText().toString());
- if (query.isEmpty()) {
+ if (!query.isEmpty()) {
reset();
return true;
}
diff --git a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
index 78c305b..d83efd6 100644
--- a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
+++ b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
@@ -77,7 +77,6 @@
mSearchQueryBuilder = new SpannableStringBuilder();
Selection.setSelection(mSearchQueryBuilder, 0);
- setHint(prefixTextWithIcon(getContext(), R.drawable.ic_allapps_search, getHint()));
mContentOverlap =
getResources().getDimensionPixelSize(R.dimen.all_apps_search_bar_content_overlap);
diff --git a/src/com/android/launcher3/dragndrop/DragController.java b/src/com/android/launcher3/dragndrop/DragController.java
index 5368397..fbbd4d8 100644
--- a/src/com/android/launcher3/dragndrop/DragController.java
+++ b/src/com/android/launcher3/dragndrop/DragController.java
@@ -31,6 +31,7 @@
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget;
+import com.android.launcher3.Utilities;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.model.data.ItemInfo;
@@ -406,6 +407,11 @@
return false;
}
+ if (!Utilities.isWorkspaceEditAllowed(mActivity.getDragLayer().getContext())) {
+ cancelDrag();
+ return false;
+ }
+
Point dragLayerPos = getClampedDragLayerPos(getX(ev), getY(ev));
mLastTouch.set(dragLayerPos.x, dragLayerPos.y);
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index 86f4beb..764b1d3 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -199,7 +199,9 @@
icon.setClipToPadding(false);
icon.mFolderName = icon.findViewById(R.id.folder_icon_name);
- icon.mFolderName.setText(folderInfo.title);
+ if (icon.mFolderName.shouldShowLabel()) {
+ icon.mFolderName.setText(folderInfo.title);
+ }
icon.mFolderName.setCompoundDrawablePadding(0);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) icon.mFolderName.getLayoutParams();
lp.topMargin = grid.iconSizePx + grid.iconDrawablePaddingPx;
diff --git a/src/com/android/launcher3/lineage/LineageUtils.java b/src/com/android/launcher3/lineage/LineageUtils.java
new file mode 100644
index 0000000..175b78f
--- /dev/null
+++ b/src/com/android/launcher3/lineage/LineageUtils.java
@@ -0,0 +1,76 @@
+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.BiometricManager.Authenticators;
+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 {
+
+ public static boolean isPackageEnabled(Context context, String pkgName) {
+ try {
+ ApplicationInfo ai = context.getPackageManager().getApplicationInfo(pkgName, 0);
+ return ai.enabled;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+
+ /**
+ * 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 bp = new BiometricPrompt.Builder(context)
+ .setTitle(title)
+ .setAllowedAuthenticators(Authenticators.BIOMETRIC_STRONG |
+ Authenticators.DEVICE_CREDENTIAL)
+ .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();
+ }
+
+}
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..a2bf22d
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/HiddenAppsFilter.java
@@ -0,0 +1,38 @@
+/*
+ * 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) {
+ super(context);
+
+ mDbHelper = TrustDatabaseHelper.getInstance(context);
+ }
+
+ @Override
+ public boolean shouldShowApp(ComponentName app) {
+ return !mDbHelper.isPackageHidden(app.getPackageName()) && super.shouldShowApp(app);
+ }
+}
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..dec109f
--- /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..4e4b192
--- /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 static com.android.launcher3.lineage.trust.db.TrustComponent.Kind.HIDDEN;
+import static com.android.launcher3.lineage.trust.db.TrustComponent.Kind.PROTECTED;
+
+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.LauncherPrefs;
+import com.android.launcher3.R;
+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;
+
+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 = LauncherPrefs.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..aad0f1a
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/UpdateItemTask.java
@@ -0,0 +1,77 @@
+/*
+ * 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..cf7fb1f
--- /dev/null
+++ b/src/com/android/launcher3/lineage/trust/db/TrustDatabaseHelper.java
@@ -0,0 +1,202 @@
+/*
+ * 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 1bd329e..6ad916b 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.DropTarget.DragObject;
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;
@@ -758,6 +759,8 @@
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 69bba69..6535a55 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -134,6 +134,7 @@
@Override
public void onClick(View view) {
+ if (!Utilities.isWorkspaceEditAllowed(mTarget.getApplicationContext())) return;
AbstractFloatingView.closeAllOpenViews(mTarget);
WidgetsBottomSheet widgetsBottomSheet =
(WidgetsBottomSheet) mTarget.getLayoutInflater().inflate(
diff --git a/src/com/android/launcher3/settings/SettingsActivity.java b/src/com/android/launcher3/settings/SettingsActivity.java
index d3a237c..9b19755 100644
--- a/src/com/android/launcher3/settings/SettingsActivity.java
+++ b/src/com/android/launcher3/settings/SettingsActivity.java
@@ -50,6 +50,8 @@
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.lineage.LineageUtils;
+import com.android.launcher3.lineage.trust.TrustAppsActivity;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.states.RotationHelper;
import com.android.launcher3.uioverrides.flags.DeveloperOptionsFragment;
@@ -86,6 +88,13 @@
@VisibleForTesting
static final String EXTRA_FRAGMENT_ARGS = ":settings:fragment_args";
+ private static final String KEY_MINUS_ONE = "pref_enable_minus_one";
+ private static final String SEARCH_PACKAGE = "com.google.android.googlequicksearchbox";
+ public static final String KEY_TRUST_APPS = "pref_trust_apps";
+
+ private static final String KEY_SUGGESTIONS = "pref_suggestions";
+ private static final String SUGGESTIONS_PACKAGE = "com.google.android.as";
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -288,6 +297,23 @@
case DEVELOPER_OPTIONS_KEY:
mDeveloperOptionPref = preference;
return updateDeveloperOption();
+
+ case KEY_MINUS_ONE:
+ return LineageUtils.isPackageEnabled(getActivity(), 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;
+
+ case KEY_SUGGESTIONS:
+ return LineageUtils.isPackageEnabled(getActivity(), SUGGESTIONS_PACKAGE);
}
return true;
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index 790c226..6adadc8 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -27,6 +27,7 @@
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import android.app.AlertDialog;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
@@ -44,6 +45,7 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
+import com.android.launcher3.lineage.trust.db.TrustDatabaseHelper;
import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.logging.InstanceIdSequence;
import com.android.launcher3.logging.StatsLogManager;
@@ -348,7 +350,16 @@
// 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);
+
+ TrustDatabaseHelper db = TrustDatabaseHelper.getInstance(launcher);
+ ComponentName cn = item.getTargetComponent();
+ boolean isProtected = cn != null && db.isPackageProtected(cn.getPackageName());
+
+ if (isProtected) {
+ launcher.startActivitySafelyAuth(v, intent, item);
+ } else {
+ launcher.startActivitySafely(v, intent, item);
+ }
}
/**
diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java
index 315cbad..a4c4581 100644
--- a/src/com/android/launcher3/views/OptionsPopupView.java
+++ b/src/com/android/launcher3/views/OptionsPopupView.java
@@ -198,7 +198,7 @@
resDrawable,
IGNORE,
OptionsPopupView::startWallpaperPicker));
- if (!WidgetsModel.GO_DISABLE_WIDGETS) {
+ if (!WidgetsModel.GO_DISABLE_WIDGETS && Utilities.isWorkspaceEditAllowed(launcher)) {
options.add(new OptionItem(launcher,
R.string.widget_button_text,
R.drawable.ic_widget,
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index bc3889f..e8773a9 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -119,6 +119,7 @@
@Override
public boolean onLongClick(View view) {
+ if (!Utilities.isWorkspaceEditAllowed(mLauncher.getApplicationContext())) return true;
if (mIsScrollable) {
DragLayer dragLayer = mLauncher.getDragLayer();
dragLayer.requestDisallowInterceptTouchEvent(false);
diff --git a/src_build_config/com/android/launcher3/BuildConfig.java b/src_build_config/com/android/launcher3/BuildConfig.java
index 1f2e0e5..ab6c528 100644
--- a/src_build_config/com/android/launcher3/BuildConfig.java
+++ b/src_build_config/com/android/launcher3/BuildConfig.java
@@ -24,7 +24,7 @@
* Flag to state if the QSB is on the first screen and placed on the top,
* this can be overwritten in other launchers with a different value, if needed.
*/
- public static final boolean QSB_ON_FIRST_SCREEN = true;
+ public static final boolean QSB_ON_FIRST_SCREEN = false;
/**
* Flag to control various developer centric features
diff --git a/tests/Android.bp b/tests/Android.bp
index 81853d1..6c0ec4a 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -112,11 +112,11 @@
],
use_embedded_native_libs: false,
compile_multilib: "both",
- instrumentation_for: "Launcher3",
+ instrumentation_for: "Trebuchet",
manifest: "AndroidManifest.xml",
platform_apis: true,
test_config: "Launcher3Tests.xml",
- data: [":Launcher3"],
+ data: [":Trebuchet"],
test_suites: ["general-tests"],
}