RoomBubbleCellData: Add a property to display the timestamp of the selected component on the left when there is enough space.

This commit is contained in:
SBiOSoftWhare 2019-05-22 16:17:55 +02:00
parent 98c95fb849
commit b234a09bf1
2 changed files with 22 additions and 4 deletions

View file

@ -40,6 +40,11 @@ typedef NS_ENUM(NSInteger, RoomBubbleCellDataTag)
*/
@property(nonatomic) BOOL showTimestampForSelectedComponent;
/**
Indicate true to display the timestamp of the selected component on the left when there is enough space (YES by default).
*/
@property(nonatomic) BOOL displayTimestampForSelectedComponentOnLeftWhenPossible;
/**
The event id of the current selected event inside the bubble. Default is nil.
*/

View file

@ -27,8 +27,19 @@
static NSAttributedString *timestampVerticalWhitespace = nil;
static NSAttributedString *readReceiptVerticalWhitespace = nil;
@interface RoomBubbleCellData()
@property(nonatomic, readonly) BOOL addVerticalWhitespaceForSelectedComponentTimestamp;
@end
@implementation RoomBubbleCellData
- (BOOL)addVerticalWhitespaceForSelectedComponentTimestamp
{
return self.showTimestampForSelectedComponent && !self.displayTimestampForSelectedComponentOnLeftWhenPossible;
}
#pragma mark - Override MXKRoomBubbleCellData
- (instancetype)initWithEvent:(MXEvent *)event andRoomState:(MXRoomState *)roomState andRoomDataSource:(MXKRoomDataSource *)roomDataSource2
@ -68,6 +79,8 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
// Reset attributedTextMessage to force reset MXKRoomCellData parameters
self.attributedTextMessage = nil;
self.displayTimestampForSelectedComponentOnLeftWhenPossible = YES;
}
return self;
@ -202,7 +215,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
}
// Check whether the timestamp is displayed for this component, and check whether a vertical whitespace is required
if (((selectedComponentIndex == index && self.showTimestampForSelectedComponent) || lastMessageIndex == index) && (self.shouldHideSenderInformation || self.shouldHideSenderName))
if (((selectedComponentIndex == index && self.addVerticalWhitespaceForSelectedComponentTimestamp) || lastMessageIndex == index) && (self.shouldHideSenderInformation || self.shouldHideSenderName))
{
currentAttributedTextMsg = [[NSMutableAttributedString alloc] initWithAttributedString:[RoomBubbleCellData timestampVerticalWhitespace]];
[currentAttributedTextMsg appendAttributedString:componentString];
@ -237,7 +250,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
}
// Check whether the timestamp is displayed
if ((selectedComponentIndex == index && self.showTimestampForSelectedComponent) || lastMessageIndex == index)
if ((selectedComponentIndex == index && self.addVerticalWhitespaceForSelectedComponentTimestamp) || lastMessageIndex == index)
{
[currentAttributedTextMsg appendAttributedString:[RoomBubbleCellData timestampVerticalWhitespace]];
}
@ -290,7 +303,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
NSInteger lastMessageIndex = self.containsLastMessage ? self.mostRecentComponentIndex : NSNotFound;
// Check whether the timestamp is displayed for this first component, and check whether a vertical whitespace is required
if (((selectedComponentIndex == index && self.showTimestampForSelectedComponent) || lastMessageIndex == index) && (self.shouldHideSenderInformation || self.shouldHideSenderName))
if (((selectedComponentIndex == index && self.addVerticalWhitespaceForSelectedComponentTimestamp) || lastMessageIndex == index) && (self.shouldHideSenderInformation || self.shouldHideSenderName))
{
attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:[RoomBubbleCellData timestampVerticalWhitespace]];
[attributedString appendAttributedString:component.attributedTextMessage];
@ -318,7 +331,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
{
// Prepare its attributed string by considering potential vertical margin required to display timestamp.
NSAttributedString *componentString;
if ((selectedComponentIndex == index && self.showTimestampForSelectedComponent) || lastMessageIndex == index)
if ((selectedComponentIndex == index && self.addVerticalWhitespaceForSelectedComponentTimestamp) || lastMessageIndex == index)
{
NSMutableAttributedString *componentAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString:[RoomBubbleCellData timestampVerticalWhitespace]];
[componentAttributedString appendAttributedString:component.attributedTextMessage];