diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml new file mode 100644 index 0000000..65eb7f6 --- /dev/null +++ b/.github/workflows/android_build.yml @@ -0,0 +1,25 @@ +name: Android Build + +on: pull_request + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Build Project + run: ./gradlew assemble + + - name: Run Tests + run: ./gradlew test + + - name: Ktlint + run: ./gradlew ktlintFormat diff --git a/build.gradle.kts b/build.gradle.kts index 483fc23..f5cd8ef 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,10 +5,12 @@ buildscript { mavenCentral() google() maven { url = uri("https://repository.quickbirdstudios.com/repository/public") } + maven { url = uri("https://plugins.gradle.org/m2/") } } dependencies { classpath(Deps.Plugins.kotlin) + classpath(Deps.Plugins.ktlint) } } diff --git a/buildSrc/src/main/kotlin/Deps.kt b/buildSrc/src/main/kotlin/Deps.kt index 550b8b1..3a68248 100644 --- a/buildSrc/src/main/kotlin/Deps.kt +++ b/buildSrc/src/main/kotlin/Deps.kt @@ -1,12 +1,13 @@ object Versions { - const val kotlin = "1.3.50" + const val kotlin = "1.3.70" const val coroutines = "1.3.0" const val test = "1.1.1" const val jUnit = "5.5.2" const val jUnitPlatform = "1.5.2" const val lottie = "3.0.7" const val espresso = "3.1.0" + const val ktlint = "9.4.1" object AndroidSupport { const val appCompat = "1.0.0" @@ -24,6 +25,7 @@ object Deps { object Plugins { const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}" + const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:${Versions.ktlint}" } object Kotlin { diff --git a/local.properties b/local.properties new file mode 100644 index 0000000..d76b063 --- /dev/null +++ b/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Fri Aug 27 11:22:30 CEST 2021 +sdk.dir=/Users/stavroxhardha/Library/Android/sdk diff --git a/survey/build.gradle.kts b/survey/build.gradle.kts index b932f0b..a6d6396 100644 --- a/survey/build.gradle.kts +++ b/survey/build.gradle.kts @@ -5,6 +5,7 @@ plugins { kotlin("android") id("org.jetbrains.kotlin.android.extensions") id("gradle-publishing") + id("org.jlleitschuh.gradle.ktlint") } androidExtensions { isExperimental = true } @@ -36,4 +37,4 @@ dependencies { testImplementation(Deps.Test.jUnitJupiter) testImplementation(Deps.Test.jUnitPlatform) -} \ No newline at end of file +} diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/AnswerFormat.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/AnswerFormat.kt index 8eb90d1..d80c169 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/AnswerFormat.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/AnswerFormat.kt @@ -5,10 +5,10 @@ import androidx.annotation.DrawableRes import androidx.annotation.IntRange import androidx.lifecycle.Lifecycle import com.quickbirdstudios.surveykit.backend.address.AddressSuggestionProvider +import kotlinx.android.parcel.Parcelize import java.util.Calendar -import java.util.Date as JavaDate import java.util.regex.Pattern -import kotlinx.android.parcel.Parcelize +import java.util.Date as JavaDate sealed class AnswerFormat { diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/Identifier.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/Identifier.kt index 04a8d20..4eef5b0 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/Identifier.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/Identifier.kt @@ -1,8 +1,8 @@ package com.quickbirdstudios.surveykit import android.os.Parcelable -import java.util.UUID import kotlinx.android.parcel.Parcelize +import java.util.UUID @Parcelize open class Identifier(open val id: String) : Parcelable diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/EditText+afterTextChanged.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/EditText+afterTextChanged.kt index 8117979..ec568d1 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/EditText+afterTextChanged.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/EditText+afterTextChanged.kt @@ -5,9 +5,11 @@ import android.text.TextWatcher import android.widget.EditText fun EditText.afterTextChanged(listener: (String) -> Unit) { - addTextChangedListener(object : TextWatcher { - override fun afterTextChanged(s: Editable) = listener(s.toString()) - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit - }) + addTextChangedListener( + object : TextWatcher { + override fun afterTextChanged(s: Editable) = listener(s.toString()) + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit + } + ) } diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/View.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/View.kt index 8c6e4de..a7ff480 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/View.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/helpers/extensions/View.kt @@ -17,4 +17,3 @@ fun View.hideKeyboard() { val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(windowToken, 0) } - diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/navigator/TaskNavigator.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/navigator/TaskNavigator.kt index c9ae681..140fa70 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/navigator/TaskNavigator.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/navigator/TaskNavigator.kt @@ -34,7 +34,7 @@ interface TaskNavigator { return history.peek() } - fun hasPreviousStep() : Boolean { + fun hasPreviousStep(): Boolean { val previousStep = peekHistory() return previousStep != null } 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 3c5ed1c..d8e0833 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,7 +7,6 @@ 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 @@ -103,7 +102,7 @@ internal class PresenterImpl( val previousQuestionView = currentQuestionView - if(!hasPreviousStep()) { + if (!hasPreviousStep()) { questionView.questionHeader.canBack = false } @@ -120,16 +119,18 @@ internal class PresenterImpl( when (transition) { Presenter.Transition.SlideFromRight -> viewAnimator.rightToLeft( - viewContainer, ViewAnimator.PageSwipe(previousQuestionView, questionView) + viewContainer, + ViewAnimator.PageSwipe(previousQuestionView, questionView) ) Presenter.Transition.SlideFromLeft -> viewAnimator.leftToRight( - viewContainer, ViewAnimator.PageSwipe(previousQuestionView, questionView) + viewContainer, + ViewAnimator.PageSwipe(previousQuestionView, questionView) ) Presenter.Transition.None -> Unit } } - private fun hasPreviousStep() : Boolean { + private fun hasPreviousStep(): Boolean { return taskNavigator.hasPreviousStep() } diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/presenter/animations/ViewAnimator.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/presenter/animations/ViewAnimator.kt index 57622fd..e2aaf45 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/presenter/animations/ViewAnimator.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/presenter/animations/ViewAnimator.kt @@ -6,28 +6,32 @@ import android.view.ViewGroup import android.view.animation.Animation import android.view.animation.AnimationUtils import com.quickbirdstudios.surveykit.R -import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import kotlin.coroutines.CoroutineContext internal class ViewAnimator(val context: Context) { //region Member private val enterFromRightAnimation = AnimationUtils.loadAnimation( - context, R.anim.enter_from_right + context, + R.anim.enter_from_right )!! private val enterFromLeftAnimation = AnimationUtils.loadAnimation( - context, R.anim.enter_from_left + context, + R.anim.enter_from_left )!! private val exitToRightAnimation = AnimationUtils.loadAnimation( - context, R.anim.exit_to_right + context, + R.anim.exit_to_right )!! private val exitToLeftAnimation = AnimationUtils.loadAnimation( - context, R.anim.exit_to_left + context, + R.anim.exit_to_left )!! //endregion diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/DateTimePickerPart.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/DateTimePickerPart.kt index d89b166..3105a97 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/DateTimePickerPart.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/DateTimePickerPart.kt @@ -6,14 +6,18 @@ import android.content.Context import android.os.Parcelable import android.util.AttributeSet import android.view.Gravity -import android.widget.* +import android.widget.Button +import android.widget.DatePicker +import android.widget.LinearLayout +import android.widget.TextView +import android.widget.TimePicker import androidx.appcompat.widget.AppCompatTextView import androidx.core.content.ContextCompat import com.quickbirdstudios.surveykit.R import com.quickbirdstudios.surveykit.SurveyTheme import com.quickbirdstudios.surveykit.backend.views.main_parts.StyleablePart -import java.util.* import kotlinx.android.parcel.Parcelize +import java.util.Calendar internal class DateTimePickerPart @JvmOverloads constructor( context: Context, diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/LocationPickerPart.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/LocationPickerPart.kt index 43e7ebc..d29b536 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/LocationPickerPart.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/LocationPickerPart.kt @@ -7,7 +7,12 @@ import android.view.Gravity import android.view.MotionEvent import android.view.View import android.view.animation.BounceInterpolator -import android.widget.* +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.AutoCompleteTextView +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.LinearLayout import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/MultipleChoicePart.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/MultipleChoicePart.kt index 7ffc003..12f27b8 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/MultipleChoicePart.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/MultipleChoicePart.kt @@ -1,7 +1,6 @@ package com.quickbirdstudios.surveykit.backend.views.question_parts import android.content.Context -import android.graphics.Color import android.os.Handler import android.util.AttributeSet import android.view.Gravity @@ -162,7 +161,9 @@ internal class MultipleChoicePart @JvmOverloads constructor( Handler().post { checkBox.background = checkBox.createSelectableThemedBackground( - context, Both, themeColor + context, + Both, + themeColor ) } diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/ScalePart.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/ScalePart.kt index 29fc727..c5eb0a7 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/ScalePart.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/ScalePart.kt @@ -1,7 +1,6 @@ package com.quickbirdstudios.surveykit.backend.views.question_parts import android.content.Context -import android.graphics.Color import android.util.AttributeSet import android.util.TypedValue import android.view.View @@ -58,7 +57,6 @@ internal class ScalePart @JvmOverloads constructor( private var currentValueDescriptionField: TextView private var seekBar: AppCompatSeekBar - //endregion //region Overrides @@ -166,19 +164,19 @@ internal class ScalePart @JvmOverloads constructor( minimumValueDescriptionField = TextView(context).setRandomViewId().apply { this.textAlignment = View.TEXT_ALIGNMENT_CENTER this.setTextSize(TypedValue.COMPLEX_UNIT_PX, descriptionTextSize) - this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)); + this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)) this.setPadding(textPadding, textPadding, textPadding, 0) } maximumValueDescriptionField = TextView(context).setRandomViewId().apply { this.textAlignment = View.TEXT_ALIGNMENT_CENTER this.setTextSize(TypedValue.COMPLEX_UNIT_PX, descriptionTextSize) - this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)); + this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)) this.setPadding(textPadding, textPadding, textPadding, 0) } currentValueDescriptionField = TextView(context).setRandomViewId().apply { this.textAlignment = View.TEXT_ALIGNMENT_CENTER this.setTextSize(TypedValue.COMPLEX_UNIT_PX, selectedTextSize) - this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)); + this.setTextColor(ContextCompat.getColor(context, R.color.survey_text)) this.setPadding(textPadding, textPadding, textPadding, 0) } seekBar = AppCompatSeekBar(context).apply { @@ -197,13 +195,15 @@ internal class ScalePart @JvmOverloads constructor( layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) } - seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { - override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { - currentValueDescription = progress.convert().toInt().toString() - } + seekBar.setOnSeekBarChangeListener( + object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + currentValueDescription = progress.convert().toInt().toString() + } - override fun onStartTrackingTouch(seekBar: SeekBar?) {} - override fun onStopTrackingTouch(seekBar: SeekBar?) {} - }) + override fun onStartTrackingTouch(seekBar: SeekBar?) {} + override fun onStopTrackingTouch(seekBar: SeekBar?) {} + } + ) } } diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/SingleChoicePart.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/SingleChoicePart.kt index 89894ed..5507b9a 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/SingleChoicePart.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/SingleChoicePart.kt @@ -1,7 +1,6 @@ package com.quickbirdstudios.surveykit.backend.views.question_parts import android.content.Context -import android.graphics.Color import android.util.AttributeSet import android.view.Gravity import android.view.View @@ -45,10 +44,10 @@ internal class SingleChoicePart @JvmOverloads constructor( @ColorInt var defaultColor: Int = ContextCompat.getColor(context, R.color.survey_text) - set(color) { - update(options) - field = color - } + set(color) { + update(options) + field = color + } var options: List = emptyList() set(value) { update(value) diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/helper/Checkable+createSelectableThemedBackground.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/helper/Checkable+createSelectableThemedBackground.kt index 04bc88f..a77692b 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/helper/Checkable+createSelectableThemedBackground.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/question_parts/helper/Checkable+createSelectableThemedBackground.kt @@ -18,7 +18,9 @@ internal fun Checkable.createSelectableThemedBackground( border: BackgroundDrawable.Border, themeColor: Int ): Drawable = BackgroundCreationHelper().createSelectableBackground( - context, border, themeColor + context, + border, + themeColor ) private class BackgroundCreationHelper { diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/BooleanQuestionView.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/BooleanQuestionView.kt index 5695ff6..3beba13 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/BooleanQuestionView.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/BooleanQuestionView.kt @@ -30,10 +30,12 @@ internal class BooleanQuestionView( //region Overrides override fun createResults(): QuestionResult { - val stringIdentifier: String = (answerFormat.textChoices - .find { it.text == booleanAnswerPart.selected?.text } - ?.value - ?: "") + val stringIdentifier: String = ( + answerFormat.textChoices + .find { it.text == booleanAnswerPart.selected?.text } + ?.value + ?: "" + ) return BooleanQuestionResult( id = id, diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/SingleChoiceQuestionView.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/SingleChoiceQuestionView.kt index 7bdb0cd..9189d34 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/SingleChoiceQuestionView.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/questions/SingleChoiceQuestionView.kt @@ -30,10 +30,12 @@ internal class SingleChoiceQuestionView( //region Overrides override fun createResults(): QuestionResult { - val stringIdentifier = (answerFormat.textChoices - .find { it.text == choicesContainer.selected?.text } - ?.value - ?: "") + val stringIdentifier = ( + answerFormat.textChoices + .find { it.text == choicesContainer.selected?.text } + ?.value + ?: "" + ) return SingleChoiceQuestionResult( id = id, diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/step/ViewActions.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/step/ViewActions.kt index ea551e9..dc56a53 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/step/ViewActions.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/backend/views/step/ViewActions.kt @@ -3,7 +3,8 @@ package com.quickbirdstudios.surveykit.backend.views.step import com.quickbirdstudios.surveykit.FinishReason import com.quickbirdstudios.surveykit.result.QuestionResult -interface ViewActions : Skipable, +interface ViewActions : + Skipable, Identifiable { fun onNext(block: (QuestionResult) -> Unit) fun onBack(block: (QuestionResult) -> Unit) diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/StepResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/StepResult.kt index 04c2479..f738abb 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/StepResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/StepResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result import android.os.Parcelable import com.quickbirdstudios.surveykit.StepIdentifier -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class StepResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/TaskResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/TaskResult.kt index 3fc0f9c..1c2fb74 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/TaskResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/TaskResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result import android.os.Parcelable import com.quickbirdstudios.surveykit.TaskIdentifier -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class TaskResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/BooleanQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/BooleanQuestionResult.kt index 7ccd991..dd0f68a 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/BooleanQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/BooleanQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class BooleanQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateQuestionResult.kt index fe5ae0b..0b4025c 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class DateQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateTimeQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateTimeQuestionResult.kt index 1c1cc2a..b1cd768 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateTimeQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/DateTimeQuestionResult.kt @@ -4,7 +4,7 @@ import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult import kotlinx.android.parcel.Parcelize -import java.util.* +import java.util.Date @Parcelize data class DateTimeQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/EmailQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/EmailQuestionResult.kt index dcaf57a..f271e96 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/EmailQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/EmailQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class EmailQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/FinishQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/FinishQuestionResult.kt index 9beeea8..3cb4597 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/FinishQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/FinishQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class FinishQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ImageSelectorResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ImageSelectorResult.kt index 893226a..a289c3c 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ImageSelectorResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ImageSelectorResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class ImageSelectorResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntegerQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntegerQuestionResult.kt index 319970c..f72962c 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntegerQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntegerQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class IntegerQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntroQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntroQuestionResult.kt index ab39206..fb18c6a 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntroQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/IntroQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import android.os.Parcelable import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class IntroQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/LocationQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/LocationQuestionResult.kt index ab4252f..2683391 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/LocationQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/LocationQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class LocationQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/MultipleChoiceQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/MultipleChoiceQuestionResult.kt index e15a5a4..2d7d79d 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/MultipleChoiceQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/MultipleChoiceQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.TextChoice import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class MultipleChoiceQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ScaleQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ScaleQuestionResult.kt index b64cb4d..a468865 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ScaleQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ScaleQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class ScaleQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/SingleChoiceQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/SingleChoiceQuestionResult.kt index 54c7e56..60faf86 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/SingleChoiceQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/SingleChoiceQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.TextChoice import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class SingleChoiceQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TextQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TextQuestionResult.kt index 32b8bbf..d3d0cf5 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TextQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TextQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class TextQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TimeQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TimeQuestionResult.kt index 480f823..9bf8187 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TimeQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/TimeQuestionResult.kt @@ -3,8 +3,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.AnswerFormat import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class TimeQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ValuePickerQuestionResult.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ValuePickerQuestionResult.kt index c6c68fd..e070ff9 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ValuePickerQuestionResult.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/result/question_results/ValuePickerQuestionResult.kt @@ -2,8 +2,8 @@ package com.quickbirdstudios.surveykit.result.question_results import com.quickbirdstudios.surveykit.Identifier import com.quickbirdstudios.surveykit.result.QuestionResult -import java.util.Date import kotlinx.android.parcel.Parcelize +import java.util.Date @Parcelize data class ValuePickerQuestionResult( diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/steps/QuestionStep.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/steps/QuestionStep.kt index 5deaf03..43062b9 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/steps/QuestionStep.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/steps/QuestionStep.kt @@ -2,14 +2,50 @@ package com.quickbirdstudios.surveykit.steps import android.content.Context import com.quickbirdstudios.surveykit.AnswerFormat -import com.quickbirdstudios.surveykit.AnswerFormat.* +import com.quickbirdstudios.surveykit.AnswerFormat.BooleanAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.DateAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.DateTimeAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.EmailAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.ImageSelectorFormat +import com.quickbirdstudios.surveykit.AnswerFormat.IntegerAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.LocationAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.MultipleChoiceAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.ScaleAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.SingleChoiceAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.TextAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.TimeAnswerFormat +import com.quickbirdstudios.surveykit.AnswerFormat.ValuePickerAnswerFormat import com.quickbirdstudios.surveykit.StepIdentifier import com.quickbirdstudios.surveykit.backend.address.GeocoderAddressSuggestionProvider -import com.quickbirdstudios.surveykit.backend.views.questions.* +import com.quickbirdstudios.surveykit.backend.views.questions.BooleanQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.DatePickerQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.DateTimePickerQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.EmailQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.ImageSelectorQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.IntegerQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.LocationPickerQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.MultipleChoiceQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.ScaleQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.SingleChoiceQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.TextQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.TimePickerQuestionView +import com.quickbirdstudios.surveykit.backend.views.questions.ValuePickerQuestionView import com.quickbirdstudios.surveykit.backend.views.step.QuestionView import com.quickbirdstudios.surveykit.result.QuestionResult import com.quickbirdstudios.surveykit.result.StepResult -import com.quickbirdstudios.surveykit.result.question_results.* +import com.quickbirdstudios.surveykit.result.question_results.BooleanQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.DateQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.DateTimeQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.EmailQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.ImageSelectorResult +import com.quickbirdstudios.surveykit.result.question_results.IntegerQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.LocationQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.MultipleChoiceQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.ScaleQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.SingleChoiceQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.TextQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.TimeQuestionResult +import com.quickbirdstudios.surveykit.result.question_results.ValuePickerQuestionResult class QuestionStep( val title: String, diff --git a/survey/src/main/java/com.quickbirdstudios.surveykit/survey/SurveyView.kt b/survey/src/main/java/com.quickbirdstudios.surveykit/survey/SurveyView.kt index 90aac23..0a529e8 100644 --- a/survey/src/main/java/com.quickbirdstudios.surveykit/survey/SurveyView.kt +++ b/survey/src/main/java/com.quickbirdstudios.surveykit/survey/SurveyView.kt @@ -15,10 +15,10 @@ import com.quickbirdstudios.surveykit.backend.result_gatherer.ResultGathererImpl import com.quickbirdstudios.surveykit.result.StepResult import com.quickbirdstudios.surveykit.result.TaskResult import com.quickbirdstudios.surveykit.steps.Step -import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlin.coroutines.CoroutineContext class SurveyView @JvmOverloads constructor( context: Context, @@ -107,7 +107,8 @@ class SurveyView @JvmOverloads constructor( } else null val firstStep = taskNavigator.startStep(previousStepResult) ?: return StepData.ClosePreemptively( - null, FinishReason.Completed + null, + FinishReason.Completed ) val stepResult = resultGatherer.retrieve(firstStep.id) @@ -123,7 +124,9 @@ class SurveyView @JvmOverloads constructor( FinishReason.Completed ) val newResult = presenter( - Presenter.Transition.SlideFromRight, newStep, resultGatherer.retrieve(newStep.id) + Presenter.Transition.SlideFromRight, + newStep, + resultGatherer.retrieve(newStep.id) ).storeResult() return StepData( step = newStep, @@ -152,7 +155,9 @@ class SurveyView @JvmOverloads constructor( FinishReason.Completed ) val newResult = presenter( - Presenter.Transition.SlideFromRight, newStep, resultGatherer.retrieve(newStep.id) + Presenter.Transition.SlideFromRight, + newStep, + resultGatherer.retrieve(newStep.id) ).storeResult() return StepData( diff --git a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/AddressSuggestionProvider.kt b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/AddressSuggestionProvider.kt index 0d95cb1..7e21809 100644 --- a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/AddressSuggestionProvider.kt +++ b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/AddressSuggestionProvider.kt @@ -7,7 +7,6 @@ interface AddressSuggestionProvider { var onSuggestionListReady: (suggestions: List) -> Unit? fun input(query: String) - } data class AddressSuggestion( diff --git a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/GeocoderAddressSuggestionProvider.kt b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/GeocoderAddressSuggestionProvider.kt index 03b5221..96ab904 100644 --- a/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/GeocoderAddressSuggestionProvider.kt +++ b/survey/src/main/java/com/quickbirdstudios/surveykit/backend/address/GeocoderAddressSuggestionProvider.kt @@ -3,9 +3,12 @@ package com.quickbirdstudios.surveykit.backend.address import android.content.Context import android.location.Address import android.location.Geocoder -import com.quickbirdstudios.surveykit.AnswerFormat -import kotlinx.coroutines.* import android.util.Log +import com.quickbirdstudios.surveykit.AnswerFormat +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch class GeocoderAddressSuggestionProvider( val context: Context, diff --git a/survey/src/test/java/com/quickbirdstudios/test/NavigableOrderedTaskNavigatorTest.kt b/survey/src/test/java/com/quickbirdstudios/test/NavigableOrderedTaskNavigatorTest.kt index 1a8f1eb..2dae0ea 100644 --- a/survey/src/test/java/com/quickbirdstudios/test/NavigableOrderedTaskNavigatorTest.kt +++ b/survey/src/test/java/com/quickbirdstudios/test/NavigableOrderedTaskNavigatorTest.kt @@ -20,13 +20,16 @@ internal class NavigableOrderedTaskNavigatorTest { listOf(firstQuestion, secondQuestion, thirdQuestion, forthQuestion) ) navigableOrderedTask.setNavigationRule( - firstQuestion.id, NavigationRule.DirectStepNavigationRule(secondQuestion.id) + firstQuestion.id, + NavigationRule.DirectStepNavigationRule(secondQuestion.id) ) navigableOrderedTask.setNavigationRule( - secondQuestion.id, NavigationRule.DirectStepNavigationRule(thirdQuestion.id) + secondQuestion.id, + NavigationRule.DirectStepNavigationRule(thirdQuestion.id) ) navigableOrderedTask.setNavigationRule( - thirdQuestion.id, NavigationRule.DirectStepNavigationRule(forthQuestion.id) + thirdQuestion.id, + NavigationRule.DirectStepNavigationRule(forthQuestion.id) ) val navigator = TaskNavigator(navigableOrderedTask) @@ -47,13 +50,16 @@ internal class NavigableOrderedTaskNavigatorTest { listOf(firstQuestion, secondQuestion, thirdQuestion, forthQuestion) ) navigableOrderedTask.setNavigationRule( - firstQuestion.id, NavigationRule.DirectStepNavigationRule(forthQuestion.id) + firstQuestion.id, + NavigationRule.DirectStepNavigationRule(forthQuestion.id) ) navigableOrderedTask.setNavigationRule( - forthQuestion.id, NavigationRule.DirectStepNavigationRule(thirdQuestion.id) + forthQuestion.id, + NavigationRule.DirectStepNavigationRule(thirdQuestion.id) ) navigableOrderedTask.setNavigationRule( - thirdQuestion.id, NavigationRule.DirectStepNavigationRule(secondQuestion.id) + thirdQuestion.id, + NavigationRule.DirectStepNavigationRule(secondQuestion.id) ) val navigator = TaskNavigator(navigableOrderedTask) diff --git a/survey/src/test/java/com/quickbirdstudios/test/ResultGathererTest.kt b/survey/src/test/java/com/quickbirdstudios/test/ResultGathererTest.kt index 5641559..a2cc5ae 100644 --- a/survey/src/test/java/com/quickbirdstudios/test/ResultGathererTest.kt +++ b/survey/src/test/java/com/quickbirdstudios/test/ResultGathererTest.kt @@ -7,9 +7,9 @@ import com.quickbirdstudios.surveykit.StepIdentifier import com.quickbirdstudios.surveykit.backend.result_gatherer.ResultGathererImpl import com.quickbirdstudios.surveykit.result.QuestionResult import com.quickbirdstudios.surveykit.result.StepResult -import java.util.Date import org.junit.Assert import org.junit.Test +import java.util.Date internal class ResultGathererTest {