mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-30 00:02:47 +00:00
Merge pull request #658 from vector-im/vector_361
Room message search : the message date & time are not displayed
This commit is contained in:
commit
a4f1dc17a9
4 changed files with 101 additions and 5 deletions
|
@ -51,6 +51,11 @@ extern NSString *const kMXKRoomBubbleCellVectorEditButtonPressed;
|
||||||
*/
|
*/
|
||||||
- (void)markComponent:(NSUInteger)componentIndex;
|
- (void)markComponent:(NSUInteger)componentIndex;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add a label to display the date of the cell.
|
||||||
|
*/
|
||||||
|
- (void)addDateLabel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Blur the view by adding a transparent overlay. Default is NO.
|
Blur the view by adding a transparent overlay. Default is NO.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -203,6 +203,66 @@ NSString *const kMXKRoomBubbleCellVectorEditButtonPressed = @"kMXKRoomBubbleCell
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)addDateLabel
|
||||||
|
{
|
||||||
|
self.bubbleInfoContainer.hidden = NO;
|
||||||
|
|
||||||
|
NSDate *date = bubbleData.date;
|
||||||
|
if (date)
|
||||||
|
{
|
||||||
|
UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.bubbleInfoContainer.frame.size.width , 18)];
|
||||||
|
|
||||||
|
timeLabel.text = [bubbleData.eventFormatter dateStringFromDate:date withTime:NO];
|
||||||
|
timeLabel.textAlignment = NSTextAlignmentRight;
|
||||||
|
timeLabel.textColor = kVectorTextColorGray;
|
||||||
|
if ([UIFont respondsToSelector:@selector(systemFontOfSize:weight:)])
|
||||||
|
{
|
||||||
|
timeLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightLight];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
timeLabel.font = [UIFont systemFontOfSize:12];
|
||||||
|
}
|
||||||
|
timeLabel.adjustsFontSizeToFitWidth = YES;
|
||||||
|
|
||||||
|
[timeLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
|
||||||
|
[self.bubbleInfoContainer addSubview:timeLabel];
|
||||||
|
|
||||||
|
// Define timeLabel constraints (to handle auto-layout in case of screen rotation)
|
||||||
|
NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:timeLabel
|
||||||
|
attribute:NSLayoutAttributeTrailing
|
||||||
|
relatedBy:NSLayoutRelationEqual
|
||||||
|
toItem:self.bubbleInfoContainer
|
||||||
|
attribute:NSLayoutAttributeTrailing
|
||||||
|
multiplier:1.0
|
||||||
|
constant:0];
|
||||||
|
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:timeLabel
|
||||||
|
attribute:NSLayoutAttributeTop
|
||||||
|
relatedBy:NSLayoutRelationEqual
|
||||||
|
toItem:self.bubbleInfoContainer
|
||||||
|
attribute:NSLayoutAttributeTop
|
||||||
|
multiplier:1.0
|
||||||
|
constant:0];
|
||||||
|
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:timeLabel
|
||||||
|
attribute:NSLayoutAttributeWidth
|
||||||
|
relatedBy:NSLayoutRelationEqual
|
||||||
|
toItem:self.bubbleInfoContainer
|
||||||
|
attribute:NSLayoutAttributeWidth
|
||||||
|
multiplier:1.0
|
||||||
|
constant:0];
|
||||||
|
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:timeLabel
|
||||||
|
attribute:NSLayoutAttributeHeight
|
||||||
|
relatedBy:NSLayoutRelationEqual
|
||||||
|
toItem:nil
|
||||||
|
attribute:NSLayoutAttributeNotAnAttribute
|
||||||
|
multiplier:1.0
|
||||||
|
constant:18];
|
||||||
|
|
||||||
|
// Available on iOS 8 and later
|
||||||
|
[NSLayoutConstraint activateConstraints:@[rightConstraint, topConstraint, widthConstraint, heightConstraint]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setBlurred:(BOOL)blurred
|
- (void)setBlurred:(BOOL)blurred
|
||||||
{
|
{
|
||||||
objc_setAssociatedObject(self, @selector(blurred), [NSNumber numberWithBool:blurred], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
objc_setAssociatedObject(self, @selector(blurred), [NSNumber numberWithBool:blurred], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
#import "RoomBubbleCellData.h"
|
#import "RoomBubbleCellData.h"
|
||||||
|
|
||||||
|
#import "MXKRoomBubbleTableViewCell+Vector.h"
|
||||||
|
|
||||||
@interface RoomSearchDataSource ()
|
@interface RoomSearchDataSource ()
|
||||||
{
|
{
|
||||||
MXKRoomDataSource *roomDataSource;
|
MXKRoomDataSource *roomDataSource;
|
||||||
|
@ -61,4 +63,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||||
|
{
|
||||||
|
UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
|
||||||
|
|
||||||
|
// Finalize cell view customization here
|
||||||
|
if ([cell isKindOfClass:MXKRoomBubbleTableViewCell.class])
|
||||||
|
{
|
||||||
|
MXKRoomBubbleTableViewCell *bubbleCell = (MXKRoomBubbleTableViewCell*)cell;
|
||||||
|
|
||||||
|
// Display date for each message
|
||||||
|
[bubbleCell addDateLabel];
|
||||||
|
}
|
||||||
|
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
// We are displaying a search over all user's rooms
|
// We are displaying a search over all user's rooms
|
||||||
// As title, display the room name of this search result
|
// As title, display the room name of this search result
|
||||||
MXRoom *room = [searchDataSource.mxSession roomWithRoomId:searchResult2.result.roomId];
|
MXRoom *room = [searchDataSource.mxSession roomWithRoomId:searchResult.result.roomId];
|
||||||
if (room)
|
if (room)
|
||||||
{
|
{
|
||||||
title = room.vectorDisplayname;
|
title = room.vectorDisplayname;
|
||||||
|
@ -41,13 +41,26 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
title = searchResult2.result.roomId;
|
title = searchResult.result.roomId;
|
||||||
}
|
}
|
||||||
|
|
||||||
date = [searchDataSource.eventFormatter dateStringFromEvent:searchResult2.result withTime:YES];
|
date = [searchDataSource.eventFormatter dateStringFromEvent:searchResult.result withTime:YES];
|
||||||
|
|
||||||
// Code from [MXEventFormatter stringFromEvent] for the particular case of a text message
|
// Use the event formatter to display correctly the message in case of formatted body.
|
||||||
message = [searchResult2.result.content[@"body"] isKindOfClass:[NSString class]] ? searchResult2.result.content[@"body"] : nil;
|
if (searchResult.result.eventType == MXEventTypeRoomMessage)
|
||||||
|
{
|
||||||
|
MXKEventFormatterError error;
|
||||||
|
message = [searchDataSource.eventFormatter stringFromEvent:searchResult.result withRoomState:nil error:&error];
|
||||||
|
if (error != MXKEventFormatterErrorNone)
|
||||||
|
{
|
||||||
|
message = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!message.length)
|
||||||
|
{
|
||||||
|
message = [searchResult.result.content[@"body"] isKindOfClass:[NSString class]] ? searchResult.result.content[@"body"] : nil;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue