From d062624401aefcd211b448eea65645c1cf42bc94 Mon Sep 17 00:00:00 2001 From: chrissooo Date: Wed, 1 Jul 2026 22:13:46 +0200 Subject: [PATCH 1/2] Move simple Edit Button from top to right bottom corner to prevent cover note text Signed-off-by: chrissooo --- .../edit/SearchableBaseNoteFragment.java | 26 +++++++++++++++---- .../main/res/layout/fragment_note_preview.xml | 4 +-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java index 503fbc9d2..938e2bd07 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java @@ -75,11 +75,14 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override protected void onScroll(int scrollY, int oldScrollY) { super.onScroll(scrollY, oldScrollY); - if (isDirectEditEnabled()) { - // only show FAB if search is not active - if (getSearchNextButton() == null || getSearchNextButton().getVisibility() != View.VISIBLE) { - final ExtendedFloatingActionButton directFab = getDirectEditingButton(); + // only show FAB if search is not active + if (getSearchNextButton() == null || getSearchNextButton().getVisibility() != View.VISIBLE) { + final ExtendedFloatingActionButton directFab = getDirectEditingButton(); + final ExtendedFloatingActionButton normalFab = getNormalEditButton(); + if (isDirectEditEnabled()) { ExtendedFabUtil.toggleVisibilityOnScroll(directFab, scrollY, oldScrollY); + } else if (normalFab != null) { + ExtendedFabUtil.toggleVisibilityOnScroll(normalFab, scrollY, oldScrollY); } } } @@ -103,7 +106,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat } else { getDirectEditingButton().setVisibility(View.GONE); ExtendedFloatingActionButton edit = getNormalEditButton(); - if(edit!=null) { + if (edit != null) { + edit.setExtended(false); edit.setVisibility(View.VISIBLE); edit.setOnClickListener(v -> { if (listener != null) { @@ -285,6 +289,10 @@ public void onSaveInstanceState(@NonNull Bundle outState) { private void showSearchFabs() { ExtendedFabUtil.setExtendedFabVisibility(getDirectEditingButton(), false); + final ExtendedFloatingActionButton normalFab = getNormalEditButton(); + if (normalFab != null) { + ExtendedFabUtil.setExtendedFabVisibility(normalFab, false); + } final var next = getSearchNextButton(); final var prev = getSearchPrevButton(); if (prev != null) { @@ -304,6 +312,14 @@ private void hideSearchFabs() { if (next != null) { next.hide(); } + if (isDirectEditEnabled()) { + ExtendedFabUtil.setExtendedFabVisibility(getDirectEditingButton(), true); + } else { + final ExtendedFloatingActionButton normalFab = getNormalEditButton(); + if (normalFab != null) { + ExtendedFabUtil.setExtendedFabVisibility(normalFab, true); + } + } } private void jumpToOccurrence() { diff --git a/app/src/main/res/layout/fragment_note_preview.xml b/app/src/main/res/layout/fragment_note_preview.xml index 82aeadfc0..a362907c5 100644 --- a/app/src/main/res/layout/fragment_note_preview.xml +++ b/app/src/main/res/layout/fragment_note_preview.xml @@ -101,6 +101,6 @@ android:visibility="visible" app:backgroundTint="@color/defaultBrand" app:icon="@drawable/ic_edit_grey600_24dp" - app:layout_anchor="@+id/direct_editing" - app:layout_anchorGravity="center" /> + app:layout_anchor="@id/scrollView" + app:layout_anchorGravity="bottom|end" /> From 3ddb8ee0d96ce2535d2e52c4df674d047ec91d6f Mon Sep 17 00:00:00 2001 From: daniele-verducci Date: Fri, 28 Aug 2026 17:25:21 +0200 Subject: [PATCH 2/2] fix/3241-2852: fix crash due to context no more available Signed-off-by: daniele-verducci --- .../edit/SearchableBaseNoteFragment.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java index 938e2bd07..469c24825 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java @@ -50,7 +50,7 @@ public abstract class SearchableBaseNoteFragment extends BaseNoteFragment { private static final int delay = 50; // If the search string does not change after $delay ms, then the search task starts. private static final int shortStringDelay = 200; // A longer delay for short search strings. private static final int shortStringSize = 3; // The maximum length of a short search string. - private boolean directEditRemotelyAvailable = false; // avoid using this directly, instead use: isDirectEditEnabled() + private boolean directEditEnabled = false; @ColorInt private int color; @@ -79,7 +79,7 @@ protected void onScroll(int scrollY, int oldScrollY) { if (getSearchNextButton() == null || getSearchNextButton().getVisibility() != View.VISIBLE) { final ExtendedFloatingActionButton directFab = getDirectEditingButton(); final ExtendedFloatingActionButton normalFab = getNormalEditButton(); - if (isDirectEditEnabled()) { + if (directEditEnabled) { ExtendedFabUtil.toggleVisibilityOnScroll(directFab, scrollY, oldScrollY); } else if (normalFab != null) { ExtendedFabUtil.toggleVisibilityOnScroll(normalFab, scrollY, oldScrollY); @@ -90,8 +90,8 @@ protected void onScroll(int scrollY, int oldScrollY) { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - checkDirectEditingAvailable(); - if (isDirectEditEnabled()) { + directEditEnabled = checkDirectEditingAvailableAndEnabled(); + if (directEditEnabled) { ExtendedFloatingActionButton edit = getNormalEditButton(); if (edit != null) edit.setVisibility(View.GONE); final ExtendedFloatingActionButton directEditingButton = getDirectEditingButton(); @@ -118,21 +118,18 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat } } - private void checkDirectEditingAvailable() { + private boolean checkDirectEditingAvailableAndEnabled() { + // Check availability try { final SingleSignOnAccount ssoAccount = SingleAccountHelper.getCurrentSingleSignOnAccount(requireContext()); final Account localAccount = repo.getAccountByName(ssoAccount.name); - directEditRemotelyAvailable = localAccount != null && localAccount.isDirectEditingAvailable(); + if (localAccount == null || !localAccount.isDirectEditingAvailable()) + return false; } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) { Log.w(TAG, "checkDirectEditingAvailable: ", e); - directEditRemotelyAvailable = false; - } - } - - protected boolean isDirectEditEnabled() { - if (!directEditRemotelyAvailable) { return false; } + // Check if enabled in settings final var sp = PreferenceManager.getDefaultSharedPreferences(requireContext().getApplicationContext()); return sp.getBoolean(getString(R.string.pref_key_enable_direct_edit), true); } @@ -312,7 +309,7 @@ private void hideSearchFabs() { if (next != null) { next.hide(); } - if (isDirectEditEnabled()) { + if (directEditEnabled) { ExtendedFabUtil.setExtendedFabVisibility(getDirectEditingButton(), true); } else { final ExtendedFloatingActionButton normalFab = getNormalEditButton();