mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
add up/down buttons to search
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -7,6 +7,18 @@
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="collapseActionView|never" />
|
||||
|
||||
<item android:title="@string/back"
|
||||
android:id="@+id/menu_search_up"
|
||||
android:icon="@drawable/ic_search_up"
|
||||
android:visible="false"
|
||||
app:showAsAction="always"/>
|
||||
|
||||
<item android:title="@string/next"
|
||||
android:id="@+id/menu_search_down"
|
||||
android:icon="@drawable/ic_search_down"
|
||||
android:visible="false"
|
||||
app:showAsAction="always"/>
|
||||
|
||||
<item android:title="@string/menu_scroll_to_top"
|
||||
android:id="@+id/log_scroll_up" />
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import androidx.core.app.ActivityOptionsCompat;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.WindowManager;
|
||||
@@ -156,4 +158,16 @@ public abstract class BaseActionBarActivity extends AppCompatActivity {
|
||||
isWaitingForResult = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void makeSearchMenuVisible(final Menu menu, final MenuItem exception, boolean visible) {
|
||||
for (int i = 0; i < menu.size(); ++i) {
|
||||
MenuItem item = menu.getItem(i);
|
||||
int id = item.getItemId();
|
||||
if (id==R.id.menu_search_up || id==R.id.menu_search_down) {
|
||||
item.setVisible(!visible);
|
||||
} else if (item != exception) {
|
||||
item.setVisible(visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,13 @@ import android.content.Intent;
|
||||
import android.content.res.AssetManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
@@ -24,6 +26,8 @@ public class LocalHelpActivity extends PassphraseRequiredActionBarActivity
|
||||
implements SearchView.OnQueryTextListener,
|
||||
WebView.FindListener
|
||||
{
|
||||
private static final String TAG = LocalHelpActivity.class.getSimpleName();
|
||||
|
||||
private WebView webView;
|
||||
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
||||
private final DynamicLanguage dynamicLanguage = new DynamicLanguage();
|
||||
@@ -106,10 +110,36 @@ public class LocalHelpActivity extends PassphraseRequiredActionBarActivity
|
||||
|
||||
inflater.inflate(R.menu.local_help, menu);
|
||||
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search_localhelp);
|
||||
SearchView searchView = (SearchView) searchItem.getActionView();
|
||||
searchView.setOnQueryTextListener(this);
|
||||
searchView.setQueryHint(getString(R.string.search));
|
||||
try {
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search_localhelp);
|
||||
searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
|
||||
@Override
|
||||
public boolean onMenuItemActionExpand(final MenuItem item) {
|
||||
LocalHelpActivity.this.lastQuery = "";
|
||||
LocalHelpActivity.this.makeSearchMenuVisible(menu, searchItem, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemActionCollapse(final MenuItem item) {
|
||||
LocalHelpActivity.this.makeSearchMenuVisible(menu, searchItem, true);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
SearchView searchView = (SearchView) searchItem.getActionView();
|
||||
searchView.setOnQueryTextListener(this);
|
||||
searchView.setQueryHint(getString(R.string.search));
|
||||
searchView.setIconifiedByDefault(true);
|
||||
|
||||
// hide the [X] beside the search field - this is too much noise, search can be aborted eg. by "back"
|
||||
ImageView closeBtn = searchView.findViewById(R.id.search_close_btn);
|
||||
if (closeBtn!=null) {
|
||||
closeBtn.setEnabled(false);
|
||||
closeBtn.setImageDrawable(null);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "cannot set up help-search: ", e);
|
||||
}
|
||||
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
return true;
|
||||
@@ -120,7 +150,6 @@ public class LocalHelpActivity extends PassphraseRequiredActionBarActivity
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
webView.findNext(true);
|
||||
return true; // action handled by listener
|
||||
}
|
||||
|
||||
@@ -156,6 +185,20 @@ public class LocalHelpActivity extends PassphraseRequiredActionBarActivity
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
return true;
|
||||
case R.id.menu_search_up:
|
||||
if (lastQuery.isEmpty()) {
|
||||
webView.scrollTo(0, 0);
|
||||
} else {
|
||||
webView.findNext(false);
|
||||
}
|
||||
return true;
|
||||
case R.id.menu_search_down:
|
||||
if (lastQuery.isEmpty()) {
|
||||
webView.scrollTo(0, 1000000000);
|
||||
} else {
|
||||
webView.findNext(true);
|
||||
}
|
||||
return true;
|
||||
case R.id.log_scroll_up:
|
||||
webView.scrollTo(0, 0);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user