diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-04-02 20:58:50 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-04-02 20:58:50 +0300 |
commit | f31a1756e4bfb3cb2b6bbcf5f6cf5fd1f2133699 (patch) | |
tree | 696839778181af70b71a5facd8e6364a53692b22 /app/src/main/java/it/niedermann | |
parent | ec775e342f196e4c1e38dc7813979afab71a92e1 (diff) |
Merge scrollY logic from master
Diffstat (limited to 'app/src/main/java/it/niedermann')
3 files changed, 43 insertions, 25 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java index a706c667..47054364 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java @@ -93,30 +93,9 @@ public abstract class BaseNoteFragment extends BrandedFragment implements Catego db = NotesDatabase.getInstance(context); } - @Nullable - protected abstract ScrollView getScrollView(); - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - final ScrollView scrollView = getScrollView(); - if (scrollView != null) { - scrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { - if (scrollView.getScrollY() > 0) { - note.setScrollY(scrollView.getScrollY()); - } - }); - } - } - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - final ScrollView scrollView = getScrollView(); - if (!isNew && scrollView != null) { - this.originalScrollY = note.getScrollY(); - scrollView.post(() -> scrollView.scrollTo(0, originalScrollY)); - } + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); new Thread(() -> { try { SingleSignOnAccount ssoAccount = SingleAccountHelper.getCurrentSingleSignOnAccount(requireContext().getApplicationContext()); @@ -172,6 +151,28 @@ public abstract class BaseNoteFragment extends BrandedFragment implements Catego setHasOptionsMenu(true); } + @Nullable + protected abstract ScrollView getScrollView(); + + protected abstract void scrollToY(int scrollY); + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + this.originalScrollY = note.getScrollY(); + scrollToY(originalScrollY); + final ScrollView scrollView = getScrollView(); + if (scrollView != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + scrollView.setOnScrollChangeListener((View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) -> { + if (scrollY > 0) { + note.setScrollY(scrollY); + } + }); + } + } + } + @Override public void onResume() { super.onResume(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java index 1c821431..2ca2d436 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java @@ -79,6 +79,13 @@ public class NoteEditFragment extends SearchableBaseNoteFragment { } @Override + protected void scrollToY(int y) { + if (binding != null) { + binding.scrollView.post(() -> binding.scrollView.setScrollY(y)); + } + } + + @Override protected Layout getLayout() { binding.editContent.onPreDraw(); return binding.editContent.getLayout(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java index 67507b1b..ed918bd1 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java @@ -60,6 +60,17 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O } @Override + protected synchronized void scrollToY(int y) { + this.setScrollY = () -> { + if (binding != null) { + Log.v("SCROLL set (preview) to", y + ""); + binding.scrollView.post(() -> binding.scrollView.setScrollY(y)); + } + setScrollY = null; + }; + } + + @Override protected FloatingActionButton getSearchNextButton() { return binding.searchNext; } @@ -89,7 +100,6 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O binding.swiperefreshlayout.setOnRefreshListener(this); registerInternalNoteLinkHandler(); - binding.singleNoteContent.setMarkdownString(note.getContent(), setScrollY); binding.singleNoteContent.setMovementMethod(LinkMovementMethod.getInstance()); final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(requireActivity().getApplicationContext()); @@ -104,7 +114,7 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O noteLoaded = true; registerInternalNoteLinkHandler(); changedText = note.getContent(); - binding.singleNoteContent.setMarkdownString(note.getContent()); + binding.singleNoteContent.setMarkdownString(note.getContent(), setScrollY); binding.singleNoteContent.getMarkdownString().observe(requireActivity(), (newContent) -> { changedText = newContent.toString(); saveNote(null); |