added purchase introduction for advanced filter rule
This commit is contained in:
parent
5066f36506
commit
003b47ac59
|
@ -57,5 +57,5 @@ public @interface FilterScope {
|
||||||
// Contains all flags
|
// Contains all flags
|
||||||
int ALL = 0xFFFFFFFF;
|
int ALL = 0xFFFFFFFF;
|
||||||
@SuppressWarnings("PointlessBitwiseExpression")
|
@SuppressWarnings("PointlessBitwiseExpression")
|
||||||
int DEFAULT = ALL & ~FLAG_MATCH_NAME;
|
int DEFAULT = ALL & ~(FLAG_MATCH_NAME | FLAG_MATCH_DESCRIPTION);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import android.graphics.Rect
|
||||||
import android.graphics.RectF
|
import android.graphics.RectF
|
||||||
import android.support.annotation.UiThread
|
import android.support.annotation.UiThread
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import org.mariotaku.ktextension.empty
|
import org.mariotaku.ktextension.empty
|
||||||
|
|
||||||
|
@ -83,6 +84,10 @@ fun View.hideIfEmpty(dependency: TextView, hideVisibility: Int = View.GONE) {
|
||||||
fun View.setVisible(visible: Boolean, hiddenVisibility: Int = View.GONE) {
|
fun View.setVisible(visible: Boolean, hiddenVisibility: Int = View.GONE) {
|
||||||
visibility = if (visible) View.VISIBLE else hiddenVisibility
|
visibility = if (visible) View.VISIBLE else hiddenVisibility
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val ViewGroup.children: List<View>
|
||||||
|
get() = (0 until childCount).map { getChildAt(it) }
|
||||||
|
|
||||||
private fun offsetToRoot(view: View, rect: Rect) {
|
private fun offsetToRoot(view: View, rect: Rect) {
|
||||||
var parent = view.parent as? View
|
var parent = view.parent as? View
|
||||||
while (parent != null) {
|
while (parent != null) {
|
||||||
|
|
|
@ -42,13 +42,13 @@ import org.mariotaku.twidere.adapter.ComposeAutoCompleteAdapter
|
||||||
import org.mariotaku.twidere.adapter.SourceAutoCompleteAdapter
|
import org.mariotaku.twidere.adapter.SourceAutoCompleteAdapter
|
||||||
import org.mariotaku.twidere.annotation.FilterScope
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
import org.mariotaku.twidere.extension.applyOnShow
|
import org.mariotaku.twidere.extension.*
|
||||||
import org.mariotaku.twidere.extension.applyTheme
|
import org.mariotaku.twidere.extension.util.isAdvancedFiltersEnabled
|
||||||
import org.mariotaku.twidere.extension.queryLong
|
|
||||||
import org.mariotaku.twidere.extension.setVisible
|
|
||||||
import org.mariotaku.twidere.fragment.BaseDialogFragment
|
import org.mariotaku.twidere.fragment.BaseDialogFragment
|
||||||
|
import org.mariotaku.twidere.fragment.ExtraFeaturesIntroductionDialogFragment
|
||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
||||||
|
import org.mariotaku.twidere.util.premium.ExtraFeaturesService
|
||||||
|
|
||||||
class AddEditItemFragment : BaseDialogFragment(), DialogInterface.OnClickListener {
|
class AddEditItemFragment : BaseDialogFragment(), DialogInterface.OnClickListener {
|
||||||
|
|
||||||
|
@ -80,7 +80,11 @@ class AddEditItemFragment : BaseDialogFragment(), DialogInterface.OnClickListene
|
||||||
}
|
}
|
||||||
|
|
||||||
private var Dialog.scope: FilterScopes?
|
private var Dialog.scope: FilterScopes?
|
||||||
get() = defaultScope.also { saveScopes(it) }
|
get() = defaultScope.also {
|
||||||
|
if (extraFeaturesService.isAdvancedFiltersEnabled) {
|
||||||
|
saveScopes(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
set(value) {
|
set(value) {
|
||||||
loadScopes(value ?: defaultScope)
|
loadScopes(value ?: defaultScope)
|
||||||
}
|
}
|
||||||
|
@ -153,11 +157,24 @@ class AddEditItemFragment : BaseDialogFragment(), DialogInterface.OnClickListene
|
||||||
advancedToggle.setOnClickListener {
|
advancedToggle.setOnClickListener {
|
||||||
advancedExpanded = !advancedExpanded
|
advancedExpanded = !advancedExpanded
|
||||||
}
|
}
|
||||||
advancedExpanded = false
|
advancedContainer.children.filter { it is CheckBox }.forEach {
|
||||||
|
val checkBox = it as CheckBox
|
||||||
|
checkBox.setOnClickListener onClick@ {
|
||||||
|
if (extraFeaturesService.isAdvancedFiltersEnabled) return@onClick
|
||||||
|
// Revert check state
|
||||||
|
checkBox.isChecked = !checkBox.isChecked
|
||||||
|
val df = ExtraFeaturesIntroductionDialogFragment.create(
|
||||||
|
ExtraFeaturesService.FEATURE_ADVANCED_FILTERS)
|
||||||
|
df.setTargetFragment(this@AddEditItemFragment, REQUEST_CHANGE_SCOPE_PURCHASE)
|
||||||
|
df.show(fragmentManager, ExtraFeaturesIntroductionDialogFragment.FRAGMENT_TAG)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
value = defaultValue
|
value = defaultValue
|
||||||
scope = defaultScope
|
scope = defaultScope
|
||||||
|
advancedExpanded = false
|
||||||
|
editText.setSelection(editText.length().coerceAtLeast(0))
|
||||||
} else {
|
} else {
|
||||||
value = savedInstanceState.getString(EXTRA_VALUE)
|
value = savedInstanceState.getString(EXTRA_VALUE)
|
||||||
scope = savedInstanceState.getParcelable(EXTRA_SCOPE)
|
scope = savedInstanceState.getParcelable(EXTRA_SCOPE)
|
||||||
|
@ -262,4 +279,8 @@ class AddEditItemFragment : BaseDialogFragment(), DialogInterface.OnClickListene
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val REQUEST_CHANGE_SCOPE_PURCHASE = 101
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -334,9 +334,9 @@ class FiltersSubscriptionsFragment : BaseFragment(), LoaderManager.LoaderCallbac
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val ACTION_ADD_URL_SUBSCRIPTION = "${INTENT_PACKAGE_PREFIX}ADD_URL_FILTERS_SUBSCRIPTION"
|
const val ACTION_ADD_URL_SUBSCRIPTION = "${INTENT_PACKAGE_PREFIX}ADD_URL_FILTERS_SUBSCRIPTION"
|
||||||
const val REQUEST_ADD_URL_SUBSCRIPTION_PURCHASE = 101
|
|
||||||
const val EXTRA_ADD_SUBSCRIPTION_URL = "add_subscription.url"
|
const val EXTRA_ADD_SUBSCRIPTION_URL = "add_subscription.url"
|
||||||
const val EXTRA_ADD_SUBSCRIPTION_NAME = "add_subscription.name"
|
const val EXTRA_ADD_SUBSCRIPTION_NAME = "add_subscription.name"
|
||||||
|
private const val REQUEST_ADD_URL_SUBSCRIPTION_PURCHASE = 101
|
||||||
private const val FRAGMENT_TAG_RREFRESH_FILTERS = "refresh_filters"
|
private const val FRAGMENT_TAG_RREFRESH_FILTERS = "refresh_filters"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue