diff options
author | Joey Rizzoli <joey@lineageos.org> | 2017-11-30 21:59:30 +0100 |
---|---|---|
committer | Arne Coucheron <arco68@gmail.com> | 2018-01-19 00:27:13 +0100 |
commit | 0fb16bbd36976824ebf1d32a3dfd2fbfc565a6f7 (patch) | |
tree | a148ffa9977bc98261e33e1e88f70d706115fd72 /src | |
parent | c6b85822544de5194cff97d7fe07236f5c7a5b32 (diff) | |
download | android_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.java | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/QuickSettingsActivity.java | 202 | ||||
-rw-r--r-- | src/com/android/launcher3/SettingsActivity.java | 151 | ||||
-rw-r--r-- | src/com/android/launcher3/Utilities.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/icons/IconsHandler.java | 10 |
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(); |