From 420c4e65cf875c03c0f4153304f5f90b524f1889 Mon Sep 17 00:00:00 2001 From: Niedermann IT-Dienstleistungen Date: Tue, 10 Apr 2018 17:16:16 +0200 Subject: [PATCH 1/3] #310 Swipe left favorite The swipe from right to left marks a note as favorite. Open question: how to handle the background color? It should be yellow when swiping from left and red when swiping from right. --- .../activity/NotesListViewActivity.java | 44 ++++++++++++------- .../owncloud/notes/model/ItemAdapter.java | 6 +-- .../layout/fragment_notes_list_note_item.xml | 6 +-- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 88e214c9..2c940bbc 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -381,23 +381,33 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap */ @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { - if (direction == ItemTouchHelper.LEFT || direction == ItemTouchHelper.RIGHT) { - final DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition()); - db.deleteNoteAndSync((dbNote).getId()); - adapter.remove(dbNote); - refreshLists(); - Log.v("Note", "Item deleted through swipe ----------------------------------------------"); - Snackbar.make(swipeRefreshLayout, R.string.action_note_deleted, Snackbar.LENGTH_LONG) - .setAction(R.string.action_undo, new View.OnClickListener() { - @Override - public void onClick(View v) { - db.addNoteAndSync(dbNote); - refreshLists(); - Snackbar.make(swipeRefreshLayout, R.string.action_note_restored, Snackbar.LENGTH_SHORT) - .show(); - } - }) - .show(); + switch(direction) { + case ItemTouchHelper.LEFT: { + final DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition()); + db.deleteNoteAndSync((dbNote).getId()); + adapter.remove(dbNote); + refreshLists(); + Log.v("Note", "Item deleted through swipe ----------------------------------------------"); + Snackbar.make(swipeRefreshLayout, R.string.action_note_deleted, Snackbar.LENGTH_LONG) + .setAction(R.string.action_undo, new View.OnClickListener() { + @Override + public void onClick(View v) { + db.addNoteAndSync(dbNote); + refreshLists(); + Snackbar.make(swipeRefreshLayout, R.string.action_note_restored, Snackbar.LENGTH_SHORT) + .show(); + } + }) + .show(); + break; + } + case ItemTouchHelper.RIGHT: { + final DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition()); + db.toggleFavorite(dbNote, null); + adapter.notifyItemChanged(viewHolder.getAdapterPosition()); + refreshLists(); + break; + } } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java index dba1aa7f..78240821 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java @@ -164,7 +164,7 @@ public class ItemAdapter extends RecyclerView.Adapter { public class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener { public View noteSwipeable; - ImageView noteDeleteLeft, noteDeleteRight; + ImageView noteFavoriteLeft, noteDeleteRight; TextView noteTitle; TextView noteCategory; TextView noteExcerpt; @@ -174,7 +174,7 @@ public class ItemAdapter extends RecyclerView.Adapter { private NoteViewHolder(View v) { super(v); this.noteSwipeable = v.findViewById(R.id.noteSwipeable); - this.noteDeleteLeft = v.findViewById(R.id.noteDeleteLeft); + this.noteFavoriteLeft = v.findViewById(R.id.noteFavoriteLeft); this.noteDeleteRight = v.findViewById(R.id.noteDeleteRight); this.noteTitle = v.findViewById(R.id.noteTitle); this.noteCategory = v.findViewById(R.id.noteCategory); @@ -196,7 +196,7 @@ public class ItemAdapter extends RecyclerView.Adapter { } public void showSwipeDelete(boolean left) { - noteDeleteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); + noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); } } diff --git a/app/src/main/res/layout/fragment_notes_list_note_item.xml b/app/src/main/res/layout/fragment_notes_list_note_item.xml index 9fdb3db0..ce8e8ddf 100644 --- a/app/src/main/res/layout/fragment_notes_list_note_item.xml +++ b/app/src/main/res/layout/fragment_notes_list_note_item.xml @@ -5,20 +5,20 @@ android:background="@color/bg_attention"> + android:src="@drawable/ic_star_white_24dp" /> Date: Sat, 21 Apr 2018 14:43:58 +0200 Subject: [PATCH 2/3] fix wiggle, colors, refactoring --- .../notes/android/activity/NotesListViewActivity.java | 7 ++----- .../it/niedermann/owncloud/notes/model/ItemAdapter.java | 5 ++++- app/src/main/res/layout/fragment_notes_list_note_item.xml | 1 + app/src/main/res/values/colors.xml | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 2c940bbc..23a0dcf9 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -1,7 +1,5 @@ package it.niedermann.owncloud.notes.android.activity; -import android.app.NotificationManager; -import android.app.PendingIntent; import android.app.SearchManager; import android.content.Intent; import android.content.SharedPreferences; @@ -404,7 +402,6 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap case ItemTouchHelper.RIGHT: { final DBNote dbNote = (DBNote) adapter.getItem(viewHolder.getAdapterPosition()); db.toggleFavorite(dbNote, null); - adapter.notifyItemChanged(viewHolder.getAdapterPosition()); refreshLists(); break; } @@ -414,8 +411,8 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap @Override public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { ItemAdapter.NoteViewHolder noteViewHolder = (ItemAdapter.NoteViewHolder) viewHolder; - // show delete icon on the right side - noteViewHolder.showSwipeDelete(dX>0); + // show swipe icon on the side + noteViewHolder.showSwipe(dX>0); // move only swipeable part of item (not leave-behind) getDefaultUIUtil().onDraw(c, recyclerView, noteViewHolder.noteSwipeable, dX, dY, actionState, isCurrentlyActive); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java index 78240821..2a12a176 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/model/ItemAdapter.java @@ -164,6 +164,7 @@ public class ItemAdapter extends RecyclerView.Adapter { public class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener { public View noteSwipeable; + View noteSwipeFrame; ImageView noteFavoriteLeft, noteDeleteRight; TextView noteTitle; TextView noteCategory; @@ -173,6 +174,7 @@ public class ItemAdapter extends RecyclerView.Adapter { private NoteViewHolder(View v) { super(v); + this.noteSwipeFrame = v.findViewById(R.id.noteSwipeFrame); this.noteSwipeable = v.findViewById(R.id.noteSwipeable); this.noteFavoriteLeft = v.findViewById(R.id.noteFavoriteLeft); this.noteDeleteRight = v.findViewById(R.id.noteDeleteRight); @@ -195,9 +197,10 @@ public class ItemAdapter extends RecyclerView.Adapter { return noteClickListener.onNoteLongClick(getAdapterPosition(), v); } - public void showSwipeDelete(boolean left) { + public void showSwipe(boolean left) { noteFavoriteLeft.setVisibility(left ? View.VISIBLE : View.INVISIBLE); noteDeleteRight.setVisibility(left ? View.INVISIBLE : View.VISIBLE); + noteSwipeFrame.setBackgroundResource(left ? R.color.bg_warning : R.color.bg_attention); } } diff --git a/app/src/main/res/layout/fragment_notes_list_note_item.xml b/app/src/main/res/layout/fragment_notes_list_note_item.xml index ce8e8ddf..8a73df82 100644 --- a/app/src/main/res/layout/fragment_notes_list_note_item.xml +++ b/app/src/main/res/layout/fragment_notes_list_note_item.xml @@ -1,5 +1,6 @@ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 78b2d8dc..7a595d97 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,6 +11,7 @@ #f3f3f3 #ffffff #662020 + #999920 #000000 #333333 #666666 From 21765daa75c1238841b1aa4c98cd93123d5af5b3 Mon Sep 17 00:00:00 2001 From: Niedermann IT-Dienstleistungen Date: Sun, 17 Jun 2018 20:52:49 +0200 Subject: [PATCH 3/3] #387 swipe to favorite Adjust colors --- app/src/main/res/values/colors.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 7a595d97..2b96420d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -10,8 +10,8 @@ #aa000000 #f3f3f3 #ffffff - #662020 - #999920 + #d40000 + #ffcc00 #000000 #333333 #666666