Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

REM-938 - Fix events app widget navigation #288

Merged
merged 1 commit into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ class BottomNavActivity :
}

override fun handleBackPress(): Boolean {
Logger.i("NavActivity", "Handle back press, current fragment: $currentResumedFragment")
Logger.i(TAG, "Handle back press, current fragment: $currentResumedFragment")
if (currentResumedFragment is HomeFragment) {
finishAffinity()
} else if (currentResumedFragment?.canGoBack() == true) {
Expand All @@ -183,10 +183,18 @@ class BottomNavActivity :
adapter: RecyclerView.Adapter<*>,
observer: SearchableFragmentQueryObserver
) {
Logger.i(TAG, "Add the Search view $anchorId")
this.searchableFragmentQueryObserver = observer
initSearchView(anchorId, hint, adapter)
}

override fun removeSearchView() {
Logger.i(TAG, "Removing the Search view $fragmentSearchView")
fragmentSearchView?.also {
binding.container.removeView(it)
}
}

private fun initSearchView(
anchorId: Int,
hint: String,
Expand Down
13 changes: 7 additions & 6 deletions app/src/main/java/com/elementary/tasks/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,6 @@ class HomeFragment :
else -> false
}
}
searchableFragmentCallback?.setSearchViewParams(
R.id.search_bar,
getString(R.string.search_everywhere),
searchAdapter,
this
)

binding.globalAddButton.setOnClickListener { showEventTypeSelectionDialog(null) }

Expand Down Expand Up @@ -239,12 +233,19 @@ class HomeFragment :

override fun onResume() {
super.onResume()
searchableFragmentCallback?.setSearchViewParams(
R.id.search_bar,
getString(R.string.search_everywhere),
searchAdapter,
this
)
prefs.addObserver(PrefsConstants.PRIVACY_SHOWED, this)
prefs.addObserver(PrefsConstants.USER_LOGGED, this)
}

override fun onPause() {
super.onPause()
searchableFragmentCallback?.removeSearchView()
prefs.removeObserver(PrefsConstants.PRIVACY_SHOWED, this)
prefs.removeObserver(PrefsConstants.USER_LOGGED, this)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ interface SearchableFragmentCallback {
adapter: RecyclerView.Adapter<*>,
observer: SearchableFragmentQueryObserver
)
fun removeSearchView()
}

interface SearchableFragmentQueryObserver {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import com.elementary.tasks.reminder.build.adapter.BuilderAdapter
import com.elementary.tasks.reminder.build.logic.builderstate.ReminderPrediction
import com.elementary.tasks.reminder.build.selectordialog.SelectorDialog
import com.elementary.tasks.reminder.build.selectordialog.SelectorDialogCallback
import com.elementary.tasks.reminder.build.selectordialog.SelectorDialogCommunicator
import com.elementary.tasks.reminder.build.valuedialog.ValueDialog
import com.elementary.tasks.reminder.build.valuedialog.ValueDialogCallback
import com.elementary.tasks.reminder.build.valuedialog.ValueDialogCommunicator
import com.github.naz013.common.Permissions
import com.github.naz013.feature.common.livedata.nonNullObserve
import com.github.naz013.feature.common.livedata.observeEvent
Expand Down Expand Up @@ -61,7 +63,9 @@ class BuildReminderFragment :

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Logger.i(TAG, "Opening the reminder edit screen for id: ${viewModel.id}")
Logger.i(TAG, "Opening the reminder edit screen for id: ${Logger.data(viewModel.id)}")
SelectorDialogCommunicator.addCallback(this)
ValueDialogCommunicator.addCallback(this)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.elementary.tasks.reminder.build.selectordialog

import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -10,8 +9,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.elementary.tasks.core.utils.ui.onTabSelected
import com.elementary.tasks.core.utils.ui.onTextChanged
import com.elementary.tasks.databinding.BottomSheetBuilderSelectorBinding
import com.elementary.tasks.reminder.build.selectordialog.params.SelectorAdapter
import com.elementary.tasks.reminder.build.preset.PresetAdapter
import com.elementary.tasks.reminder.build.selectordialog.params.SelectorAdapter
import com.github.naz013.feature.common.livedata.nonNullObserve
import com.github.naz013.logging.Logger
import com.github.naz013.ui.common.view.gone
Expand All @@ -26,14 +25,14 @@ class SelectorDialog : BottomSheetDialogFragment() {

private val selectorAdapter = SelectorAdapter { _, item ->
dismiss()
callback?.onBuilderItemAdd(item.builderItem)
SelectorDialogCommunicator.onBuilderItemAdd(item.builderItem)
Logger.i(TAG, "Selected builder item: $item")
}
private val presetAdapter = PresetAdapter(
canDelete = false,
onItemClickListener = {
dismiss()
callback?.onPresetSelected(it)
SelectorDialogCommunicator.onPresetSelected(it)
Logger.i(TAG, "Selected general preset: $it")
},
onItemDeleteListener = { }
Expand All @@ -42,21 +41,13 @@ class SelectorDialog : BottomSheetDialogFragment() {
canDelete = false,
onItemClickListener = {
dismiss()
callback?.onPresetSelected(it)
SelectorDialogCommunicator.onPresetSelected(it)
Logger.i(TAG, "Selected recur preset: $it")
},
onItemDeleteListener = { }
)

private lateinit var binding: BottomSheetBuilderSelectorBinding
private var callback: SelectorDialogCallback? = null

override fun onAttach(context: Context) {
super.onAttach(context)
runCatching {
callback = context as? SelectorDialogCallback
}
}

override fun onCreateView(
inflater: LayoutInflater,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.elementary.tasks.reminder.build.selectordialog

import com.elementary.tasks.core.data.ui.preset.UiPresetList
import com.elementary.tasks.reminder.build.BuilderItem
import java.lang.ref.WeakReference

object SelectorDialogCommunicator : SelectorDialogCallback {

private var callback: WeakReference<SelectorDialogCallback>? = null

fun addCallback(callback: SelectorDialogCallback) {
this.callback = WeakReference(callback)
}

fun removeCallback() {
this.callback = null
}

override fun onBuilderItemAdd(builderItem: BuilderItem<*>) {
callback?.get()?.onBuilderItemAdd(builderItem)
}

override fun onPresetSelected(uiPresetList: UiPresetList) {
callback?.get()?.onPresetSelected(uiPresetList)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.elementary.tasks.reminder.build.valuedialog

import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
Expand All @@ -24,17 +23,9 @@ class ValueDialog : BottomSheetDialogFragment(), ParentDialogHandle, ValueContro
private val controllerFactory by inject<ValueControllerFactory>()

private lateinit var binding: BottomSheetValueSelectorBinding
private var callback: ValueDialogCallback? = null
private var controller: ValueController? = null
private var lifecycleDispatcher: ValueDialogLifecycleDispatcher? = null

override fun onAttach(context: Context) {
super.onAttach(context)
runCatching {
callback = context as? ValueDialogCallback
}
}

override fun onCancel(dialog: DialogInterface) {
super.onCancel(dialog)
Logger.d(TAG, "Value dialog cancelled")
Expand Down Expand Up @@ -116,7 +107,7 @@ class ValueDialog : BottomSheetDialogFragment(), ParentDialogHandle, ValueContro

private fun save() {
controller?.getItem()?.also {
callback?.onValueChanged(getPosition(), it)
ValueDialogCommunicator.onValueChanged(getPosition(), it)
}
}

Expand All @@ -130,7 +121,7 @@ class ValueDialog : BottomSheetDialogFragment(), ParentDialogHandle, ValueContro
}

override fun onValueChanged(builderItem: BuilderItem<*>) {
callback?.onValueChanged(getPosition(), builderItem)
ValueDialogCommunicator.onValueChanged(getPosition(), builderItem)
}

override fun getState(): ValueDialogState {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.elementary.tasks.reminder.build.valuedialog

import com.elementary.tasks.reminder.build.BuilderItem
import java.lang.ref.WeakReference

object ValueDialogCommunicator : ValueDialogCallback {

private var callback: WeakReference<ValueDialogCallback>? = null

fun addCallback(callback: ValueDialogCallback) {
this.callback = WeakReference(callback)
}

fun removeCallback() {
this.callback = null
}

override fun onValueChanged(position: Int, builderItem: BuilderItem<*>) {
callback?.get()?.onValueChanged(position, builderItem)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
Logger.d("AppWidgetActionActivity", "Received data = $data")
val id = data?.extra?.get(IntentKeys.INTENT_ID) as? String
val bundle = intent.extras ?: Bundle()
if (id != null) {
bundle.putString(IntentKeys.INTENT_ID, id)
}
when (direction) {
Direction.HOME -> {
navigator.navigate(
Expand All @@ -62,6 +59,9 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
)
}
Direction.REMINDER_PREVIEW -> {
if (id != null) {
bundle.putString(IntentKeys.INTENT_ID, id)
}
navigator.navigate(
ActivityDestination(
screen = DestinationScreen.ReminderPreview,
Expand All @@ -84,6 +84,9 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
)
}
Direction.BIRTHDAY_PREVIEW -> {
if (id != null) {
bundle.putString(IntentKeys.INTENT_ID, id)
}
navigator.navigate(
ActivityDestination(
screen = DestinationScreen.BirthdayPreview,
Expand All @@ -105,6 +108,9 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
)
}
Direction.NOTE_PREVIEW -> {
if (id != null) {
bundle.putString(IntentKeys.INTENT_ID, id)
}
navigator.navigate(
ActivityDestination(
screen = DestinationScreen.NotePreview,
Expand All @@ -126,6 +132,7 @@ internal class AppWidgetActionActivity : LightThemedActivity() {
)
)
} else {
bundle.putString(IntentKeys.INTENT_ID, id)
navigator.navigate(
ActivityDestination(
screen = DestinationScreen.GoogleTaskPreview,
Expand Down
Loading
Loading