diff options
Diffstat (limited to 'src/com/android/launcher3/SettingsActivity.java')
-rw-r--r-- | src/com/android/launcher3/SettingsActivity.java | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java index 93fedf46d..5fe69f457 100644 --- a/src/com/android/launcher3/SettingsActivity.java +++ b/src/com/android/launcher3/SettingsActivity.java @@ -18,18 +18,21 @@ package com.android.launcher3; import android.app.Activity; import android.app.ActivityManager; +import android.app.AlarmManager; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.FragmentManager; +import android.app.PendingIntent; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.app.AlarmManager; -import android.app.PendingIntent; 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; @@ -41,6 +44,7 @@ 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; @@ -63,6 +67,9 @@ public class SettingsActivity extends Activity { 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"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -90,6 +97,12 @@ public class SettingsActivity extends Activity { 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); @@ -97,6 +110,8 @@ public class SettingsActivity extends Activity { addPreferencesFromResource(R.xml.launcher_preferences); ContentResolver resolver = getActivity().getContentResolver(); + mPrefs = Utilities.getPrefs(getActivity().getApplicationContext()); + mPrefs.registerOnSharedPreferenceChangeListener(this); // Setup allow rotation preference Preference rotationPref = findPreference(Utilities.ALLOW_ROTATION_PREFERENCE_KEY); @@ -151,6 +166,16 @@ public class SettingsActivity extends Activity { 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 @@ -178,6 +203,9 @@ public class SettingsActivity extends Activity { 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; @@ -185,6 +213,12 @@ public class SettingsActivity extends Activity { } } + @Override + public void onPause() { + super.onPause(); + mIconsHandler.hideDialog(); + } + private void setCustomGridSize() { int minValue = 3; int maxValue = 9; @@ -222,11 +256,33 @@ public class SettingsActivity extends Activity { .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); |