mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2024-11-24 19:04:38 -06:00
[UI] Remove "enable shared events" setting. Reorder settings a bit.
This commit is contained in:
parent
845e09d875
commit
c90ad97f55
@ -49,7 +49,7 @@ interface ProfileDao {
|
|||||||
@get:Query("SELECT profileId FROM profiles WHERE profileId >= 0 ORDER BY profileId")
|
@get:Query("SELECT profileId FROM profiles WHERE profileId >= 0 ORDER BY profileId")
|
||||||
val idsNow: List<Int>
|
val idsNow: List<Int>
|
||||||
|
|
||||||
@Query("SELECT profiles.* FROM teams JOIN profiles USING(profileId) WHERE teamCode = :teamCode AND registration = " + Profile.REGISTRATION_ENABLED + " AND enableSharedEvents = 1")
|
@Query("SELECT profiles.* FROM teams JOIN profiles USING(profileId) WHERE teamCode = :teamCode AND registration = " + Profile.REGISTRATION_ENABLED)
|
||||||
fun getByTeamCodeNowWithRegistration(teamCode: String?): List<Profile>
|
fun getByTeamCodeNowWithRegistration(teamCode: String?): List<Profile>
|
||||||
|
|
||||||
@get:Query("SELECT profileId FROM profiles WHERE profileId > 0 ORDER BY profileId ASC LIMIT 1")
|
@get:Query("SELECT profileId FROM profiles WHERE profileId > 0 ORDER BY profileId ASC LIMIT 1")
|
||||||
|
@ -54,7 +54,8 @@ open class Profile(
|
|||||||
var empty = true
|
var empty = true
|
||||||
var archived = false
|
var archived = false
|
||||||
var syncEnabled = true
|
var syncEnabled = true
|
||||||
var enableSharedEvents = true
|
@ColumnInfo(name = "enableSharedEvents")
|
||||||
|
var unused1 = true
|
||||||
var registration = REGISTRATION_UNSPECIFIED
|
var registration = REGISTRATION_UNSPECIFIED
|
||||||
var userCode = ""
|
var userCode = ""
|
||||||
|
|
||||||
|
@ -32,48 +32,37 @@ class AgendaConfigDialog(
|
|||||||
override fun inflate(layoutInflater: LayoutInflater) =
|
override fun inflate(layoutInflater: LayoutInflater) =
|
||||||
DialogConfigAgendaBinding.inflate(layoutInflater)
|
DialogConfigAgendaBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
private val profileConfig by lazy { app.config.forProfile().ui }
|
private val profileConfig by lazy { app.config.forProfile() }
|
||||||
|
|
||||||
override suspend fun loadConfig() {
|
override suspend fun loadConfig() {
|
||||||
b.config = profileConfig
|
b.config = profileConfig
|
||||||
b.isAgendaMode = profileConfig.agendaViewType == Profile.AGENDA_DEFAULT
|
b.isAgendaMode = profileConfig.ui.agendaViewType == Profile.AGENDA_DEFAULT
|
||||||
|
|
||||||
b.eventSharingEnabled.isChecked =
|
var calledFromListener = false
|
||||||
app.profile.enableSharedEvents && app.profile.canShare
|
b.eventSharingEnabled.isChecked = app.profile.canShare
|
||||||
|
b.shareByDefault.isEnabled = app.profile.canShare
|
||||||
b.eventSharingEnabled.onChange { _, isChecked ->
|
b.eventSharingEnabled.onChange { _, isChecked ->
|
||||||
if (isChecked && !app.profile.canShare) {
|
if (calledFromListener) {
|
||||||
b.eventSharingEnabled.isChecked = false
|
calledFromListener = false
|
||||||
|
return@onChange
|
||||||
|
}
|
||||||
|
b.eventSharingEnabled.isChecked = !isChecked
|
||||||
val dialog = RegistrationConfigDialog(
|
val dialog = RegistrationConfigDialog(
|
||||||
activity,
|
activity,
|
||||||
app.profile,
|
app.profile,
|
||||||
onChangeListener = { enabled ->
|
onChangeListener = { enabled ->
|
||||||
|
calledFromListener = true
|
||||||
b.eventSharingEnabled.isChecked = enabled
|
b.eventSharingEnabled.isChecked = enabled
|
||||||
setEventSharingEnabled(enabled)
|
b.shareByDefault.isEnabled = enabled
|
||||||
},
|
},
|
||||||
onShowListener,
|
onShowListener,
|
||||||
onDismissListener,
|
onDismissListener,
|
||||||
)
|
)
|
||||||
|
if (isChecked)
|
||||||
dialog.showEnableDialog()
|
dialog.showEnableDialog()
|
||||||
|
else
|
||||||
|
dialog.showDisableDialog()
|
||||||
return@onChange
|
return@onChange
|
||||||
}
|
}
|
||||||
setEventSharingEnabled(isChecked)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setEventSharingEnabled(enabled: Boolean) {
|
|
||||||
if (enabled == app.profile.enableSharedEvents)
|
|
||||||
return
|
|
||||||
app.profile.enableSharedEvents = enabled
|
|
||||||
app.profileSave()
|
|
||||||
MaterialAlertDialogBuilder(activity)
|
|
||||||
.setTitle(R.string.event_sharing)
|
|
||||||
.setMessage(
|
|
||||||
if (enabled)
|
|
||||||
R.string.settings_register_shared_events_dialog_enabled_text
|
|
||||||
else
|
|
||||||
R.string.settings_register_shared_events_dialog_disabled_text
|
|
||||||
)
|
|
||||||
.setPositiveButton(R.string.ok, null)
|
|
||||||
.show()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,9 +137,7 @@ class EventManualDialog(
|
|||||||
|
|
||||||
loadLists()
|
loadLists()
|
||||||
|
|
||||||
val shareByDefault = profileConfig.shareByDefault
|
val shareByDefault = profileConfig.shareByDefault && profile.canShare
|
||||||
&& profile.enableSharedEvents
|
|
||||||
&& profile.registration == Profile.REGISTRATION_ENABLED
|
|
||||||
|
|
||||||
b.shareSwitch.isChecked = editingShared || editingEvent == null && shareByDefault
|
b.shareSwitch.isChecked = editingShared || editingEvent == null && shareByDefault
|
||||||
b.shareSwitch.isEnabled = !editingShared || editingOwn
|
b.shareSwitch.isEnabled = !editingShared || editingOwn
|
||||||
@ -417,20 +415,6 @@ class EventManualDialog(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (share && !profile.enableSharedEvents) {
|
|
||||||
MaterialAlertDialogBuilder(activity)
|
|
||||||
.setTitle(R.string.event_sharing)
|
|
||||||
.setMessage(R.string.settings_register_shared_events_dialog_enabled_text)
|
|
||||||
.setPositiveButton(R.string.ok) { _, _ ->
|
|
||||||
profile.enableSharedEvents = true
|
|
||||||
app.profileSave(profile)
|
|
||||||
saveEvent()
|
|
||||||
}
|
|
||||||
.setNegativeButton(R.string.cancel, null)
|
|
||||||
.show()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
b.dateDropdown.error = null
|
b.dateDropdown.error = null
|
||||||
b.teamDropdown.error = null
|
b.teamDropdown.error = null
|
||||||
b.typeDropdown.error = null
|
b.typeDropdown.error = null
|
||||||
|
@ -79,23 +79,6 @@ class NoteEditorDialog(
|
|||||||
return NO_DISMISS
|
return NO_DISMISS
|
||||||
}
|
}
|
||||||
|
|
||||||
if (note.isShared && !profile.enableSharedEvents) {
|
|
||||||
MaterialAlertDialogBuilder(activity)
|
|
||||||
.setTitle(R.string.event_sharing)
|
|
||||||
.setMessage(R.string.settings_register_shared_events_dialog_enabled_text)
|
|
||||||
.setPositiveButton(R.string.ok) { _, _ ->
|
|
||||||
profile.enableSharedEvents = true
|
|
||||||
app.profileSave(profile)
|
|
||||||
launch {
|
|
||||||
if (onPositiveClick())
|
|
||||||
dismiss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.setNegativeButton(R.string.cancel, null)
|
|
||||||
.show()
|
|
||||||
return NO_DISMISS
|
|
||||||
}
|
|
||||||
|
|
||||||
if (note.isShared || editingNote?.isShared == true) {
|
if (note.isShared || editingNote?.isShared == true) {
|
||||||
progressDialog = MaterialAlertDialogBuilder(activity)
|
progressDialog = MaterialAlertDialogBuilder(activity)
|
||||||
.setTitle(R.string.please_wait)
|
.setTitle(R.string.please_wait)
|
||||||
@ -153,9 +136,7 @@ class NoteEditorDialog(
|
|||||||
|
|
||||||
b.ownerType = owner?.getNoteType() ?: Note.OwnerType.NONE
|
b.ownerType = owner?.getNoteType() ?: Note.OwnerType.NONE
|
||||||
b.editingNote = editingNote
|
b.editingNote = editingNote
|
||||||
b.shareByDefault = profileConfig.shareByDefault
|
b.shareByDefault = profileConfig.shareByDefault && profile?.canShare == true
|
||||||
&& profile?.enableSharedEvents == true
|
|
||||||
&& profile.registration == Profile.REGISTRATION_ENABLED
|
|
||||||
|
|
||||||
b.color.clear().append(Note.Color.values().map { color ->
|
b.color.clear().append(Note.Color.values().map { color ->
|
||||||
TextInputDropDown.Item(
|
TextInputDropDown.Item(
|
||||||
|
@ -23,6 +23,6 @@ abstract class SettingsCard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun buildCard(): MaterialAboutCard
|
protected abstract fun buildCard(): MaterialAboutCard
|
||||||
protected abstract fun getItems(): List<MaterialAboutItem>
|
protected abstract fun getItems(card: MaterialAboutCard): List<MaterialAboutItem>
|
||||||
protected open fun getItemsMore(): List<MaterialAboutItem> = listOf()
|
protected open fun getItemsMore(card: MaterialAboutCard): List<MaterialAboutItem> = listOf()
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,8 @@ class SettingsUtil(
|
|||||||
|
|
||||||
fun createCard(
|
fun createCard(
|
||||||
titleRes: Int?,
|
titleRes: Int?,
|
||||||
items: List<MaterialAboutItem>,
|
items: (card: MaterialAboutCard) -> List<MaterialAboutItem>,
|
||||||
itemsMore: List<MaterialAboutItem>,
|
itemsMore: (card: MaterialAboutCard) -> List<MaterialAboutItem>,
|
||||||
backgroundColor: Int? = null,
|
backgroundColor: Int? = null,
|
||||||
theme: Int? = null
|
theme: Int? = null
|
||||||
): MaterialAboutCard {
|
): MaterialAboutCard {
|
||||||
@ -44,10 +44,11 @@ class SettingsUtil(
|
|||||||
.cardColor(backgroundColor ?: 0)
|
.cardColor(backgroundColor ?: 0)
|
||||||
.theme(theme ?: 0)
|
.theme(theme ?: 0)
|
||||||
.build()
|
.build()
|
||||||
card.items.addAll(items)
|
card.items.addAll(items(card))
|
||||||
|
|
||||||
if (itemsMore.isNotEmpty()) {
|
val more = itemsMore(card)
|
||||||
card.items.add(createMoreItem(card, itemsMore))
|
if (more.isNotEmpty()) {
|
||||||
|
card.items.add(createMoreItem(card, more))
|
||||||
}
|
}
|
||||||
|
|
||||||
return card
|
return card
|
||||||
|
@ -42,17 +42,14 @@ class SettingsAboutCard(util: SettingsUtil) : SettingsCard(util), CoroutineScope
|
|||||||
override fun buildCard(): MaterialAboutCard =
|
override fun buildCard(): MaterialAboutCard =
|
||||||
util.createCard(
|
util.createCard(
|
||||||
null,
|
null,
|
||||||
items = listOf(),
|
items = ::getItems,
|
||||||
itemsMore = listOf(),
|
itemsMore = ::getItemsMore,
|
||||||
backgroundColor = 0xff1976d2.toInt(),
|
backgroundColor = 0xff1976d2.toInt(),
|
||||||
theme = R.style.AppTheme_Dark
|
theme = R.style.AppTheme_Dark
|
||||||
).also {
|
).also {
|
||||||
it.items.addAll(getItems(it))
|
it.items.addAll(getItems(it))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItems() = listOf<MaterialAboutItem>()
|
|
||||||
override fun getItemsMore() = listOf<MaterialAboutItem>()
|
|
||||||
|
|
||||||
private val versionDetailsItem by lazy {
|
private val versionDetailsItem by lazy {
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
text = R.string.settings_about_version_details_text,
|
text = R.string.settings_about_version_details_text,
|
||||||
@ -64,7 +61,7 @@ class SettingsAboutCard(util: SettingsUtil) : SettingsCard(util), CoroutineScope
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getItems(card: MaterialAboutCard) = listOf(
|
override fun getItems(card: MaterialAboutCard) = listOf(
|
||||||
util.createTitleItem(),
|
util.createTitleItem(),
|
||||||
|
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
package pl.szczodrzynski.edziennik.ui.settings.cards
|
package pl.szczodrzynski.edziennik.ui.settings.cards
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.ui.dialogs.settings.ProfileConfigDialog
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.ProfileConfigDialog
|
||||||
@ -17,8 +18,8 @@ class SettingsProfileCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
|
|
||||||
override fun buildCard() = util.createCard(
|
override fun buildCard() = util.createCard(
|
||||||
null,
|
null,
|
||||||
items = getItems(),
|
items = ::getItems,
|
||||||
itemsMore = listOf()
|
itemsMore = ::getItemsMore,
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun getProfileItem(): MaterialAboutProfileItem = util.createProfileItem(
|
private fun getProfileItem(): MaterialAboutProfileItem = util.createProfileItem(
|
||||||
@ -34,7 +35,7 @@ class SettingsProfileCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
}).show()
|
}).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItems() = listOf(
|
override fun getItems(card: MaterialAboutCard) = listOf(
|
||||||
getProfileItem(),
|
getProfileItem(),
|
||||||
|
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.ui.settings.cards
|
package pl.szczodrzynski.edziennik.ui.settings.cards
|
||||||
|
|
||||||
|
import com.danielstone.materialaboutlibrary.items.MaterialAboutItem
|
||||||
|
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import eu.szkolny.font.SzkolnyFont
|
import eu.szkolny.font.SzkolnyFont
|
||||||
@ -29,8 +31,8 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
|
|
||||||
override fun buildCard() = util.createCard(
|
override fun buildCard() = util.createCard(
|
||||||
R.string.settings_card_register_title,
|
R.string.settings_card_register_title,
|
||||||
items = getItems(),
|
items = ::getItems,
|
||||||
itemsMore = getItemsMore()
|
itemsMore = ::getItemsMore,
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun getBellSync() =
|
private fun getBellSync() =
|
||||||
@ -41,34 +43,6 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
)
|
)
|
||||||
} ?: activity.getString(R.string.settings_register_bell_sync_subtext_disabled)
|
} ?: activity.getString(R.string.settings_register_bell_sync_subtext_disabled)
|
||||||
|
|
||||||
private val sharedEventsItem by lazy {
|
|
||||||
util.createPropertyItem(
|
|
||||||
text = R.string.settings_register_shared_events_text,
|
|
||||||
subText = R.string.settings_register_shared_events_subtext,
|
|
||||||
icon = CommunityMaterial.Icon3.cmd_share_outline,
|
|
||||||
value = app.profile.enableSharedEvents
|
|
||||||
) { item, value ->
|
|
||||||
app.profile.enableSharedEvents = value
|
|
||||||
app.profileSave()
|
|
||||||
MaterialAlertDialogBuilder(activity)
|
|
||||||
.setTitle(R.string.event_sharing)
|
|
||||||
.setMessage(
|
|
||||||
if (value)
|
|
||||||
R.string.settings_register_shared_events_dialog_enabled_text
|
|
||||||
else
|
|
||||||
R.string.settings_register_shared_events_dialog_disabled_text
|
|
||||||
)
|
|
||||||
.setPositiveButton(R.string.ok, null)
|
|
||||||
.show()
|
|
||||||
if (value) {
|
|
||||||
card.items.after(item, sharedEventsDefaultItem)
|
|
||||||
} else {
|
|
||||||
card.items.remove(sharedEventsDefaultItem)
|
|
||||||
}
|
|
||||||
util.refresh()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val sharedEventsDefaultItem by lazy {
|
private val sharedEventsDefaultItem by lazy {
|
||||||
util.createPropertyItem(
|
util.createPropertyItem(
|
||||||
text = R.string.settings_register_share_by_default_text,
|
text = R.string.settings_register_share_by_default_text,
|
||||||
@ -80,7 +54,7 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItems() = listOfNotNull(
|
override fun getItems(card: MaterialAboutCard) = listOfNotNull(
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
text = R.string.menu_timetable_config,
|
text = R.string.menu_timetable_config,
|
||||||
icon = CommunityMaterial.Icon3.cmd_timetable
|
icon = CommunityMaterial.Icon3.cmd_timetable
|
||||||
@ -108,7 +82,8 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
) {
|
) {
|
||||||
MessagesConfigDialog(activity, reloadOnDismiss = false).show()
|
MessagesConfigDialog(activity, reloadOnDismiss = false).show()
|
||||||
}.takeIf {
|
}.takeIf {
|
||||||
app.profile.hasUIFeature(FeatureType.MESSAGES_INBOX) || app.profile.hasUIFeature(FeatureType.MESSAGES_SENT)
|
app.profile.hasUIFeature(FeatureType.MESSAGES_INBOX) || app.profile.hasUIFeature(
|
||||||
|
FeatureType.MESSAGES_SENT)
|
||||||
},
|
},
|
||||||
|
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
@ -118,53 +93,9 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
AttendanceConfigDialog(activity, reloadOnDismiss = false).show()
|
AttendanceConfigDialog(activity, reloadOnDismiss = false).show()
|
||||||
}.takeIf { app.profile.hasUIFeature(FeatureType.ATTENDANCE) },
|
}.takeIf { app.profile.hasUIFeature(FeatureType.ATTENDANCE) },
|
||||||
|
|
||||||
if (app.profile.archived)
|
util.createMoreItem(
|
||||||
null
|
card = card,
|
||||||
else
|
items = listOfNotNull(
|
||||||
util.createPropertyItem(
|
|
||||||
text = R.string.settings_register_allow_registration_text,
|
|
||||||
subText = R.string.settings_register_allow_registration_subtext,
|
|
||||||
icon = CommunityMaterial.Icon.cmd_account_circle_outline,
|
|
||||||
value = app.profile.canShare,
|
|
||||||
beforeChange = { item, value ->
|
|
||||||
if (app.profile.canShare == value)
|
|
||||||
// allow the switch to change - needed for util.refresh() to change the visual state
|
|
||||||
return@createPropertyItem true
|
|
||||||
val dialog =
|
|
||||||
RegistrationConfigDialog(activity, app.profile, onChangeListener = { enabled ->
|
|
||||||
if (item.isChecked == enabled)
|
|
||||||
return@RegistrationConfigDialog
|
|
||||||
item.isChecked = enabled
|
|
||||||
if (value) {
|
|
||||||
card.items.after(item, sharedEventsItem)
|
|
||||||
if (app.profile.enableSharedEvents)
|
|
||||||
card.items.after(item, sharedEventsDefaultItem)
|
|
||||||
} else {
|
|
||||||
card.items.remove(sharedEventsItem)
|
|
||||||
card.items.remove(sharedEventsDefaultItem)
|
|
||||||
}
|
|
||||||
util.refresh()
|
|
||||||
})
|
|
||||||
if (value)
|
|
||||||
dialog.showEnableDialog()
|
|
||||||
else
|
|
||||||
dialog.showDisableDialog()
|
|
||||||
false
|
|
||||||
}
|
|
||||||
) { _, _ -> },
|
|
||||||
|
|
||||||
if (app.profile.canShare)
|
|
||||||
sharedEventsItem
|
|
||||||
else
|
|
||||||
null,
|
|
||||||
|
|
||||||
if (app.profile.enableSharedEvents)
|
|
||||||
sharedEventsDefaultItem
|
|
||||||
else
|
|
||||||
null
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun getItemsMore() = listOfNotNull(
|
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
text = R.string.settings_register_bell_sync_text,
|
text = R.string.settings_register_bell_sync_text,
|
||||||
icon = SzkolnyFont.Icon.szf_alarm_bell_outline,
|
icon = SzkolnyFont.Icon.szf_alarm_bell_outline,
|
||||||
@ -187,7 +118,6 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
configGlobal.timetable.countInSeconds = it
|
configGlobal.timetable.countInSeconds = it
|
||||||
},
|
},
|
||||||
|
|
||||||
if (app.profile.loginStoreType == LoginType.LIBRUS)
|
|
||||||
util.createPropertyItem(
|
util.createPropertyItem(
|
||||||
text = R.string.settings_register_show_teacher_absences_text,
|
text = R.string.settings_register_show_teacher_absences_text,
|
||||||
icon = CommunityMaterial.Icon.cmd_account_arrow_right_outline,
|
icon = CommunityMaterial.Icon.cmd_account_arrow_right_outline,
|
||||||
@ -195,19 +125,58 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
) { _, it ->
|
) { _, it ->
|
||||||
app.profile["showTeacherAbsences"] = it
|
app.profile["showTeacherAbsences"] = it
|
||||||
app.profileSave()
|
app.profileSave()
|
||||||
}
|
}.takeIf { app.profile.loginStoreType == LoginType.LIBRUS },
|
||||||
else
|
|
||||||
null,
|
|
||||||
|
|
||||||
if (App.devMode)
|
|
||||||
util.createPropertyItem(
|
util.createPropertyItem(
|
||||||
text = R.string.settings_register_hide_sticks_from_old,
|
text = R.string.settings_register_hide_sticks_from_old,
|
||||||
icon = CommunityMaterial.Icon3.cmd_numeric_1_box_outline,
|
icon = CommunityMaterial.Icon3.cmd_numeric_1_box_outline,
|
||||||
value = configProfile.grades.hideSticksFromOld
|
value = configProfile.grades.hideSticksFromOld
|
||||||
) { _, it ->
|
) { _, it ->
|
||||||
configProfile.grades.hideSticksFromOld = it
|
configProfile.grades.hideSticksFromOld = it
|
||||||
}.takeIf { app.profile.hasUIFeature(FeatureType.GRADES) }
|
}.takeIf { App.devMode && app.profile.hasUIFeature(FeatureType.GRADES) },
|
||||||
else
|
),
|
||||||
null
|
),
|
||||||
|
|
||||||
|
*(getRegistrationItems().takeIf { !app.profile.archived } ?: arrayOf()),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private fun getRegistrationItems() = listOfNotNull(
|
||||||
|
util.createSectionItem(
|
||||||
|
text = R.string.settings_registration_section,
|
||||||
|
),
|
||||||
|
|
||||||
|
util.createPropertyItem(
|
||||||
|
text = R.string.settings_register_allow_registration_text,
|
||||||
|
subText = R.string.settings_register_allow_registration_subtext,
|
||||||
|
icon = CommunityMaterial.Icon.cmd_account_circle_outline,
|
||||||
|
value = app.profile.canShare,
|
||||||
|
beforeChange =
|
||||||
|
{ item, value ->
|
||||||
|
if (app.profile.canShare == value)
|
||||||
|
// allow the switch to change - needed for util.refresh() to change the visual state
|
||||||
|
return@createPropertyItem true
|
||||||
|
val dialog =
|
||||||
|
RegistrationConfigDialog(activity,
|
||||||
|
app.profile,
|
||||||
|
onChangeListener = { enabled ->
|
||||||
|
if (item.isChecked == enabled)
|
||||||
|
return@RegistrationConfigDialog
|
||||||
|
item.isChecked = enabled
|
||||||
|
if (value) {
|
||||||
|
card.items.after(item, sharedEventsDefaultItem)
|
||||||
|
} else {
|
||||||
|
card.items.remove(sharedEventsDefaultItem)
|
||||||
|
}
|
||||||
|
util.refresh()
|
||||||
|
})
|
||||||
|
if (value)
|
||||||
|
dialog.showEnableDialog()
|
||||||
|
else
|
||||||
|
dialog.showDisableDialog()
|
||||||
|
false
|
||||||
|
}
|
||||||
|
) { _, _ -> },
|
||||||
|
|
||||||
|
sharedEventsDefaultItem.takeIf { app.profile.canShare },
|
||||||
|
).toTypedArray()
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import android.net.Uri
|
|||||||
import android.os.Build.VERSION.SDK_INT
|
import android.os.Build.VERSION.SDK_INT
|
||||||
import android.os.Build.VERSION_CODES
|
import android.os.Build.VERSION_CODES
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
|
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import pl.szczodrzynski.edziennik.MainActivity
|
import pl.szczodrzynski.edziennik.MainActivity
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
@ -29,8 +30,8 @@ class SettingsSyncCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
|
|
||||||
override fun buildCard() = util.createCard(
|
override fun buildCard() = util.createCard(
|
||||||
R.string.settings_card_sync_title,
|
R.string.settings_card_sync_title,
|
||||||
items = getItems(),
|
items = ::getItems,
|
||||||
itemsMore = getItemsMore()
|
itemsMore = ::getItemsMore,
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun getQuietHours(): String {
|
private fun getQuietHours(): String {
|
||||||
@ -63,7 +64,7 @@ class SettingsSyncCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItems() = listOfNotNull(
|
override fun getItems(card: MaterialAboutCard) = listOfNotNull(
|
||||||
util.createPropertyActionItem(
|
util.createPropertyActionItem(
|
||||||
text = R.string.settings_sync_sync_interval_text,
|
text = R.string.settings_sync_sync_interval_text,
|
||||||
subText = R.string.settings_sync_sync_interval_subtext_disabled,
|
subText = R.string.settings_sync_sync_interval_subtext_disabled,
|
||||||
@ -156,7 +157,7 @@ class SettingsSyncCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun getItemsMore() = listOfNotNull(
|
override fun getItemsMore(card: MaterialAboutCard) = listOfNotNull(
|
||||||
util.createPropertyItem(
|
util.createPropertyItem(
|
||||||
text = R.string.settings_sync_updates_text,
|
text = R.string.settings_sync_updates_text,
|
||||||
icon = CommunityMaterial.Icon.cmd_cellphone_arrow_down,
|
icon = CommunityMaterial.Icon.cmd_cellphone_arrow_down,
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.ui.settings.cards
|
package pl.szczodrzynski.edziennik.ui.settings.cards
|
||||||
|
|
||||||
|
import com.danielstone.materialaboutlibrary.model.MaterialAboutCard
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
@ -20,11 +21,11 @@ class SettingsThemeCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
|
|
||||||
override fun buildCard() = util.createCard(
|
override fun buildCard() = util.createCard(
|
||||||
R.string.settings_card_theme_title,
|
R.string.settings_card_theme_title,
|
||||||
items = getItems(),
|
items = ::getItems,
|
||||||
itemsMore = getItemsMore()
|
itemsMore = ::getItemsMore,
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun getItems() = listOfNotNull(
|
override fun getItems(card: MaterialAboutCard) = listOfNotNull(
|
||||||
if (Date.getToday().month % 11 == 1) // cool math games
|
if (Date.getToday().month % 11 == 1) // cool math games
|
||||||
util.createPropertyItem(
|
util.createPropertyItem(
|
||||||
text = R.string.settings_theme_snowfall_text,
|
text = R.string.settings_theme_snowfall_text,
|
||||||
@ -76,7 +77,7 @@ class SettingsThemeCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun getItemsMore() = listOf(
|
override fun getItemsMore(card: MaterialAboutCard) = listOf(
|
||||||
util.createActionItem(
|
util.createActionItem(
|
||||||
text = R.string.settings_theme_mini_drawer_buttons_text,
|
text = R.string.settings_theme_mini_drawer_buttons_text,
|
||||||
icon = CommunityMaterial.Icon2.cmd_format_list_checks
|
icon = CommunityMaterial.Icon2.cmd_format_list_checks
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="config"
|
name="config"
|
||||||
type="pl.szczodrzynski.edziennik.config.ProfileConfigUI" />
|
type="pl.szczodrzynski.edziennik.config.ProfileConfig" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="isAgendaMode"
|
name="isAgendaMode"
|
||||||
@ -38,7 +38,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaLessonChanges}"
|
android:checked="@={config.ui.agendaLessonChanges}"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_lesson_changes" />
|
android:text="@string/agenda_config_lesson_changes" />
|
||||||
|
|
||||||
@ -46,7 +46,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaTeacherAbsence}"
|
android:checked="@={config.ui.agendaTeacherAbsence}"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_teacher_absence" />
|
android:text="@string/agenda_config_teacher_absence" />
|
||||||
|
|
||||||
@ -54,7 +54,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaCompactMode}"
|
android:checked="@={config.ui.agendaCompactMode}"
|
||||||
android:enabled="@{isAgendaMode}"
|
android:enabled="@{isAgendaMode}"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_compact_mode"
|
android:text="@string/agenda_config_compact_mode"
|
||||||
@ -73,7 +73,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaGroupByType}"
|
android:checked="@={config.ui.agendaGroupByType}"
|
||||||
android:enabled="@{isAgendaMode}"
|
android:enabled="@{isAgendaMode}"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_group_by_type"
|
android:text="@string/agenda_config_group_by_type"
|
||||||
@ -101,6 +101,15 @@
|
|||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_event_sharing_enabled" />
|
android:text="@string/agenda_config_event_sharing_enabled" />
|
||||||
|
|
||||||
|
<com.google.android.material.checkbox.MaterialCheckBox
|
||||||
|
android:id="@+id/shareByDefault"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:minHeight="32dp"
|
||||||
|
android:checked="@={config.shareByDefault}"
|
||||||
|
android:text="@string/settings_register_share_by_default_text" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -120,10 +129,9 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaElearningMark}"
|
android:checked="@={config.ui.agendaElearningMark}"
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:onClick="@{() -> elearningType.setEnabled(elearningEnabled.isChecked())}"
|
|
||||||
android:text="@string/agenda_config_elearning_mark" />
|
android:text="@string/agenda_config_elearning_mark" />
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
@ -131,7 +139,7 @@
|
|||||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:enabled="@{config.agendaElearningMark}"
|
android:enabled="@{elearningEnabled.checked}"
|
||||||
android:hint="@string/agenda_config_elearning_type">
|
android:hint="@string/agenda_config_elearning_type">
|
||||||
|
|
||||||
<pl.szczodrzynski.edziennik.utils.TextInputDropDown
|
<pl.szczodrzynski.edziennik.utils.TextInputDropDown
|
||||||
@ -147,7 +155,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:checked="@={config.agendaElearningGroup}"
|
android:checked="@={config.ui.agendaElearningGroup}"
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:text="@string/agenda_config_elearning_group" />
|
android:text="@string/agenda_config_elearning_group" />
|
||||||
|
@ -898,10 +898,6 @@
|
|||||||
<string name="settings_register_count_in_seconds_text">Zählen Sie die Zeit in Sekunden herunter</string>
|
<string name="settings_register_count_in_seconds_text">Zählen Sie die Zeit in Sekunden herunter</string>
|
||||||
<string name="settings_register_dont_count_zero_text">Zählen Sie die Note 0 nicht zum Durchschnitt</string>
|
<string name="settings_register_dont_count_zero_text">Zählen Sie die Note 0 nicht zum Durchschnitt</string>
|
||||||
<string name="settings_register_login_not_implemented_text">Dieses E-Register ist noch nicht implementiert</string>
|
<string name="settings_register_login_not_implemented_text">Dieses E-Register ist noch nicht implementiert</string>
|
||||||
<string name="settings_register_shared_events_dialog_disabled_text">Sie erhalten keine geteilten Ereignisse mehr und können sie nicht mehr teilen.</string>
|
|
||||||
<string name="settings_register_shared_events_dialog_enabled_text">Sie erhalten geteilte Ereignisse von anderen Personen in Ihrer Klasse</string>
|
|
||||||
<string name="settings_register_shared_events_subtext">Teile Tests in deiner Klasse</string>
|
|
||||||
<string name="settings_register_shared_events_text">Aktivieren Sie die Ereignisfreigabe</string>
|
|
||||||
<string name="settings_register_show_teacher_absences_text">Zeigen Sie die Abwesenheiten von Lehrern im Zeitplan an</string>
|
<string name="settings_register_show_teacher_absences_text">Zeigen Sie die Abwesenheiten von Lehrern im Zeitplan an</string>
|
||||||
<string name="settings_sync_customize_endpoint_announcements">Schwarzes Brett</string>
|
<string name="settings_sync_customize_endpoint_announcements">Schwarzes Brett</string>
|
||||||
<string name="settings_sync_customize_endpoint_attendance">Anwesenheiten</string>
|
<string name="settings_sync_customize_endpoint_attendance">Anwesenheiten</string>
|
||||||
|
@ -900,10 +900,6 @@
|
|||||||
<string name="settings_register_count_in_seconds_text">Count time in seconds</string>
|
<string name="settings_register_count_in_seconds_text">Count time in seconds</string>
|
||||||
<string name="settings_register_dont_count_zero_text">Don\'t count 0 grade to average</string>
|
<string name="settings_register_dont_count_zero_text">Don\'t count 0 grade to average</string>
|
||||||
<string name="settings_register_login_not_implemented_text">This e-register isn\'t implemented yet.</string>
|
<string name="settings_register_login_not_implemented_text">This e-register isn\'t implemented yet.</string>
|
||||||
<string name="settings_register_shared_events_dialog_disabled_text">You won\'t receive shared events anymore and you won\'t be able to share them.</string>
|
|
||||||
<string name="settings_register_shared_events_dialog_enabled_text">You will receive shared events from other people in your class.</string>
|
|
||||||
<string name="settings_register_shared_events_subtext">Share exams in your class</string>
|
|
||||||
<string name="settings_register_shared_events_text">Enable Event sharing</string>
|
|
||||||
<string name="settings_register_show_teacher_absences_text">Show teacher absences in Agenda</string>
|
<string name="settings_register_show_teacher_absences_text">Show teacher absences in Agenda</string>
|
||||||
<string name="settings_sync_customize_endpoint_announcements">Notice board</string>
|
<string name="settings_sync_customize_endpoint_announcements">Notice board</string>
|
||||||
<string name="settings_sync_customize_endpoint_attendance">Attendances</string>
|
<string name="settings_sync_customize_endpoint_attendance">Attendances</string>
|
||||||
|
@ -969,10 +969,6 @@
|
|||||||
<string name="settings_register_count_in_seconds_text">Odliczaj czas w sekundach</string>
|
<string name="settings_register_count_in_seconds_text">Odliczaj czas w sekundach</string>
|
||||||
<string name="settings_register_dont_count_zero_text">Nie wliczaj oceny 0 do średniej</string>
|
<string name="settings_register_dont_count_zero_text">Nie wliczaj oceny 0 do średniej</string>
|
||||||
<string name="settings_register_login_not_implemented_text">Ten e-dziennik nie został jeszcze zaimplementowany w aplikacji.</string>
|
<string name="settings_register_login_not_implemented_text">Ten e-dziennik nie został jeszcze zaimplementowany w aplikacji.</string>
|
||||||
<string name="settings_register_shared_events_dialog_disabled_text">Nie będziesz już otrzymywać udostępnionych sprawdzianów i nie będziesz mógł ich też udostępnić.</string>
|
|
||||||
<string name="settings_register_shared_events_dialog_enabled_text">Będziesz otrzymywać udostępnione sprawdziany od innych osób z twojej klasy.</string>
|
|
||||||
<string name="settings_register_shared_events_subtext">Udostępniaj sprawdziany w swojej klasie</string>
|
|
||||||
<string name="settings_register_shared_events_text">Włącz Udostępnianie wydarzeń</string>
|
|
||||||
<string name="settings_register_show_teacher_absences_text">Pokazuj nieobecności nauczycieli w Terminarzu</string>
|
<string name="settings_register_show_teacher_absences_text">Pokazuj nieobecności nauczycieli w Terminarzu</string>
|
||||||
<string name="settings_sync_customize_endpoint_announcements">Tablica ogłoszeń</string>
|
<string name="settings_sync_customize_endpoint_announcements">Tablica ogłoszeń</string>
|
||||||
<string name="settings_sync_customize_endpoint_attendance">Obecności/nieobecności</string>
|
<string name="settings_sync_customize_endpoint_attendance">Obecności/nieobecności</string>
|
||||||
@ -1553,4 +1549,5 @@
|
|||||||
<string name="legend_event_shared_sent">{cmd-share-variant} udostępnione przez Ciebie</string>
|
<string name="legend_event_shared_sent">{cmd-share-variant} udostępnione przez Ciebie</string>
|
||||||
<string name="settings_register_share_by_default_text">Domyślnie udostępniaj wydarzenia</string>
|
<string name="settings_register_share_by_default_text">Domyślnie udostępniaj wydarzenia</string>
|
||||||
<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>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user