mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-18 16:25:27 +02:00
parent
659b64ebd4
commit
d0fcf5b138
@ -83,7 +83,6 @@ class BackupManagerTest {
|
|||||||
// CALCULATOR
|
// CALCULATOR
|
||||||
it[PrefsKeys.RADIAN_MODE] = FakeUsrPreferenceValues.radianMode
|
it[PrefsKeys.RADIAN_MODE] = FakeUsrPreferenceValues.radianMode
|
||||||
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = FakeUsrPreferenceValues.partialHistoryView
|
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = FakeUsrPreferenceValues.partialHistoryView
|
||||||
it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = FakeUsrPreferenceValues.clearInputAfterEquals
|
|
||||||
|
|
||||||
// UNIT CONVERTER
|
// UNIT CONVERTER
|
||||||
it[PrefsKeys.LATEST_LEFT_SIDE] = FakeUsrPreferenceValues.latestLeftSide
|
it[PrefsKeys.LATEST_LEFT_SIDE] = FakeUsrPreferenceValues.latestLeftSide
|
||||||
@ -116,7 +115,6 @@ class BackupManagerTest {
|
|||||||
outputFormat = FakeUsrPreferenceValues.outputFormat,
|
outputFormat = FakeUsrPreferenceValues.outputFormat,
|
||||||
radianMode = FakeUsrPreferenceValues.radianMode,
|
radianMode = FakeUsrPreferenceValues.radianMode,
|
||||||
partialHistoryView = FakeUsrPreferenceValues.partialHistoryView,
|
partialHistoryView = FakeUsrPreferenceValues.partialHistoryView,
|
||||||
clearInputAfterEquals = FakeUsrPreferenceValues.clearInputAfterEquals,
|
|
||||||
latestLeftSide = FakeUsrPreferenceValues.latestLeftSide,
|
latestLeftSide = FakeUsrPreferenceValues.latestLeftSide,
|
||||||
latestRightSide = FakeUsrPreferenceValues.latestRightSide,
|
latestRightSide = FakeUsrPreferenceValues.latestRightSide,
|
||||||
shownUnitGroups = FakeUsrPreferenceValues.shownUnitGroups,
|
shownUnitGroups = FakeUsrPreferenceValues.shownUnitGroups,
|
||||||
|
@ -29,7 +29,6 @@ import com.sadellie.unitto.data.database.TimeZoneDao
|
|||||||
import com.sadellie.unitto.data.database.UnitsDao
|
import com.sadellie.unitto.data.database.UnitsDao
|
||||||
import com.sadellie.unitto.data.userprefs.PrefsKeys
|
import com.sadellie.unitto.data.userprefs.PrefsKeys
|
||||||
import com.sadellie.unitto.data.userprefs.getAcButton
|
import com.sadellie.unitto.data.userprefs.getAcButton
|
||||||
import com.sadellie.unitto.data.userprefs.getClearInputAfterEquals
|
|
||||||
import com.sadellie.unitto.data.userprefs.getCustomColor
|
import com.sadellie.unitto.data.userprefs.getCustomColor
|
||||||
import com.sadellie.unitto.data.userprefs.getDigitsPrecision
|
import com.sadellie.unitto.data.userprefs.getDigitsPrecision
|
||||||
import com.sadellie.unitto.data.userprefs.getEnableAmoledTheme
|
import com.sadellie.unitto.data.userprefs.getEnableAmoledTheme
|
||||||
@ -137,7 +136,6 @@ class BackupManager @Inject constructor(
|
|||||||
outputFormat = data.getOutputFormat(),
|
outputFormat = data.getOutputFormat(),
|
||||||
radianMode = data.getRadianMode(),
|
radianMode = data.getRadianMode(),
|
||||||
partialHistoryView = data.getPartialHistoryView(),
|
partialHistoryView = data.getPartialHistoryView(),
|
||||||
clearInputAfterEquals = data.getClearInputAfterEquals(),
|
|
||||||
latestLeftSide = data.getLatestLeftSide(),
|
latestLeftSide = data.getLatestLeftSide(),
|
||||||
latestRightSide = data.getLatestRightSide(),
|
latestRightSide = data.getLatestRightSide(),
|
||||||
shownUnitGroups = data.getShownUnitGroups().joinToString(","),
|
shownUnitGroups = data.getShownUnitGroups().joinToString(","),
|
||||||
@ -174,7 +172,6 @@ class BackupManager @Inject constructor(
|
|||||||
// CALCULATOR
|
// CALCULATOR
|
||||||
it[PrefsKeys.RADIAN_MODE] = userData.radianMode
|
it[PrefsKeys.RADIAN_MODE] = userData.radianMode
|
||||||
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = userData.partialHistoryView
|
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = userData.partialHistoryView
|
||||||
it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = userData.clearInputAfterEquals
|
|
||||||
|
|
||||||
// UNIT CONVERTER
|
// UNIT CONVERTER
|
||||||
it[PrefsKeys.LATEST_LEFT_SIDE] = userData.latestLeftSide
|
it[PrefsKeys.LATEST_LEFT_SIDE] = userData.latestLeftSide
|
||||||
|
@ -46,7 +46,6 @@ internal data class UserData(
|
|||||||
|
|
||||||
@Json(name = "radianMode") val radianMode: Boolean,
|
@Json(name = "radianMode") val radianMode: Boolean,
|
||||||
@Json(name = "partialHistoryView") val partialHistoryView: Boolean,
|
@Json(name = "partialHistoryView") val partialHistoryView: Boolean,
|
||||||
@Json(name = "clearInputAfterEquals") val clearInputAfterEquals: Boolean,
|
|
||||||
|
|
||||||
@Json(name = "latestLeftSide") val latestLeftSide: String,
|
@Json(name = "latestLeftSide") val latestLeftSide: String,
|
||||||
@Json(name = "latestRightSide") val latestRightSide: String,
|
@Json(name = "latestRightSide") val latestRightSide: String,
|
||||||
|
@ -87,7 +87,5 @@ interface UserPreferencesRepository {
|
|||||||
|
|
||||||
suspend fun updateAcButton(enabled: Boolean)
|
suspend fun updateAcButton(enabled: Boolean)
|
||||||
|
|
||||||
suspend fun updateClearInputAfterEquals(enabled: Boolean)
|
|
||||||
|
|
||||||
suspend fun updateRpnMode(enabled: Boolean)
|
suspend fun updateRpnMode(enabled: Boolean)
|
||||||
}
|
}
|
||||||
|
@ -27,5 +27,4 @@ interface CalculatorPreferences {
|
|||||||
val partialHistoryView: Boolean
|
val partialHistoryView: Boolean
|
||||||
val precision: Int
|
val precision: Int
|
||||||
val outputFormat: Int
|
val outputFormat: Int
|
||||||
val clearInputAfterEquals: Boolean
|
|
||||||
}
|
}
|
||||||
|
@ -124,10 +124,6 @@ fun Preferences.getAcButton(): Boolean {
|
|||||||
return this[PrefsKeys.AC_BUTTON] ?: true
|
return this[PrefsKeys.AC_BUTTON] ?: true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Preferences.getClearInputAfterEquals(): Boolean {
|
|
||||||
return this[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] ?: false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Preferences.getRpnMode(): Boolean {
|
fun Preferences.getRpnMode(): Boolean {
|
||||||
return this[PrefsKeys.RPN_MODE] ?: false
|
return this[PrefsKeys.RPN_MODE] ?: false
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,6 @@ data class CalculatorPreferencesImpl(
|
|||||||
override val partialHistoryView: Boolean,
|
override val partialHistoryView: Boolean,
|
||||||
override val precision: Int,
|
override val precision: Int,
|
||||||
override val outputFormat: Int,
|
override val outputFormat: Int,
|
||||||
override val clearInputAfterEquals: Boolean,
|
|
||||||
) : CalculatorPreferences
|
) : CalculatorPreferences
|
||||||
|
|
||||||
data class ConverterPreferencesImpl(
|
data class ConverterPreferencesImpl(
|
||||||
|
@ -46,7 +46,6 @@ object PrefsKeys {
|
|||||||
// CALCULATOR
|
// CALCULATOR
|
||||||
val RADIAN_MODE = booleanPreferencesKey("RADIAN_MODE_PREF_KEY")
|
val RADIAN_MODE = booleanPreferencesKey("RADIAN_MODE_PREF_KEY")
|
||||||
val PARTIAL_HISTORY_VIEW = booleanPreferencesKey("PARTIAL_HISTORY_VIEW_PREF_KEY")
|
val PARTIAL_HISTORY_VIEW = booleanPreferencesKey("PARTIAL_HISTORY_VIEW_PREF_KEY")
|
||||||
val CLEAR_INPUT_AFTER_EQUALS = booleanPreferencesKey("CLEAR_INPUT_AFTER_EQUALS_PREF_KEY")
|
|
||||||
|
|
||||||
// UNIT CONVERTER
|
// UNIT CONVERTER
|
||||||
val LATEST_LEFT_SIDE = stringPreferencesKey("LATEST_LEFT_SIDE_PREF_KEY")
|
val LATEST_LEFT_SIDE = stringPreferencesKey("LATEST_LEFT_SIDE_PREF_KEY")
|
||||||
|
@ -81,7 +81,6 @@ class UserPreferencesRepositoryImpl @Inject constructor(
|
|||||||
precision = preferences.getDigitsPrecision(),
|
precision = preferences.getDigitsPrecision(),
|
||||||
outputFormat = preferences.getOutputFormat(),
|
outputFormat = preferences.getOutputFormat(),
|
||||||
acButton = preferences.getAcButton(),
|
acButton = preferences.getAcButton(),
|
||||||
clearInputAfterEquals = preferences.getClearInputAfterEquals()
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,12 +277,6 @@ class UserPreferencesRepositoryImpl @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun updateClearInputAfterEquals(enabled: Boolean) {
|
|
||||||
dataStore.edit { preferences ->
|
|
||||||
preferences[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = enabled
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun updateRpnMode(enabled: Boolean) {
|
override suspend fun updateRpnMode(enabled: Boolean) {
|
||||||
dataStore.edit { preferences ->
|
dataStore.edit { preferences ->
|
||||||
preferences[PrefsKeys.RPN_MODE] = enabled
|
preferences[PrefsKeys.RPN_MODE] = enabled
|
||||||
|
@ -116,8 +116,8 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
.stateIn(viewModelScope, CalculatorUIState.Loading)
|
.stateIn(viewModelScope, CalculatorUIState.Loading)
|
||||||
|
|
||||||
fun addTokens(tokens: String) = _input.update {
|
fun addTokens(tokens: String) = _input.update {
|
||||||
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
|
val newValue = if (_equalClicked.value and Token.Digit.allWithDot.contains(tokens)) {
|
||||||
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
|
// Clean input after clicking "=" and any token that is a Digit
|
||||||
TextFieldValue().addTokens(tokens)
|
TextFieldValue().addTokens(tokens)
|
||||||
} else {
|
} else {
|
||||||
it.addTokens(tokens)
|
it.addTokens(tokens)
|
||||||
@ -129,12 +129,7 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun addBracket() = _input.update {
|
fun addBracket() = _input.update {
|
||||||
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
|
val newValue = it.addBracket()
|
||||||
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
|
|
||||||
TextFieldValue().addBracket()
|
|
||||||
} else {
|
|
||||||
it.addBracket()
|
|
||||||
}
|
|
||||||
_equalClicked.update { false }
|
_equalClicked.update { false }
|
||||||
_fractionJob?.cancel()
|
_fractionJob?.cancel()
|
||||||
savedStateHandle[_inputKey] = newValue.text
|
savedStateHandle[_inputKey] = newValue.text
|
||||||
@ -142,8 +137,7 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun deleteTokens() = _input.update {
|
fun deleteTokens() = _input.update {
|
||||||
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
|
val newValue = if (_equalClicked.value) {
|
||||||
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
|
|
||||||
TextFieldValue().deleteTokens()
|
TextFieldValue().deleteTokens()
|
||||||
} else {
|
} else {
|
||||||
it.deleteTokens()
|
it.deleteTokens()
|
||||||
|
@ -22,7 +22,6 @@ import androidx.compose.animation.Crossfade
|
|||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Backspace
|
|
||||||
import androidx.compose.material.icons.filled.Timer
|
import androidx.compose.material.icons.filled.Timer
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@ -48,7 +47,6 @@ internal fun CalculatorSettingsRoute(
|
|||||||
uiState = prefs,
|
uiState = prefs,
|
||||||
navigateUpAction = navigateUpAction,
|
navigateUpAction = navigateUpAction,
|
||||||
updatePartialHistoryView = viewModel::updatePartialHistoryView,
|
updatePartialHistoryView = viewModel::updatePartialHistoryView,
|
||||||
updateClearInputAfterEquals = viewModel::updateClearInputAfterEquals,
|
|
||||||
updateRpnMode = viewModel::updateRpnMode,
|
updateRpnMode = viewModel::updateRpnMode,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -61,7 +59,6 @@ private fun CalculatorSettingsScreen(
|
|||||||
uiState: CalculatorSettingsUIState,
|
uiState: CalculatorSettingsUIState,
|
||||||
navigateUpAction: () -> Unit,
|
navigateUpAction: () -> Unit,
|
||||||
updatePartialHistoryView: (Boolean) -> Unit,
|
updatePartialHistoryView: (Boolean) -> Unit,
|
||||||
updateClearInputAfterEquals: (Boolean) -> Unit,
|
|
||||||
updateRpnMode: (Boolean) -> Unit,
|
updateRpnMode: (Boolean) -> Unit,
|
||||||
) {
|
) {
|
||||||
UnittoScreenWithLargeTopBar(
|
UnittoScreenWithLargeTopBar(
|
||||||
@ -104,14 +101,6 @@ private fun CalculatorSettingsScreen(
|
|||||||
switchState = state.partialHistoryView,
|
switchState = state.partialHistoryView,
|
||||||
onSwitchChange = updatePartialHistoryView
|
onSwitchChange = updatePartialHistoryView
|
||||||
)
|
)
|
||||||
|
|
||||||
UnittoListItem(
|
|
||||||
headlineText = stringResource(R.string.settings_clear_input),
|
|
||||||
icon = Icons.AutoMirrored.Filled.Backspace,
|
|
||||||
supportingText = stringResource(R.string.settings_clear_input_support),
|
|
||||||
switchState = state.clearInputAfterEquals,
|
|
||||||
onSwitchChange = updateClearInputAfterEquals
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,11 +117,9 @@ private fun PreviewCalculatorSettingsScreenStandard() {
|
|||||||
CalculatorSettingsScreen(
|
CalculatorSettingsScreen(
|
||||||
uiState = CalculatorSettingsUIState.Standard(
|
uiState = CalculatorSettingsUIState.Standard(
|
||||||
partialHistoryView = true,
|
partialHistoryView = true,
|
||||||
clearInputAfterEquals = false
|
|
||||||
),
|
),
|
||||||
navigateUpAction = {},
|
navigateUpAction = {},
|
||||||
updatePartialHistoryView = {},
|
updatePartialHistoryView = {},
|
||||||
updateClearInputAfterEquals = {},
|
|
||||||
updateRpnMode = {}
|
updateRpnMode = {}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -144,7 +131,6 @@ private fun PreviewCalculatorSettingsScreenRPN() {
|
|||||||
uiState = CalculatorSettingsUIState.RPN,
|
uiState = CalculatorSettingsUIState.RPN,
|
||||||
navigateUpAction = {},
|
navigateUpAction = {},
|
||||||
updatePartialHistoryView = {},
|
updatePartialHistoryView = {},
|
||||||
updateClearInputAfterEquals = {},
|
|
||||||
updateRpnMode = {}
|
updateRpnMode = {}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,5 @@ internal sealed class CalculatorSettingsUIState {
|
|||||||
|
|
||||||
data class Standard(
|
data class Standard(
|
||||||
val partialHistoryView: Boolean,
|
val partialHistoryView: Boolean,
|
||||||
val clearInputAfterEquals: Boolean,
|
|
||||||
) : CalculatorSettingsUIState()
|
) : CalculatorSettingsUIState()
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,6 @@ internal class CalculatorSettingsViewModel @Inject constructor(
|
|||||||
} else {
|
} else {
|
||||||
CalculatorSettingsUIState.Standard(
|
CalculatorSettingsUIState.Standard(
|
||||||
partialHistoryView = calc.partialHistoryView,
|
partialHistoryView = calc.partialHistoryView,
|
||||||
clearInputAfterEquals = calc.clearInputAfterEquals
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -50,10 +49,6 @@ internal class CalculatorSettingsViewModel @Inject constructor(
|
|||||||
userPrefsRepository.updatePartialHistoryView(enabled)
|
userPrefsRepository.updatePartialHistoryView(enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateClearInputAfterEquals(enabled: Boolean) = viewModelScope.launch {
|
|
||||||
userPrefsRepository.updateClearInputAfterEquals(enabled)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateRpnMode(enabled: Boolean) = viewModelScope.launch {
|
fun updateRpnMode(enabled: Boolean) = viewModelScope.launch {
|
||||||
userPrefsRepository.updateRpnMode(enabled)
|
userPrefsRepository.updateRpnMode(enabled)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user