mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 14:27:24 +00:00
Merge pull request #2316 from nextcloud/chore/noid/lovelyDialogs2
Replace lovelyDialogs with Material 3
This commit is contained in:
commit
8c76e29900
@ -258,7 +258,6 @@ dependencies {
|
|||||||
implementation 'eu.davidea:flexible-adapter:5.1.0'
|
implementation 'eu.davidea:flexible-adapter:5.1.0'
|
||||||
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
|
||||||
implementation fileTree(downloadWebRtc.libFile.path)
|
implementation fileTree(downloadWebRtc.libFile.path)
|
||||||
implementation 'com.yarolegovich:lovely-dialog:1.1.1'
|
|
||||||
implementation 'com.yarolegovich:mp:1.1.6'
|
implementation 'com.yarolegovich:mp:1.1.6'
|
||||||
implementation 'me.zhanghai.android.effortlesspermissions:library:1.1.0'
|
implementation 'me.zhanghai.android.effortlesspermissions:library:1.1.0'
|
||||||
implementation 'org.apache.commons:commons-lang3:3.12.0'
|
implementation 'org.apache.commons:commons-lang3:3.12.0'
|
||||||
|
@ -38,6 +38,7 @@ import android.util.Log
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.widget.SwitchCompat
|
import androidx.appcompat.widget.SwitchCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.work.Data
|
import androidx.work.Data
|
||||||
@ -51,6 +52,7 @@ import com.afollestad.materialdialogs.datetime.dateTimePicker
|
|||||||
import com.bluelinelabs.conductor.RouterTransaction
|
import com.bluelinelabs.conductor.RouterTransaction
|
||||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
|
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.adapters.items.ParticipantItem
|
import com.nextcloud.talk.adapters.items.ParticipantItem
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
@ -81,8 +83,6 @@ import com.nextcloud.talk.utils.DisplayUtils
|
|||||||
import com.nextcloud.talk.utils.bundle.BundleKeys
|
import com.nextcloud.talk.utils.bundle.BundleKeys
|
||||||
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew
|
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew
|
||||||
import com.nextcloud.talk.utils.preferences.preferencestorage.DatabaseStorageModule
|
import com.nextcloud.talk.utils.preferences.preferencestorage.DatabaseStorageModule
|
||||||
import com.yarolegovich.lovelydialog.LovelySaveStateHandler
|
|
||||||
import com.yarolegovich.lovelydialog.LovelyStandardDialog
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
||||||
import io.reactivex.Observer
|
import io.reactivex.Observer
|
||||||
@ -126,8 +126,6 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
private var adapter: FlexibleAdapter<ParticipantItem>? = null
|
private var adapter: FlexibleAdapter<ParticipantItem>? = null
|
||||||
private var userItems: MutableList<ParticipantItem> = ArrayList()
|
private var userItems: MutableList<ParticipantItem> = ArrayList()
|
||||||
|
|
||||||
private var saveStateHandler: LovelySaveStateHandler? = null
|
|
||||||
|
|
||||||
private val workerData: Data?
|
private val workerData: Data?
|
||||||
get() {
|
get() {
|
||||||
if (!TextUtils.isEmpty(conversationToken) && conversationUser != null) {
|
if (!TextUtils.isEmpty(conversationToken) && conversationUser != null) {
|
||||||
@ -170,9 +168,9 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
binding.notificationSettingsView.notificationSettings.setStorageModule(databaseStorageModule)
|
binding.notificationSettingsView.notificationSettings.setStorageModule(databaseStorageModule)
|
||||||
binding.webinarInfoView.webinarSettings.setStorageModule(databaseStorageModule)
|
binding.webinarInfoView.webinarSettings.setStorageModule(databaseStorageModule)
|
||||||
|
|
||||||
binding.deleteConversationAction.setOnClickListener { showDeleteConversationDialog(null) }
|
binding.deleteConversationAction.setOnClickListener { showDeleteConversationDialog() }
|
||||||
binding.leaveConversationAction.setOnClickListener { leaveConversation() }
|
binding.leaveConversationAction.setOnClickListener { leaveConversation() }
|
||||||
binding.clearConversationHistory.setOnClickListener { showClearHistoryDialog(null) }
|
binding.clearConversationHistory.setOnClickListener { showClearHistoryDialog() }
|
||||||
binding.addParticipantsAction.setOnClickListener { addParticipants() }
|
binding.addParticipantsAction.setOnClickListener { addParticipants() }
|
||||||
|
|
||||||
if (CapabilitiesUtilNew.hasSpreedFeatureCapability(conversationUser, "rich-object-list-media")) {
|
if (CapabilitiesUtilNew.hasSpreedFeatureCapability(conversationUser, "rich-object-list-media")) {
|
||||||
@ -226,10 +224,6 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
override fun onViewBound(view: View) {
|
override fun onViewBound(view: View) {
|
||||||
super.onViewBound(view)
|
super.onViewBound(view)
|
||||||
|
|
||||||
if (saveStateHandler == null) {
|
|
||||||
saveStateHandler = LovelySaveStateHandler()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.addParticipantsAction.visibility = View.GONE
|
binding.addParticipantsAction.visibility = View.GONE
|
||||||
|
|
||||||
viewThemeUtils.colorCircularProgressBar(binding.progressBar)
|
viewThemeUtils.colorCircularProgressBar(binding.progressBar)
|
||||||
@ -357,16 +351,6 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showLovelyDialog(dialogId: Int, savedInstanceState: Bundle) {
|
|
||||||
when (dialogId) {
|
|
||||||
ID_DELETE_CONVERSATION_DIALOG -> showDeleteConversationDialog(savedInstanceState)
|
|
||||||
ID_CLEAR_CHAT_DIALOG -> showClearHistoryDialog(savedInstanceState)
|
|
||||||
else -> {
|
|
||||||
// unused atm
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun onMessageEvent(eventStatus: EventStatus) {
|
fun onMessageEvent(eventStatus: EventStatus) {
|
||||||
getListOfParticipants()
|
getListOfParticipants()
|
||||||
@ -377,38 +361,24 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
eventBus.unregister(this)
|
eventBus.unregister(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showDeleteConversationDialog(savedInstanceState: Bundle?) {
|
private fun showDeleteConversationDialog() {
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
LovelyStandardDialog(activity, LovelyStandardDialog.ButtonLayout.HORIZONTAL)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
||||||
.setTopColorRes(R.color.nc_darkRed)
|
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
||||||
.setIcon(
|
|
||||||
DisplayUtils.getTintedDrawable(
|
|
||||||
context.resources,
|
|
||||||
R.drawable.ic_delete_black_24dp, R.color.bg_default
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.setPositiveButtonColor(context.resources.getColor(R.color.nc_darkRed))
|
|
||||||
.setTitle(R.string.nc_delete_call)
|
.setTitle(R.string.nc_delete_call)
|
||||||
.setMessage(R.string.nc_delete_conversation_more)
|
.setMessage(R.string.nc_delete_conversation_more)
|
||||||
.setPositiveButton(R.string.nc_delete) { deleteConversation() }
|
.setPositiveButton(R.string.nc_delete) { _, _ ->
|
||||||
.setNegativeButton(R.string.nc_cancel, null)
|
deleteConversation()
|
||||||
.setInstanceStateHandler(ID_DELETE_CONVERSATION_DIALOG, saveStateHandler!!)
|
}
|
||||||
.setSavedInstanceState(savedInstanceState)
|
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
||||||
.show()
|
// unused atm
|
||||||
}
|
}
|
||||||
}
|
viewThemeUtils.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
||||||
|
val dialog = dialogBuilder.show()
|
||||||
override fun onSaveViewState(view: View, outState: Bundle) {
|
viewThemeUtils.colorTextButtons(
|
||||||
saveStateHandler!!.saveInstanceState(outState)
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
super.onSaveViewState(view, outState)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
}
|
)
|
||||||
|
|
||||||
override fun onRestoreViewState(view: View, savedViewState: Bundle) {
|
|
||||||
super.onRestoreViewState(view, savedViewState)
|
|
||||||
if (LovelySaveStateHandler.wasDialogOnScreen(savedViewState)) {
|
|
||||||
// Dialog won't be restarted automatically, so we need to call this method.
|
|
||||||
// Each dialog knows how to restore its state
|
|
||||||
showLovelyDialog(LovelySaveStateHandler.getSavedDialogId(savedViewState), savedViewState)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,24 +532,24 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showClearHistoryDialog(savedInstanceState: Bundle?) {
|
private fun showClearHistoryDialog() {
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
LovelyStandardDialog(activity, LovelyStandardDialog.ButtonLayout.HORIZONTAL)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
||||||
.setTopColorRes(R.color.nc_darkRed)
|
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
||||||
.setIcon(
|
|
||||||
DisplayUtils.getTintedDrawable(
|
|
||||||
context.resources,
|
|
||||||
R.drawable.ic_delete_black_24dp, R.color.bg_default
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.setPositiveButtonColor(context.resources.getColor(R.color.nc_darkRed))
|
|
||||||
.setTitle(R.string.nc_clear_history)
|
.setTitle(R.string.nc_clear_history)
|
||||||
.setMessage(R.string.nc_clear_history_warning)
|
.setMessage(R.string.nc_clear_history_warning)
|
||||||
.setPositiveButton(R.string.nc_delete_all) { clearHistory() }
|
.setPositiveButton(R.string.nc_delete_all) { _, _ ->
|
||||||
.setNegativeButton(R.string.nc_cancel, null)
|
clearHistory()
|
||||||
.setInstanceStateHandler(ID_CLEAR_CHAT_DIALOG, saveStateHandler!!)
|
}
|
||||||
.setSavedInstanceState(savedInstanceState)
|
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
||||||
.show()
|
// unused atm
|
||||||
|
}
|
||||||
|
viewThemeUtils.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
||||||
|
val dialog = dialogBuilder.show()
|
||||||
|
viewThemeUtils.colorTextButtons(
|
||||||
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user