Maroloccio has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/276399

Change subject: Add tooltips to search buttons
......................................................................

Add tooltips to search buttons

Task: T104094
Change-Id: I73e85fbb4685d6082a7faf2a145d778ef0dc7642
---
M app/src/main/java/org/wikipedia/history/HistoryFragment.java
M app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
M app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
M app/src/main/java/org/wikipedia/search/SearchResultsFragment.java
M app/src/main/java/org/wikipedia/util/FeedbackUtil.java
A app/src/main/java/org/wikipedia/util/logRemoteExceptionLogger.java
M app/src/main/res/layout/fragment_search_recent.xml
7 files changed, 85 insertions(+), 28 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/99/276399/1

diff --git a/app/src/main/java/org/wikipedia/history/HistoryFragment.java 
b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
index 1ab0d2d..4c0f00c 100644
--- a/app/src/main/java/org/wikipedia/history/HistoryFragment.java
+++ b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
@@ -124,7 +124,7 @@
         String[] selectionArgs = null;
         historyEmptyContainer.setVisibility(View.GONE);
         String searchStr = entryFilter.getText().toString();
-        if (searchStr.length() != 0) {
+        if (!searchStr.isEmpty()) {
             searchStr = searchStr.replace("\\", "\\\\").replace("%", 
"\\%").replace("_", "\\_");
             selection = "UPPER(" + tblName + "." + titleCol + ") LIKE UPPER(?) 
ESCAPE '\\'";
             selectionArgs = new String[]{"%" + searchStr + "%"};
@@ -205,7 +205,7 @@
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        if (!isAdded() || ((PageActivity)getActivity()).isSearching()) {
+        if (!isMenuToBeSetUp()) {
             return;
         }
         inflater.inflate(R.menu.menu_history, menu);
@@ -214,12 +214,13 @@
     @Override
     public void onPrepareOptionsMenu(Menu menu) {
         super.onPrepareOptionsMenu(menu);
-        if (!isAdded() || ((PageActivity)getActivity()).isSearching()) {
+        if (!isMenuToBeSetUp()) {
             return;
         }
+        boolean isHistoryAvailable = historyEntryList.getCount() > 0;
         menu.findItem(R.id.menu_clear_all_history)
-            .setVisible(historyEntryList.getCount() > 0)
-            .setEnabled(historyEntryList.getCount() > 0);
+                .setVisible(isHistoryAvailable)
+                .setEnabled(isHistoryAvailable);
     }
 
     @Override
@@ -250,6 +251,10 @@
         }
     }
 
+    private boolean isMenuToBeSetUp() {
+        return isAdded() && !((PageActivity)getActivity()).isSearching();
+    }
+
     private class HistoryItemClickListener implements 
AdapterView.OnItemClickListener {
         @Override
         public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
diff --git a/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java 
b/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
index 39c4d13..7992d6b 100644
--- a/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
+++ b/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
@@ -65,8 +65,9 @@
             }
         });
 
-        
getActivity().getSupportLoaderManager().initLoader(RECENT_SEARCHES_FRAGMENT_LOADER_ID,
 null, this);
-        
getActivity().getSupportLoaderManager().restartLoader(RECENT_SEARCHES_FRAGMENT_LOADER_ID,
 null, this);
+        LoaderManager supportLoaderManager = 
getActivity().getSupportLoaderManager();
+        supportLoaderManager.initLoader(RECENT_SEARCHES_FRAGMENT_LOADER_ID, 
null, this);
+        supportLoaderManager.restartLoader(RECENT_SEARCHES_FRAGMENT_LOADER_ID, 
null, this);
     }
 
     @Override
@@ -81,7 +82,7 @@
         String[] projection = null;
         String selection = null;
         String[] selectionArgs = null;
-        String order = "timestamp DESC";
+        String order = RecentSearchDatabaseTable.Col.TIMESTAMP.getName() + " 
DESC";
         return new CursorLoader(getContext(), uri, projection, selection, 
selectionArgs, order);
     }
 
diff --git a/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java 
b/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
index 047d52f..be7f11f 100644
--- a/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
+++ b/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
@@ -4,6 +4,7 @@
 import android.graphics.Color;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.SearchView;
 import android.text.TextUtils;
@@ -15,6 +16,7 @@
 import android.view.ViewGroup;
 import android.widget.EditText;
 import android.widget.FrameLayout;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -31,6 +33,7 @@
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.settings.LanguagePreferenceDialog;
+import org.wikipedia.util.FeedbackUtil;
 
 import static org.wikipedia.util.DeviceUtil.hideSoftKeyboard;
 import static org.wikipedia.util.DimenUtil.getContentTopOffsetPx;
@@ -113,25 +116,34 @@
             }
         });
 
-        View deleteButton = 
parentLayout.findViewById(R.id.recent_searches_delete_button);
+        final View deleteButton = 
parentLayout.findViewById(R.id.recent_searches_delete_button);
         deleteButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                AlertDialog.Builder alert = new 
AlertDialog.Builder(getActivity());
-                
alert.setMessage(getString(R.string.clear_recent_searches_confirm));
-                alert.setPositiveButton(getString(R.string.yes), new 
DialogInterface.OnClickListener() {
-                    public void onClick(DialogInterface dialog, int id) {
-                        new DeleteAllRecentSearchesTask(app).execute();
-                    }
-                });
-                alert.setNegativeButton(getString(R.string.no), null);
-                alert.create().show();
+                new AlertDialog.Builder(getActivity())
+                        
.setMessage(getString(R.string.clear_recent_searches_confirm))
+                        .setPositiveButton(
+                                getString(R.string.yes),
+                                new DialogInterface.OnClickListener() {
+                                    public void onClick(DialogInterface 
dialog, int id) {
+                                        new 
DeleteAllRecentSearchesTask(app).execute();
+                                    }
+                                })
+                        .setNegativeButton(getString(R.string.no), null)
+                        .create().show();
+            }
+        });
+        deleteButton.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                FeedbackUtil.showToolbarButtonToast(deleteButton);
+                return false;
             }
         });
 
-        recentSearchesFragment = 
(RecentSearchesFragment)getChildFragmentManager().findFragmentById(R.id.search_panel_recent);
-
-        searchResultsFragment = 
(SearchResultsFragment)getChildFragmentManager().findFragmentById(R.id.fragment_search_results);
+        FragmentManager childFragmentManager = getChildFragmentManager();
+        recentSearchesFragment = 
(RecentSearchesFragment)childFragmentManager.findFragmentById(R.id.search_panel_recent);
+        searchResultsFragment = 
(SearchResultsFragment)childFragmentManager.findFragmentById(R.id.fragment_search_results);
 
         // make sure we're hidden by default
         searchContainerView.setVisibility(View.GONE);
@@ -328,6 +340,15 @@
                 View searchEditPlate = searchView
                         
.findViewById(android.support.v7.appcompat.R.id.search_plate);
                 searchEditPlate.setBackgroundColor(Color.TRANSPARENT);
+                final ImageView searchClose = (ImageView) 
searchView.findViewById(
+                        android.support.v7.appcompat.R.id.search_close_btn);
+                searchClose.setOnLongClickListener(new 
View.OnLongClickListener() {
+                    @Override
+                    public boolean onLongClick(View v) {
+                        FeedbackUtil.showToolbarButtonToast(searchClose);
+                        return false;
+                    }
+                });
             }
 
             updateZeroChrome();
diff --git a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.java 
b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.java
index b44988d..8bc535b 100644
--- a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.java
+++ b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.java
@@ -43,7 +43,7 @@
     /**
      * Constant to ease in the conversion of timestamps from nanoseconds to 
milliseconds.
      */
-    private static final int NANO_TO_MILLI = 1000000;
+    private static final int NANO_TO_MILLI = 1_000_000; // 10^6
 
     private SearchArticlesFragment searchFragment;
     private View searchResultsDisplay;
diff --git a/app/src/main/java/org/wikipedia/util/FeedbackUtil.java 
b/app/src/main/java/org/wikipedia/util/FeedbackUtil.java
index 9ac7d13..9469bfc 100644
--- a/app/src/main/java/org/wikipedia/util/FeedbackUtil.java
+++ b/app/src/main/java/org/wikipedia/util/FeedbackUtil.java
@@ -1,13 +1,15 @@
 package org.wikipedia.util;
 
 import android.app.Activity;
-import android.support.annotation.StringRes;
 import android.content.Context;
 import android.net.Uri;
+import android.support.annotation.StringRes;
 import android.support.design.widget.Snackbar;
 import android.text.Html;
+import android.util.DisplayMetrics;
 import android.view.Gravity;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -87,10 +89,30 @@
     }
 
     public static void showToolbarButtonToast(View view) {
-        Toast toast = Toast.makeText(view.getContext(), 
view.getContentDescription(), Toast.LENGTH_SHORT);
-        int[] location = new int[2];
-        view.getLocationOnScreen(location);
-        toast.setGravity(Gravity.TOP | Gravity.START, location[0], 
location[1]);
+        Context viewContext = view.getContext();
+        Toast toast = Toast.makeText(
+                viewContext,
+                view.getContentDescription(),
+                Toast.LENGTH_SHORT);
+        View toastView = toast.getView();
+        WindowManager windowManager = (WindowManager)
+                viewContext.getSystemService(Context.WINDOW_SERVICE);
+        DisplayMetrics metrics = new DisplayMetrics();
+        windowManager.getDefaultDisplay().getMetrics(metrics);
+        int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(
+                metrics.widthPixels, View.MeasureSpec.UNSPECIFIED);
+        int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(
+                metrics.heightPixels, View.MeasureSpec.UNSPECIFIED);
+        toastView.measure(widthMeasureSpec, heightMeasureSpec);
+        int toastWidth = toastView.getMeasuredWidth();
+        int toastHeight = toastView.getMeasuredHeight();
+        int[] locationOnScreen = new int[2];
+        view.getLocationOnScreen(locationOnScreen);
+        final int viewX = locationOnScreen[0];
+        final int viewY = locationOnScreen[1];
+        final int xOffset = viewX - toastWidth / 2;
+        final int yOffset = viewY - toastHeight / 2;
+        toast.setGravity(Gravity.TOP | Gravity.LEFT, xOffset, yOffset);
         toast.show();
     }
 
diff --git 
"a/app/src/main/java/org/wikipedia/util/log\302\220RemoteExceptionLogger.java" 
"b/app/src/main/java/org/wikipedia/util/log\302\220RemoteExceptionLogger.java"
new file mode 100644
index 0000000..fa397b7
--- /dev/null
+++ 
"b/app/src/main/java/org/wikipedia/util/log\302\220RemoteExceptionLogger.java"
@@ -0,0 +1,7 @@
+package org.wikipedia.util.log;
+
+import android.support.annotation.NonNull;
+
+public interface RemoteExceptionLogger {
+    void log(@NonNull Throwable throwable);
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_search_recent.xml 
b/app/src/main/res/layout/fragment_search_recent.xml
index d697eec..0f3a014 100644
--- a/app/src/main/res/layout/fragment_search_recent.xml
+++ b/app/src/main/res/layout/fragment_search_recent.xml
@@ -29,7 +29,8 @@
             android:src="@drawable/ic_delete_grey"
             android:scaleType="centerInside"
             
android:contentDescription="@string/button_clear_all_recent_searches"
-            android:background="?attr/actionBarItemBackground"/>
+            android:background="?attr/actionBarItemBackground"
+            android:longClickable="true" />
 
     </FrameLayout>
 

-- 
To view, visit https://gerrit.wikimedia.org/r/276399
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I73e85fbb4685d6082a7faf2a145d778ef0dc7642
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Maroloccio <maroloc...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to