From 987dee4142758fd4f1d7e2b22f4be935a6b966cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Wed, 8 Mar 2023 13:14:16 +0100 Subject: [PATCH] wip: Copy note actions to overflow menu on each note action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Brey --- .../owncloud/notes/AppendToNoteActivity.java | 6 ++++++ .../owncloud/notes/main/MainActivity.java | 7 +++++++ .../notes/main/items/NoteViewHolder.java | 20 +++++++++---------- .../main/items/grid/NoteViewGridHolder.java | 3 ++- .../grid/NoteViewGridHolderOnlyTitle.java | 3 ++- .../items/list/NoteViewHolderWithExcerpt.java | 4 ++-- .../list/NoteViewHolderWithoutExcerpt.java | 3 ++- .../notes/shared/model/NoteClickListener.java | 4 +++- ...SingleNoteWidgetConfigurationActivity.java | 9 ++++++--- .../main/res/drawable/ic_dots_vertical.xml | 1 + .../layout/item_notes_list_note_item_grid.xml | 13 +++++++++++- ...m_notes_list_note_item_grid_only_title.xml | 13 +++++++++++- ...item_notes_list_note_item_with_excerpt.xml | 12 +++++++++++ ...m_notes_list_note_item_without_excerpt.xml | 12 +++++++++++ app/src/main/res/values/strings.xml | 1 + 15 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 app/src/main/res/drawable/ic_dots_vertical.xml diff --git a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java index 4f0fb2803..0f3675cac 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java @@ -58,4 +58,10 @@ public void onNoteClick(int position, View v) { } finish(); } + + @Override + public void onNoteActionsClick(int position, View v) { + // TODO + Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java index 479529f30..070b6e936 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java @@ -21,6 +21,7 @@ import android.text.TextUtils; import android.util.Log; import android.view.View; +import android.widget.Toast; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; @@ -771,6 +772,12 @@ public void onNoteFavoriteClick(int position, View view) { toggleLiveData.observe(this, (next) -> toggleLiveData.removeObservers(this)); } + @Override + public void onNoteActionsClick(int position, View v) { + // TODO + Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show(); + } + @Override public void onBackPressed() { if (activityBinding.searchToolbar.getVisibility() == VISIBLE) { diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java index 4baf154d2..3eca92b8c 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java @@ -2,14 +2,10 @@ import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; - import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode; import android.content.Context; -import android.text.SpannableString; import android.text.TextUtils; -import android.text.style.BackgroundColorSpan; -import android.text.style.ForegroundColorSpan; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -19,17 +15,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatImageView; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.recyclerview.selection.ItemDetailsLookup; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.button.MaterialButton; import com.google.android.material.chip.Chip; import com.nextcloud.android.common.ui.theme.utils.ColorRole; -import com.nextcloud.android.common.ui.util.PlatformThemeUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.branding.BrandingUtil; @@ -98,6 +89,13 @@ protected void bindSearchableContent(@NonNull Context context, @NonNull TextView } } + protected void bindActions(@NonNull MaterialButton actionsButton, int color) { + final BrandingUtil util = BrandingUtil.of(color, actionsButton.getContext()); + util.material.colorMaterialButtonText(actionsButton); + util.material.colorMaterialTextButton(actionsButton); + actionsButton.setOnClickListener(view -> noteClickListener.onNoteActionsClick(getLayoutPosition(), view)); + } + public abstract void showSwipe(boolean left); @Nullable @@ -116,4 +114,4 @@ public Long getSelectionKey() { } }; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java index 84d705e58..00850dd93 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java @@ -49,10 +49,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt().replace(EXCERPT_LINE_SEPARATOR, "\n"), color); binding.noteExcerpt.setVisibility(TextUtils.isEmpty(note.getExcerpt()) ? GONE : VISIBLE); + bindActions(binding.noteActions, color); } @Nullable public View getNoteSwipeable() { return null; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java index e6b6df499..3c4c5a1db 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java @@ -38,10 +38,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i bindStatus(binding.noteStatus, note.getStatus(), color); bindFavorite(binding.noteFavorite, note.getFavorite()); bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); + bindActions(binding.noteActions, color); } @Nullable public View getNoteSwipeable() { return null; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java index ba6fc1d28..b956d4f4d 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java @@ -1,6 +1,5 @@ package it.niedermann.owncloud.notes.main.items.list; -import android.content.Context; import android.view.View; import androidx.annotation.ColorInt; @@ -39,10 +38,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt(), color); + bindActions(binding.noteActions, color); } @NonNull public View getNoteSwipeable() { return binding.noteSwipeable; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java index 84426dba0..c7e158ec4 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java @@ -36,10 +36,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i bindStatus(binding.noteStatus, note.getStatus(), color); bindFavorite(binding.noteFavorite, note.getFavorite()); bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); + bindActions(binding.noteActions, color); } @NonNull public View getNoteSwipeable() { return binding.noteSwipeable; } -} \ No newline at end of file +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/NoteClickListener.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/NoteClickListener.java index e34c005b6..577c67c1a 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/model/NoteClickListener.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/model/NoteClickListener.java @@ -6,4 +6,6 @@ public interface NoteClickListener { void onNoteClick(int position, View v); void onNoteFavoriteClick(int position, View v); -} \ No newline at end of file + + void onNoteActionsClick(int position, View v); +} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java index eb897def2..df244a423 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java @@ -9,9 +9,6 @@ import android.view.View; import android.widget.Toast; -import androidx.appcompat.widget.Toolbar; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - import it.niedermann.owncloud.notes.NotesApplication; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.exception.ExceptionHandler; @@ -73,4 +70,10 @@ public void onNoteClick(int position, View v) { } }); } + + @Override + public void onNoteActionsClick(int position, View v) { + // TODO + Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/res/drawable/ic_dots_vertical.xml b/app/src/main/res/drawable/ic_dots_vertical.xml new file mode 100644 index 000000000..481a28d72 --- /dev/null +++ b/app/src/main/res/drawable/ic_dots_vertical.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notes_list_note_item_grid.xml b/app/src/main/res/layout/item_notes_list_note_item_grid.xml index d9325f195..e1bdfb26b 100644 --- a/app/src/main/res/layout/item_notes_list_note_item_grid.xml +++ b/app/src/main/res/layout/item_notes_list_note_item_grid.xml @@ -102,5 +102,16 @@ tools:text="@tools:sample/lorem/random" /> + + - \ No newline at end of file + diff --git a/app/src/main/res/layout/item_notes_list_note_item_grid_only_title.xml b/app/src/main/res/layout/item_notes_list_note_item_grid_only_title.xml index f60e5292a..2a7b1f3a9 100644 --- a/app/src/main/res/layout/item_notes_list_note_item_grid_only_title.xml +++ b/app/src/main/res/layout/item_notes_list_note_item_grid_only_title.xml @@ -56,5 +56,16 @@ android:textColor="@color/fg_default" tools:maxLength="50" tools:text="@tools:sample/lorem/random" /> + + - \ No newline at end of file + diff --git a/app/src/main/res/layout/item_notes_list_note_item_with_excerpt.xml b/app/src/main/res/layout/item_notes_list_note_item_with_excerpt.xml index 384a674bb..542df48f8 100644 --- a/app/src/main/res/layout/item_notes_list_note_item_with_excerpt.xml +++ b/app/src/main/res/layout/item_notes_list_note_item_with_excerpt.xml @@ -116,6 +116,18 @@ tools:text="@tools:sample/lorem/random" /> + + + diff --git a/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml b/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml index f7e428635..874dd48b2 100644 --- a/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml +++ b/app/src/main/res/layout/item_notes_list_note_item_without_excerpt.xml @@ -88,6 +88,18 @@ android:textSize="@dimen/secondary_font_size" tools:maxLength="15" tools:text="@tools:sample/lorem/random" /> + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87ffff577..8fc414f6e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -370,4 +370,5 @@ Switch to plain editing Back Mozilla/5.0 (Android) %1$s-android/%2$s + Note actions