Albert221 has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394365 )
Change subject: Add long press action for find buttons
......................................................................
Add long press action for find buttons
Bug: T103952
Change-Id: I2a120a16b871a0b8cb2609981ef9322ddc8a29c3
---
M app/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
1 file changed, 68 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/65/394365/1
diff --git a/app/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
b/app/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
index 015e429..b714c89 100644
--- a/app/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
+++ b/app/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
@@ -4,10 +4,13 @@
import android.support.annotation.NonNull;
import android.support.v7.widget.SearchView;
import android.view.ActionProvider;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.webkit.WebView.FindListener;
import android.widget.TextView;
+import android.widget.Toast;
import org.wikipedia.R;
import org.wikipedia.analytics.FindInPageFunnel;
@@ -20,6 +23,11 @@
private View findInPageNext;
private View findInPagePrev;
private TextView findInPageMatch;
+
+ private int currentMatch;
+ private int numberOfMatches;
+ private boolean isFirstOccurence = false;
+ private boolean isLastOccurence = false;
public FindInPageActionProvider(@NonNull PageFragment fragment,
@NonNull FindInPageFunnel funnel) {
@@ -48,6 +56,32 @@
fragment.getWebView().findNext(true);
}
});
+ findInPageNext.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View view) {
+ if (isLastOccurence) {
+ Toast.makeText(
+ fragment.getContext(),
+ "This is the last occurence",
+ Toast.LENGTH_SHORT
+ ).show();
+ } else {
+ fragment.hideSoftKeyboard();
+ if (!pageFragmentValid()) {
+ return true;
+ }
+
+ // Find next that many times how many matches is left.
+ int howManyForward = numberOfMatches - currentMatch;
+ while (howManyForward-- > 0) {
+ funnel.addFindNext();
+ fragment.getWebView().findNext(true);
+ }
+ }
+
+ return true;
+ }
+ });
findInPagePrev = view.findViewById(R.id.find_in_page_prev);
findInPagePrev.setOnClickListener(new View.OnClickListener() {
@@ -59,6 +93,32 @@
}
funnel.addFindPrev();
fragment.getWebView().findNext(false);
+ }
+ });
+ findInPagePrev.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View view) {
+ if (isFirstOccurence) {
+ Toast.makeText(
+ fragment.getContext(),
+ "This is the first occurence",
+ Toast.LENGTH_SHORT
+ ).show();
+ } else {
+ fragment.hideSoftKeyboard();
+ if (!pageFragmentValid()) {
+ return true;
+ }
+
+ // Find next that many times how many matches is left.
+ int howManyBackward = currentMatch - 1;
+ while (howManyBackward-- > 0) {
+ funnel.addFindPrev();
+ fragment.getWebView().findNext(false);
+ }
+ }
+
+ return true;
}
});
@@ -129,10 +189,18 @@
activeMatchOrdinal + 1, numberOfMatches));
findInPageNext.setEnabled(true);
findInPagePrev.setEnabled(true);
+
+ currentMatch = activeMatchOrdinal + 1;
+ FindInPageActionProvider.this.numberOfMatches =
numberOfMatches;
+ isFirstOccurence = activeMatchOrdinal == 0;
+ isLastOccurence = activeMatchOrdinal + 1 ==
numberOfMatches;
} else {
findInPageMatch.setText("0/0");
findInPageNext.setEnabled(false);
findInPagePrev.setEnabled(false);
+
+ currentMatch =
FindInPageActionProvider.this.numberOfMatches = 0;
+ isFirstOccurence = isLastOccurence = false;
}
findInPageMatch.setVisibility(View.VISIBLE);
}
--
To view, visit https://gerrit.wikimedia.org/r/394365
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2a120a16b871a0b8cb2609981ef9322ddc8a29c3
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Albert221 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits