Merge "'Lock Screen Message' option is in enable state for 'None'."
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e7442ed..e7a7711 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3841,6 +3841,15 @@
<!-- Title in main settings screen for printing settings [CHAR LIMIT=15] -->
<string name="print_settings">Printing</string>
+
+ <!-- Summary in settings screen [CHAR LIMIT=25] -->
+ <plurals name="print_settings_title">
+ <item quantity="one">1 print job</item>
+ <item quantity="other">%d print jobs</item>
+ </plurals>
+
+ <string name="print_settings_title"><xliff:g id="printJonCount">%1$s</xliff:g> print job</string>
+
<!-- Title for print service settings screen [CHAR LIMIT=25] -->
<string name="print_settings_title">Print services</string>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index d1a030b..a332632 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1969,12 +1969,7 @@
static class SystemPropPoker extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
- String[] services;
- try {
- services = ServiceManager.listServices();
- } catch (RemoteException e) {
- return null;
- }
+ String[] services = ServiceManager.listServices();
for (String service : services) {
IBinder obj = ServiceManager.checkService(service);
if (obj != null) {
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 722be0e..5d20f65 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -191,13 +191,13 @@
private void onPreferenceToggled(String preferenceKey, boolean enabled) {
ComponentName service = ComponentName.unflattenFromString(preferenceKey);
- List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
+ List<ComponentName> services = PrintSettingsUtils.readDisabledPrintServices(getActivity());
if (enabled) {
- services.add(service);
- } else {
services.remove(service);
+ } else {
+ services.add(service);
}
- PrintSettingsUtils.writeEnabledPrintServices(getActivity(), services);
+ PrintSettingsUtils.writeDisabledPrintServices(getActivity(), services);
}
private ListView getBackupListView() {
@@ -253,8 +253,9 @@
}
private void updateUiForServiceState() {
- List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
- mServiceEnabled = services.contains(mComponentName);
+ List<ComponentName> disabledServices = PrintSettingsUtils
+ .readDisabledPrintServices(getActivity());
+ mServiceEnabled = !disabledServices.contains(mComponentName);
if (mServiceEnabled) {
mSwitchBar.setCheckedInternal(true);
mPrintersAdapter.enable();
@@ -431,7 +432,7 @@
public void register(ContentResolver contentResolver) {
contentResolver.registerContentObserver(android.provider.Settings.Secure.getUriFor(
- android.provider.Settings.Secure.ENABLED_PRINT_SERVICES), false, this);
+ android.provider.Settings.Secure.DISABLED_PRINT_SERVICES), false, this);
}
public void unregister(ContentResolver contentResolver) {
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index c2d3ac2..d5cd9c5 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -16,6 +16,7 @@
package com.android.settings.print;
+import android.app.Activity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.ActivityNotFoundException;
import android.content.AsyncTaskLoader;
@@ -56,11 +57,13 @@
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
+
import com.android.internal.content.PackageMonitor;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.DialogCreatable;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.search.SearchIndexableRaw;
@@ -204,8 +207,8 @@
mPrintServicesCategory.removeAll();
}
- List<ComponentName> enabledServices = PrintSettingsUtils
- .readEnabledPrintServices(getActivity());
+ List<ComponentName> disabledServices = PrintSettingsUtils
+ .readDisabledPrintServices(getActivity());
final PackageManager pm = getActivity().getPackageManager();
@@ -233,7 +236,7 @@
preference.setFragment(PrintServiceSettingsFragment.class.getName());
preference.setPersistent(false);
- final boolean serviceEnabled = enabledServices.contains(componentName);
+ final boolean serviceEnabled = !disabledServices.contains(componentName);
if (serviceEnabled) {
preference.setSummary(getString(R.string.print_feature_state_on));
} else {
@@ -385,7 +388,7 @@
public void register(ContentResolver contentResolver) {
contentResolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.ENABLED_PRINT_SERVICES), false, this);
+ Settings.Secure.DISABLED_PRINT_SERVICES), false, this);
}
public void unregister(ContentResolver contentResolver) {
@@ -587,20 +590,88 @@
}
return printJobInfos;
}
+ }
- private static boolean shouldShowToUser(PrintJobInfo printJob) {
- switch (printJob.getState()) {
- case PrintJobInfo.STATE_QUEUED:
- case PrintJobInfo.STATE_STARTED:
- case PrintJobInfo.STATE_BLOCKED:
- case PrintJobInfo.STATE_FAILED: {
- return true;
+ /**
+ * Should the print job the shown to the user in the settings app.
+ *
+ * @param printJob The print job in question.
+ * @return true iff the print job should be shown.
+ */
+ private static boolean shouldShowToUser(PrintJobInfo printJob) {
+ switch (printJob.getState()) {
+ case PrintJobInfo.STATE_QUEUED:
+ case PrintJobInfo.STATE_STARTED:
+ case PrintJobInfo.STATE_BLOCKED:
+ case PrintJobInfo.STATE_FAILED: {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Provider for the print settings summary
+ */
+ private static class PrintSummaryProvider
+ implements SummaryLoader.SummaryProvider, PrintJobStateChangeListener {
+ private final Context mContext;
+ private final PrintManager mPrintManager;
+ private final SummaryLoader mSummaryLoader;
+
+ /**
+ * Create a new {@link PrintSummaryProvider}.
+ *
+ * @param context The context this provider is for
+ * @param summaryLoader The summary load using this provider
+ */
+ public PrintSummaryProvider(Context context, SummaryLoader summaryLoader) {
+ mContext = context;
+ mSummaryLoader = summaryLoader;
+ mPrintManager = ((PrintManager) context.getSystemService(Context.PRINT_SERVICE))
+ .getGlobalPrintManagerForUser(context.getUserId());
+ }
+
+ @Override
+ public void setListening(boolean isListening) {
+ if (isListening) {
+ mPrintManager.addPrintJobStateChangeListener(this);
+ onPrintJobStateChanged(null);
+ } else {
+ mPrintManager.removePrintJobStateChangeListener(this);
+ }
+ }
+
+ @Override
+ public void onPrintJobStateChanged(PrintJobId printJobId) {
+ List<PrintJob> printJobs = mPrintManager.getPrintJobs();
+
+ int numActivePrintJobs = 0;
+ final int numPrintJobs = printJobs.size();
+ for (int i = 0; i < numPrintJobs; i++) {
+ if (shouldShowToUser(printJobs.get(i).getInfo())) {
+ numActivePrintJobs++;
}
}
- return false;
+
+ mSummaryLoader.setSummary(this, mContext.getResources().getQuantityString(
+ R.plurals.print_settings_title, numActivePrintJobs, numActivePrintJobs));
}
}
+ /**
+ * A factory for {@link PrintSummaryProvider providers} the settings app can use to read the
+ * print summary.
+ */
+ public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
+ = new SummaryLoader.SummaryProviderFactory() {
+ @Override
+ public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
+ SummaryLoader summaryLoader) {
+ return new PrintSummaryProvider(activity, summaryLoader);
+ }
+ };
+
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
diff --git a/src/com/android/settings/print/PrintSettingsUtils.java b/src/com/android/settings/print/PrintSettingsUtils.java
index d09f345..87f26be 100644
--- a/src/com/android/settings/print/PrintSettingsUtils.java
+++ b/src/com/android/settings/print/PrintSettingsUtils.java
@@ -30,50 +30,50 @@
*/
public class PrintSettingsUtils {
- private static final char ENABLED_PRINT_SERVICES_SEPARATOR = ':';
+ private static final char DISABLED_PRINT_SERVICES_SEPARATOR = ':';
private PrintSettingsUtils() {
/* do nothing */
}
- public static List<ComponentName> readEnabledPrintServices(Context context) {
- List<ComponentName> enabledServices = new ArrayList<ComponentName>();
+ public static List<ComponentName> readDisabledPrintServices(Context context) {
+ List<ComponentName> disabledServices = new ArrayList<ComponentName>();
- String enabledServicesSetting = Settings.Secure.getString(context
- .getContentResolver(), Settings.Secure.ENABLED_PRINT_SERVICES);
- if (TextUtils.isEmpty(enabledServicesSetting)) {
- return enabledServices;
+ String disabledServicesSetting = Settings.Secure.getString(context
+ .getContentResolver(), Settings.Secure.DISABLED_PRINT_SERVICES);
+ if (TextUtils.isEmpty(disabledServicesSetting)) {
+ return disabledServices;
}
SimpleStringSplitter colonSplitter = new SimpleStringSplitter(
- ENABLED_PRINT_SERVICES_SEPARATOR);
- colonSplitter.setString(enabledServicesSetting);
+ DISABLED_PRINT_SERVICES_SEPARATOR);
+ colonSplitter.setString(disabledServicesSetting);
while (colonSplitter.hasNext()) {
String componentNameString = colonSplitter.next();
- ComponentName enabledService = ComponentName.unflattenFromString(
+ ComponentName disabledService = ComponentName.unflattenFromString(
componentNameString);
- if (enabledService != null) {
- enabledServices.add(enabledService);
+ if (disabledService != null) {
+ disabledServices.add(disabledService);
}
}
- return enabledServices;
+ return disabledServices;
}
- public static void writeEnabledPrintServices(Context context,
+ public static void writeDisabledPrintServices(Context context,
List<ComponentName> services) {
StringBuilder builder = new StringBuilder();
final int serviceCount = services.size();
for (int i = 0; i < serviceCount; i++) {
ComponentName service = services.get(i);
if (builder.length() > 0) {
- builder.append(ENABLED_PRINT_SERVICES_SEPARATOR);
+ builder.append(DISABLED_PRINT_SERVICES_SEPARATOR);
}
builder.append(service.flattenToString());
}
Settings.Secure.putString(context.getContentResolver(),
- Settings.Secure.ENABLED_PRINT_SERVICES,
+ Settings.Secure.DISABLED_PRINT_SERVICES,
builder.toString());
}
}