Skip to content

Commit

Permalink
chore: migrate additional dialog fragments to com.jkuester (#268)
Browse files Browse the repository at this point in the history
  • Loading branch information
jkuester authored Feb 13, 2025
1 parent ec0e630 commit 9317053
Show file tree
Hide file tree
Showing 15 changed files with 470 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ abstract class AbstractDataRepository<T>(

fun get(): T = runBlocking { dataFlow.first() }

fun updateAsync(transform: suspend (t: T) -> T) = lifecycleScope.launch(Dispatchers.IO) {
fun updateAsync(transform: (t: T) -> T) = lifecycleScope.launch(Dispatchers.IO) {
dataStore.updateData(transform)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ class AlignmentFormatDialog : DialogFragment() {
.setSingleChoiceItems(
R.array.alignment_format_array,
corePreferencesRepo.get().alignmentFormat.number,
this::selectAlignment
this::onSelection
)
.create()

private fun selectAlignment(dialogInterface: DialogInterface, i: Int) = dialogInterface
private fun onSelection(dialogInterface: DialogInterface, i: Int) = dialogInterface
.dismiss()
.also { corePreferencesRepo.updateAsync(setAlignmentFormat(AlignmentFormat.forNumber(i))) }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.jkuester.unlauncher.dialog

import android.app.AlertDialog
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.jkuester.unlauncher.datasource.CorePreferencesRepository
import com.jkuester.unlauncher.datasource.setClockType
import com.jkuester.unlauncher.datastore.proto.ClockType
import com.sduduzog.slimlauncher.R
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class ClockTypeDialog : DialogFragment() {
@Inject
lateinit var corePreferencesRepo: CorePreferencesRepository

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog
.Builder(context)
.setTitle(R.string.choose_clock_type_dialog_title)
.setSingleChoiceItems(
R.array.clock_type_array,
corePreferencesRepo.get().clockType.number,
this::onSelection
)
.create()

private fun onSelection(dialogInterface: DialogInterface, i: Int) = dialogInterface
.dismiss()
.also { corePreferencesRepo.updateAsync(setClockType(ClockType.forNumber(i))) }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.jkuester.unlauncher.dialog

import android.app.AlertDialog
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.jkuester.unlauncher.datasource.QuickButtonIcon
import com.jkuester.unlauncher.datasource.QuickButtonPreferencesRepository
import com.jkuester.unlauncher.datasource.setCenterIconId
import com.jkuester.unlauncher.datasource.setLeftIconId
import com.jkuester.unlauncher.datasource.setRightIconId
import com.jkuester.unlauncher.datastore.proto.QuickButtonPreferences
import com.sduduzog.slimlauncher.R
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

private fun getCurrentIconIdByDefault(defaultIconId: Int) = { quickButtonPrefs: QuickButtonPreferences ->
when (defaultIconId) {
QuickButtonIcon.IC_CALL.prefId -> quickButtonPrefs.leftButton.iconId
QuickButtonIcon.IC_COG.prefId -> quickButtonPrefs.centerButton.iconId
else -> quickButtonPrefs.rightButton.iconId
}
}

private fun getIndexByIconId(iconId: Int) = when (iconId) {
QuickButtonIcon.IC_EMPTY.prefId -> 1
else -> 0
}

private fun getIconIdByIndex(defaultIconId: Int, index: Int) = when (index) {
1 -> QuickButtonIcon.IC_EMPTY.prefId
else -> defaultIconId
}

private fun getUpdateFunctionByDefault(defaultIconId: Int) = when (defaultIconId) {
QuickButtonIcon.IC_CALL.prefId -> ::setLeftIconId
QuickButtonIcon.IC_COG.prefId -> ::setCenterIconId
else -> ::setRightIconId
}

@AndroidEntryPoint
class QuickButtonIconDialog(private val defaultIconId: Int) : DialogFragment() {
@Inject
lateinit var repo: QuickButtonPreferencesRepository

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog
.Builder(context)
.setTitle(R.string.options_fragment_customize_quick_buttons)
.setSingleChoiceItems(
R.array.quick_button_array,
getCurrentIndex(),
this::onSelection
)
.create()

private fun getCurrentIndex() = repo
.get()
.let(getCurrentIconIdByDefault(defaultIconId))
.let(::getIndexByIconId)

private fun onSelection(dialogInterface: DialogInterface, i: Int) = dialogInterface
.dismiss()
.also {
getIconIdByIndex(defaultIconId, i)
.let(getUpdateFunctionByDefault(defaultIconId))
.let(repo::updateAsync)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.jkuester.unlauncher.dialog

import android.app.AlertDialog
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.jkuester.unlauncher.datasource.CorePreferencesRepository
import com.jkuester.unlauncher.datasource.setSearchBarPosition
import com.jkuester.unlauncher.datastore.proto.SearchBarPosition
import com.sduduzog.slimlauncher.R
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class SearchBarPositionDialog : DialogFragment() {
@Inject
lateinit var corePreferencesRepo: CorePreferencesRepository

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog
.Builder(context)
.setTitle(R.string.choose_search_bar_position_dialog_title)
.setSingleChoiceItems(
R.array.search_bar_position_array,
corePreferencesRepo.get().searchBarPosition.number,
this::onSelection
)
.create()

private fun onSelection(dialogInterface: DialogInterface, i: Int) = dialogInterface
.dismiss()
.also { corePreferencesRepo.updateAsync(setSearchBarPosition(SearchBarPosition.forNumber(i))) }
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import android.view.ViewGroup
import com.jkuester.unlauncher.datasource.QuickButtonIcon
import com.jkuester.unlauncher.datasource.QuickButtonPreferencesRepository
import com.jkuester.unlauncher.datasource.getIconResourceId
import com.jkuester.unlauncher.dialog.QuickButtonIconDialog
import com.sduduzog.slimlauncher.R
import com.sduduzog.slimlauncher.databinding.CustomizeQuickButtonsFragmentBinding
import com.sduduzog.slimlauncher.ui.dialogs.ChooseQuickButtonDialog
import com.sduduzog.slimlauncher.utils.BaseFragment
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
Expand Down Expand Up @@ -42,20 +42,17 @@ class CustomizeQuickButtonsFragment : BaseFragment() {
requireActivity().onBackPressedDispatcher.onBackPressed()
}
customizeQuickButtonsFragment.customizeQuickButtonsFragmentLeft.setOnClickListener {
ChooseQuickButtonDialog(
quickButtonPreferencesRepo,
QuickButtonIconDialog(
QuickButtonIcon.IC_CALL.prefId
).showNow(childFragmentManager, "QUICK_BUTTON_CHOOSER")
}
customizeQuickButtonsFragment.customizeQuickButtonsFragmentCenter.setOnClickListener {
ChooseQuickButtonDialog(
quickButtonPreferencesRepo,
QuickButtonIconDialog(
QuickButtonIcon.IC_COG.prefId
).showNow(childFragmentManager, "QUICK_BUTTON_CHOOSER")
}
customizeQuickButtonsFragment.customizeQuickButtonsFragmentRight.setOnClickListener {
ChooseQuickButtonDialog(
quickButtonPreferencesRepo,
QuickButtonIconDialog(
QuickButtonIcon.IC_PHOTO_CAMERA.prefId
).showNow(childFragmentManager, "QUICK_BUTTON_CHOOSER")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import com.jkuester.unlauncher.datasource.CorePreferencesRepository
import com.jkuester.unlauncher.datasource.setActivateKeyboardInDrawer
import com.jkuester.unlauncher.datasource.setSearchAllAppsInDrawer
import com.jkuester.unlauncher.datasource.setShowSearchBar
import com.jkuester.unlauncher.dialog.SearchBarPositionDialog
import com.sduduzog.slimlauncher.R
import com.sduduzog.slimlauncher.databinding.CustomizeAppDrawerFragmentSearchFieldOptionsBinding
import com.sduduzog.slimlauncher.ui.dialogs.ChooseSearchBarPositionDialog
import com.sduduzog.slimlauncher.utils.BaseFragment
import com.sduduzog.slimlauncher.utils.createTitleAndSubtitleText
import dagger.hilt.android.AndroidEntryPoint
Expand Down Expand Up @@ -70,8 +70,7 @@ class CustomizeSearchFieldFragment : BaseFragment() {

private fun setupSearchBarPositionOption(options: CustomizeAppDrawerFragmentSearchFieldOptionsBinding) {
options.customizeAppDrawerFragmentSearchFieldPosition.setOnClickListener {
val positionDialog = ChooseSearchBarPositionDialog.getSearchBarPositionChooser()
positionDialog.showNow(childFragmentManager, "POSITION_CHOOSER")
SearchBarPositionDialog().showNow(childFragmentManager, "POSITION_CHOOSER")
}
corePreferencesRepo.observe(viewLifecycleOwner) {
val position = it.searchBarPosition.number
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import androidx.navigation.Navigation
import com.jkuester.unlauncher.datasource.CorePreferencesRepository
import com.jkuester.unlauncher.datasource.setKeepDeviceWallpaper
import com.jkuester.unlauncher.dialog.AlignmentFormatDialog
import com.jkuester.unlauncher.dialog.ClockTypeDialog
import com.sduduzog.slimlauncher.R
import com.sduduzog.slimlauncher.databinding.OptionsFragmentBinding
import com.sduduzog.slimlauncher.ui.dialogs.ChangeThemeDialog
import com.sduduzog.slimlauncher.ui.dialogs.ChooseClockTypeDialog
import com.sduduzog.slimlauncher.ui.dialogs.ChooseTimeFormatDialog
import com.sduduzog.slimlauncher.utils.BaseFragment
import com.sduduzog.slimlauncher.utils.createTitleAndSubtitleText
Expand Down Expand Up @@ -60,8 +60,7 @@ class OptionsFragment : BaseFragment() {
chooseTimeFormatDialog.showNow(childFragmentManager, "TIME_FORMAT_CHOOSER")
}
optionsFragment.optionsFragmentChooseClockType.setOnClickListener {
val chooseClockTypeDialog = ChooseClockTypeDialog.getInstance()
chooseClockTypeDialog.showNow(childFragmentManager, "CLOCK_TYPE_CHOOSER")
ClockTypeDialog().showNow(childFragmentManager, "CLOCK_TYPE_CHOOSER")
}
optionsFragment.optionsFragmentChooseAlignment.setOnClickListener {
AlignmentFormatDialog().showNow(childFragmentManager, "ALIGNMENT_CHOOSER")
Expand Down
Loading

0 comments on commit 9317053

Please sign in to comment.