diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2013-09-05 21:38:11 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-09-05 21:38:11 +0000 |
commit | 10cbbc5515a30dfa347f0a7b816ebde8cbb0e0f7 (patch) | |
tree | 3afb4fc61fd17348e5ef6da572b4d514e2ad3fab /src | |
parent | 80c2b9b0c4c03c5ae9459875c05bc7370b7d6ca0 (diff) | |
parent | 74648ac808b6a625f6c91035a263822b3765215d (diff) | |
download | packages_apps_Settings-10cbbc5515a30dfa347f0a7b816ebde8cbb0e0f7.zip packages_apps_Settings-10cbbc5515a30dfa347f0a7b816ebde8cbb0e0f7.tar.gz packages_apps_Settings-10cbbc5515a30dfa347f0a7b816ebde8cbb0e0f7.tar.bz2 |
Merge "Print settings polish" into klp-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/Settings.java | 1 | ||||
-rw-r--r-- | src/com/android/settings/print/PrintServiceSettingsFragment.java | 104 | ||||
-rw-r--r-- | src/com/android/settings/print/PrintSettingsFragment.java | 2 |
3 files changed, 92 insertions, 15 deletions
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index febb5b6..62d4aa8 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -962,4 +962,5 @@ public class Settings extends PreferenceActivity public static class UsbSettingsActivity extends Settings { /* empty */ } public static class TrustedCredentialsSettingsActivity extends Settings { /* empty */ } public static class PaymentSettingsActivity extends Settings { /* empty */ } + public static class PrintSettingsActivity extends Settings { /* empty */ } } diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index c65e43e..73b13cb 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -50,6 +50,9 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.SearchView; import android.widget.TextView; import com.android.settings.R; @@ -284,10 +287,20 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment menu.removeItem(R.id.print_menu_item_settings); } - MenuItem uninstall = menu.findItem(R.id.print_menu_item_uninstall); - Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, - Uri.parse("package:" + mComponentName.getPackageName())); - uninstall.setIntent(uninstallIntent); + MenuItem searchItem = menu.findItem(R.id.print_menu_item_search); + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + return true; + } + + @Override + public boolean onQueryTextChange(String searchString) { + ((Filterable) getListView().getAdapter()).getFilter().filter(searchString); + return true; + } + }); } private ToggleSwitch createAndAddActionBarToggleSwitch(Activity activity) { @@ -325,21 +338,74 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment } private final class PrintersAdapter extends BaseAdapter - implements LoaderManager.LoaderCallbacks<List<PrinterInfo>>{ + implements LoaderManager.LoaderCallbacks<List<PrinterInfo>>, Filterable { + private final Object mLock = new Object(); + private final List<PrinterInfo> mPrinters = new ArrayList<PrinterInfo>(); + private final List<PrinterInfo> mFilteredPrinters = new ArrayList<PrinterInfo>(); + + private CharSequence mLastSearchString; + public PrintersAdapter() { getLoaderManager().initLoader(LOADER_ID_PRINTERS_LOADER, null, this); } @Override + public Filter getFilter() { + return new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + synchronized (mLock) { + if (TextUtils.isEmpty(constraint)) { + return null; + } + FilterResults results = new FilterResults(); + List<PrinterInfo> filteredPrinters = new ArrayList<PrinterInfo>(); + String constraintLowerCase = constraint.toString().toLowerCase(); + final int printerCount = mPrinters.size(); + for (int i = 0; i < printerCount; i++) { + PrinterInfo printer = mPrinters.get(i); + if (printer.getName().toLowerCase().contains(constraintLowerCase)) { + filteredPrinters.add(printer); + } + } + results.values = filteredPrinters; + results.count = filteredPrinters.size(); + return results; + } + } + + @Override + @SuppressWarnings("unchecked") + protected void publishResults(CharSequence constraint, FilterResults results) { + synchronized (mLock) { + mLastSearchString = constraint; + mFilteredPrinters.clear(); + if (results == null) { + mFilteredPrinters.addAll(mPrinters); + } else { + List<PrinterInfo> printers = (List<PrinterInfo>) results.values; + mFilteredPrinters.addAll(printers); + } + } + notifyDataSetChanged(); + } + }; + } + + @Override public int getCount() { - return mPrinters.size(); + synchronized (mLock) { + return mFilteredPrinters.size(); + } } @Override public Object getItem(int position) { - return mPrinters.get(position); + synchronized (mLock) { + return mFilteredPrinters.get(position); + } } @Override @@ -391,12 +457,19 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment @Override public void onLoadFinished(Loader<List<PrinterInfo>> loader, List<PrinterInfo> printers) { - mPrinters.clear(); - final int printerCount = printers.size(); - for (int i = 0; i < printerCount; i++) { - PrinterInfo printer = printers.get(i); - if (printer.getId().getServiceName().equals(mComponentName)) { - mPrinters.add(printer); + synchronized (mLock) { + mPrinters.clear(); + final int printerCount = printers.size(); + for (int i = 0; i < printerCount; i++) { + PrinterInfo printer = printers.get(i); + if (printer.getId().getServiceName().equals(mComponentName)) { + mPrinters.add(printer); + } + } + mFilteredPrinters.clear(); + mFilteredPrinters.addAll(mPrinters); + if (!TextUtils.isEmpty(mLastSearchString)) { + getFilter().filter(mLastSearchString); } } notifyDataSetChanged(); @@ -404,7 +477,10 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment @Override public void onLoaderReset(Loader<List<PrinterInfo>> loader) { - mPrinters.clear(); + synchronized (mLock) { + mPrinters.clear(); + mFilteredPrinters.clear(); + } notifyDataSetInvalidated(); } } diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java index 6e7f528..d254842 100644 --- a/src/com/android/settings/print/PrintSettingsFragment.java +++ b/src/com/android/settings/print/PrintSettingsFragment.java @@ -111,7 +111,7 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment implements public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.print_settings, menu); - MenuItem menuItem = menu.findItem(R.id.print_menu_item_download_print_service); + MenuItem menuItem = menu.findItem(R.id.print_menu_item_add_service); menuItem.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.download_print_service_query)))); } |