Skip to content

Commit

Permalink
Merge pull request #288 from naz013/feature/REM-938_Fix_app_widget_click
Browse files Browse the repository at this point in the history
REM-938 - Fix events app widget navigation
  • Loading branch information
naz013 authored Jan 18, 2025
2 parents a4a303d + 12b992f commit 604014f
Show file tree
Hide file tree
Showing 11 changed files with 142 additions and 79 deletions.
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

0 comments on commit 604014f

Please sign in to comment.