[Event] Update sharing dialog

This commit is contained in:
Kuba Szczodrzyński 2019-12-13 22:07:42 +01:00
parent b48afde7f1
commit 9e4f816009
3 changed files with 85 additions and 45 deletions

View File

@ -55,7 +55,7 @@ class EventListAdapter(
b.eventListItemSharedBy.text = app.getString(R.string.event_shared_by_format, if (event.sharedBy == "self") app.getString(R.string.event_shared_by_self) else event.sharedByName)
b.eventListItemSharedBy.visibility = if (event.sharedByName.isNullOrBlank()) View.GONE else View.VISIBLE
b.eventListItemEdit.visibility = if (event.addedManually && (event.sharedBy == null || event.sharedBy == "self")) View.VISIBLE else View.GONE
b.eventListItemEdit.visibility = if (event.addedManually) View.VISIBLE else View.GONE
b.eventListItemEdit.setOnClickListener {
parentDialog.dismiss()

View File

@ -24,7 +24,6 @@ import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson
import pl.szczodrzynski.edziennik.data.db.modules.timetable.LessonFull
@ -64,6 +63,8 @@ class EventManualDialog(
private lateinit var event: Event
private var customColor: Int? = null
private val editingShared = editingEvent?.sharedBy != null
private val editingOwn = editingEvent?.sharedBy == "self"
init { run {
if (activity.isFinishing)
@ -106,8 +107,9 @@ class EventManualDialog(
defaultType?.let {
event.type = it
}
b.shareSwitch.isChecked = event.sharedBy != null
}
b.shareSwitch.isChecked = editingShared
b.shareSwitch.isEnabled = !editingShared || (editingShared && editingOwn)
b.showMore.onClick { // TODO iconics is broken
it.apply {
@ -128,29 +130,7 @@ class EventManualDialog(
loadLists()
}}
private fun showRemoveEventDialog() {
removeEventDialog = MaterialAlertDialogBuilder(activity)
.setTitle(R.string.are_you_sure)
.setMessage(activity.getString(R.string.dialog_register_event_manual_remove_confirmation))
.setPositiveButton(R.string.yes, null)
.setNegativeButton(R.string.no) { dialog, _ -> dialog.dismiss() }
.create()
.apply {
setOnShowListener { dialog ->
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
positiveButton?.setOnClickListener {
removeEvent()
}
}
show()
}
}
private fun updateShareText(checked: Boolean = b.shareSwitch.isChecked) {
val editingShared = editingEvent?.sharedBy != null
val editingOwn = editingEvent?.sharedBy == "self"
b.shareDetails.visibility = if (checked || editingShared)
View.VISIBLE
else View.GONE
@ -490,8 +470,13 @@ class EventManualDialog(
))
}
editingEvent?.let {
b.timeDropdown.select(it.startTime?.value?.toLong())
editingEvent?.startTime?.let {
if (b.timeDropdown.select(it) == null)
b.timeDropdown.select(TextInputDropDown.Item(
it.value.toLong(),
it.stringHM,
tag = it
))
}
defaultLesson?.let {
@ -542,15 +527,40 @@ class EventManualDialog(
})
}
private fun showRemoveEventDialog() {
val shareNotice = when {
editingShared && editingOwn -> "\n\n"+activity.getString(R.string.dialog_event_manual_remove_shared_self)
editingShared && !editingOwn -> "\n\n"+activity.getString(R.string.dialog_event_manual_remove_shared)
else -> ""
}
removeEventDialog = MaterialAlertDialogBuilder(activity)
.setTitle(R.string.are_you_sure)
.setMessage(activity.getString(R.string.dialog_register_event_manual_remove_confirmation)+shareNotice)
.setPositiveButton(R.string.yes, null)
.setNegativeButton(R.string.no) { dialog, _ -> dialog.dismiss() }
.create()
.apply {
setOnShowListener { dialog ->
val positiveButton = (dialog as AlertDialog).getButton(BUTTON_POSITIVE)
positiveButton?.setOnClickListener {
removeEvent()
}
}
show()
}
}
private fun saveEvent() {
val date = b.dateDropdown.selected?.tag.instanceOfOrNull<Date>()
val lesson = b.timeDropdown.selected?.tag.instanceOfOrNull<LessonFull>()
val team = b.teamDropdown.selected?.tag.instanceOfOrNull<Team>()
val share = b.shareSwitch.isChecked
val type = b.typeDropdown.selected?.tag.instanceOfOrNull<EventType>()
val teamId = b.teamDropdown.selected?.id
val type = b.typeDropdown.selected?.id
val topic = b.topic.text?.toString()
val subject = b.subjectDropdown.selected?.tag.instanceOfOrNull<Subject>()
val teacher = b.teacherDropdown.selected?.tag.instanceOfOrNull<Teacher>()
val subjectId = b.subjectDropdown.selected?.id
val teacherId = b.teacherDropdown.selected?.id
val share = b.shareSwitch.isChecked
b.teamDropdown.error = null
b.typeDropdown.error = null
@ -558,7 +568,7 @@ class EventManualDialog(
var isError = false
if (share && team == null) {
if (share && teamId == null) {
b.teamDropdown.error = app.getString(R.string.dialog_event_manual_team_choose)
isError = true
}
@ -584,16 +594,16 @@ class EventManualDialog(
lesson?.displayStartTime,
topic,
customColor ?: -1,
type?.id?.toInt() ?: Event.TYPE_DEFAULT,
type?.toInt() ?: Event.TYPE_DEFAULT,
true,
teacher?.id ?: -1,
subject?.id ?: -1,
team?.id ?: -1
teacherId ?: -1,
subjectId ?: -1,
teamId ?: -1
)
val metadataObject = Metadata(
profileId,
when (type?.id?.toInt()) {
when (type?.toInt()) {
Event.TYPE_HOMEWORK -> Metadata.TYPE_HOMEWORK
else -> Metadata.TYPE_EVENT
},
@ -603,7 +613,35 @@ class EventManualDialog(
editingEvent?.addedDate ?: System.currentTimeMillis()
)
finishAdding(eventObject, metadataObject)
if (!share && !editingShared) {
Toast.makeText(activity, "Save without sharing", Toast.LENGTH_SHORT).show()
finishAdding(eventObject, metadataObject)
}
else if (editingShared && !editingOwn) {
Toast.makeText(activity, "Request editing somebody's event", Toast.LENGTH_SHORT).show()
}
else if (!share && editingShared) {
Toast.makeText(activity, "Unshare own event", Toast.LENGTH_SHORT).show()
}
else if (share) {
Toast.makeText(activity, "Share/update own event", Toast.LENGTH_SHORT).show()
}
else {
Toast.makeText(activity, "Unknown action :(", Toast.LENGTH_SHORT).show()
}
}
private fun removeEvent() {
if (editingShared && editingOwn) {
Toast.makeText(activity, "Unshare + remove own event", Toast.LENGTH_SHORT).show()
}
else if (editingShared && !editingOwn) {
Toast.makeText(activity, "Remove + blacklist somebody's event", Toast.LENGTH_SHORT).show()
}
else {
Toast.makeText(activity, "Remove event", Toast.LENGTH_SHORT).show()
}
}
private fun finishAdding(eventObject: Event, metadataObject: Metadata) {
@ -615,11 +653,11 @@ class EventManualDialog(
}
dialog.dismiss()
Toast.makeText(app, R.string.saved, Toast.LENGTH_SHORT).show()
(activity as MainActivity).reloadTarget()
Toast.makeText(activity, R.string.saved, Toast.LENGTH_SHORT).show()
if (activity is MainActivity)
activity.reloadTarget()
}
private fun removeEvent() {
private fun finishRemoving() {
launch {
withContext(Dispatchers.Default) {
app.db.eventDao().remove(editingEvent)
@ -628,7 +666,8 @@ class EventManualDialog(
removeEventDialog?.dismiss()
dialog.dismiss()
Toast.makeText(app, R.string.removed, Toast.LENGTH_SHORT).show()
(activity as MainActivity).reloadTarget()
Toast.makeText(activity, R.string.removed, Toast.LENGTH_SHORT).show()
if (activity is MainActivity)
activity.reloadTarget()
}
}

View File

@ -78,6 +78,7 @@ class TextInputDropDown : TextInputEditText {
fun select(item: Item): Item? {
selected = item
updateText()
error = null
return item
}