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>
<!-- main text -->
<item name="titleTextStyle">@style/Widget.Vector.TextView.ActionBarTitle</item>
<item name="titleTextAppearance">@style/TextAppearance.Vector.Widget.ActionBarTitle</item>
<!-- 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>
<!-- Default toolbar style -->
@ -22,16 +24,18 @@
<!-- Toolbar text style -->
<!-- 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:fontFamily">"sans-serif-medium"</item>
<item name="android:textSize">20sp</item>
<item name="android:fontFamily">sans-serif-medium</item>
<item name="fontFamily">sans-serif-medium</item>
<item name="android:textSize">18sp</item>
</style>
<!-- sub text -->
<style name="Widget.Vector.TextView.ActionBarSubTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">?vctr_content_primary</item>
<item name="android:fontFamily">"sans-serif-medium"</item>
<style name="TextAppearance.Vector.Widget.ActionBarSubTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
<item name="android:textColor">?vctr_content_secondary</item>
<item name="android:fontFamily">sans-serif</item>
<item name="fontFamily">sans-serif</item>
<item name="android:textSize">12sp</item>
</style>

View file

@ -30,7 +30,8 @@ abstract class SimpleFragmentActivity : VectorBaseActivity<ActivityBinding>() {
final override fun getCoordinatorLayout() = views.coordinatorLayout
override fun initUiAndData() {
configureToolbar(views.toolbar)
setupToolbar(views.toolbar)
.allowBack(true)
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.singletonEntryPoint
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.features.MainActivity
import im.vector.app.features.MainActivityArgs
@ -126,6 +127,8 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
.launchIn(lifecycleScope)
}
var toolbar: ToolbarConfig? = null
/* ==========================================================================================
* Views
* ========================================================================================== */
@ -508,18 +511,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
*/
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)
// ==============================================================================================
@ -629,4 +620,13 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
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.extensions.singletonEntryPoint
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.plan.Screen
import im.vector.app.features.analytics.screen.ScreenEvent
@ -80,6 +81,12 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
private var progress: AlertDialog? = null
/**
* [ToolbarConfig] instance from host activity
* */
protected var toolbar: ToolbarConfig? = null
get() = (activity as? VectorBaseActivity<*>)?.toolbar
private set
/* ==========================================================================================
* View model
* ========================================================================================== */
@ -228,13 +235,12 @@ abstract class VectorBaseFragment<VB : ViewBinding> : Fragment(), MavericksView
* ========================================================================================== */
/**
* Configure the Toolbar.
*/
protected fun setupToolbar(toolbar: MaterialToolbar) {
val parentActivity = vectorBaseActivity
if (parentActivity is ToolbarConfigurable) {
parentActivity.configure(toolbar)
}
* Sets toolbar as actionBar for current activity
*
* @return Instance of [ToolbarConfig] with set of helper methods to configure toolbar
* */
protected fun setupToolbar(toolbar: MaterialToolbar): ToolbarConfig {
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.Intent
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
import im.vector.app.features.themes.ActivityOtherThemes
import org.matrix.android.sdk.api.session.content.ContentAttachmentData
@AndroidEntryPoint
class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable {
class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>() {
companion object {
private const val EXTRA_FRAGMENT_ARGS = "EXTRA_FRAGMENT_ARGS"
@ -72,8 +70,4 @@ class AttachmentsPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(),
setResult(RESULT_OK, resultIntent)
finish()
}
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}

View file

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

View file

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

View file

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

View file

@ -33,7 +33,6 @@ import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
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.registerStartForActivityResult
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.pushers.PushersManager
import im.vector.app.databinding.ActivityHomeBinding
@ -99,7 +97,6 @@ data class HomeActivityArgs(
@AndroidEntryPoint
class HomeActivity :
VectorBaseActivity<ActivityHomeBinding>(),
ToolbarConfigurable,
NavigationInterceptor,
SpaceInviteBottomSheet.InteractionListener,
MatrixToBottomSheet.InteractionListener {
@ -493,10 +490,6 @@ class HomeActivity :
serverBackupStatusViewModel.refreshRemoteStateIfNeeded()
}
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar, false)
}
override fun getMenuRes() = R.menu.home
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.core.extensions.commitTransaction
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.VectorBaseFragment
import im.vector.app.core.resources.ColorProvider
@ -314,11 +313,9 @@ class HomeDetailFragment @Inject constructor(
}
private fun setupToolbar() {
val parentActivity = vectorBaseActivity
if (parentActivity is ToolbarConfigurable) {
parentActivity.configure(views.groupToolbar)
}
views.groupToolbar.title = ""
setupToolbar(views.groupToolbar)
.setTitle(null)
views.groupToolbarAvatarImageView.debouncedClicks {
sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer)
}

View file

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

View file

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

View file

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

View file

@ -44,7 +44,8 @@ class FilteredRoomsActivity : VectorBaseActivity<ActivityFilteredRoomsBinding>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
analyticsScreenName = Screen.ScreenName.RoomFilter
configureToolbar(views.filteredRoomsToolbar)
setupToolbar(views.filteredRoomsToolbar)
.allowBack()
if (isFirstCreation()) {
val params = RoomListParams(RoomListDisplayMode.FILTERED)
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 com.airbnb.mvrx.viewModel
import com.airbnb.mvrx.withState
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
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.addFragmentToBackstack
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.databinding.ActivityLoginBinding
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
*/
@AndroidEntryPoint
open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarConfigurable, UnlockedActivity {
open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), UnlockedActivity {
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 {
private const val FRAGMENT_REGISTRATION_STAGE_TAG = "FRAGMENT_REGISTRATION_STAGE_TAG"
private const val FRAGMENT_LOGIN_TAG = "FRAGMENT_LOGIN_TAG"

View file

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

View file

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

View file

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

View file

@ -19,10 +19,8 @@ package im.vector.app.features.onboarding
import android.content.Context
import android.content.Intent
import android.net.Uri
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.lifecycleAwareLazy
import im.vector.app.databinding.ActivityLoginBinding
@ -31,7 +29,7 @@ import im.vector.app.features.pin.UnlockedActivity
import javax.inject.Inject
@AndroidEntryPoint
class OnboardingActivity : VectorBaseActivity<ActivityLoginBinding>(), ToolbarConfigurable, UnlockedActivity {
class OnboardingActivity : VectorBaseActivity<ActivityLoginBinding>(), UnlockedActivity {
private val onboardingVariant by lifecycleAwareLazy {
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 configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
onboardingVariant.onNewIntent(intent)

View file

@ -69,6 +69,7 @@ class FtueAuthWebFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState)
setupToolbar(views.loginWebToolbar)
.allowBack()
}
override fun updateWithState(state: OnboardingViewState) {
@ -83,7 +84,7 @@ class FtueAuthWebFragment @Inject constructor(
}
private fun setupTitle(state: OnboardingViewState) {
views.loginWebToolbar.title = when (state.signMode) {
toolbar?.title = when (state.signMode) {
SignMode.SignIn -> getString(R.string.login_signin)
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.Intent
import com.airbnb.mvrx.Mavericks
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
@AndroidEntryPoint
class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable, UnlockedActivity {
class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), UnlockedActivity {
companion object {
fun newIntent(context: Context, args: PinArgs): Intent {
@ -47,8 +45,4 @@ class PinActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigur
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?) {
super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.createPollToolbar)
setupToolbar(views.createPollToolbar)
.allowBack(useCross = true)
views.createPollRecyclerView.configureWith(controller, disableItemAnimation = true)
// workaround for https://github.com/vector-im/element-android/issues/4735
views.createPollRecyclerView.setItemViewCacheSize(MAX_OPTIONS_COUNT + 4)
controller.callback = this
views.createPollClose.debouncedClicks {
requireActivity().finish()
}
views.createPollButton.debouncedClicks {
viewModel.handle(CreatePollAction.OnCreatePoll)
}

View file

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

View file

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

View file

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

View file

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

View file

@ -22,10 +22,8 @@ import android.content.Intent
import android.os.Bundle
import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
import im.vector.app.features.analytics.plan.Screen
@ -38,7 +36,7 @@ import kotlinx.coroutines.flow.onEach
* Simple container for [CreateRoomFragment]
*/
@AndroidEntryPoint
class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable {
class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>() {
private lateinit var sharedActionViewModel: RoomDirectorySharedActionViewModel
@ -46,10 +44,6 @@ class CreateRoomActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarC
override fun getCoordinatorLayout() = views.coordinatorLayout
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun initUiAndData() {
if (isFirstCreation()) {
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?) {
super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.createRoomToolbar)
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRoomJoinRuleSharedActionViewModel()
setupWaitingView()
setupRecyclerView()
views.createRoomClose.debouncedClicks {
sharedActionViewModel.post(RoomDirectorySharedAction.Back)
}
setupToolbar(views.createRoomToolbar)
.setTitle(if (args.isSpace) R.string.create_new_space else R.string.create_new_room)
.allowBack(useCross = true)
viewModel.observeViewEvents {
when (it) {
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() {
roomJoinRuleSharedActionViewModel = activityViewModelProvider.get(RoomJoinRuleSharedActionViewModel::class.java)
roomJoinRuleSharedActionViewModel

View file

@ -20,7 +20,6 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
@ -61,12 +60,9 @@ class RoomDirectoryPickerFragment @Inject constructor(private val roomDirectoryP
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.toolbar)
vectorBaseActivity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
setupToolbar(views.toolbar)
.setTitle(R.string.select_room_directory)
.allowBack()
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
setupRecyclerView()
@ -115,11 +111,6 @@ class RoomDirectoryPickerFragment @Inject constructor(private val roomDirectoryP
pickerViewModel.handle(RoomDirectoryPickerAction.RemoveServer(roomDirectoryServer))
}
override fun onResume() {
super.onResume()
(activity as? AppCompatActivity)?.supportActionBar?.setTitle(R.string.select_room_directory)
}
override fun retry() {
Timber.v("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.Intent
import android.os.Parcelable
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
import im.vector.app.features.roomdirectory.RoomDirectoryData
@ -53,7 +51,7 @@ data class RoomPreviewData(
}
@AndroidEntryPoint
class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable {
class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>() {
companion object {
private const val ARG = "ARG"
@ -83,10 +81,6 @@ class RoomPreviewActivity : VectorBaseActivity<ActivitySimpleBinding>(), Toolbar
override fun getCoordinatorLayout() = views.coordinatorLayout
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
override fun initUiAndData() {
if (isFirstCreation()) {
val args = intent.getParcelableExtra<RoomPreviewData>(ARG)

View file

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

View file

@ -22,19 +22,15 @@ import android.content.Intent
import android.widget.Toast
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
import im.vector.app.features.room.RequireActiveMembershipViewEvents
import im.vector.app.features.room.RequireActiveMembershipViewModel
@AndroidEntryPoint
class RoomMemberProfileActivity :
VectorBaseActivity<ActivitySimpleBinding>(),
ToolbarConfigurable {
class RoomMemberProfileActivity : VectorBaseActivity<ActivitySimpleBinding>() {
companion object {
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) {
if (roomLeft.leftMessage != null) {
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?) {
super.onViewCreated(view, savedInstanceState)
setupToolbar(views.matrixProfileToolbar)
.allowBack()
val headerView = views.matrixProfileHeaderView.let {
it.layoutResource = R.layout.view_stub_room_member_profile_header
it.inflate()

View file

@ -23,12 +23,10 @@ import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.addFragment
import im.vector.app.core.extensions.addFragmentToBackstack
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.databinding.ActivitySimpleBinding
import im.vector.app.features.home.room.detail.RoomDetailPendingActionStore
@ -47,8 +45,7 @@ import javax.inject.Inject
@AndroidEntryPoint
class RoomProfileActivity :
VectorBaseActivity<ActivitySimpleBinding>(),
ToolbarConfigurable {
VectorBaseActivity<ActivitySimpleBinding>() {
companion object {
@ -157,8 +154,4 @@ class RoomProfileActivity :
private fun openRoomNotificationSettings() {
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)
setupWaitingView()
setupToolbar(views.matrixProfileToolbar)
.allowBack()
setupRecyclerView()
appBarStateChangeListener = MatrixItemAppBarStateChangeListener(
headerView,

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -16,15 +16,13 @@
package im.vector.app.features.share
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
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.databinding.ActivitySimpleBinding
@AndroidEntryPoint
class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>(), ToolbarConfigurable {
class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>() {
override fun getBinding() = ActivitySimpleBinding.inflate(layoutInflater)
@ -35,8 +33,4 @@ class IncomingShareActivity : VectorBaseActivity<ActivitySimpleBinding>(), Toolb
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?) {
super.onViewCreated(view, savedInstanceState)
vectorBaseActivity.setSupportActionBar(views.toolbar)
setupToolbar(views.toolbar)
.allowBack()
vectorBaseActivity.supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
}
epoxyController.listener = this
views.spaceDirectoryList.configureWith(epoxyController)
epoxyVisibilityTracker.attach(views.spaceDirectoryList)
@ -166,13 +163,11 @@ class SpaceDirectoryFragment @Inject constructor(
if (currentParentId == null) {
// it's the root
val title = getString(R.string.space_explore_activity_title)
views.toolbar.title = title
toolbar?.setTitle(R.string.space_explore_activity_title)
} else {
val title = state.currentRootSummary?.name
toolbar?.title = state.currentRootSummary?.name
?: state.currentRootSummary?.canonicalAlias
?: getString(R.string.space_explore_activity_title)
views.toolbar.title = title
}
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.Success
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
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.replaceFragment
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.databinding.ActivitySimpleLoadingBinding
import im.vector.app.features.spaces.SpaceBottomSheetSettingsArgs
import javax.inject.Inject
@AndroidEntryPoint
class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>(),
ToolbarConfigurable {
class SpaceLeaveAdvancedActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>() {
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?) {
super.onViewCreated(view, savedInstanceState)
setupToolbar(views.toolbar)
.allowBack()
controller.listener = this
views.roomList.configureWith(controller)
views.spaceLeaveCancel.debouncedClicks { requireActivity().finish() }

View file

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

View file

@ -26,13 +26,11 @@ import androidx.lifecycle.lifecycleScope
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel
import com.airbnb.mvrx.withState
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R
import im.vector.app.core.extensions.addFragmentToBackstack
import im.vector.app.core.extensions.hideKeyboard
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.databinding.ActivitySimpleLoadingBinding
import im.vector.app.features.roomdirectory.RoomDirectorySharedAction
@ -53,8 +51,7 @@ data class SpaceManageArgs(
) : Parcelable
@AndroidEntryPoint
class SpaceManageActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>(),
ToolbarConfigurable {
class SpaceManageActivity : VectorBaseActivity<ActivitySimpleLoadingBinding>() {
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?) {
super.onViewCreated(view, savedInstanceState)
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
epoxyController.listener = this
views.roomList.configureWith(epoxyController, hasFixedSize = true, dividerDrawable = R.drawable.divider_horizontal)
@ -111,14 +114,15 @@ class SpaceManageRoomsFragment @Inject constructor(
epoxyController.setData(state)
state.spaceSummary.invoke()?.let {
views.appBarSpaceInfo.text = it.displayName
toolbar?.subtitle = it.displayName
}
if (state.selectedRooms.isNotEmpty()) {
if (currentActionMode == null) {
views.addRoomToSpaceToolbar.isVisible = true
vectorBaseActivity.startSupportActionMode(this)
} else {
currentActionMode?.title = "${state.selectedRooms.size} selected"
toolbar?.title = "${state.selectedRooms.size} selected"
}
// views.addRoomToSpaceToolbar.isVisible = false
// views.addRoomToSpaceToolbar.startActionMode(this)

View file

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

View file

@ -64,9 +64,9 @@ class SpacePeopleFragment @Inject constructor(
}
override fun invalidate() = withState(membersViewModel) { memberListState ->
views.appBarTitle.text = getString(R.string.bottom_action_people)
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
epoxyController.setData(memberListState)
}
@ -78,17 +78,12 @@ class SpacePeopleFragment @Inject constructor(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupToolbar(views.addRoomToSpaceToolbar)
.allowBack()
setupRecyclerView()
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 {
handleViewEvents(it)
}

View file

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

View file

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

View file

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

View file

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

View file

@ -22,11 +22,9 @@ import android.content.Intent
import androidx.core.view.isVisible
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.viewModel
import com.google.android.material.appbar.MaterialToolbar
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R
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.databinding.ActivityWidgetBinding
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
@AndroidEntryPoint
class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(),
ToolbarConfigurable {
class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>() {
companion object {
private const val WIDGET_FRAGMENT_TAG = "WIDGET_FRAGMENT_TAG"
@ -77,7 +74,8 @@ class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(),
finish()
return
}
configure(views.toolbar)
setupToolbar(views.toolbar)
.allowBack()
views.toolbar.isVisible = widgetArgs.kind.nameRes != 0
viewModel.observeViewEvents {
when (it) {
@ -129,8 +127,4 @@ class WidgetActivity : VectorBaseActivity<ActivityWidgetBinding>(),
}
finish()
}
override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}

View file

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

View file

@ -19,49 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/phoneBookToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/contacts_book_title"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/phoneBookFilterContainer"

View file

@ -19,49 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/createRoomToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/direct_chats_header" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/createDirectRoomSearchByIdContainer"

View file

@ -15,49 +15,7 @@
android:id="@+id/createPollToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:contentInsetStart="0dp">
<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>
app:title="@string/create_poll_title" />
</com.google.android.material.appbar.AppBarLayout>

View file

@ -19,46 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/createRoomToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/direct_chats_header" />
</com.google.android.material.appbar.AppBarLayout>

View file

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

View file

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

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -11,54 +10,13 @@
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toBottomOf="@id/appBarLayout">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/qrScannerToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/add_by_qr_code" />
</com.google.android.material.appbar.AppBarLayout>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -16,49 +15,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/qrScannerToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/user_code_scan" />
</com.google.android.material.appbar.AppBarLayout>
<me.dm7.barcodescanner.zxing.ZXingScannerView

View file

@ -27,42 +27,8 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="0dp"
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>
app:title="@string/bottom_action_people"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"/>
<androidx.appcompat.widget.SearchView
android:id="@+id/memberNameFilter"

View file

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

View file

@ -39,13 +39,13 @@
<TextView
android:id="@+id/roomPreviewNoPreviewToolbarTitle"
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:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -48,13 +48,13 @@
<TextView
android:id="@+id/roomSettingsToolbarTitleView"
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:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -46,13 +46,13 @@
<TextView
android:id="@+id/roomUploadsToolbarTitleView"
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:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -24,42 +24,8 @@
android:id="@+id/addRoomToSpaceToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="0dp">
<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>
android:minHeight="0dp"
app:title="@string/space_add_existing_rooms"/>
<androidx.appcompat.widget.SearchView
android:id="@+id/publicRoomsFilter"

View file

@ -25,30 +25,8 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="0dp"
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>
app:title="@string/pick_tings_to_leave"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap|enterAlways"/>
<androidx.appcompat.widget.SearchView
android:id="@+id/publicRoomsFilter"

View file

@ -41,13 +41,13 @@
<TextView
android:id="@+id/roomPreviewNoPreviewToolbarTitle"
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:textAppearance="@style/TextAppearance.Vector.Widget.ActionBarTitle"
android:textColor="?vctr_content_primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

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

View file

@ -19,46 +19,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/showUserCodeToolBar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/add_by_qr_code"/>
</com.google.android.material.appbar.AppBarLayout>

View file

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

View file

@ -14,49 +14,8 @@
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/userListToolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize">
<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>
android:layout_height="?actionBarSize"
app:title="@string/fab_menu_create_chat"/>
</com.google.android.material.appbar.AppBarLayout>