From 5d5002a6d76c96bb92e8d760142481791507540f Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Tue, 6 Sep 2016 14:54:42 -0700 Subject: [PATCH] Add delete menu item for TimerViewHolder --- .../clock2/timers/TimerController.java | 4 ++++ .../clock2/timers/TimerViewHolder.java | 24 +++++++++++++++++++ .../main/res/drawable/ic_overflow_24dp.xml | 9 +++++++ app/src/main/res/layout-land/item_timer.xml | 10 ++++++++ app/src/main/res/layout/item_timer.xml | 10 ++++++++ .../main/res/menu/menu_timer_viewholder.xml | 7 ++++++ 6 files changed, 64 insertions(+) create mode 100644 app/src/main/res/drawable/ic_overflow_24dp.xml create mode 100644 app/src/main/res/menu/menu_timer_viewholder.xml diff --git a/app/src/main/java/com/philliphsu/clock2/timers/TimerController.java b/app/src/main/java/com/philliphsu/clock2/timers/TimerController.java index 12a24cc..e0f3995 100644 --- a/app/src/main/java/com/philliphsu/clock2/timers/TimerController.java +++ b/app/src/main/java/com/philliphsu/clock2/timers/TimerController.java @@ -57,6 +57,10 @@ public class TimerController { // Prompts a reload of the list data, so the list will reflect this modified timer } + public void deleteTimer() { + mUpdateHandler.asyncDelete(mTimer); + } + private void update() { mUpdateHandler.asyncUpdate(mTimer.getId(), mTimer); } diff --git a/app/src/main/java/com/philliphsu/clock2/timers/TimerViewHolder.java b/app/src/main/java/com/philliphsu/clock2/timers/TimerViewHolder.java index 01ef566..abf2d34 100644 --- a/app/src/main/java/com/philliphsu/clock2/timers/TimerViewHolder.java +++ b/app/src/main/java/com/philliphsu/clock2/timers/TimerViewHolder.java @@ -5,7 +5,9 @@ import android.graphics.drawable.Drawable; import android.support.v4.app.FragmentManager; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.PopupMenu; import android.util.Log; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; @@ -36,6 +38,7 @@ public class TimerViewHolder extends BaseViewHolder { private final Drawable mStartIcon; private final Drawable mPauseIcon; private final FragmentManager mFragmentManager; + private final PopupMenu mPopupMenu; @Bind(R.id.label) TextView mLabel; @Bind(R.id.duration) CountdownChronometer mChronometer; @@ -43,6 +46,7 @@ public class TimerViewHolder extends BaseViewHolder { @Bind(R.id.add_one_minute) TextView mAddOneMinute; @Bind(R.id.start_pause) ImageButton mStartPause; @Bind(R.id.stop) ImageButton mStop; + @Bind(R.id.menu) ImageButton mMenuButton; public TimerViewHolder(ViewGroup parent, OnListItemInteractionListener listener, AsyncTimersTableUpdateHandler asyncTimersTableUpdateHandler) { @@ -66,6 +70,21 @@ public class TimerViewHolder extends BaseViewHolder { Log.i(TAG, "Restoring add label callback"); labelDialog.setOnLabelSetListener(newOnLabelSetListener()); } + + // The item layout is inflated in the super ctor, so we can safely reference our views. + mPopupMenu = new PopupMenu(getContext(), mMenuButton); + mPopupMenu.inflate(R.menu.menu_timer_viewholder); + mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_delete: + mController.deleteTimer(); + return true; + } + return false; + } + }); } @Override @@ -102,6 +121,11 @@ public class TimerViewHolder extends BaseViewHolder { dialog.show(mFragmentManager, TAG_ADD_LABEL_DIALOG); } + @OnClick(R.id.menu) + void openMenu() { + mPopupMenu.show(); + } + private void bindLabel(String label) { if (!label.isEmpty()) { mLabel.setText(label); diff --git a/app/src/main/res/drawable/ic_overflow_24dp.xml b/app/src/main/res/drawable/ic_overflow_24dp.xml new file mode 100644 index 0000000..fff488b --- /dev/null +++ b/app/src/main/res/drawable/ic_overflow_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout-land/item_timer.xml b/app/src/main/res/layout-land/item_timer.xml index 790d963..33b2a78 100644 --- a/app/src/main/res/layout-land/item_timer.xml +++ b/app/src/main/res/layout-land/item_timer.xml @@ -46,6 +46,16 @@ android:layout_alignParentEnd="true" style="@style/TimerAction"/> + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_timer.xml b/app/src/main/res/layout/item_timer.xml index 853f16b..eb3bfe5 100644 --- a/app/src/main/res/layout/item_timer.xml +++ b/app/src/main/res/layout/item_timer.xml @@ -47,6 +47,16 @@ android:layout_alignParentEnd="true" style="@style/TimerAction"/> + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_timer_viewholder.xml b/app/src/main/res/menu/menu_timer_viewholder.xml new file mode 100644 index 0000000..348dc84 --- /dev/null +++ b/app/src/main/res/menu/menu_timer_viewholder.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file