diff --git a/app/build.gradle b/app/build.gradle index ad516ef6..52d31784 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -93,6 +93,10 @@ android { } } + buildFeatures { + viewBinding true + } + } dependencies { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/ColorPickerActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/ColorPickerActivity.kt index 9b9f6ad6..9343fd16 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/ColorPickerActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/ColorPickerActivity.kt @@ -8,8 +8,8 @@ import android.os.Build import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment -import kotlinx.android.synthetic.main.activity_color_picker.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.databinding.ActivityColorPickerBinding import net.pokeranalytics.android.ui.activity.components.BaseActivity class ColorPickerActivity : BaseActivity() { @@ -33,15 +33,17 @@ class ColorPickerActivity : BaseActivity() { } - override fun onCreate(savedInstanceState: Bundle?) { + private lateinit var binding: ActivityColorPickerBinding + + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { // used to fix Oreo crash requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } - - setContentView(R.layout.activity_color_picker) - + binding = ActivityColorPickerBinding.inflate(layoutInflater) + setContentView(binding.root) + this.title = getString(R.string.select_a_color) initUI() } @@ -49,29 +51,29 @@ class ColorPickerActivity : BaseActivity() { * Init UI */ private fun initUI() { - color1.setOnClickListener { manageSelectedColor(it) } - color2.setOnClickListener { manageSelectedColor(it) } - color3.setOnClickListener { manageSelectedColor(it) } - color4.setOnClickListener { manageSelectedColor(it) } - color5.setOnClickListener { manageSelectedColor(it) } - color6.setOnClickListener { manageSelectedColor(it) } - color7.setOnClickListener { manageSelectedColor(it) } - color8.setOnClickListener { manageSelectedColor(it) } - color9.setOnClickListener { manageSelectedColor(it) } + binding.color1.setOnClickListener { manageSelectedColor(it) } + binding.color2.setOnClickListener { manageSelectedColor(it) } + binding.color3.setOnClickListener { manageSelectedColor(it) } + binding.color4.setOnClickListener { manageSelectedColor(it) } + binding.color5.setOnClickListener { manageSelectedColor(it) } + binding.color6.setOnClickListener { manageSelectedColor(it) } + binding.color7.setOnClickListener { manageSelectedColor(it) } + binding.color8.setOnClickListener { manageSelectedColor(it) } + binding.color9.setOnClickListener { manageSelectedColor(it) } } private fun manageSelectedColor(view: View) { val color = when(view) { - color1 -> getColor(R.color.player_color_1) - color2 -> getColor(R.color.player_color_2) - color3 -> getColor(R.color.player_color_3) - color4 -> getColor(R.color.player_color_4) - color5 -> getColor(R.color.player_color_5) - color6 -> getColor(R.color.player_color_6) - color7 -> getColor(R.color.player_color_7) - color8 -> getColor(R.color.player_color_8) - color9 -> getColor(R.color.player_color_9) + binding.color1 -> getColor(R.color.player_color_1) + binding.color2 -> getColor(R.color.player_color_2) + binding.color3 -> getColor(R.color.player_color_3) + binding.color4 -> getColor(R.color.player_color_4) + binding.color5 -> getColor(R.color.player_color_5) + binding.color6 -> getColor(R.color.player_color_6) + binding.color7 -> getColor(R.color.player_color_7) + binding.color8 -> getColor(R.color.player_color_8) + binding.color9 -> getColor(R.color.player_color_9) else -> getColor(R.color.player_color_1) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt index 8c69ee6f..7fe31d06 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt @@ -2,8 +2,8 @@ package net.pokeranalytics.android.ui.fragment import android.os.Bundle import android.view.* -import kotlinx.android.synthetic.main.fragment_comparison_chart.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.databinding.FragmentComparisonChartBinding import net.pokeranalytics.android.ui.modules.bankroll.BankrollActivity import net.pokeranalytics.android.ui.activity.SettingsActivity import net.pokeranalytics.android.ui.adapter.ComparisonChartPagerAdapter @@ -38,12 +38,22 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource private lateinit var viewPagerAdapter: ComparisonChartPagerAdapter private var comparisonChartMenu: Menu? = null - + private var _binding: FragmentComparisonChartBinding? = null + // This property is only valid between onCreateView and +// onDestroyView. + private val binding get() = _binding!! + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } // Life Cycle override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_comparison_chart, container, false) + _binding = FragmentComparisonChartBinding.inflate(inflater, container, false) + return binding.root + //return inflater.inflate(R.layout.fragment_comparison_chart, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -97,9 +107,9 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource parentActivity?.let { viewPagerAdapter = ComparisonChartPagerAdapter(requireContext(), it.supportFragmentManager) - viewPager.adapter = viewPagerAdapter - viewPager.offscreenPageLimit = 2 - tabs.setupWithViewPager(viewPager) + binding.viewPager.adapter = viewPagerAdapter + binding.viewPager.offscreenPageLimit = 2 + binding.tabs.setupWithViewPager(binding.viewPager) } } diff --git a/gradle.properties b/gradle.properties index 84ada6d0..8ba4fc71 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,4 +35,6 @@ android.enableBuildCache=true # Enable simple gradle caching org.gradle.caching=true +kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.native.enableDependencyPropagation=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ed2b1361..5c8e59a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Dec 08 11:26:22 CET 2020 +#Wed Dec 09 14:45:29 CET 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip diff --git a/settings.gradle b/settings.gradle index e7b4def4..f448e056 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,2 @@ +include ':shared' include ':app' diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts new file mode 100644 index 00000000..275b7ac4 --- /dev/null +++ b/shared/build.gradle.kts @@ -0,0 +1,42 @@ +plugins { + kotlin("multiplatform") + id("com.android.library") +} + +kotlin { + android() + ios { + binaries { + framework { + baseName = "shared" + } + } + } + sourceSets { + val commonMain by getting + val commonTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + } + } + val androidMain by getting + val androidTest by getting { + dependencies { + implementation(kotlin("test-junit")) + implementation("junit:junit:4.13") + } + } + val iosMain by getting + val iosTest by getting + } +} + +android { + compileSdkVersion(29) + defaultConfig { + minSdkVersion(24) + targetSdkVersion(29) + } + sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") +} \ No newline at end of file diff --git a/shared/src/androidMain/AndroidManifest.xml b/shared/src/androidMain/AndroidManifest.xml new file mode 100644 index 00000000..f51910a1 --- /dev/null +++ b/shared/src/androidMain/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/shared/src/androidMain/kotlin/net/pokeranalytics/shared/Platform.kt b/shared/src/androidMain/kotlin/net/pokeranalytics/shared/Platform.kt new file mode 100644 index 00000000..e619af7f --- /dev/null +++ b/shared/src/androidMain/kotlin/net/pokeranalytics/shared/Platform.kt @@ -0,0 +1,5 @@ +package net.pokeranalytics.shared + +actual class Platform actual constructor() { + actual val platform: String = "Android ${android.os.Build.VERSION.SDK_INT}" +} \ No newline at end of file diff --git a/shared/src/androidTest/kotlin/net/pokeranalytics/shared/androidTest.kt b/shared/src/androidTest/kotlin/net/pokeranalytics/shared/androidTest.kt new file mode 100644 index 00000000..69f352e7 --- /dev/null +++ b/shared/src/androidTest/kotlin/net/pokeranalytics/shared/androidTest.kt @@ -0,0 +1,12 @@ +package net.pokeranalytics.shared + +import org.junit.Assert.assertTrue +import org.junit.Test + +class GreetingTest { + + @Test + fun testExample() { + assertTrue("Check Android is mentioned", Greeting().greeting().contains("Android")) + } +} \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Greeting.kt b/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Greeting.kt new file mode 100644 index 00000000..ef62028b --- /dev/null +++ b/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Greeting.kt @@ -0,0 +1,7 @@ +package net.pokeranalytics.shared + +class Greeting { + fun greeting(): String { + return "Hello, ${Platform().platform}!" + } +} \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Platform.kt b/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Platform.kt new file mode 100644 index 00000000..9781de99 --- /dev/null +++ b/shared/src/commonMain/kotlin/net/pokeranalytics/shared/Platform.kt @@ -0,0 +1,5 @@ +package net.pokeranalytics.shared + +expect class Platform() { + val platform: String +} \ No newline at end of file diff --git a/shared/src/iosMain/kotlin/net/pokeranalytics/shared/Platform.kt b/shared/src/iosMain/kotlin/net/pokeranalytics/shared/Platform.kt new file mode 100644 index 00000000..cd86c2f2 --- /dev/null +++ b/shared/src/iosMain/kotlin/net/pokeranalytics/shared/Platform.kt @@ -0,0 +1,8 @@ +package net.pokeranalytics.shared + +import platform.UIKit.UIDevice + +actual class Platform actual constructor() { + actual val platform: String = + UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion +} \ No newline at end of file diff --git a/shared/src/iosTest/kotlin/net/pokeranalytics/shared/iosTest.kt b/shared/src/iosTest/kotlin/net/pokeranalytics/shared/iosTest.kt new file mode 100644 index 00000000..a81a332d --- /dev/null +++ b/shared/src/iosTest/kotlin/net/pokeranalytics/shared/iosTest.kt @@ -0,0 +1,12 @@ +package net.pokeranalytics.shared + +import kotlin.test.Test +import kotlin.test.assertTrue + +class GreetingTest { + + @Test + fun testExample() { + assertTrue(Greeting().greeting().contains("iOS"), "Check iOS is mentioned") + } +} \ No newline at end of file