mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-01-31 13:48:20 +01:00
[Messages] Fix search in sent messages. Implement removing messages.
This commit is contained in:
parent
f07b12bd87
commit
0e4d609bbf
@ -15,9 +15,12 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.ProgressBar
|
import android.widget.ProgressBar
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.mikepenz.iconics.IconicsColor
|
import com.mikepenz.iconics.IconicsColor
|
||||||
import com.mikepenz.iconics.IconicsDrawable
|
import com.mikepenz.iconics.IconicsDrawable
|
||||||
import com.mikepenz.iconics.IconicsSize
|
import com.mikepenz.iconics.IconicsSize
|
||||||
@ -37,6 +40,7 @@ import pl.szczodrzynski.edziennik.data.api.events.AttachmentGetEvent.Companion.T
|
|||||||
import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent
|
import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore.Companion.LOGIN_TYPE_IDZIENNIK
|
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore.Companion.LOGIN_TYPE_IDZIENNIK
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_DELETED
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED
|
import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_SENT
|
import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_SENT
|
||||||
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
||||||
@ -108,6 +112,23 @@ class MessageFragment : Fragment(), CoroutineScope {
|
|||||||
"type" to "forward"
|
"type" to "forward"
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
b.deleteButton.onClick {
|
||||||
|
MaterialAlertDialogBuilder(activity)
|
||||||
|
.setTitle(R.string.messages_delete_confirmation)
|
||||||
|
.setMessage(R.string.messages_delete_confirmation_text)
|
||||||
|
.setPositiveButton(R.string.ok) { _, _ ->
|
||||||
|
launch {
|
||||||
|
message.type = TYPE_DELETED
|
||||||
|
withContext(Dispatchers.Default) {
|
||||||
|
app.db.messageDao().replace(message)
|
||||||
|
}
|
||||||
|
Toast.makeText(activity, "Wiadomość przeniesiona do usuniętych", Toast.LENGTH_SHORT).show()
|
||||||
|
activity.navigateUp()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.cancel, null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
launch {
|
launch {
|
||||||
|
|
||||||
@ -217,7 +238,8 @@ class MessageFragment : Fragment(), CoroutineScope {
|
|||||||
|
|
||||||
b.subject.text = message.subject
|
b.subject.text = message.subject
|
||||||
|
|
||||||
b.replyButton.visibility = if (message.type == TYPE_RECEIVED) View.VISIBLE else View.INVISIBLE
|
b.replyButton.isVisible = message.type == TYPE_RECEIVED
|
||||||
|
b.deleteButton.isVisible = message.type == TYPE_RECEIVED
|
||||||
if (message.type == TYPE_RECEIVED) {
|
if (message.type == TYPE_RECEIVED) {
|
||||||
activity.navView.apply {
|
activity.navView.apply {
|
||||||
bottomBar.apply {
|
bottomBar.apply {
|
||||||
|
@ -14,6 +14,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.cleanDiacritics
|
import pl.szczodrzynski.edziennik.cleanDiacritics
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.entity.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Teacher
|
import pl.szczodrzynski.edziennik.data.db.entity.Teacher
|
||||||
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
||||||
import pl.szczodrzynski.edziennik.ui.modules.grades.viewholder.BindableViewHolder
|
import pl.szczodrzynski.edziennik.ui.modules.grades.viewholder.BindableViewHolder
|
||||||
@ -138,12 +139,26 @@ class MessagesAdapter(
|
|||||||
it.filterWeight = 100
|
it.filterWeight = 100
|
||||||
it.searchHighlightText = null
|
it.searchHighlightText = null
|
||||||
|
|
||||||
var weight = getMatchWeight(it.senderName, prefixString)
|
var weight: Int
|
||||||
if (weight != 100) {
|
if (it.type == Message.TYPE_SENT) {
|
||||||
if (weight == 3)
|
it.recipients?.forEach { recipient ->
|
||||||
weight = 31
|
weight = getMatchWeight(recipient.fullName, prefixString)
|
||||||
it.filterWeight = min(it.filterWeight, 10 + weight)
|
if (weight != 100) {
|
||||||
|
if (weight == 3)
|
||||||
|
weight = 31
|
||||||
|
it.filterWeight = min(it.filterWeight, 10 + weight)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
weight = getMatchWeight(it.senderName, prefixString)
|
||||||
|
if (weight != 100) {
|
||||||
|
if (weight == 3)
|
||||||
|
weight = 31
|
||||||
|
it.filterWeight = min(it.filterWeight, 10 + weight)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
weight = getMatchWeight(it.subject, prefixString)
|
weight = getMatchWeight(it.subject, prefixString)
|
||||||
if (weight != 100) {
|
if (weight != 100) {
|
||||||
|
@ -69,6 +69,11 @@ class MessagesListFragment : LazyFragment(), CoroutineScope {
|
|||||||
|
|
||||||
items.forEach { message ->
|
items.forEach { message ->
|
||||||
message.recipients?.removeAll { it.profileId != message.profileId }
|
message.recipients?.removeAll { it.profileId != message.profileId }
|
||||||
|
message.recipients?.forEach { recipient ->
|
||||||
|
if (recipient.fullName == null) {
|
||||||
|
recipient.fullName = teachers.firstOrNull { it.id == recipient.id }?.fullName ?: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// load & configure the adapter
|
// load & configure the adapter
|
||||||
|
@ -33,12 +33,6 @@ class MessageViewHolder(
|
|||||||
override fun onBind(activity: AppCompatActivity, app: App, item: MessageFull, position: Int, adapter: MessagesAdapter) {
|
override fun onBind(activity: AppCompatActivity, app: App, item: MessageFull, position: Int, adapter: MessagesAdapter) {
|
||||||
val manager = app.gradesManager
|
val manager = app.gradesManager
|
||||||
|
|
||||||
item.recipients?.forEach { recipient ->
|
|
||||||
if (recipient.fullName == null) {
|
|
||||||
recipient.fullName = adapter.teachers.firstOrNull { it.id == recipient.id }?.fullName ?: ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
b.messageSubject.text = item.subject
|
b.messageSubject.text = item.subject
|
||||||
b.messageDate.text = Date.fromMillis(item.addedDate).formattedStringShort
|
b.messageDate.text = Date.fromMillis(item.addedDate).formattedStringShort
|
||||||
b.messageAttachmentImage.isVisible = item.hasAttachments
|
b.messageAttachmentImage.isVisible = item.hasAttachments
|
||||||
|
@ -309,7 +309,7 @@
|
|||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
app:iiv_color="?android:textColorSecondary"
|
app:iiv_color="?android:textColorSecondary"
|
||||||
app:iiv_icon="cmd-arrow-right-thick"
|
app:iiv_icon="cmd-arrow-right"
|
||||||
tools:srcCompat="@android:drawable/ic_media_ff" />
|
tools:srcCompat="@android:drawable/ic_media_ff" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -323,6 +323,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/deleteButton"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginLeft="4dp"
|
android:layout_marginLeft="4dp"
|
||||||
@ -335,14 +336,14 @@
|
|||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:paddingRight="4dp"
|
android:paddingRight="4dp"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
android:visibility="invisible">
|
android:visibility="visible">
|
||||||
|
|
||||||
<com.mikepenz.iconics.view.IconicsImageView
|
<com.mikepenz.iconics.view.IconicsImageView
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
app:iiv_color="?android:textColorSecondary"
|
app:iiv_color="?android:textColorSecondary"
|
||||||
app:iiv_icon="cmd-delete"
|
app:iiv_icon="cmd-delete-outline"
|
||||||
tools:srcCompat="@android:drawable/ic_menu_delete" />
|
tools:srcCompat="@android:drawable/ic_menu_delete" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -1291,4 +1291,6 @@
|
|||||||
<string name="messages_tab_deleted">Usunięte</string>
|
<string name="messages_tab_deleted">Usunięte</string>
|
||||||
<string name="messages_search">Szukaj</string>
|
<string name="messages_search">Szukaj</string>
|
||||||
<string name="messages_search_results">Znaleziono %d wiadomości</string>
|
<string name="messages_search_results">Znaleziono %d wiadomości</string>
|
||||||
|
<string name="messages_delete_confirmation">Czy chcesz usunąć wiadomość?</string>
|
||||||
|
<string name="messages_delete_confirmation_text">Spowoduje to przeniesienie wiadomości do zakładki \"Usunięte\" w aplikacji. Zmiany nie wpłyną na wiadomość w e-dzienniku (nie zostanie ona tam usunięta).</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user