summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoey Rizzoli <joey@lineageos.org>2017-11-30 21:59:30 +0100
committerArne Coucheron <arco68@gmail.com>2018-01-19 00:27:13 +0100
commit0fb16bbd36976824ebf1d32a3dfd2fbfc565a6f7 (patch)
treea148ffa9977bc98261e33e1e88f70d706115fd72 /src
parentc6b85822544de5194cff97d7fe07236f5c7a5b32 (diff)
downloadandroid_packages_apps_Trebuchet-0fb16bbd36976824ebf1d32a3dfd2fbfc565a6f7.tar.gz
android_packages_apps_Trebuchet-0fb16bbd36976824ebf1d32a3dfd2fbfc565a6f7.tar.bz2
android_packages_apps_Trebuchet-0fb16bbd36976824ebf1d32a3dfd2fbfc565a6f7.zip
Trebuchet: quick settings & settings reorganization
Signed-off-by: Joey Rizzoli <joey@lineageos.org>
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java3
-rw-r--r--src/com/android/launcher3/QuickSettingsActivity.java202
-rw-r--r--src/com/android/launcher3/SettingsActivity.java151
-rw-r--r--src/com/android/launcher3/Utilities.java2
-rw-r--r--src/com/android/launcher3/icons/IconsHandler.java10
5 files changed, 227 insertions, 141 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 108f6e5cc..e7cfc6955 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2562,8 +2562,7 @@ public class Launcher extends BaseActivity
*/
public void onClickSettingsButton(View v) {
if (LOGD) Log.d(TAG, "onClickSettingsButton");
- Intent intent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES)
- .setPackage(getPackageName());
+ Intent intent = new Intent(this, QuickSettingsActivity.class);
intent.setSourceBounds(getViewBounds(v));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent, getActivityLaunchOptions(v));
diff --git a/src/com/android/launcher3/QuickSettingsActivity.java b/src/com/android/launcher3/QuickSettingsActivity.java
new file mode 100644
index 000000000..0304ccb05
--- /dev/null
+++ b/src/com/android/launcher3/QuickSettingsActivity.java
@@ -0,0 +1,202 @@
+package com.android.launcher3;
+
+import android.app.AlarmManager;
+import android.app.AlertDialog;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.NumberPicker;
+
+import com.android.launcher3.icons.IconsHandler;
+
+public class QuickSettingsActivity extends AppCompatActivity {
+ private static final String KEY_GRID_SIZE = "pref_grid_size";
+ public static final String KEY_ICON_PACK = "pref_icon_pack";
+
+ @Override
+ protected void onCreate(Bundle savedInstance) {
+ super.onCreate(savedInstance);
+
+ setContentView(R.layout.activity_quick_settings);
+
+ View touchOutSide = findViewById(R.id.quick_settings_touch_outside);
+ touchOutSide.setOnClickListener(v -> onBackPressed());
+
+ getFragmentManager().beginTransaction()
+ .replace(R.id.quick_settings_content, new QuickSettingsFragment())
+ .commit();
+ }
+
+
+ public static class QuickSettingsFragment extends PreferenceFragment
+ implements SharedPreferences.OnSharedPreferenceChangeListener {
+ private Preference mGridPref;
+ private Preference mIconPackPref;
+
+ private SharedPreferences mPrefs;
+ private IconsHandler mIconsHandler;
+ private PackageManager mPackageManager;
+
+ private String mDefaultIconPack;
+ private boolean mShouldRestart = false;
+
+ @Override
+ public void onCreate(Bundle savedInstance) {
+ super.onCreate(savedInstance);
+ getPreferenceManager().setSharedPreferencesName(LauncherFiles.SHARED_PREFERENCES_KEY);
+ addPreferencesFromResource(R.xml.launcher_quick_preferences);
+
+ mPrefs = Utilities.getPrefs(getActivity().getApplicationContext());
+ mPrefs.registerOnSharedPreferenceChangeListener(this);
+
+ mIconPackPref = findPreference(KEY_ICON_PACK);
+ mIconPackPref.setOnPreferenceClickListener(preference -> {
+ mIconsHandler.showDialog(getActivity());
+ return true;
+ });
+
+ mPackageManager = getActivity().getPackageManager();
+ mDefaultIconPack = mPrefs.getString(KEY_ICON_PACK, getString(R.string.icon_pack_default));
+ mIconsHandler = IconCache.getIconsHandler(getActivity().getApplicationContext());
+ updateIconPackEntry();
+
+ mGridPref = findPreference(KEY_GRID_SIZE);
+ if (mGridPref != null) {
+ mGridPref.setOnPreferenceClickListener(preference -> {
+ setCustomGridSize();
+ return true;
+ });
+
+ mGridPref.setSummary(mPrefs.getString(KEY_GRID_SIZE, getDefaulGridSize()));
+ }
+
+ Preference more = findPreference("pref_more");
+ if (more != null) {
+ more.setOnPreferenceClickListener(preference -> {
+ Intent intent = new Intent(getActivity(), SettingsActivity.class);
+ getActivity().startActivity(intent);
+ // Don't kill the upcoming settings activity
+ mShouldRestart = false;
+ getActivity().finish();
+ return true;
+ });
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ mIconsHandler.hideDialog();
+ }
+
+ @Override
+ public void onDestroy() {
+ mPrefs.unregisterOnSharedPreferenceChangeListener(this);
+
+ if (mShouldRestart) {
+ triggerRestart();
+ }
+ super.onDestroy();
+ }
+
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ switch (key) {
+ case KEY_GRID_SIZE:
+ mGridPref.setSummary(mPrefs.getString(KEY_GRID_SIZE, getDefaulGridSize()));
+ mShouldRestart = true;
+ break;
+ case KEY_ICON_PACK:
+ updateIconPackEntry();
+ break;
+ }
+ }
+
+ private void setCustomGridSize() {
+ int minValue = 3;
+ int maxValue = 9;
+
+ String storedValue = mPrefs.getString(KEY_GRID_SIZE, "4x5");
+ Pair<Integer, Integer> currentValues = Utilities.extractCustomGrid(storedValue);
+
+ LayoutInflater inflater = (LayoutInflater)
+ getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ if (inflater == null) {
+ return;
+ }
+ View contentView = inflater.inflate(R.layout.dialog_custom_grid, null);
+ NumberPicker columnPicker = (NumberPicker)
+ contentView.findViewById(R.id.dialog_grid_column);
+ NumberPicker rowPicker = (NumberPicker)
+ contentView.findViewById(R.id.dialog_grid_row);
+
+ columnPicker.setMinValue(minValue);
+ rowPicker.setMinValue(minValue);
+ columnPicker.setMaxValue(maxValue);
+ rowPicker.setMaxValue(maxValue);
+ columnPicker.setValue(currentValues.first);
+ rowPicker.setValue(currentValues.second);
+
+ new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.grid_size_text)
+ .setView(contentView)
+ .setPositiveButton(R.string.grid_size_custom_positive, (dialog, i) -> {
+ String newValues = Utilities.getGridValue(columnPicker.getValue(),
+ rowPicker.getValue());
+ mPrefs.edit().putString(KEY_GRID_SIZE, newValues).apply();
+ })
+ .setNegativeButton(android.R.string.cancel, null)
+ .show();
+ }
+
+ private String getDefaulGridSize() {
+ InvariantDeviceProfile profile = new InvariantDeviceProfile(getActivity());
+ return Utilities.getGridValue(profile.numColumns, profile.numRows);
+ }
+
+ private void updateIconPackEntry() {
+ ApplicationInfo info = null;
+ String iconPack = mPrefs.getString(KEY_ICON_PACK, mDefaultIconPack);
+ String summary = getString(R.string.icon_pack_system);
+ Drawable icon = getResources().getDrawable(android.R.mipmap.sym_def_app_icon);
+
+ if (!mIconsHandler.isDefaultIconPack()) {
+ try {
+ info = mPackageManager.getApplicationInfo(iconPack, PackageManager.GET_META_DATA);
+ } catch (PackageManager.NameNotFoundException ignored) {
+ }
+ if (info != null) {
+ summary = mPackageManager.getApplicationLabel(info).toString();
+ icon = mPackageManager.getApplicationIcon(info);
+ }
+ }
+
+ mIconPackPref.setSummary(summary);
+ mIconPackPref.setIcon(icon);
+ }
+
+ private void triggerRestart() {
+ Context context = getActivity().getApplicationContext();
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.addCategory(Intent.CATEGORY_HOME);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ PendingIntent pi = PendingIntent.getActivity(context, 41, intent,
+ PendingIntent.FLAG_CANCEL_CURRENT);
+ AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ manager.set(AlarmManager.RTC, java.lang.System.currentTimeMillis() + 1, pi);
+ java.lang.System.exit(0);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index 5fe69f457..765879946 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -30,21 +30,14 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
+import android.preference.PreferenceGroup;
import android.provider.Settings;
-import android.util.Pair;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.NumberPicker;
import com.android.launcher3.graphics.IconShapeOverride;
-import com.android.launcher3.icons.IconsHandler;
import com.android.launcher3.notification.NotificationListener;
import com.android.launcher3.util.SettingsObserver;
import com.android.launcher3.views.ButtonPreference;
@@ -60,26 +53,23 @@ public class SettingsActivity extends Activity {
/** Hidden field Settings.Secure.ENABLED_NOTIFICATION_LISTENERS */
private static final String NOTIFICATION_ENABLED_LISTENERS = "enabled_notification_listeners";
- // Grid size
- private static final String KEY_GRID_SIZE = "pref_grid_size";
-
// Hide labels
private static final String KEY_SHOW_DESKTOP_LABELS = "pref_desktop_show_labels";
private static final String KEY_SHOW_DRAWER_LABELS = "pref_drawer_show_labels";
- // Icon pack
- public static final String KEY_ICON_PACK = "pref_icon_pack";
+ static final String EXTRA_SCHEDULE_RESTART = "extraScheduleRestart";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (savedInstanceState == null) {
- // Display the fragment as the main content.
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, new LauncherSettingsFragment())
- .commit();
- }
+ LauncherSettingsFragment fragment = new LauncherSettingsFragment();
+ fragment.mShouldRestart = getIntent().getBooleanExtra(EXTRA_SCHEDULE_RESTART, false);
+
+ // Display the fragment as the main content.
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, fragment)
+ .commit();
}
/**
@@ -93,16 +83,8 @@ public class SettingsActivity extends Activity {
private SharedPreferences mPrefs;
- private Preference mGridPref;
-
private boolean mShouldRestart = false;
- // Icon pack
- private Preference mIconPackPref;
- private String mDefaultIconPack;
- private IconsHandler mIconsHandler;
- private PackageManager mPackageManager;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -113,11 +95,14 @@ public class SettingsActivity extends Activity {
mPrefs = Utilities.getPrefs(getActivity().getApplicationContext());
mPrefs.registerOnSharedPreferenceChangeListener(this);
+ PreferenceGroup homeGroup = (PreferenceGroup) findPreference("category_home");
+ PreferenceGroup iconGroup = (PreferenceGroup) findPreference("category_icons");
+
// Setup allow rotation preference
Preference rotationPref = findPreference(Utilities.ALLOW_ROTATION_PREFERENCE_KEY);
if (getResources().getBoolean(R.bool.allow_rotation)) {
// Launcher supports rotation by default. No need to show this setting.
- getPreferenceScreen().removePreference(rotationPref);
+ homeGroup.removePreference(rotationPref);
} else {
mRotationLockObserver = new SystemDisplayRotationLockObserver(rotationPref, resolver);
@@ -132,12 +117,12 @@ public class SettingsActivity extends Activity {
ButtonPreference iconBadgingPref =
(ButtonPreference) findPreference(ICON_BADGING_PREFERENCE_KEY);
if (!Utilities.ATLEAST_OREO) {
- getPreferenceScreen().removePreference(
+ homeGroup.removePreference(
findPreference(SessionCommitReceiver.ADD_ICON_PREFERENCE_KEY));
- getPreferenceScreen().removePreference(iconBadgingPref);
+ iconGroup.removePreference(iconBadgingPref);
} else if (!getResources().getBoolean(R.bool.notification_badging_enabled)
|| getContext().getSystemService(ActivityManager.class).isLowRamDevice()) {
- getPreferenceScreen().removePreference(iconBadgingPref);
+ iconGroup.removePreference(iconBadgingPref);
} else {
// Listen to system notification badge settings while this UI is active.
mIconBadgingObserver = new IconBadgingObserver(
@@ -150,32 +135,9 @@ public class SettingsActivity extends Activity {
if (IconShapeOverride.isSupported(getActivity())) {
IconShapeOverride.handlePreferenceUi((ListPreference) iconShapeOverride);
} else {
- getPreferenceScreen().removePreference(iconShapeOverride);
+ iconGroup.removePreference(iconShapeOverride);
}
}
-
- mGridPref = findPreference(KEY_GRID_SIZE);
- if (mGridPref != null) {
- mGridPref.setOnPreferenceClickListener(preference -> {
- setCustomGridSize();
- return true;
- });
-
- mGridPref.setSummary(mPrefs.getString(KEY_GRID_SIZE, getDefaulGridSize()));
- }
-
- mPrefs = Utilities.getPrefs(getActivity().getApplicationContext());
- mPrefs.registerOnSharedPreferenceChangeListener(this);
-
- mIconPackPref = findPreference(KEY_ICON_PACK);
- mIconPackPref.setOnPreferenceClickListener(preference -> {
- mIconsHandler.showDialog(getActivity());
- return true;
- });
- mPackageManager = getActivity().getPackageManager();
- mDefaultIconPack = mPrefs.getString(KEY_ICON_PACK, getString(R.string.icon_pack_default));
- mIconsHandler = IconCache.getIconsHandler(getActivity().getApplicationContext());
- updateIconPackEntry();
}
@Override
@@ -199,13 +161,6 @@ public class SettingsActivity extends Activity {
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
switch (key) {
- case KEY_GRID_SIZE:
- mGridPref.setSummary(mPrefs.getString(KEY_GRID_SIZE, getDefaulGridSize()));
- mShouldRestart = true;
- break;
- case KEY_ICON_PACK:
- updateIconPackEntry();
- break;
case KEY_SHOW_DESKTOP_LABELS:
case KEY_SHOW_DRAWER_LABELS:
mShouldRestart = true;
@@ -213,76 +168,6 @@ public class SettingsActivity extends Activity {
}
}
- @Override
- public void onPause() {
- super.onPause();
- mIconsHandler.hideDialog();
- }
-
- private void setCustomGridSize() {
- int minValue = 3;
- int maxValue = 9;
-
- String storedValue = mPrefs.getString(KEY_GRID_SIZE, "4x4");
- Pair<Integer, Integer> currentValues = Utilities.extractCustomGrid(storedValue);
-
- LayoutInflater inflater = (LayoutInflater)
- getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- if (inflater == null) {
- return;
- }
- View contentView = inflater.inflate(R.layout.dialog_custom_grid, null);
- NumberPicker columnPicker = (NumberPicker)
- contentView.findViewById(R.id.dialog_grid_column);
- NumberPicker rowPicker = (NumberPicker)
- contentView.findViewById(R.id.dialog_grid_row);
-
- columnPicker.setMinValue(minValue);
- rowPicker.setMinValue(minValue);
- columnPicker.setMaxValue(maxValue);
- rowPicker.setMaxValue(maxValue);
- columnPicker.setValue(currentValues.first);
- rowPicker.setValue(currentValues.second);
-
- new AlertDialog.Builder(getActivity())
- .setTitle(R.string.grid_size_text)
- .setMessage(R.string.grid_size_custom_message)
- .setView(contentView)
- .setPositiveButton(R.string.grid_size_custom_positive, (dialog, i) -> {
- String newValues = Utilities.getGridValue(columnPicker.getValue(),
- rowPicker.getValue());
- mPrefs.edit().putString(KEY_GRID_SIZE, newValues).apply();
- })
- .show();
- }
-
-
- private String getDefaulGridSize() {
- InvariantDeviceProfile profile = new InvariantDeviceProfile(getActivity());
- return Utilities.getGridValue(profile.numColumns, profile.numRows);
- }
-
- private void updateIconPackEntry() {
- ApplicationInfo info = null;
- String iconPack = mPrefs.getString(KEY_ICON_PACK, mDefaultIconPack);
- String summary = getString(R.string.icon_pack_system);
- Drawable icon = getResources().getDrawable(android.R.mipmap.sym_def_app_icon);
-
- if (!mIconsHandler.isDefaultIconPack()) {
- try {
- info = mPackageManager.getApplicationInfo(iconPack, PackageManager.GET_META_DATA);
- } catch (PackageManager.NameNotFoundException ignored) {
- }
- if (info != null) {
- summary = mPackageManager.getApplicationLabel(info).toString();
- icon = mPackageManager.getApplicationIcon(info);
- }
- }
-
- mIconPackPref.setSummary(summary);
- mIconPackPref.setIcon(icon);
- }
-
private void triggerRestart() {
Context context = getActivity().getApplicationContext();
Intent intent = new Intent(Intent.ACTION_MAIN);
@@ -314,7 +199,7 @@ public class SettingsActivity extends Activity {
public void onSettingChanged(boolean enabled) {
mRotationPref.setEnabled(enabled);
mRotationPref.setSummary(enabled
- ? R.string.allow_rotation_desc : R.string.allow_rotation_blocked_desc);
+ ? R.string.settings_allow_rotation_desc : R.string.allow_rotation_blocked_desc);
}
}
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index cab693d80..52e1e48dd 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -694,7 +694,7 @@ public final class Utilities {
SharedPreferences prefs = Utilities.getPrefs(context.getApplicationContext());
String defaultPack = context.getString(R.string.icon_pack_default);
String defaultLocalziedPack = context.getString(R.string.icon_pack_system);
- String currentPack = prefs.getString(SettingsActivity.KEY_ICON_PACK, defaultPack);
+ String currentPack = prefs.getString(QuickSettingsActivity.KEY_ICON_PACK, defaultPack);
return !currentPack.equals(defaultPack) && !currentPack.equals(defaultLocalziedPack);
}
diff --git a/src/com/android/launcher3/icons/IconsHandler.java b/src/com/android/launcher3/icons/IconsHandler.java
index 3a923dac9..914d357fc 100644
--- a/src/com/android/launcher3/icons/IconsHandler.java
+++ b/src/com/android/launcher3/icons/IconsHandler.java
@@ -52,8 +52,8 @@ import android.widget.TextView;
import com.android.launcher3.IconCache;
import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.QuickSettingsActivity;
import com.android.launcher3.R;
-import com.android.launcher3.SettingsActivity;
import com.android.launcher3.Utilities;
import com.android.launcher3.graphics.LauncherIcons;
@@ -110,7 +110,7 @@ public class IconsHandler {
mDefaultIconPack = context.getString(R.string.icon_pack_default);
SharedPreferences prefs = Utilities.getPrefs(context.getApplicationContext());
- String iconPack = prefs.getString(SettingsActivity.KEY_ICON_PACK, mDefaultIconPack);
+ String iconPack = prefs.getString(QuickSettingsActivity.KEY_ICON_PACK, mDefaultIconPack);
loadAvailableIconPacks();
loadIconPack(iconPack, false);
}
@@ -506,7 +506,7 @@ public class IconsHandler {
.setAdapter(adapter, (dialog, position) -> {
String selected = adapter.getItem(position);
String current = Utilities.getPrefs(mContext.getApplicationContext())
- .getString(SettingsActivity.KEY_ICON_PACK, mDefaultIconPack);
+ .getString(QuickSettingsActivity.KEY_ICON_PACK, mDefaultIconPack);
if (!selected.equals(current)) {
switchIconPacks(selected);
}
@@ -559,7 +559,7 @@ public class IconsHandler {
mSupportedPackages.add(0, new IconPackInfo(defaultLabel, icon, defaultLabel));
mCurrentIconPack = Utilities.getPrefs(context.getApplicationContext())
- .getString(SettingsActivity.KEY_ICON_PACK,
+ .getString(QuickSettingsActivity.KEY_ICON_PACK,
res.getString(R.string.icon_pack_default));
}
@@ -611,7 +611,7 @@ public class IconsHandler {
@Override
protected void onPostExecute(Void aVoid) {
Utilities.getPrefs(mContext.getApplicationContext()).edit()
- .putString(SettingsActivity.KEY_ICON_PACK, mIconPackPackageName).apply();
+ .putString(QuickSettingsActivity.KEY_ICON_PACK, mIconPackPackageName).apply();
mIconCache.clearIconDataBase();
mIconCache.flush();
LauncherAppState.getInstance(mContext).getModel().forceReload();