toolbar management (#4887)

Toolbar management rework and toolbar style alignment
This commit is contained in:
fedrunov 2022-01-21 13:38:27 +01:00 committed by GitHub
parent a085b4db21
commit f7aedff418
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 275 additions and 744 deletions

3
changelog.d/4884.misc Normal file
View File

@ -0,0 +1,3 @@
Toolbar management rework. Toolbar title's and subtitle's text appearance now controlled by theme without local overrides. Helper class introduced to
help with toolbar configuration. Toolbar title, subtitle and navigation button widgets are removed where it is possible and replaced with built-in
toolbar widgets.

View File

@ -6,10 +6,12 @@
<item name="elevation">0dp</item> <item name="elevation">0dp</item>
<!-- main text --> <!-- main text -->
<item name="titleTextStyle">@style/Widget.Vector.TextView.ActionBarTitle</item> <item name="titleTextAppearance">@style/TextAppearance.Vector.Widget.ActionBarTitle</item>
<!-- sub text --> <!-- sub text -->
<item name="subtitleTextStyle">@style/Widget.Vector.TextView.ActionBarSubTitle</item> <item name="subtitleTextAppearance">@style/TextAppearance.Vector.Widget.ActionBarSubTitle</item>
<item name="navigationIconTint">?vctr_content_secondary</item>
</style> </style>
<!-- Default toolbar style --> <!-- Default toolbar style -->
@ -22,16 +24,18 @@
<!-- Toolbar text style --> <!-- Toolbar text style -->
<!-- main text --> <!-- main text -->
<style name="Widget.Vector.TextView.ActionBarTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title"> <style name="TextAppearance.Vector.Widget.ActionBarTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">?vctr_content_primary</item> <item name="android:textColor">?vctr_content_primary</item>
<item name="android:fontFamily">"sans-serif-medium"</item> <item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textSize">20sp</item> <item name="fontFamily">sans-serif-medium</item>
<item name="android:textSize">18sp</item>
</style> </style>
<!-- sub text --> <!-- sub text -->
<style name="Widget.Vector.TextView.ActionBarSubTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle"> <style name="TextAppearance.Vector.Widget.ActionBarSubTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">?vctr_content_primary</item> <item name="android:textColor">?vctr_content_secondary</item>
<item name="android:fontFamily">"sans-serif-medium"</item> <item name="android:fontFamily">sans-serif</item>
<item name="fontFamily">sans-serif</item>
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
</style> </style>

View File

@ -30,7 +30,8 @@ abstract class SimpleFragmentActivity : VectorBaseActivity<ActivityBinding>() {
final override fun getCoordinatorLayout() = views.coordinatorLayout final override fun getCoordinatorLayout() = views.coordinatorLayout
override fun initUiAndData() { override fun initUiAndData() {
configureToolbar(views.toolbar) setupToolbar(views.toolbar)
.allowBack(true)
waitingView = views.waitingView.waitingView waitingView = views.waitingView.waitingView
} }

View File

@ -1,24 +0,0 @@
/*
* Copyright 2019 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.core.platform
import com.google.android.material.appbar.MaterialToolbar
interface ToolbarConfigurable {
fun configure(toolbar: MaterialToolbar)
}

View File

@ -62,6 +62,7 @@ import im.vector.app.core.extensions.restart
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.core.extensions.singletonEntryPoint import im.vector.app.core.extensions.singletonEntryPoint
import im.vector.app.core.extensions.toMvRxBundle import im.vector.app.core.extensions.toMvRxBundle
import im.vector.app.core.utils.ToolbarConfig
import im.vector.app.core.utils.toast import im.vector.app.core.utils.toast
import im.vector.app.features.MainActivity import im.vector.app.features.MainActivity
import im.vector.app.features.MainActivityArgs import im.vector.app.features.MainActivityArgs
@ -126,6 +127,8 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
.launchIn(lifecycleScope) .launchIn(lifecycleScope)
} }
var toolbar: ToolbarConfig? = null
/* ========================================================================================== /* ==========================================================================================
* Views * Views
* ========================================================================================== */ * ========================================================================================== */
@ -508,18 +511,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
*/ */
protected fun isFirstCreation() = savedInstanceState == null protected fun isFirstCreation() = savedInstanceState == null
/**
* Configure the Toolbar, with default back button.
*/
protected fun configureToolbar(toolbar: MaterialToolbar, displayBack: Boolean = true) {
setSupportActionBar(toolbar)
supportActionBar?.let {
it.setDisplayShowHomeEnabled(displayBack)
it.setDisplayHomeAsUpEnabled(displayBack)
it.title = null
}
}
// ============================================================================================== // ==============================================================================================
// Handle loading view (also called waiting view or spinner view) // Handle loading view (also called waiting view or spinner view)
// ============================================================================================== // ==============================================================================================
@ -629,4 +620,13 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
toast(getString(R.string.not_implemented)) toast(getString(R.string.not_implemented))
} }
} }
/**
* Sets toolbar as actionBar
*
* @return Instance of [ToolbarConfig] with set of helper methods to configure toolbar
* */
fun setupToolbar(toolbar: MaterialToolbar) = ToolbarConfig(this, toolbar).also {
this.toolbar = it.setup()
}
} }

View File

@ -42,6 +42,7 @@ import im.vector.app.core.dialogs.UnrecognizedCertificateDialog
import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.extensions.singletonEntryPoint import im.vector.app.core.extensions.singletonEntryPoint
import im.vector.app.core.extensions.toMvRxBundle import im.vector.app.core.extensions.toMvRxBundle
import im.vector.app.core.utils.ToolbarConfig
import im.vector.app.features.analytics.AnalyticsTracker import im.vector.app.features.analytics.AnalyticsTracker
import im.vector.app.features.analytics.plan.Screen import im.vector.app.features.analytics.plan.Screen
import im.vector.app.features.analytics.screen.ScreenEvent import im.vector.app.features.analytics.screen.ScreenEvent
@ -80,6 +81,12 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
private var progress: AlertDialog? = null private var progress: AlertDialog? = null
/**
* [ToolbarConfig] instance from host activity
* */
protected var toolbar: ToolbarConfig? = null
get() = (activity as? VectorBaseActivity<*>)?.toolbar
private set
/* ========================================================================================== /* ==========================================================================================
* View model * View model
* ========================================================================================== */ * ========================================================================================== */
@ -228,13 +235,12 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
* ========================================================================================== */ * ========================================================================================== */
/** /**
* Configure the Toolbar. * Sets toolbar as actionBar for current activity
*/ *
protected fun setupToolbar(toolbar: MaterialToolbar) { * @return Instance of [ToolbarConfig] with set of helper methods to configure toolbar
val parentActivity = vectorBaseActivity * */
if (parentActivity is ToolbarConfigurable) { protected fun setupToolbar(toolbar: MaterialToolbar): ToolbarConfig {
parentActivity.configure(toolbar) return vectorBaseActivity.setupToolbar(toolbar)
}
} }
/* ========================================================================================== /* ==========================================================================================

View File

@ -0,0 +1,82 @@
/*
* Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.core.utils
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.content.res.AppCompatResources
import com.google.android.material.appbar.MaterialToolbar
import im.vector.app.R
/**
* Helper class to configure toolbar.
* Wraps [MaterialToolbar] providing set of methods to configure it
*/
class ToolbarConfig(val activity: AppCompatActivity, val toolbar: MaterialToolbar) {
private var customBackResId: Int? = null
fun setup() = apply {
activity.setSupportActionBar(toolbar)
}
/**
* Delegating property for [toolbar.title]
* */
var title: CharSequence? by toolbar::title
/**
* Delegating property for [toolbar.subtitle]
* */
var subtitle: CharSequence? by toolbar::subtitle
/**
* Sets toolbar's title text
* */
fun setTitle(title: CharSequence?) = apply { toolbar.title = title }
/**
* Sets toolbar's title text using provided string resource
* */
fun setTitle(@StringRes titleRes: Int) = apply { toolbar.setTitle(titleRes) }
/**
* Sets toolbar's subtitle text
* */
fun setSubtitle(subtitle: String?) = apply { toolbar.subtitle = subtitle }
/**
* Sets toolbar's title text using provided string resource
* */
fun setSubtitle(@StringRes subtitleRes: Int) = apply { toolbar.subtitle = activity.getString(subtitleRes) }
/**
* Enables/disables navigate back button
*
* @param isAllowed defines if back button is enabled. Default [true]
* @param useCross defines if cross icon should be used instead of arrow. Default [false]
* */
fun allowBack(isAllowed: Boolean = true, useCross: Boolean = false) = apply {
activity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(isAllowed)
it.setDisplayHomeAsUpEnabled(isAllowed)
if (isAllowed && useCross) {
val navResId = customBackResId ?: R.drawable.ic_x_18dp
toolbar.navigationIcon = AppCompatResources.getDrawable(activity, navResId)
}
}
}
}

View File

@ -19,17 +19,15 @@ package im.vector.app.features.attachments.preview
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
import im.vector.app.features.themes.ActivityOtherThemes import im.vector.app.features.themes.ActivityOtherThemes
import org.matrix.android.sdk.api.session.content.ContentAttachmentData import org.matrix.android.sdk.api.session.content.ContentAttachmentData
@AndroidEntryPoint @AndroidEntryPoint
class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable { class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>() {
companion object { companion object {
private const val EXTRA_FRAGMENT_ARGS = "EXTRA_FRAGMENT_ARGS" private const val EXTRA_FRAGMENT_ARGS = "EXTRA_FRAGMENT_ARGS"
@ -72,8 +70,4 @@ class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(),
setResult(RESULT_OK, resultIntent) setResult(RESULT_OK, resultIntent)
finish() finish()
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -126,7 +126,7 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
if (savedInstanceState != null) { if (savedInstanceState != null) {
(supportFragmentManager.findFragmentByTag(FRAGMENT_DIAL_PAD_TAG) as? CallDialPadBottomSheet)?.callback = dialPadCallback (supportFragmentManager.findFragmentByTag(FRAGMENT_DIAL_PAD_TAG) as? CallDialPadBottomSheet)?.callback = dialPadCallback
} }
setSupportActionBar(views.callToolbar) setupToolbar(views.callToolbar)
configureCallViews() configureCallViews()
callViewModel.onEach { callViewModel.onEach {
@ -257,18 +257,18 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
views.fullscreenRenderer.isVisible = false views.fullscreenRenderer.isVisible = false
views.pipRendererWrapper.isVisible = false views.pipRendererWrapper.isVisible = false
views.callInfoGroup.isVisible = true views.callInfoGroup.isVisible = true
views.callToolbar.setSubtitle(R.string.call_ringing) toolbar?.setSubtitle(R.string.call_ringing)
configureCallInfo(state) configureCallInfo(state)
} }
is CallState.Answering -> { is CallState.Answering -> {
views.fullscreenRenderer.isVisible = false views.fullscreenRenderer.isVisible = false
views.pipRendererWrapper.isVisible = false views.pipRendererWrapper.isVisible = false
views.callInfoGroup.isVisible = true views.callInfoGroup.isVisible = true
views.callToolbar.setSubtitle(R.string.call_connecting) toolbar?.setSubtitle(R.string.call_connecting)
configureCallInfo(state) configureCallInfo(state)
} }
is CallState.Connected -> { is CallState.Connected -> {
views.callToolbar.subtitle = state.formattedDuration toolbar?.subtitle = state.formattedDuration
if (callState.iceConnectionState == MxPeerConnectionState.CONNECTED) { if (callState.iceConnectionState == MxPeerConnectionState.CONNECTED) {
if (state.isLocalOnHold || state.isRemoteOnHold) { if (state.isLocalOnHold || state.isRemoteOnHold) {
views.smallIsHeldIcon.isVisible = true views.smallIsHeldIcon.isVisible = true
@ -280,11 +280,11 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
views.callActionText.setText(R.string.call_resume_action) views.callActionText.setText(R.string.call_resume_action)
views.callActionText.isVisible = true views.callActionText.isVisible = true
views.callActionText.setOnClickListener { callViewModel.handle(VectorCallViewActions.ToggleHoldResume) } views.callActionText.setOnClickListener { callViewModel.handle(VectorCallViewActions.ToggleHoldResume) }
views.callToolbar.setSubtitle(R.string.call_held_by_you) toolbar?.setSubtitle(R.string.call_held_by_you)
} else { } else {
views.callActionText.isInvisible = true views.callActionText.isInvisible = true
state.callInfo?.opponentUserItem?.let { state.callInfo?.opponentUserItem?.let {
views.callToolbar.subtitle = getString(R.string.call_held_by_user, it.getBestName()) toolbar?.subtitle = getString(R.string.call_held_by_user, it.getBestName())
} }
} }
} else if (state.transferee !is VectorCallViewState.TransfereeState.NoTransferee) { } else if (state.transferee !is VectorCallViewState.TransfereeState.NoTransferee) {
@ -316,14 +316,14 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
views.pipRendererWrapper.isVisible = false views.pipRendererWrapper.isVisible = false
views.callInfoGroup.isVisible = true views.callInfoGroup.isVisible = true
configureCallInfo(state) configureCallInfo(state)
views.callToolbar.setSubtitle(R.string.call_connecting) toolbar?.setSubtitle(R.string.call_connecting)
} }
} }
is CallState.Ended -> { is CallState.Ended -> {
views.fullscreenRenderer.isVisible = false views.fullscreenRenderer.isVisible = false
views.pipRendererWrapper.isVisible = false views.pipRendererWrapper.isVisible = false
views.callInfoGroup.isVisible = true views.callInfoGroup.isVisible = true
views.callToolbar.setSubtitle(R.string.call_ended) toolbar?.setSubtitle(R.string.call_ended)
configureCallInfo(state) configureCallInfo(state)
} }
else -> { else -> {
@ -410,7 +410,7 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
avatarRenderer.renderBlur(it, views.bgCallView, sampling = 20, rounded = false, colorFilter = colorFilter, addPlaceholder = false) avatarRenderer.renderBlur(it, views.bgCallView, sampling = 20, rounded = false, colorFilter = colorFilter, addPlaceholder = false)
if (state.transferee is VectorCallViewState.TransfereeState.NoTransferee) { if (state.transferee is VectorCallViewState.TransfereeState.NoTransferee) {
views.participantNameText.setTextOrHide(null) views.participantNameText.setTextOrHide(null)
views.callToolbar.title = if (state.isVideoCall) { toolbar?.title = if (state.isVideoCall) {
getString(R.string.video_call_with_participant, it.getBestName()) getString(R.string.video_call_with_participant, it.getBestName())
} else { } else {
getString(R.string.audio_call_with_participant, it.getBestName()) getString(R.string.audio_call_with_participant, it.getBestName())

View File

@ -70,7 +70,8 @@ class CallTransferActivity : VectorBaseActivity<ActivityCallTransferBinding>() {
CallTransferPagerAdapter.DIAL_PAD_INDEX -> tab.text = getString(R.string.call_dial_pad_title) CallTransferPagerAdapter.DIAL_PAD_INDEX -> tab.text = getString(R.string.call_dial_pad_title)
} }
}.attach() }.attach()
configureToolbar(views.callTransferToolbar) setupToolbar(views.callTransferToolbar)
.allowBack()
views.callTransferToolbar.title = getString(R.string.call_transfer_title) views.callTransferToolbar.title = getString(R.string.call_transfer_title)
setupConnectAction() setupConnectAction()
} }

View File

@ -67,7 +67,8 @@ class ContactsBookFragment @Inject constructor(
setupFilterView() setupFilterView()
setupConsentView() setupConsentView()
setupOnlyBoundContactsView() setupOnlyBoundContactsView()
setupCloseView() setupToolbar(views.phoneBookToolbar)
.allowBack(useCross = true)
contactsBookViewModel.observeViewEvents { contactsBookViewModel.observeViewEvents {
when (it) { when (it) {
is ContactsBookViewEvents.Failure -> showFailure(it.throwable) is ContactsBookViewEvents.Failure -> showFailure(it.throwable)
@ -119,12 +120,6 @@ class ContactsBookFragment @Inject constructor(
views.phoneBookRecyclerView.configureWith(contactsBookController) views.phoneBookRecyclerView.configureWith(contactsBookController)
} }
private fun setupCloseView() {
views.phoneBookClose.debouncedClicks {
sharedActionViewModel.post(UserListSharedAction.GoBack)
}
}
override fun invalidate() = withState(contactsBookViewModel) { state -> override fun invalidate() = withState(contactsBookViewModel) { state ->
views.phoneBookSearchForMatrixContacts.isVisible = state.filteredMappedContacts.isNotEmpty() && state.identityServerUrl != null && !state.userConsent views.phoneBookSearchForMatrixContacts.isVisible = state.filteredMappedContacts.isNotEmpty() && state.identityServerUrl != null && !state.userConsent
views.phoneBookOnlyBoundContacts.isVisible = state.isBoundRetrieved views.phoneBookOnlyBoundContacts.isVisible = state.isBoundRetrieved

View File

@ -64,11 +64,8 @@ class CreateDirectRoomByQrCodeFragment @Inject constructor() : VectorBaseFragmen
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.qrScannerToolbar) setupToolbar(views.qrScannerToolbar)
.setTitle(R.string.add_by_qr_code)
views.qrScannerClose.debouncedClicks { .allowBack(useCross = true)
requireActivity().onBackPressed()
}
views.qrScannerTitle.text = getString(R.string.add_by_qr_code)
} }
override fun onResume() { override fun onResume() {

View File

@ -33,7 +33,6 @@ import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.AppStateHandler import im.vector.app.AppStateHandler
@ -43,7 +42,6 @@ import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.registerStartForActivityResult import im.vector.app.core.extensions.registerStartForActivityResult
import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.core.pushers.PushersManager import im.vector.app.core.pushers.PushersManager
import im.vector.app.databinding.ActivityHomeBinding import im.vector.app.databinding.ActivityHomeBinding
@ -99,7 +97,6 @@ data class HomeActivityArgs(
@AndroidEntryPoint @AndroidEntryPoint
class HomeActivity : class HomeActivity :
VectorBaseActivity<ActivityHomeBinding>(), VectorBaseActivity<ActivityHomeBinding>(),
ToolbarConfigurable,
NavigationInterceptor, NavigationInterceptor,
SpaceInviteBottomSheet.InteractionListener, SpaceInviteBottomSheet.InteractionListener,
MatrixToBottomSheet.InteractionListener { MatrixToBottomSheet.InteractionListener {
@ -493,10 +490,6 @@ class HomeActivity :
serverBackupStatusViewModel.refreshRemoteStateIfNeeded() serverBackupStatusViewModel.refreshRemoteStateIfNeeded()
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar, false)
}
override fun getMenuRes() = R.menu.home override fun getMenuRes() = R.menu.home
override fun onPrepareOptionsMenu(menu: Menu): Boolean { override fun onPrepareOptionsMenu(menu: Menu): Boolean {

View File

@ -33,7 +33,6 @@ import im.vector.app.R
import im.vector.app.RoomGroupingMethod import im.vector.app.RoomGroupingMethod
import im.vector.app.core.extensions.commitTransaction import im.vector.app.core.extensions.commitTransaction
import im.vector.app.core.extensions.toMvRxBundle import im.vector.app.core.extensions.toMvRxBundle
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.core.resources.ColorProvider import im.vector.app.core.resources.ColorProvider
@ -314,11 +313,9 @@ class HomeDetailFragment @Inject constructor(
} }
private fun setupToolbar() { private fun setupToolbar() {
val parentActivity = vectorBaseActivity setupToolbar(views.groupToolbar)
if (parentActivity is ToolbarConfigurable) { .setTitle(null)
parentActivity.configure(views.groupToolbar)
}
views.groupToolbar.title = ""
views.groupToolbarAvatarImageView.debouncedClicks { views.groupToolbarAvatarImageView.debouncedClicks {
sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer) sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer)
} }

View File

@ -28,13 +28,11 @@ import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.endKeepScreenOn import im.vector.app.core.extensions.endKeepScreenOn
import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.keepScreenOn import im.vector.app.core.extensions.keepScreenOn
import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityRoomDetailBinding import im.vector.app.databinding.ActivityRoomDetailBinding
import im.vector.app.features.analytics.plan.Screen import im.vector.app.features.analytics.plan.Screen
@ -53,7 +51,6 @@ import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class RoomDetailActivity : class RoomDetailActivity :
VectorBaseActivity<ActivityRoomDetailBinding>(), VectorBaseActivity<ActivityRoomDetailBinding>(),
ToolbarConfigurable,
MatrixToBottomSheet.InteractionListener { MatrixToBottomSheet.InteractionListener {
override fun getBinding(): ActivityRoomDetailBinding { override fun getBinding(): ActivityRoomDetailBinding {
@ -159,10 +156,6 @@ class RoomDetailActivity :
super.onDestroy() super.onDestroy()
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
private val drawerListener = object : DrawerLayout.SimpleDrawerListener() { private val drawerListener = object : DrawerLayout.SimpleDrawerListener() {
private var drawerScreenEvent: ScreenEvent? = null private var drawerScreenEvent: ScreenEvent? = null
override fun onDrawerOpened(drawerView: View) { override fun onDrawerOpened(drawerView: View) {

View File

@ -365,6 +365,7 @@ class RoomDetailFragment @Inject constructor(
keyboardStateUtils = KeyboardStateUtils(requireActivity()) keyboardStateUtils = KeyboardStateUtils(requireActivity())
lazyLoadedViews.bind(views) lazyLoadedViews.bind(views)
setupToolbar(views.roomToolbar) setupToolbar(views.roomToolbar)
.allowBack()
setupRecyclerView() setupRecyclerView()
setupComposer() setupComposer()
setupNotificationView() setupNotificationView()
@ -1514,7 +1515,7 @@ class RoomDetailFragment @Inject constructor(
views.roomToolbarSubtitleView.apply { views.roomToolbarSubtitleView.apply {
setTextOrHide(subtitle) setTextOrHide(subtitle)
if (typingMessage.isNullOrBlank()) { if (typingMessage.isNullOrBlank()) {
setTextColor(colorProvider.getColorFromAttribute(R.attr.vctr_content_primary)) setTextColor(colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary))
setTypeface(null, Typeface.NORMAL) setTypeface(null, Typeface.NORMAL)
} else { } else {
setTextColor(colorProvider.getColorFromAttribute(R.attr.colorPrimary)) setTextColor(colorProvider.getColorFromAttribute(R.attr.colorPrimary))

View File

@ -40,7 +40,8 @@ class SearchActivity : VectorBaseActivity<ActivitySearchBinding>() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
configureToolbar(views.searchToolbar) setupToolbar(views.searchToolbar)
.allowBack()
} }
override fun initUiAndData() { override fun initUiAndData() {

View File

@ -44,7 +44,8 @@ class FilteredRoomsActivity : VectorBaseActivity<ActivityFilteredRoomsBinding>()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
analyticsScreenName = Screen.ScreenName.RoomFilter analyticsScreenName = Screen.ScreenName.RoomFilter
configureToolbar(views.filteredRoomsToolbar) setupToolbar(views.filteredRoomsToolbar)
.allowBack()
if (isFirstCreation()) { if (isFirstCreation()) {
val params = RoomListParams(RoomListDisplayMode.FILTERED) val params = RoomListParams(RoomListDisplayMode.FILTERED)
replaceFragment(views.filteredRoomsFragmentContainer, RoomListFragment::class.java, params, FRAGMENT_TAG) replaceFragment(views.filteredRoomsFragmentContainer, RoomListFragment::class.java, params, FRAGMENT_TAG)

View File

@ -29,7 +29,6 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
@ -37,7 +36,6 @@ import im.vector.app.core.extensions.POP_BACK_STACK_EXCLUSIVE
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.extensions.addFragmentToBackstack
import im.vector.app.core.extensions.exhaustive import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityLoginBinding import im.vector.app.databinding.ActivityLoginBinding
import im.vector.app.features.analytics.plan.Screen import im.vector.app.features.analytics.plan.Screen
@ -54,7 +52,7 @@ import org.matrix.android.sdk.api.extensions.tryOrNull
* The LoginActivity manages the fragment navigation and also display the loading View * The LoginActivity manages the fragment navigation and also display the loading View
*/ */
@AndroidEntryPoint @AndroidEntryPoint
open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarConfigurable, UnlockedActivity { open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), UnlockedActivity {
private val loginViewModel: LoginViewModel by viewModel() private val loginViewModel: LoginViewModel by viewModel()
@ -353,10 +351,6 @@ open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarCo
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
companion object { companion object {
private const val FRAGMENT_REGISTRATION_STAGE_TAG = "FRAGMENT_REGISTRATION_STAGE_TAG" private const val FRAGMENT_REGISTRATION_STAGE_TAG = "FRAGMENT_REGISTRATION_STAGE_TAG"
private const val FRAGMENT_LOGIN_TAG = "FRAGMENT_LOGIN_TAG" private const val FRAGMENT_LOGIN_TAG = "FRAGMENT_LOGIN_TAG"

View File

@ -64,6 +64,7 @@ class LoginWebFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.loginWebToolbar) setupToolbar(views.loginWebToolbar)
.allowBack()
} }
override fun updateWithState(state: LoginViewState) { override fun updateWithState(state: LoginViewState) {
@ -78,7 +79,7 @@ class LoginWebFragment @Inject constructor(
} }
private fun setupTitle(state: LoginViewState) { private fun setupTitle(state: LoginViewState) {
views.loginWebToolbar.title = when (state.signMode) { toolbar?.title = when (state.signMode) {
SignMode.SignIn -> getString(R.string.login_signin) SignMode.SignIn -> getString(R.string.login_signin)
else -> getString(R.string.login_signup) else -> getString(R.string.login_signup)
} }
@ -149,7 +150,7 @@ class LoginWebFragment @Inject constructor(
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon) super.onPageStarted(view, url, favicon)
views.loginWebToolbar.subtitle = url toolbar?.subtitle = url
} }
override fun onPageFinished(view: WebView, url: String) { override fun onPageFinished(view: WebView, url: String) {

View File

@ -65,6 +65,7 @@ class LoginWebFragment2 @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.loginWebToolbar) setupToolbar(views.loginWebToolbar)
.allowBack()
} }
override fun updateWithState(state: LoginViewState2) { override fun updateWithState(state: LoginViewState2) {
@ -79,7 +80,7 @@ class LoginWebFragment2 @Inject constructor(
} }
private fun setupTitle(state: LoginViewState2) { private fun setupTitle(state: LoginViewState2) {
views.loginWebToolbar.title = when (state.signMode) { toolbar?.title = when (state.signMode) {
SignMode2.SignIn -> getString(R.string.login_signin) SignMode2.SignIn -> getString(R.string.login_signin)
else -> getString(R.string.login_signup) else -> getString(R.string.login_signup)
} }
@ -150,7 +151,7 @@ class LoginWebFragment2 @Inject constructor(
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon) super.onPageStarted(view, url, favicon)
views.loginWebToolbar.subtitle = url toolbar?.subtitle = url
} }
override fun onPageFinished(view: WebView, url: String) { override fun onPageFinished(view: WebView, url: String) {

View File

@ -38,12 +38,9 @@ class BigImageViewerActivity : VectorBaseActivity<ActivityBigImageViewerBinding>
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setSupportActionBar(views.bigImageViewerToolbar) setupToolbar(views.bigImageViewerToolbar)
supportActionBar?.apply { .setTitle(intent.getStringExtra(EXTRA_TITLE))
title = intent.getStringExtra(EXTRA_TITLE) .allowBack()
setHomeButtonEnabled(true)
setDisplayHomeAsUpEnabled(true)
}
val uri = sessionHolder.getSafeActiveSession() val uri = sessionHolder.getSafeActiveSession()
?.contentUrlResolver() ?.contentUrlResolver()

View File

@ -19,10 +19,8 @@ package im.vector.app.features.onboarding
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.lazyViewModel import im.vector.app.core.extensions.lazyViewModel
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.core.platform.lifecycleAwareLazy import im.vector.app.core.platform.lifecycleAwareLazy
import im.vector.app.databinding.ActivityLoginBinding import im.vector.app.databinding.ActivityLoginBinding
@ -31,7 +29,7 @@ import im.vector.app.features.pin.UnlockedActivity
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class OnboardingActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarConfigurable, UnlockedActivity { class OnboardingActivity : VectorBaseActivity<ActivityLoginBinding>(), UnlockedActivity {
private val onboardingVariant by lifecycleAwareLazy { private val onboardingVariant by lifecycleAwareLazy {
onboardingVariantFactory.create(this, views = views, onboardingViewModel = lazyViewModel(), loginViewModel2 = lazyViewModel()) onboardingVariantFactory.create(this, views = views, onboardingViewModel = lazyViewModel(), loginViewModel2 = lazyViewModel())
@ -43,10 +41,6 @@ class OnboardingActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarCo
override fun getCoordinatorLayout() = views.coordinatorLayout override fun getCoordinatorLayout() = views.coordinatorLayout
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun onNewIntent(intent: Intent?) { override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent) super.onNewIntent(intent)
onboardingVariant.onNewIntent(intent) onboardingVariant.onNewIntent(intent)

View File

@ -69,6 +69,7 @@ class FtueAuthWebFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.loginWebToolbar) setupToolbar(views.loginWebToolbar)
.allowBack()
} }
override fun updateWithState(state: OnboardingViewState) { override fun updateWithState(state: OnboardingViewState) {
@ -83,7 +84,7 @@ class FtueAuthWebFragment @Inject constructor(
} }
private fun setupTitle(state: OnboardingViewState) { private fun setupTitle(state: OnboardingViewState) {
views.loginWebToolbar.title = when (state.signMode) { toolbar?.title = when (state.signMode) {
SignMode.SignIn -> getString(R.string.login_signin) SignMode.SignIn -> getString(R.string.login_signin)
else -> getString(R.string.login_signup) else -> getString(R.string.login_signup)
} }

View File

@ -19,15 +19,13 @@ package im.vector.app.features.pin
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
@AndroidEntryPoint @AndroidEntryPoint
class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable, UnlockedActivity { class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), UnlockedActivity {
companion object { companion object {
fun newIntent(context: Context, args: PinArgs): Intent { fun newIntent(context: Context, args: PinArgs): Intent {
@ -47,8 +45,4 @@ class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigur
addFragment(views.simpleFragmentContainer, PinFragment::class.java, fragmentArgs) addFragment(views.simpleFragmentContainer, PinFragment::class.java, fragmentArgs)
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -49,17 +49,15 @@ class CreatePollFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.createPollToolbar)
setupToolbar(views.createPollToolbar)
.allowBack(useCross = true)
views.createPollRecyclerView.configureWith(controller, disableItemAnimation = true) views.createPollRecyclerView.configureWith(controller, disableItemAnimation = true)
// workaround for https://github.com/vector-im/element-android/issues/4735 // workaround for https://github.com/vector-im/element-android/issues/4735
views.createPollRecyclerView.setItemViewCacheSize(MAX_OPTIONS_COUNT + 4) views.createPollRecyclerView.setItemViewCacheSize(MAX_OPTIONS_COUNT + 4)
controller.callback = this controller.callback = this
views.createPollClose.debouncedClicks {
requireActivity().finish()
}
views.createPollButton.debouncedClicks { views.createPollButton.debouncedClicks {
viewModel.handle(CreatePollAction.OnCreatePoll) viewModel.handle(CreatePollAction.OnCreatePoll)
} }

View File

@ -38,10 +38,9 @@ class QrCodeScannerFragment @Inject constructor() :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
views.qrScannerClose.debouncedClicks { setupToolbar(views.qrScannerToolbar)
requireActivity().onBackPressed() .setTitle(R.string.verification_scan_their_code)
} .allowBack(useCross = true)
views.qrScannerTitle.text = getString(R.string.verification_scan_their_code)
} }
override fun onResume() { override fun onResume() {

View File

@ -45,7 +45,8 @@ class BugReportActivity : VectorBaseActivity<ActivityBugReportBinding>() {
private var reportType: ReportType = ReportType.BUG_REPORT private var reportType: ReportType = ReportType.BUG_REPORT
override fun initUiAndData() { override fun initUiAndData() {
configureToolbar(views.bugReportToolbar) setupToolbar(views.bugReportToolbar)
.allowBack()
setupViews() setupViews()
if (bugReporter.screenshot != null) { if (bugReporter.screenshot != null) {

View File

@ -79,7 +79,8 @@ class EmojiReactionPickerActivity : VectorBaseActivity<ActivityEmojiReactionPick
} }
override fun initUiAndData() { override fun initUiAndData() {
configureToolbar(views.emojiPickerToolbar) setupToolbar(views.emojiPickerToolbar)
.allowBack()
emojiCompatFontProvider.let { emojiCompatFontProvider.let {
EmojiDrawView.configureTextPaint(this, it.typeface) EmojiDrawView.configureTextPaint(this, it.typeface)
it.addListener(this) it.addListener(this)

View File

@ -69,12 +69,8 @@ class PublicRoomsFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.publicRoomsToolbar) setupToolbar(views.publicRoomsToolbar)
.allowBack()
vectorBaseActivity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRecyclerView() setupRecyclerView()

View File

@ -22,10 +22,8 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
import im.vector.app.features.analytics.plan.Screen import im.vector.app.features.analytics.plan.Screen
@ -38,7 +36,7 @@ import kotlinx.coroutines.flow.onEach
* Simple container for [CreateRoomFragment] * Simple container for [CreateRoomFragment]
*/ */
@AndroidEntryPoint @AndroidEntryPoint
class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable { class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>() {
private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel
@ -46,10 +44,6 @@ class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarC
override fun getCoordinatorLayout() = views.coordinatorLayout override fun getCoordinatorLayout() = views.coordinatorLayout
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun initUiAndData() { override fun initUiAndData() {
if (isFirstCreation()) { if (isFirstCreation()) {
val fragmentArgs: CreateRoomArgs = intent?.extras?.getParcelable(Mavericks.KEY_ARG) ?: return val fragmentArgs: CreateRoomArgs = intent?.extras?.getParcelable(Mavericks.KEY_ARG) ?: return

View File

@ -83,14 +83,13 @@ class CreateRoomFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.createRoomToolbar)
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRoomJoinRuleSharedActionViewModel() setupRoomJoinRuleSharedActionViewModel()
setupWaitingView() setupWaitingView()
setupRecyclerView() setupRecyclerView()
views.createRoomClose.debouncedClicks { setupToolbar(views.createRoomToolbar)
sharedActionViewModel.post(RoomDirectorySharedAction.Back) .setTitle(if (args.isSpace) R.string.create_new_space else R.string.create_new_room)
} .allowBack(useCross = true)
viewModel.observeViewEvents { viewModel.observeViewEvents {
when (it) { when (it) {
CreateRoomViewEvents.Quit -> vectorBaseActivity.onBackPressed() CreateRoomViewEvents.Quit -> vectorBaseActivity.onBackPressed()
@ -99,11 +98,6 @@ class CreateRoomFragment @Inject constructor(
} }
} }
override fun onResume() {
super.onResume()
views.createRoomTitle.text = getString(if (args.isSpace) R.string.create_new_space else R.string.create_new_room)
}
private fun setupRoomJoinRuleSharedActionViewModel() { private fun setupRoomJoinRuleSharedActionViewModel() {
roomJoinRuleSharedActionViewModel = activityViewModelProvider.get(RoomJoinRuleSharedActionViewModel::class.java) roomJoinRuleSharedActionViewModel = activityViewModelProvider.get(RoomJoinRuleSharedActionViewModel::class.java)
roomJoinRuleSharedActionViewModel roomJoinRuleSharedActionViewModel

View File

@ -20,7 +20,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
@ -61,12 +60,9 @@ class RoomDirectoryPickerFragment @Inject constructor(private val roomDirectoryP
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.toolbar) setupToolbar(views.toolbar)
.setTitle(R.string.select_room_directory)
vectorBaseActivity.supportActionBar?.let { .allowBack()
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRecyclerView() setupRecyclerView()
@ -115,11 +111,6 @@ class RoomDirectoryPickerFragment @Inject constructor(private val roomDirectoryP
pickerViewModel.handle(RoomDirectoryPickerAction.RemoveServer(roomDirectoryServer)) pickerViewModel.handle(RoomDirectoryPickerAction.RemoveServer(roomDirectoryServer))
} }
override fun onResume() {
super.onResume()
(activity as? AppCompatActivity)?.supportActionBar?.setTitle(R.string.select_room_directory)
}
override fun retry() { override fun retry() {
Timber.v("Retry") Timber.v("Retry")
pickerViewModel.handle(RoomDirectoryPickerAction.Retry) pickerViewModel.handle(RoomDirectoryPickerAction.Retry)

View File

@ -19,10 +19,8 @@ package im.vector.app.features.roomdirectory.roompreview
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Parcelable import android.os.Parcelable
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
import im.vector.app.features.roomdirectory.RoomDirectoryData import im.vector.app.features.roomdirectory.RoomDirectoryData
@ -53,7 +51,7 @@ data class RoomPreviewData(
} }
@AndroidEntryPoint @AndroidEntryPoint
class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable { class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>() {
companion object { companion object {
private const val ARG = "ARG" private const val ARG = "ARG"
@ -83,10 +81,6 @@ class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), Toolbar
override fun getCoordinatorLayout() = views.coordinatorLayout override fun getCoordinatorLayout() = views.coordinatorLayout
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun initUiAndData() { override fun initUiAndData() {
if (isFirstCreation()) { if (isFirstCreation()) {
val args = intent.getParcelableExtra<RoomPreviewData>(ARG) val args = intent.getParcelableExtra<RoomPreviewData>(ARG)

View File

@ -64,6 +64,7 @@ class RoomPreviewNoPreviewFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.roomPreviewNoPreviewToolbar) setupToolbar(views.roomPreviewNoPreviewToolbar)
.allowBack()
views.roomPreviewNoPreviewJoin.commonClicked = { roomPreviewViewModel.handle(RoomPreviewAction.Join) } views.roomPreviewNoPreviewJoin.commonClicked = { roomPreviewViewModel.handle(RoomPreviewAction.Join) }
} }

View File

@ -22,19 +22,15 @@ import android.content.Intent
import android.widget.Toast import android.widget.Toast
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
import im.vector.app.features.room.RequireActiveMembershipViewEvents import im.vector.app.features.room.RequireActiveMembershipViewEvents
import im.vector.app.features.room.RequireActiveMembershipViewModel import im.vector.app.features.room.RequireActiveMembershipViewModel
@AndroidEntryPoint @AndroidEntryPoint
class RoomMemberProfileActivity : class RoomMemberProfileActivity : VectorBaseActivity<ActivitySimpleBinding>() {
VectorBaseActivity<ActivitySimpleBinding>(),
ToolbarConfigurable {
companion object { companion object {
fun newIntent(context: Context, args: RoomMemberProfileArgs): Intent { fun newIntent(context: Context, args: RoomMemberProfileArgs): Intent {
@ -63,10 +59,6 @@ class RoomMemberProfileActivity :
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
private fun handleRoomLeft(roomLeft: RequireActiveMembershipViewEvents.RoomLeft) { private fun handleRoomLeft(roomLeft: RequireActiveMembershipViewEvents.RoomLeft) {
if (roomLeft.leftMessage != null) { if (roomLeft.leftMessage != null) {
Toast.makeText(this, roomLeft.leftMessage, Toast.LENGTH_LONG).show() Toast.makeText(this, roomLeft.leftMessage, Toast.LENGTH_LONG).show()

View File

@ -97,6 +97,7 @@ class RoomMemberProfileFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.matrixProfileToolbar) setupToolbar(views.matrixProfileToolbar)
.allowBack()
val headerView = views.matrixProfileHeaderView.let { val headerView = views.matrixProfileHeaderView.let {
it.layoutResource = R.layout.view_stub_room_member_profile_header it.layoutResource = R.layout.view_stub_room_member_profile_header
it.inflate() it.inflate()

View File

@ -23,12 +23,10 @@ import android.widget.Toast
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.extensions.addFragmentToBackstack
import im.vector.app.core.extensions.exhaustive import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
import im.vector.app.features.home.room.detail.RoomDetailPendingActionStore import im.vector.app.features.home.room.detail.RoomDetailPendingActionStore
@ -47,8 +45,7 @@ import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class RoomProfileActivity : class RoomProfileActivity :
VectorBaseActivity<ActivitySimpleBinding>(), VectorBaseActivity<ActivitySimpleBinding>() {
ToolbarConfigurable {
companion object { companion object {
@ -157,8 +154,4 @@ class RoomProfileActivity :
private fun openRoomNotificationSettings() { private fun openRoomNotificationSettings() {
addFragmentToBackstack(views.simpleFragmentContainer, RoomNotificationSettingsFragment::class.java, roomProfileArgs) addFragmentToBackstack(views.simpleFragmentContainer, RoomNotificationSettingsFragment::class.java, roomProfileArgs)
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -109,6 +109,7 @@ class RoomProfileFragment @Inject constructor(
headerViews = ViewStubRoomProfileHeaderBinding.bind(headerView) headerViews = ViewStubRoomProfileHeaderBinding.bind(headerView)
setupWaitingView() setupWaitingView()
setupToolbar(views.matrixProfileToolbar) setupToolbar(views.matrixProfileToolbar)
.allowBack()
setupRecyclerView() setupRecyclerView()
appBarStateChangeListener = MatrixItemAppBarStateChangeListener( appBarStateChangeListener = MatrixItemAppBarStateChangeListener(
headerView, headerView,

View File

@ -68,6 +68,7 @@ class RoomAliasFragment @Inject constructor(
controller.callback = this controller.callback = this
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true) views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true)
views.waitingView.waitingStatusText.setText(R.string.please_wait) views.waitingView.waitingStatusText.setText(R.string.please_wait)
views.waitingView.waitingStatusText.isVisible = true views.waitingView.waitingStatusText.isVisible = true

View File

@ -59,6 +59,7 @@ class RoomBannedMemberListFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
roomMemberListController.callback = this roomMemberListController.callback = this
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
setupSearchView() setupSearchView()
views.roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true) views.roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true)

View File

@ -58,6 +58,7 @@ class RoomMemberListFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
roomMemberListController.callback = this roomMemberListController.callback = this
setupToolbar(views.roomSettingGeneric.roomSettingsToolbar) setupToolbar(views.roomSettingGeneric.roomSettingsToolbar)
.allowBack()
setupSearchView() setupSearchView()
setupInviteUsersButton() setupInviteUsersButton()
views.roomSettingGeneric.roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true) views.roomSettingGeneric.roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true)

View File

@ -50,6 +50,7 @@ class RoomNotificationSettingsFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
roomNotificationSettingsController.callback = this roomNotificationSettingsController.callback = this
views.roomSettingsRecyclerView.configureWith(roomNotificationSettingsController, hasFixedSize = true) views.roomSettingsRecyclerView.configureWith(roomNotificationSettingsController, hasFixedSize = true)
setupWaitingView() setupWaitingView()

View File

@ -58,6 +58,7 @@ class RoomPermissionsFragment @Inject constructor(
controller.callback = this controller.callback = this
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true) views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true)
views.waitingView.waitingStatusText.setText(R.string.please_wait) views.waitingView.waitingStatusText.setText(R.string.please_wait)
views.waitingView.waitingStatusText.isVisible = true views.waitingView.waitingStatusText.isVisible = true

View File

@ -85,6 +85,7 @@ class RoomSettingsFragment @Inject constructor(
setupRoomJoinRuleSharedActionViewModel() setupRoomJoinRuleSharedActionViewModel()
controller.callback = this controller.callback = this
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true) views.roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true)
views.waitingView.waitingStatusText.setText(R.string.please_wait) views.waitingView.waitingStatusText.setText(R.string.please_wait)
views.waitingView.waitingStatusText.isVisible = true views.waitingView.waitingStatusText.isVisible = true

View File

@ -74,6 +74,7 @@ class RoomUploadsFragment @Inject constructor(
}.attach() }.attach()
setupToolbar(views.roomUploadsToolbar) setupToolbar(views.roomUploadsToolbar)
.allowBack()
viewModel.observeViewEvents { viewModel.observeViewEvents {
when (it) { when (it) {

View File

@ -63,7 +63,8 @@ class VectorSettingsActivity : VectorBaseActivity<ActivityVectorSettingsBinding>
@Inject lateinit var session: Session @Inject lateinit var session: Session
override fun initUiAndData() { override fun initUiAndData() {
configureToolbar(views.settingsToolbar) setupToolbar(views.settingsToolbar)
.allowBack()
if (isFirstCreation()) { if (isFirstCreation()) {
// display the fragment // display the fragment

View File

@ -16,15 +16,13 @@
package im.vector.app.features.share package im.vector.app.features.share
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.databinding.ActivitySimpleBinding
@AndroidEntryPoint @AndroidEntryPoint
class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable { class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>() {
override fun getBinding() = ActivitySimpleBinding.inflate(layoutInflater) override fun getBinding() = ActivitySimpleBinding.inflate(layoutInflater)
@ -35,8 +33,4 @@ class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>(), Toolb
addFragment(views.simpleFragmentContainer, IncomingShareFragment::class.java) addFragment(views.simpleFragmentContainer, IncomingShareFragment::class.java)
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar, displayBack = false)
}
} }

View File

@ -104,12 +104,9 @@ class SpaceDirectoryFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.toolbar) setupToolbar(views.toolbar)
.allowBack()
vectorBaseActivity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
epoxyController.listener = this epoxyController.listener = this
views.spaceDirectoryList.configureWith(epoxyController) views.spaceDirectoryList.configureWith(epoxyController)
epoxyVisibilityTracker.attach(views.spaceDirectoryList) epoxyVisibilityTracker.attach(views.spaceDirectoryList)
@ -166,13 +163,11 @@ class SpaceDirectoryFragment @Inject constructor(
if (currentParentId == null) { if (currentParentId == null) {
// it's the root // it's the root
val title = getString(R.string.space_explore_activity_title) toolbar?.setTitle(R.string.space_explore_activity_title)
views.toolbar.title = title
} else { } else {
val title = state.currentRootSummary?.name toolbar?.title = state.currentRootSummary?.name
?: state.currentRootSummary?.canonicalAlias ?: state.currentRootSummary?.canonicalAlias
?: getString(R.string.space_explore_activity_title) ?: getString(R.string.space_explore_activity_title)
views.toolbar.title = title
} }
spaceCardRenderer.render(state.currentRootSummary, emptyList(), this, views.spaceCard) spaceCardRenderer.render(state.currentRootSummary, emptyList(), this, views.spaceCard)

View File

@ -26,7 +26,6 @@ import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.Success import com.airbnb.mvrx.Success
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
@ -34,15 +33,13 @@ import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleLoadingBinding import im.vector.app.databinding.ActivitySimpleLoadingBinding
import im.vector.app.features.spaces.SpaceBottomSheetSettingsArgs import im.vector.app.features.spaces.SpaceBottomSheetSettingsArgs
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>(), class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>() {
ToolbarConfigurable {
override fun getBinding(): ActivitySimpleLoadingBinding = ActivitySimpleLoadingBinding.inflate(layoutInflater) override fun getBinding(): ActivitySimpleLoadingBinding = ActivitySimpleLoadingBinding.inflate(layoutInflater)
@ -113,8 +110,4 @@ class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBindi
} }
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -47,6 +47,7 @@ class SpaceLeaveAdvancedFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.toolbar) setupToolbar(views.toolbar)
.allowBack()
controller.listener = this controller.listener = this
views.roomList.configureWith(controller) views.roomList.configureWith(controller)
views.spaceLeaveCancel.debouncedClicks { requireActivity().finish() } views.spaceLeaveCancel.debouncedClicks { requireActivity().finish() }

View File

@ -63,12 +63,8 @@ class SpaceAddRoomFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.addRoomToSpaceToolbar) setupToolbar(views.addRoomToSpaceToolbar)
.allowBack()
vectorBaseActivity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
// sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java) // sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRecyclerView() setupRecyclerView()
@ -90,7 +86,7 @@ class SpaceAddRoomFragment @Inject constructor(
} }
viewModel.onEach(SpaceAddRoomsState::spaceName) { viewModel.onEach(SpaceAddRoomsState::spaceName) {
views.appBarSpaceInfo.text = it toolbar?.subtitle = it
} }
viewModel.onEach(SpaceAddRoomsState::ignoreRooms) { viewModel.onEach(SpaceAddRoomsState::ignoreRooms) {
@ -115,8 +111,7 @@ class SpaceAddRoomFragment @Inject constructor(
spaceEpoxyController.disabled = !it spaceEpoxyController.disabled = !it
roomEpoxyController.disabled = it roomEpoxyController.disabled = it
views.createNewRoom.text = if (it) getString(R.string.create_space) else getString(R.string.create_new_room) views.createNewRoom.text = if (it) getString(R.string.create_space) else getString(R.string.create_new_room)
val title = if (it) getString(R.string.space_add_existing_spaces) else getString(R.string.space_add_existing_rooms_only) toolbar?.setTitle(if (it) R.string.space_add_existing_spaces else R.string.space_add_existing_rooms_only)
views.appBarTitle.text = title
} }
views.createNewRoom.debouncedClicks { views.createNewRoom.debouncedClicks {

View File

@ -26,13 +26,11 @@ import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.addFragmentToBackstack import im.vector.app.core.extensions.addFragmentToBackstack
import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.replaceFragment import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivitySimpleLoadingBinding import im.vector.app.databinding.ActivitySimpleLoadingBinding
import im.vector.app.features.roomdirectory.RoomDirectorySharedAction import im.vector.app.features.roomdirectory.RoomDirectorySharedAction
@ -53,8 +51,7 @@ data class SpaceManageArgs(
) : Parcelable ) : Parcelable
@AndroidEntryPoint @AndroidEntryPoint
class SpaceManageActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>(), class SpaceManageActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>() {
ToolbarConfigurable {
private lateinit var sharedDirectoryActionViewModel: RoomDirectorySharedActionViewModel private lateinit var sharedDirectoryActionViewModel: RoomDirectorySharedActionViewModel
@ -188,8 +185,4 @@ class SpaceManageActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>(),
} }
} }
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -66,8 +66,11 @@ class SpaceManageRoomsFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.addRoomToSpaceToolbar) setupToolbar(views.addRoomToSpaceToolbar)
views.appBarTitle.text = getString(R.string.space_manage_rooms_and_spaces) .setTitle(R.string.space_manage_rooms_and_spaces)
.allowBack()
views.createNewRoom.isVisible = false views.createNewRoom.isVisible = false
epoxyController.listener = this epoxyController.listener = this
views.roomList.configureWith(epoxyController, hasFixedSize = true, dividerDrawable = R.drawable.divider_horizontal) views.roomList.configureWith(epoxyController, hasFixedSize = true, dividerDrawable = R.drawable.divider_horizontal)
@ -111,14 +114,15 @@ class SpaceManageRoomsFragment @Inject constructor(
epoxyController.setData(state) epoxyController.setData(state)
state.spaceSummary.invoke()?.let { state.spaceSummary.invoke()?.let {
views.appBarSpaceInfo.text = it.displayName toolbar?.subtitle = it.displayName
} }
if (state.selectedRooms.isNotEmpty()) { if (state.selectedRooms.isNotEmpty()) {
if (currentActionMode == null) { if (currentActionMode == null) {
views.addRoomToSpaceToolbar.isVisible = true views.addRoomToSpaceToolbar.isVisible = true
vectorBaseActivity.startSupportActionMode(this) vectorBaseActivity.startSupportActionMode(this)
} else { } else {
currentActionMode?.title = "${state.selectedRooms.size} selected" toolbar?.title = "${state.selectedRooms.size} selected"
} }
// views.addRoomToSpaceToolbar.isVisible = false // views.addRoomToSpaceToolbar.isVisible = false
// views.addRoomToSpaceToolbar.startActionMode(this) // views.addRoomToSpaceToolbar.startActionMode(this)

View File

@ -85,6 +85,7 @@ class SpaceSettingsFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.roomSettingsToolbar) setupToolbar(views.roomSettingsToolbar)
.allowBack()
// roomProfileSharedActionViewModel = activityViewModelProvider.get(RoomProfileSharedActionViewModel::class.java) // roomProfileSharedActionViewModel = activityViewModelProvider.get(RoomProfileSharedActionViewModel::class.java)
// setupRoomHistoryVisibilitySharedActionViewModel() // setupRoomHistoryVisibilitySharedActionViewModel()
setupRoomJoinRuleSharedActionViewModel() setupRoomJoinRuleSharedActionViewModel()

View File

@ -64,9 +64,9 @@ class SpacePeopleFragment @Inject constructor(
} }
override fun invalidate() = withState(membersViewModel) { memberListState -> override fun invalidate() = withState(membersViewModel) { memberListState ->
views.appBarTitle.text = getString(R.string.bottom_action_people)
val memberCount = (memberListState.roomSummary.invoke()?.otherMemberIds?.size ?: 0) + 1 val memberCount = (memberListState.roomSummary.invoke()?.otherMemberIds?.size ?: 0) + 1
views.appBarSpaceInfo.text = resources.getQuantityString(R.plurals.room_title_members, memberCount, memberCount)
toolbar?.subtitle = resources.getQuantityString(R.plurals.room_title_members, memberCount, memberCount)
// views.listBuildingProgress.isVisible = true // views.listBuildingProgress.isVisible = true
epoxyController.setData(memberListState) epoxyController.setData(memberListState)
} }
@ -78,17 +78,12 @@ class SpacePeopleFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.addRoomToSpaceToolbar)
.allowBack()
setupRecyclerView() setupRecyclerView()
setupSearchView() setupSearchView()
views.addRoomToSpaceToolbar.navigationIcon = drawableProvider.getDrawable(
R.drawable.ic_close_24dp,
colorProvider.getColorFromAttribute(R.attr.vctr_content_primary)
)
views.addRoomToSpaceToolbar.setNavigationOnClickListener {
sharedActionViewModel.post(SpacePeopleSharedAction.Dismiss)
}
viewModel.observeViewEvents { viewModel.observeViewEvents {
handleViewEvents(it) handleViewEvents(it)
} }

View File

@ -55,6 +55,10 @@ class ScanUserCodeFragment @Inject constructor() :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
setupToolbar(views.qrScannerToolbar)
.allowBack(useCross = true)
views.userCodeMyCodeButton.debouncedClicks { views.userCodeMyCodeButton.debouncedClicks {
sharedViewModel.handle(UserCodeActions.SwitchMode(UserCodeState.Mode.SHOW)) sharedViewModel.handle(UserCodeActions.SwitchMode(UserCodeState.Mode.SHOW))
} }
@ -62,10 +66,6 @@ class ScanUserCodeFragment @Inject constructor() :
views.userCodeOpenGalleryButton.debouncedClicks { views.userCodeOpenGalleryButton.debouncedClicks {
MultiPicker.get(MultiPicker.IMAGE).single().startWith(pickImageActivityResultLauncher) MultiPicker.get(MultiPicker.IMAGE).single().startWith(pickImageActivityResultLauncher)
} }
views.userCodeClose.debouncedClicks {
requireActivity().onBackPressed()
}
} }
private val openCameraActivityResultLauncher = registerForPermissionsResult { allGranted, _ -> private val openCameraActivityResultLauncher = registerForPermissionsResult { allGranted, _ ->

View File

@ -52,9 +52,9 @@ class ShowUserCodeFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
views.showUserCodeClose.debouncedClicks { setupToolbar(views.showUserCodeToolBar)
sharedViewModel.handle(UserCodeActions.DismissAction) .allowBack(useCross = true)
}
views.showUserCodeScanButton.debouncedClicks { views.showUserCodeScanButton.debouncedClicks {
if (checkPermissions(PERMISSIONS_FOR_TAKING_PHOTO, requireActivity(), openCameraActivityResultLauncher)) { if (checkPermissions(PERMISSIONS_FOR_TAKING_PHOTO, requireActivity(), openCameraActivityResultLauncher)) {
doOpenQRCodeScanner() doOpenQRCodeScanner()

View File

@ -72,9 +72,9 @@ class UserListFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
sharedActionViewModel = activityViewModelProvider.get(UserListSharedActionViewModel::class.java) sharedActionViewModel = activityViewModelProvider.get(UserListSharedActionViewModel::class.java)
if (args.showToolbar) { if (args.showToolbar) {
views.userListTitle.text = args.title setupToolbar(views.userListToolbar)
vectorBaseActivity.setSupportActionBar(views.userListToolbar) .setTitle(args.title)
setupCloseView() .allowBack(useCross = true)
views.userListToolbar.isVisible = true views.userListToolbar.isVisible = true
} else { } else {
views.userListToolbar.isVisible = false views.userListToolbar.isVisible = false
@ -153,12 +153,6 @@ class UserListFragment @Inject constructor(
views.userListSearch.requestFocus() views.userListSearch.requestFocus()
} }
private fun setupCloseView() {
views.userListClose.debouncedClicks {
requireActivity().finish()
}
}
override fun invalidate() = withState(viewModel) { override fun invalidate() = withState(viewModel) {
userListController.setData(it) userListController.setData(it)
} }

View File

@ -44,7 +44,8 @@ class VectorWebViewActivity : VectorBaseActivity<ActivityVectorWebViewBinding>()
} }
override fun initUiAndData() { override fun initUiAndData() {
configureToolbar(views.webviewToolbar) setupToolbar(views.webviewToolbar)
.allowBack()
waitingView = views.simpleWebviewLoader waitingView = views.simpleWebviewLoader
views.simpleWebview.settings.apply { views.simpleWebview.settings.apply {

View File

@ -22,11 +22,9 @@ import android.content.Intent
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.airbnb.mvrx.Mavericks import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.addFragment import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityWidgetBinding import im.vector.app.databinding.ActivityWidgetBinding
import im.vector.app.features.widgets.permissions.RoomWidgetPermissionBottomSheet import im.vector.app.features.widgets.permissions.RoomWidgetPermissionBottomSheet
@ -36,8 +34,7 @@ import org.matrix.android.sdk.api.session.events.model.Content
import java.io.Serializable import java.io.Serializable
@AndroidEntryPoint @AndroidEntryPoint
class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(), class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>() {
ToolbarConfigurable {
companion object { companion object {
private const val WIDGET_FRAGMENT_TAG = "WIDGET_FRAGMENT_TAG" private const val WIDGET_FRAGMENT_TAG = "WIDGET_FRAGMENT_TAG"
@ -77,7 +74,8 @@ class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(),
finish() finish()
return return
} }
configure(views.toolbar) setupToolbar(views.toolbar)
.allowBack()
views.toolbar.isVisible = widgetArgs.kind.nameRes != 0 views.toolbar.isVisible = widgetArgs.kind.nameRes != 0
viewModel.observeViewEvents { viewModel.observeViewEvents {
when (it) { when (it) {
@ -129,8 +127,4 @@ class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(),
} }
finish() finish()
} }
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
} }

View File

@ -41,10 +41,10 @@
android:layout_width="@dimen/call_pip_width" android:layout_width="@dimen/call_pip_width"
android:layout_height="@dimen/call_pip_height" android:layout_height="@dimen/call_pip_height"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
app:layout_goneMarginEnd="0dp"
app:cardCornerRadius="@dimen/call_pip_radius" app:cardCornerRadius="@dimen/call_pip_radius"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintEnd_toEndOf="parent"
app:layout_goneMarginEnd="0dp">
<org.webrtc.SurfaceViewRenderer <org.webrtc.SurfaceViewRenderer
android:id="@+id/pipRenderer" android:id="@+id/pipRenderer"
@ -104,11 +104,8 @@
app:navigationIcon="@drawable/ic_back_24dp" app:navigationIcon="@drawable/ic_back_24dp"
app:navigationIconTint="@color/element_background_light" app:navigationIconTint="@color/element_background_light"
app:subtitle="3:10" app:subtitle="3:10"
app:subtitleTextAppearance="@style/TextAppearance.Vector.Caption"
app:subtitleTextColor="@color/element_background_light" app:subtitleTextColor="@color/element_background_light"
app:title="Video call" app:title="Video call"
app:titleMarginTop="16dp"
app:titleTextAppearance="@style/TextAppearance.Vector.Body.Medium"
app:titleTextColor="@color/element_background_light" /> app:titleTextColor="@color/element_background_light" />
<ImageView <ImageView

View File

@ -19,49 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/phoneBookToolbar" android:id="@+id/phoneBookToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/contacts_book_title"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/phoneBookClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/phoneBookTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/contacts_book_title"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/phoneBookClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/phoneBookFilterContainer" android:id="@+id/phoneBookFilterContainer"

View File

@ -19,49 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/createRoomToolbar" android:id="@+id/createRoomToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/direct_chats_header" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/createDirectRoomClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/createDirectRoomTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/direct_chats_header"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/createDirectRoomClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/createDirectRoomSearchByIdContainer" android:id="@+id/createDirectRoomSearchByIdContainer"

View File

@ -15,49 +15,7 @@
android:id="@+id/createPollToolbar" android:id="@+id/createPollToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize" android:layout_height="?actionBarSize"
app:contentInsetStart="0dp"> app:title="@string/create_poll_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/createPollClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/createPollTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/create_poll_title"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/createPollClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@ -19,46 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/createRoomToolbar" android:id="@+id/createRoomToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/direct_chats_header" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/createRoomClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:contentDescription="@string/action_close"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/createRoomTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/create_room_title"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/createRoomClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@ -86,19 +86,19 @@
<TextView <TextView
android:id="@+id/groupToolbarTitleView" android:id="@+id/groupToolbarTitleView"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:gravity="start" android:gravity="start"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
android:textStyle="bold" android:textStyle="bold"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<TextView <TextView
android:id="@+id/groupToolbarSpaceTitleView" android:id="@+id/groupToolbarSpaceTitleView"
style="@style/Widget.Vector.TextView.Subtitle" style="@style/TextAppearance.Vector.Widget.ActionBarSubTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"

View File

@ -71,7 +71,6 @@
<TextView <TextView
android:id="@+id/matrixProfileToolbarTitleView" android:id="@+id/matrixProfileToolbarTitleView"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
@ -79,6 +78,7 @@
android:alpha="0" android:alpha="0"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -11,54 +10,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toBottomOf="@id/appBarLayout">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/qrScannerToolbar" android:id="@+id/qrScannerToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/add_by_qr_code" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/qrScannerClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/qrScannerTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/add_by_qr_code"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/qrScannerClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -16,49 +15,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/qrScannerToolbar" android:id="@+id/qrScannerToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/user_code_scan" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/userCodeClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/user_code_scan"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/userCodeClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<me.dm7.barcodescanner.zxing.ZXingScannerView <me.dm7.barcodescanner.zxing.ZXingScannerView

View File

@ -27,42 +27,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
android:minHeight="0dp" android:minHeight="0dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"> app:title="@string/bottom_action_people"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:orientation="vertical">
<TextView
android:id="@+id/appBarTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="start|center"
android:maxLines="1"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
tools:text="@tools:sample/lorem/random" />
<TextView
android:id="@+id/appBarSpaceInfo"
style="@style/Widget.Vector.TextView.Subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="start|center"
android:maxLines="1"
android:textColor="?vctr_content_secondary"
tools:text="@tools:sample/lorem/random" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<androidx.appcompat.widget.SearchView <androidx.appcompat.widget.SearchView
android:id="@+id/memberNameFilter" android:id="@+id/memberNameFilter"

View File

@ -85,14 +85,13 @@
<TextView <TextView
android:id="@+id/roomToolbarTitleView" android:id="@+id/roomToolbarTitleView"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textColor="?vctr_content_primary" android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
app:layout_constraintBottom_toTopOf="@id/roomToolbarSubtitleView" app:layout_constraintBottom_toTopOf="@id/roomToolbarSubtitleView"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
@ -104,14 +103,13 @@
<TextView <TextView
android:id="@+id/roomToolbarSubtitleView" android:id="@+id/roomToolbarSubtitleView"
style="@style/Widget.Vector.TextView.Body"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textColor="?vctr_content_primary" android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarSubTitle"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"

View File

@ -39,13 +39,13 @@
<TextView <TextView
android:id="@+id/roomPreviewNoPreviewToolbarTitle" android:id="@+id/roomPreviewNoPreviewToolbarTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -48,13 +48,13 @@
<TextView <TextView
android:id="@+id/roomSettingsToolbarTitleView" android:id="@+id/roomSettingsToolbarTitleView"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -46,13 +46,13 @@
<TextView <TextView
android:id="@+id/roomUploadsToolbarTitleView" android:id="@+id/roomUploadsToolbarTitleView"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -24,42 +24,8 @@
android:id="@+id/addRoomToSpaceToolbar" android:id="@+id/addRoomToSpaceToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
android:minHeight="0dp"> android:minHeight="0dp"
app:title="@string/space_add_existing_rooms"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:orientation="vertical">
<TextView
android:id="@+id/appBarTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="start|center"
android:maxLines="1"
android:text="@string/space_add_existing_rooms"
android:textColor="?vctr_content_primary"
android:textStyle="bold" />
<TextView
android:id="@+id/appBarSpaceInfo"
style="@style/Widget.Vector.TextView.Subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="start|center"
android:maxLines="1"
android:textColor="?vctr_content_secondary"
tools:text="@sample/spaces.json/data/name" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<androidx.appcompat.widget.SearchView <androidx.appcompat.widget.SearchView
android:id="@+id/publicRoomsFilter" android:id="@+id/publicRoomsFilter"

View File

@ -25,30 +25,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
android:minHeight="0dp" android:minHeight="0dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"> app:title="@string/pick_tings_to_leave"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:orientation="vertical">
<TextView
android:id="@+id/appBarTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:gravity="start|center"
android:maxLines="1"
android:text="@string/pick_tings_to_leave"
android:textColor="?vctr_content_primary"
android:textStyle="bold" />
</LinearLayout>
</com.google.android.material.appbar.MaterialToolbar>
<androidx.appcompat.widget.SearchView <androidx.appcompat.widget.SearchView
android:id="@+id/publicRoomsFilter" android:id="@+id/publicRoomsFilter"

View File

@ -41,13 +41,13 @@
<TextView <TextView
android:id="@+id/roomPreviewNoPreviewToolbarTitle" android:id="@+id/roomPreviewNoPreviewToolbarTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -33,17 +33,17 @@
android:padding="8dp"> android:padding="8dp">
<TextView <TextView
style="@style/Widget.Vector.TextView.ActionBarTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/select_spaces" /> android:text="@string/select_spaces"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle" />
<TextView <TextView
style="@style/Widget.Vector.TextView.Body"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="8dp" android:paddingTop="8dp"
android:text="@string/decide_which_spaces_can_access" android:text="@string/decide_which_spaces_can_access"
android:textAppearance="@style/Widget.Vector.TextView.Subtitle"
android:textColor="?vctr_content_secondary" /> android:textColor="?vctr_content_secondary" />
</LinearLayout> </LinearLayout>
@ -92,8 +92,8 @@
android:paddingEnd="16dp"> android:paddingEnd="16dp">
<Button <Button
style="@style/Widget.Vector.Button.Positive"
android:id="@+id/okButton" android:id="@+id/okButton"
style="@style/Widget.Vector.Button.Positive"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/ok" /> android:text="@string/ok" />

View File

@ -19,46 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/showUserCodeToolBar" android:id="@+id/showUserCodeToolBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/add_by_qr_code"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/showUserCodeClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:contentDescription="@string/action_close"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/showUserCodeTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/add_by_qr_code"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/showUserCodeClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@ -43,7 +43,6 @@
<TextView <TextView
android:id="@+id/userDirectoryTitle" android:id="@+id/userDirectoryTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
@ -51,6 +50,7 @@
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:text="@string/direct_chats_header" android:text="@string/direct_chats_header"
android:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary" android:textColor="?vctr_content_primary"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"

View File

@ -14,49 +14,8 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/userListToolbar" android:id="@+id/userListToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?actionBarSize"> android:layout_height="?actionBarSize"
app:title="@string/fab_menu_create_chat"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/userListClose"
android:layout_width="@dimen/layout_touch_size"
android:layout_height="@dimen/layout_touch_size"
android:clickable="true"
android:contentDescription="@string/action_close"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:scaleType="center"
android:src="@drawable/ic_x_18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?vctr_content_secondary"
tools:ignore="MissingPrefix" />
<TextView
android:id="@+id/userListTitle"
style="@style/Widget.Vector.TextView.HeadlineMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/fab_menu_create_chat"
android:textColor="?vctr_content_primary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/userListClose"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>