diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt index 430a6cac..205baa3a 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/PreferencesRepository.kt @@ -24,8 +24,11 @@ class PreferencesRepository @Inject constructor( val currentTheme: Int get() = sharedPref.getString(currentThemeKey, "1")?.toInt() ?: 1 - val gradeModifier: Double - get() = sharedPref.getString(context.getString(R.string.pref_key_grade_modifier), "0.0")?.toDouble() ?: 0.0 + val gradePlusModifier: Double + get() = sharedPref.getString(context.getString(R.string.pref_key_grade_modifier_plus), "0.0")?.toDouble() ?: 0.0 + + val gradeMinusModifier: Double + get() = sharedPref.getString(context.getString(R.string.pref_key_grade_modifier_minus), "0.0")?.toDouble() ?: 0.0 val serviceEnablesKey: String = context.getString(R.string.pref_key_services_enable) val isServiceEnabled: Boolean diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt index c17c2402..241b9f68 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/details/GradeDetailsPresenter.kt @@ -34,7 +34,7 @@ class GradeDetailsPresenter @Inject constructor( disposable.add(studentRepository.getCurrentStudent() .flatMap { semesterRepository.getSemesters(it) } .flatMap { gradeRepository.getGrades(it.first { item -> item.semesterId == semesterId }, forceRefresh) } - .map { it.map { item -> item.changeModifier(preferencesRepository.gradeModifier) } } + .map { it.map { item -> item.changeModifier(preferencesRepository.gradePlusModifier, preferencesRepository.gradeMinusModifier) } } .map { createGradeItems(it.groupBy { grade -> grade.subject }.toSortedMap()) } .subscribeOn(schedulers.backgroundThread) .observeOn(schedulers.mainThread) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryPresenter.kt index f844995e..2715aac4 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/summary/GradeSummaryPresenter.kt @@ -40,7 +40,7 @@ class GradeSummaryPresenter @Inject constructor( .flatMap { gradesSummary -> gradeRepository.getGrades(it, forceRefresh) .map { grades -> - grades.map { item -> item.changeModifier(preferencesRepository.gradeModifier) } + grades.map { item -> item.changeModifier(preferencesRepository.gradePlusModifier, preferencesRepository.gradeMinusModifier) } .groupBy { grade -> grade.subject } .mapValues { entry -> entry.value.calcAverage() } .filterValues { value -> value != 0.0 } diff --git a/app/src/main/java/io/github/wulkanowy/utils/GradeExtension.kt b/app/src/main/java/io/github/wulkanowy/utils/GradeExtension.kt index b75cca1a..638bf364 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/GradeExtension.kt +++ b/app/src/main/java/io/github/wulkanowy/utils/GradeExtension.kt @@ -47,9 +47,14 @@ inline val Grade.colorStringId: Int } } -fun Grade.changeModifier(newModifier: Double): Grade { - if (modifier != 0.0 && newModifier != 0.0) { - modifier = if (modifier > 0) newModifier else -newModifier +fun Grade.changeModifier(plusModifier: Double, minusModifier: Double): Grade { + if (modifier != 0.0) { + if (plusModifier != 0.0 && modifier > 0) { + modifier = plusModifier + } + if (minusModifier != .0 && modifier < 0) { + modifier = -minusModifier + } } return this -} \ No newline at end of file +} diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 79a51e2a..1fd97160 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -217,7 +217,8 @@ Pokazuj podsumowanie w ocenach Pokazuj obecność we frekwencji Ciemny motyw (Beta) - Wartość plusa i minusa + Wartość plusa + Wartość minusa Rozwiń oceny Powiadomienia diff --git a/app/src/main/res/values/preferences_keys.xml b/app/src/main/res/values/preferences_keys.xml index cd0a9a65..ea2585e7 100644 --- a/app/src/main/res/values/preferences_keys.xml +++ b/app/src/main/res/values/preferences_keys.xml @@ -3,7 +3,8 @@ start_menu attendance_present theme - grade_modifier + grade_modifier_plus + grade_modifier_minus expand_grade services_enable services_interval diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 201d311a..fb955f3b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -199,7 +199,8 @@ Show the summary in the grades Show presence in attendance Dark theme (Beta) - Value of the plus and minus + Value of the plus + Value of the minus Expand grades Notifications diff --git a/app/src/main/res/xml/scheme_preferences.xml b/app/src/main/res/xml/scheme_preferences.xml index 27addc83..1ba8885a 100644 --- a/app/src/main/res/xml/scheme_preferences.xml +++ b/app/src/main/res/xml/scheme_preferences.xml @@ -34,9 +34,17 @@ android:defaultValue="0.0" android:entries="@array/grade_modifier_entries" android:entryValues="@array/grade_modifier_value" - android:key="@string/pref_key_grade_modifier" + android:key="@string/pref_key_grade_modifier_plus" android:summary="%s" - android:title="@string/pref_view_grade_modifier" + android:title="@string/pref_view_grade_modifier_plus" + app:iconSpaceReserved="false" /> +