From 10acf4088dd2ccce5e5679aac319e430f1c83a13 Mon Sep 17 00:00:00 2001 From: kyori19 Date: Wed, 4 Aug 2021 00:16:40 +0900 Subject: [PATCH] Add option to disable quick compose --- .../preference/PreferencesFragment.kt | 16 +++---- .../tusky/settings/SettingsConstants.kt | 1 + .../java/net/accelf/yuito/QuickTootView.kt | 42 ++++++++++++++++--- .../net/accelf/yuito/QuickTootViewModel.kt | 4 +- app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 48 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt index 4a3a50c57..3cc0fe31c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt @@ -25,14 +25,7 @@ import com.keylesspalace.tusky.components.compose.ComposeActivity.ComposeOptions import com.keylesspalace.tusky.db.AccountManager import com.keylesspalace.tusky.di.Injectable import com.keylesspalace.tusky.entity.Notification -import com.keylesspalace.tusky.settings.AppTheme -import com.keylesspalace.tusky.settings.PrefKeys -import com.keylesspalace.tusky.settings.emojiPreference -import com.keylesspalace.tusky.settings.listPreference -import com.keylesspalace.tusky.settings.makePreferenceScreen -import com.keylesspalace.tusky.settings.preference -import com.keylesspalace.tusky.settings.preferenceCategory -import com.keylesspalace.tusky.settings.switchPreference +import com.keylesspalace.tusky.settings.* import com.keylesspalace.tusky.util.ThemeUtils import com.keylesspalace.tusky.util.deserialize import com.keylesspalace.tusky.util.getNonNullString @@ -185,6 +178,13 @@ class PreferencesFragment : PreferenceFragmentCompat(), Injectable { setTitle(R.string.pref_title_animate_custom_emojis) isSingleLineTitle = false } + + switchPreference { + setDefaultValue(true) + key = PrefKeys.USE_QUICK_TOOT + setTitle(R.string.pref_title_use_quick_toot) + isSingleLineTitle = false + } } preferenceCategory(R.string.pref_title_limited_bandwidth_settings) { diff --git a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt index 9da05c33a..ea74d6f04 100644 --- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt +++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt @@ -32,6 +32,7 @@ object PrefKeys { const val CONFIRM_REBLOGS = "confirmReblogs" const val ENABLE_SWIPE_FOR_TABS = "enableSwipeForTabs" const val ANIMATE_CUSTOM_EMOJIS = "animateCustomEmojis" + const val USE_QUICK_TOOT = "useQuickToot" const val LIMITED_BANDWIDTH_ACTIVE = "limitedBandwidthActive" const val LIMITED_BANDWIDTH_ONLY_MOBILE_NETWORK = "limitedBandwidthOnlyMobileNetwork" diff --git a/app/src/main/java/net/accelf/yuito/QuickTootView.kt b/app/src/main/java/net/accelf/yuito/QuickTootView.kt index 688436173..5a7b55e75 100644 --- a/app/src/main/java/net/accelf/yuito/QuickTootView.kt +++ b/app/src/main/java/net/accelf/yuito/QuickTootView.kt @@ -17,7 +17,9 @@ import com.keylesspalace.tusky.components.compose.ComposeActivity import com.keylesspalace.tusky.components.compose.ComposeActivity.Companion.PREF_DEFAULT_TAG import com.keylesspalace.tusky.components.compose.ComposeActivity.Companion.PREF_USE_DEFAULT_TAG import com.keylesspalace.tusky.databinding.ViewQuickTootBinding +import com.keylesspalace.tusky.settings.PrefKeys.USE_QUICK_TOOT import com.keylesspalace.tusky.util.ThemeUtils +import kotlin.properties.Delegates class QuickTootView @JvmOverloads constructor( context: Context, @@ -27,10 +29,16 @@ class QuickTootView @JvmOverloads constructor( private val binding = ViewQuickTootBinding.inflate(LayoutInflater.from(context), this, true) - private val preference by lazy { PreferenceManager.getDefaultSharedPreferences(context) } + private val preference = PreferenceManager.getDefaultSharedPreferences(context) private lateinit var viewModel: QuickTootViewModel + private var bypass by Delegates.notNull() + + init { + syncBypass() + } + fun attachViewModel(viewModel: QuickTootViewModel, owner: LifecycleOwner) { this.viewModel = viewModel @@ -79,18 +87,40 @@ class QuickTootView @JvmOverloads constructor( } } + private fun syncBypass() { + bypass = !preference.getBoolean(USE_QUICK_TOOT, true) + visibility = when (bypass) { + true -> GONE + false -> VISIBLE + } + if (bypass) { + viewModel.reset() + } + } + fun onFABClicked(view: View) { - val intent = ComposeActivity.startIntent(view.context, viewModel.composeOptions(false)) + startCompose(view.context) + } + + private fun startCompose(context: Context) { + val intent = ComposeActivity.startIntent(context, viewModel.composeOptions(false)) viewModel.reset() - view.context.startActivity(intent) + context.startActivity(intent) } fun handleEvent(event: Event?) { when (event) { - is QuickReplyEvent -> viewModel.reply(event) + is QuickReplyEvent -> { + viewModel.reply(event.status.actionableStatus) + if (bypass) { + startCompose(context) + } + } is PreferenceChangedEvent -> { - if (event.preferenceKey in arrayOf(PREF_DEFAULT_TAG, PREF_USE_DEFAULT_TAG)) { - syncDefaultTag() + when (event.preferenceKey) { + PREF_DEFAULT_TAG, + PREF_USE_DEFAULT_TAG -> syncDefaultTag() + USE_QUICK_TOOT -> syncBypass() } } } diff --git a/app/src/main/java/net/accelf/yuito/QuickTootViewModel.kt b/app/src/main/java/net/accelf/yuito/QuickTootViewModel.kt index adb4efa7f..d9c2262ac 100644 --- a/app/src/main/java/net/accelf/yuito/QuickTootViewModel.kt +++ b/app/src/main/java/net/accelf/yuito/QuickTootViewModel.kt @@ -3,7 +3,6 @@ package net.accelf.yuito import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import com.keylesspalace.tusky.appstore.QuickReplyEvent import com.keylesspalace.tusky.components.compose.ComposeActivity import com.keylesspalace.tusky.components.compose.ComposeActivity.Companion.CAN_USE_UNLEAKABLE import com.keylesspalace.tusky.components.compose.mutableLiveData @@ -57,8 +56,7 @@ class QuickTootViewModel @Inject constructor( visibilityMutable.value = overrideTo } - fun reply(event: QuickReplyEvent) { - val status = event.status.actionableStatus + fun reply(status: Status) { inReplyToMutable.value = status overrideVisibility(status.visibility) } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 2430f27f4..5cf3ffbed 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -478,4 +478,5 @@ 音声 ドメイン全体を非表示 Tuskyによって提供されています + 簡易投稿欄を表示 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b2b35670c..86fe177ff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -271,6 +271,7 @@ Animate GIF avatars Show colorful gradients for hidden media Animate custom emojis + Use quick compose field Timeline filtering Tabs