forked from upstream-mirrors/quik
Restrict theme picker for QKSMS+
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<ThemePickerViewModel>(), ThemePickerView {
|
||||
|
||||
override val viewModelClass = ThemePickerViewModel::class
|
||||
@@ -41,6 +43,7 @@ class ThemePickerActivity : QkThemedActivity<ThemePickerViewModel>(), 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<Unit> = PublishSubject.create()
|
||||
|
||||
@Inject lateinit var themeAdapter: ThemeAdapter
|
||||
@Inject lateinit var themePagerAdapter: ThemePagerAdapter
|
||||
@@ -74,6 +77,13 @@ class ThemePickerActivity : QkThemedActivity<ThemePickerViewModel>(), 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)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ package feature.themepicker
|
||||
|
||||
import common.base.QkView
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.subjects.Subject
|
||||
|
||||
interface ThemePickerView : QkView<ThemePickerState> {
|
||||
|
||||
@@ -27,7 +28,9 @@ interface ThemePickerView : QkView<ThemePickerState> {
|
||||
val hsvThemeSelectedIntent: Observable<Int>
|
||||
val hsvThemeClearedIntent: Observable<*>
|
||||
val hsvThemeAppliedIntent: Observable<*>
|
||||
val viewQksmsPlusIntent: Subject<Unit>
|
||||
|
||||
fun setCurrentTheme(color: Int)
|
||||
fun showQksmsPlusSnackbar()
|
||||
|
||||
}
|
||||
@@ -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<ThemePickerView, ThemePickerState>(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<ThemePickerView, ThemeP
|
||||
// Update the theme, when apply is clicked
|
||||
view.hsvThemeAppliedIntent
|
||||
.withLatestFrom(view.hsvThemeSelectedIntent, { _, color -> 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
|
||||
|
||||
Reference in New Issue
Block a user