diff --git a/Vector/Assets/en.lproj/Vector.strings b/Vector/Assets/en.lproj/Vector.strings index 9c60fcac4..b6be12ad5 100644 --- a/Vector/Assets/en.lproj/Vector.strings +++ b/Vector/Assets/en.lproj/Vector.strings @@ -274,6 +274,7 @@ "room_details_addresses_invalid_address_prompt_msg" = "%@ is not a valid format for an alias"; "room_details_addresses_disable_main_address_prompt_title" = "Main address warning"; "room_details_addresses_disable_main_address_prompt_msg"="You will have no main address specified. The default main address for this room will be picked randomly"; +"room_details_banned_users_section"="Banned users"; "room_details_advanced_section"="Advanced"; "room_details_advanced_room_id"="Room ID:"; "room_details_fail_to_update_avatar" = "Fail to update the room photo"; diff --git a/Vector/ViewController/RoomSettingsViewController.m b/Vector/ViewController/RoomSettingsViewController.m index e9882f95a..8cffcbd74 100644 --- a/Vector/ViewController/RoomSettingsViewController.m +++ b/Vector/ViewController/RoomSettingsViewController.m @@ -36,8 +36,9 @@ #define ROOM_SETTINGS_ROOM_ACCESS_SECTION_INDEX 1 #define ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_INDEX 2 #define ROOM_SETTINGS_ROOM_ADDRESSES_SECTION_INDEX 3 -#define ROOM_SETTINGS_ADVANCED_SECTION_INDEX 4 -#define ROOM_SETTINGS_SECTION_COUNT 5 +#define ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX 4 +#define ROOM_SETTINGS_ADVANCED_SECTION_INDEX 5 +#define ROOM_SETTINGS_SECTION_COUNT 6 #define ROOM_SETTINGS_MAIN_SECTION_ROW_PHOTO 0 #define ROOM_SETTINGS_MAIN_SECTION_ROW_NAME 1 @@ -60,6 +61,8 @@ #define ROOM_TOPIC_CELL_HEIGHT 124 +#define SECTION_TITLE_PADDING_WHEN_HIDDEN 0.01f + NSString *const kRoomSettingsAvatarKey = @"kRoomSettingsAvatarKey"; NSString *const kRoomSettingsAvatarURLKey = @"kRoomSettingsAvatarURLKey"; NSString *const kRoomSettingsNameKey = @"kRoomSettingsNameKey"; @@ -1504,6 +1507,10 @@ NSString *const kRoomSettingsAdvancedCellViewIdentifier = @"kRoomSettingsAdvance } } } + else if (section == ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX) + { + count = [mxRoomState membersWithMembership:MXMembershipBan].count; + } else if (section == ROOM_SETTINGS_ADVANCED_SECTION_INDEX) { count = 1; @@ -1526,6 +1533,18 @@ NSString *const kRoomSettingsAdvancedCellViewIdentifier = @"kRoomSettingsAdvance { return NSLocalizedStringFromTable(@"room_details_addresses_section", @"Vector", nil); } + else if (section == ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX) + { + if ([mxRoomState membersWithMembership:MXMembershipBan].count) + { + return NSLocalizedStringFromTable(@"room_details_banned_users_section", @"Vector", nil); + } + else + { + // Hide this section + return nil; + } + } else if (section == ROOM_SETTINGS_ADVANCED_SECTION_INDEX) { return NSLocalizedStringFromTable(@"room_details_advanced_section", @"Vector", nil); @@ -1534,6 +1553,32 @@ NSString *const kRoomSettingsAdvancedCellViewIdentifier = @"kRoomSettingsAdvance return nil; } +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section +{ + if (section == ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX && [mxRoomState membersWithMembership:MXMembershipBan].count == 0) + { + // Hide this section + return SECTION_TITLE_PADDING_WHEN_HIDDEN; + } + else + { + return [super tableView:tableView heightForHeaderInSection:section]; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section +{ + if (section == ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX && [mxRoomState membersWithMembership:MXMembershipBan].count == 0) + { + // Hide this section + return SECTION_TITLE_PADDING_WHEN_HIDDEN; + } + else + { + return [super tableView:tableView heightForFooterInSection:section]; + } +} + - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == ROOM_SETTINGS_MAIN_SECTION_INDEX) @@ -2000,6 +2045,28 @@ NSString *const kRoomSettingsAdvancedCellViewIdentifier = @"kRoomSettingsAdvance cell = addressCell; } } + else if (indexPath.section == ROOM_SETTINGS_BANNED_USERS_SECTION_INDEX) + { + UITableViewCell *addressCell = [tableView dequeueReusableCellWithIdentifier:kRoomSettingsAddressCellViewIdentifier forIndexPath:indexPath]; + + addressCell.textLabel.font = [UIFont systemFontOfSize:16]; + addressCell.textLabel.textColor = kVectorTextColorBlack; + addressCell.textLabel.lineBreakMode = NSLineBreakByTruncatingMiddle; + addressCell.accessoryView = nil; + addressCell.accessoryType = UITableViewCellAccessoryNone; + addressCell.selectionStyle = UITableViewCellSelectionStyleNone; + + while (addressCell.textLabel.gestureRecognizers.count) + { + [addressCell.textLabel removeGestureRecognizer:addressCell.textLabel.gestureRecognizers[0]]; + } + addressCell.textLabel.userInteractionEnabled = NO; + + MXRoomMember *bannedMember = [mxRoomState membersWithMembership:MXMembershipBan][indexPath.row]; + addressCell.textLabel.text = bannedMember.userId; + + cell = addressCell; + } else if (indexPath.section == ROOM_SETTINGS_ADVANCED_SECTION_INDEX) { cell = [tableView dequeueReusableCellWithIdentifier:kRoomSettingsAdvancedCellViewIdentifier];