diff --git a/changelog.d/4884.misc b/changelog.d/4884.misc new file mode 100644 index 0000000000..3315aeba0c --- /dev/null +++ b/changelog.d/4884.misc @@ -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. \ No newline at end of file diff --git a/library/ui-styles/src/main/res/values/styles_toolbar.xml b/library/ui-styles/src/main/res/values/styles_toolbar.xml index 9f6ba102ed..505419c6fe 100644 --- a/library/ui-styles/src/main/res/values/styles_toolbar.xml +++ b/library/ui-styles/src/main/res/values/styles_toolbar.xml @@ -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> diff --git a/vector/src/main/java/im/vector/app/core/platform/SimpleFragmentActivity.kt b/vector/src/main/java/im/vector/app/core/platform/SimpleFragmentActivity.kt index a70b2d66e6..4cd7da2a4f 100644 --- a/vector/src/main/java/im/vector/app/core/platform/SimpleFragmentActivity.kt +++ b/vector/src/main/java/im/vector/app/core/platform/SimpleFragmentActivity.kt @@ -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 } diff --git a/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt b/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt deleted file mode 100644 index 9aca8dd17f..0000000000 --- a/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt +++ /dev/null @@ -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) -} diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt index 3dc17718c6..8164df9c55 100644 --- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt +++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt @@ -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() + } } diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt index f73002ff8d..8a1b9051cc 100644 --- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt +++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt @@ -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) } /* ========================================================================================== diff --git a/vector/src/main/java/im/vector/app/core/utils/ToolbarConfig.kt b/vector/src/main/java/im/vector/app/core/utils/ToolbarConfig.kt new file mode 100644 index 0000000000..60b4686a32 --- /dev/null +++ b/vector/src/main/java/im/vector/app/core/utils/ToolbarConfig.kt @@ -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) + } + } + } +} diff --git a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt index a52036011f..7ddba0d229 100644 --- a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt +++ b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt index 995dc3d5e8..22f1fc40a2 100644 --- a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt @@ -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()) diff --git a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt index c03b526f8c..959e96cc4c 100644 --- a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt @@ -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() } diff --git a/vector/src/main/java/im/vector/app/features/contactsbook/ContactsBookFragment.kt b/vector/src/main/java/im/vector/app/features/contactsbook/ContactsBookFragment.kt index 5310fccb3a..ebd0089736 100644 --- a/vector/src/main/java/im/vector/app/features/contactsbook/ContactsBookFragment.kt +++ b/vector/src/main/java/im/vector/app/features/contactsbook/ContactsBookFragment.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomByQrCodeFragment.kt b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomByQrCodeFragment.kt index 96401604f3..766a6f5156 100644 --- a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomByQrCodeFragment.kt +++ b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomByQrCodeFragment.kt @@ -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() { diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt index 59f20b8b0d..d9719cb28f 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt @@ -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 { diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt index 712055435f..a07409d063 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt @@ -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) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt index 9565f9ca62..9a7b8e64f7 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt @@ -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) { diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt index 3d38847c83..4e478e4269 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt @@ -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)) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchActivity.kt index bc1dc088df..eed596cda0 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchActivity.kt @@ -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() { diff --git a/vector/src/main/java/im/vector/app/features/home/room/filtered/FilteredRoomsActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/filtered/FilteredRoomsActivity.kt index dbfa319b86..0e16b4b0df 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/filtered/FilteredRoomsActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/filtered/FilteredRoomsActivity.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt index f1bf8ab4a9..edc77d73f6 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt @@ -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" diff --git a/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt index daa97d732f..ca21e96d20 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt @@ -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) { diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt index 080cce4958..ebe59ee1b9 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt @@ -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) { diff --git a/vector/src/main/java/im/vector/app/features/media/BigImageViewerActivity.kt b/vector/src/main/java/im/vector/app/features/media/BigImageViewerActivity.kt index 84454ee509..a6b166815c 100644 --- a/vector/src/main/java/im/vector/app/features/media/BigImageViewerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/media/BigImageViewerActivity.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingActivity.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingActivity.kt index f0cf9464a6..4165d4cb65 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingActivity.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingActivity.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt index d479439a0f..879830a1c0 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt @@ -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) } diff --git a/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt b/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt index ef79799074..faf15d8006 100644 --- a/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt +++ b/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/poll/create/CreatePollFragment.kt b/vector/src/main/java/im/vector/app/features/poll/create/CreatePollFragment.kt index 1d807654e8..62c7ec848f 100644 --- a/vector/src/main/java/im/vector/app/features/poll/create/CreatePollFragment.kt +++ b/vector/src/main/java/im/vector/app/features/poll/create/CreatePollFragment.kt @@ -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) } diff --git a/vector/src/main/java/im/vector/app/features/qrcode/QrCodeScannerFragment.kt b/vector/src/main/java/im/vector/app/features/qrcode/QrCodeScannerFragment.kt index 95d3ce4a07..a7231a0c5b 100644 --- a/vector/src/main/java/im/vector/app/features/qrcode/QrCodeScannerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/qrcode/QrCodeScannerFragment.kt @@ -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() { diff --git a/vector/src/main/java/im/vector/app/features/rageshake/BugReportActivity.kt b/vector/src/main/java/im/vector/app/features/rageshake/BugReportActivity.kt index 02df86e14b..0aec24f4ac 100755 --- a/vector/src/main/java/im/vector/app/features/rageshake/BugReportActivity.kt +++ b/vector/src/main/java/im/vector/app/features/rageshake/BugReportActivity.kt @@ -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) { diff --git a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt index dc10c89967..7062a5d02d 100644 --- a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt index aa29495b94..b6b8aa9653 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomsFragment.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt index a98d1c2aa6..339c819a65 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomFragment.kt index c14c6be2e0..2bd41ae3af 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomFragment.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt index 9eb08bf492..48610dda7b 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerFragment.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt index a317019d49..b69788b1ed 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt index 52617e2f1d..6d0195fae3 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -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) } } diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt index 2d925270b3..1b55207743 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt index 91d13b39ed..872f86d44b 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt index 7b92007692..4c6d2ed2e3 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt index eb27811f40..8acf53088d 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt @@ -109,6 +109,7 @@ class RoomProfileFragment @Inject constructor( headerViews = ViewStubRoomProfileHeaderBinding.bind(headerView) setupWaitingView() setupToolbar(views.matrixProfileToolbar) + .allowBack() setupRecyclerView() appBarStateChangeListener = MatrixItemAppBarStateChangeListener( headerView, diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt index 3128a590ce..e48ce54e6c 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasFragment.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt index c9fc889242..5cd4da009a 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt index ba7e020ebe..d7a9ecf39b 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/notifications/RoomNotificationSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/notifications/RoomNotificationSettingsFragment.kt index ce0fde32c6..320fdfd833 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/notifications/RoomNotificationSettingsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/notifications/RoomNotificationSettingsFragment.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/permissions/RoomPermissionsFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/permissions/RoomPermissionsFragment.kt index acf01321c9..0d5ac7dea8 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/permissions/RoomPermissionsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/permissions/RoomPermissionsFragment.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt index 3fa0bbaa5b..51f6b247d4 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/RoomUploadsFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/RoomUploadsFragment.kt index 52368594df..3c1a763072 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/RoomUploadsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/RoomUploadsFragment.kt @@ -74,6 +74,7 @@ class RoomUploadsFragment @Inject constructor( }.attach() setupToolbar(views.roomUploadsToolbar) + .allowBack() viewModel.observeViewEvents { when (it) { diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt index f502da24ff..725c4ceabc 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsActivity.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt index 294f1d4d91..439d9b64fa 100644 --- a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt +++ b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt index 2c7da43988..bbf6ac79ca 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt index 6076388289..a3ce8cea31 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedFragment.kt index b84f870f34..53c7481acb 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/leave/SpaceLeaveAdvancedFragment.kt @@ -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() } diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceAddRoomFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceAddRoomFragment.kt index 44de356521..bcf0a8a949 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceAddRoomFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceAddRoomFragment.kt @@ -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 { diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt index bf1b88c6bf..85f80960b0 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt @@ -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) - } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsFragment.kt index 125686d200..43657b6eb8 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageRoomsFragment.kt @@ -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) diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt index a3d0252c19..266d08fd12 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/spaces/people/SpacePeopleFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/people/SpacePeopleFragment.kt index c5cfed6974..5b2d6bed7b 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/people/SpacePeopleFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/people/SpacePeopleFragment.kt @@ -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) } diff --git a/vector/src/main/java/im/vector/app/features/usercode/ScanUserCodeFragment.kt b/vector/src/main/java/im/vector/app/features/usercode/ScanUserCodeFragment.kt index 389256871e..a7d632bd7b 100644 --- a/vector/src/main/java/im/vector/app/features/usercode/ScanUserCodeFragment.kt +++ b/vector/src/main/java/im/vector/app/features/usercode/ScanUserCodeFragment.kt @@ -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, _ -> diff --git a/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt b/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt index b794b23d0e..a31b0d3a25 100644 --- a/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt +++ b/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt @@ -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() diff --git a/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt b/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt index 721bce4af9..6ac6270fc7 100644 --- a/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt @@ -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) } diff --git a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt index ab7913a99c..fd26fff017 100644 --- a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt +++ b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt @@ -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 { diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt index 1e6d130c67..963bd9521c 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt @@ -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) - } } diff --git a/vector/src/main/res/layout/activity_call.xml b/vector/src/main/res/layout/activity_call.xml index 2238f96c9f..5734e5f92a 100644 --- a/vector/src/main/res/layout/activity_call.xml +++ b/vector/src/main/res/layout/activity_call.xml @@ -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 diff --git a/vector/src/main/res/layout/fragment_contacts_book.xml b/vector/src/main/res/layout/fragment_contacts_book.xml index ad23fc9f8f..ac983f9c6f 100644 --- a/vector/src/main/res/layout/fragment_contacts_book.xml +++ b/vector/src/main/res/layout/fragment_contacts_book.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml index 85c92c5225..ae0c743952 100644 --- a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml +++ b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_create_poll.xml b/vector/src/main/res/layout/fragment_create_poll.xml index 3a9baef270..a9e45649f4 100644 --- a/vector/src/main/res/layout/fragment_create_poll.xml +++ b/vector/src/main/res/layout/fragment_create_poll.xml @@ -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> diff --git a/vector/src/main/res/layout/fragment_create_room.xml b/vector/src/main/res/layout/fragment_create_room.xml index 5607f2be69..7deb1786e1 100644 --- a/vector/src/main/res/layout/fragment_create_room.xml +++ b/vector/src/main/res/layout/fragment_create_room.xml @@ -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> diff --git a/vector/src/main/res/layout/fragment_home_detail.xml b/vector/src/main/res/layout/fragment_home_detail.xml index 7bdcbca5d5..a53f001125 100644 --- a/vector/src/main/res/layout/fragment_home_detail.xml +++ b/vector/src/main/res/layout/fragment_home_detail.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_matrix_profile.xml b/vector/src/main/res/layout/fragment_matrix_profile.xml index f6f6af96ea..9d09e78eb3 100644 --- a/vector/src/main/res/layout/fragment_matrix_profile.xml +++ b/vector/src/main/res/layout/fragment_matrix_profile.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_qr_code_scanner.xml b/vector/src/main/res/layout/fragment_qr_code_scanner.xml index 59e732d0b8..c17c0d90da 100644 --- a/vector/src/main/res/layout/fragment_qr_code_scanner.xml +++ b/vector/src/main/res/layout/fragment_qr_code_scanner.xml @@ -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> diff --git a/vector/src/main/res/layout/fragment_qr_code_scanner_with_button.xml b/vector/src/main/res/layout/fragment_qr_code_scanner_with_button.xml index 68e8187f5d..88b07a7655 100644 --- a/vector/src/main/res/layout/fragment_qr_code_scanner_with_button.xml +++ b/vector/src/main/res/layout/fragment_qr_code_scanner_with_button.xml @@ -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 diff --git a/vector/src/main/res/layout/fragment_recyclerview_with_search.xml b/vector/src/main/res/layout/fragment_recyclerview_with_search.xml index 1ea9c0cbf4..4f7e78971c 100644 --- a/vector/src/main/res/layout/fragment_recyclerview_with_search.xml +++ b/vector/src/main/res/layout/fragment_recyclerview_with_search.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_room_detail.xml b/vector/src/main/res/layout/fragment_room_detail.xml index 81d515f28c..65c106d6f3 100644 --- a/vector/src/main/res/layout/fragment_room_detail.xml +++ b/vector/src/main/res/layout/fragment_room_detail.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_room_preview_no_preview.xml b/vector/src/main/res/layout/fragment_room_preview_no_preview.xml index a3210907b8..b21ee5aa69 100644 --- a/vector/src/main/res/layout/fragment_room_preview_no_preview.xml +++ b/vector/src/main/res/layout/fragment_room_preview_no_preview.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_room_setting_generic.xml b/vector/src/main/res/layout/fragment_room_setting_generic.xml index b342a2cbbb..887145faf5 100644 --- a/vector/src/main/res/layout/fragment_room_setting_generic.xml +++ b/vector/src/main/res/layout/fragment_room_setting_generic.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_room_uploads.xml b/vector/src/main/res/layout/fragment_room_uploads.xml index a38201d79e..4de5391ee3 100644 --- a/vector/src/main/res/layout/fragment_room_uploads.xml +++ b/vector/src/main/res/layout/fragment_room_uploads.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_space_add_rooms.xml b/vector/src/main/res/layout/fragment_space_add_rooms.xml index e622a7b4d9..c8ec4a78d1 100644 --- a/vector/src/main/res/layout/fragment_space_add_rooms.xml +++ b/vector/src/main/res/layout/fragment_space_add_rooms.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_space_leave_advanced.xml b/vector/src/main/res/layout/fragment_space_leave_advanced.xml index 2c50ebe001..6216636458 100644 --- a/vector/src/main/res/layout/fragment_space_leave_advanced.xml +++ b/vector/src/main/res/layout/fragment_space_leave_advanced.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_space_preview.xml b/vector/src/main/res/layout/fragment_space_preview.xml index f361bb7363..789c387db6 100644 --- a/vector/src/main/res/layout/fragment_space_preview.xml +++ b/vector/src/main/res/layout/fragment_space_preview.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_space_restricted_select.xml b/vector/src/main/res/layout/fragment_space_restricted_select.xml index 1f60e6851d..202df7c56c 100644 --- a/vector/src/main/res/layout/fragment_space_restricted_select.xml +++ b/vector/src/main/res/layout/fragment_space_restricted_select.xml @@ -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" /> diff --git a/vector/src/main/res/layout/fragment_user_code_show.xml b/vector/src/main/res/layout/fragment_user_code_show.xml index a19f426abd..59b60d1c3b 100644 --- a/vector/src/main/res/layout/fragment_user_code_show.xml +++ b/vector/src/main/res/layout/fragment_user_code_show.xml @@ -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> diff --git a/vector/src/main/res/layout/fragment_user_directory.xml b/vector/src/main/res/layout/fragment_user_directory.xml index 039f04f8e4..a75517c728 100644 --- a/vector/src/main/res/layout/fragment_user_directory.xml +++ b/vector/src/main/res/layout/fragment_user_directory.xml @@ -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" diff --git a/vector/src/main/res/layout/fragment_user_list.xml b/vector/src/main/res/layout/fragment_user_list.xml index ef5c6a7e6a..b3149f05c5 100644 --- a/vector/src/main/res/layout/fragment_user_list.xml +++ b/vector/src/main/res/layout/fragment_user_list.xml @@ -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>