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();
+ }
}