diff --git a/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonStyle.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonStyle.kt new file mode 100644 index 0000000000..d6cc90c0e9 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonStyle.kt @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.riotx.core.epoxy.attributes + +enum class ButtonStyle { + POSITIVE, + DESTRUCTIVE +} diff --git a/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonType.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonType.kt new file mode 100644 index 0000000000..b3cbe9cd84 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/ButtonType.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.riotx.core.epoxy.attributes + +enum class ButtonType { + NO_BUTTON, + NORMAL, + SWITCH +} diff --git a/vector/src/main/java/im/vector/riotx/features/discovery/IconMode.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/IconMode.kt similarity index 89% rename from vector/src/main/java/im/vector/riotx/features/discovery/IconMode.kt rename to vector/src/main/java/im/vector/riotx/core/epoxy/attributes/IconMode.kt index e46a7d245d..c6b1ebf505 100644 --- a/vector/src/main/java/im/vector/riotx/features/discovery/IconMode.kt +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/attributes/IconMode.kt @@ -14,10 +14,10 @@ * limitations under the License. */ -package im.vector.riotx.features.discovery +package im.vector.riotx.core.epoxy.attributes enum class IconMode { - None, - Info, - Error + NONE, + INFO, + ERROR } diff --git a/vector/src/main/java/im/vector/riotx/features/discovery/DiscoverySettingsController.kt b/vector/src/main/java/im/vector/riotx/features/discovery/DiscoverySettingsController.kt index d6e49758f0..57b8e165e8 100644 --- a/vector/src/main/java/im/vector/riotx/features/discovery/DiscoverySettingsController.kt +++ b/vector/src/main/java/im/vector/riotx/features/discovery/DiscoverySettingsController.kt @@ -27,6 +27,9 @@ import im.vector.matrix.android.api.failure.Failure import im.vector.matrix.android.api.session.identity.SharedState import im.vector.matrix.android.api.session.identity.ThreePid import im.vector.riotx.R +import im.vector.riotx.core.epoxy.attributes.ButtonStyle +import im.vector.riotx.core.epoxy.attributes.ButtonType +import im.vector.riotx.core.epoxy.attributes.IconMode import im.vector.riotx.core.epoxy.loadingItem import im.vector.riotx.core.error.ErrorFormatter import im.vector.riotx.core.extensions.exhaustive @@ -107,7 +110,7 @@ class DiscoverySettingsController @Inject constructor( } else { buttonTitleId(R.string.add_identity_server) } - buttonStyle(SettingsTextButtonSingleLineItem.ButtonStyle.POSITIVE) + buttonStyle(ButtonStyle.POSITIVE) buttonClickListener(View.OnClickListener { listener?.onTapChangeIdentityServer() }) @@ -122,7 +125,7 @@ class DiscoverySettingsController @Inject constructor( id("remove") colorProvider(colorProvider) buttonTitleId(R.string.disconnect_identity_server) - buttonStyle(SettingsTextButtonSingleLineItem.ButtonStyle.DESTRUCTIVE) + buttonStyle(ButtonStyle.DESTRUCTIVE) buttonClickListener(View.OnClickListener { listener?.onTapDisconnectIdentityServer() }) @@ -172,16 +175,16 @@ class DiscoverySettingsController @Inject constructor( buttonIndeterminate(true) } is Fail -> { - buttonStyle(SettingsTextButtonSingleLineItem.ButtonStyle.DESTRUCTIVE) + buttonStyle(ButtonStyle.DESTRUCTIVE) buttonTitle(stringProvider.getString(R.string.global_retry)) - iconMode(IconMode.Error) + iconMode(IconMode.ERROR) buttonClickListener { listener?.onTapRetryToRetrieveBindings() } } is Success -> when (pidInfo.isShared()) { SharedState.SHARED, SharedState.NOT_SHARED -> { checked(pidInfo.isShared() == SharedState.SHARED) - buttonType(SettingsTextButtonSingleLineItem.ButtonType.SWITCH) + buttonType(ButtonType.SWITCH) switchChangeListener { _, checked -> if (checked) { listener?.onTapShare(pidInfo.threePid) @@ -191,11 +194,11 @@ class DiscoverySettingsController @Inject constructor( } } SharedState.BINDING_IN_PROGRESS -> { - buttonType(SettingsTextButtonSingleLineItem.ButtonType.NO_BUTTON) + buttonType(ButtonType.NO_BUTTON) when (pidInfo.finalRequest) { - is Incomplete -> iconMode(IconMode.Info) - is Fail -> iconMode(IconMode.Error) - else -> iconMode(IconMode.None) + is Incomplete -> iconMode(IconMode.INFO) + is Fail -> iconMode(IconMode.ERROR) + else -> iconMode(IconMode.NONE) } } } @@ -300,17 +303,17 @@ class DiscoverySettingsController @Inject constructor( buttonIndeterminate(true) } is Fail -> { - buttonType(SettingsTextButtonSingleLineItem.ButtonType.NORMAL) - buttonStyle(SettingsTextButtonSingleLineItem.ButtonStyle.DESTRUCTIVE) + buttonType(ButtonType.NORMAL) + buttonStyle(ButtonStyle.DESTRUCTIVE) buttonTitle(stringProvider.getString(R.string.global_retry)) - iconMode(IconMode.Error) + iconMode(IconMode.ERROR) buttonClickListener { listener?.onTapRetryToRetrieveBindings() } } is Success -> when (pidInfo.isShared()) { SharedState.SHARED, SharedState.NOT_SHARED -> { checked(pidInfo.isShared() == SharedState.SHARED) - buttonType(SettingsTextButtonSingleLineItem.ButtonType.SWITCH) + buttonType(ButtonType.SWITCH) switchChangeListener { _, checked -> if (checked) { listener?.onTapShare(pidInfo.threePid) @@ -320,7 +323,7 @@ class DiscoverySettingsController @Inject constructor( } } SharedState.BINDING_IN_PROGRESS -> { - buttonType(SettingsTextButtonSingleLineItem.ButtonType.NO_BUTTON) + buttonType(ButtonType.NO_BUTTON) } } } diff --git a/vector/src/main/java/im/vector/riotx/features/discovery/SettingsButtonItem.kt b/vector/src/main/java/im/vector/riotx/features/discovery/SettingsButtonItem.kt index e885eef69b..b7ff85cd09 100644 --- a/vector/src/main/java/im/vector/riotx/features/discovery/SettingsButtonItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/discovery/SettingsButtonItem.kt @@ -23,6 +23,7 @@ import com.airbnb.epoxy.EpoxyModelClass import com.airbnb.epoxy.EpoxyModelWithHolder import im.vector.riotx.R import im.vector.riotx.core.epoxy.VectorEpoxyHolder +import im.vector.riotx.core.epoxy.attributes.ButtonStyle import im.vector.riotx.core.extensions.setTextOrHide import im.vector.riotx.core.resources.ColorProvider @@ -40,7 +41,7 @@ abstract class SettingsButtonItem : EpoxyModelWithHolder { + ButtonStyle.POSITIVE -> { holder.button.setTextColor(colorProvider.getColor(R.color.riotx_accent)) } - SettingsTextButtonSingleLineItem.ButtonStyle.DESTRUCTIVE -> { + ButtonStyle.DESTRUCTIVE -> { holder.button.setTextColor(colorProvider.getColor(R.color.riotx_destructive_accent)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/discovery/SettingsTextButtonSingleLineItem.kt b/vector/src/main/java/im/vector/riotx/features/discovery/SettingsTextButtonSingleLineItem.kt index a6a0be8da7..6574c796ba 100644 --- a/vector/src/main/java/im/vector/riotx/features/discovery/SettingsTextButtonSingleLineItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/discovery/SettingsTextButtonSingleLineItem.kt @@ -30,6 +30,9 @@ import com.airbnb.epoxy.EpoxyModelWithHolder import im.vector.riotx.R import im.vector.riotx.core.epoxy.ClickListener import im.vector.riotx.core.epoxy.VectorEpoxyHolder +import im.vector.riotx.core.epoxy.attributes.ButtonStyle +import im.vector.riotx.core.epoxy.attributes.ButtonType +import im.vector.riotx.core.epoxy.attributes.IconMode import im.vector.riotx.core.epoxy.onClick import im.vector.riotx.core.extensions.exhaustive import im.vector.riotx.core.extensions.setTextOrHide @@ -40,17 +43,6 @@ import im.vector.riotx.features.themes.ThemeUtils @EpoxyModelClass(layout = R.layout.item_settings_button_single_line) abstract class SettingsTextButtonSingleLineItem : EpoxyModelWithHolder() { - enum class ButtonStyle { - POSITIVE, - DESTRUCTIVE - } - - enum class ButtonType { - NO_BUTTON, - NORMAL, - SWITCH - } - @EpoxyAttribute lateinit var colorProvider: ColorProvider @@ -65,7 +57,7 @@ abstract class SettingsTextButtonSingleLineItem : EpoxyModelWithHolder { + IconMode.NONE -> { holder.textView.setCompoundDrawables(null, null, null, null) } - IconMode.Info -> { + IconMode.INFO -> { val errorColor = colorProvider.getColor(R.color.notification_accent_color) ContextCompat.getDrawable(holder.view.context, R.drawable.ic_notification_privacy_warning)?.apply { ThemeUtils.tintDrawableWithColor(this, errorColor) holder.textView.setCompoundDrawablesWithIntrinsicBounds(this, null, null, null) } } - IconMode.Error -> { + IconMode.ERROR -> { val errorColor = colorProvider.getColor(R.color.vector_error_color) ContextCompat.getDrawable(holder.view.context, R.drawable.ic_notification_privacy_warning)?.apply { ThemeUtils.tintDrawableWithColor(this, errorColor)