diff --git a/android/res/layout/item_bookmark.xml b/android/res/layout/item_bookmark.xml index 4ec6ffd367..df86b2b14b 100644 --- a/android/res/layout/item_bookmark.xml +++ b/android/res/layout/item_bookmark.xml @@ -4,7 +4,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="@dimen/height_item_oneline" - android:gravity="center" android:background="?clickableBackground"> - - diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesPagerFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesPagerFragment.java index 00a1cd027f..dbab5c01e5 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesPagerFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesPagerFragment.java @@ -12,6 +12,7 @@ import android.view.ViewGroup; import com.mapswithme.maps.R; import com.mapswithme.maps.base.BaseMwmFragment; +import com.mapswithme.util.SharedPropertiesUtils; import java.util.Arrays; import java.util.List; @@ -35,17 +36,42 @@ public class BookmarkCategoriesPagerFragment extends BaseMwmFragment TabLayout tabLayout = root.findViewById(R.id.sliding_tabs_layout); FragmentManager fm = getActivity().getSupportFragmentManager(); - BookmarksPagerAdapter adapter = new BookmarksPagerAdapter(getContext(), - fm, - prepareAdapterDataSet()); + List dataSet = getAdapterDataSet(); + BookmarksPagerAdapter adapter = new BookmarksPagerAdapter(getContext(), fm, dataSet); viewPager.setAdapter(adapter); + + int lastVisibleScreen = SharedPropertiesUtils.getLastVisibleBookmarkCategoriesPage(getActivity()); + viewPager.setCurrentItem(lastVisibleScreen); tabLayout.setupWithViewPager(viewPager); + viewPager.addOnPageChangeListener(new PageChangeListener()); + return root; } @NonNull - private static List prepareAdapterDataSet() + private static List getAdapterDataSet() { return Arrays.asList(BookmarksPageFactory.PRIVATE, BookmarksPageFactory.CATALOG); } + + private class PageChangeListener implements ViewPager.OnPageChangeListener + { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) + { + + } + + @Override + public void onPageSelected(int position) + { + SharedPropertiesUtils.setLastVisibleBookmarkCategoriesPage(getActivity(), position); + } + + @Override + public void onPageScrollStateChanged(int state) + { + + } + } } diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksCatalogFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksCatalogFragment.java index 2d34e610db..0088a49207 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksCatalogFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksCatalogFragment.java @@ -122,7 +122,14 @@ public class BookmarksCatalogFragment extends BaseWebViewMwmFragment @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { - return requestArchive(view, url); + try + { + return requestArchive(view, url); + } + catch (BookmarksDownloadManager.UnprocessedUrlException e) + { + return false; + } } @Override @@ -157,7 +164,8 @@ public class BookmarksCatalogFragment extends BaseWebViewMwmFragment mError = null; } - private boolean requestArchive(@NonNull WebView view, @NonNull String url) + private boolean requestArchive(@NonNull WebView view, + @NonNull String url) throws BookmarksDownloadManager.UnprocessedUrlException { BookmarksDownloadManager dm = BookmarksDownloadManager.from(view.getContext()); dm.enqueueRequest(url); diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksDownloadManager.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksDownloadManager.java index 82b890c313..7a7651e878 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksDownloadManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksDownloadManager.java @@ -9,8 +9,6 @@ import android.util.Pair; import com.mapswithme.maps.bookmarks.data.BookmarkManager; -import java.util.Set; - public class BookmarksDownloadManager { private static final String QUERY_PARAM_ID_KEY = "id"; @@ -24,17 +22,19 @@ public class BookmarksDownloadManager mContext = context.getApplicationContext(); } - public long enqueueRequest(@NonNull String url) + public long enqueueRequest(@NonNull String url) throws UnprocessedUrlException { + Pair uriPair = prepareUriPair(url); + DownloadManager downloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE); + if (downloadManager == null) { throw new NullPointerException( "Download manager is null, failed to download url = " + url); } - Pair uriPair = prepareUriPair(url); Uri srcUri = uriPair.first; Uri dstUri = uriPair.second; @@ -55,12 +55,12 @@ public class BookmarksDownloadManager } @NonNull - private static Pair prepareUriPair(@NonNull String url) + private static Pair prepareUriPair(@NonNull String url) throws UnprocessedUrlException { Uri srcUri = Uri.parse(url); String fileId = srcUri.getQueryParameter(QUERY_PARAM_ID_KEY); if (TextUtils.isEmpty(fileId)) - throw new IllegalArgumentException("File id not found"); + throw new UnprocessedUrlException("File id not found"); String downloadUrl = BookmarkManager.INSTANCE.getCatalogDownloadUrl(fileId); Uri.Builder builder = Uri.parse(downloadUrl).buildUpon(); @@ -78,4 +78,12 @@ public class BookmarksDownloadManager { return new BookmarksDownloadManager(context); } + + public static class UnprocessedUrlException extends Exception + { + UnprocessedUrlException(@NonNull String msg) + { + super(msg); + } + } } diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java index 1715fdd45f..10351752d8 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java @@ -122,7 +122,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment adapter.startLocationUpdate(); adapter.setOnClickListener(this); - adapter.setOnLongClickListener(this); + adapter.setOnLongClickListener(isCatalogCategory() ? null : this); } @Override diff --git a/android/src/com/mapswithme/maps/bookmarks/Holders.java b/android/src/com/mapswithme/maps/bookmarks/Holders.java index 13368f59b2..f78c630b2d 100644 --- a/android/src/com/mapswithme/maps/bookmarks/Holders.java +++ b/android/src/com/mapswithme/maps/bookmarks/Holders.java @@ -315,8 +315,6 @@ public class Holders private final TextView mName; @NonNull private final TextView mDistance; - @NonNull - private final View mMore; BookmarkViewHolder(@NonNull View itemView, @NonNull BookmarkCategory category) { @@ -324,14 +322,12 @@ public class Holders mIcon = itemView.findViewById(R.id.iv__bookmark_color); mName = itemView.findViewById(R.id.tv__bookmark_name); mDistance = itemView.findViewById(R.id.tv__bookmark_distance); - mMore = itemView.findViewById(R.id.more); } @Override void setOnLongClickListener(@Nullable RecyclerLongClickListener listener) { super.setOnLongClickListener(listener); - mMore.setOnClickListener(v -> onOpenActionMenu(v, listener)); } @Override @@ -452,7 +448,7 @@ public class Holders private void onMoreBtnClicked(@NonNull View v) { int lineCount = calcLineCount(mDescText, mCategory.getDescription()); - mDescText.setLines(lineCount); + mDescText.setMaxLines(lineCount); mDescText.setText(mCategory.getDescription()); v.setVisibility(View.GONE); } diff --git a/android/src/com/mapswithme/util/SharedPropertiesUtils.java b/android/src/com/mapswithme/util/SharedPropertiesUtils.java index 6e120a7c6f..81ce909d22 100644 --- a/android/src/com/mapswithme/util/SharedPropertiesUtils.java +++ b/android/src/com/mapswithme/util/SharedPropertiesUtils.java @@ -17,6 +17,7 @@ public final class SharedPropertiesUtils private static final String PREFS_BACKUP_WIDGET_EXPANDED = "BackupWidgetExpanded"; private static final String PREFS_WHATS_NEW_TITLE_CONCATENATION = "WhatsNewTitleConcatenation"; private static final String PREFS_CATALOG_CATEGORIES_HEADER_CLOSED = "CatalogCategoriesHeaderClosed"; + private static final String PREFS_BOOKMARK_CATEGORIES_LAST_VISIBLE_PAGE = "BookmarkCategoriesLastVisiblePage"; private static final SharedPreferences PREFS = PreferenceManager.getDefaultSharedPreferences(MwmApplication.get()); @@ -92,4 +93,18 @@ public final class SharedPropertiesUtils .putBoolean(PREFS_CATALOG_CATEGORIES_HEADER_CLOSED, value) .apply(); } + + public static int getLastVisibleBookmarkCategoriesPage(@NonNull Context context) + { + return MwmApplication.prefs(context) + .getInt(PREFS_BOOKMARK_CATEGORIES_LAST_VISIBLE_PAGE, 0); + } + + public static void setLastVisibleBookmarkCategoriesPage(@NonNull Context context, int lastVisibleScreenIndex) + { + MwmApplication.prefs(context) + .edit() + .putInt(PREFS_BOOKMARK_CATEGORIES_LAST_VISIBLE_PAGE, lastVisibleScreenIndex) + .apply(); + } }