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