Skip to content

Commit

Permalink
Revert: Encapsuling dialogs
Browse files Browse the repository at this point in the history
  • Loading branch information
machiav3lli committed Jan 24, 2025
1 parent 098970b commit a8858c1
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 75 deletions.
84 changes: 26 additions & 58 deletions src/main/java/com/machiav3lli/backup/entity/PreferenceItem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import com.machiav3lli.backup.OABX
import com.machiav3lli.backup.dialogs.BaseDialog
import com.machiav3lli.backup.dialogs.EnumPrefDialogUI
import com.machiav3lli.backup.dialogs.ListPrefDialogUI
import com.machiav3lli.backup.dialogs.StringPrefDialogUI
import com.machiav3lli.backup.handler.LogsHandler
import com.machiav3lli.backup.preferences.publicPreferences
import com.machiav3lli.backup.preferences.traceDebug
Expand Down Expand Up @@ -399,18 +394,12 @@ open class StringPref(
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
val openDialog = remember { mutableStateOf(false) }
StringPreference(pref = pref as StringPref, index = index, groupSize = groupSize) {
openDialog.value = true
}
if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
StringPrefDialogUI(
pref = pref,
openDialogCustom = openDialog
)
}
}
StringPreference(
pref = pref as StringPref,
index = index,
groupSize = groupSize,
onClick = { onDialogUI(pref) },
)
},
icon = icon,
iconTint = iconTint,
Expand Down Expand Up @@ -451,7 +440,7 @@ class StringEditPref(
titleId = titleId,
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
UI = UI ?: { pref, _, index, groupSize ->
StringEditPreference(pref = pref as StringEditPref, index = index, groupSize = groupSize)
},
icon = icon,
Expand Down Expand Up @@ -481,20 +470,12 @@ class PasswordPref(
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
val openDialog = remember { mutableStateOf(false) }
PasswordPreference(pref = pref as PasswordPref, index = index, groupSize = groupSize) {
openDialog.value = true
}
if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
StringPrefDialogUI(
pref = pref,
isPrivate = true,
confirm = true,
openDialogCustom = openDialog
)
}
}
PasswordPreference(
pref = pref as PasswordPref,
index = index,
groupSize = groupSize,
onClick = { onDialogUI(pref) },
)
},
icon = icon,
iconTint = iconTint,
Expand Down Expand Up @@ -524,26 +505,19 @@ class ListPref(
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
val openDialog = remember { mutableStateOf(false) }
ListPreference(pref = pref as ListPref, index = index, groupSize = groupSize) {
openDialog.value = true
}
if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
ListPrefDialogUI(
pref = pref,
openDialogCustom = openDialog,
)
}
}
ListPreference(
pref = pref as ListPref,
index = index,
groupSize = groupSize,
onClick = { onDialogUI(pref) },
)
},
icon = icon,
iconTint = iconTint,
enableIf = enableIf,
onChanged = onChanged
)


class EnumPref(
key: String,
private: Boolean = false,
Expand All @@ -565,18 +539,12 @@ class EnumPref(
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
val openDialog = remember { mutableStateOf(false) }
EnumPreference(pref = pref as EnumPref, index = index, groupSize = groupSize) {
openDialog.value = true
}
if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
EnumPrefDialogUI(
pref = pref as EnumPref,
openDialogCustom = openDialog,
)
}
}
EnumPreference(
pref = pref as EnumPref,
index = index,
groupSize = groupSize,
onClick = { onDialogUI(pref) },
)
},
icon = icon,
iconTint = iconTint,
Expand Down Expand Up @@ -644,7 +612,7 @@ class LaunchPref(
titleId = titleId,
summaryId = summaryId,
summary = summary,
UI = UI ?: { pref, onDialogUI, index, groupSize ->
UI = UI ?: { pref, _, index, groupSize ->
LaunchPreference(
pref = pref as LaunchPref,
index = index,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,6 @@ import com.machiav3lli.backup.ui.compose.icons.phosphor.ShieldStar
import com.machiav3lli.backup.ui.compose.icons.phosphor.TagSimple
import com.machiav3lli.backup.ui.compose.icons.phosphor.Textbox
import com.machiav3lli.backup.ui.compose.recycler.InnerBackground
import com.machiav3lli.backup.ui.compose.theme.ColorAPK
import com.machiav3lli.backup.ui.compose.theme.ColorData
import com.machiav3lli.backup.ui.compose.theme.ColorDeData
import com.machiav3lli.backup.ui.compose.theme.ColorExodus
import com.machiav3lli.backup.ui.compose.theme.ColorExtDATA
import com.machiav3lli.backup.ui.compose.theme.ColorMedia
import com.machiav3lli.backup.ui.compose.theme.ColorOBB
import com.machiav3lli.backup.ui.compose.theme.ColorSpecial
import com.machiav3lli.backup.ui.compose.theme.ColorUpdated
import com.machiav3lli.backup.utils.SystemUtils
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toPersistentList
Expand All @@ -74,6 +65,34 @@ fun ServicePrefsPage() {
}
}
}

if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
when (dialogsPref) {
is ListPref -> ListPrefDialogUI(
pref = dialogsPref as ListPref,
openDialogCustom = openDialog,
)

is EnumPref -> EnumPrefDialogUI(
pref = dialogsPref as EnumPref,
openDialogCustom = openDialog
)

is PasswordPref -> StringPrefDialogUI(
pref = dialogsPref as PasswordPref,
isPrivate = true,
confirm = true,
openDialogCustom = openDialog
)

is StringPref -> StringPrefDialogUI(
pref = dialogsPref as StringPref,
openDialogCustom = openDialog
)
}
}
}
}

fun LazyListScope.ServicePrefGroups(onPrefDialog: (Pref) -> Unit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ import com.machiav3lli.backup.R
import com.machiav3lli.backup.THEME_DYNAMIC
import com.machiav3lli.backup.THEME_SYSTEM
import com.machiav3lli.backup.accentColorItems
import com.machiav3lli.backup.dialogs.BaseDialog
import com.machiav3lli.backup.dialogs.EnumPrefDialogUI
import com.machiav3lli.backup.dialogs.ListPrefDialogUI
import com.machiav3lli.backup.entity.BooleanPref
import com.machiav3lli.backup.entity.EnumPref
import com.machiav3lli.backup.entity.IntPref
Expand Down Expand Up @@ -52,12 +55,6 @@ import com.machiav3lli.backup.ui.compose.icons.phosphor.TextAa
import com.machiav3lli.backup.ui.compose.icons.phosphor.Translate
import com.machiav3lli.backup.ui.compose.item.StringEditPreference
import com.machiav3lli.backup.ui.compose.recycler.InnerBackground
import com.machiav3lli.backup.ui.compose.theme.ColorDeData
import com.machiav3lli.backup.ui.compose.theme.ColorExodus
import com.machiav3lli.backup.ui.compose.theme.ColorOBB
import com.machiav3lli.backup.ui.compose.theme.ColorSpecial
import com.machiav3lli.backup.ui.compose.theme.ColorSystem
import com.machiav3lli.backup.ui.compose.theme.ColorUpdated
import com.machiav3lli.backup.utils.StorageLocationNotConfiguredException
import com.machiav3lli.backup.utils.SystemUtils
import com.machiav3lli.backup.utils.backupDirConfigured
Expand All @@ -83,6 +80,29 @@ fun UserPrefsPage() {

val prefs = Pref.prefGroups["user"]?.toPersistentList() ?: persistentListOf()

val launcher =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.data != null && result.resultCode == Activity.RESULT_OK) {
result.data?.let {
val uri = it.data ?: return@let
val oldDir = try {
backupDirConfigured
} catch (e: StorageLocationNotConfiguredException) {
"" // Can be ignored, this is about to set the path
}
if (oldDir != uri.toString()) {
val flags = it.flags and (
Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
context.contentResolver.takePersistableUriPermission(uri, flags)
Timber.i("setting uri $uri")
backupDir = setBackupDir(uri)
}
}
}
}

InnerBackground(
modifier = Modifier.fillMaxSize()
) {
Expand All @@ -99,6 +119,26 @@ fun UserPrefsPage() {
}
}
}

if (openDialog.value) {
BaseDialog(onDismiss = { openDialog.value = false }) {
when (dialogsPref) {
//pref_languages,
is ListPref -> ListPrefDialogUI(
pref = dialogsPref as ListPref,
openDialogCustom = openDialog,
)

//pref_appTheme,
//pref_appAccentColor,
//pref_appSecondaryColor,
is EnumPref -> EnumPrefDialogUI(
pref = dialogsPref as EnumPref,
openDialogCustom = openDialog,
)
}
}
}
}

fun onThemeChanged(pref: Pref) {
Expand Down Expand Up @@ -176,7 +216,7 @@ val pref_pathBackupFolder = StringEditPref(
else if (backupFolderExists(pref.value)) Color.Green.copy(alpha = alpha)
else Color.Red.copy(alpha = alpha)
},
UI = { it, onDialogUI, index, groupSize ->
UI = { it, _, index, groupSize ->
val pref = it as StringEditPref
val launcher =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
Expand All @@ -192,7 +232,7 @@ val pref_pathBackupFolder = StringEditPref(
val flags = it.flags and (
Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
)
//TODO hg42 check and remember if flags are read only and implement appropriate actions elsewhere
OABX.context.contentResolver.takePersistableUriPermission(uri, flags)
Timber.i("setting uri $uri")
Expand Down

0 comments on commit a8858c1

Please sign in to comment.