From 093c299fc125452487366486e95315c5ddc7ec53 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Wed, 6 Dec 2017 21:26:28 +0800 Subject: [PATCH] add: docs searching backward support --- .../scriptdroid/ui/doc/DocsFragment.java | 12 ++++--- .../scriptdroid/ui/main/MainActivity.java | 36 +++++++++++++++++-- .../scriptdroid/ui/main/QueryEvent.java | 13 ++++++- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/doc/DocsFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/doc/DocsFragment.java index 50100622..ee6f3a54 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/doc/DocsFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/doc/DocsFragment.java @@ -101,12 +101,16 @@ public class DocsFragment extends ViewPagerFragment implements BackPressedHandle mPreviousQuery = null; return; } - if (event.getQuery().equals(mPreviousQuery)) { + if (event.isFindForward()) { mWebView.findNext(false); - } else { - mWebView.findAllAsync(event.getQuery()); - mPreviousQuery = event.getQuery(); + return; } + if (event.getQuery().equals(mPreviousQuery)) { + mWebView.findNext(true); + return; + } + mWebView.findAllAsync(event.getQuery()); + mPreviousQuery = event.getQuery(); } @Override diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java index d89f3367..91e8ccee 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java @@ -73,6 +73,8 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega private VersionGuard mVersionGuard; private BackPressedHandler.Observer mBackPressObserver = new BackPressedHandler.Observer(); private SearchViewItem mSearchViewItem; + private MenuItem mLogMenuItem; + private boolean mDocsSearchItemExpanded; @Override @@ -254,6 +256,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); MenuItem searchMenuItem = menu.findItem(R.id.action_search); + mLogMenuItem = menu.findItem(R.id.action_log); setUpSearchMenuItem(searchMenuItem); return true; } @@ -261,14 +264,37 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_log) { - LogActivity_.intent(this).start(); + if (mDocsSearchItemExpanded) { + submitForwardQuery(); + } else { + LogActivity_.intent(this).start(); + } return true; } return super.onOptionsItemSelected(item); } + private void setUpSearchMenuItem(MenuItem searchMenuItem) { - mSearchViewItem = new SearchViewItem(this, searchMenuItem); + mSearchViewItem = new SearchViewItem(this, searchMenuItem) { + @Override + public boolean onMenuItemActionExpand(MenuItem item) { + if (mViewPager.getCurrentItem() == 1) { + mDocsSearchItemExpanded = true; + mLogMenuItem.setIcon(R.drawable.ic_ali_up); + } + return super.onMenuItemActionExpand(item); + } + + @Override + public boolean onMenuItemActionCollapse(MenuItem item) { + if (mDocsSearchItemExpanded) { + mDocsSearchItemExpanded = false; + mLogMenuItem.setIcon(R.drawable.ic_ali_log); + } + return super.onMenuItemActionCollapse(item); + } + }; mSearchViewItem.setQueryCallback(this::submitQuery); } @@ -284,4 +310,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega } } + private void submitForwardQuery() { + QueryEvent event = QueryEvent.FIND_FORWARD; + EventBus.getDefault().post(event); + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/QueryEvent.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/QueryEvent.java index c27d0286..ba35be50 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/QueryEvent.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/QueryEvent.java @@ -7,12 +7,19 @@ package com.stardust.scriptdroid.ui.main; public class QueryEvent { public static final QueryEvent CLEAR = new QueryEvent(null); + public static final QueryEvent FIND_FORWARD = new QueryEvent("", true); private boolean mShouldCollapseSearchView = false; private final String mQuery; + private final boolean mFindForward; + + public QueryEvent(String query, boolean b) { + mQuery = query; + mFindForward = b; + } public QueryEvent(String query) { - mQuery = query; + this(query, false); } public String getQuery() { @@ -26,5 +33,9 @@ public class QueryEvent { public boolean shouldCollapseSearchView() { return mShouldCollapseSearchView; } + + public boolean isFindForward() { + return mFindForward; + } }