|
@@ -24,6 +24,7 @@ import android.annotation.SuppressLint
|
|
|
import android.app.Dialog
|
|
|
import android.content.Context
|
|
|
import android.os.Bundle
|
|
|
+import android.util.Log
|
|
|
import android.view.LayoutInflater
|
|
|
import android.view.View
|
|
|
import android.view.ViewGroup
|
|
@@ -31,10 +32,13 @@ import android.view.inputmethod.InputMethodManager
|
|
|
import android.widget.AdapterView
|
|
|
import android.widget.AdapterView.OnItemSelectedListener
|
|
|
import android.widget.ArrayAdapter
|
|
|
+import android.widget.ImageView
|
|
|
+import android.widget.TextView
|
|
|
import androidx.annotation.VisibleForTesting
|
|
|
-import androidx.appcompat.app.AlertDialog
|
|
|
import androidx.fragment.app.DialogFragment
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
+import com.google.android.material.card.MaterialCardView
|
|
|
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
import com.google.gson.Gson
|
|
|
import com.google.gson.reflect.TypeToken
|
|
|
import com.nextcloud.client.account.User
|
|
@@ -53,9 +57,7 @@ import com.owncloud.android.ui.activity.BaseActivity
|
|
|
import com.owncloud.android.ui.adapter.PredefinedStatusClickListener
|
|
|
import com.owncloud.android.ui.adapter.PredefinedStatusListAdapter
|
|
|
import com.owncloud.android.utils.DisplayUtils
|
|
|
-import com.owncloud.android.utils.theme.ThemeButtonUtils
|
|
|
-import com.owncloud.android.utils.theme.ThemeColorUtils
|
|
|
-import com.owncloud.android.utils.theme.ThemeTextInputUtils
|
|
|
+import com.owncloud.android.utils.theme.ViewThemeUtils
|
|
|
import com.vanniktech.emoji.EmojiManager
|
|
|
import com.vanniktech.emoji.EmojiPopup
|
|
|
import com.vanniktech.emoji.google.GoogleEmojiProvider
|
|
@@ -110,13 +112,7 @@ class SetStatusDialogFragment :
|
|
|
lateinit var clientFactory: ClientFactory
|
|
|
|
|
|
@Inject
|
|
|
- lateinit var themeColorUtils: ThemeColorUtils
|
|
|
-
|
|
|
- @Inject
|
|
|
- lateinit var themeButtonUtils: ThemeButtonUtils
|
|
|
-
|
|
|
- @Inject
|
|
|
- lateinit var themeTextInputUtils: ThemeTextInputUtils
|
|
|
+ lateinit var viewThemeUtils: ViewThemeUtils
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
@@ -139,9 +135,11 @@ class SetStatusDialogFragment :
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
|
binding = DialogSetStatusBinding.inflate(layoutInflater)
|
|
|
|
|
|
- return AlertDialog.Builder(requireContext())
|
|
|
- .setView(binding.root)
|
|
|
- .create()
|
|
|
+ val builder = MaterialAlertDialogBuilder(requireContext()).setView(binding.root)
|
|
|
+
|
|
|
+ viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.statusView.context, builder)
|
|
|
+
|
|
|
+ return builder.create()
|
|
|
}
|
|
|
|
|
|
@SuppressLint("DefaultLocale")
|
|
@@ -165,6 +163,11 @@ class SetStatusDialogFragment :
|
|
|
binding.awayStatus.setOnClickListener { setStatus(StatusType.AWAY) }
|
|
|
binding.invisibleStatus.setOnClickListener { setStatus(StatusType.INVISIBLE) }
|
|
|
|
|
|
+ viewThemeUtils.files.themeStatusCardView(binding.onlineStatus)
|
|
|
+ viewThemeUtils.files.themeStatusCardView(binding.dndStatus)
|
|
|
+ viewThemeUtils.files.themeStatusCardView(binding.awayStatus)
|
|
|
+ viewThemeUtils.files.themeStatusCardView(binding.invisibleStatus)
|
|
|
+
|
|
|
binding.clearStatus.setOnClickListener { clearStatus() }
|
|
|
binding.setStatus.setOnClickListener { setStatusMessage() }
|
|
|
binding.emoji.setOnClickListener { popup.show() }
|
|
@@ -204,14 +207,11 @@ class SetStatusDialogFragment :
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- binding.clearStatus.setTextColor(themeColorUtils.primaryColor(context, true))
|
|
|
- themeButtonUtils.colorPrimaryButton(binding.setStatus, context, themeColorUtils)
|
|
|
- themeTextInputUtils.colorTextInput(
|
|
|
- binding.customStatusInputContainer,
|
|
|
- binding.customStatusInput,
|
|
|
- themeColorUtils.primaryColor(activity),
|
|
|
- themeColorUtils.primaryAccentColor(activity)
|
|
|
- )
|
|
|
+ viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.clearStatus)
|
|
|
+ viewThemeUtils.material.colorMaterialButtonPrimaryTonal(binding.setStatus)
|
|
|
+ viewThemeUtils.material.colorTextInputLayout(binding.customStatusInputContainer)
|
|
|
+
|
|
|
+ viewThemeUtils.platform.themeDialog(binding.root)
|
|
|
}
|
|
|
|
|
|
private fun updateCurrentStatusViews(it: Status) {
|
|
@@ -318,34 +318,37 @@ class SetStatusDialogFragment :
|
|
|
}
|
|
|
|
|
|
private fun visualizeStatus(statusType: StatusType) {
|
|
|
- when (statusType) {
|
|
|
- StatusType.ONLINE -> {
|
|
|
- clearTopStatus()
|
|
|
- binding.onlineStatus.setBackgroundColor(themeColorUtils.primaryColor(context))
|
|
|
- }
|
|
|
- StatusType.AWAY -> {
|
|
|
- clearTopStatus()
|
|
|
- binding.awayStatus.setBackgroundColor(themeColorUtils.primaryColor(context))
|
|
|
+ clearTopStatus()
|
|
|
+ val views: Triple<MaterialCardView, TextView, ImageView> = when (statusType) {
|
|
|
+ StatusType.ONLINE -> Triple(binding.onlineStatus, binding.onlineHeadline, binding.onlineIcon)
|
|
|
+ StatusType.AWAY -> Triple(binding.awayStatus, binding.awayHeadline, binding.awayIcon)
|
|
|
+ StatusType.DND -> Triple(binding.dndStatus, binding.dndHeadline, binding.dndIcon)
|
|
|
+ StatusType.INVISIBLE -> Triple(binding.invisibleStatus, binding.invisibleHeadline, binding.invisibleIcon)
|
|
|
+ else -> {
|
|
|
+ Log.d(TAG, "unknown status")
|
|
|
+ return
|
|
|
}
|
|
|
- StatusType.DND -> {
|
|
|
- clearTopStatus()
|
|
|
- binding.dndStatus.setBackgroundColor(themeColorUtils.primaryColor(context))
|
|
|
- }
|
|
|
- StatusType.INVISIBLE -> {
|
|
|
- clearTopStatus()
|
|
|
- binding.invisibleStatus.setBackgroundColor(themeColorUtils.primaryColor(context))
|
|
|
- }
|
|
|
- else -> clearTopStatus()
|
|
|
}
|
|
|
+ views.first.isChecked = true
|
|
|
+ viewThemeUtils.platform.colorOnSecondaryContainerTextViewElement(views.second)
|
|
|
}
|
|
|
|
|
|
private fun clearTopStatus() {
|
|
|
context?.let {
|
|
|
- val grey = it.resources.getColor(R.color.grey_200)
|
|
|
- binding.onlineStatus.setBackgroundColor(grey)
|
|
|
- binding.awayStatus.setBackgroundColor(grey)
|
|
|
- binding.dndStatus.setBackgroundColor(grey)
|
|
|
- binding.invisibleStatus.setBackgroundColor(grey)
|
|
|
+ binding.onlineHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
|
|
|
+ binding.awayHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
|
|
|
+ binding.dndHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
|
|
|
+ binding.invisibleHeadline.setTextColor(resources.getColor(R.color.high_emphasis_text))
|
|
|
+
|
|
|
+ binding.onlineIcon.imageTintList = null
|
|
|
+ binding.awayIcon.imageTintList = null
|
|
|
+ binding.dndIcon.imageTintList = null
|
|
|
+ binding.invisibleIcon.imageTintList = null
|
|
|
+
|
|
|
+ binding.onlineStatus.isChecked = false
|
|
|
+ binding.awayStatus.isChecked = false
|
|
|
+ binding.dndStatus.isChecked = false
|
|
|
+ binding.invisibleStatus.isChecked = false
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -384,6 +387,8 @@ class SetStatusDialogFragment :
|
|
|
* Fragment creator
|
|
|
*/
|
|
|
companion object {
|
|
|
+ private val TAG = SetStatusDialogFragment::class.simpleName
|
|
|
+
|
|
|
@JvmStatic
|
|
|
fun newInstance(user: User, status: Status?): SetStatusDialogFragment {
|
|
|
val args = Bundle()
|
|
@@ -391,7 +396,6 @@ class SetStatusDialogFragment :
|
|
|
args.putParcelable(ARG_CURRENT_STATUS_PARAM, status)
|
|
|
val dialogFragment = SetStatusDialogFragment()
|
|
|
dialogFragment.arguments = args
|
|
|
- dialogFragment.setStyle(STYLE_NORMAL, R.style.Theme_ownCloud_Dialog)
|
|
|
return dialogFragment
|
|
|
}
|
|
|
}
|