mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-30 00:02:47 +00:00
Merge pull request #15 from vector-im/MXKDataSource_refactoring
MXKDataSource refactoring
This commit is contained in:
commit
521a5786f3
5 changed files with 52 additions and 22 deletions
|
@ -18,8 +18,6 @@
|
|||
|
||||
#import "EventFormatter.h"
|
||||
#import "RoomBubbleCellData.h"
|
||||
#import "RoomIncomingBubbleTableViewCell.h"
|
||||
#import "RoomOutgoingBubbleTableViewCell.h"
|
||||
|
||||
@implementation RoomDataSource
|
||||
|
||||
|
@ -31,16 +29,6 @@
|
|||
// Replace default Cell data class
|
||||
[self registerCellDataClass:RoomBubbleCellData.class forCellIdentifier:kMXKRoomBubbleCellDataIdentifier];
|
||||
|
||||
// Replace cell view classes
|
||||
[self registerCellViewClass:RoomIncomingBubbleTableViewCell.class forCellIdentifier:kMXKRoomIncomingTextMsgCellIdentifier];
|
||||
[self registerCellViewClass:RoomIncomingBubbleTableViewCell.class forCellIdentifier:kMXKRoomIncomingTextMsgHiddenSenderCellIdentifier];
|
||||
[self registerCellViewClass:RoomIncomingBubbleTableViewCell.class forCellIdentifier:kMXKRoomIncomingAttachmentCellIdentifier];
|
||||
[self registerCellViewClass:RoomIncomingBubbleTableViewCell.class forCellIdentifier:kMXKRoomIncomingAttachmentHiddenSenderCellIdentifier];
|
||||
[self registerCellViewClass:RoomOutgoingBubbleTableViewCell.class forCellIdentifier:kMXKRoomOutgoingTextMsgCellIdentifier];
|
||||
[self registerCellViewClass:RoomOutgoingBubbleTableViewCell.class forCellIdentifier:kMXKRoomOutgoingTextMsgHiddenSenderCellIdentifier];
|
||||
[self registerCellViewClass:RoomOutgoingBubbleTableViewCell.class forCellIdentifier:kMXKRoomOutgoingAttachmentCellIdentifier];
|
||||
[self registerCellViewClass:RoomOutgoingBubbleTableViewCell.class forCellIdentifier:kMXKRoomOutgoingAttachmentHiddenSenderCellIdentifier];
|
||||
|
||||
// Replace event formatter
|
||||
self.eventFormatter = [[EventFormatter alloc] initWithMatrixSession:self.mxSession];
|
||||
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
#import "RecentsDataSource.h"
|
||||
|
||||
#import "RecentTableViewCell.h"
|
||||
|
||||
#import "EventFormatter.h"
|
||||
|
||||
#import "VectorDesignValues.h"
|
||||
|
@ -44,9 +42,6 @@
|
|||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
// Reset default view classes
|
||||
[self registerCellViewClass:RecentTableViewCell.class forCellIdentifier:kMXKRecentCellIdentifier];
|
||||
|
||||
// Replace event formatter
|
||||
self.eventFormatter = [[EventFormatter alloc] initWithMatrixSession:self.mxSession];
|
||||
|
||||
|
@ -210,11 +205,12 @@
|
|||
|
||||
- (CGFloat)cellHeightAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
// Override this method here to use our own cellDataAtIndexPath
|
||||
id<MXKRecentCellDataStoring> cellData = [self cellDataAtIndexPath:indexPath];
|
||||
|
||||
if (cellData)
|
||||
if (cellData && self.delegate)
|
||||
{
|
||||
Class<MXKCellRendering> class = [self cellViewClassForCellIdentifier:kMXKRecentCellIdentifier];
|
||||
Class<MXKCellRendering> class = [self.delegate cellViewClassForCellData:cellData];
|
||||
return [class heightForCellData:cellData withMaximumWidth:0];
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
#import "RecentsViewController.h"
|
||||
#import "RoomViewController.h"
|
||||
|
||||
#import "RecentTableViewCell.h"
|
||||
|
||||
#import "RageShakeManager.h"
|
||||
|
||||
#import "NSBundle+MatrixKit.h"
|
||||
|
@ -76,6 +78,9 @@
|
|||
|
||||
// The view controller handles itself the selected recent
|
||||
self.delegate = self;
|
||||
|
||||
// Register here the customized cell view class used to render recents
|
||||
[self.recentsTableView registerNib:RecentTableViewCell.nib forCellReuseIdentifier:RecentTableViewCell.defaultReuseIdentifier];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
|
@ -417,6 +422,18 @@
|
|||
|
||||
#pragma mark - MXKDataSourceDelegate
|
||||
|
||||
- (Class<MXKCellRendering>)cellViewClassForCellData:(MXKCellData*)cellData
|
||||
{
|
||||
// Return the customized recent table view cell
|
||||
return RecentTableViewCell.class;
|
||||
}
|
||||
|
||||
- (NSString *)cellReuseIdentifierForCellData:(MXKCellData*)cellData
|
||||
{
|
||||
// Return the customized recent table view cell identifier
|
||||
return RecentTableViewCell.defaultReuseIdentifier;
|
||||
}
|
||||
|
||||
- (void)dataSource:(MXKDataSource *)dataSource didCellChange:(id)changes
|
||||
{
|
||||
[self.recentsTableView reloadData];
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
#import "SegmentedViewController.h"
|
||||
#import "RoomSettingsViewController.h"
|
||||
|
||||
#import "RoomOutgoingBubbleTableViewCell.h"
|
||||
#import "RoomIncomingBubbleTableViewCell.h"
|
||||
|
||||
#import "AvatarGenerator.h"
|
||||
|
||||
@interface RoomViewController ()
|
||||
|
@ -78,6 +81,10 @@
|
|||
// this room view controller has its own typing management.
|
||||
self.roomDataSource.showTypingNotifications = NO;
|
||||
}
|
||||
|
||||
// Register here customized cell view classes used to render bubbles
|
||||
[self.bubblesTableView registerClass:RoomOutgoingBubbleTableViewCell.class forCellReuseIdentifier:RoomOutgoingBubbleTableViewCell.defaultReuseIdentifier];
|
||||
[self.bubblesTableView registerClass:RoomIncomingBubbleTableViewCell.class forCellReuseIdentifier:RoomIncomingBubbleTableViewCell.defaultReuseIdentifier];
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
|
@ -212,6 +219,31 @@
|
|||
[super destroy];
|
||||
}
|
||||
|
||||
#pragma mark - MXKDataSourceDelegate
|
||||
|
||||
- (Class<MXKCellRendering>)cellViewClassForCellData:(MXKCellData*)cellData
|
||||
{
|
||||
Class cellViewClass = nil;
|
||||
|
||||
// Sanity check
|
||||
if ([cellData conformsToProtocol:@protocol(MXKRoomBubbleCellDataStoring)])
|
||||
{
|
||||
id<MXKRoomBubbleCellDataStoring> bubbleData = (id<MXKRoomBubbleCellDataStoring>)cellData;
|
||||
|
||||
// Select the suitable table view cell class
|
||||
if (bubbleData.isIncoming)
|
||||
{
|
||||
cellViewClass = RoomIncomingBubbleTableViewCell.class;
|
||||
}
|
||||
else
|
||||
{
|
||||
cellViewClass = RoomOutgoingBubbleTableViewCell.class;
|
||||
}
|
||||
}
|
||||
|
||||
return cellViewClass;
|
||||
}
|
||||
|
||||
#pragma mark - MXKDataSource delegate
|
||||
|
||||
- (void)dataSource:(MXKDataSource *)dataSource didRecognizeAction:(NSString *)actionIdentifier inCell:(id<MXKCellRendering>)cell userInfo:(NSDictionary *)userInfo
|
||||
|
|
|
@ -115,9 +115,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
// The height is fixed
|
||||
|
|
Loading…
Reference in a new issue