From 32413a27539182aebc70dbdedbca2af7d3186699 Mon Sep 17 00:00:00 2001 From: relan <relan@users.noreply.github.com> Date: Wed, 11 Nov 2015 16:27:23 +0300 Subject: [PATCH 1/3] Put empty text below the categories spinner When an on-screen keyboard is used to enter a search query, empty text can overlap categories spinner on small screens. --- F-Droid/res/layout/available_app_list.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/F-Droid/res/layout/available_app_list.xml b/F-Droid/res/layout/available_app_list.xml index 166a71897..1ff394163 100644 --- a/F-Droid/res/layout/available_app_list.xml +++ b/F-Droid/res/layout/available_app_list.xml @@ -24,6 +24,7 @@ <TextView style="@style/AppListEmptyText" + android:layout_below="@id/category_spinner" android:text="@string/empty_available_app_list" /> </RelativeLayout> From f0d72a3ec4302ba119a1113f1f1fb66b550743e3 Mon Sep 17 00:00:00 2001 From: relan <relan@users.noreply.github.com> Date: Fri, 13 Nov 2015 08:25:26 +0300 Subject: [PATCH 2/3] Remove search button from the search results activity It violates app navigation logic. --- F-Droid/src/org/fdroid/fdroid/SearchResults.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/F-Droid/src/org/fdroid/fdroid/SearchResults.java b/F-Droid/src/org/fdroid/fdroid/SearchResults.java index 97e3fc307..8398a266e 100644 --- a/F-Droid/src/org/fdroid/fdroid/SearchResults.java +++ b/F-Droid/src/org/fdroid/fdroid/SearchResults.java @@ -23,7 +23,6 @@ import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.NavUtils; -import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; @@ -73,15 +72,6 @@ public class SearchResults extends ActionBarActivity { setIntent(intent); } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - MenuItem search = menu.add(Menu.NONE, SEARCH, 1, R.string.menu_search).setIcon( - android.R.drawable.ic_menu_search); - MenuItemCompat.setShowAsAction(search, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); - return true; - } - @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { From e841d63ea9c6b8d59b28c1ebd5bf1f41278d0934 Mon Sep 17 00:00:00 2001 From: relan <relan@users.noreply.github.com> Date: Wed, 11 Nov 2015 16:56:14 +0300 Subject: [PATCH 3/3] Replace search dialog with a search widget SearchView is the recommended way to implement search UI. See https://developer.android.com/guide/topics/search/search-dialog.html#UsingSearchWidget --- F-Droid/AndroidManifest.xml | 8 ++++---- F-Droid/res/menu/main.xml | 3 ++- F-Droid/src/org/fdroid/fdroid/FDroid.java | 14 ++++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/F-Droid/AndroidManifest.xml b/F-Droid/AndroidManifest.xml index b8a04e480..0209c5de7 100644 --- a/F-Droid/AndroidManifest.xml +++ b/F-Droid/AndroidManifest.xml @@ -88,6 +88,10 @@ android:name="org.fdroid.fdroid.data.InstalledAppProvider" android:exported="false"/> + <meta-data + android:name="android.app.default_searchable" + android:value=".SearchResults" /> + <activity android:name=".FDroid" android:launchMode="singleTop" @@ -292,10 +296,6 @@ <data android:pathPattern="/.*/.*/FDROID/REPO" /> <data android:pathPattern="/.*/.*/.*/FDROID/REPO" /> </intent-filter> - - <meta-data - android:name="android.app.default_searchable" - android:value=".SearchResults" /> </activity> <activity android:name=".privileged.views.InstallConfirmActivity" diff --git a/F-Droid/res/menu/main.xml b/F-Droid/res/menu/main.xml index f06e36cd1..f988659dd 100644 --- a/F-Droid/res/menu/main.xml +++ b/F-Droid/res/menu/main.xml @@ -6,7 +6,8 @@ android:id="@+id/action_search" android:icon="@drawable/ic_search_white" android:title="@string/menu_search" - app:showAsAction="ifRoom"/> + app:actionViewClass="android.support.v7.widget.SearchView" + app:showAsAction="collapseActionView|ifRoom"/> <item android:id="@+id/action_update_repo" android:icon="@drawable/ic_refresh_white" diff --git a/F-Droid/src/org/fdroid/fdroid/FDroid.java b/F-Droid/src/org/fdroid/fdroid/FDroid.java index 566fb00b2..b904f5afe 100644 --- a/F-Droid/src/org/fdroid/fdroid/FDroid.java +++ b/F-Droid/src/org/fdroid/fdroid/FDroid.java @@ -29,9 +29,11 @@ import android.content.res.Configuration; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; +import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AlertDialog; +import android.support.v7.widget.SearchView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; @@ -239,6 +241,14 @@ public class FDroid extends ActionBarActivity { MenuItem btItem = menu.findItem(R.id.action_bluetooth_apk); btItem.setVisible(false); } + + SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); + MenuItem searchItem = menu.findItem(R.id.action_search); + SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); + searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); + // LayoutParams.MATCH_PARENT does not work, use a big value instead + searchView.setMaxWidth(1000000); + return super.onCreateOptionsMenu(menu); } @@ -264,10 +274,6 @@ public class FDroid extends ActionBarActivity { startActivity(new Intent(this, SwapWorkflowActivity.class)); return true; - case R.id.action_search: - onSearchRequested(); - return true; - case R.id.action_bluetooth_apk: /* * If Bluetooth has not been enabled/turned on, then enabling