Minor UI tweakings
* Changed PreferenceScreen to Preference. * Adjusted the "No recent app" message layout. * No "Location services" category when empty. * Removed "Under Construction" finally, hooray! Change-Id: I83fd1d7a1b0235ad21b3a5c54542e937b60b3940
This commit is contained in:
@@ -52,9 +52,7 @@ public class LocationSettings extends LocationSettingsBase
|
||||
|
||||
private Switch mSwitch;
|
||||
private boolean mValidListener;
|
||||
private PreferenceScreen mLocationMode;
|
||||
private PreferenceCategory mRecentLocationRequests;
|
||||
private PreferenceCategory mLocationServices;
|
||||
private Preference mLocationMode;
|
||||
|
||||
private BatteryStatsHelper mStatsHelper;
|
||||
|
||||
@@ -125,7 +123,7 @@ public class LocationSettings extends LocationSettingsBase
|
||||
addPreferencesFromResource(R.xml.location_settings);
|
||||
root = getPreferenceScreen();
|
||||
|
||||
mLocationMode = (PreferenceScreen) root.findPreference(KEY_LOCATION_MODE);
|
||||
mLocationMode = root.findPreference(KEY_LOCATION_MODE);
|
||||
mLocationMode.setOnPreferenceClickListener(
|
||||
new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
@@ -140,25 +138,31 @@ public class LocationSettings extends LocationSettingsBase
|
||||
|
||||
final PreferenceManager preferenceManager = getPreferenceManager();
|
||||
|
||||
mRecentLocationRequests =
|
||||
PreferenceCategory categoryRecentLocationRequests =
|
||||
(PreferenceCategory) root.findPreference(KEY_RECENT_LOCATION_REQUESTS);
|
||||
RecentLocationApps recentApps = new RecentLocationApps(activity, mStatsHelper);
|
||||
List<Preference> recentLocationRequests = recentApps.getAppList(preferenceManager);
|
||||
List<Preference> recentLocationRequests = recentApps.getAppList();
|
||||
if (recentLocationRequests.size() > 0) {
|
||||
addPreferencesSorted(recentLocationRequests, mRecentLocationRequests);
|
||||
addPreferencesSorted(recentLocationRequests, categoryRecentLocationRequests);
|
||||
} else {
|
||||
// If there's no item to display, add a "No recent apps" item.
|
||||
PreferenceScreen screen = preferenceManager.createPreferenceScreen(activity);
|
||||
screen.setTitle(R.string.location_no_recent_apps);
|
||||
screen.setSelectable(false);
|
||||
screen.setEnabled(false);
|
||||
mRecentLocationRequests.addPreference(screen);
|
||||
Preference banner = new Preference(activity);
|
||||
banner.setLayoutResource(R.layout.location_list_no_item);
|
||||
banner.setTitle(R.string.location_no_recent_apps);
|
||||
banner.setSelectable(false);
|
||||
banner.setEnabled(false);
|
||||
categoryRecentLocationRequests.addPreference(banner);
|
||||
}
|
||||
|
||||
mLocationServices = (PreferenceCategory) root.findPreference(KEY_LOCATION_SERVICES);
|
||||
List<Preference> locationServices = SettingsInjector.getInjectedSettings(
|
||||
activity, preferenceManager);
|
||||
addPreferencesSorted(locationServices, mLocationServices);
|
||||
PreferenceCategory categoryLocationServices =
|
||||
(PreferenceCategory) root.findPreference(KEY_LOCATION_SERVICES);
|
||||
List<Preference> locationServices = SettingsInjector.getInjectedSettings(activity);
|
||||
if (locationServices.size() > 0) {
|
||||
addPreferencesSorted(locationServices, categoryLocationServices);
|
||||
} else {
|
||||
// If there's no item to display, remove the whole category.
|
||||
root.removePreference(categoryLocationServices);
|
||||
}
|
||||
|
||||
// Only show the master switch when we're not in multi-pane mode, and not being used as
|
||||
// Setup Wizard.
|
||||
@@ -206,7 +210,6 @@ public class LocationSettings extends LocationSettingsBase
|
||||
|
||||
boolean enabled = (mode != Settings.Secure.LOCATION_MODE_OFF);
|
||||
mLocationMode.setEnabled(enabled);
|
||||
mLocationServices.setEnabled(enabled);
|
||||
|
||||
if (enabled != mSwitch.isChecked()) {
|
||||
// set listener to null so that that code below doesn't trigger onCheckedChanged()
|
||||
|
@@ -24,8 +24,6 @@ import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.R;
|
||||
@@ -93,22 +91,21 @@ public class RecentLocationApps {
|
||||
}
|
||||
}
|
||||
|
||||
private PreferenceScreen createRecentLocationEntry(
|
||||
PreferenceManager preferenceManager,
|
||||
private Preference createRecentLocationEntry(
|
||||
Drawable icon,
|
||||
CharSequence label,
|
||||
boolean isHighBattery,
|
||||
Preference.OnPreferenceClickListener listener) {
|
||||
PreferenceScreen screen = preferenceManager.createPreferenceScreen(mActivity);
|
||||
screen.setIcon(icon);
|
||||
screen.setTitle(label);
|
||||
Preference pref = new Preference(mActivity);
|
||||
pref.setIcon(icon);
|
||||
pref.setTitle(label);
|
||||
if (isHighBattery) {
|
||||
screen.setSummary(R.string.location_high_battery_use);
|
||||
pref.setSummary(R.string.location_high_battery_use);
|
||||
} else {
|
||||
screen.setSummary(R.string.location_low_battery_use);
|
||||
pref.setSummary(R.string.location_low_battery_use);
|
||||
}
|
||||
screen.setOnPreferenceClickListener(listener);
|
||||
return screen;
|
||||
pref.setOnPreferenceClickListener(listener);
|
||||
return pref;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +137,7 @@ public class RecentLocationApps {
|
||||
* Fills a list of applications which queried location recently within
|
||||
* specified time.
|
||||
*/
|
||||
public List<Preference> getAppList(PreferenceManager preferenceManager) {
|
||||
public List<Preference> getAppList() {
|
||||
// Retrieve Uid-based battery blaming info and generate a package to BatterySipper HashMap
|
||||
// for later faster looking up.
|
||||
mStatsHelper.refreshStats();
|
||||
@@ -169,9 +166,9 @@ public class RecentLocationApps {
|
||||
long now = System.currentTimeMillis();
|
||||
for (AppOpsManager.PackageOps ops : appOps) {
|
||||
BatterySipperWrapper wrapper = sipperMap.get(ops.getUid());
|
||||
PreferenceScreen screen = getScreenFromOps(preferenceManager, now, ops, wrapper);
|
||||
if (screen != null) {
|
||||
prefs.add(screen);
|
||||
Preference pref = getPreferenceFromOps(now, ops, wrapper);
|
||||
if (pref != null) {
|
||||
prefs.add(pref);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,19 +176,17 @@ public class RecentLocationApps {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a PreferenceScreen entry for the given PackageOps.
|
||||
* Creates a Preference entry for the given PackageOps.
|
||||
*
|
||||
* This method examines the time interval of the PackageOps first. If the PackageOps is older
|
||||
* than the designated interval, this method ignores the PackageOps object and returns null.
|
||||
*
|
||||
* When the PackageOps is fresh enough, if the package has a corresponding battery blaming entry
|
||||
* in the Uid-based battery sipper list, this method returns a PreferenceScreen pointing to the
|
||||
* Uid battery blaming page. If the package doesn't have a battery sipper entry (typically
|
||||
* shouldn't happen), this method returns a PreferenceScreen pointing to the App Info page for
|
||||
* that package.
|
||||
* in the Uid-based battery sipper list, this method returns a Preference pointing to the Uid
|
||||
* battery blaming page. If the package doesn't have a battery sipper entry (typically shouldn't
|
||||
* happen), this method returns a Preference pointing to the App Info page for that package.
|
||||
*/
|
||||
private PreferenceScreen getScreenFromOps(
|
||||
PreferenceManager preferenceManager,
|
||||
private Preference getPreferenceFromOps(
|
||||
long now,
|
||||
AppOpsManager.PackageOps ops,
|
||||
BatterySipperWrapper wrapper) {
|
||||
@@ -224,7 +219,7 @@ public class RecentLocationApps {
|
||||
|
||||
// The package is fresh enough, continue.
|
||||
|
||||
PreferenceScreen screen = null;
|
||||
Preference pref = null;
|
||||
if (wrapper != null) {
|
||||
// Contains sipper. Link to Battery Blaming page.
|
||||
|
||||
@@ -233,8 +228,7 @@ public class RecentLocationApps {
|
||||
if (!wrapper.used()) {
|
||||
BatterySipper sipper = wrapper.batterySipper();
|
||||
sipper.loadNameAndIcon();
|
||||
screen = createRecentLocationEntry(
|
||||
preferenceManager,
|
||||
pref = createRecentLocationEntry(
|
||||
sipper.getIcon(),
|
||||
sipper.getLabel(),
|
||||
highBattery,
|
||||
@@ -249,8 +243,7 @@ public class RecentLocationApps {
|
||||
try {
|
||||
ApplicationInfo appInfo = mPackageManager.getApplicationInfo(
|
||||
packageName, PackageManager.GET_META_DATA);
|
||||
screen = createRecentLocationEntry(
|
||||
preferenceManager,
|
||||
pref = createRecentLocationEntry(
|
||||
mPackageManager.getApplicationIcon(appInfo),
|
||||
mPackageManager.getApplicationLabel(appInfo),
|
||||
highBattery,
|
||||
@@ -260,6 +253,6 @@ public class RecentLocationApps {
|
||||
}
|
||||
}
|
||||
|
||||
return screen;
|
||||
return pref;
|
||||
}
|
||||
}
|
||||
|
@@ -31,8 +31,6 @@ import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.Messenger;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@@ -240,14 +238,13 @@ class SettingsInjector {
|
||||
* TODO: extract InjectedLocationSettingGetter that returns an iterable over
|
||||
* InjectedSetting objects, so that this class can focus on UI
|
||||
*/
|
||||
public static List<Preference> getInjectedSettings(Context context,
|
||||
PreferenceManager preferenceManager) {
|
||||
public static List<Preference> getInjectedSettings(Context context) {
|
||||
|
||||
Iterable<InjectedSetting> settings = getSettings(context);
|
||||
ArrayList<Preference> prefs = new ArrayList<Preference>();
|
||||
StatusLoader loader = null;
|
||||
for (InjectedSetting setting : settings) {
|
||||
Preference pref = addServiceSetting(context, prefs, setting, preferenceManager);
|
||||
Preference pref = addServiceSetting(context, prefs, setting);
|
||||
Intent intent = createUpdatingIntent(context, pref, setting, loader);
|
||||
loader = new StatusLoader(context, intent, loader);
|
||||
}
|
||||
@@ -263,22 +260,21 @@ class SettingsInjector {
|
||||
/**
|
||||
* Adds an injected setting to the root with status "Loading...".
|
||||
*/
|
||||
private static PreferenceScreen addServiceSetting(Context context,
|
||||
List<Preference> prefs, InjectedSetting info, PreferenceManager preferenceManager) {
|
||||
|
||||
PreferenceScreen screen = preferenceManager.createPreferenceScreen(context);
|
||||
screen.setTitle(info.title);
|
||||
screen.setSummary(R.string.location_loading_injected_setting);
|
||||
private static Preference addServiceSetting(
|
||||
Context context, List<Preference> prefs, InjectedSetting info) {
|
||||
Preference pref = new Preference(context);
|
||||
pref.setTitle(info.title);
|
||||
pref.setSummary(R.string.location_loading_injected_setting);
|
||||
PackageManager pm = context.getPackageManager();
|
||||
Drawable icon = pm.getDrawable(info.packageName, info.iconId, null);
|
||||
screen.setIcon(icon);
|
||||
pref.setIcon(icon);
|
||||
|
||||
Intent settingIntent = new Intent();
|
||||
settingIntent.setClassName(info.packageName, info.settingsActivity);
|
||||
screen.setIntent(settingIntent);
|
||||
pref.setIntent(settingIntent);
|
||||
|
||||
prefs.add(screen);
|
||||
return screen;
|
||||
prefs.add(pref);
|
||||
return pref;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user