Loading res/layout/empty_print_state.xml +12 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,18 @@ android:textColor="?android:attr/textColorSecondary"> </TextView> <Button android:id="@+id/add_new_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:visibility="gone" style="?android:attr/buttonBarButtonStyle" android:textAppearance="?android:attr/textAppearanceSmall" android:text="@string/print_menu_item_add_service" android:textAllCaps="true" /> </LinearLayout> </FrameLayout> src/com/android/settings/print/PrintSettingsFragment.java +68 −18 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.print; import android.app.LoaderManager.LoaderCallbacks; import android.content.ActivityNotFoundException; import android.content.AsyncTaskLoader; import android.content.ComponentName; import android.content.ContentResolver; Loading @@ -26,6 +27,7 @@ import android.content.Loader; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading @@ -46,13 +48,12 @@ import android.provider.Settings; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; Loading @@ -75,8 +76,8 @@ import java.util.List; * Fragment with the top level print settings. */ public class PrintSettingsFragment extends SettingsPreferenceFragment implements DialogCreatable, Indexable, OnItemSelectedListener { implements DialogCreatable, Indexable, OnItemSelectedListener, OnClickListener { public static final String TAG = "PrintSettingsFragment"; private static final int LOADER_ID_PRINT_JOBS_LOADER = 1; private static final String PRINT_JOBS_CATEGORY = "print_jobs_category"; Loading @@ -99,6 +100,8 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME = "EXTRA_PRINT_SERVICE_COMPONENT_NAME"; private static final int ORDER_LAST = 1000; private final PackageMonitor mSettingsPackageMonitor = new SettingsPackageMonitor(); private final Handler mHandler = new Handler() { Loading @@ -122,6 +125,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment private PrintJobsController mPrintJobsController; private UserAdapter mProfileSpinnerAdapter; private Spinner mSpinner; private Button mAddNewServiceButton; @Override protected int getMetricsCategory() { Loading Loading @@ -166,18 +170,6 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment super.onPause(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); String searchUri = Settings.Secure.getString(getContentResolver(), 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_NEVER); menuItem.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(searchUri))); } } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Loading @@ -186,6 +178,15 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment R.layout.empty_print_state, contentRoot, false); TextView textView = (TextView) emptyView.findViewById(R.id.message); textView.setText(R.string.print_no_services_installed); final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent != null) { mAddNewServiceButton = (Button) emptyView.findViewById(R.id.add_new_service); mAddNewServiceButton.setOnClickListener(this); // The empty is used elsewhere too so it's hidden by default. mAddNewServiceButton.setVisibility(View.VISIBLE); } contentRoot.addView(emptyView); getListView().setEmptyView(emptyView); Loading @@ -210,7 +211,9 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment List<ComponentName> enabledServices = PrintSettingsUtils .readEnabledPrintServices(getActivity()); List<ResolveInfo> installedServices = getActivity().getPackageManager() final PackageManager pm = getActivity().getPackageManager(); List<ResolveInfo> installedServices = pm .queryIntentServices( new Intent(android.printservice.PrintService.SERVICE_INTERFACE), PackageManager.GET_SERVICES | PackageManager.GET_META_DATA); Loading Loading @@ -241,6 +244,11 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment preference.setSummary(getString(R.string.print_feature_state_off)); } final Drawable drawable = installedService.loadIcon(pm); if (drawable != null) { preference.setIcon(drawable); } Bundle extras = preference.getExtras(); extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey()); extras.putBoolean(EXTRA_CHECKED, serviceEnabled); Loading Loading @@ -281,9 +289,37 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment if (mPrintServicesCategory.getPreferenceCount() == 0) { getPreferenceScreen().removePreference(mPrintServicesCategory); } else { final Preference addNewServicePreference = newAddServicePreferenceOrNull(); if (addNewServicePreference != null) { mPrintServicesCategory.addPreference(addNewServicePreference); } } } private Preference newAddServicePreferenceOrNull() { final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent == null) { return null; } Preference preference = new Preference(getContext()); preference.setTitle(R.string.print_menu_item_add_service); preference.setIcon(R.drawable.ic_menu_add); preference.setOrder(ORDER_LAST); preference.setIntent(addNewServiceIntent); preference.setPersistent(false); return preference; } private Intent createAddNewServiceIntentOrNull() { final String searchUri = Settings.Secure.getString(getContentResolver(), Settings.Secure.PRINT_SERVICE_SEARCH_URI); if (TextUtils.isEmpty(searchUri)) { return null; } return new Intent(Intent.ACTION_VIEW, Uri.parse(searchUri)); } private void startSubSettingsIfNeeded() { if (getArguments() == null) { return; Loading Loading @@ -316,6 +352,20 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment // Nothing to do } @Override public void onClick(View v) { if (mAddNewServiceButton == v) { final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent != null) { // check again just in case. try { startActivity(addNewServiceIntent); } catch (ActivityNotFoundException e) { Log.w(TAG, "Unable to start activity", e); } } } } private class SettingsPackageMonitor extends PackageMonitor { @Override public void onPackageAdded(String packageName, int uid) { Loading Loading
res/layout/empty_print_state.xml +12 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,18 @@ android:textColor="?android:attr/textColorSecondary"> </TextView> <Button android:id="@+id/add_new_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:visibility="gone" style="?android:attr/buttonBarButtonStyle" android:textAppearance="?android:attr/textAppearanceSmall" android:text="@string/print_menu_item_add_service" android:textAllCaps="true" /> </LinearLayout> </FrameLayout>
src/com/android/settings/print/PrintSettingsFragment.java +68 −18 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.print; import android.app.LoaderManager.LoaderCallbacks; import android.content.ActivityNotFoundException; import android.content.AsyncTaskLoader; import android.content.ComponentName; import android.content.ContentResolver; Loading @@ -26,6 +27,7 @@ import android.content.Loader; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading @@ -46,13 +48,12 @@ import android.provider.Settings; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; Loading @@ -75,8 +76,8 @@ import java.util.List; * Fragment with the top level print settings. */ public class PrintSettingsFragment extends SettingsPreferenceFragment implements DialogCreatable, Indexable, OnItemSelectedListener { implements DialogCreatable, Indexable, OnItemSelectedListener, OnClickListener { public static final String TAG = "PrintSettingsFragment"; private static final int LOADER_ID_PRINT_JOBS_LOADER = 1; private static final String PRINT_JOBS_CATEGORY = "print_jobs_category"; Loading @@ -99,6 +100,8 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment private static final String EXTRA_PRINT_SERVICE_COMPONENT_NAME = "EXTRA_PRINT_SERVICE_COMPONENT_NAME"; private static final int ORDER_LAST = 1000; private final PackageMonitor mSettingsPackageMonitor = new SettingsPackageMonitor(); private final Handler mHandler = new Handler() { Loading @@ -122,6 +125,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment private PrintJobsController mPrintJobsController; private UserAdapter mProfileSpinnerAdapter; private Spinner mSpinner; private Button mAddNewServiceButton; @Override protected int getMetricsCategory() { Loading Loading @@ -166,18 +170,6 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment super.onPause(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); String searchUri = Settings.Secure.getString(getContentResolver(), 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_NEVER); menuItem.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(searchUri))); } } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Loading @@ -186,6 +178,15 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment R.layout.empty_print_state, contentRoot, false); TextView textView = (TextView) emptyView.findViewById(R.id.message); textView.setText(R.string.print_no_services_installed); final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent != null) { mAddNewServiceButton = (Button) emptyView.findViewById(R.id.add_new_service); mAddNewServiceButton.setOnClickListener(this); // The empty is used elsewhere too so it's hidden by default. mAddNewServiceButton.setVisibility(View.VISIBLE); } contentRoot.addView(emptyView); getListView().setEmptyView(emptyView); Loading @@ -210,7 +211,9 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment List<ComponentName> enabledServices = PrintSettingsUtils .readEnabledPrintServices(getActivity()); List<ResolveInfo> installedServices = getActivity().getPackageManager() final PackageManager pm = getActivity().getPackageManager(); List<ResolveInfo> installedServices = pm .queryIntentServices( new Intent(android.printservice.PrintService.SERVICE_INTERFACE), PackageManager.GET_SERVICES | PackageManager.GET_META_DATA); Loading Loading @@ -241,6 +244,11 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment preference.setSummary(getString(R.string.print_feature_state_off)); } final Drawable drawable = installedService.loadIcon(pm); if (drawable != null) { preference.setIcon(drawable); } Bundle extras = preference.getExtras(); extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey()); extras.putBoolean(EXTRA_CHECKED, serviceEnabled); Loading Loading @@ -281,9 +289,37 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment if (mPrintServicesCategory.getPreferenceCount() == 0) { getPreferenceScreen().removePreference(mPrintServicesCategory); } else { final Preference addNewServicePreference = newAddServicePreferenceOrNull(); if (addNewServicePreference != null) { mPrintServicesCategory.addPreference(addNewServicePreference); } } } private Preference newAddServicePreferenceOrNull() { final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent == null) { return null; } Preference preference = new Preference(getContext()); preference.setTitle(R.string.print_menu_item_add_service); preference.setIcon(R.drawable.ic_menu_add); preference.setOrder(ORDER_LAST); preference.setIntent(addNewServiceIntent); preference.setPersistent(false); return preference; } private Intent createAddNewServiceIntentOrNull() { final String searchUri = Settings.Secure.getString(getContentResolver(), Settings.Secure.PRINT_SERVICE_SEARCH_URI); if (TextUtils.isEmpty(searchUri)) { return null; } return new Intent(Intent.ACTION_VIEW, Uri.parse(searchUri)); } private void startSubSettingsIfNeeded() { if (getArguments() == null) { return; Loading Loading @@ -316,6 +352,20 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment // Nothing to do } @Override public void onClick(View v) { if (mAddNewServiceButton == v) { final Intent addNewServiceIntent = createAddNewServiceIntentOrNull(); if (addNewServiceIntent != null) { // check again just in case. try { startActivity(addNewServiceIntent); } catch (ActivityNotFoundException e) { Log.w(TAG, "Unable to start activity", e); } } } } private class SettingsPackageMonitor extends PackageMonitor { @Override public void onPackageAdded(String packageName, int uid) { Loading