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 1a235f4c1..9b07f2d4e 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 @@ -113,6 +113,7 @@ import it.niedermann.owncloud.notes.persistence.CapabilitiesWorker; import it.niedermann.owncloud.notes.persistence.entity.Account; import it.niedermann.owncloud.notes.persistence.entity.Note; +import it.niedermann.owncloud.notes.share.NoteShareActivity; import it.niedermann.owncloud.notes.shared.model.CategorySortingMethod; import it.niedermann.owncloud.notes.shared.model.IResponseCallback; import it.niedermann.owncloud.notes.shared.model.NavigationCategory; @@ -913,6 +914,16 @@ public void onNoteFavoriteClick(int position, View view) { }}); } + @Override + public void openShare(int position) { + if (adapter.getItem(position) instanceof Note note) { + mainViewModel.getCurrentAccount().observe(this, (account) -> { + final Intent intent = NoteShareActivity.getActivityStartIntent(note, account, this); + startActivity(intent); + }); + } + } + private void updateToolbars(boolean enableSearch) { activityBinding.searchBar.searchBarWrapper.setVisibility(enableSearch ? GONE : VISIBLE); activityBinding.searchToolbar.setVisibility(enableSearch ? VISIBLE : GONE); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java index 1f3d33d80..a80ac4325 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MultiSelectedActionModeCallback.java @@ -166,11 +166,7 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { currentAccount$.removeObservers(lifecycleOwner); executor.submit(() -> {{ final var note = mainViewModel.getFullNote(selection.get(0)); - Bundle bundle = new Bundle(); - bundle.putSerializable(NoteShareActivity.ARG_NOTE, note); - bundle.putSerializable(NoteShareActivity.ARG_ACCOUNT, account); - Intent intent = new Intent(mainActivity, NoteShareActivity.class); - intent.putExtras(bundle); + final Intent intent = NoteShareActivity.getActivityStartIntent(note, account, mainActivity); mainActivity.startActivity(intent); }}); }); 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 5ea7c6134..706c5bd26 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 @@ -6,6 +6,7 @@ */ package it.niedermann.owncloud.notes.main.items; +import static android.view.View.GONE; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode; @@ -23,6 +24,7 @@ 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.google.android.material.progressindicator.CircularProgressIndicator; import com.nextcloud.android.common.core.utils.DateFormatter; @@ -76,7 +78,7 @@ protected void bindStatus(CircularProgressIndicator noteSyncStatus, DBStatus sta protected void bindCategory(@NonNull Context context, @NonNull TextView noteCategory, boolean showCategory, @NonNull String category, int color) { if (!showCategory || category.isEmpty()) { - noteCategory.setVisibility(View.GONE); + noteCategory.setVisibility(GONE); } else { noteCategory.setText(category); @@ -112,6 +114,18 @@ protected void bindSearchableContent(@NonNull Context context, @NonNull TextView } } + protected void bindNoteSharedIcon(@NonNull Context context, boolean shared, @NonNull MaterialButton noteShareIcon, int color) { + if (shared) { + noteShareIcon.setVisibility(VISIBLE); + noteShareIcon.setOnClickListener(view -> noteClickListener.openShare(getLayoutPosition())); + } else { + noteShareIcon.setVisibility(GONE); + } + + final var util = BrandingUtil.of(color, context); + util.material.colorMaterialButtonContent(noteShareIcon, ColorRole.PRIMARY); + } + public abstract void showSwipe(float dX); @Nullable 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 dea52f6be..67c5c53d9 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 @@ -55,6 +55,7 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ bindModified(binding.noteModified, note.getModified()); bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt().replace(EXCERPT_LINE_SEPARATOR, "\n"), color); + bindNoteSharedIcon(context, note.isShared(), binding.noteShared, color); binding.noteExcerpt.setVisibility(TextUtils.isEmpty(note.getExcerpt()) ? GONE : VISIBLE); } 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 eb65fadbc..0699dd237 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 @@ -46,6 +46,7 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i bindFavorite(binding.noteFavorite, note.getFavorite()); bindModified(binding.noteModified, note.getModified()); bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color); + bindNoteSharedIcon(context, note.isShared(), binding.noteShared, color); } @Nullable diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewListHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewListHolder.java index 08bf2c847..771db1737 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewListHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewListHolder.java @@ -73,6 +73,8 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @ } else { bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt(), color); } + + bindNoteSharedIcon(context, note.isShared(), binding.noteShared, color); } @NonNull diff --git a/app/src/main/java/it/niedermann/owncloud/notes/share/NoteShareActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/share/NoteShareActivity.java index f7336dd38..a69cc8c0c 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/share/NoteShareActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/share/NoteShareActivity.java @@ -106,6 +106,16 @@ public class NoteShareActivity extends BrandedActivity implements ShareeListAdap private ActivityResultLauncher resultLauncher; private final List shares = Collections.synchronizedList(new ArrayList<>()); + public static Intent getActivityStartIntent(@NonNull Note note, @NonNull Account account, @NonNull Activity activity) { + Bundle bundle = new Bundle(); + bundle.putSerializable(NoteShareActivity.ARG_NOTE, note); + bundle.putSerializable(NoteShareActivity.ARG_ACCOUNT, account); + + Intent intent = new Intent(activity, NoteShareActivity.class); + intent.putExtras(bundle); + return intent; + } + public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 49c5e7cc8..0f1a4084f 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 @@ -12,4 +12,6 @@ public interface NoteClickListener { void onNoteClick(int position, View v); void onNoteFavoriteClick(int position, View v); + + void openShare(int position); } \ 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 bb6ca6e8e..2191dba0c 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 @@ -125,6 +125,22 @@ android:layout_marginEnd="@dimen/spacer_2x" tools:text="27.11." /> + + 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 ac5e4f7b4..363a4306e 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 @@ -114,6 +114,22 @@ android:layout_marginEnd="@dimen/spacer_2x" tools:text="27.11." /> + + 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 492941213..ac3482c03 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 @@ -111,6 +111,7 @@ + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 2b7ce7fcd..b42e9c41b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -26,6 +26,8 @@ 180dp 100dp + 18dp + 40dp 16dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f4bd215d..683eea1e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,6 +32,7 @@ Favorite Preview Share + Shared note Loading…