diff --git a/vector/src/main/java/im/vector/app/core/epoxy/bottomsheet/BottomSheetRadioActionItem.kt b/vector/src/main/java/im/vector/app/core/epoxy/bottomsheet/BottomSheetRadioActionItem.kt new file mode 100644 index 0000000000..6ca1182cce --- /dev/null +++ b/vector/src/main/java/im/vector/app/core/epoxy/bottomsheet/BottomSheetRadioActionItem.kt @@ -0,0 +1,80 @@ +/* + * 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.epoxy.bottomsheet + +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import im.vector.app.R +import im.vector.app.core.epoxy.VectorEpoxyHolder +import im.vector.app.core.epoxy.VectorEpoxyModel +import im.vector.app.core.extensions.setTextOrHide + +/** + * A action for bottom sheet. + */ +@EpoxyModelClass(layout = R.layout.item_bottom_sheet_radio) +abstract class BottomSheetRadioActionItem : VectorEpoxyModel() { + + @EpoxyAttribute + var title: CharSequence? = null + + @StringRes + @EpoxyAttribute + var titleRes: Int? = null + + @EpoxyAttribute + var selected = false + + @EpoxyAttribute + var description: CharSequence? = null + + @EpoxyAttribute + lateinit var listener: View.OnClickListener + + override fun bind(holder: Holder) { + super.bind(holder) + holder.view.setOnClickListener { + listener.onClick(it) + } + + if (titleRes != null) { + holder.titleText.setText(titleRes!!) + } else { + holder.titleText.text = title + } + holder.descriptionText.setTextOrHide(description) + + if (selected) { + holder.radioImage.setImageDrawable(ContextCompat.getDrawable(holder.view.context, R.drawable.ic_radio_on)) + holder.radioImage.contentDescription = holder.view.context.getString(R.string.a11y_checked) + } else { + holder.radioImage.setImageDrawable(ContextCompat.getDrawable(holder.view.context, R.drawable.ic_radio_off)) + holder.radioImage.contentDescription = holder.view.context.getString(R.string.a11y_unchecked) + } + } + + class Holder : VectorEpoxyHolder() { + val titleText by bind(R.id.actionTitle) + val descriptionText by bind(R.id.actionDescription) + val radioImage by bind(R.id.radioIcon) + } +} diff --git a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGeneric.kt b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGeneric.kt index f8f345f09d..e773993b21 100644 --- a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGeneric.kt +++ b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGeneric.kt @@ -32,7 +32,7 @@ import javax.inject.Inject /** * Generic Bottom sheet with actions */ -abstract class BottomSheetGeneric : +abstract class BottomSheetGeneric : VectorBaseBottomSheetDialogFragment(), BottomSheetGenericController.Listener { diff --git a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericController.kt b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericController.kt index 67347c3220..c5e0c51047 100644 --- a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericController.kt +++ b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericController.kt @@ -17,12 +17,11 @@ package im.vector.app.core.ui.bottomsheet import android.view.View import com.airbnb.epoxy.TypedEpoxyController -import im.vector.app.core.epoxy.dividerItem /** * Epoxy controller for generic bottom sheet actions */ -abstract class BottomSheetGenericController +abstract class BottomSheetGenericController : TypedEpoxyController() { var listener: Listener? = null @@ -43,16 +42,14 @@ abstract class BottomSheetGenericController 0 } actions.forEach { action -> - action.toBottomSheetItem() - .showIcon(showIcons) + action.toRadioBottomSheetItem() .listener(View.OnClickListener { listener?.didSelectAction(action) }) .addTo(this) } diff --git a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericAction.kt b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericRadioAction.kt similarity index 56% rename from vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericAction.kt rename to vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericRadioAction.kt index da48accf35..168e5edc44 100644 --- a/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericAction.kt +++ b/vector/src/main/java/im/vector/app/core/ui/bottomsheet/BottomSheetGenericRadioAction.kt @@ -16,27 +16,24 @@ package im.vector.app.core.ui.bottomsheet -import androidx.annotation.DrawableRes -import im.vector.app.core.epoxy.bottomsheet.BottomSheetActionItem_ +import im.vector.app.core.epoxy.bottomsheet.BottomSheetRadioActionItem_ import im.vector.app.core.platform.VectorSharedAction /** * Parent class for a bottom sheet action */ -open class BottomSheetGenericAction( - open val title: String, - @DrawableRes open val iconResId: Int, - open val isSelected: Boolean, - open val destructive: Boolean +open class BottomSheetGenericRadioAction( + open val title: CharSequence?, + open val description: String? = null, + open val isSelected: Boolean ) : VectorSharedAction { - fun toBottomSheetItem(): BottomSheetActionItem_ { - return BottomSheetActionItem_().apply { - id("action_$title") - iconRes(iconResId) - text(title) - selected(isSelected) - destructive(destructive) + fun toRadioBottomSheetItem(): BottomSheetRadioActionItem_ { + return BottomSheetRadioActionItem_().apply { + id("action_${this@BottomSheetGenericRadioAction.title}") + title(this@BottomSheetGenericRadioAction.title) + selected(this@BottomSheetGenericRadioAction.isSelected) + description(this@BottomSheetGenericRadioAction.description) } } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt index 867c605030..9f550ecbca 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsAction.kt @@ -17,7 +17,6 @@ package im.vector.app.features.roomprofile.settings import im.vector.app.core.platform.VectorViewModelAction -import org.matrix.android.sdk.api.session.room.model.GuestAccess import org.matrix.android.sdk.api.session.room.model.RoomHistoryVisibility import org.matrix.android.sdk.api.session.room.model.RoomJoinRules @@ -26,7 +25,7 @@ sealed class RoomSettingsAction : VectorViewModelAction { data class SetRoomName(val newName: String) : RoomSettingsAction() data class SetRoomTopic(val newTopic: String) : RoomSettingsAction() data class SetRoomHistoryVisibility(val visibility: RoomHistoryVisibility) : RoomSettingsAction() - data class SetRoomJoinRule(val roomJoinRule: RoomJoinRules?, val roomGuestAccess: GuestAccess?) : RoomSettingsAction() + data class SetRoomJoinRule(val roomJoinRule: RoomJoinRules?) : RoomSettingsAction() object Save : RoomSettingsAction() object Cancel : RoomSettingsAction() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt index 755dcc4a25..6b7a9139db 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsController.kt @@ -26,7 +26,6 @@ import im.vector.app.features.form.formEditTextItem import im.vector.app.features.form.formEditableAvatarItem import im.vector.app.features.home.AvatarRenderer import im.vector.app.features.home.room.detail.timeline.format.RoomHistoryVisibilityFormatter -import org.matrix.android.sdk.api.session.room.model.GuestAccess import org.matrix.android.sdk.api.session.room.model.RoomJoinRules import org.matrix.android.sdk.api.util.toMatrixItem import javax.inject.Inject @@ -127,37 +126,23 @@ class RoomSettingsController @Inject constructor( private fun RoomSettingsViewState.getJoinRuleWording(): String { val joinRule = newRoomJoinRules.newJoinRules ?: currentRoomJoinRules - val guestAccess = newRoomJoinRules.newGuestAccess ?: currentGuestAccess val resId = when (joinRule) { - RoomJoinRules.INVITE -> { - R.string.room_settings_room_access_entry_only_invited to null + RoomJoinRules.INVITE -> { + R.string.room_settings_room_access_private_title to null } - RoomJoinRules.PRIVATE -> { - R.string.room_settings_room_access_entry_unknown to joinRule.value + RoomJoinRules.PUBLIC -> { + R.string.room_settings_room_access_public_title to null } - RoomJoinRules.PUBLIC -> { - if (guestAccess == GuestAccess.CanJoin) { - R.string.room_settings_room_access_entry_anyone_with_link_including_guest to null - } else { - R.string.room_settings_room_access_entry_anyone_with_link_apart_guest to null - } - } - RoomJoinRules.KNOCK -> { + RoomJoinRules.KNOCK -> { R.string.room_settings_room_access_entry_knock to null } RoomJoinRules.RESTRICTED -> { - R.string.room_settings_room_access_entry_restricted to null + R.string.room_settings_room_access_restricted_title to null + } + else -> { + R.string.room_settings_room_access_entry_unknown to joinRule.value } } return if (resId.second == null) stringProvider.getString(resId.first) else stringProvider.getString(resId.first, resId.second) -// return stringProvider.getString(if (joinRule == RoomJoinRules.INVITE) { -// R.string.room_settings_room_access_entry_only_invited -// } else { -// if (guestAccess == GuestAccess.CanJoin) { -// R.string.room_settings_room_access_entry_anyone_with_link_including_guest -// } else { -// R.string.room_settings_room_access_entry_anyone_with_link_apart_guest -// } -// }) } } 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 129888ee04..dab99c388e 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 @@ -104,7 +104,7 @@ class RoomSettingsFragment @Inject constructor( roomJoinRuleSharedActionViewModel .observe() .subscribe { action -> - viewModel.handle(RoomSettingsAction.SetRoomJoinRule(action.roomJoinRule, action.roomGuestAccess)) + viewModel.handle(RoomSettingsAction.SetRoomJoinRule(action.roomJoinRule)) } .disposeOnDestroyView() } @@ -176,8 +176,7 @@ class RoomSettingsFragment @Inject constructor( override fun onJoinRuleClicked() = withState(viewModel) { state -> val currentJoinRule = state.newRoomJoinRules.newJoinRules ?: state.currentRoomJoinRules - val currentGuestAccess = state.newRoomJoinRules.newGuestAccess ?: state.currentGuestAccess - RoomJoinRuleBottomSheet.newInstance(currentJoinRule, currentGuestAccess) + RoomJoinRuleBottomSheet.newInstance(currentJoinRule) .show(childFragmentManager, "RoomJoinRuleBottomSheet") } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt index bf227ea5e8..93814d3062 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsViewModel.kt @@ -198,8 +198,7 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState: private fun handleSetRoomJoinRule(action: RoomSettingsAction.SetRoomJoinRule) = withState { state -> setState { copy(newRoomJoinRules = RoomSettingsViewState.NewJoinRule( - action.roomJoinRule.takeIf { it != state.currentRoomJoinRules }, - action.roomGuestAccess.takeIf { it != state.currentGuestAccess } + action.roomJoinRule.takeIf { it != state.currentRoomJoinRules } )) } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityBottomSheet.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityBottomSheet.kt index 76d7115f30..4089139b78 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityBottomSheet.kt @@ -33,7 +33,7 @@ data class RoomHistoryVisibilityBottomSheetArgs( val currentRoomHistoryVisibility: RoomHistoryVisibility ) : Parcelable -class RoomHistoryVisibilityBottomSheet : BottomSheetGeneric() { +class RoomHistoryVisibilityBottomSheet : BottomSheetGeneric() { private lateinit var roomHistoryVisibilitySharedActionViewModel: RoomHistoryVisibilitySharedActionViewModel @Inject lateinit var controller: RoomHistoryVisibilityController @@ -43,14 +43,14 @@ class RoomHistoryVisibilityBottomSheet : BottomSheetGeneric = controller + override fun getController(): BottomSheetGenericController = controller override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) roomHistoryVisibilitySharedActionViewModel = activityViewModelProvider.get(RoomHistoryVisibilitySharedActionViewModel::class.java) } - override fun didSelectAction(action: RoomHistoryVisibilityAction) { + override fun didSelectAction(action: RoomHistoryVisibilityRadioAction) { roomHistoryVisibilitySharedActionViewModel.post(action) dismiss() } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityController.kt index a4899711f7..16aa456f69 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityController.kt @@ -26,13 +26,13 @@ import javax.inject.Inject class RoomHistoryVisibilityController @Inject constructor( private val historyVisibilityFormatter: RoomHistoryVisibilityFormatter, private val stringProvider: StringProvider -) : BottomSheetGenericController() { +) : BottomSheetGenericController() { override fun getTitle() = stringProvider.getString(R.string.room_settings_room_read_history_rules_pref_dialog_title) override fun getSubTitle() = stringProvider.getString(R.string.room_settings_room_read_history_dialog_subtitle) - override fun getActions(state: RoomHistoryVisibilityState): List { + override fun getActions(state: RoomHistoryVisibilityState): List { return listOf( RoomHistoryVisibility.WORLD_READABLE, RoomHistoryVisibility.SHARED, @@ -40,10 +40,9 @@ class RoomHistoryVisibilityController @Inject constructor( RoomHistoryVisibility.JOINED ) .map { roomHistoryVisibility -> - RoomHistoryVisibilityAction( + RoomHistoryVisibilityRadioAction( roomHistoryVisibility = roomHistoryVisibility, title = historyVisibilityFormatter.getSetting(roomHistoryVisibility), - iconResId = 0, isSelected = roomHistoryVisibility == state.currentRoomHistoryVisibility ) } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityRadioAction.kt similarity index 72% rename from vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityAction.kt rename to vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityRadioAction.kt index 3c989a7dbe..6a5ae24ca5 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityAction.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilityRadioAction.kt @@ -16,18 +16,14 @@ package im.vector.app.features.roomprofile.settings.historyvisibility -import androidx.annotation.DrawableRes -import im.vector.app.core.ui.bottomsheet.BottomSheetGenericAction +import im.vector.app.core.ui.bottomsheet.BottomSheetGenericRadioAction import org.matrix.android.sdk.api.session.room.model.RoomHistoryVisibility -class RoomHistoryVisibilityAction( +class RoomHistoryVisibilityRadioAction( val roomHistoryVisibility: RoomHistoryVisibility, - title: String, - @DrawableRes iconResId: Int, + title: String?, isSelected: Boolean -) : BottomSheetGenericAction( +) : BottomSheetGenericRadioAction( title = title, - iconResId = iconResId, - isSelected = isSelected, - destructive = false + isSelected = isSelected ) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilitySharedActionViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilitySharedActionViewModel.kt index 31c1c2631c..4f1bdca194 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilitySharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/historyvisibility/RoomHistoryVisibilitySharedActionViewModel.kt @@ -20,4 +20,4 @@ import im.vector.app.core.platform.VectorSharedActionViewModel import javax.inject.Inject class RoomHistoryVisibilitySharedActionViewModel @Inject constructor() - : VectorSharedActionViewModel() + : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleBottomSheet.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleBottomSheet.kt index c6cb676e1f..d2e338d077 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleBottomSheet.kt @@ -25,17 +25,15 @@ import im.vector.app.core.di.ScreenComponent import im.vector.app.core.ui.bottomsheet.BottomSheetGeneric import im.vector.app.core.ui.bottomsheet.BottomSheetGenericController import kotlinx.parcelize.Parcelize -import org.matrix.android.sdk.api.session.room.model.GuestAccess import org.matrix.android.sdk.api.session.room.model.RoomJoinRules import javax.inject.Inject @Parcelize data class RoomJoinRuleBottomSheetArgs( - val currentRoomJoinRule: RoomJoinRules, - val currentGuestAccess: GuestAccess? + val currentRoomJoinRule: RoomJoinRules ) : Parcelable -class RoomJoinRuleBottomSheet : BottomSheetGeneric() { +class RoomJoinRuleBottomSheet : BottomSheetGeneric() { private lateinit var roomJoinRuleSharedActionViewModel: RoomJoinRuleSharedActionViewModel @Inject lateinit var controller: RoomJoinRuleController @@ -45,14 +43,14 @@ class RoomJoinRuleBottomSheet : BottomSheetGeneric = controller + override fun getController(): BottomSheetGenericController = controller override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) roomJoinRuleSharedActionViewModel = activityViewModelProvider.get(RoomJoinRuleSharedActionViewModel::class.java) } - override fun didSelectAction(action: RoomJoinRuleAction) { + override fun didSelectAction(action: RoomJoinRuleRadioAction) { roomJoinRuleSharedActionViewModel.post(action) dismiss() } @@ -63,9 +61,9 @@ class RoomJoinRuleBottomSheet : BottomSheetGeneric() { + private val stringProvider: StringProvider, + private val drawableProvider: DrawableProvider +) : BottomSheetGenericController() { override fun getTitle() = stringProvider.getString(R.string.room_settings_room_access_rules_pref_dialog_title) - override fun getActions(state: RoomJoinRuleState): List { + override fun getActions(state: RoomJoinRuleState): List { return listOf( - RoomJoinRuleAction( + RoomJoinRuleRadioAction( roomJoinRule = RoomJoinRules.INVITE, - roomGuestAccess = null, - title = stringProvider.getString(R.string.room_settings_room_access_entry_only_invited), - iconResId = 0, + description = stringProvider.getString(R.string.room_settings_room_access_private_description), + title = stringProvider.getString(R.string.room_settings_room_access_private_title), isSelected = state.currentRoomJoinRule == RoomJoinRules.INVITE ), - RoomJoinRuleAction( + RoomJoinRuleRadioAction( roomJoinRule = RoomJoinRules.PUBLIC, - roomGuestAccess = GuestAccess.Forbidden, - title = stringProvider.getString(R.string.room_settings_room_access_entry_anyone_with_link_apart_guest), - iconResId = 0, - isSelected = state.currentRoomJoinRule == RoomJoinRules.PUBLIC && state.currentGuestAccess == GuestAccess.Forbidden + description = stringProvider.getString(R.string.room_settings_room_access_public_description), + title = stringProvider.getString(R.string.room_settings_room_access_public_title), + isSelected = state.currentRoomJoinRule == RoomJoinRules.PUBLIC ), - RoomJoinRuleAction( - roomJoinRule = RoomJoinRules.PUBLIC, - roomGuestAccess = GuestAccess.CanJoin, - title = stringProvider.getString(R.string.room_settings_room_access_entry_anyone_with_link_including_guest), - iconResId = 0, - isSelected = state.currentRoomJoinRule == RoomJoinRules.PUBLIC && state.currentGuestAccess == GuestAccess.CanJoin - ), - RoomJoinRuleAction( + RoomJoinRuleRadioAction( roomJoinRule = RoomJoinRules.RESTRICTED, - roomGuestAccess = null, - title = stringProvider.getString(R.string.room_settings_room_access_entry_restricted), - iconResId = 0, + description = stringProvider.getString(R.string.room_settings_room_access_restricted_description), + title = span { + +stringProvider.getString(R.string.room_settings_room_access_restricted_title) + + " " + image( + drawableProvider.getDrawable(R.drawable.ic_beta_pill)!!, + "bottom" + ) + }, isSelected = state.currentRoomJoinRule == RoomJoinRules.RESTRICTED ) ) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleRadioAction.kt similarity index 68% rename from vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleAction.kt rename to vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleRadioAction.kt index 6f71669002..cdeb49f9ef 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleAction.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleRadioAction.kt @@ -16,20 +16,16 @@ package im.vector.app.features.roomprofile.settings.joinrule -import androidx.annotation.DrawableRes -import im.vector.app.core.ui.bottomsheet.BottomSheetGenericAction -import org.matrix.android.sdk.api.session.room.model.GuestAccess +import im.vector.app.core.ui.bottomsheet.BottomSheetGenericRadioAction import org.matrix.android.sdk.api.session.room.model.RoomJoinRules -class RoomJoinRuleAction( +class RoomJoinRuleRadioAction( val roomJoinRule: RoomJoinRules, - val roomGuestAccess: GuestAccess?, - title: String, - @DrawableRes iconResId: Int, + title: CharSequence, + description: String, isSelected: Boolean -) : BottomSheetGenericAction( +) : BottomSheetGenericRadioAction( title = title, - iconResId = iconResId, isSelected = isSelected, - destructive = false + description = description ) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleSharedActionViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleSharedActionViewModel.kt index 934b0dfc76..a7df2cb475 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleSharedActionViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleSharedActionViewModel.kt @@ -20,4 +20,4 @@ import im.vector.app.core.platform.VectorSharedActionViewModel import javax.inject.Inject class RoomJoinRuleSharedActionViewModel @Inject constructor() - : VectorSharedActionViewModel() + : VectorSharedActionViewModel() diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleState.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleState.kt index ec16b02d60..85253091c4 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleState.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/joinrule/RoomJoinRuleState.kt @@ -26,7 +26,6 @@ data class RoomJoinRuleState( ) : BottomSheetGenericState() { constructor(args: RoomJoinRuleBottomSheetArgs) : this( - currentRoomJoinRule = args.currentRoomJoinRule, - currentGuestAccess = args.currentGuestAccess + currentRoomJoinRule = args.currentRoomJoinRule ) } diff --git a/vector/src/main/res/drawable/ic_beta_pill.xml b/vector/src/main/res/drawable/ic_beta_pill.xml new file mode 100644 index 0000000000..44faacccae --- /dev/null +++ b/vector/src/main/res/drawable/ic_beta_pill.xml @@ -0,0 +1,12 @@ + + + + diff --git a/vector/src/main/res/drawable/ic_radio_off.xml b/vector/src/main/res/drawable/ic_radio_off.xml new file mode 100644 index 0000000000..90524c7ac2 --- /dev/null +++ b/vector/src/main/res/drawable/ic_radio_off.xml @@ -0,0 +1,10 @@ + + + diff --git a/vector/src/main/res/drawable/ic_radio_on.xml b/vector/src/main/res/drawable/ic_radio_on.xml new file mode 100644 index 0000000000..5cda8285e6 --- /dev/null +++ b/vector/src/main/res/drawable/ic_radio_on.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/vector/src/main/res/layout/item_bottom_sheet_radio.xml b/vector/src/main/res/layout/item_bottom_sheet_radio.xml new file mode 100644 index 0000000000..e4137906ca --- /dev/null +++ b/vector/src/main/res/layout/item_bottom_sheet_radio.xml @@ -0,0 +1,56 @@ + + + + + + + + + diff --git a/vector/src/main/res/layout/item_bottom_sheet_title.xml b/vector/src/main/res/layout/item_bottom_sheet_title.xml index 5113c43f39..41191b53db 100644 --- a/vector/src/main/res/layout/item_bottom_sheet_title.xml +++ b/vector/src/main/res/layout/item_bottom_sheet_title.xml @@ -16,6 +16,7 @@ android:layout_height="wrap_content" android:textColor="?riotx_text_primary" android:textSize="18sp" + android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/itemBottomSheetTitleSubtitle" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 0566fbbacb..40d3cc5e1f 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -1451,9 +1451,14 @@ Only people who have been invited Anyone who knows the room’s link, apart from guests Anyone who knows the room’s link, including guests - Restricted to members of a parent space Anyone can knock on the room, members can then accept or reject Unknown access setting (%s) + Private + Only people invited can find and join + Public + Anyone can find the room and join + Spaces + Anyone in a space with this room can find and join it. Only admins of this room can add it to a space. Banned users @@ -3229,6 +3234,7 @@ Open Emoji picker Close Emoji picker Checked + Unchecked Message not sent due to error Notify with sound Notify without sound