diff options
author | Daniel Sandler <dsandler@android.com> | 2012-02-01 14:14:18 -0500 |
---|---|---|
committer | Daniel Sandler <dsandler@android.com> | 2012-04-10 04:15:21 -0400 |
commit | 47c991f78cc9a2b24de1a7c616cd85053dddf671 (patch) | |
tree | 8a3ef5acdd6b7b5d07bb8cab3acec516f9d9cdca | |
parent | c8732db7e59f8e76a14beb3384109ab62b542a20 (diff) | |
download | packages_apps_settings-47c991f78cc9a2b24de1a7c616cd85053dddf671.zip packages_apps_settings-47c991f78cc9a2b24de1a7c616cd85053dddf671.tar.gz packages_apps_settings-47c991f78cc9a2b24de1a7c616cd85053dddf671.tar.bz2 |
Update Settings for new Dreams architecture.
Additionally, hide all Dreams settings if the feature is
disabled (R.bool.config_enableDreams).
(Depends on change Idfe9d430)
Change-Id: Ifa05f125e411ca58605c33481de26cd29a926807
-rw-r--r-- | src/com/android/settings/DisplaySettings.java | 8 | ||||
-rw-r--r-- | src/com/android/settings/DreamComponentPreference.java | 109 | ||||
-rw-r--r-- | src/com/android/settings/DreamTesterPreference.java | 24 |
3 files changed, 108 insertions, 33 deletions
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index d2c227b..8ffd84a 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -83,7 +83,12 @@ public class DisplaySettings extends SettingsPreferenceFragment implements mAccelerometer.setPersistent(false); mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER); - + if (mScreenSaverPreference != null + && getResources().getBoolean( + com.android.internal.R.bool.config_enableDreams) == false) { + getPreferenceScreen().removePreference(mScreenSaverPreference); + } + mScreenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT); final long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE); @@ -108,6 +113,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found"); } } + } private void updateTimeoutPreferenceDescription(long currentTimeout) { diff --git a/src/com/android/settings/DreamComponentPreference.java b/src/com/android/settings/DreamComponentPreference.java index b41ab3a..2114dd1 100644 --- a/src/com/android/settings/DreamComponentPreference.java +++ b/src/com/android/settings/DreamComponentPreference.java @@ -25,11 +25,17 @@ import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.content.pm.ComponentInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; +import android.os.Bundle; +import android.os.RemoteException; +import android.os.ServiceManager; import android.preference.Preference; import android.provider.Settings; +import android.service.dreams.IDreamManager; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; @@ -43,6 +49,7 @@ import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; +import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -51,10 +58,13 @@ import java.util.List; public class DreamComponentPreference extends Preference { private static final String TAG = "DreamComponentPreference"; - private static final boolean SHOW_DOCK_APPS_TOO = true; - + private static final boolean SHOW_DOCK_APPS = false; + private static final boolean SHOW_DREAM_SERVICES = true; + private static final boolean SHOW_DREAM_ACTIVITIES = false; + private final PackageManager pm; private final ContentResolver resolver; + private final Collator sCollator = Collator.getInstance(); public DreamComponentPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -65,30 +75,50 @@ public class DreamComponentPreference extends Preference { } private void refreshFromSettings() { - String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT); - if (component == null) { - component = getContext().getResources().getString( - com.android.internal.R.string.config_defaultDreamComponent); + ComponentName cn = null; + IDreamManager dm = IDreamManager.Stub.asInterface( + ServiceManager.getService("dreams")); + try { + cn = dm.getDreamComponent(); + } catch (RemoteException ex) { + setSummary("(unknown)"); + return; } - if (component != null) { - ComponentName cn = ComponentName.unflattenFromString(component); + + try { + setSummary(pm.getActivityInfo(cn, 0).loadLabel(pm)); + } catch (PackageManager.NameNotFoundException ex) { try { - setSummary(pm.getActivityInfo(cn, 0).loadLabel(pm)); - } catch (PackageManager.NameNotFoundException ex) { + setSummary(pm.getServiceInfo(cn, 0).loadLabel(pm)); + } catch (PackageManager.NameNotFoundException ex2) { setSummary("(unknown)"); } } } - final static Comparator<ResolveInfo> sResolveInfoComparator = new Comparator<ResolveInfo>() { + // Group by package, then by name. + Comparator<ResolveInfo> sResolveInfoComparator = new Comparator<ResolveInfo>() { @Override public int compare(ResolveInfo a, ResolveInfo b) { - int cmp = a.activityInfo.applicationInfo.packageName.compareTo( - b.activityInfo.applicationInfo.packageName); - if (cmp == 0) { - cmp = a.activityInfo.name.compareTo(b.activityInfo.name); + CharSequence sa, sb; + + ApplicationInfo aia = a.activityInfo != null ? a.activityInfo.applicationInfo : a.serviceInfo.applicationInfo; + ApplicationInfo aib = b.activityInfo != null ? b.activityInfo.applicationInfo : b.serviceInfo.applicationInfo; + + if (!aia.equals(aib)) { + sa = pm.getApplicationLabel(aia); + sb = pm.getApplicationLabel(aib); + } else { + sa = a.loadLabel(pm); + if (sa == null) { + sa = (a.activityInfo != null) ? a.activityInfo.name : a.serviceInfo.name; + } + sb = b.loadLabel(pm); + if (sb == null) { + sb = (b.activityInfo != null) ? b.activityInfo.name : b.serviceInfo.name; + } } - return cmp; + return sCollator.compare(sa.toString(), sb.toString()); } }; @@ -102,12 +132,20 @@ public class DreamComponentPreference extends Preference { inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - results = new ArrayList<ResolveInfo>(pm.queryIntentActivities(choosy, 0)); + results = new ArrayList<ResolveInfo>(); + + if (SHOW_DREAM_ACTIVITIES) { + results.addAll(pm.queryIntentActivities(choosy, PackageManager.GET_META_DATA)); + } + + if (SHOW_DREAM_SERVICES) { + results.addAll(pm.queryIntentServices(choosy, PackageManager.GET_META_DATA)); + } // Group by package Collections.sort(results, sResolveInfoComparator); - if (SHOW_DOCK_APPS_TOO) { + if (SHOW_DOCK_APPS) { choosy = new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_DESK_DOCK); @@ -137,6 +175,22 @@ public class DreamComponentPreference extends Preference { return (long) position; } + private CharSequence loadDescription(ResolveInfo ri) { + CharSequence desc = null; + if (ri != null) { + Bundle metaData = (ri.activityInfo != null) ? ri.activityInfo.metaData : ri.serviceInfo.metaData; + Log.d(TAG, "loadDescription: ri=" + ri + " metaData=" + metaData); + if (metaData != null) { + desc = metaData.getCharSequence("android.screensaver.description"); + Log.d(TAG, "loadDescription: desc=" + desc); + if (desc != null) { + desc = desc.toString().trim(); + } + } + } + return desc; + } + @Override public View getView(int position, View convertView, ViewGroup parent) { View row = (convertView != null) @@ -159,16 +213,21 @@ public class DreamComponentPreference extends Preference { @Override public void onClick(DialogInterface dialog, int which) { ResolveInfo ri = (ResolveInfo)list.getItem(which); - ActivityInfo act = ri.activityInfo; - ComponentName cn = new ComponentName( - act.applicationInfo.packageName, - act.name); - Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(cn); - + String pn = (ri.activityInfo != null) ? ri.activityInfo.applicationInfo.packageName + : ri.serviceInfo.applicationInfo.packageName; + String n = (ri.activityInfo != null) ? ri.activityInfo.name : ri.serviceInfo.name; + ComponentName cn = new ComponentName(pn, n); + setSummary(ri.loadLabel(pm)); //getContext().startActivity(intent); - Settings.Secure.putString(resolver, SCREENSAVER_COMPONENT, cn.flattenToString()); + IDreamManager dm = IDreamManager.Stub.asInterface( + ServiceManager.getService("dreams")); + try { + dm.setDreamComponent(cn); + } catch (RemoteException ex) { + // too bad, so sad, oh mom, oh dad + } } }) .create(); diff --git a/src/com/android/settings/DreamTesterPreference.java b/src/com/android/settings/DreamTesterPreference.java index ccd6fc0..87a142c 100644 --- a/src/com/android/settings/DreamTesterPreference.java +++ b/src/com/android/settings/DreamTesterPreference.java @@ -28,8 +28,11 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; +import android.os.RemoteException; +import android.os.ServiceManager; import android.preference.Preference; import android.provider.Settings; +import android.service.dreams.IDreamManager; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; @@ -65,13 +68,20 @@ public class DreamTesterPreference extends Preference { if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); Log.v(TAG, "cn=" + cn); - Intent intent = new Intent(Intent.ACTION_MAIN) - .setComponent(cn) - .addFlags( - Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS - ) - .putExtra("android.dreams.TEST", true); - getContext().startActivity(intent); +// Intent intent = new Intent(Intent.ACTION_MAIN) +// .setComponent(cn) +// .addFlags( +// Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS +// ) +// .putExtra("android.dreams.TEST", true); +// getContext().startService(intent); + IDreamManager dm = IDreamManager.Stub.asInterface( + ServiceManager.getService("dreams")); + try { + dm.testDream(cn); + } catch (RemoteException ex) { + // too bad, so sad, oh mom, oh dad + } } } } |