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
This commit is contained in:
@@ -83,6 +83,11 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
|||||||
mAccelerometer.setPersistent(false);
|
mAccelerometer.setPersistent(false);
|
||||||
|
|
||||||
mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER);
|
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);
|
mScreenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
|
||||||
final long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT,
|
final long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT,
|
||||||
@@ -108,6 +113,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
|||||||
Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
|
Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTimeoutPreferenceDescription(long currentTimeout) {
|
private void updateTimeoutPreferenceDescription(long currentTimeout) {
|
||||||
|
@@ -25,11 +25,17 @@ import android.content.ContentResolver;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.ComponentInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceManager;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.service.dreams.IDreamManager;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
@@ -43,6 +49,7 @@ import android.widget.ImageView;
|
|||||||
import android.widget.ListAdapter;
|
import android.widget.ListAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import java.text.Collator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@@ -51,10 +58,13 @@ import java.util.List;
|
|||||||
public class DreamComponentPreference extends Preference {
|
public class DreamComponentPreference extends Preference {
|
||||||
private static final String TAG = "DreamComponentPreference";
|
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 PackageManager pm;
|
||||||
private final ContentResolver resolver;
|
private final ContentResolver resolver;
|
||||||
|
private final Collator sCollator = Collator.getInstance();
|
||||||
|
|
||||||
public DreamComponentPreference(Context context, AttributeSet attrs) {
|
public DreamComponentPreference(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
@@ -65,30 +75,50 @@ public class DreamComponentPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshFromSettings() {
|
private void refreshFromSettings() {
|
||||||
String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT);
|
ComponentName cn = null;
|
||||||
if (component == null) {
|
IDreamManager dm = IDreamManager.Stub.asInterface(
|
||||||
component = getContext().getResources().getString(
|
ServiceManager.getService("dreams"));
|
||||||
com.android.internal.R.string.config_defaultDreamComponent);
|
try {
|
||||||
|
cn = dm.getDreamComponent();
|
||||||
|
} catch (RemoteException ex) {
|
||||||
|
setSummary("(unknown)");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (component != null) {
|
|
||||||
ComponentName cn = ComponentName.unflattenFromString(component);
|
|
||||||
try {
|
try {
|
||||||
setSummary(pm.getActivityInfo(cn, 0).loadLabel(pm));
|
setSummary(pm.getActivityInfo(cn, 0).loadLabel(pm));
|
||||||
} catch (PackageManager.NameNotFoundException ex) {
|
} catch (PackageManager.NameNotFoundException ex) {
|
||||||
|
try {
|
||||||
|
setSummary(pm.getServiceInfo(cn, 0).loadLabel(pm));
|
||||||
|
} catch (PackageManager.NameNotFoundException ex2) {
|
||||||
setSummary("(unknown)");
|
setSummary("(unknown)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final static Comparator<ResolveInfo> sResolveInfoComparator = new Comparator<ResolveInfo>() {
|
// Group by package, then by name.
|
||||||
|
Comparator<ResolveInfo> sResolveInfoComparator = new Comparator<ResolveInfo>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(ResolveInfo a, ResolveInfo b) {
|
public int compare(ResolveInfo a, ResolveInfo b) {
|
||||||
int cmp = a.activityInfo.applicationInfo.packageName.compareTo(
|
CharSequence sa, sb;
|
||||||
b.activityInfo.applicationInfo.packageName);
|
|
||||||
if (cmp == 0) {
|
ApplicationInfo aia = a.activityInfo != null ? a.activityInfo.applicationInfo : a.serviceInfo.applicationInfo;
|
||||||
cmp = a.activityInfo.name.compareTo(b.activityInfo.name);
|
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;
|
||||||
}
|
}
|
||||||
return cmp;
|
sb = b.loadLabel(pm);
|
||||||
|
if (sb == null) {
|
||||||
|
sb = (b.activityInfo != null) ? b.activityInfo.name : b.serviceInfo.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sCollator.compare(sa.toString(), sb.toString());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -102,12 +132,20 @@ public class DreamComponentPreference extends Preference {
|
|||||||
|
|
||||||
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
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
|
// Group by package
|
||||||
Collections.sort(results, sResolveInfoComparator);
|
Collections.sort(results, sResolveInfoComparator);
|
||||||
|
|
||||||
if (SHOW_DOCK_APPS_TOO) {
|
if (SHOW_DOCK_APPS) {
|
||||||
choosy = new Intent(Intent.ACTION_MAIN)
|
choosy = new Intent(Intent.ACTION_MAIN)
|
||||||
.addCategory(Intent.CATEGORY_DESK_DOCK);
|
.addCategory(Intent.CATEGORY_DESK_DOCK);
|
||||||
|
|
||||||
@@ -137,6 +175,22 @@ public class DreamComponentPreference extends Preference {
|
|||||||
return (long) position;
|
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
|
@Override
|
||||||
public View getView(int position, View convertView, ViewGroup parent) {
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
View row = (convertView != null)
|
View row = (convertView != null)
|
||||||
@@ -159,16 +213,21 @@ public class DreamComponentPreference extends Preference {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
ResolveInfo ri = (ResolveInfo)list.getItem(which);
|
ResolveInfo ri = (ResolveInfo)list.getItem(which);
|
||||||
ActivityInfo act = ri.activityInfo;
|
String pn = (ri.activityInfo != null) ? ri.activityInfo.applicationInfo.packageName
|
||||||
ComponentName cn = new ComponentName(
|
: ri.serviceInfo.applicationInfo.packageName;
|
||||||
act.applicationInfo.packageName,
|
String n = (ri.activityInfo != null) ? ri.activityInfo.name : ri.serviceInfo.name;
|
||||||
act.name);
|
ComponentName cn = new ComponentName(pn, n);
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(cn);
|
|
||||||
|
|
||||||
setSummary(ri.loadLabel(pm));
|
setSummary(ri.loadLabel(pm));
|
||||||
//getContext().startActivity(intent);
|
//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();
|
.create();
|
||||||
|
@@ -28,8 +28,11 @@ import android.content.pm.ActivityInfo;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceManager;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.service.dreams.IDreamManager;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
@@ -65,13 +68,20 @@ public class DreamTesterPreference extends Preference {
|
|||||||
if (component != null) {
|
if (component != null) {
|
||||||
ComponentName cn = ComponentName.unflattenFromString(component);
|
ComponentName cn = ComponentName.unflattenFromString(component);
|
||||||
Log.v(TAG, "cn=" + cn);
|
Log.v(TAG, "cn=" + cn);
|
||||||
Intent intent = new Intent(Intent.ACTION_MAIN)
|
// Intent intent = new Intent(Intent.ACTION_MAIN)
|
||||||
.setComponent(cn)
|
// .setComponent(cn)
|
||||||
.addFlags(
|
// .addFlags(
|
||||||
Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
|
// Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
|
||||||
)
|
// )
|
||||||
.putExtra("android.dreams.TEST", true);
|
// .putExtra("android.dreams.TEST", true);
|
||||||
getContext().startActivity(intent);
|
// 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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user