mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-03-17 19:58:57 +03:00
Add composer-related developer quick settings
Change-Id: I3d8bd7b38b8ac84f77d84998433d40894b28ea3d
This commit is contained in:
parent
7e4b08155e
commit
2526bb168d
6 changed files with 76 additions and 33 deletions
|
@ -61,9 +61,12 @@ object ArrayOptionsMenuHelper {
|
|||
}
|
||||
}
|
||||
|
||||
fun MenuItem.toggleExec(withNewVal: (Boolean) -> Boolean) {
|
||||
fun MenuItem.toggleExec(withNewVal: (Boolean) -> Boolean): Boolean {
|
||||
val shouldCheck = !isChecked
|
||||
if (withNewVal(shouldCheck)) {
|
||||
return if (withNewVal(shouldCheck)) {
|
||||
isChecked = shouldCheck
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@ import androidx.core.view.forEach
|
|||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.postDelayed
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.setFragmentResultListener
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
|
@ -920,6 +921,11 @@ class TimelineFragment :
|
|||
menu.findItem(R.id.dev_display_name_changes).isChecked = vectorPreferences.showAvatarDisplayNameChangeMessages()
|
||||
menu.findItem(R.id.dev_redacted).isChecked = vectorPreferences.showRedactedMessages()
|
||||
|
||||
// Composer features
|
||||
menu.findItem(R.id.dev_composer_voice_message_button).isChecked = vectorPreferences.useVoiceMessage()
|
||||
menu.findItem(R.id.dev_composer_emoji_button).isChecked = vectorPreferences.showEmojiKeyboard()
|
||||
menu.findItem(R.id.dev_composer_rich).isChecked = vectorPreferences.isRichTextEditorEnabled()
|
||||
|
||||
// Bubble style
|
||||
ArrayOptionsMenuHelper.createSubmenu(
|
||||
resources,
|
||||
|
@ -1015,36 +1021,39 @@ class TimelineFragment :
|
|||
timelineViewModel.handle(RoomDetailAction.MarkAllAsRead(forceIfOpenedAnonymously = true))
|
||||
true
|
||||
}
|
||||
R.id.dev_hidden_events -> {
|
||||
item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShouldShowHiddenEvents(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_hidden_events -> item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShouldShowHiddenEvents(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_membership_changes -> {
|
||||
item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowJoinLeaveMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_membership_changes -> item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowJoinLeaveMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_display_name_changes -> {
|
||||
item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowAvatarDisplayNameChangeMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_display_name_changes -> item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowAvatarDisplayNameChangeMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_redacted -> {
|
||||
item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowRedactedMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_redacted -> item.toggleExec { shouldShow ->
|
||||
vectorPreferences.setShowRedactedMessages(shouldShow)
|
||||
reloadTimeline()
|
||||
true
|
||||
}
|
||||
R.id.dev_composer_voice_message_button -> item.toggleExec { enabled ->
|
||||
vectorPreferences.setVoiceMessageButtonEnabled(enabled)
|
||||
requireActivity().restart()
|
||||
true
|
||||
}
|
||||
R.id.dev_composer_emoji_button -> item.toggleExec { enabled ->
|
||||
vectorPreferences.setEmojiButtonEnabled(enabled)
|
||||
requireActivity().restart()
|
||||
true
|
||||
}
|
||||
R.id.dev_composer_rich -> item.toggleExec { enabled ->
|
||||
vectorPreferences.setRichEditorEnabled(enabled)
|
||||
requireActivity().restart()
|
||||
true
|
||||
}
|
||||
R.id.menu_timeline_thread_list -> {
|
||||
|
|
|
@ -942,6 +942,7 @@ class TimelineViewModel @AssistedInject constructor(
|
|||
R.id.dev_bubble_style,
|
||||
R.id.dev_hidden_events,
|
||||
R.id.dev_event_visibilities,
|
||||
R.id.dev_composer_features,
|
||||
R.id.dev_theming,
|
||||
// SC dev end
|
||||
R.id.dev_tools -> vectorPreferences.developerMode()
|
||||
|
|
|
@ -136,6 +136,10 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
GlideApp.with(this)
|
||||
}
|
||||
|
||||
private val isRichTextEditorEnabled: Boolean by lazy {
|
||||
vectorPreferences.isRichTextEditorEnabled()
|
||||
}
|
||||
|
||||
private val isEmojiKeyboardVisible: Boolean
|
||||
get() = vectorPreferences.showEmojiKeyboard()
|
||||
|
||||
|
@ -152,7 +156,7 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
private val attachmentActionsViewModel: AttachmentTypeSelectorSharedActionViewModel by viewModels()
|
||||
|
||||
private val composer: MessageComposerView get() {
|
||||
return if (vectorPreferences.isRichTextEditorEnabled()) {
|
||||
return if (isRichTextEditorEnabled) {
|
||||
views.richTextComposerLayout
|
||||
} else {
|
||||
views.composerLayout
|
||||
|
@ -174,8 +178,8 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
setupComposer()
|
||||
setupEmojiButton()
|
||||
|
||||
views.composerLayout.isGone = vectorPreferences.isRichTextEditorEnabled()
|
||||
views.richTextComposerLayout.isVisible = vectorPreferences.isRichTextEditorEnabled()
|
||||
views.composerLayout.isGone = isRichTextEditorEnabled
|
||||
views.richTextComposerLayout.isVisible = isRichTextEditorEnabled
|
||||
|
||||
messageComposerViewModel.observeViewEvents {
|
||||
when (it) {
|
||||
|
@ -253,7 +257,7 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
|
||||
if (!vectorPreferences.isRichTextEditorEnabled()) {
|
||||
if (!isRichTextEditorEnabled) {
|
||||
autoCompleter.clear()
|
||||
}
|
||||
messageComposerViewModel.endAllVoiceActions()
|
||||
|
@ -307,7 +311,7 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
val composerEditText = composer.editText
|
||||
composerEditText.setHint(R.string.room_message_placeholder)
|
||||
|
||||
if (!vectorPreferences.isRichTextEditorEnabled()) {
|
||||
if (!isRichTextEditorEnabled) {
|
||||
autoCompleter.setup(composerEditText)
|
||||
}
|
||||
|
||||
|
@ -343,7 +347,7 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
|
|||
}
|
||||
composer.callback = object : Callback {
|
||||
override fun onAddAttachment() {
|
||||
if (vectorPreferences.isRichTextEditorEnabled()) {
|
||||
if (isRichTextEditorEnabled) {
|
||||
AttachmentTypeSelectorBottomSheet.show(childFragmentManager)
|
||||
} else {
|
||||
if (!::attachmentTypeSelector.isInitialized) {
|
||||
|
|
|
@ -1241,7 +1241,7 @@ class VectorPreferences @Inject constructor(
|
|||
.putBoolean(SETTINGS_OPEN_CHATS_AT_FIRST_UNREAD, true)
|
||||
.putBoolean(SETTINGS_ALLOW_URL_PREVIEW_IN_ENCRYPTED_ROOM_KEY, true)
|
||||
.putBoolean(SETTINGS_LABS_ALLOW_MARK_UNREAD, true)
|
||||
.putBoolean(SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY, false)
|
||||
//.putBoolean(SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY, false)
|
||||
.putBoolean(SETTINGS_VOICE_MESSAGE, false)
|
||||
.putBoolean(SETTINGS_USE_RAGE_SHAKE_KEY, true)
|
||||
.putBoolean(SETTINGS_AGGREGATE_UNREAD_COUNTS, false)
|
||||
|
@ -1253,6 +1253,11 @@ class VectorPreferences @Inject constructor(
|
|||
.apply()
|
||||
}
|
||||
|
||||
// Some more quick settings
|
||||
fun setVoiceMessageButtonEnabled(enabled: Boolean) = defaultPrefs.edit(commit = true) { putBoolean(SETTINGS_VOICE_MESSAGE, enabled) }
|
||||
fun setEmojiButtonEnabled(enabled: Boolean) = defaultPrefs.edit(commit = true) { putBoolean(SETTINGS_SHOW_EMOJI_KEYBOARD, enabled) }
|
||||
fun setRichEditorEnabled(enabled: Boolean) = defaultPrefs.edit(commit = true) { putBoolean(SETTINGS_LABS_RICH_TEXT_EDITOR_KEY, enabled) }
|
||||
|
||||
/** Whether the keyboard should disable personalized learning. */
|
||||
fun useIncognitoKeyboard(): Boolean {
|
||||
return defaultPrefs.getBoolean(SETTINGS_SECURITY_INCOGNITO_KEYBOARD_PREFERENCE_KEY, false)
|
||||
|
|
|
@ -140,6 +140,27 @@
|
|||
</menu>
|
||||
</item>
|
||||
|
||||
<item
|
||||
android:id="@+id/dev_composer_features"
|
||||
android:title="@string/settings_category_composer"
|
||||
android:visible="false"
|
||||
tools:visible="true"
|
||||
app:showAsAction="never">
|
||||
<menu>
|
||||
<group android:checkableBehavior="all">
|
||||
<item
|
||||
android:id="@+id/dev_composer_voice_message_button"
|
||||
android:title="@string/settings_show_voice_message_recorder_ui" />
|
||||
<item
|
||||
android:id="@+id/dev_composer_emoji_button"
|
||||
android:title="@string/settings_show_emoji_keyboard" />
|
||||
<item
|
||||
android:id="@+id/dev_composer_rich"
|
||||
android:title="@string/labs_enable_rich_text_editor_title" />
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
<item
|
||||
android:id="@+id/dev_hidden_events"
|
||||
android:title="@string/dev_tools_menu_hidden_events"
|
||||
|
|
Loading…
Add table
Reference in a new issue