diff --git a/presentation/src/main/java/feature/themepicker/ThemePagerAdapter.kt b/presentation/src/main/java/feature/themepicker/ThemePagerAdapter.kt index ec13dd8e..c692f535 100644 --- a/presentation/src/main/java/feature/themepicker/ThemePagerAdapter.kt +++ b/presentation/src/main/java/feature/themepicker/ThemePagerAdapter.kt @@ -29,14 +29,14 @@ class ThemePagerAdapter @Inject constructor(private val context: Context) : Page override fun instantiateItem(container: ViewGroup, position: Int): Any { return when (position) { - 1 -> container.findViewById(R.id.rgbPicker) + 1 -> container.findViewById(R.id.hsvPicker) else -> container.findViewById(R.id.materialColors) } } override fun getPageTitle(position: Int): CharSequence? { return when (position) { - 1 -> context.getString(R.string.theme_rgb) + 1 -> context.getString(R.string.theme_plus) else -> context.getString(R.string.theme_material) } } diff --git a/presentation/src/main/java/feature/themepicker/ThemePickerActivity.kt b/presentation/src/main/java/feature/themepicker/ThemePickerActivity.kt index a5b7643c..aaf4963b 100644 --- a/presentation/src/main/java/feature/themepicker/ThemePickerActivity.kt +++ b/presentation/src/main/java/feature/themepicker/ThemePickerActivity.kt @@ -19,6 +19,7 @@ package feature.themepicker import android.os.Bundle +import android.support.design.widget.Snackbar import android.support.v7.widget.LinearLayoutManager import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R @@ -29,11 +30,12 @@ import common.util.extensions.setBackgroundTint import common.util.extensions.setTint import common.util.extensions.setVisible import injection.appComponent +import io.reactivex.subjects.PublishSubject +import io.reactivex.subjects.Subject import kotlinx.android.synthetic.main.theme_picker_activity.* import kotlinx.android.synthetic.main.theme_picker_hsv.* import javax.inject.Inject - class ThemePickerActivity : QkThemedActivity(), ThemePickerView { override val viewModelClass = ThemePickerViewModel::class @@ -41,6 +43,7 @@ class ThemePickerActivity : QkThemedActivity(), ThemePicke override val hsvThemeSelectedIntent by lazy { picker.selectedColor } override val hsvThemeClearedIntent by lazy { clear.clicks() } override val hsvThemeAppliedIntent by lazy { apply.clicks() } + override val viewQksmsPlusIntent: Subject = PublishSubject.create() @Inject lateinit var themeAdapter: ThemeAdapter @Inject lateinit var themePagerAdapter: ThemePagerAdapter @@ -74,6 +77,13 @@ class ThemePickerActivity : QkThemedActivity(), ThemePicke .subscribe { color -> clear.setTint(color) } } + override fun showQksmsPlusSnackbar() { + Snackbar.make(contentView, R.string.toast_qksms_plus, Snackbar.LENGTH_LONG).run { + setAction(R.string.button_more, { viewQksmsPlusIntent.onNext(Unit) }) + show() + } + } + override fun render(state: ThemePickerState) { tabs.setThreadId(state.threadId) diff --git a/presentation/src/main/java/feature/themepicker/ThemePickerView.kt b/presentation/src/main/java/feature/themepicker/ThemePickerView.kt index 5d3e6bd9..3c08427f 100644 --- a/presentation/src/main/java/feature/themepicker/ThemePickerView.kt +++ b/presentation/src/main/java/feature/themepicker/ThemePickerView.kt @@ -20,6 +20,7 @@ package feature.themepicker import common.base.QkView import io.reactivex.Observable +import io.reactivex.subjects.Subject interface ThemePickerView : QkView { @@ -27,7 +28,9 @@ interface ThemePickerView : QkView { val hsvThemeSelectedIntent: Observable val hsvThemeClearedIntent: Observable<*> val hsvThemeAppliedIntent: Observable<*> + val viewQksmsPlusIntent: Subject fun setCurrentTheme(color: Int) + fun showQksmsPlusSnackbar() } \ No newline at end of file diff --git a/presentation/src/main/java/feature/themepicker/ThemePickerViewModel.kt b/presentation/src/main/java/feature/themepicker/ThemePickerViewModel.kt index 156a26fe..082a3612 100644 --- a/presentation/src/main/java/feature/themepicker/ThemePickerViewModel.kt +++ b/presentation/src/main/java/feature/themepicker/ThemePickerViewModel.kt @@ -22,7 +22,9 @@ import android.content.Intent import com.f2prateek.rx.preferences2.Preference import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.kotlin.autoDisposable +import common.Navigator import common.base.QkViewModel +import common.util.BillingManager import common.util.Colors import injection.appComponent import io.reactivex.rxkotlin.Observables @@ -32,7 +34,9 @@ import javax.inject.Inject class ThemePickerViewModel(intent: Intent) : QkViewModel(ThemePickerState()) { + @Inject lateinit var billingManager: BillingManager @Inject lateinit var colors: Colors + @Inject lateinit var navigator: Navigator @Inject lateinit var prefs: Preferences private val threadId = intent.extras?.getLong("threadId") ?: 0L @@ -74,8 +78,20 @@ class ThemePickerViewModel(intent: Intent) : QkViewModel color }) + .withLatestFrom(billingManager.plusStatus, { color, upgradeStatus -> + if (upgradeStatus == BillingManager.UpgradeStatus.REGULAR) { + view.showQksmsPlusSnackbar() + } else { + theme.set(color) + } + }) .autoDisposable(view.scope()) - .subscribe { color -> theme.set(color) } + .subscribe() + + // Show QKSMS+ activity + view.viewQksmsPlusIntent + .autoDisposable(view.scope()) + .subscribe { navigator.showQksmsPlusActivity() } // Reset the theme view.hsvThemeClearedIntent diff --git a/presentation/src/main/res/layout/qksms_plus_activity.xml b/presentation/src/main/res/layout/qksms_plus_activity.xml index 5bb52f6a..7ea41d73 100644 --- a/presentation/src/main/res/layout/qksms_plus_activity.xml +++ b/presentation/src/main/res/layout/qksms_plus_activity.xml @@ -146,6 +146,13 @@ android:layout_height="1dp" android:layout_marginBottom="8dp" /> + + - - . --> - @@ -48,7 +50,7 @@ android:layout_height="match_parent" /> diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 61c54669..e372d126 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -141,7 +141,7 @@ View more conversations Material - RGB + QKSMS+ Apply Reply