summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@android.com>2012-02-01 14:14:18 -0500
committerDaniel Sandler <dsandler@android.com>2012-04-10 04:15:21 -0400
commit47c991f78cc9a2b24de1a7c616cd85053dddf671 (patch)
tree8a3ef5acdd6b7b5d07bb8cab3acec516f9d9cdca
parentc8732db7e59f8e76a14beb3384109ab62b542a20 (diff)
downloadpackages_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.java8
-rw-r--r--src/com/android/settings/DreamComponentPreference.java109
-rw-r--r--src/com/android/settings/DreamTesterPreference.java24
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
+ }
}
}
}