From d37fa1737b21cd5fed4f35e0efcbc9fa2e799d0d Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 9 May 2019 14:54:43 +0200 Subject: [PATCH] Subscription window update --- .../android/PokerAnalyticsApplication.kt | 3 +- .../ui/fragment/SubscriptionFragment.kt | 36 ++++++ .../components/ScreenSlidePageFragment.kt | 28 +++++ .../ic_baseline_all_inclusive_24px.xml | 9 ++ .../res/drawable/ic_baseline_email_24px.xml | 9 ++ .../res/drawable/ic_baseline_vpn_key_24px.xml | 9 ++ .../drawable/ic_baseline_wifi_off_24px.xml | 9 ++ .../res/layout/fragment_screen_slide_page.xml | 49 ++++++++ .../main/res/layout/fragment_subscription.xml | 108 +++++++++++------- app/src/main/res/values/strings.xml | 9 ++ app/src/main/res/values/styles.xml | 21 +++- 11 files changed, 243 insertions(+), 47 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/ScreenSlidePageFragment.kt create mode 100644 app/src/main/res/drawable/ic_baseline_all_inclusive_24px.xml create mode 100644 app/src/main/res/drawable/ic_baseline_email_24px.xml create mode 100644 app/src/main/res/drawable/ic_baseline_vpn_key_24px.xml create mode 100644 app/src/main/res/drawable/ic_baseline_wifi_off_24px.xml create mode 100644 app/src/main/res/layout/fragment_screen_slide_page.xml diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 77b51db0..d9c7f7fa 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -48,7 +48,6 @@ class PokerAnalyticsApplication : Application() { // Initialize Fabric with the debug-disabled crashlytics. Fabric.with(this, crashlyticsKit) - if (BuildConfig.DEBUG) { // Logs Timber.plant(PokerAnalyticsLogs()) @@ -56,7 +55,7 @@ class PokerAnalyticsApplication : Application() { if (BuildConfig.DEBUG) { Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}") -// this.createFakeSessions() + this.createFakeSessions() } Patcher.patchBreaks() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt index 2aa6d4c2..23a3b183 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt @@ -10,6 +10,9 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.core.content.res.ResourcesCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentStatePagerAdapter import com.android.billingclient.api.BillingClient import com.android.billingclient.api.Purchase import com.android.billingclient.api.SkuDetails @@ -17,6 +20,7 @@ import com.android.billingclient.api.SkuDetailsResponseListener import kotlinx.android.synthetic.main.fragment_subscription.* import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment +import net.pokeranalytics.android.ui.fragment.components.ScreenSlidePageFragment import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.billing.AppGuard import net.pokeranalytics.android.util.billing.IAPProducts @@ -24,6 +28,8 @@ import net.pokeranalytics.android.util.billing.PurchaseDelegate import java.time.Period +data class FeatureDescriptor(var iconResId: Int, var titleResId: Int, var descResId: Int) + class SubscriptionFragment : PokerAnalyticsFragment(), SkuDetailsResponseListener, PurchaseDelegate { private var selectedProduct: SkuDetails? = null @@ -31,7 +37,9 @@ class SubscriptionFragment : PokerAnalyticsFragment(), SkuDetailsResponseListene override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + this.showLoader(R.string.loading_please_wait) if (!AppGuard.requestProducts(this)) { + this.hideLoader() Toast.makeText(requireContext(), R.string.billingclient_unavailable, Toast.LENGTH_LONG).show() } } @@ -71,6 +79,12 @@ class SubscriptionFragment : PokerAnalyticsFragment(), SkuDetailsResponseListene this.title.text = upgradeString } + // Pager + + // The pager adapter, which provides the pages to the view pager widget. + val pagerAdapter = ScreenSlidePagerAdapter(requireFragmentManager()) + this.pager.adapter = pagerAdapter + this.purchase.isEnabled = false this.purchase.setOnClickListener { @@ -82,10 +96,32 @@ class SubscriptionFragment : PokerAnalyticsFragment(), SkuDetailsResponseListene } } + /** + * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in + * sequence. + */ + private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) { + + private val dataSource: List = listOf( + FeatureDescriptor(R.drawable.ic_baseline_all_inclusive_24px, R.string.f_unlimited, R.string.f_unlimited_desc), + FeatureDescriptor(R.drawable.ic_baseline_wifi_off_24px, R.string.f_offline, R.string.f_offline_desc), + FeatureDescriptor(R.drawable.ic_baseline_vpn_key_24px, R.string.f_privacy, R.string.f_privacy_desc), + FeatureDescriptor(R.drawable.ic_baseline_email_24px, R.string.f_support, R.string.f_support_desc) + ) + + override fun getCount(): Int = this.dataSource.size + override fun getItem(position: Int): Fragment { + val d = this.dataSource[position] + return ScreenSlidePageFragment(d.iconResId, d.titleResId, d.descResId) + } + + } + // SkuDetailsResponseListener override fun onSkuDetailsResponse(responseCode: Int, skuDetailsList: MutableList?) { if (responseCode == BillingClient.BillingResponse.OK && skuDetailsList != null) { + this.hideLoader() selectedProduct = skuDetailsList.first { it.sku == IAPProducts.PRO.identifier } updateUI() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/ScreenSlidePageFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/ScreenSlidePageFragment.kt new file mode 100644 index 00000000..326c6a05 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/ScreenSlidePageFragment.kt @@ -0,0 +1,28 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.android.synthetic.main.fragment_screen_slide_page.* +import net.pokeranalytics.android.R + + +class ScreenSlidePageFragment(var iconResId: Int, var titleResId: Int, var descriptionResId: Int) : PokerAnalyticsFragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View = inflater.inflate(R.layout.fragment_screen_slide_page, container, false) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + this.icon.setImageResource(this.iconResId) + this.title.text = requireContext().getString(this.titleResId) + this.description.text = requireContext().getString(this.descriptionResId) + + } + +} diff --git a/app/src/main/res/drawable/ic_baseline_all_inclusive_24px.xml b/app/src/main/res/drawable/ic_baseline_all_inclusive_24px.xml new file mode 100644 index 00000000..c857b95d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_all_inclusive_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_email_24px.xml b/app/src/main/res/drawable/ic_baseline_email_24px.xml new file mode 100644 index 00000000..789a0188 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_email_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_vpn_key_24px.xml b/app/src/main/res/drawable/ic_baseline_vpn_key_24px.xml new file mode 100644 index 00000000..39adc2cf --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_vpn_key_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_wifi_off_24px.xml b/app/src/main/res/drawable/ic_baseline_wifi_off_24px.xml new file mode 100644 index 00000000..e857159f --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_wifi_off_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/fragment_screen_slide_page.xml b/app/src/main/res/layout/fragment_screen_slide_page.xml new file mode 100644 index 00000000..a7ca0f59 --- /dev/null +++ b/app/src/main/res/layout/fragment_screen_slide_page.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_subscription.xml b/app/src/main/res/layout/fragment_subscription.xml index 956297be..f51e6e9f 100644 --- a/app/src/main/res/layout/fragment_subscription.xml +++ b/app/src/main/res/layout/fragment_subscription.xml @@ -1,64 +1,88 @@ - - + + + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/title"> - + - + - + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d94aecac..82d05629 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,6 +15,15 @@ Upgrade to Pro Go Pro free trial + Unlimited + Track all your poker life by adding as many data as you want + Offline first + Poker Analytics is available at all times. You’re currently in charge of backups, but that will change soon! + Private + We do not own servers. We do not know anything about your wins and losses. + Support + We try to answer as quickly as we can, in english or french ! + Loading, please wait… Address Naming suggestions diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c20890d5..99b100ee 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -318,9 +318,26 @@ 1 end @font/roboto_light - 18sp + 16sp + + + + + + - -