Continuous calculations

closes #147
This commit is contained in:
Sad Ellie 2024-01-03 14:45:44 +03:00
parent 659b64ebd4
commit d0fcf5b138
13 changed files with 4 additions and 52 deletions

View File

@ -83,7 +83,6 @@ class BackupManagerTest {
// CALCULATOR
it[PrefsKeys.RADIAN_MODE] = FakeUsrPreferenceValues.radianMode
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = FakeUsrPreferenceValues.partialHistoryView
it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = FakeUsrPreferenceValues.clearInputAfterEquals
// UNIT CONVERTER
it[PrefsKeys.LATEST_LEFT_SIDE] = FakeUsrPreferenceValues.latestLeftSide
@ -116,7 +115,6 @@ class BackupManagerTest {
outputFormat = FakeUsrPreferenceValues.outputFormat,
radianMode = FakeUsrPreferenceValues.radianMode,
partialHistoryView = FakeUsrPreferenceValues.partialHistoryView,
clearInputAfterEquals = FakeUsrPreferenceValues.clearInputAfterEquals,
latestLeftSide = FakeUsrPreferenceValues.latestLeftSide,
latestRightSide = FakeUsrPreferenceValues.latestRightSide,
shownUnitGroups = FakeUsrPreferenceValues.shownUnitGroups,

View File

@ -29,7 +29,6 @@ import com.sadellie.unitto.data.database.TimeZoneDao
import com.sadellie.unitto.data.database.UnitsDao
import com.sadellie.unitto.data.userprefs.PrefsKeys
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.getDigitsPrecision
import com.sadellie.unitto.data.userprefs.getEnableAmoledTheme
@ -137,7 +136,6 @@ class BackupManager @Inject constructor(
outputFormat = data.getOutputFormat(),
radianMode = data.getRadianMode(),
partialHistoryView = data.getPartialHistoryView(),
clearInputAfterEquals = data.getClearInputAfterEquals(),
latestLeftSide = data.getLatestLeftSide(),
latestRightSide = data.getLatestRightSide(),
shownUnitGroups = data.getShownUnitGroups().joinToString(","),
@ -174,7 +172,6 @@ class BackupManager @Inject constructor(
// CALCULATOR
it[PrefsKeys.RADIAN_MODE] = userData.radianMode
it[PrefsKeys.PARTIAL_HISTORY_VIEW] = userData.partialHistoryView
it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = userData.clearInputAfterEquals
// UNIT CONVERTER
it[PrefsKeys.LATEST_LEFT_SIDE] = userData.latestLeftSide

View File

@ -46,7 +46,6 @@ internal data class UserData(
@Json(name = "radianMode") val radianMode: Boolean,
@Json(name = "partialHistoryView") val partialHistoryView: Boolean,
@Json(name = "clearInputAfterEquals") val clearInputAfterEquals: Boolean,
@Json(name = "latestLeftSide") val latestLeftSide: String,
@Json(name = "latestRightSide") val latestRightSide: String,

View File

@ -87,7 +87,5 @@ interface UserPreferencesRepository {
suspend fun updateAcButton(enabled: Boolean)
suspend fun updateClearInputAfterEquals(enabled: Boolean)
suspend fun updateRpnMode(enabled: Boolean)
}

View File

@ -27,5 +27,4 @@ interface CalculatorPreferences {
val partialHistoryView: Boolean
val precision: Int
val outputFormat: Int
val clearInputAfterEquals: Boolean
}

View File

@ -124,10 +124,6 @@ fun Preferences.getAcButton(): Boolean {
return this[PrefsKeys.AC_BUTTON] ?: true
}
fun Preferences.getClearInputAfterEquals(): Boolean {
return this[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] ?: false
}
fun Preferences.getRpnMode(): Boolean {
return this[PrefsKeys.RPN_MODE] ?: false
}

View File

@ -57,7 +57,6 @@ data class CalculatorPreferencesImpl(
override val partialHistoryView: Boolean,
override val precision: Int,
override val outputFormat: Int,
override val clearInputAfterEquals: Boolean,
) : CalculatorPreferences
data class ConverterPreferencesImpl(

View File

@ -46,7 +46,6 @@ object PrefsKeys {
// CALCULATOR
val RADIAN_MODE = booleanPreferencesKey("RADIAN_MODE_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
val LATEST_LEFT_SIDE = stringPreferencesKey("LATEST_LEFT_SIDE_PREF_KEY")

View File

@ -81,7 +81,6 @@ class UserPreferencesRepositoryImpl @Inject constructor(
precision = preferences.getDigitsPrecision(),
outputFormat = preferences.getOutputFormat(),
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) {
dataStore.edit { preferences ->
preferences[PrefsKeys.RPN_MODE] = enabled

View File

@ -116,8 +116,8 @@ internal class CalculatorViewModel @Inject constructor(
.stateIn(viewModelScope, CalculatorUIState.Loading)
fun addTokens(tokens: String) = _input.update {
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
val newValue = if (_equalClicked.value and Token.Digit.allWithDot.contains(tokens)) {
// Clean input after clicking "=" and any token that is a Digit
TextFieldValue().addTokens(tokens)
} else {
it.addTokens(tokens)
@ -129,12 +129,7 @@ internal class CalculatorViewModel @Inject constructor(
}
fun addBracket() = _input.update {
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
TextFieldValue().addBracket()
} else {
it.addBracket()
}
val newValue = it.addBracket()
_equalClicked.update { false }
_fractionJob?.cancel()
savedStateHandle[_inputKey] = newValue.text
@ -142,8 +137,7 @@ internal class CalculatorViewModel @Inject constructor(
}
fun deleteTokens() = _input.update {
val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true
val newValue = if (_equalClicked.value and clearInputAfterEquals) {
val newValue = if (_equalClicked.value) {
TextFieldValue().deleteTokens()
} else {
it.deleteTokens()

View File

@ -22,7 +22,6 @@ import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Backspace
import androidx.compose.material.icons.filled.Timer
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@ -48,7 +47,6 @@ internal fun CalculatorSettingsRoute(
uiState = prefs,
navigateUpAction = navigateUpAction,
updatePartialHistoryView = viewModel::updatePartialHistoryView,
updateClearInputAfterEquals = viewModel::updateClearInputAfterEquals,
updateRpnMode = viewModel::updateRpnMode,
)
}
@ -61,7 +59,6 @@ private fun CalculatorSettingsScreen(
uiState: CalculatorSettingsUIState,
navigateUpAction: () -> Unit,
updatePartialHistoryView: (Boolean) -> Unit,
updateClearInputAfterEquals: (Boolean) -> Unit,
updateRpnMode: (Boolean) -> Unit,
) {
UnittoScreenWithLargeTopBar(
@ -104,14 +101,6 @@ private fun CalculatorSettingsScreen(
switchState = state.partialHistoryView,
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(
uiState = CalculatorSettingsUIState.Standard(
partialHistoryView = true,
clearInputAfterEquals = false
),
navigateUpAction = {},
updatePartialHistoryView = {},
updateClearInputAfterEquals = {},
updateRpnMode = {}
)
}
@ -144,7 +131,6 @@ private fun PreviewCalculatorSettingsScreenRPN() {
uiState = CalculatorSettingsUIState.RPN,
navigateUpAction = {},
updatePartialHistoryView = {},
updateClearInputAfterEquals = {},
updateRpnMode = {}
)
}

View File

@ -25,6 +25,5 @@ internal sealed class CalculatorSettingsUIState {
data class Standard(
val partialHistoryView: Boolean,
val clearInputAfterEquals: Boolean,
) : CalculatorSettingsUIState()
}

View File

@ -40,7 +40,6 @@ internal class CalculatorSettingsViewModel @Inject constructor(
} else {
CalculatorSettingsUIState.Standard(
partialHistoryView = calc.partialHistoryView,
clearInputAfterEquals = calc.clearInputAfterEquals
)
}
}
@ -50,10 +49,6 @@ internal class CalculatorSettingsViewModel @Inject constructor(
userPrefsRepository.updatePartialHistoryView(enabled)
}
fun updateClearInputAfterEquals(enabled: Boolean) = viewModelScope.launch {
userPrefsRepository.updateClearInputAfterEquals(enabled)
}
fun updateRpnMode(enabled: Boolean) = viewModelScope.launch {
userPrefsRepository.updateRpnMode(enabled)
}