forked from github/wulkanowy-mirror
Add option to change plus and minus modifier separately (#192)
This commit is contained in:

committed by
Rafał Borcz

parent
92baecbd0d
commit
900065d758
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 }
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user