Adding new features to attendance

This commit is contained in:
xAxee 2023-12-02 20:01:28 +01:00
parent cefb0deba8
commit 62b824f68f
No known key found for this signature in database
GPG Key ID: 3D4FEEAD36B8B148
10 changed files with 80 additions and 3 deletions

View File

@ -104,7 +104,7 @@ android {
externalNativeBuild { externalNativeBuild {
cmake { cmake {
path "src/main/cpp/CMakeLists.txt" path "src/main/cpp/CMakeLists.txt"
version "3.10.2" version "3.22.1"
} }
} }
lint { lint {

View File

@ -11,4 +11,6 @@ class ProfileConfigAttendance(base: ProfileConfig) {
var groupConsecutiveDays by base.config<Boolean>(true) var groupConsecutiveDays by base.config<Boolean>(true)
var showPresenceInMonth by base.config<Boolean>(false) var showPresenceInMonth by base.config<Boolean>(false)
var useSymbols by base.config<Boolean>(false) var useSymbols by base.config<Boolean>(false)
var showDifference by base.config<Boolean>(false)
var sortedDescending by base.config<Boolean>(false)
} }

View File

@ -215,6 +215,8 @@ class AttendanceSummaryFragment : LazyFragment(), CoroutineScope {
totalCountSum += totalCount totalCountSum += totalCount
presenceCountSum += presenceCount presenceCountSum += presenceCount
subject.presenceDifference = presenceCount - (totalCount-presenceCount);
subject.percentage = if (totalCount == 0) subject.percentage = if (totalCount == 0)
0f 0f
else else
@ -286,7 +288,11 @@ class AttendanceSummaryFragment : LazyFragment(), CoroutineScope {
} }
} }
return items.toMutableList() if(manager.sortedDescending){
return items.sortedByDescending { it.percentage }.toMutableList();
} else {
return items.toMutableList()
}
} }
private fun animatePercentageIndicator(targetProgress: Double) { private fun animatePercentageIndicator(targetProgress: Double) {

View File

@ -23,4 +23,5 @@ data class AttendanceSubject(
var typeCountMap: Map<AttendanceType, Int> = mapOf() var typeCountMap: Map<AttendanceType, Int> = mapOf()
var percentage: Float = 0f var percentage: Float = 0f
var presenceDifference: Int = 0
} }

View File

@ -49,6 +49,15 @@ class SubjectViewHolder(
} }
else { else {
b.percentage.setText(R.string.attendance_percentage_format, item.percentage) b.percentage.setText(R.string.attendance_percentage_format, item.percentage)
if(manager.showDifference){
val differenceText = if(item.presenceDifference > 0)
"+" + item.presenceDifference
else
item.presenceDifference
b.percentage.setText(b.percentage.text.toString() + " | " + differenceText);
}
} }
} }
} }

View File

@ -6,9 +6,11 @@ package pl.szczodrzynski.edziennik.ui.dialogs.settings
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.R
import pl.szczodrzynski.edziennik.databinding.AttendanceConfigDialogBinding import pl.szczodrzynski.edziennik.databinding.AttendanceConfigDialogBinding
import pl.szczodrzynski.edziennik.ext.onChange import pl.szczodrzynski.edziennik.ext.onChange
import pl.szczodrzynski.edziennik.ext.onClick
import pl.szczodrzynski.edziennik.ui.dialogs.base.ConfigDialog import pl.szczodrzynski.edziennik.ui.dialogs.base.ConfigDialog
class AttendanceConfigDialog( class AttendanceConfigDialog(
@ -33,6 +35,8 @@ class AttendanceConfigDialog(
b.useSymbols.isChecked = app.profile.config.attendance.useSymbols b.useSymbols.isChecked = app.profile.config.attendance.useSymbols
b.groupConsecutiveDays.isChecked = app.profile.config.attendance.groupConsecutiveDays b.groupConsecutiveDays.isChecked = app.profile.config.attendance.groupConsecutiveDays
b.showPresenceInMonth.isChecked = app.profile.config.attendance.showPresenceInMonth b.showPresenceInMonth.isChecked = app.profile.config.attendance.showPresenceInMonth
b.showDifference.isChecked = app.profile.config.attendance.showDifference
b.sortedDescending.isChecked = app.profile.config.attendance.sortedDescending
} }
override fun initView() { override fun initView() {
@ -45,5 +49,19 @@ class AttendanceConfigDialog(
b.showPresenceInMonth.onChange { _, isChecked -> b.showPresenceInMonth.onChange { _, isChecked ->
app.profile.config.attendance.showPresenceInMonth = isChecked app.profile.config.attendance.showPresenceInMonth = isChecked
} }
b.showDifference.onChange { _, isChecked ->
app.profile.config.attendance.showDifference = isChecked
}
b.sortedDescending.onChange { _, isChecked ->
app.profile.config.attendance.sortedDescending = isChecked
}
b.showDifferenceHelp.onClick {
MaterialAlertDialogBuilder(activity)
.setTitle(R.string.attendance_config_show_difference)
.setMessage(R.string.attendance_config_show_difference_message)
.setPositiveButton(R.string.ok, null)
.show()
}
} }
} }

View File

@ -25,6 +25,10 @@ class AttendanceManager(val app: App) : CoroutineScope {
val useSymbols val useSymbols
get() = app.profile.config.attendance.useSymbols get() = app.profile.config.attendance.useSymbols
val showDifference
get() = app.profile.config.attendance.showDifference
val sortedDescending
get() = app.profile.config.attendance.sortedDescending
fun getTypeShort(baseType: Int): String { fun getTypeShort(baseType: Int): String {
return when (baseType) { return when (baseType) {

View File

@ -3,7 +3,9 @@
~ Copyright (c) Kuba Szczodrzyński 2020-5-4. ~ Copyright (c) Kuba Szczodrzyński 2020-5-4.
--> -->
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<ScrollView <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
@ -52,6 +54,37 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="32dp" android:minHeight="32dp"
android:text="@string/attendance_config_show_presence_in_month" /> android:text="@string/attendance_config_show_presence_in_month" />
<CheckBox
android:id="@+id/sortedDescending"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="32dp"
android:text="@string/attendance_config_sorted_descending"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/showDifference"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minHeight="32dp"
android:text="@string/attendance_config_show_difference" />
<com.mikepenz.iconics.view.IconicsImageView
android:id="@+id/showDifferenceHelp"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="?selectableItemBackgroundBorderless"
android:scaleType="centerInside"
app:iiv_color="?android:textColorSecondary"
app:iiv_icon="cmd-help-circle-outline"
app:iiv_size="24dp"
tools:src="@android:drawable/ic_menu_help" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</layout> </layout>

View File

@ -1433,4 +1433,5 @@
<string name="menu_agenda_config">Agenda settings</string> <string name="menu_agenda_config">Agenda settings</string>
<string name="registration_config_note_sharing_title">Share notes</string> <string name="registration_config_note_sharing_title">Share notes</string>
<string name="home_timetable_all_lessons">All lessons:</string> <string name="home_timetable_all_lessons">All lessons:</string>
<string name="attendace_config_show_difference">Display attendance differences</string>
</resources> </resources>

View File

@ -63,6 +63,9 @@
<string name="attendance_belated_excused" translatable="false">su</string> <string name="attendance_belated_excused" translatable="false">su</string>
<string name="attendance_config_group_consecutive_days">Grupuj kolejne dni na liście</string> <string name="attendance_config_group_consecutive_days">Grupuj kolejne dni na liście</string>
<string name="attendance_config_show_presence_in_month">Wyświetlaj obecność w widoku miesięcy</string> <string name="attendance_config_show_presence_in_month">Wyświetlaj obecność w widoku miesięcy</string>
<string name="attendance_config_show_difference">Wyświetlaj różnice obecności</string>
<string name="attendance_config_show_difference_message">Wyświetla różnice między obecnościami a nieobecnościami (Ile lekcji potrzebujesz lub możesz nie mieć aby mieć nadal 50%) \n\nnp. -1 oznacza, że brakuje ci jednej lekcji do 50%</string>
<string name="attendance_config_sorted_descending">Sortuj od największej obecności</string>
<string name="attendance_config_title">Konfiguracja frekwencji</string> <string name="attendance_config_title">Konfiguracja frekwencji</string>
<string name="attendance_config_use_symbols">Używaj symboli i kolorów wg dziennika</string> <string name="attendance_config_use_symbols">Używaj symboli i kolorów wg dziennika</string>
<string name="attendance_config_use_symbols_hint">Widoczne po rozwinięciu listy</string> <string name="attendance_config_use_symbols_hint">Widoczne po rozwinięciu listy</string>