diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index a698538f6c3..6ee60b54e86 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -284,11 +284,10 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } private void updateScreenSaverSummary() { - int summaryResId = DreamSettings.getSummaryResource(getActivity()); - if (summaryResId > 0) - mScreenSaverPreference.setSummary(summaryResId); - else - mScreenSaverPreference.setSummary(""); + if (mScreenSaverPreference != null) { + mScreenSaverPreference.setSummary( + DreamSettings.getSummaryTextWithDreamName(getActivity())); + } } private void updateWifiDisplaySummary() { diff --git a/src/com/android/settings/DreamBackend.java b/src/com/android/settings/DreamBackend.java index 7effe4b9d40..a866174dbfc 100644 --- a/src/com/android/settings/DreamBackend.java +++ b/src/com/android/settings/DreamBackend.java @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; @@ -116,6 +117,22 @@ public class DreamBackend { } } + public CharSequence getActiveDreamName() { + ComponentName cn = getActiveDream(); + if (cn != null) { + PackageManager pm = mContext.getPackageManager(); + try { + ServiceInfo ri = pm.getServiceInfo(cn, 0); + if (ri != null) { + return ri.loadLabel(pm); + } + } catch (PackageManager.NameNotFoundException exc) { + return null; // uninstalled? + } + } + return null; + } + public boolean isEnabled() { return getBoolean(SCREENSAVER_ENABLED); } diff --git a/src/com/android/settings/DreamSettings.java b/src/com/android/settings/DreamSettings.java index ca4415bfd5b..32328d9a7c9 100644 --- a/src/com/android/settings/DreamSettings.java +++ b/src/com/android/settings/DreamSettings.java @@ -149,7 +149,7 @@ public class DreamSettings extends SettingsPreferenceFragment { // create "when to dream" overflow menu item MenuItem whenToDream = createMenuItem(menu, R.string.screensaver_settings_when_to_dream, - MenuItem.SHOW_AS_ACTION_NEVER, + MenuItem.SHOW_AS_ACTION_IF_ROOM, isEnabled, new Runnable() { @Override @@ -245,6 +245,16 @@ public class DreamSettings extends SettingsPreferenceFragment { : 0; } + public static CharSequence getSummaryTextWithDreamName(Context context) { + DreamBackend backend = new DreamBackend(context); + boolean isEnabled = backend.isEnabled(); + if (!isEnabled) { + return context.getString(R.string.screensaver_settings_summary_off); + } else { + return backend.getActiveDreamName(); + } + } + private void refreshFromBackend() { logd("refreshFromBackend()"); mRefreshing = true; @@ -306,7 +316,7 @@ public class DreamSettings extends SettingsPreferenceFragment { ImageView settingsButton = (ImageView) row.findViewById(android.R.id.button2); settingsButton.setVisibility(showSettings ? View.VISIBLE : View.INVISIBLE); - settingsButton.setAlpha(dreamInfo.isActive ? 1f : 0.7f); + settingsButton.setAlpha(dreamInfo.isActive ? 1f : 0.33f); settingsButton.setEnabled(dreamInfo.isActive); settingsButton.setOnClickListener(new OnClickListener(){ @Override