diff options
author | Álvaro Brey <alvaro.brey@nextcloud.com> | 2023-03-08 15:14:16 +0300 |
---|---|---|
committer | Andy Scherzinger <info@andy-scherzinger.de> | 2024-01-21 18:49:31 +0300 |
commit | 578d99c0cf5ec00b34b3308f212d47e2f36aa754 (patch) | |
tree | a03885a66cd1ed9f0df0a2711379c17d6717d239 | |
parent | b0248e605a52cfb06d017e550d3433713b42173f (diff) |
wip: Copy note actions to overflow menu on each note actionfeat/actions-menu-redesign
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
15 files changed, 89 insertions, 22 deletions
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 4f0fb280..0f3675ca 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 class AppendToNoteActivity extends MainActivity { } 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 21c9058d..ccef4012 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.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; +import android.widget.Toast; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; @@ -764,6 +765,12 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A } @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) { updateToolbars(false); 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 19759320..ca0686c2 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 @@ package it.niedermann.owncloud.notes.main.items; 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.ColorInt; 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; @@ -99,6 +90,13 @@ public abstract class NoteViewHolder extends RecyclerView.ViewHolder { } } + 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 @@ -117,4 +115,4 @@ public abstract class NoteViewHolder extends RecyclerView.ViewHolder { } }; } -}
\ 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 84d705e5..00850dd9 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 class NoteViewGridHolder extends NoteViewHolder { 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 e6b6df49..3c4c5a1d 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 class NoteViewGridHolderOnlyTitle extends NoteViewHolder { 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 ba6fc1d2..b956d4f4 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 class NoteViewHolderWithExcerpt extends NoteViewHolder { 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 84426dba..c7e158ec 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 class NoteViewHolderWithoutExcerpt extends NoteViewHolder { 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 e34c005b..577c67c1 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 eb897def..df244a42 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.Menu; 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 class SingleNoteWidgetConfigurationActivity extends MainActivity { } }); } + + @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 00000000..481a28d7 --- /dev/null +++ b/app/src/main/res/drawable/ic_dots_vertical.xml @@ -0,0 +1 @@ +<!-- drawable/dots_vertical.xml --><vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#000000" android:pathData="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></vector>
\ 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 ecdea4ca..0139ce63 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" /> </FrameLayout> </LinearLayout> + + <com.google.android.material.button.MaterialButton + android:id="@+id/noteActions" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:contentDescription="@string/note_actions" + app:icon="@drawable/ic_dots_vertical" + app:iconTint="?android:textColorPrimary" + app:rippleColor="@color/fg_secondary" /> </LinearLayout> -</com.google.android.material.card.MaterialCardView>
\ No newline at end of file +</com.google.android.material.card.MaterialCardView> 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 f60e5292..2a7b1f3a 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" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/noteActions" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:contentDescription="@string/note_actions" + app:icon="@drawable/ic_dots_vertical" + app:iconTint="?android:textColorPrimary" + app:rippleColor="@color/fg_secondary" /> </LinearLayout> -</com.google.android.material.card.MaterialCardView>
\ No newline at end of file +</com.google.android.material.card.MaterialCardView> 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 384a674b..542df48f 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" /> </LinearLayout> </LinearLayout> + + <com.google.android.material.button.MaterialButton + android:id="@+id/noteActions" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:contentDescription="@string/note_actions" + app:icon="@drawable/ic_dots_vertical" + app:iconTint="?android:textColorPrimary" + app:rippleColor="@color/fg_secondary" /> + </LinearLayout> </FrameLayout> 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 f7e42863..874dd48b 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" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/noteActions" + style="@style/Widget.Material3.Button.IconButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:contentDescription="@string/note_actions" + app:icon="@drawable/ic_dots_vertical" + app:iconTint="?android:textColorPrimary" + app:rippleColor="@color/fg_secondary" /> + </LinearLayout> </FrameLayout> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c45fa5ba..810408f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -370,4 +370,5 @@ <string name="switch_to_plain_editing">Switch to plain editing</string> <string name="action_back">Back</string> <string name="user_agent" translatable="false">Mozilla/5.0 (Android) %1$s-android/%2$s</string> + <string name="note_actions">Note actions</string> </resources> |