diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt index d7ce1f80..afb1f847 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt @@ -258,12 +258,10 @@ class SzkolnyApi(val app: App) : CoroutineScope { seen = profile.empty notified = profile.empty - if (profile.userCode == event.sharedBy) { - sharedBy = "self" - addedManually = true - } else { - sharedBy = eventSharedBy - } + sharedBy = if (profile.userCode == event.sharedBy) + "self" + else + eventSharedBy } } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt index 795bad85..505ed086 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt @@ -73,13 +73,22 @@ open class Event( const val COLOR_INFORMATION = 0xff039be5.toInt() } + /** + * Added manually - added by self, shared by self, or shared by someone else. + */ @ColumnInfo(name = "eventAddedManually") var addedManually: Boolean = false - get() = field || sharedBy == "self" + get() = field || isShared + + /** + * Shared by - user code who shared the event. Null if not shared. + * "Self" if shared by this app user. + */ @ColumnInfo(name = "eventSharedBy") var sharedBy: String? = null @ColumnInfo(name = "eventSharedByName") var sharedByName: String? = null + @ColumnInfo(name = "eventBlacklisted") var blacklisted: Boolean = false @ColumnInfo(name = "eventIsDone") @@ -104,6 +113,27 @@ open class Event( var attachmentIds: MutableList? = null var attachmentNames: MutableList? = null + val isHomework + get() = type == TYPE_HOMEWORK + + /** + * Whether the event is shared by anyone. Note that this implies [addedManually]. + */ + val isShared + get() = sharedBy != null + + /** + * Whether the event is shared by "self" (this app user). + */ + val isSharedSent + get() = sharedBy == "self" + + /** + * Whether the event is shared by someone else from the class group. + */ + val isSharedReceived + get() = sharedBy != null && sharedBy != "self" + /** * Add an attachment * @param id attachment ID @@ -134,9 +164,6 @@ open class Event( it.timeInMillis += 45 * MINUTE * 1000 } - val isHomework - get() = type == TYPE_HOMEWORK - @Ignore fun withMetadata(metadata: Metadata) = EventFull(this, metadata) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt index 9d3a1a9e..8c90fb2d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt @@ -160,11 +160,11 @@ class SzkolnyAppFirebase(val app: App, val profiles: List, val message: if (event.color == -1) event.color = null + event.addedManually = true event.sharedBy = json.getString("sharedBy") event.sharedByName = json.getString("sharedByName") if (profile.userCode == event.sharedBy) { event.sharedBy = "self" - event.addedManually = true } val metadata = Metadata( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt index 62ca88a1..cedf3122 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt @@ -55,7 +55,8 @@ class EventManager(val app: App) : CoroutineScope { val hasReplacingNotes = event.hasReplacingNotes() title.text = listOfNotNull( - if (event.addedManually) "{cmd-clipboard-edit-outline} " else null, + if (event.addedManually && !event.isSharedReceived) "{cmd-calendar-edit} " else null, + if (event.isSharedReceived) "{cmd-share-variant} " else null, if (event.hasNotes() && hasReplacingNotes && showNotes) "{cmd-swap-horizontal} " else null, if (event.hasNotes() && !hasReplacingNotes && showNotes) "{cmd-playlist-edit} " else null, if (showType) "${event.typeName ?: "wydarzenie"} - " else null, @@ -77,6 +78,8 @@ class EventManager(val app: App) : CoroutineScope { fun setLegendText(legend: IconicsTextView, event: EventFull, showNotes: Boolean = true) { legend.text = listOfNotNull( if (event.addedManually) R.string.legend_event_added_manually else null, + if (event.isSharedSent) R.string.legend_event_shared_sent else null, + if (event.isSharedReceived) R.string.legend_event_shared_received else null, if (event.isDone) R.string.legend_event_is_done else null, if (showNotes) NoteManager.getLegendText(event) else null, ).map { legend.context.getString(it) }.join("\n") diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ac864912..3046e976 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1437,7 +1437,7 @@ Ustaw wydarzenia jako lekcje on-line Wybierz rodzaj wydarzeń Grupuj lekcje on-line na liście - {cmd-clipboard-edit-outline} wydarzenie dodane ręcznie + {cmd-calendar-edit} wydarzenie dodane ręcznie {cmd-check} oznaczono jako wykonane Funkcja jeszcze nie jest dostępna. Tworzenie wiadomości @@ -1549,4 +1549,6 @@ USOS - wymagane logowanie z użyciem przeglądarki Zaloguj się Nie można załadować danych aplikacji + {cmd-share-variant} udostępnione w klasie + {cmd-share-variant} udostępnione przez Ciebie