From 8a35366edbc942f50abd726a4ea0215a79eb5f45 Mon Sep 17 00:00:00 2001 From: Orhun Kupeli Date: Thu, 1 Jun 2023 17:12:35 +0200 Subject: [PATCH] Adapt view binding changes --- .../example/ui/main/MainActivity.kt | 17 +++++++---------- example/src/main/res/layout/main_activity.xml | 8 ++++---- .../backend/presenter/PresenterImpl.kt | 6 +++--- .../backend/views/main_parts/Header.kt | 19 +++++++++++++------ .../backend/views/step/QuestionView.kt | 15 +++++++++++---- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/example/src/main/java/com/quickbirdstudios/example/ui/main/MainActivity.kt b/example/src/main/java/com/quickbirdstudios/example/ui/main/MainActivity.kt index 5691cb8..c983fd5 100644 --- a/example/src/main/java/com/quickbirdstudios/example/ui/main/MainActivity.kt +++ b/example/src/main/java/com/quickbirdstudios/example/ui/main/MainActivity.kt @@ -6,12 +6,12 @@ import android.os.Parcelable import android.util.Log import android.view.KeyEvent import android.view.View -import android.view.ViewGroup import android.widget.Button import android.widget.EditText import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.quickbirdstudios.example.R +import com.quickbirdstudios.example.databinding.MainActivityBinding import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.FinishReason import com.quickbirdstudios.surveykit.Identifier @@ -36,16 +36,13 @@ import kotlinx.android.parcel.Parcelize class MainActivity : AppCompatActivity() { - private lateinit var survey: SurveyView - private lateinit var container: ViewGroup + private lateinit var binding: MainActivityBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.main_activity) - - survey = findViewById(R.id.survey_view) - container = findViewById(R.id.surveyContainer) - setupSurvey(survey) + binding = MainActivityBinding.inflate(layoutInflater) + setContentView(binding.root) + setupSurvey(binding.surveyView) } private fun setupSurvey(surveyView: SurveyView) { @@ -194,7 +191,7 @@ class MainActivity : AppCompatActivity() { if (reason == FinishReason.Completed) { taskResult.results.forEach { stepResult -> Log.e("ASDF", "answer ${stepResult.results.firstOrNull()}") - container.removeAllViews() + binding.surveyContainer.removeAllViews() } } } @@ -216,7 +213,7 @@ class MainActivity : AppCompatActivity() { override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { - survey.backPressed() + binding.surveyView.backPressed() true } else false } diff --git a/example/src/main/res/layout/main_activity.xml b/example/src/main/res/layout/main_activity.xml index c697978..817d6e2 100644 --- a/example/src/main/res/layout/main_activity.xml +++ b/example/src/main/res/layout/main_activity.xml @@ -1,14 +1,14 @@ + android:orientation="vertical"> + android:layout_height="match_parent"> + diff --git a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/presenter/PresenterImpl.kt b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/presenter/PresenterImpl.kt index 25e77bd..b81f8e0 100644 --- a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/presenter/PresenterImpl.kt +++ b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/presenter/PresenterImpl.kt @@ -7,10 +7,10 @@ import com.quickbirdstudios.surveykit.StepIdentifier import com.quickbirdstudios.surveykit.SurveyTheme import com.quickbirdstudios.surveykit.backend.navigator.TaskNavigator import com.quickbirdstudios.surveykit.backend.presenter.animations.ViewAnimator +import com.quickbirdstudios.surveykit.backend.views.step.QuestionView import com.quickbirdstudios.surveykit.backend.views.step.StepView import com.quickbirdstudios.surveykit.result.StepResult import com.quickbirdstudios.surveykit.steps.Step -import kotlinx.android.synthetic.main.view_question.view.* import java.util.Date import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -101,8 +101,8 @@ internal class PresenterImpl( val previousQuestionView = currentQuestionView - if (!hasPreviousStep()) { - questionView.questionHeader?.canBack = false + if (!hasPreviousStep() && questionView is QuestionView) { + questionView.header.canBack = false } currentQuestionView = questionView diff --git a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/views/main_parts/Header.kt b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/views/main_parts/Header.kt index f8d6701..c1573f8 100644 --- a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/views/main_parts/Header.kt +++ b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/views/main_parts/Header.kt @@ -4,15 +4,15 @@ import android.app.Activity import android.content.Context import android.graphics.Color import android.util.AttributeSet +import android.view.LayoutInflater import android.view.View import android.view.inputmethod.InputMethodManager -import android.widget.Button import android.widget.ImageView -import android.widget.RelativeLayout import android.widget.TextView import androidx.appcompat.widget.Toolbar import com.quickbirdstudios.surveykit.R import com.quickbirdstudios.surveykit.SurveyTheme +import com.quickbirdstudios.surveykit.databinding.LayoutHeaderBinding // TODO should take [Configuration] in constructor and remove public color setters and getters class Header @JvmOverloads constructor( @@ -21,6 +21,13 @@ class Header @JvmOverloads constructor( defStyleRes: Int = 0 ) : Toolbar(context, attrs, defStyleRes), StyleablePart { + private val root by lazy { + LayoutHeaderBinding.inflate( + LayoutInflater.from(context), + this, + false + ) + } //region Public API @@ -62,9 +69,9 @@ class Header @JvmOverloads constructor( //region Members - private val root: View = View.inflate(context, R.layout.layout_header, this) - private val headerLabel: TextView = root.findViewById(R.id.headerLabel) - private val buttonBack = root.findViewById(R.id.headerBackButton).apply { +// private val root: View = View.inflate(context, R.layout.layout_header, this) + private val headerLabel: TextView = root.headerLabel + private val buttonBack = root.headerBackButton.apply { setOnClickListener { hideKeyboard() onBack() @@ -74,7 +81,7 @@ class Header @JvmOverloads constructor( buttonBack.findViewById(R.id.headerBackButtonImage).apply { background.setTint(themeColor) } - private val cancelButton = root.findViewById