From aaa772c74981a4878ce1e930c2caf655a255a2ee Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 20 Oct 2020 11:00:15 +0200 Subject: [PATCH] Android style to validate form --- .../app/features/form/FormSubmitButtonItem.kt | 60 +++++++++++++++++++ .../createroom/CreateRoomController.kt | 8 +++ .../createroom/CreateRoomFragment.kt | 17 ++---- .../res/layout/item_form_submit_button.xml | 18 ++++++ 4 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/form/FormSubmitButtonItem.kt create mode 100644 vector/src/main/res/layout/item_form_submit_button.xml diff --git a/vector/src/main/java/im/vector/app/features/form/FormSubmitButtonItem.kt b/vector/src/main/java/im/vector/app/features/form/FormSubmitButtonItem.kt new file mode 100644 index 0000000000..2d2a5e7aec --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/form/FormSubmitButtonItem.kt @@ -0,0 +1,60 @@ +/* + * 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.app.features.form + +import android.widget.Button +import androidx.annotation.StringRes +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import com.airbnb.epoxy.EpoxyModelWithHolder +import im.vector.app.R +import im.vector.app.core.epoxy.ClickListener +import im.vector.app.core.epoxy.VectorEpoxyHolder +import im.vector.app.core.epoxy.onClick +import im.vector.app.core.extensions.setTextOrHide + +@EpoxyModelClass(layout = R.layout.item_form_submit_button) +abstract class FormSubmitButtonItem : EpoxyModelWithHolder() { + + @EpoxyAttribute + var enabled: Boolean = true + + @EpoxyAttribute + var buttonTitle: String? = null + + @EpoxyAttribute + @StringRes + var buttonTitleId: Int? = null + + @EpoxyAttribute + var buttonClickListener: ClickListener? = null + + override fun bind(holder: Holder) { + super.bind(holder) + if (buttonTitleId != null) { + holder.button.setText(buttonTitleId!!) + } else { + holder.button.setTextOrHide(buttonTitle) + } + + holder.button.isEnabled = enabled + holder.button.onClick(buttonClickListener) + } + + class Holder : VectorEpoxyHolder() { + val button by bind