diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle index 38ce5d0924bf439d02e79b8d87b85ccf0ae25b15..a7429a68792850ee457cd7de0e2208d578015458 100644 --- a/Corona-Warn-App/build.gradle +++ b/Corona-Warn-App/build.gradle @@ -19,9 +19,9 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' -apply plugin: "androidx.navigation.safeargs.kotlin" +apply plugin: 'kotlin-parcelize' +apply plugin: 'androidx.navigation.safeargs.kotlin' apply plugin: 'jacoco' diff --git a/Corona-Warn-App/config/detekt.yml b/Corona-Warn-App/config/detekt.yml index 0e4e6182ac7df20856e94129fe88eae8a0c0921d..d63c3db9e9a17da3cef328daff128d236a51d5f4 100644 --- a/Corona-Warn-App/config/detekt.yml +++ b/Corona-Warn-App/config/detekt.yml @@ -630,4 +630,4 @@ style: WildcardImport: active: true excludes: ['**/test/**', '**/androidTest/**', '**/*.Test.kt', '**/*.Spec.kt', '**/*.Spek.kt'] - excludeImports: ['java.util.*', 'kotlinx.android.synthetic.*'] + excludeImports: ['java.util.*'] \ No newline at end of file diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt index 4eceee3de10251b93c1c6fd0958b9e8b75f6e5d7..ed36e6276d4349e459baa7180fe60f778c7fd069 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryLocationEntity.kt @@ -5,7 +5,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey import de.rki.coronawarnapp.contactdiary.model.ContactDiaryLocation -import kotlinx.android.parcel.Parcelize +import kotlinx.parcelize.Parcelize @Parcelize @Entity(tableName = "locations") diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt index 62a8c194edc8f4436cf48b79b3e64cce881aa6ea..0d1d1738d28c0b648327e6a18e09212eb752de06 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/entity/ContactDiaryPersonEntity.kt @@ -5,7 +5,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey import de.rki.coronawarnapp.contactdiary.model.ContactDiaryPerson -import kotlinx.android.parcel.Parcelize +import kotlinx.parcelize.Parcelize @Parcelize @Entity(tableName = "persons") diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt index 6863750c360eb38c0f6dd1eb39c1d356e07d5fa2..2355eeac7f59f5676dd04b8d173a368225e125f7 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/Symptoms.kt @@ -3,7 +3,7 @@ package de.rki.coronawarnapp.submission import android.os.Parcelable import androidx.annotation.Keep import com.google.gson.annotations.SerializedName -import kotlinx.android.parcel.Parcelize +import kotlinx.parcelize.Parcelize import org.joda.time.LocalDate @Keep diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt index abb894ec82f7ea59f29b9a1d60a753fd5bc7802e..6dd893521e346fc312766a8f48d479a638aa7269 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.R import de.rki.coronawarnapp.risk.RiskState import de.rki.coronawarnapp.risk.TimeVariables import de.rki.coronawarnapp.tracing.TracingProgress +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.TimeAndDateExtensions.toLocalDate import org.joda.time.Instant import org.joda.time.format.DateTimeFormat @@ -212,17 +213,17 @@ data class TracingInProgress( fun getStableIconColor(c: Context): Int = when (riskState) { RiskState.INCREASED_RISK, RiskState.LOW_RISK -> R.color.colorStableLight else -> R.color.colorTextSemanticNeutral - }.let { c.getColor(it) } + }.let { c.getColorCompat(it) } fun getStableTextColor(c: Context): Int = when (riskState) { RiskState.INCREASED_RISK, RiskState.LOW_RISK -> R.color.colorTextPrimary1InvertedStable else -> R.color.colorTextPrimary1 - }.let { c.getColor(it) } + }.let { c.getColorCompat(it) } @ColorInt fun getContainerColor(c: Context): Int = when (riskState) { RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk RiskState.LOW_RISK -> R.color.colorSemanticLowRisk RiskState.CALCULATION_FAILED -> R.color.colorSemanticUnknownRisk - }.let { c.getColor(it) } + }.let { c.getColorCompat(it) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt index e3a81049a5b4ca5ae2a1e50befe9cad3cfff1060..d3b79ddadc0a1a132866b3bc302992add388a396 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsState.kt @@ -4,6 +4,7 @@ import android.content.Context import de.rki.coronawarnapp.R import de.rki.coronawarnapp.risk.RiskState import de.rki.coronawarnapp.tracing.GeneralTracingStatus +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat data class TracingDetailsState( val tracingStatus: GeneralTracingStatus.Status, @@ -16,14 +17,14 @@ data class TracingDetailsState( riskState == RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk riskState == RiskState.LOW_RISK -> R.color.colorSemanticLowRisk else -> R.color.colorSemanticUnknownRisk - }.let { c.getColor(it) } + }.let { c.getColorCompat(it) } fun getStableTextColor(c: Context): Int = when { tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorTextPrimary1 riskState == RiskState.INCREASED_RISK || riskState == RiskState.LOW_RISK -> R.color.colorTextPrimary1InvertedStable else -> R.color.colorTextPrimary1 - }.let { c.getColor(it) } + }.let { c.getColorCompat(it) } fun isUpdateButtonEnabled(): Boolean = isManualKeyRetrievalEnabled diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt index 2cbdaede475cf2b13f4d74a5a05406c661225cc6..a1389158a54776c4d43b80e257ab73ff56969564 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/behavior/BehaviorNormalRiskBox.kt @@ -9,6 +9,7 @@ import de.rki.coronawarnapp.risk.RiskState import de.rki.coronawarnapp.tracing.GeneralTracingStatus import de.rki.coronawarnapp.tracing.ui.details.TracingDetailsAdapter import de.rki.coronawarnapp.tracing.ui.details.items.behavior.BehaviorNormalRiskBox.Item +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat class BehaviorNormalRiskBox( parent: ViewGroup, @@ -38,13 +39,13 @@ class BehaviorNormalRiskBox( tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorTextSemanticNeutral riskState == RiskState.INCREASED_RISK || riskState == RiskState.LOW_RISK -> R.color.colorStableLight else -> R.color.colorTextSemanticNeutral - }.let { context.getColor(it) } + }.let { context.getColorCompat(it) } fun getBackgroundColor(context: Context) = when { tracingStatus == GeneralTracingStatus.Status.TRACING_INACTIVE -> R.color.colorSurface2 riskState == RiskState.INCREASED_RISK -> R.color.colorSemanticHighRisk riskState == RiskState.LOW_RISK -> R.color.colorSemanticLowRisk else -> R.color.colorSurface2 - }.let { context.getColor(it) } + }.let { context.getColorCompat(it) } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt index 8516ffe18eb9148f0168351a38aba93b828459f9..3c60f441ead97b68d3b3302a1eb2b417207043a4 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderState.kt @@ -3,6 +3,7 @@ package de.rki.coronawarnapp.tracing.ui.statusbar import android.content.Context import de.rki.coronawarnapp.R import de.rki.coronawarnapp.tracing.GeneralTracingStatus +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat sealed class TracingHeaderState { abstract fun getTracingDescription(c: Context): String @@ -22,7 +23,7 @@ sealed class TracingHeaderState { override fun getTracingAnimation(c: Context): Int = R.drawable.ic_settings_tracing_bluetooth_inactive - override fun getTracingTint(c: Context): Int = c.getColor( + override fun getTracingTint(c: Context): Int = c.getColorCompat( R.color.colorTextSemanticRed ) } @@ -38,7 +39,7 @@ sealed class TracingHeaderState { override fun getTracingAnimation(c: Context): Int = R.drawable.ic_settings_location_inactive_small - override fun getTracingTint(c: Context): Int = c.getColor( + override fun getTracingTint(c: Context): Int = c.getColorCompat( R.color.colorTextSemanticRed ) } @@ -54,7 +55,7 @@ sealed class TracingHeaderState { override fun getTracingAnimation(c: Context): Int = R.drawable.ic_settings_tracing_inactive - override fun getTracingTint(c: Context): Int = c.getColor( + override fun getTracingTint(c: Context): Int = c.getColorCompat( R.color.colorTextSemanticRed ) } @@ -70,7 +71,7 @@ sealed class TracingHeaderState { override fun getTracingAnimation(c: Context): Int = R.raw.ic_settings_tracing_animated - override fun getTracingTint(c: Context): Int = c.getColor( + override fun getTracingTint(c: Context): Int = c.getColorCompat( R.color.colorAccentTintIcon ) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt index 5dc84eb946645dbface83c7a57e8a4e6bed134ad..cf51ffb8764efdf007285b5019bbc3d9bbf52a46 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt @@ -12,6 +12,7 @@ import de.rki.coronawarnapp.contactdiary.ui.ContactDiaryActivity import de.rki.coronawarnapp.databinding.HomeFragmentLayoutBinding import de.rki.coronawarnapp.tracing.ui.TracingExplanationDialog import de.rki.coronawarnapp.ui.main.home.popups.DeviceTimeIncorrectDialog +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.ExternalActionHelper import de.rki.coronawarnapp.util.di.AutoInject @@ -136,7 +137,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { ) DialogHelper.showDialog(removeTestDialog).apply { getButton(AlertDialog.BUTTON_POSITIVE) - .setTextColor(context.getColor(R.color.colorTextSemanticRed)) + .setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) } } @@ -152,7 +153,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { ) DialogHelper.showDialog(riskLevelLoweredDialog).apply { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextTint)) + getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextTint)) } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt index f59335d80f368a70ebc9e12254d385fb4cbbe52b..c1af5db433504f3806510a07a03b27022575ffdd 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt @@ -9,6 +9,7 @@ import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.FragmentSettingsResetBinding import de.rki.coronawarnapp.ui.main.MainActivity import de.rki.coronawarnapp.ui.onboarding.OnboardingActivity +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.observe2 @@ -65,7 +66,7 @@ class SettingsResetFragment : Fragment(R.layout.fragment_settings_reset), AutoIn ) DialogHelper.showDialog(resetDialog).apply { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed)) + getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt index 53956bb9083bfed10fea103eea2055a6a2ec1f8d..c484045725f8507569e35b2964e80a236fb5f34f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundState.kt @@ -4,6 +4,7 @@ import android.content.Context import android.graphics.drawable.Drawable import androidx.annotation.ColorInt import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat data class SettingsBackgroundState( val isEnabled: Boolean @@ -13,7 +14,7 @@ data class SettingsBackgroundState( * Formats the settings icon color for background priority */ @ColorInt - fun getBackgroundPriorityIconColor(c: Context): Int = c.getColor( + fun getBackgroundPriorityIconColor(c: Context): Int = c.getColorCompat( if (isEnabled) R.color.colorAccentTintIcon else R.color.colorTextSemanticRed ) @@ -21,7 +22,7 @@ data class SettingsBackgroundState( /** * Formats the settings icon for background priority */ - fun getBackgroindPriorityIcon(c: Context): Drawable? = c.getDrawable( + fun getBackgroundPriorityIcon(c: Context): Drawable? = c.getDrawable( if (isEnabled) R.drawable.ic_settings_background_priority_enabled else R.drawable.ic_settings_background_priority_disabled ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt index 17f5b0649224db42bb85045bf621e7bcd73581e4..7969efcada37560d624aa4d0a54629f5a8ff145c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationState.kt @@ -4,6 +4,7 @@ import android.content.Context import android.graphics.drawable.Drawable import androidx.annotation.ColorInt import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat data class SettingsNotificationState( val isNotificationsEnabled: Boolean, @@ -19,7 +20,7 @@ data class SettingsNotificationState( * Formats the settings icon color for notifications depending on notification values */ @ColorInt - fun getNotificationIconColor(c: Context): Int = c.getColor( + fun getNotificationIconColor(c: Context): Int = c.getColorCompat( if (isEnabled) R.color.colorAccentTintIcon else R.color.colorTextSemanticRed ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt index 7e494b5946e2693d1d662d614e0c072b7ff44673..3760ac4efe78d327d2351987b3a1b154b225a13d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingState.kt @@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable import androidx.annotation.ColorInt import de.rki.coronawarnapp.R import de.rki.coronawarnapp.tracing.GeneralTracingStatus +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat sealed class SettingsTracingState { @@ -15,7 +16,7 @@ sealed class SettingsTracingState { object BluetoothDisabled : SettingsTracingState() { override fun getTracingIconColor(context: Context): Int = - context.getColor(R.color.colorTextSemanticRed) + context.getColorCompat(R.color.colorTextSemanticRed) override fun getTracingIcon(context: Context): Drawable? = context.getDrawable(R.drawable.ic_settings_tracing_bluetooth_inactive) @@ -26,7 +27,7 @@ sealed class SettingsTracingState { object LocationDisabled : SettingsTracingState() { override fun getTracingIconColor(context: Context): Int = - context.getColor(R.color.colorTextSemanticRed) + context.getColorCompat(R.color.colorTextSemanticRed) override fun getTracingIcon(context: Context): Drawable? = context.getDrawable(R.drawable.ic_settings_location_inactive_small) @@ -37,7 +38,7 @@ sealed class SettingsTracingState { object TracingActive : SettingsTracingState() { override fun getTracingIconColor(context: Context): Int = - context.getColor(R.color.colorAccentTintIcon) + context.getColorCompat(R.color.colorAccentTintIcon) override fun getTracingIcon(context: Context): Drawable? = context.getDrawable(R.drawable.ic_settings_tracing_active_small) @@ -48,7 +49,7 @@ sealed class SettingsTracingState { object TracingInActive : SettingsTracingState() { override fun getTracingIconColor(context: Context): Int = - context.getColor(R.color.colorTextSemanticRed) + context.getColorCompat(R.color.colorTextSemanticRed) override fun getTracingIcon(context: Context): Drawable? = context.getDrawable(R.drawable.ic_settings_tracing_inactive_small) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt index 48407a6e17c1e729f2b800eeeef5155f817f9ebf..62f360997e7f2535fa69a6d77c3dfe9ba5cd696f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt @@ -20,7 +20,6 @@ import de.rki.coronawarnapp.util.ui.setGone import de.rki.coronawarnapp.util.ui.viewBindingLazy import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider import de.rki.coronawarnapp.util.viewmodel.cwaViewModels -import kotlinx.android.synthetic.main.include_submission_tan.* import javax.inject.Inject /** @@ -37,27 +36,31 @@ class SubmissionTanFragment : Fragment(R.layout.fragment_submission_tan), AutoIn super.onViewCreated(view, savedInstanceState) viewModel.state.observe2(this) { - binding.uiState = it - - submission_tan_character_error.setGone(it.areCharactersCorrect) - if (it.isCorrectLength) { - submission_tan_error.setGone(it.isTanValid) - } else { - submission_tan_error.setGone(true) + binding.apply { + uiState = it + + submissionTanContent.submissionTanCharacterError.setGone(it.areCharactersCorrect) + if (it.isCorrectLength) { + submissionTanContent.submissionTanError.setGone(it.isTanValid) + } else { + submissionTanContent.submissionTanError.setGone(true) + } } } - binding.submissionTanContent.submissionTanInput.listener = { tan -> - submission_tan_character_error.visibility = View.GONE - submission_tan_error.visibility = View.GONE + binding.apply { + submissionTanContent.submissionTanInput.listener = { tan -> + submissionTanContent.submissionTanCharacterError.visibility = View.GONE + submissionTanContent.submissionTanError.visibility = View.GONE - viewModel.onTanChanged(tan) - } + viewModel.onTanChanged(tan) + } - binding.submissionTanButtonEnter.setOnClickListener { - viewModel.onTanSubmit() + submissionTanButtonEnter.setOnClickListener { + viewModel.onTanSubmit() + } + submissionTanHeader.headerButtonBack.buttonIcon.setOnClickListener { goBack() } } - binding.submissionTanHeader.headerButtonBack.buttonIcon.setOnClickListener { goBack() } viewModel.registrationState.observe2(this) { binding.submissionTanSpinner.visibility = when (it) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt index 04c1e7a8f0040f8bff6199ad7d1e752fc46751e6..a83715de6529bde14c14a68240ad1381683859fa 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/TanInput.kt @@ -13,7 +13,6 @@ import androidx.annotation.DimenRes import androidx.core.view.children import androidx.core.widget.doOnTextChanged import de.rki.coronawarnapp.R -import kotlinx.android.synthetic.main.view_tan_input_edittext.view.* import java.util.Locale import kotlin.math.max @@ -45,6 +44,8 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs private val lineSpacing: Int + private var tanInputEditText: EditText + init { // add "hidden" edittext for input handling inflate(context, R.layout.view_tan_input_edittext, this) @@ -56,10 +57,11 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs lineSpacing = getDimension(R.dimen.submission_tan_line_spacing).toInt() - tan_input_edittext.filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter) + tanInputEditText = findViewById<EditText>(R.id.tan_input_edittext).apply { + filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter) + doOnTextChanged { text, _, _, _ -> updateTan(text ?: "") } + } - // register listener - tan_input_edittext.doOnTextChanged { text, _, _, _ -> updateTan(text ?: "") } setOnClickListener { showKeyboard() } // initially show the keyboard @@ -70,9 +72,9 @@ class TanInput(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs } private fun showKeyboard() { - if (tan_input_edittext.requestFocus()) { + if (tanInputEditText.requestFocus()) { val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - imm.showSoftInput(tan_input_edittext, InputMethodManager.SHOW_IMPLICIT) + imm.showSoftInput(tanInputEditText, InputMethodManager.SHOW_IMPLICIT) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt index 865e513b33eb2b4d5e5b01107ebbf855e433c580..daff644571e0c726d680deda285ca807fa7eaed2 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt @@ -7,6 +7,7 @@ import android.view.accessibility.AccessibilityEvent import androidx.fragment.app.Fragment import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultInvalidBinding +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.doNavigate @@ -58,7 +59,7 @@ class SubmissionTestResultInvalidFragment : Fragment(R.layout.fragment_submissio } ) DialogHelper.showDialog(removeTestDialog).apply { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed)) + getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt index 858644b7d4204827166d9be5967d01dec38b59d2..8bcec718620fd35770d91251e7f46f8f156eccda 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt @@ -7,6 +7,7 @@ import android.view.accessibility.AccessibilityEvent import androidx.fragment.app.Fragment import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultNegativeBinding +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.doNavigate @@ -58,7 +59,7 @@ class SubmissionTestResultNegativeFragment : Fragment(R.layout.fragment_submissi } ) DialogHelper.showDialog(removeTestDialog).apply { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed)) + getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt index b1b4283557abe8d5e55568fb957f3fb6f8db9fe5..2a2949b43996845f734ae09a5fc95c9b1facc289 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingFragment.kt @@ -10,6 +10,7 @@ import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultPendingBindi import de.rki.coronawarnapp.exception.http.CwaClientError import de.rki.coronawarnapp.exception.http.CwaServerError import de.rki.coronawarnapp.exception.http.CwaWebException +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withFailure import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess @@ -113,7 +114,7 @@ class SubmissionTestResultPendingFragment : Fragment(R.layout.fragment_submissio } ) DialogHelper.showDialog(removeTestDialog).apply { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColor(R.color.colorTextSemanticRed)) + getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt index 00e8240cbad0aedd6495ef5ee16dd470af67bc09..eb168f41aaad8ee884df4838bff42a952e9ebf8b 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/SimpleStepEntry.kt @@ -6,8 +6,6 @@ import android.view.View import android.widget.TextView import androidx.core.content.withStyledAttributes import de.rki.coronawarnapp.R -import kotlinx.android.synthetic.main.include_step_entry_simple_body.view.simple_step_entry_body -import kotlinx.android.synthetic.main.include_step_entry_simple_body.view.simple_step_entry_title /** * The [SimpleStepEntry] is a step entry with title and text as content. diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt index 3d3e130a70e926e3dab00d867970bbba93adb9ef..f8c117a56350b2d839999f3f3d1c45a3d090513b 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/StepEntry.kt @@ -5,10 +5,9 @@ import android.util.AttributeSet import android.view.View import android.view.ViewGroup import android.widget.FrameLayout +import android.widget.ImageView import androidx.core.content.withStyledAttributes import de.rki.coronawarnapp.R -import kotlinx.android.synthetic.main.view_step_entry.view.step_entry_icon -import kotlinx.android.synthetic.main.view_step_entry.view.step_entry_line /** * The [StepEntry] displays one step in a sequence. Children can be added to define the content. @@ -28,10 +27,10 @@ open class StepEntry @JvmOverloads constructor( context.withStyledAttributes(attrs, R.styleable.StepEntry) { val icon = getDrawable(R.styleable.StepEntry_step_entry_icon) - step_entry_icon.setImageDrawable(icon) + findViewById<ImageView>(R.id.step_entry_icon).setImageDrawable(icon) val isFinal = getBoolean(R.styleable.StepEntry_step_entry_final, false) - step_entry_line.visibility = if (isFinal) { + findViewById<View>(R.id.step_entry_line).visibility = if (isFinal) { View.INVISIBLE } else { View.VISIBLE diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt index adc72f7f193c8f8a3291d365452577d59dfecec3..b7582ab603f1d2d63d9a9e5761963d52675ee27e 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt @@ -9,12 +9,12 @@ import androidx.appcompat.content.res.AppCompatResources.getDrawable import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.withStyledAttributes import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.ViewTestResultSectionBinding import de.rki.coronawarnapp.util.DeviceUIState import de.rki.coronawarnapp.util.NetworkRequestWrapper import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess import de.rki.coronawarnapp.util.TimeAndDateExtensions.toUIFormat import de.rki.coronawarnapp.util.formatter.formatTestResult -import kotlinx.android.synthetic.main.view_test_result_section.view.* import java.util.Date /** @@ -26,30 +26,33 @@ constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr) { + private val binding = ViewTestResultSectionBinding.bind(this) init { inflate(context, R.layout.view_test_result_section, this) context.withStyledAttributes(attrs, R.styleable.TestResultSection) { - test_result_section_headline.text = + binding.testResultSectionHeadline.text = getText(R.styleable.TestResultSection_test_result_section_headline) - test_result_section_content.text = + binding.testResultSectionContent.text = getText(R.styleable.TestResultSection_test_result_section_content) - test_result_section_registered_at_text.text = + binding.testResultSectionRegisteredAtText.text = getText(R.styleable.TestResultSection_test_result_section_registered_at_text) val resultIconId = getResourceId(R.styleable.TestResultSection_test_result_section_status_icon, 0) if (resultIconId != 0) { val drawable = getDrawable(context, resultIconId) - test_result_section_status_icon.setImageDrawable(drawable) + binding.testResultSectionStatusIcon.setImageDrawable(drawable) } } } fun setTestResultSection(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?, registeredAt: Date?) { - test_result_section_headline.text = context.getString(R.string.test_result_card_headline) - test_result_section_registered_at_text.text = formatTestResultRegisteredAtText(registeredAt) - val testResultIcon = formatTestStatusIcon(uiState) - test_result_section_status_icon.setImageDrawable(testResultIcon) - test_result_section_content.text = formatTestResultSectionContent(uiState) + binding.apply { + testResultSectionHeadline.text = context.getString(R.string.test_result_card_headline) + testResultSectionRegisteredAtText.text = formatTestResultRegisteredAtText(registeredAt) + val testResultIcon = formatTestStatusIcon(uiState) + testResultSectionStatusIcon.setImageDrawable(testResultIcon) + testResultSectionContent.text = formatTestResultSectionContent(uiState) + } } private fun formatTestStatusIcon(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?): Drawable? { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt new file mode 100644 index 0000000000000000000000000000000000000000..2c2ca6229c101c0094aa9d7d87adfcf77f8ceb8d --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ContextExtensions.kt @@ -0,0 +1,19 @@ +package de.rki.coronawarnapp.util + +import android.content.Context +import androidx.annotation.ColorRes +import androidx.core.content.ContextCompat + +/** + * These context extensions provide easier access to the ContextCompat calls that we want + * to call. + * + * This is wanted because it increases compatibility with Android versions < API level 23 + * (from which downstream projects may benefit). + */ +object ContextExtensions { + + fun Context.getColorCompat(@ColorRes id: Int) = ContextCompat.getColor(this, id) + + fun Context.getColorStateListCompat(@ColorRes id: Int) = ContextCompat.getColorStateList(this, id) +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt index 48bb77b8dbcd1ccb99cd3d3793b89f940f31bf58..dedb9a57f4c54549df0e26449725614703ca67b5 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt @@ -7,6 +7,7 @@ import android.text.util.Linkify import android.widget.TextView import androidx.appcompat.app.AlertDialog import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorStateListCompat import java.util.regex.Pattern object DialogHelper { @@ -111,7 +112,7 @@ object DialogHelper { textView.movementMethod = LinkMovementMethod.getInstance() textView.setPadding(paddingStartEnd, paddingLeftRight, paddingStartEnd, paddingLeftRight) textView.setTextAppearance(R.style.body1) - textView.setLinkTextColor(context.getColorStateList(R.color.button_primary)) + textView.setLinkTextColor(context.getColorStateListCompat(R.color.button_primary)) if (isTextSelectable) textView.setTextIsSelectable(true) return textView } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt index 5fc6d95b574f2d7e1529aa9006c1eac53471073b..13fee0bf01ce9125776deb20f21dc625a8229dd3 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterHelper.kt @@ -8,6 +8,7 @@ import android.text.Spanned import android.view.View import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.html.HtmlParser /*Style*/ @@ -39,9 +40,9 @@ fun formatDrawable(value: Boolean, drawableTrue: Int, drawableFalse: Int): Drawa fun formatColor(value: Boolean, colorTrue: Int, colorFalse: Int): Int { val appContext = CoronaWarnApplication.getAppContext() return if (value) { - appContext.getColor(colorTrue) + appContext.getColorCompat(colorTrue) } else { - appContext.getColor(colorFalse) + appContext.getColorCompat(colorFalse) } } @@ -126,7 +127,7 @@ fun formatText(value: Boolean?, stringTrue: Int, stringFalse: Int?): String { */ fun formatColorIcon(color: Int?): Int { val appContext = CoronaWarnApplication.getAppContext() - return color ?: appContext.getColor(R.color.colorAccentTintIcon) + return color ?: appContext.getColorCompat(R.color.colorAccentTintIcon) } fun parseHtmlFromAssets(context: Context, path: String): Spanned { @@ -141,7 +142,7 @@ fun parseHtmlFromAssets(context: Context, path: String): Spanned { * @return */ fun formatColorDivider(context: Context, color: Int?): Int { - return color ?: context.getColor(R.color.colorHairline) + return color ?: context.getColorCompat(R.color.colorHairline) } /** diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt index ef803b9cc211377e2e158da872a5c6390f27b184..5f7183ac842423b6dc47e83e899e63f3239582d5 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt @@ -12,6 +12,7 @@ import android.view.View import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.R import de.rki.coronawarnapp.submission.Symptoms +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DeviceUIState import de.rki.coronawarnapp.util.NetworkRequestWrapper import de.rki.coronawarnapp.util.NetworkRequestWrapper.Companion.withSuccess @@ -69,7 +70,7 @@ fun formatTestResultStatusColor(uiState: NetworkRequestWrapper<DeviceUIState, Th DeviceUIState.PAIRED_POSITIVE_TELETAN -> R.color.colorTextSemanticRed else -> R.color.colorTextSemanticRed } - }.let { CoronaWarnApplication.getAppContext().getColor(it) } + }.let { CoronaWarnApplication.getAppContext().getColorCompat(it) } fun formatTestResult(uiState: NetworkRequestWrapper<DeviceUIState, Throwable>?): Spannable { val appContext = CoronaWarnApplication.getAppContext() diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml index 7a8a0aab5970bf062ecef781472515db21329f2f..b10e12af96c1dfda406f6f2223ceb11d6e4db6ff 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml @@ -88,7 +88,7 @@ android:layout_height="wrap_content" app:body="@{@string/settings_background_priority_body_description}" app:color="@{backgroundState.getBackgroundPriorityIconColor(context)}" - app:icon="@{backgroundState.getBackgroindPriorityIcon(context)}" + app:icon="@{backgroundState.getBackgroundPriorityIcon(context)}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/settings_notifications" diff --git a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml index 4e87bc92be1a3735fb31dd58101e3396696a1777..cefdccb11b77dbbf6a2759ff368ce3153c8b6795 100644 --- a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml @@ -113,7 +113,7 @@ <string name="accessibility_person_selected">Person %s ist ausgewählt</string> <!-- XTXT: Select (description for screen readers) --> - <string name="accessibility_action_select">auswählen</string> + <string name="accessibility_action_select">Auswählen</string> <!-- XTXT: Deselect (description for screen readers) --> <string name="accessibility_action_deselect">Auswahl aufheben</string> <!-- XTXT: Edit (description for screen readers) --> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt index 4a79175294e20507701e9a3afd273d660e92bc70..5e6f1e043092b1c620a05a53b030191822013822 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/statusbar/TracingHeaderStateTest.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.BluetoothDis import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.LocationDisabled import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.TracingActive import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState.TracingInActive +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations import io.mockk.clearAllMocks @@ -45,7 +46,7 @@ class TracingHeaderStateTest : BaseTest() { getTracingAnimation(context) shouldBe R.drawable.ic_settings_tracing_bluetooth_inactive getTracingTint(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingDescription(context) verify { context.getString(R.string.settings_tracing_body_bluetooth_inactive) } @@ -64,7 +65,7 @@ class TracingHeaderStateTest : BaseTest() { getTracingAnimation(context) shouldBe R.drawable.ic_settings_location_inactive_small getTracingTint(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingDescription(context) verify { context.getString(R.string.settings_tracing_body_inactive_location) } @@ -83,7 +84,7 @@ class TracingHeaderStateTest : BaseTest() { getTracingAnimation(context) shouldBe R.drawable.ic_settings_tracing_inactive getTracingTint(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingDescription(context) verify { context.getString(R.string.settings_tracing_body_inactive) } @@ -102,7 +103,7 @@ class TracingHeaderStateTest : BaseTest() { getTracingAnimation(context) shouldBe R.raw.ic_settings_tracing_animated getTracingTint(context) - verify { context.getColor(R.color.colorAccentTintIcon) } + verify { context.getColorCompat(R.color.colorAccentTintIcon) } getTracingDescription(context) verify { context.getString(R.string.settings_tracing_body_active) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt index b3e776b678031450597030525392d0935ff53fa9..078f63e2650143753a4b748d4a219a564b1ea272 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsBackgroundStateTest.kt @@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.settings.start import android.content.Context import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import io.mockk.MockKAnnotations import io.mockk.clearAllMocks import io.mockk.impl.annotations.MockK @@ -33,22 +34,22 @@ class SettingsBackgroundStateTest : BaseTest() { fun getBackgroundPriorityIconColor() { createInstance(isEnabled = true).apply { getBackgroundPriorityIconColor(context) - verify { context.getColor(R.color.colorAccentTintIcon) } + verify { context.getColorCompat(R.color.colorAccentTintIcon) } } createInstance(isEnabled = false).apply { getBackgroundPriorityIconColor(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } } } @Test fun getBackgroindPriorityIcon() { createInstance(isEnabled = true).apply { - getBackgroindPriorityIcon(context) + getBackgroundPriorityIcon(context) verify { context.getDrawable(R.drawable.ic_settings_background_priority_enabled) } } createInstance(isEnabled = false).apply { - getBackgroindPriorityIcon(context) + getBackgroundPriorityIcon(context) verify { context.getDrawable(R.drawable.ic_settings_background_priority_disabled) } } } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt index 5e8121d04f08b51968c8b73ea148bf20cfa3a189..10d4fcfc23922bfa7fa69004adc3a1c22920ccb7 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsNotificationStateTest.kt @@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.settings.start import android.content.Context import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations import io.mockk.clearAllMocks @@ -23,7 +24,7 @@ class SettingsNotificationStateTest : BaseTest() { fun setup() { MockKAnnotations.init(this) every { context.getString(any()) } returns "" - every { context.getColor(any()) } returns 0 + every { context.getColorCompat(any()) } returns 0 every { context.getDrawable(any()) } returns mockk() } @@ -72,14 +73,14 @@ class SettingsNotificationStateTest : BaseTest() { isNotificationsRiskEnabled = true, isNotificationsTestEnabled = true ).getNotificationIconColor(context) - verify { context.getColor(R.color.colorAccentTintIcon) } + verify { context.getColorCompat(R.color.colorAccentTintIcon) } SettingsNotificationState( isNotificationsEnabled = false, isNotificationsRiskEnabled = true, isNotificationsTestEnabled = true ).getNotificationIconColor(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } } @Test diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt index 50ff6b9db7eb61ee9b35a449a435978e87799eb0..554a4bfb90a5d48eadef36d9956859dea2c07483 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/settings/start/SettingsTracingStateTest.kt @@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.settings.start import android.content.Context import de.rki.coronawarnapp.R import de.rki.coronawarnapp.tracing.GeneralTracingStatus +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations import io.mockk.clearAllMocks @@ -39,7 +40,7 @@ class SettingsTracingStateTest : BaseTest() { fun `bluetooth disabled`() { SettingsTracingState.BluetoothDisabled.apply { getTracingIconColor(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingIcon(context) verify { context.getDrawable(R.drawable.ic_settings_tracing_bluetooth_inactive) } @@ -53,7 +54,7 @@ class SettingsTracingStateTest : BaseTest() { fun `location disabled`() { SettingsTracingState.LocationDisabled.apply { getTracingIconColor(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingIcon(context) verify { context.getDrawable(R.drawable.ic_settings_location_inactive_small) } @@ -67,7 +68,7 @@ class SettingsTracingStateTest : BaseTest() { fun `tracing inactive`() { SettingsTracingState.TracingInActive.apply { getTracingIconColor(context) - verify { context.getColor(R.color.colorTextSemanticRed) } + verify { context.getColorCompat(R.color.colorTextSemanticRed) } getTracingIcon(context) verify { context.getDrawable(R.drawable.ic_settings_tracing_inactive_small) } @@ -81,7 +82,7 @@ class SettingsTracingStateTest : BaseTest() { fun `tracing active`() { SettingsTracingState.TracingActive.apply { getTracingIconColor(context) - verify { context.getColor(R.color.colorAccentTintIcon) } + verify { context.getColorCompat(R.color.colorAccentTintIcon) } getTracingIcon(context) verify { context.getDrawable(R.drawable.ic_settings_tracing_active_small) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt index 4bf0c3059d4a5d1f861bf4666a6a567ae4325ea2..dcd531d5c2b9bce3f5fda4566d322cf4850d16c9 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterHelperTest.kt @@ -4,10 +4,13 @@ import android.content.Context import android.graphics.drawable.Drawable import android.view.View import de.rki.coronawarnapp.CoronaWarnApplication +import de.rki.coronawarnapp.util.ContextExtensions +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import io.mockk.MockKAnnotations import io.mockk.every import io.mockk.impl.annotations.MockK import io.mockk.mockkObject +import io.mockk.mockkStatic import io.mockk.unmockkAll import org.hamcrest.CoreMatchers.`is` import org.hamcrest.CoreMatchers.equalTo @@ -28,6 +31,7 @@ class FormatterHelperTest { fun setUp() { MockKAnnotations.init(this) mockkObject(CoronaWarnApplication.Companion) + mockkStatic(ContextExtensions::class) every { CoronaWarnApplication.getAppContext() } returns context } @@ -69,11 +73,11 @@ class FormatterHelperTest { } private fun formatColorBase(bValue: Boolean, iColor: Int) { - every { context.getColor(1) } returns 1 - every { context.getColor(2) } returns 2 + every { context.getColorCompat(1) } returns 1 + every { context.getColorCompat(2) } returns 2 val result = formatColor(value = bValue, colorTrue = 1, colorFalse = 2) - assertThat(result, `is`((context.getColor(iColor)))) + assertThat(result, `is`((context.getColorCompat(iColor)))) } @Test diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt index eafa5fc83590c08e77f98c840c4c90964cd3c887..cca5bb6e77e064daaf850a45e64b1c1301ff96d6 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelperTest.kt @@ -8,6 +8,8 @@ import android.text.style.ForegroundColorSpan import android.view.View import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.util.ContextExtensions +import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat import de.rki.coronawarnapp.util.DeviceUIState import de.rki.coronawarnapp.util.NetworkRequestWrapper import io.mockk.MockKAnnotations @@ -38,6 +40,7 @@ class FormatterSubmissionHelperTest { mockkObject(CoronaWarnApplication.Companion) mockkStatic(SpannableStringBuilder::class) mockkStatic(Spannable::class) + mockkStatic(ContextExtensions::class) every { CoronaWarnApplication.getAppContext() } returns context @@ -48,8 +51,8 @@ class FormatterSubmissionHelperTest { every { context.getString(R.string.test_result_card_status_pending) } returns R.string.test_result_card_status_pending.toString() every { context.getString(R.string.test_result_card_status_invalid) } returns R.string.test_result_card_status_invalid.toString() - every { context.getColor(R.color.colorTextSemanticGreen) } returns R.color.colorTextSemanticGreen - every { context.getColor(R.color.colorTextSemanticRed) } returns R.color.colorTextSemanticRed + every { context.getColorCompat(R.color.colorTextSemanticGreen) } returns R.color.colorTextSemanticGreen + every { context.getColorCompat(R.color.colorTextSemanticRed) } returns R.color.colorTextSemanticRed every { context.getDrawable(R.drawable.ic_test_result_illustration_invalid) } returns drawable every { context.getDrawable(R.drawable.ic_test_result_illustration_pending) } returns drawable @@ -179,39 +182,39 @@ class FormatterSubmissionHelperTest { fun formatTestResultStatusColor() { formatTestResultStatusColorBase( oUiState = null, - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_NEGATIVE), - iResult = context.getColor(R.color.colorTextSemanticGreen) + iResult = context.getColorCompat(R.color.colorTextSemanticGreen) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_ERROR), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_NO_RESULT), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_POSITIVE), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.PAIRED_POSITIVE_TELETAN), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.SUBMITTED_FINAL), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.SUBMITTED_INITIAL), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) formatTestResultStatusColorBase( oUiState = NetworkRequestWrapper.RequestSuccessful(DeviceUIState.UNPAIRED), - iResult = context.getColor(R.color.colorTextSemanticRed) + iResult = context.getColorCompat(R.color.colorTextSemanticRed) ) }