Simple space context menu
This commit is contained in:
parent
06a84d985a
commit
681b5b3ddc
@ -80,6 +80,7 @@ import im.vector.app.features.signout.soft.SoftLogoutActivity
|
|||||||
import im.vector.app.features.spaces.ShareSpaceBottomSheet
|
import im.vector.app.features.spaces.ShareSpaceBottomSheet
|
||||||
import im.vector.app.features.spaces.SpaceCreationActivity
|
import im.vector.app.features.spaces.SpaceCreationActivity
|
||||||
import im.vector.app.features.spaces.SpaceExploreActivity
|
import im.vector.app.features.spaces.SpaceExploreActivity
|
||||||
|
import im.vector.app.features.spaces.SpaceSettingsMenuBottomSheet
|
||||||
import im.vector.app.features.terms.ReviewTermsActivity
|
import im.vector.app.features.terms.ReviewTermsActivity
|
||||||
import im.vector.app.features.ui.UiStateRepository
|
import im.vector.app.features.ui.UiStateRepository
|
||||||
import im.vector.app.features.usercode.UserCodeActivity
|
import im.vector.app.features.usercode.UserCodeActivity
|
||||||
@ -179,6 +180,7 @@ interface ScreenComponent {
|
|||||||
fun inject(bottomSheet: SignOutBottomSheetDialogFragment)
|
fun inject(bottomSheet: SignOutBottomSheetDialogFragment)
|
||||||
fun inject(bottomSheet: MatrixToBottomSheet)
|
fun inject(bottomSheet: MatrixToBottomSheet)
|
||||||
fun inject(bottomSheet: ShareSpaceBottomSheet)
|
fun inject(bottomSheet: ShareSpaceBottomSheet)
|
||||||
|
fun inject(bottomSheet: SpaceSettingsMenuBottomSheet)
|
||||||
|
|
||||||
/* ==========================================================================================
|
/* ==========================================================================================
|
||||||
* Others
|
* Others
|
||||||
|
@ -58,6 +58,7 @@ import im.vector.app.features.settings.VectorPreferences
|
|||||||
import im.vector.app.features.settings.VectorSettingsActivity
|
import im.vector.app.features.settings.VectorSettingsActivity
|
||||||
import im.vector.app.features.spaces.SpaceCreationActivity
|
import im.vector.app.features.spaces.SpaceCreationActivity
|
||||||
import im.vector.app.features.spaces.SpacePreviewActivity
|
import im.vector.app.features.spaces.SpacePreviewActivity
|
||||||
|
import im.vector.app.features.spaces.SpaceSettingsMenuBottomSheet
|
||||||
import im.vector.app.features.themes.ThemeUtils
|
import im.vector.app.features.themes.ThemeUtils
|
||||||
import im.vector.app.features.workers.signout.ServerBackupStatusViewModel
|
import im.vector.app.features.workers.signout.ServerBackupStatusViewModel
|
||||||
import im.vector.app.features.workers.signout.ServerBackupStatusViewState
|
import im.vector.app.features.workers.signout.ServerBackupStatusViewState
|
||||||
@ -164,6 +165,12 @@ class HomeActivity :
|
|||||||
is HomeActivitySharedAction.AddSpace -> {
|
is HomeActivitySharedAction.AddSpace -> {
|
||||||
createSpaceResultLauncher.launch(SpaceCreationActivity.newIntent(this))
|
createSpaceResultLauncher.launch(SpaceCreationActivity.newIntent(this))
|
||||||
}
|
}
|
||||||
|
is HomeActivitySharedAction.ShowSpaceSettings -> {
|
||||||
|
// open bottom sheet
|
||||||
|
SpaceSettingsMenuBottomSheet
|
||||||
|
.newInstance(sharedAction.spaceId)
|
||||||
|
.show(supportFragmentManager, "SPACE_SETTINGS")
|
||||||
|
}
|
||||||
}.exhaustive
|
}.exhaustive
|
||||||
}
|
}
|
||||||
.disposeOnDestroy()
|
.disposeOnDestroy()
|
||||||
|
@ -27,4 +27,5 @@ sealed class HomeActivitySharedAction : VectorSharedAction {
|
|||||||
object OpenGroup : HomeActivitySharedAction()
|
object OpenGroup : HomeActivitySharedAction()
|
||||||
object AddSpace : HomeActivitySharedAction()
|
object AddSpace : HomeActivitySharedAction()
|
||||||
data class OpenSpacePreview(val spaceId: String) : HomeActivitySharedAction()
|
data class OpenSpacePreview(val spaceId: String) : HomeActivitySharedAction()
|
||||||
|
data class ShowSpaceSettings(val spaceId: String) : HomeActivitySharedAction()
|
||||||
}
|
}
|
||||||
|
@ -300,6 +300,16 @@ class HomeDetailFragment @Inject constructor(
|
|||||||
views.groupToolbarAvatarImageView.debouncedClicks {
|
views.groupToolbarAvatarImageView.debouncedClicks {
|
||||||
sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer)
|
sharedActionViewModel.post(HomeActivitySharedAction.OpenDrawer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
views.homeToolbarContent.debouncedClicks {
|
||||||
|
withState(viewModel) {
|
||||||
|
val currentSpace = it.spaceSummary.orNull()
|
||||||
|
?.takeIf { it.roomId != ALL_COMMUNITIES_GROUP_ID }
|
||||||
|
if (vectorPreferences.labSpaces() && currentSpace != null) {
|
||||||
|
sharedActionViewModel.post(HomeActivitySharedAction.ShowSpaceSettings(currentSpace.roomId))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupBottomNavigationView() {
|
private fun setupBottomNavigationView() {
|
||||||
|
@ -54,6 +54,7 @@ class RoomProfileActivity :
|
|||||||
|
|
||||||
const val EXTRA_DIRECT_ACCESS_ROOM_ROOT = 0
|
const val EXTRA_DIRECT_ACCESS_ROOM_ROOT = 0
|
||||||
const val EXTRA_DIRECT_ACCESS_ROOM_SETTINGS = 1
|
const val EXTRA_DIRECT_ACCESS_ROOM_SETTINGS = 1
|
||||||
|
const val EXTRA_DIRECT_ACCESS_ROOM_MEMBERS = 2
|
||||||
|
|
||||||
fun newIntent(context: Context, roomId: String, directAccess: Int?): Intent {
|
fun newIntent(context: Context, roomId: String, directAccess: Int?): Intent {
|
||||||
val roomProfileArgs = RoomProfileArgs(roomId)
|
val roomProfileArgs = RoomProfileArgs(roomId)
|
||||||
@ -97,6 +98,9 @@ class RoomProfileActivity :
|
|||||||
addFragment(R.id.simpleFragmentContainer, RoomProfileFragment::class.java, roomProfileArgs)
|
addFragment(R.id.simpleFragmentContainer, RoomProfileFragment::class.java, roomProfileArgs)
|
||||||
addFragmentToBackstack(R.id.simpleFragmentContainer, RoomSettingsFragment::class.java, roomProfileArgs)
|
addFragmentToBackstack(R.id.simpleFragmentContainer, RoomSettingsFragment::class.java, roomProfileArgs)
|
||||||
}
|
}
|
||||||
|
EXTRA_DIRECT_ACCESS_ROOM_MEMBERS -> {
|
||||||
|
addFragment(R.id.simpleFragmentContainer, RoomMemberListFragment::class.java, roomProfileArgs)
|
||||||
|
}
|
||||||
else -> addFragment(R.id.simpleFragmentContainer, RoomProfileFragment::class.java, roomProfileArgs)
|
else -> addFragment(R.id.simpleFragmentContainer, RoomProfileFragment::class.java, roomProfileArgs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,8 +80,8 @@ class SpaceListFragment @Inject constructor(
|
|||||||
viewModel.handle(SpaceListAction.SelectSpace(spaceSummary))
|
viewModel.handle(SpaceListAction.SelectSpace(spaceSummary))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLeaveSpace(spaceSummary: RoomSummary) {
|
override fun onSpaceSettings(spaceSummary: RoomSummary) {
|
||||||
viewModel.handle(SpaceListAction.LeaveSpace(spaceSummary))
|
sharedActionViewModel.post(HomeActivitySharedAction.ShowSpaceSettings(spaceSummary.roomId))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onAddSpaceSelected() {
|
override fun onAddSpaceSelected() {
|
||||||
|
@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 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.features.spaces
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.os.Parcelable
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.core.view.isVisible
|
||||||
|
import com.airbnb.mvrx.args
|
||||||
|
import im.vector.app.R
|
||||||
|
import im.vector.app.core.di.ActiveSessionHolder
|
||||||
|
import im.vector.app.core.di.ScreenComponent
|
||||||
|
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
|
||||||
|
import im.vector.app.databinding.BottomSheetSpaceSettingsBinding
|
||||||
|
import im.vector.app.features.home.AvatarRenderer
|
||||||
|
import im.vector.app.features.navigation.Navigator
|
||||||
|
import im.vector.app.features.powerlevel.PowerLevelsObservableFactory
|
||||||
|
import im.vector.app.features.roomprofile.RoomProfileActivity
|
||||||
|
import im.vector.app.features.settings.VectorPreferences
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.parcelize.Parcelize
|
||||||
|
import org.matrix.android.sdk.api.session.room.powerlevels.PowerLevelsHelper
|
||||||
|
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||||
|
import org.matrix.android.sdk.internal.util.awaitCallback
|
||||||
|
import timber.log.Timber
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@Parcelize
|
||||||
|
data class SpaceBottomSheetSettingsArgs(
|
||||||
|
val spaceId: String
|
||||||
|
) : Parcelable
|
||||||
|
|
||||||
|
class SpaceSettingsMenuBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetSpaceSettingsBinding>() {
|
||||||
|
|
||||||
|
@Inject lateinit var navigator: Navigator
|
||||||
|
@Inject lateinit var activeSessionHolder: ActiveSessionHolder
|
||||||
|
@Inject lateinit var avatarRenderer: AvatarRenderer
|
||||||
|
@Inject lateinit var vectorPreferences: VectorPreferences
|
||||||
|
|
||||||
|
private val spaceArgs: SpaceBottomSheetSettingsArgs by args()
|
||||||
|
|
||||||
|
override fun injectWith(injector: ScreenComponent) {
|
||||||
|
injector.inject(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): BottomSheetSpaceSettingsBinding {
|
||||||
|
return BottomSheetSpaceSettingsBinding.inflate(inflater, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
val session = activeSessionHolder.getSafeActiveSession() ?: return
|
||||||
|
val roomSummary = session.getRoomSummary(spaceArgs.spaceId)
|
||||||
|
roomSummary?.let { roomSummary ->
|
||||||
|
avatarRenderer.renderSpace(roomSummary.toMatrixItem(), views.roomAvatarImageView)
|
||||||
|
views.roomNameView.text = roomSummary.displayName
|
||||||
|
views.roomDescription.text = roomSummary.topic
|
||||||
|
}
|
||||||
|
|
||||||
|
val room = session.getRoom(spaceArgs.spaceId) ?: return
|
||||||
|
|
||||||
|
PowerLevelsObservableFactory(room)
|
||||||
|
.createObservable()
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe { powerLevelContent ->
|
||||||
|
val powerLevelsHelper = PowerLevelsHelper(powerLevelContent)
|
||||||
|
val canInvite = powerLevelsHelper.isUserAbleToInvite(session.myUserId)
|
||||||
|
views.invitePeople.isVisible = canInvite
|
||||||
|
}.disposeOnDestroyView()
|
||||||
|
|
||||||
|
views.invitePeople.views.bottomSheetActionClickableZone.debouncedClicks {
|
||||||
|
navigator.openInviteUsersToRoom(requireContext(), spaceArgs.spaceId)
|
||||||
|
}
|
||||||
|
|
||||||
|
views.showMemberList.views.bottomSheetActionClickableZone.debouncedClicks {
|
||||||
|
navigator.openRoomProfile(requireContext(), spaceArgs.spaceId, RoomProfileActivity.EXTRA_DIRECT_ACCESS_ROOM_MEMBERS)
|
||||||
|
}
|
||||||
|
|
||||||
|
views.spaceSettings.isVisible = vectorPreferences.developerMode()
|
||||||
|
views.spaceSettings.views.bottomSheetActionClickableZone.debouncedClicks {
|
||||||
|
navigator.openRoomProfile(requireContext(), spaceArgs.spaceId)
|
||||||
|
}
|
||||||
|
|
||||||
|
views.exploreRooms.views.bottomSheetActionClickableZone.debouncedClicks {
|
||||||
|
startActivity(SpaceExploreActivity.newIntent(requireContext(), spaceArgs.spaceId))
|
||||||
|
}
|
||||||
|
|
||||||
|
views.leaveSpace.views.bottomSheetActionClickableZone.debouncedClicks {
|
||||||
|
AlertDialog.Builder(requireContext())
|
||||||
|
.setMessage(getString(R.string.space_leave_prompt_msg))
|
||||||
|
.setPositiveButton(R.string.leave) { _, _ ->
|
||||||
|
GlobalScope.launch {
|
||||||
|
try {
|
||||||
|
awaitCallback {
|
||||||
|
session.getRoom(spaceArgs.spaceId)?.leave(null, it)
|
||||||
|
}
|
||||||
|
} catch (failure: Throwable) {
|
||||||
|
Timber.e(failure, "Failed to leave space")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.cancel, null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance(spaceId: String): SpaceSettingsMenuBottomSheet {
|
||||||
|
return SpaceSettingsMenuBottomSheet().apply {
|
||||||
|
setArguments(SpaceBottomSheetSettingsArgs(spaceId))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -102,7 +102,7 @@ class SpaceSummaryController @Inject constructor(
|
|||||||
id(groupSummary.roomId)
|
id(groupSummary.roomId)
|
||||||
matrixItem(groupSummary.toMatrixItem())
|
matrixItem(groupSummary.toMatrixItem())
|
||||||
selected(isSelected)
|
selected(isSelected)
|
||||||
onLeave { callback?.onLeaveSpace(groupSummary) }
|
onMore { callback?.onSpaceSettings(groupSummary) }
|
||||||
listener { callback?.onSpaceSelected(groupSummary) }
|
listener { callback?.onSpaceSelected(groupSummary) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ class SpaceSummaryController @Inject constructor(
|
|||||||
|
|
||||||
interface Callback {
|
interface Callback {
|
||||||
fun onSpaceSelected(spaceSummary: RoomSummary)
|
fun onSpaceSelected(spaceSummary: RoomSummary)
|
||||||
fun onLeaveSpace(spaceSummary: RoomSummary)
|
fun onSpaceSettings(spaceSummary: RoomSummary)
|
||||||
fun onAddSpaceSelected()
|
fun onAddSpaceSelected()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ abstract class SpaceSummaryItem : VectorEpoxyModel<SpaceSummaryItem.Holder>() {
|
|||||||
@EpoxyAttribute lateinit var matrixItem: MatrixItem
|
@EpoxyAttribute lateinit var matrixItem: MatrixItem
|
||||||
@EpoxyAttribute var selected: Boolean = false
|
@EpoxyAttribute var selected: Boolean = false
|
||||||
@EpoxyAttribute var listener: (() -> Unit)? = null
|
@EpoxyAttribute var listener: (() -> Unit)? = null
|
||||||
@EpoxyAttribute var onLeave: (() -> Unit)? = null
|
@EpoxyAttribute var onMore: (() -> Unit)? = null
|
||||||
@EpoxyAttribute var toggleExpand: (() -> Unit)? = null
|
@EpoxyAttribute var toggleExpand: (() -> Unit)? = null
|
||||||
@EpoxyAttribute var expanded: Boolean? = null
|
@EpoxyAttribute var expanded: Boolean? = null
|
||||||
|
|
||||||
@ -47,14 +47,14 @@ abstract class SpaceSummaryItem : VectorEpoxyModel<SpaceSummaryItem.Holder>() {
|
|||||||
holder.rootView.setOnClickListener { listener?.invoke() }
|
holder.rootView.setOnClickListener { listener?.invoke() }
|
||||||
holder.groupNameView.text = matrixItem.displayName
|
holder.groupNameView.text = matrixItem.displayName
|
||||||
holder.rootView.isChecked = selected
|
holder.rootView.isChecked = selected
|
||||||
if (onLeave != null) {
|
if (onMore != null) {
|
||||||
holder.leaveView.setOnClickListener(
|
holder.moreView.setOnClickListener(
|
||||||
DebouncedClickListener({ _ ->
|
DebouncedClickListener({ _ ->
|
||||||
onLeave?.invoke()
|
onMore?.invoke()
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
holder.leaveView.isVisible = false
|
holder.moreView.isVisible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
when (expanded) {
|
when (expanded) {
|
||||||
@ -88,7 +88,7 @@ abstract class SpaceSummaryItem : VectorEpoxyModel<SpaceSummaryItem.Holder>() {
|
|||||||
val avatarImageView by bind<ImageView>(R.id.groupAvatarImageView)
|
val avatarImageView by bind<ImageView>(R.id.groupAvatarImageView)
|
||||||
val groupNameView by bind<TextView>(R.id.groupNameView)
|
val groupNameView by bind<TextView>(R.id.groupNameView)
|
||||||
val rootView by bind<CheckableConstraintLayout>(R.id.itemGroupLayout)
|
val rootView by bind<CheckableConstraintLayout>(R.id.itemGroupLayout)
|
||||||
val leaveView by bind<ImageView>(R.id.groupTmpLeave)
|
val moreView by bind<ImageView>(R.id.groupTmpLeave)
|
||||||
val collapseIndicator by bind<ImageView>(R.id.groupChildrenCollapse)
|
val collapseIndicator by bind<ImageView>(R.id.groupChildrenCollapse)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
13
vector/src/main/res/drawable/ic_explore.xml
Normal file
13
vector/src/main/res/drawable/ic_explore.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:pathData="M22.6667,12C22.6667,17.8911 17.8911,22.6667 12,22.6667C6.109,22.6667 1.3333,17.8911 1.3333,12C1.3333,6.109 6.109,1.3334 12,1.3334C17.8911,1.3334 22.6667,6.109 22.6667,12ZM17.8333,7.1022C18.0778,6.5711 17.4288,5.9221 16.8977,6.1666L10.2263,9.238C9.7853,9.4411 9.4402,9.7861 9.2372,10.2271L6.1657,16.8986C5.9212,17.4297 6.5702,18.0787 7.1013,17.8341L13.7727,14.7627C14.2137,14.5597 14.5588,14.2146 14.7618,13.7736L17.8333,7.1022Z"
|
||||||
|
android:fillColor="#737D8C"
|
||||||
|
android:fillType="evenOdd"/>
|
||||||
|
<path
|
||||||
|
android:pathData="M13.178,13.1789C12.5271,13.8298 11.4719,13.8298 10.821,13.1789C10.1701,12.528 10.1701,11.4727 10.821,10.8219C11.4719,10.171 12.5271,10.171 13.178,10.8219C13.8289,11.4727 13.8289,12.528 13.178,13.1789Z"
|
||||||
|
android:fillColor="#737D8C"/>
|
||||||
|
</vector>
|
120
vector/src/main/res/layout/bottom_sheet_space_settings.xml
Normal file
120
vector/src/main/res/layout/bottom_sheet_space_settings.xml
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout 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:id="@+id/callControlsWrapper"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?riotx_bottom_sheet_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingEnd="8dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/roomAvatarImageView"
|
||||||
|
android:layout_width="40dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:contentDescription="@string/avatar"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:src="@tools:sample/avatars" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/roomNameView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/layout_horizontal_margin"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:duplicateParentState="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="?riotx_text_primary"
|
||||||
|
android:textSize="15sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/roomAvatarImageView"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="@sample/matrix.json/data/displayName" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/roomDescription"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/layout_horizontal_margin"
|
||||||
|
android:layout_marginTop="3dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="?riotx_text_secondary"
|
||||||
|
android:textSize="15sp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/roomAvatarImageView"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/roomNameView"
|
||||||
|
tools:text="@sample/matrix.json/data/message" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="?vctr_list_divider_color" />
|
||||||
|
|
||||||
|
<im.vector.app.core.ui.views.BottomSheetActionButton
|
||||||
|
android:id="@+id/invitePeople"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:actionTitle="@string/invite_people_menu"
|
||||||
|
app:leftIcon="@drawable/ic_invite_people"
|
||||||
|
app:tint="?attr/riotx_text_primary"
|
||||||
|
app:titleTextColor="?attr/riotx_text_primary" />
|
||||||
|
|
||||||
|
<im.vector.app.core.ui.views.BottomSheetActionButton
|
||||||
|
android:id="@+id/showMemberList"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:actionTitle="@string/list_members"
|
||||||
|
app:leftIcon="@drawable/ic_room_profile_member_list"
|
||||||
|
app:tint="?attr/riotx_text_primary"
|
||||||
|
app:titleTextColor="?attr/riotx_text_primary" />
|
||||||
|
|
||||||
|
|
||||||
|
<im.vector.app.core.ui.views.BottomSheetActionButton
|
||||||
|
android:id="@+id/spaceSettings"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:actionTitle="@string/settings"
|
||||||
|
app:leftIcon="@drawable/ic_settings_root_general"
|
||||||
|
app:tint="?attr/riotx_text_primary"
|
||||||
|
app:titleTextColor="?attr/riotx_text_primary" />
|
||||||
|
|
||||||
|
<im.vector.app.core.ui.views.BottomSheetActionButton
|
||||||
|
android:id="@+id/exploreRooms"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:actionTitle="@string/space_explore_activity_title"
|
||||||
|
app:leftIcon="@drawable/ic_explore"
|
||||||
|
app:tint="?attr/riotx_text_primary"
|
||||||
|
app:titleTextColor="?attr/riotx_text_primary"
|
||||||
|
tools:actionDescription="" />
|
||||||
|
|
||||||
|
<im.vector.app.core.ui.views.BottomSheetActionButton
|
||||||
|
android:id="@+id/leaveSpace"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:actionTitle="@string/leave_space"
|
||||||
|
app:leftIcon="@drawable/ic_room_actions_leave"
|
||||||
|
app:tint="@color/riotx_destructive_accent"
|
||||||
|
app:titleTextColor="@color/riotx_destructive_accent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -35,6 +35,7 @@
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="start"
|
android:gravity="start"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
android:id="@+id/homeToolbarContent"
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingEnd="8dp">
|
android:paddingEnd="8dp">
|
||||||
|
|
||||||
|
@ -66,8 +66,8 @@
|
|||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:importantForAccessibility="no"
|
android:importantForAccessibility="no"
|
||||||
android:src="@drawable/ic_room_actions_leave"
|
android:src="@drawable/ic_more_vertical"
|
||||||
app:tint="@color/riotx_destructive_accent"
|
app:tint="?riotx_text_secondary"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@id/groupAvatarChevron"
|
app:layout_constraintEnd_toStartOf="@id/groupAvatarChevron"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
@ -3281,6 +3281,7 @@
|
|||||||
<string name="create_spaces_default_public_random_room_name">Random</string>
|
<string name="create_spaces_default_public_random_room_name">Random</string>
|
||||||
<string name="create_spaces_loading_message">Creating Space…</string>
|
<string name="create_spaces_loading_message">Creating Space…</string>
|
||||||
<string name="invite_people_to_your_space">Invite people to your space</string>
|
<string name="invite_people_to_your_space">Invite people to your space</string>
|
||||||
|
<string name="invite_people_menu">Invite people</string>
|
||||||
<string name="invite_people_to_your_space_desc">It’s just you at the moment. %s will be even better with others.</string>
|
<string name="invite_people_to_your_space_desc">It’s just you at the moment. %s will be even better with others.</string>
|
||||||
<string name="invite_by_email">Invite by email</string>
|
<string name="invite_by_email">Invite by email</string>
|
||||||
<string name="invite_by_mxid">Invite by username</string>
|
<string name="invite_by_mxid">Invite by username</string>
|
||||||
@ -3295,4 +3296,6 @@
|
|||||||
<string name="suggested_rooms_pills_on_empty_text">You’re not in any rooms yet. Below are some suggested rooms, but you can see more with the green button bottom right.</string>
|
<string name="suggested_rooms_pills_on_empty_text">You’re not in any rooms yet. Below are some suggested rooms, but you can see more with the green button bottom right.</string>
|
||||||
|
|
||||||
<string name="space_explore_activity_title">Explore rooms</string>
|
<string name="space_explore_activity_title">Explore rooms</string>
|
||||||
|
<string name="leave_space">Leave Space</string>
|
||||||
|
<string name="space_leave_prompt_msg">Are you sure you want to leave the space?</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user