diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 896f8034d..24a4c9651 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -271,9 +271,6 @@
-
()
- val error = _error.toLiveData()
+ val error = _error.toSingleEvent()
protected fun postInProgress(isInProgress: Boolean) {
_isInProgress.postValue(isInProgress)
@@ -35,17 +35,6 @@ open class BaseProgressViewModel(
_error.postValue(error)
}
- protected fun withResult(doWork: ((error: String) -> Unit) -> Commands) {
- viewModelScope.launch(dispatcherProvider.default()) {
- postInProgress(true)
- val commands = runBlocking {
- doWork.invoke { postError(it) }
- }
- postInProgress(false)
- postCommand(commands)
- }
- }
-
protected fun withProgressSuspend(doWork: suspend ((error: String) -> Unit) -> Unit) {
viewModelScope.launch(dispatcherProvider.default()) {
postInProgress(true)
diff --git a/app/src/main/java/com/elementary/tasks/globalsearch/GlobalSearchViewModel.kt b/app/src/main/java/com/elementary/tasks/globalsearch/GlobalSearchViewModel.kt
index 83e288d3b..1d94985c0 100644
--- a/app/src/main/java/com/elementary/tasks/globalsearch/GlobalSearchViewModel.kt
+++ b/app/src/main/java/com/elementary/tasks/globalsearch/GlobalSearchViewModel.kt
@@ -6,7 +6,7 @@ import com.elementary.tasks.birthdays.preview.PreviewBirthdayFragment
import com.elementary.tasks.core.arch.BaseProgressViewModel
import com.elementary.tasks.googletasks.preview.PreviewGoogleTaskFragment
import com.elementary.tasks.groups.create.EditGroupFragment
-import com.elementary.tasks.notes.preview.NotePreviewActivity
+import com.elementary.tasks.notes.preview.PreviewNoteFragment
import com.elementary.tasks.places.create.EditPlaceFragment
import com.elementary.tasks.reminder.preview.PreviewReminderFragment
import com.github.naz013.common.datetime.DateTimeManager
@@ -102,7 +102,8 @@ class GlobalSearchViewModel(
this == EditGroupFragment::class.java ||
this == EditPlaceFragment::class.java ||
this == PreviewGoogleTaskFragment::class.java ||
- this == PreviewReminderFragment::class.java
+ this == PreviewReminderFragment::class.java ||
+ this == PreviewNoteFragment::class.java
}
private fun Class<*>.destinationId(): Int? {
@@ -127,6 +128,10 @@ class GlobalSearchViewModel(
R.id.previewReminderFragment
}
+ this == PreviewNoteFragment::class.java -> {
+ R.id.previewNoteFragment
+ }
+
else -> null
}
}
@@ -193,7 +198,7 @@ class GlobalSearchViewModel(
ObjectType.GROUP -> EditGroupFragment::class.java
ObjectType.PLACE -> EditPlaceFragment::class.java
ObjectType.GOOGLE_TASK -> PreviewGoogleTaskFragment::class.java
- ObjectType.NOTE -> NotePreviewActivity::class.java
+ ObjectType.NOTE -> PreviewNoteFragment::class.java
ObjectType.BIRTHDAY -> PreviewBirthdayFragment::class.java
ObjectType.REMINDER -> PreviewReminderFragment::class.java
}
diff --git a/app/src/main/java/com/elementary/tasks/home/HomeFragment.kt b/app/src/main/java/com/elementary/tasks/home/HomeFragment.kt
index d0381d207..8037c9cf2 100644
--- a/app/src/main/java/com/elementary/tasks/home/HomeFragment.kt
+++ b/app/src/main/java/com/elementary/tasks/home/HomeFragment.kt
@@ -23,7 +23,6 @@ import com.elementary.tasks.home.scheduleview.ScheduleAdapter
import com.elementary.tasks.home.scheduleview.ScheduleHomeViewModel
import com.elementary.tasks.home.scheduleview.ScheduleModel
import com.elementary.tasks.navigation.topfragment.BaseSearchableFragment
-import com.elementary.tasks.notes.preview.NotePreviewActivity
import com.elementary.tasks.other.PrivacyPolicyActivity
import com.elementary.tasks.whatsnew.WhatsNewManager
import com.github.naz013.analytics.Screen
@@ -32,7 +31,6 @@ import com.github.naz013.common.intent.IntentKeys
import com.github.naz013.domain.Reminder
import com.github.naz013.feature.common.livedata.nonNullObserve
import com.github.naz013.ui.common.fragment.startActivity
-import com.github.naz013.ui.common.login.LoginApi
import com.github.naz013.ui.common.view.applyTopInsets
import com.github.naz013.ui.common.view.gone
import com.github.naz013.ui.common.view.visible
@@ -68,8 +66,13 @@ class HomeFragment :
showEventTypeSelectionDialog(time)
},
onNoteClickListener = { _, id ->
- LoginApi.openLogged(requireContext(), NotePreviewActivity::class.java) {
- putExtra(IntentKeys.INTENT_ID, id)
+ navigate {
+ navigate(
+ R.id.previewNoteFragment,
+ Bundle().apply {
+ putString(IntentKeys.INTENT_ID, id)
+ }
+ )
}
},
onGoogleTaskClickListener = { _, id ->
diff --git a/app/src/main/java/com/elementary/tasks/home/ScreenDestinationIdResolver.kt b/app/src/main/java/com/elementary/tasks/home/ScreenDestinationIdResolver.kt
index eb27057b6..7635f6d98 100644
--- a/app/src/main/java/com/elementary/tasks/home/ScreenDestinationIdResolver.kt
+++ b/app/src/main/java/com/elementary/tasks/home/ScreenDestinationIdResolver.kt
@@ -12,6 +12,7 @@ import com.github.naz013.navigation.EditReminderScreen
import com.github.naz013.navigation.SettingsScreen
import com.github.naz013.navigation.ViewBirthdayScreen
import com.github.naz013.navigation.ViewGoogleTaskScreen
+import com.github.naz013.navigation.ViewNoteScreen
import com.github.naz013.navigation.ViewReminderScreen
class ScreenDestinationIdResolver {
@@ -29,6 +30,7 @@ class ScreenDestinationIdResolver {
is EditGoogleTaskScreen -> R.id.editGoogleTaskFragment
is ViewReminderScreen -> R.id.previewReminderFragment
is EditReminderScreen -> R.id.buildReminderFragment
+ is ViewNoteScreen -> R.id.previewNoteFragment
}
}
}
diff --git a/app/src/main/java/com/elementary/tasks/navigation/ActivityNavigationDispatcher.kt b/app/src/main/java/com/elementary/tasks/navigation/ActivityNavigationDispatcher.kt
index b2492cd6e..1da5c7ca2 100644
--- a/app/src/main/java/com/elementary/tasks/navigation/ActivityNavigationDispatcher.kt
+++ b/app/src/main/java/com/elementary/tasks/navigation/ActivityNavigationDispatcher.kt
@@ -4,7 +4,6 @@ import android.content.Context
import android.os.Bundle
import com.elementary.tasks.home.BottomNavActivity
import com.elementary.tasks.notes.create.CreateNoteActivity
-import com.elementary.tasks.notes.preview.NotePreviewActivity
import com.github.naz013.logging.Logger
import com.github.naz013.navigation.ActivityDestination
import com.github.naz013.navigation.DeepLinkDestination
@@ -14,6 +13,7 @@ import com.github.naz013.navigation.EditGoogleTaskScreen
import com.github.naz013.navigation.EditReminderScreen
import com.github.naz013.navigation.ViewBirthdayScreen
import com.github.naz013.navigation.ViewGoogleTaskScreen
+import com.github.naz013.navigation.ViewNoteScreen
import com.github.naz013.navigation.ViewReminderScreen
import com.github.naz013.ui.common.context.buildIntent
import com.github.naz013.ui.common.login.LoginApi
@@ -91,6 +91,13 @@ class ActivityNavigationDispatcher(
}
}
+ DestinationScreen.NotePreview -> {
+ val deepLinkDestination = ViewNoteScreen(bundle)
+ Bundle(bundle).apply {
+ putParcelable(DeepLinkDestination.KEY, deepLinkDestination)
+ }
+ }
+
else -> bundle
}
}
@@ -99,7 +106,7 @@ class ActivityNavigationDispatcher(
return when (destinationScreen) {
DestinationScreen.ReminderPreview -> BottomNavActivity::class.java
DestinationScreen.ReminderCreate -> BottomNavActivity::class.java
- DestinationScreen.NotePreview -> NotePreviewActivity::class.java
+ DestinationScreen.NotePreview -> BottomNavActivity::class.java
DestinationScreen.NoteCreate -> CreateNoteActivity::class.java
DestinationScreen.BirthdayPreview -> BottomNavActivity::class.java
DestinationScreen.BirthdayCreate -> BottomNavActivity::class.java
diff --git a/app/src/main/java/com/elementary/tasks/notes/KoinModule.kt b/app/src/main/java/com/elementary/tasks/notes/KoinModule.kt
index cb92b65e5..d18e7496f 100644
--- a/app/src/main/java/com/elementary/tasks/notes/KoinModule.kt
+++ b/app/src/main/java/com/elementary/tasks/notes/KoinModule.kt
@@ -6,7 +6,7 @@ import com.elementary.tasks.notes.create.CreateNoteViewModel
import com.elementary.tasks.notes.list.NotesViewModel
import com.elementary.tasks.notes.list.archived.ArchivedNotesViewModel
import com.elementary.tasks.notes.preview.ImagesSingleton
-import com.elementary.tasks.notes.preview.NotePreviewViewModel
+import com.elementary.tasks.notes.preview.PreviewNoteViewModel
import com.elementary.tasks.notes.preview.reminders.ReminderToUiNoteAttachedReminder
import com.elementary.tasks.notes.work.DeleteNoteBackupWorker
import com.elementary.tasks.notes.work.NoteSingleBackupWorker
@@ -75,7 +75,7 @@ val noteModule = module {
)
}
viewModel { (id: String) ->
- NotePreviewViewModel(
+ PreviewNoteViewModel(
id,
get(),
get(),
diff --git a/app/src/main/java/com/elementary/tasks/notes/list/NotesFragment.kt b/app/src/main/java/com/elementary/tasks/notes/list/NotesFragment.kt
index eba7622e9..21ae03d08 100644
--- a/app/src/main/java/com/elementary/tasks/notes/list/NotesFragment.kt
+++ b/app/src/main/java/com/elementary/tasks/notes/list/NotesFragment.kt
@@ -16,9 +16,7 @@ import com.elementary.tasks.core.data.ui.note.UiNoteList
import com.elementary.tasks.core.interfaces.ActionsListener
import com.elementary.tasks.core.utils.ListActions
import com.elementary.tasks.core.utils.TelephonyUtil
-import com.github.naz013.ui.common.Dialogues
import com.elementary.tasks.core.utils.ui.SearchMenuHandler
-import com.github.naz013.ui.common.view.ViewUtils
import com.elementary.tasks.core.views.recyclerview.SpaceBetweenItemDecoration
import com.elementary.tasks.core.views.recyclerview.StaggeredSpaceItemDecoration
import com.elementary.tasks.databinding.FragmentNotesBinding
@@ -26,7 +24,6 @@ import com.elementary.tasks.navigation.topfragment.BaseTopToolbarFragment
import com.elementary.tasks.notes.create.CreateNoteActivity
import com.elementary.tasks.notes.preview.ImagePreviewActivity
import com.elementary.tasks.notes.preview.ImagesSingleton
-import com.elementary.tasks.notes.preview.NotePreviewActivity
import com.github.naz013.analytics.Screen
import com.github.naz013.analytics.ScreenUsedEvent
import com.github.naz013.common.Permissions
@@ -35,11 +32,12 @@ import com.github.naz013.domain.note.NoteWithImages
import com.github.naz013.feature.common.android.SystemServiceProvider
import com.github.naz013.feature.common.livedata.nonNullObserve
import com.github.naz013.logging.Logger
+import com.github.naz013.ui.common.Dialogues
import com.github.naz013.ui.common.context.startActivity
import com.github.naz013.ui.common.fragment.dp2px
-import com.github.naz013.ui.common.fragment.startActivity
import com.github.naz013.ui.common.fragment.toast
import com.github.naz013.ui.common.login.LoginApi
+import com.github.naz013.ui.common.view.ViewUtils
import com.github.naz013.ui.common.view.applyBottomInsets
import com.github.naz013.ui.common.view.gone
import com.github.naz013.ui.common.view.visible
@@ -321,8 +319,13 @@ class NotesFragment : BaseTopToolbarFragment() {
override fun getTitle(): String = getString(R.string.notes)
private fun previewNote(id: String?) {
- startActivity(NotePreviewActivity::class.java) {
- putExtra(IntentKeys.INTENT_ID, id)
+ navigate {
+ navigate(
+ R.id.previewNoteFragment,
+ Bundle().apply {
+ putString(IntentKeys.INTENT_ID, id)
+ }
+ )
}
}
diff --git a/app/src/main/java/com/elementary/tasks/notes/list/archived/ArchivedNotesFragment.kt b/app/src/main/java/com/elementary/tasks/notes/list/archived/ArchivedNotesFragment.kt
index fc0d6d586..6a8e19b05 100644
--- a/app/src/main/java/com/elementary/tasks/notes/list/archived/ArchivedNotesFragment.kt
+++ b/app/src/main/java/com/elementary/tasks/notes/list/archived/ArchivedNotesFragment.kt
@@ -16,9 +16,7 @@ import com.elementary.tasks.core.data.ui.note.UiNoteList
import com.elementary.tasks.core.interfaces.ActionsListener
import com.elementary.tasks.core.utils.ListActions
import com.elementary.tasks.core.utils.TelephonyUtil
-import com.github.naz013.ui.common.Dialogues
import com.elementary.tasks.core.utils.ui.SearchMenuHandler
-import com.github.naz013.ui.common.view.ViewUtils
import com.elementary.tasks.core.views.recyclerview.SpaceBetweenItemDecoration
import com.elementary.tasks.core.views.recyclerview.StaggeredSpaceItemDecoration
import com.elementary.tasks.databinding.FragmentNotesBinding
@@ -28,7 +26,6 @@ import com.elementary.tasks.notes.list.NoteSortProcessor
import com.elementary.tasks.notes.list.NotesRecyclerAdapter
import com.elementary.tasks.notes.preview.ImagePreviewActivity
import com.elementary.tasks.notes.preview.ImagesSingleton
-import com.elementary.tasks.notes.preview.NotePreviewActivity
import com.github.naz013.analytics.Screen
import com.github.naz013.analytics.ScreenUsedEvent
import com.github.naz013.common.intent.IntentKeys
@@ -36,10 +33,12 @@ import com.github.naz013.domain.note.NoteWithImages
import com.github.naz013.feature.common.android.SystemServiceProvider
import com.github.naz013.feature.common.livedata.nonNullObserve
import com.github.naz013.logging.Logger
+import com.github.naz013.ui.common.Dialogues
import com.github.naz013.ui.common.fragment.dp2px
import com.github.naz013.ui.common.fragment.startActivity
import com.github.naz013.ui.common.fragment.toast
import com.github.naz013.ui.common.login.LoginApi
+import com.github.naz013.ui.common.view.ViewUtils
import com.github.naz013.ui.common.view.gone
import com.github.naz013.ui.common.view.visible
import com.github.naz013.ui.common.view.visibleGone
@@ -314,8 +313,11 @@ class ArchivedNotesFragment : BaseToolbarFragment() {
override fun getTitle(): String = getString(R.string.notes_archive)
private fun previewNote(id: String?) {
- startActivity(NotePreviewActivity::class.java) {
- putExtra(IntentKeys.INTENT_ID, id)
+ navigate {
+ navigate(
+ R.id.previewNoteFragment,
+ Bundle().apply { putString(IntentKeys.INTENT_ID, id) }
+ )
}
}
}
diff --git a/app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewActivity.kt b/app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteFragment.kt
similarity index 70%
rename from app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewActivity.kt
rename to app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteFragment.kt
index e08bf0ba9..f8e9867fb 100644
--- a/app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewActivity.kt
+++ b/app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteFragment.kt
@@ -1,11 +1,10 @@
package com.elementary.tasks.notes.preview
import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
import android.util.TypedValue
+import android.view.LayoutInflater
import android.view.View
-import androidx.activity.enableEdgeToEdge
+import android.view.ViewGroup
import androidx.core.view.get
import androidx.recyclerview.widget.LinearLayoutManager
import com.elementary.tasks.AdsProvider
@@ -14,12 +13,12 @@ import com.elementary.tasks.core.data.Commands
import com.elementary.tasks.core.data.ui.note.UiNoteImage
import com.elementary.tasks.core.data.ui.note.UiNotePreview
import com.elementary.tasks.core.interfaces.ActionsListener
-import com.elementary.tasks.core.os.PermissionFlowDelegateImpl
import com.elementary.tasks.core.utils.BuildParams
import com.elementary.tasks.core.utils.ListActions
import com.elementary.tasks.core.utils.TelephonyUtil
import com.elementary.tasks.core.utils.ui.tintOverflowButton
-import com.elementary.tasks.databinding.ActivityNotePreviewBinding
+import com.elementary.tasks.databinding.FragmentNotePreviewBinding
+import com.elementary.tasks.navigation.toolbarfragment.BaseNonToolbarFragment
import com.elementary.tasks.notes.create.CreateNoteActivity
import com.elementary.tasks.notes.preview.carousel.ImagesCarouselAdapter
import com.elementary.tasks.notes.preview.reminders.AttachedRemindersAdapter
@@ -28,16 +27,14 @@ import com.github.naz013.common.Permissions
import com.github.naz013.common.intent.IntentKeys
import com.github.naz013.domain.note.NoteWithImages
import com.github.naz013.feature.common.livedata.nonNullObserve
-import com.github.naz013.ui.common.Dialogues
-import com.github.naz013.ui.common.activity.BindingActivity
-import com.github.naz013.ui.common.activity.toast
-import com.github.naz013.ui.common.context.colorOf
-import com.github.naz013.ui.common.context.startActivity
+import com.github.naz013.logging.Logger
+import com.github.naz013.ui.common.fragment.colorOf
+import com.github.naz013.ui.common.fragment.startActivity
+import com.github.naz013.ui.common.fragment.toast
import com.github.naz013.ui.common.isAlmostTransparent
import com.github.naz013.ui.common.isColorDark
import com.github.naz013.ui.common.login.LoginApi
import com.github.naz013.ui.common.view.ViewUtils
-import com.github.naz013.ui.common.view.applyBottomInsets
import com.github.naz013.ui.common.view.applyTopInsets
import com.github.naz013.ui.common.view.gone
import com.github.naz013.ui.common.view.visible
@@ -47,39 +44,42 @@ import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf
import java.io.File
-class NotePreviewActivity : BindingActivity() {
-
- private var isBgDark = false
+class PreviewNoteFragment : BaseNonToolbarFragment() {
+ private val imagesSingleton by inject()
+ private val viewModel by viewModel { parametersOf(idFromIntent()) }
+ private val adsProvider = AdsProvider()
private val adapter = ImagesCarouselAdapter()
private val attachedRemindersAdapter = AttachedRemindersAdapter(
onEdit = { editReminder(it.id) },
onDetach = { viewModel.detachReminder(it.id) }
)
- private val viewModel by viewModel { parametersOf(getId()) }
- private val dialogues by inject()
+ private fun idFromIntent(): String = arguments?.getString(IntentKeys.INTENT_ID) ?: ""
- private val uiHandler = Handler(Looper.getMainLooper())
-
- private val imagesSingleton by inject()
- private val adsProvider = AdsProvider()
- private val permissionFlowDelegate = PermissionFlowDelegateImpl(this)
-
- override fun inflateBinding() = ActivityNotePreviewBinding.inflate(layoutInflater)
+ override fun inflate(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): FragmentNotePreviewBinding {
+ return FragmentNotePreviewBinding.inflate(inflater, container, false)
+ }
override fun onCreate(savedInstanceState: Bundle?) {
- enableEdgeToEdge()
super.onCreate(savedInstanceState)
+ viewModel.isBgDark = isDark
+ Logger.i(TAG, "Opening the note preview screen for id: ${Logger.data(idFromIntent())}")
+ }
- binding.scrollView.applyBottomInsets()
- isBgDark = isDarkMode
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
initActionBar()
updateTextColors()
initImagesList()
initReminderCard()
initViewModel()
loadAds()
+ initViewModel()
}
private fun loadAds() {
@@ -97,7 +97,27 @@ class NotePreviewActivity : BindingActivity() {
}
}
- private fun getId() = intent.getStringExtra(IntentKeys.INTENT_ID) ?: ""
+ override fun onDestroy() {
+ super.onDestroy()
+ adsProvider.destroy()
+ adapter.actionsListener = null
+ }
+
+ override fun onPause() {
+ super.onPause()
+ viewModel.getStatusBarColor()?.also {
+ activity?.window?.statusBarColor = it
+ activity?.window?.navigationBarColor = it
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ viewModel.note.value?.backgroundColor?.also {
+ activity?.window?.statusBarColor = it
+ activity?.window?.navigationBarColor = it
+ }
+ }
private fun initViewModel() {
lifecycle.addObserver(viewModel)
@@ -105,7 +125,7 @@ class NotePreviewActivity : BindingActivity() {
viewModel.reminders.nonNullObserve(this) { showReminders(it) }
viewModel.result.nonNullObserve(this) { commands ->
when (commands) {
- Commands.DELETED -> closeWindow()
+ Commands.DELETED -> moveBack()
else -> {
}
}
@@ -116,7 +136,7 @@ class NotePreviewActivity : BindingActivity() {
private fun initReminderCard() {
binding.attachedRemindersList.layoutManager = LinearLayoutManager(
- this,
+ context,
LinearLayoutManager.HORIZONTAL,
false
)
@@ -124,16 +144,14 @@ class NotePreviewActivity : BindingActivity() {
}
private fun editReminder(id: String) {
- // TODO Add navigation to fragment
-// LoginApi.openLogged(this, BuildReminderActivity::class.java) {
-// putExtra(IntentKeys.INTENT_ID, id)
-// }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- adsProvider.destroy()
- adapter.actionsListener = null
+ navigate {
+ navigate(
+ R.id.buildReminderFragment,
+ Bundle().apply {
+ putString(IntentKeys.INTENT_ID, id)
+ }
+ )
+ }
}
private fun initImagesList() {
@@ -163,7 +181,7 @@ class NotePreviewActivity : BindingActivity() {
private fun initActionBar() {
binding.appBar.applyTopInsets()
binding.toolbar.title = ""
- binding.toolbar.setNavigationOnClickListener { closeWindow() }
+ binding.toolbar.setNavigationOnClickListener { moveBack() }
binding.toolbar.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.action_share -> {
@@ -199,8 +217,8 @@ class NotePreviewActivity : BindingActivity() {
}
private fun updateIcons() {
- binding.toolbar.navigationIcon = ViewUtils.backIcon(this, isBgDark)
- binding.toolbar.tintOverflowButton(isBgDark)
+ binding.toolbar.navigationIcon = ViewUtils.backIcon(requireContext(), viewModel.isBgDark)
+ binding.toolbar.tintOverflowButton(viewModel.isBgDark)
}
private fun updateMenu(isArchived: Boolean = false) {
@@ -210,8 +228,20 @@ class NotePreviewActivity : BindingActivity() {
getString(R.string.notes_move_to_archive)
}
binding.toolbar.menu.also { menu ->
- ViewUtils.tintMenuIcon(this, menu, 0, R.drawable.ic_fluent_edit, isBgDark)
- ViewUtils.tintMenuIcon(this, menu, 1, R.drawable.ic_fluent_heart, isBgDark)
+ ViewUtils.tintMenuIcon(
+ requireContext(),
+ menu,
+ 0,
+ R.drawable.ic_fluent_edit,
+ viewModel.isBgDark
+ )
+ ViewUtils.tintMenuIcon(
+ requireContext(),
+ menu,
+ 1,
+ R.drawable.ic_fluent_heart,
+ viewModel.isBgDark
+ )
menu[3].setTitle(archiveActionTitle)
menu[1].isVisible = !isArchived
menu[2].isVisible = !isArchived
@@ -219,35 +249,29 @@ class NotePreviewActivity : BindingActivity() {
}
private fun editNote() {
- LoginApi.openLogged(this, CreateNoteActivity::class.java) {
+ LoginApi.openLogged(requireContext(), CreateNoteActivity::class.java) {
putExtra(IntentKeys.INTENT_ID, viewModel.key)
}
}
private fun moveToStatus() {
val uiNotePreview = viewModel.note.value ?: return
- permissionFlowDelegate.with {
- askPermission(Permissions.POST_NOTIFICATION) {
- viewModel.showNoteInNotification(uiNotePreview.id)
- }
+ permissionFlow.askPermission(Permissions.POST_NOTIFICATION) {
+ viewModel.showNoteInNotification(uiNotePreview.id)
}
}
- override fun handleBackPress(): Boolean {
- closeWindow()
- return true
- }
-
private fun showNote(uiNotePreview: UiNotePreview) {
+ viewModel.saveStatusBarColor(activity?.window?.statusBarColor ?: -1)
showImages(uiNotePreview.images)
binding.noteText.text = uiNotePreview.text
binding.noteText.typeface = uiNotePreview.typeface
binding.noteText.setTextSize(TypedValue.COMPLEX_UNIT_SP, uiNotePreview.textSize)
- window.statusBarColor = uiNotePreview.backgroundColor
- window.navigationBarColor = uiNotePreview.backgroundColor
+ activity?.window?.statusBarColor = uiNotePreview.backgroundColor
+ activity?.window?.navigationBarColor = uiNotePreview.backgroundColor
binding.windowBackground.setBackgroundColor(uiNotePreview.backgroundColor)
- isBgDark = if (uiNotePreview.opacity.isAlmostTransparent()) {
- isDarkMode
+ viewModel.isBgDark = if (uiNotePreview.opacity.isAlmostTransparent()) {
+ isDark
} else {
uiNotePreview.backgroundColor.isColorDark()
}
@@ -257,7 +281,7 @@ class NotePreviewActivity : BindingActivity() {
}
private fun updateTextColors() {
- val textColor = if (isBgDark) {
+ val textColor = if (viewModel.isBgDark) {
colorOf(R.color.pureWhite)
} else {
colorOf(R.color.pureBlack)
@@ -283,24 +307,20 @@ class NotePreviewActivity : BindingActivity() {
}
private fun sendNote(note: NoteWithImages, file: File) {
- if (isFinishing) return
+ if (isDetached) return
if (!file.exists() || !file.canRead()) {
showErrorSending()
return
}
- TelephonyUtil.sendNote(file, this, note.note?.summary)
+ TelephonyUtil.sendNote(file, requireContext(), note.note?.summary)
}
private fun showErrorSending() {
toast(R.string.error_sending)
}
- private fun closeWindow() {
- uiHandler.post { finishAfterTransition() }
- }
-
private fun showDeleteDialog() {
- val builder = dialogues.getMaterialDialog(this)
+ val builder = dialogues.getMaterialDialog(requireContext())
builder.setMessage(getString(R.string.delete_this_note))
builder.setPositiveButton(getString(R.string.yes)) { dialog, _ ->
dialog.dismiss()
@@ -309,4 +329,8 @@ class NotePreviewActivity : BindingActivity() {
builder.setNegativeButton(getString(R.string.no)) { dialog, _ -> dialog.dismiss() }
builder.create().show()
}
+
+ companion object {
+ private const val TAG = "PreviewNoteFragment"
+ }
}
diff --git a/app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewViewModel.kt b/app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteViewModel.kt
similarity index 91%
rename from app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewViewModel.kt
rename to app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteViewModel.kt
index 490c04c25..2a91d5124 100644
--- a/app/src/main/java/com/elementary/tasks/notes/preview/NotePreviewViewModel.kt
+++ b/app/src/main/java/com/elementary/tasks/notes/preview/PreviewNoteViewModel.kt
@@ -1,5 +1,6 @@
package com.elementary.tasks.notes.preview
+import androidx.annotation.ColorInt
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.viewModelScope
import com.elementary.tasks.R
@@ -9,13 +10,8 @@ import com.elementary.tasks.core.data.adapter.note.UiNoteNotificationAdapter
import com.elementary.tasks.core.data.adapter.note.UiNotePreviewAdapter
import com.elementary.tasks.core.data.repository.NoteImageRepository
import com.elementary.tasks.core.data.ui.note.UiNotePreview
-import com.github.naz013.common.intent.IntentKeys
-import com.github.naz013.feature.common.coroutine.DispatcherProvider
import com.elementary.tasks.core.utils.Notifier
-import com.github.naz013.common.TextProvider
import com.elementary.tasks.core.utils.io.BackupTool
-import com.github.naz013.feature.common.viewmodel.mutableLiveDataOf
-import com.github.naz013.feature.common.livedata.toLiveData
import com.elementary.tasks.core.utils.withUIContext
import com.elementary.tasks.core.utils.work.WorkerLauncher
import com.elementary.tasks.notes.preview.reminders.ReminderToUiNoteAttachedReminder
@@ -25,14 +21,20 @@ import com.elementary.tasks.reminder.work.ReminderSingleBackupWorker
import com.github.naz013.analytics.AnalyticsEventSender
import com.github.naz013.analytics.Screen
import com.github.naz013.analytics.ScreenUsedEvent
+import com.github.naz013.common.TextProvider
+import com.github.naz013.common.intent.IntentKeys
import com.github.naz013.domain.note.NoteWithImages
+import com.github.naz013.feature.common.coroutine.DispatcherProvider
+import com.github.naz013.feature.common.livedata.toLiveData
+import com.github.naz013.feature.common.livedata.toSingleEvent
+import com.github.naz013.feature.common.viewmodel.mutableLiveDataOf
import com.github.naz013.repository.NoteRepository
import com.github.naz013.repository.ReminderRepository
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import java.io.File
-class NotePreviewViewModel(
+class PreviewNoteViewModel(
val key: String,
dispatcherProvider: DispatcherProvider,
private val workerLauncher: WorkerLauncher,
@@ -49,7 +51,7 @@ class NotePreviewViewModel(
) : BaseProgressViewModel(dispatcherProvider) {
private val _sharedFile = mutableLiveDataOf>()
- val sharedFile = _sharedFile.toLiveData()
+ val sharedFile = _sharedFile.toSingleEvent()
private val _note = mutableLiveDataOf()
val note = _note.toLiveData()
@@ -58,6 +60,24 @@ class NotePreviewViewModel(
val reminders = _reminders.toLiveData()
var hasSameInDb: Boolean = false
+ var isBgDark: Boolean = false
+ private var initStatusBarColor: Int = -1
+ private var statusBarColorSaved: Boolean = false
+
+ @ColorInt
+ fun getStatusBarColor(): Int? {
+ return if (statusBarColorSaved) {
+ initStatusBarColor.takeIf { it != -1 }
+ } else {
+ null
+ }
+ }
+
+ fun saveStatusBarColor(@ColorInt color: Int) {
+ if (statusBarColorSaved) return
+ initStatusBarColor = color
+ statusBarColorSaved = true
+ }
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
diff --git a/app/src/main/java/com/elementary/tasks/reminder/preview/PreviewReminderFragment.kt b/app/src/main/java/com/elementary/tasks/reminder/preview/PreviewReminderFragment.kt
index 85a2596bb..81abc9913 100644
--- a/app/src/main/java/com/elementary/tasks/reminder/preview/PreviewReminderFragment.kt
+++ b/app/src/main/java/com/elementary/tasks/reminder/preview/PreviewReminderFragment.kt
@@ -16,7 +16,6 @@ import com.elementary.tasks.databinding.FragmentReminderPreviewBinding
import com.elementary.tasks.navigation.toolbarfragment.BaseToolbarFragment
import com.elementary.tasks.notes.preview.ImagePreviewActivity
import com.elementary.tasks.notes.preview.ImagesSingleton
-import com.elementary.tasks.notes.preview.NotePreviewActivity
import com.elementary.tasks.reminder.preview.adapter.ReminderPreviewDataAdapter
import com.github.naz013.common.datetime.DateTimeManager
import com.github.naz013.common.intent.IntentKeys
@@ -158,8 +157,11 @@ class PreviewReminderFragment : BaseToolbarFragment
diff --git a/app/src/main/res/menu/activity_preview_note.xml b/app/src/main/res/menu/fragment_note_preview.xml
similarity index 100%
rename from app/src/main/res/menu/activity_preview_note.xml
rename to app/src/main/res/menu/fragment_note_preview.xml
diff --git a/app/src/main/res/navigation/home_nav.xml b/app/src/main/res/navigation/home_nav.xml
index e3f48f4e6..52cdd6671 100644
--- a/app/src/main/res/navigation/home_nav.xml
+++ b/app/src/main/res/navigation/home_nav.xml
@@ -46,6 +46,9 @@
+
+
+ tools:layout="@layout/fragment_notes" >
+
+
+
+
+
diff --git a/appwidgets/src/main/kotlin/com/github/naz013/appwidgets/AppWidgetActionActivity.kt b/appwidgets/src/main/kotlin/com/github/naz013/appwidgets/AppWidgetActionActivity.kt
index d00cd145d..5d85a3224 100644
--- a/appwidgets/src/main/kotlin/com/github/naz013/appwidgets/AppWidgetActionActivity.kt
+++ b/appwidgets/src/main/kotlin/com/github/naz013/appwidgets/AppWidgetActionActivity.kt
@@ -116,7 +116,8 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
screen = DestinationScreen.NotePreview,
extras = bundle,
flags = Intent.FLAG_ACTIVITY_NEW_TASK,
- isLoggedIn = true
+ isLoggedIn = true,
+ action = Intent.ACTION_VIEW
)
)
}
diff --git a/navigation-api/src/main/kotlin/com/github/naz013/navigation/DeepLinkDestination.kt b/navigation-api/src/main/kotlin/com/github/naz013/navigation/DeepLinkDestination.kt
index cbc2b113e..2073cc3ee 100644
--- a/navigation-api/src/main/kotlin/com/github/naz013/navigation/DeepLinkDestination.kt
+++ b/navigation-api/src/main/kotlin/com/github/naz013/navigation/DeepLinkDestination.kt
@@ -64,3 +64,8 @@ data class ViewReminderScreen(
data class EditReminderScreen(
override val extras: Bundle
) : DeepLinkDestination()
+
+@Parcelize
+data class ViewNoteScreen(
+ override val extras: Bundle
+) : DeepLinkDestination()