forked from github/szkolny
[UI/Agenda] Allow prioritizing event subject over event type.
This commit is contained in:
parent
dfd1083e41
commit
5007587192
@ -422,6 +422,12 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope {
|
|||||||
try {
|
try {
|
||||||
App.data = AppData.get(profile.loginStoreType)
|
App.data = AppData.get(profile.loginStoreType)
|
||||||
d("App", "Loaded AppData: ${App.data}")
|
d("App", "Loaded AppData: ${App.data}")
|
||||||
|
// apply newly-added config overrides, if not changed by the user yet
|
||||||
|
for ((key, value) in App.data.configOverrides) {
|
||||||
|
val config = App.profile.config
|
||||||
|
if (!config.has(key))
|
||||||
|
config.set(key, value)
|
||||||
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("App", "Cannot load AppData", e)
|
Log.e("App", "Cannot load AppData", e)
|
||||||
Toast.makeText(this, R.string.app_cannot_load_data, Toast.LENGTH_LONG).show()
|
Toast.makeText(this, R.string.app_cannot_load_data, Toast.LENGTH_LONG).show()
|
||||||
|
@ -43,4 +43,6 @@ abstract class BaseConfig(
|
|||||||
db.configDao().add(ConfigEntry(profileId ?: -1, key, value))
|
db.configDao().add(ConfigEntry(profileId ?: -1, key, value))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun has(key: String) = values.containsKey(key)
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ class ProfileConfigUI(base: ProfileConfig) {
|
|||||||
var agendaGroupByType by base.config<Boolean>(false)
|
var agendaGroupByType by base.config<Boolean>(false)
|
||||||
var agendaLessonChanges by base.config<Boolean>(true)
|
var agendaLessonChanges by base.config<Boolean>(true)
|
||||||
var agendaTeacherAbsence by base.config<Boolean>(true)
|
var agendaTeacherAbsence by base.config<Boolean>(true)
|
||||||
|
var agendaSubjectImportant by base.config<Boolean>(false)
|
||||||
var agendaElearningMark by base.config<Boolean>(false)
|
var agendaElearningMark by base.config<Boolean>(false)
|
||||||
var agendaElearningGroup by base.config<Boolean>(true)
|
var agendaElearningGroup by base.config<Boolean>(true)
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import android.widget.TextView
|
|||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.github.tibolte.agendacalendarview.render.EventRenderer
|
import com.github.tibolte.agendacalendarview.render.EventRenderer
|
||||||
import com.mikepenz.iconics.view.IconicsTextView
|
import com.mikepenz.iconics.view.IconicsTextView
|
||||||
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventBinding
|
import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventBinding
|
||||||
import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventCompactBinding
|
import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventCompactBinding
|
||||||
@ -53,16 +54,24 @@ class AgendaEventRenderer(
|
|||||||
else
|
else
|
||||||
event.time!!.stringHM
|
event.time!!.stringHM
|
||||||
|
|
||||||
|
val agendaSubjectImportant = App.profile.config.ui.agendaSubjectImportant
|
||||||
val eventSubtitle = listOfNotNull(
|
val eventSubtitle = listOfNotNull(
|
||||||
timeText,
|
timeText,
|
||||||
event.subjectLongName,
|
event.subjectLongName.takeIf { !agendaSubjectImportant },
|
||||||
|
event.typeName.takeIf { agendaSubjectImportant },
|
||||||
event.teacherName,
|
event.teacherName,
|
||||||
event.teamName
|
event.teamName
|
||||||
).join(", ")
|
).join(", ")
|
||||||
|
|
||||||
card.foreground.setTintColor(event.eventColor)
|
card.foreground.setTintColor(event.eventColor)
|
||||||
card.background.setTintColor(event.eventColor)
|
card.background.setTintColor(event.eventColor)
|
||||||
manager.setEventTopic(title, event, doneIconColor = textColor)
|
manager.setEventTopic(
|
||||||
|
title = title,
|
||||||
|
event = event,
|
||||||
|
doneIconColor = textColor,
|
||||||
|
showType = !agendaSubjectImportant,
|
||||||
|
showSubject = agendaSubjectImportant,
|
||||||
|
)
|
||||||
title.setTextColor(textColor)
|
title.setTextColor(textColor)
|
||||||
subtitle?.text = eventSubtitle
|
subtitle?.text = eventSubtitle
|
||||||
subtitle?.setTextColor(textColor)
|
subtitle?.setTextColor(textColor)
|
||||||
|
@ -113,7 +113,18 @@ class EventDetailsDialog(
|
|||||||
|
|
||||||
b.typeColor.background?.setTintColor(event.eventColor)
|
b.typeColor.background?.setTintColor(event.eventColor)
|
||||||
|
|
||||||
b.details = mutableListOf(
|
val agendaSubjectImportant = event.subjectLongName != null
|
||||||
|
&& App.config[event.profileId].ui.agendaSubjectImportant
|
||||||
|
|
||||||
|
b.name = if (agendaSubjectImportant)
|
||||||
|
event.subjectLongName
|
||||||
|
else
|
||||||
|
event.typeName
|
||||||
|
|
||||||
|
b.details = listOfNotNull(
|
||||||
|
if (agendaSubjectImportant)
|
||||||
|
event.typeName
|
||||||
|
else
|
||||||
event.subjectLongName,
|
event.subjectLongName,
|
||||||
event.teamName?.asColoredSpannable(colorSecondary)
|
event.teamName?.asColoredSpannable(colorSecondary)
|
||||||
).concat(bullet)
|
).concat(bullet)
|
||||||
|
@ -24,6 +24,7 @@ class EventListAdapter(
|
|||||||
val showDate: Boolean = false,
|
val showDate: Boolean = false,
|
||||||
val showColor: Boolean = true,
|
val showColor: Boolean = true,
|
||||||
val showType: Boolean = true,
|
val showType: Boolean = true,
|
||||||
|
val showTypeColor: Boolean = showType,
|
||||||
val showTime: Boolean = true,
|
val showTime: Boolean = true,
|
||||||
val showSubject: Boolean = true,
|
val showSubject: Boolean = true,
|
||||||
val markAsSeen: Boolean = true,
|
val markAsSeen: Boolean = true,
|
||||||
|
@ -113,7 +113,7 @@ class EventViewHolder(
|
|||||||
b.attachmentIcon.isVisible = item.hasAttachments
|
b.attachmentIcon.isVisible = item.hasAttachments
|
||||||
|
|
||||||
b.typeColor.background?.setTintColor(item.eventColor)
|
b.typeColor.background?.setTintColor(item.eventColor)
|
||||||
b.typeColor.isVisible = adapter.showType && adapter.showColor
|
b.typeColor.isVisible = adapter.showTypeColor
|
||||||
|
|
||||||
b.editButton.isVisible = !adapter.simpleMode
|
b.editButton.isVisible = !adapter.simpleMode
|
||||||
&& item.addedManually
|
&& item.addedManually
|
||||||
|
@ -63,9 +63,10 @@ class HomeEventsCard(
|
|||||||
simpleMode = true,
|
simpleMode = true,
|
||||||
showWeekDay = true,
|
showWeekDay = true,
|
||||||
showDate = true,
|
showDate = true,
|
||||||
showType = true,
|
showType = !profile.config.ui.agendaSubjectImportant,
|
||||||
|
showTypeColor = true,
|
||||||
showTime = false,
|
showTime = false,
|
||||||
showSubject = false,
|
showSubject = profile.config.ui.agendaSubjectImportant,
|
||||||
markAsSeen = false,
|
markAsSeen = false,
|
||||||
onEventClick = {
|
onEventClick = {
|
||||||
EventDetailsDialog(
|
EventDetailsDialog(
|
||||||
|
@ -48,6 +48,7 @@ class EventManager(val app: App) : CoroutineScope {
|
|||||||
title: TextView,
|
title: TextView,
|
||||||
event: EventFull,
|
event: EventFull,
|
||||||
showType: Boolean = true,
|
showType: Boolean = true,
|
||||||
|
showSubject: Boolean = false,
|
||||||
showNotes: Boolean = true,
|
showNotes: Boolean = true,
|
||||||
doneIconColor: Int? = null
|
doneIconColor: Int? = null
|
||||||
) {
|
) {
|
||||||
@ -60,6 +61,7 @@ class EventManager(val app: App) : CoroutineScope {
|
|||||||
if (event.hasNotes() && hasReplacingNotes && showNotes) "{cmd-swap-horizontal} " else null,
|
if (event.hasNotes() && hasReplacingNotes && showNotes) "{cmd-swap-horizontal} " else null,
|
||||||
if (event.hasNotes() && !hasReplacingNotes && showNotes) "{cmd-playlist-edit} " else null,
|
if (event.hasNotes() && !hasReplacingNotes && showNotes) "{cmd-playlist-edit} " else null,
|
||||||
if (showType) "${event.typeName ?: "wydarzenie"} - " else null,
|
if (showType) "${event.typeName ?: "wydarzenie"} - " else null,
|
||||||
|
if (showSubject) event.subjectLongName?.plus(" - ") else null,
|
||||||
topicSpan,
|
topicSpan,
|
||||||
).concat()
|
).concat()
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ class NoteManager(private val app: App) {
|
|||||||
activity = activity,
|
activity = activity,
|
||||||
simpleMode = true,
|
simpleMode = true,
|
||||||
showDate = true,
|
showDate = true,
|
||||||
showColor = false,
|
showTypeColor = false,
|
||||||
showTime = false,
|
showTime = false,
|
||||||
markAsSeen = false,
|
markAsSeen = false,
|
||||||
showNotes = false,
|
showNotes = false,
|
||||||
|
@ -50,6 +50,14 @@
|
|||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_teacher_absence" />
|
android:text="@string/agenda_config_teacher_absence" />
|
||||||
|
|
||||||
|
<com.google.android.material.checkbox.MaterialCheckBox
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:checked="@={config.ui.agendaSubjectImportant}"
|
||||||
|
android:minHeight="32dp"
|
||||||
|
android:text="@string/agenda_config_subject_important" />
|
||||||
|
|
||||||
<com.google.android.material.checkbox.MaterialCheckBox
|
<com.google.android.material.checkbox.MaterialCheckBox
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
type="pl.szczodrzynski.edziennik.data.db.full.EventFull" />
|
type="pl.szczodrzynski.edziennik.data.db.full.EventFull" />
|
||||||
<variable name="eventShared" type="boolean" />
|
<variable name="eventShared" type="boolean" />
|
||||||
<variable name="eventOwn" type="boolean" />
|
<variable name="eventOwn" type="boolean" />
|
||||||
|
<variable name="name" type="java.lang.CharSequence" />
|
||||||
<variable name="details" type="java.lang.CharSequence" />
|
<variable name="details" type="java.lang.CharSequence" />
|
||||||
<variable name="monthName" type="String" />
|
<variable name="monthName" type="String" />
|
||||||
</data>
|
</data>
|
||||||
@ -55,7 +56,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{event.typeName}"
|
android:text="@{name}"
|
||||||
android:textIsSelectable="true"
|
android:textIsSelectable="true"
|
||||||
android:textAppearance="@style/NavView.TextView.Title"
|
android:textAppearance="@style/NavView.TextView.Title"
|
||||||
android:visibility="@{event.typeName == null ? View.GONE : View.VISIBLE}"
|
android:visibility="@{event.typeName == null ? View.GONE : View.VISIBLE}"
|
||||||
|
@ -83,6 +83,7 @@
|
|||||||
},
|
},
|
||||||
"university": {
|
"university": {
|
||||||
"configOverrides": {
|
"configOverrides": {
|
||||||
|
"agendaSubjectImportant": true,
|
||||||
"shareByDefault": true,
|
"shareByDefault": true,
|
||||||
"timetableColorSubjectName": true,
|
"timetableColorSubjectName": true,
|
||||||
"timetableTrimHourRange": true
|
"timetableTrimHourRange": true
|
||||||
|
@ -1551,4 +1551,5 @@
|
|||||||
<string name="settings_register_share_by_default_subtext">Ustaw tworzone wydarzenia domyślnie jako udostępnione</string>
|
<string name="settings_register_share_by_default_subtext">Ustaw tworzone wydarzenia domyślnie jako udostępnione</string>
|
||||||
<string name="settings_registration_section">Rejestracja</string>
|
<string name="settings_registration_section">Rejestracja</string>
|
||||||
<string name="home_timetable_all_lessons">Wszystkie lekcje:</string>
|
<string name="home_timetable_all_lessons">Wszystkie lekcje:</string>
|
||||||
|
<string name="agenda_config_subject_important">Wyświetl nazwę przedmiotu zamiast rodzaju</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user