summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/print/PrintSettingsFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/print/PrintSettingsFragment.java')
-rw-r--r--src/com/android/settings/print/PrintSettingsFragment.java146
1 files changed, 102 insertions, 44 deletions
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index df38db4..4a34875 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -31,6 +31,9 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.os.Process;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
@@ -40,6 +43,7 @@ import android.print.PrintJobInfo;
import android.print.PrintManager;
import android.print.PrintManager.PrintJobStateChangeListener;
import android.printservice.PrintServiceInfo;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateUtils;
@@ -49,24 +53,32 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Switch;
+import android.widget.AdapterView;
import android.widget.TextView;
import com.android.internal.content.PackageMonitor;
+import com.android.settings.UserSpinnerAdapter;
+import com.android.settings.UserSpinnerAdapter.UserDetails;
import com.android.settings.DialogCreatable;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+import com.android.settings.search.SearchIndexableRaw;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.List;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.Spinner;
+
/**
* Fragment with the top level print settings.
*/
-public class PrintSettingsFragment extends SettingsPreferenceFragment implements DialogCreatable {
-
- static final char ENABLED_PRINT_SERVICES_SEPARATOR = ':';
+public class PrintSettingsFragment extends SettingsPreferenceFragment
+ implements DialogCreatable, Indexable, OnItemSelectedListener {
private static final int LOADER_ID_PRINT_JOBS_LOADER = 1;
@@ -111,6 +123,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
private PreferenceCategory mPrintServicesCategory;
private PrintJobsController mPrintJobsController;
+ private UserSpinnerAdapter mProfileSpinnerAdapter;
@Override
public void onCreate(Bundle icicle) {
@@ -119,7 +132,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
mActivePrintJobsCategory = (PreferenceCategory) findPreference(
PRINT_JOBS_CATEGORY);
- mPrintServicesCategory= (PreferenceCategory) findPreference(
+ mPrintServicesCategory = (PreferenceCategory) findPreference(
PRINT_SERVICES_CATEGORY);
getPreferenceScreen().removePreference(mActivePrintJobsCategory);
@@ -152,8 +165,8 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
Settings.Secure.PRINT_SERVICE_SEARCH_URI);
if (!TextUtils.isEmpty(searchUri)) {
MenuItem menuItem = menu.add(R.string.print_menu_item_add_service);
- menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- menuItem.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse(searchUri)));
+ menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER);
+ menuItem.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(searchUri)));
}
}
@@ -162,11 +175,21 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
super.onViewCreated(view, savedInstanceState);
ViewGroup contentRoot = (ViewGroup) getListView().getParent();
View emptyView = getActivity().getLayoutInflater().inflate(
- R.layout.empty_print_state, contentRoot, false);
+ R.layout.empty_print_state, contentRoot, false);
TextView textView = (TextView) emptyView.findViewById(R.id.message);
textView.setText(R.string.print_no_services_installed);
contentRoot.addView(emptyView);
getListView().setEmptyView(emptyView);
+
+ final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+ mProfileSpinnerAdapter = Utils.createUserSpinnerAdapter(um, getActivity());
+ if (mProfileSpinnerAdapter != null) {
+ Spinner spinner = (Spinner) getActivity().getLayoutInflater().inflate(
+ R.layout.spinner_view, null);
+ spinner.setAdapter(mProfileSpinnerAdapter);
+ spinner.setOnItemSelectedListener(this);
+ setPinnedHeaderView(spinner);
+ }
}
private void updateServicesPreferences() {
@@ -178,7 +201,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
mPrintServicesCategory.removeAll();
}
- List<ComponentName> enabledServices = SettingsUtils
+ List<ComponentName> enabledServices = PrintSettingsUtils
.readEnabledPrintServices(getActivity());
List<ResolveInfo> installedServices = getActivity().getPackageManager()
@@ -269,10 +292,26 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
}
}
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+ UserHandle selectedUser = mProfileSpinnerAdapter.getUserHandle(position);
+ if (selectedUser.getIdentifier() != UserHandle.myUserId()) {
+ Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ getActivity().startActivityAsUser(intent, selectedUser);
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent) {
+ // Nothing to do
+ }
+
private class SettingsPackageMonitor extends PackageMonitor {
@Override
public void onPackageAdded(String packageName, int uid) {
- mHandler.obtainMessage().sendToTarget();
+ mHandler.obtainMessage().sendToTarget();
}
@Override
@@ -291,36 +330,6 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
}
}
- public static class ToggleSwitch extends Switch {
-
- private OnBeforeCheckedChangeListener mOnBeforeListener;
-
- public static interface OnBeforeCheckedChangeListener {
- public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked);
- }
-
- public ToggleSwitch(Context context) {
- super(context);
- }
-
- public void setOnBeforeCheckedChangeListener(OnBeforeCheckedChangeListener listener) {
- mOnBeforeListener = listener;
- }
-
- @Override
- public void setChecked(boolean checked) {
- if (mOnBeforeListener != null
- && mOnBeforeListener.onBeforeCheckedChanged(this, checked)) {
- return;
- }
- super.setChecked(checked);
- }
-
- public void setCheckedInternal(boolean checked) {
- super.setChecked(checked);
- }
- }
-
private static abstract class SettingsContentObserver extends ContentObserver {
public SettingsContentObserver(Handler handler) {
@@ -414,12 +423,12 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
switch (printJob.getState()) {
case PrintJobInfo.STATE_QUEUED:
case PrintJobInfo.STATE_STARTED: {
- preference.setIcon(com.android.internal.R.drawable.ic_print);
+ preference.setIcon(R.drawable.ic_print);
} break;
case PrintJobInfo.STATE_FAILED:
case PrintJobInfo.STATE_BLOCKED: {
- preference.setIcon(com.android.internal.R.drawable.ic_print_error);
+ preference.setIcon(R.drawable.ic_print_error);
} break;
}
@@ -443,7 +452,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
private static final boolean DEBUG = false;
- private List <PrintJobInfo> mPrintJobs = new ArrayList<PrintJobInfo>();
+ private List<PrintJobInfo> mPrintJobs = new ArrayList<PrintJobInfo>();
private final PrintManager mPrintManager;
@@ -453,7 +462,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
super(context);
mPrintManager = ((PrintManager) context.getSystemService(
Context.PRINT_SERVICE)).getGlobalPrintManagerForUser(
- ActivityManager.getCurrentUser());
+ ActivityManager.getCurrentUser());
}
@Override
@@ -544,4 +553,53 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements
return false;
}
}
+
+ public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
+ List<SearchIndexableRaw> indexables = new ArrayList<SearchIndexableRaw>();
+
+ PackageManager packageManager = context.getPackageManager();
+ PrintManager printManager = (PrintManager) context.getSystemService(
+ Context.PRINT_SERVICE);
+
+ String screenTitle = context.getResources().getString(R.string.print_settings);
+ SearchIndexableRaw data = new SearchIndexableRaw(context);
+ data.title = screenTitle;
+ data.screenTitle = screenTitle;
+ indexables.add(data);
+
+ // Indexing all services, regardless if enabled.
+ List<PrintServiceInfo> services = printManager.getInstalledPrintServices();
+ final int serviceCount = services.size();
+ for (int i = 0; i < serviceCount; i++) {
+ PrintServiceInfo service = services.get(i);
+
+ ComponentName componentName = new ComponentName(
+ service.getResolveInfo().serviceInfo.packageName,
+ service.getResolveInfo().serviceInfo.name);
+
+ data = new SearchIndexableRaw(context);
+ data.key = componentName.flattenToString();
+ data.title = service.getResolveInfo().loadLabel(packageManager).toString();
+ data.summaryOn = context.getString(R.string.print_feature_state_on);
+ data.summaryOff = context.getString(R.string.print_feature_state_off);
+ data.screenTitle = screenTitle;
+ indexables.add(data);
+ }
+
+ return indexables;
+ }
+
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+ boolean enabled) {
+ List<SearchIndexableResource> indexables = new ArrayList<SearchIndexableResource>();
+ SearchIndexableResource indexable = new SearchIndexableResource(context);
+ indexable.xmlResId = R.xml.print_settings;
+ indexables.add(indexable);
+ return indexables;
+ }
+ };
}