[bookmarks][android] Button More in bookmark items.

This commit is contained in:
Daria Volvenkova 2019-08-23 01:54:49 +03:00 committed by Aleksey Belousov
parent 0d19235926
commit 30dd936cdd
4 changed files with 63 additions and 49 deletions

View file

@ -42,4 +42,19 @@
android:layout_height="wrap_content"
android:textAppearance="@style/MwmTextAppearance.Body3"/>
</LinearLayout>
<ImageView
android:id="@id/more"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:minHeight="@dimen/height_item_edit_bookmark"
android:paddingRight="@dimen/margin_base"
android:paddingEnd="@dimen/margin_base"
android:paddingLeft="@dimen/margin_double"
android:paddingStart="@dimen/margin_double"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_more"
android:background="?selectableItemBackgroundBorderless"
android:tint="?secondary"/>
</RelativeLayout>

View file

@ -15,7 +15,6 @@ import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.bookmarks.data.SortedBlock;
import com.mapswithme.maps.content.DataSource;
import com.mapswithme.maps.widget.recycler.RecyclerClickListener;
import com.mapswithme.maps.widget.recycler.RecyclerLongClickListener;
import java.util.ArrayList;
import java.util.Arrays;
@ -40,7 +39,7 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
private SectionsDataSource mSectionsDataSource;
@Nullable
private RecyclerLongClickListener mLongClickListener;
private RecyclerClickListener mMoreListener;
@Nullable
private RecyclerClickListener mClickListener;
@ -404,9 +403,9 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
mClickListener = listener;
}
void setOnLongClickListener(@Nullable RecyclerLongClickListener listener)
void setMoreListener(@Nullable RecyclerClickListener listener)
{
mLongClickListener = listener;
mMoreListener = listener;
}
@Override
@ -417,12 +416,19 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
switch (viewType)
{
case TYPE_TRACK:
holder = new Holders.TrackViewHolder(inflater.inflate(R.layout.item_track, parent,
false));
Holders.TrackViewHolder trackHolder =
new Holders.TrackViewHolder(inflater.inflate(R.layout.item_track, parent,
false));
trackHolder.setOnClickListener(mClickListener);
holder = trackHolder;
break;
case TYPE_BOOKMARK:
holder = new Holders.BookmarkViewHolder(inflater.inflate(R.layout.item_bookmark, parent,
false));
Holders.BookmarkViewHolder bookmarkHolder =
new Holders.BookmarkViewHolder(inflater.inflate(R.layout.item_bookmark, parent,
false));
bookmarkHolder.setOnClickListener(mClickListener);
bookmarkHolder.setMoreListener(mMoreListener);
holder = bookmarkHolder;
break;
case TYPE_SECTION:
TextView tv = (TextView) inflater.inflate(R.layout.item_category_title, parent, false);
@ -437,8 +443,6 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
if (holder == null)
throw new AssertionError("Unsupported view type: " + viewType);
holder.setOnClickListener(mClickListener);
holder.setOnLongClickListener(mLongClickListener);
return holder;
}

View file

@ -47,9 +47,7 @@ import com.mapswithme.util.sharing.SharingHelper;
import com.mapswithme.util.statistics.Statistics;
public class BookmarksListFragment extends BaseMwmRecyclerFragment<BookmarkListAdapter>
implements RecyclerLongClickListener,
RecyclerClickListener,
MenuItem.OnMenuItemClickListener,
implements MenuItem.OnMenuItemClickListener,
BookmarkManager.BookmarksSharingListener,
BookmarkManager.BookmarksSortingListener,
NativeBookmarkSearchListener,
@ -189,24 +187,29 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<BookmarkListA
{
BookmarkListAdapter adapter = getAdapter();
adapter.registerAdapterDataObserver(mCategoryDataSource);
adapter.setOnClickListener(this);
adapter.setOnLongClickListener(isDownloadedCategory() ? null : this);
adapter.setOnClickListener((v, position) ->
{
onItemClick(position);
});
if (!isDownloadedCategory())
{
adapter.setMoreListener((v, position) ->
{
onMore(position);
});
}
}
private void configureFab(@NonNull View view)
{
mFabViewOnMap = (FloatingActionButton) view.findViewById(R.id.fabViewOnMap);
mFabViewOnMap.setOnClickListener(new View.OnClickListener()
mFabViewOnMap = view.findViewById(R.id.fabViewOnMap);
mFabViewOnMap.setOnClickListener(v ->
{
@Override
public void onClick(View v)
{
final Intent i = new Intent(getActivity(), MwmActivity.class);
i.putExtra(MwmActivity.EXTRA_TASK,
new Factory.ShowBookmarkCategoryTask(mCategoryDataSource.getData().getId()));
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
final Intent i = new Intent(getActivity(), MwmActivity.class);
i.putExtra(MwmActivity.EXTRA_TASK,
new Factory.ShowBookmarkCategoryTask(mCategoryDataSource.getData().getId()));
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
});
}
@ -250,8 +253,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<BookmarkListA
getActivity().invalidateOptionsMenu();
}
@Override
public void onItemClick(View v, int position)
public void onItemClick(int position)
{
final Intent i = new Intent(getActivity(), MwmActivity.class);
@ -278,8 +280,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<BookmarkListA
startActivity(i);
}
@Override
public void onLongItemClick(View v, int position)
public void onMore(int position)
{
BookmarkListAdapter adapter = getAdapter();

View file

@ -228,18 +228,6 @@ public class Holders
listener.onItemClick(v, getAdapterPosition());
});
}
void setOnLongClickListener(@Nullable RecyclerLongClickListener listener)
{
mView.setOnLongClickListener(v -> onOpenActionMenu(v, listener));
}
boolean onOpenActionMenu(@NonNull View v, @Nullable RecyclerLongClickListener listener)
{
if (listener != null)
listener.onLongItemClick(v, getAdapterPosition());
return true;
}
}
static class BookmarkViewHolder extends BaseBookmarkHolder
@ -250,6 +238,8 @@ public class Holders
private final TextView mName;
@NonNull
private final TextView mDistance;
@Nullable
private View mMore;
BookmarkViewHolder(@NonNull View itemView)
{
@ -257,12 +247,7 @@ 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);
}
@Override
void setOnLongClickListener(@Nullable RecyclerLongClickListener listener)
{
super.setOnLongClickListener(listener);
mMore = itemView.findViewById(R.id.more);
}
@Override
@ -280,13 +265,22 @@ public class Holders
mDistance.setText(distanceValue);
UiUtils.hideIf(TextUtils.isEmpty(distanceValue), mDistance);
mIcon.setImageResource(bookmark.getIcon().getResId());
UiUtils.hideIf(!sectionsDataSource.isEditable(position.sectionIndex), mMore);
Drawable circle = Graphics.drawCircleAndImage(bookmark.getIcon().argb(),
R.dimen.track_circle_size,
bookmark.getIcon().getResId(),
R.dimen.bookmark_icon_size,
mIcon.getContext().getResources());
mIcon.setImageDrawable(circle);
}
void setMoreListener(@Nullable RecyclerClickListener listener)
{
mMore.setOnClickListener(v -> {
if (listener != null)
listener.onItemClick(v, getAdapterPosition());
});
}
}
static class TrackViewHolder extends BaseBookmarkHolder