diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ReorderTabAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ReorderTabAdapter.java index 29a82fcd4..dc06ddba8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ReorderTabAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ReorderTabAdapter.java @@ -42,6 +42,7 @@ import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.helper.itemtouchhelper.ItemTouchHelperAdapter; import fr.gouv.etalab.mastodon.helper.itemtouchhelper.ItemTouchHelperViewHolder; import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnStartDragListener; +import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnUndoListener; import fr.gouv.etalab.mastodon.sqlite.Sqlite; import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO; @@ -59,12 +60,14 @@ public class ReorderTabAdapter extends RecyclerView.Adapter mItems; private final OnStartDragListener mDragStartListener; + private final OnUndoListener mUndoListener; private Context context; private SharedPreferences sharedpreferences; - public ReorderTabAdapter(Context context, List manageTimelines, OnStartDragListener dragStartListener) { + public ReorderTabAdapter(Context context, List manageTimelines, OnStartDragListener dragStartListener, OnUndoListener undoListener) { this. mDragStartListener = dragStartListener; + this.mUndoListener = undoListener; this.mItems = manageTimelines; this.context = context; sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); @@ -197,11 +200,9 @@ public class ReorderTabAdapter extends RecyclerView.Adapter timelines; + private ReorderTabAdapter adapter; @Override public View onCreateView(@NonNull LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) { @@ -60,14 +69,15 @@ public class DisplayReorderTabFragment extends Fragment implements OnStartDragLi RecyclerView lv_reorder_tabs = rootView.findViewById(R.id.lv_reorder_tabs); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - List timelines = new TimelinesDAO(context, db).getAllTimelines(); - ReorderTabAdapter adapter = new ReorderTabAdapter(context, timelines, DisplayReorderTabFragment.this); + timelines = new TimelinesDAO(context, db).getAllTimelines(); + adapter = new ReorderTabAdapter(context, timelines, DisplayReorderTabFragment.this, DisplayReorderTabFragment.this); ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter); touchHelper = new ItemTouchHelper(callback); touchHelper.attachToRecyclerView(lv_reorder_tabs); - + undo_action = rootView.findViewById(R.id.undo_action); + undo_container = rootView.findViewById(R.id.undo_container); lv_reorder_tabs.setAdapter(adapter); LinearLayoutManager mLayoutManager = new LinearLayoutManager(context); lv_reorder_tabs.setLayoutManager(mLayoutManager); @@ -91,4 +101,27 @@ public class DisplayReorderTabFragment extends Fragment implements OnStartDragLi public void onStartDrag(RecyclerView.ViewHolder viewHolder) { touchHelper.startDrag(viewHolder); } + + + @Override + public void onUndo(ManageTimelines manageTimelines, int position) { + undo_container.setVisibility(View.VISIBLE); + undo_action.setPaintFlags(undo_action.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + undo_action.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + timelines.add(position, manageTimelines); + adapter.notifyItemInserted(position); + undo_container.setVisibility(View.GONE); + } + }); + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + undo_container.setVisibility(View.GONE); + } + }, 2000); + + } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/itemtouchhelper/OnUndoListener.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/itemtouchhelper/OnUndoListener.java new file mode 100644 index 000000000..db423f87b --- /dev/null +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/itemtouchhelper/OnUndoListener.java @@ -0,0 +1,34 @@ +package fr.gouv.etalab.mastodon.helper.itemtouchhelper; + +/* Copyright 2019 Thomas Schneider + * + * This file is a part of Mastalab + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * Mastalab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Mastalab; if not, + * see . */ + + +import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines; + +/** + * Listener for manual initiation of a undo. + */ +public interface OnUndoListener { + + /** + * Called when an item is removed + * + * @param timelines The timeline ManageTimelines + * @param position The position of the item in tablayout + */ + void onUndo(ManageTimelines timelines, int position); + +} diff --git a/app/src/main/res/layout/fragment_reorder_tabs.xml b/app/src/main/res/layout/fragment_reorder_tabs.xml index 11b85bf93..7c8b99f72 100644 --- a/app/src/main/res/layout/fragment_reorder_tabs.xml +++ b/app/src/main/res/layout/fragment_reorder_tabs.xml @@ -28,5 +28,32 @@ android:scrollbars="none" > + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ddfb6fe3e..60be1b5f5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -927,6 +927,7 @@ Move timeline Hide timeline Reorder timelines + Undo %d vote