summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/SettingsActivity.java')
-rw-r--r--src/com/android/launcher3/SettingsActivity.java60
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);