diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json new file mode 100644 index 000000000..943055f00 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "space_menu_plus_icon.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "space_menu_plus_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "space_menu_plus_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png new file mode 100644 index 000000000..cfc87199c Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon.png differ diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png new file mode 100644 index 000000000..c3cc1ee60 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png new file mode 100644 index 000000000..bf5489cc2 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Spaces/space_menu_plus_icon.imageset/space_menu_plus_icon@3x.png differ diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 11d41bfbe..a0ee6ef65 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -1747,6 +1747,7 @@ Tap the + to start adding people."; "space_public_join_rule" = "Public space"; "spaces_invite_people" = "Invite people"; "spaces_add_room" = "Add room"; +"spaces_add_space" = "Add space"; // Mark: Avatar diff --git a/Riot/Generated/Images.swift b/Riot/Generated/Images.swift index 90b9439e3..b65cfa90f 100644 --- a/Riot/Generated/Images.swift +++ b/Riot/Generated/Images.swift @@ -201,6 +201,7 @@ internal enum Asset { internal static let spaceMenuClose = ImageAsset(name: "space_menu_close") internal static let spaceMenuLeave = ImageAsset(name: "space_menu_leave") internal static let spaceMenuMembers = ImageAsset(name: "space_menu_members") + internal static let spaceMenuPlusIcon = ImageAsset(name: "space_menu_plus_icon") internal static let spaceMenuRooms = ImageAsset(name: "space_menu_rooms") internal static let spacePrivateIcon = ImageAsset(name: "space_private_icon") internal static let spaceRoomIcon = ImageAsset(name: "space_room_icon") diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 19f863ac0..cc6fa5133 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -4999,6 +4999,10 @@ public class VectorL10n: NSObject { public static var spacesAddRoomsComingSoonTitle: String { return VectorL10n.tr("Vector", "spaces_add_rooms_coming_soon_title") } + /// Add space + public static var spacesAddSpace: String { + return VectorL10n.tr("Vector", "spaces_add_space") + } /// This feature hasn’t been implemented here, but it’s on the way. For now, you can do that with Element on your computer. public static var spacesComingSoonDetail: String { return VectorL10n.tr("Vector", "spaces_coming_soon_detail") diff --git a/Riot/Modules/SideMenu/SideMenuCoordinator.swift b/Riot/Modules/SideMenu/SideMenuCoordinator.swift index 797e20818..7d738084c 100644 --- a/Riot/Modules/SideMenu/SideMenuCoordinator.swift +++ b/Riot/Modules/SideMenu/SideMenuCoordinator.swift @@ -342,6 +342,12 @@ extension SideMenuCoordinator: SpaceMenuPresenterDelegate { self.showExploreRooms(spaceId: spaceId, session: session) case .exploreMembers: self.showMembers(spaceId: spaceId, session: session) + case .addRoom: + AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.spacesAddRoom, message: VectorL10n.spacesComingSoonDetail) + case .addSpace: + AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.spacesAddSpace, message: VectorL10n.spacesComingSoonDetail) + case .settings: + AppDelegate.theDelegate().showAlert(withTitle: VectorL10n.sideMenuActionSettings, message: VectorL10n.spacesComingSoonDetail) } } } diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift index 6f8b7378f..f9964201d 100644 --- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift +++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListItemViewData.swift @@ -21,6 +21,9 @@ enum SpaceMenuListItemAction { case showAllRoomsInHomeSpace case exploreSpaceMembers case exploreSpaceRooms + case addRoom + case addSpace + case settings case leaveSpace } @@ -42,6 +45,8 @@ class SpaceMenuListItemViewData { let style: SpaceMenuListItemStyle let title: String? let icon: UIImage? + let isBeta: Bool + /// Any value related to the type of data (e.g. `Bool` for `boolean` style, `nil` for `normal` and `destructive` style) var value: Any? { didSet { @@ -50,11 +55,12 @@ class SpaceMenuListItemViewData { } weak var delegate: SpaceMenuListItemViewDataDelegate? - init(action: SpaceMenuListItemAction, style: SpaceMenuListItemStyle, title: String?, icon: UIImage?, value: Any?) { + init(action: SpaceMenuListItemAction, style: SpaceMenuListItemStyle, title: String?, icon: UIImage?, value: Any?, isBeta: Bool = false) { self.action = action self.style = style self.title = title self.icon = icon self.value = value + self.isBeta = isBeta } } diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift index bc8243a9a..1ce0d2427 100644 --- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift +++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.swift @@ -23,6 +23,8 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable { @IBOutlet private weak var iconView: UIImageView! @IBOutlet private weak var titleLabel: UILabel! + @IBOutlet private weak var betaView: UIView! + @IBOutlet private weak var betaLabel: UILabel! @IBOutlet private weak var selectionView: UIView! // MARK: - Private @@ -64,6 +66,10 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable { self.titleLabel.textColor = theme.colors.primaryContent self.iconView.tintColor = theme.colors.secondaryContent } + + self.betaView.layer.masksToBounds = true + self.betaView.layer.cornerRadius = 4 + self.betaView.isHidden = !viewData.isBeta } func update(theme: Theme) { @@ -73,5 +79,8 @@ class SpaceMenuListViewCell: UITableViewCell, SpaceMenuCell, NibReusable { self.titleLabel.textColor = theme.colors.primaryContent self.titleLabel.font = theme.fonts.body self.selectionView.backgroundColor = theme.colors.separator + self.betaLabel.font = theme.fonts.caption2SB + self.betaLabel.textColor = theme.colors.secondaryContent + self.betaView.backgroundColor = theme.colors.quinaryContent } } diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib index 0d71ef2c6..b6825d18e 100644 --- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib +++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuListViewCell.xib @@ -25,12 +25,30 @@ -