Room details: Shade invited users

This commit is contained in:
giomfo
2014-10-29 11:26:08 +01:00
parent 9d671ddc18
commit 2c86d0a24e
3 changed files with 54 additions and 33 deletions

View File

@@ -17,10 +17,15 @@
#import <UIKit/UIKit.h>
#import "CustomTableViewCell.h"
@class MXRoomMember;
@class MXRoomData;
// Room Member Table View Cell
@interface RoomMemberTableCell : CustomTableViewCell
@property (weak, nonatomic) IBOutlet UILabel *userLabel;
@property (weak, nonatomic) IBOutlet UIProgressView *userPowerLevel;
@property (weak, nonatomic) IBOutlet UILabel *lastActiveAgoLabel;
- (void)setRoomMember:(MXRoomMember *)roomMember withRoomData:(MXRoomData *)roomData;
@end

View File

@@ -15,7 +15,54 @@
*/
#import "RoomMemberTableCell.h"
#import "MatrixHandler.h"
@implementation RoomMemberTableCell
- (void)setRoomMember:(MXRoomMember *)roomMember withRoomData:(MXRoomData *)roomData {
if (roomData && roomMember) {
self.userLabel.text = [roomData memberName:roomMember.user_id];
self.placeholder = @"default-profile";
self.pictureURL = roomMember.avatar_url;
// Shade invited users
if ([roomMember.membership isEqualToString:@"invite"]) {
for (UIView *view in self.subviews) {
view.alpha = 0.3;
}
} else {
for (UIView *view in self.subviews) {
view.alpha = 1;
}
}
// Handle power level display
NSDictionary *powerLevels = roomData.powerLevels;
if (powerLevels) {
int maxLevel = 0;
for (NSString *powerLevel in powerLevels.allValues) {
int level = [powerLevel intValue];
if (level > maxLevel) {
maxLevel = level;
}
}
NSString *userPowerLevel = [powerLevels objectForKey:roomMember.user_id]; // CAUTION: we invoke objectForKey here because user_id starts with an '@' character
if (userPowerLevel == nil) {
userPowerLevel = [powerLevels valueForKey:@"default"];
}
float userPowerLevelFloat = 0.0;
if (userPowerLevel) {
userPowerLevelFloat = [userPowerLevel floatValue];
}
self.userPowerLevel.progress = maxLevel ? userPowerLevelFloat / maxLevel : 1;
} else {
self.userPowerLevel.progress = 0;
}
// TODO: handle last_active_ago duration when it will be available from SDK
self.lastActiveAgoLabel.backgroundColor = [UIColor greenColor];
self.lastActiveAgoLabel.text = [NSString stringWithFormat:@"%ds ago", roomMember.last_active_ago];
self.lastActiveAgoLabel.numberOfLines = 0;
}
}
@end

View File

@@ -474,38 +474,7 @@ NSString *const kFailedEventId = @"failedEventId";
{
RoomMemberTableCell *memberCell = [tableView dequeueReusableCellWithIdentifier:@"RoomMemberCell" forIndexPath:indexPath];
if (indexPath.row < members.count) {
MXRoomMember *roomMember = [members objectAtIndex:indexPath.row];
memberCell.userLabel.text = [mxRoomData memberName:roomMember.user_id];
memberCell.placeholder = @"default-profile";
memberCell.pictureURL = roomMember.avatar_url;
// Handle power level display
NSDictionary *powerLevels = mxRoomData.powerLevels;
if (powerLevels) {
int maxLevel = 0;
for (NSString *powerLevel in powerLevels.allValues) {
int level = [powerLevel intValue];
if (level > maxLevel) {
maxLevel = level;
}
}
NSString *userPowerLevel = [powerLevels objectForKey:roomMember.user_id]; // CAUTION: we invoke objectForKey here because user_id starts with an '@' character
if (userPowerLevel == nil) {
userPowerLevel = [powerLevels valueForKey:@"default"];
}
float userPowerLevelFloat = 0.0;
if (userPowerLevel) {
userPowerLevelFloat = [userPowerLevel floatValue];
}
memberCell.userPowerLevel.progress = maxLevel ? userPowerLevelFloat / maxLevel : 1;
} else {
memberCell.userPowerLevel.progress = 0;
}
// TODO: handle last_active_ago duration when it will be available from SDK
memberCell.lastActiveAgoLabel.backgroundColor = [UIColor greenColor];
memberCell.lastActiveAgoLabel.text = [NSString stringWithFormat:@"%ds ago", roomMember.last_active_ago];
memberCell.lastActiveAgoLabel.numberOfLines = 0;
[memberCell setRoomMember:[members objectAtIndex:indexPath.row] withRoomData:mxRoomData];
}
return memberCell;