Merge pull request #2407 from vector-im/riot_2404_1

RoomInputToolbarView: Turn the boolean replyToEnabled into an enum: sendMode
This commit is contained in:
manuroe 2019-04-30 17:35:46 +02:00 committed by GitHub
commit 7d92cd1d9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 97 additions and 21 deletions

View file

@ -1,3 +1,9 @@
Changes in 0.8.6 (2019-xx-xx)
===============================================
Improvements:
* RoomVC: When replying, use a "Reply" button instead of "Send".
Changes in 0.8.5 (2019-xx-xx)
===============================================

View file

@ -282,6 +282,7 @@
"room_event_failed_to_send" = "Failed to send";
"room_action_send_photo_or_video" = "Send photo or video";
"room_action_send_sticker" = "Send sticker";
"room_action_reply" = "Reply";
"room_replacement_information" = "This room has been replaced and is no longer active.";
"room_replacement_link" = "The conversation continues here.";
"room_predecessor_information" = "This room is a continuation of another conversation.";

View file

@ -1338,6 +1338,10 @@ internal enum VectorL10n {
internal static var retry: String {
return VectorL10n.tr("Vector", "retry")
}
/// Reply
internal static var roomActionReply: String {
return VectorL10n.tr("Vector", "room_action_reply")
}
/// Send photo or video
internal static var roomActionSendPhotoOrVideo: String {
return VectorL10n.tr("Vector", "room_action_send_photo_or_video")

View file

@ -206,9 +206,6 @@
// Observe kThemeServiceDidChangeThemeNotification to handle user interface theme change.
id kThemeServiceDidChangeThemeNotificationObserver;
// Tell whether the input text field is in send reply mode. If true typed message will be sent to highlighted event.
BOOL isInReplyMode;
// Listener for `m.room.tombstone` event type
id tombstoneEventNotificationsListener;
@ -1098,7 +1095,7 @@
- (void)sendTextMessage:(NSString*)msgTxt
{
if (isInReplyMode && customizedRoomDataSource.selectedEventId)
if (self.inputToolBarSendMode == RoomInputToolbarViewSendModeReply && customizedRoomDataSource.selectedEventId)
{
[self.roomDataSource sendReplyToEventWithId:customizedRoomDataSource.selectedEventId withTextMessage:msgTxt success:nil failure:^(NSError *error) {
// Just log the error. The message will be displayed in red in the room history
@ -1440,17 +1437,27 @@
}
}
- (void)enableReplyMode:(BOOL)enable
- (void)setInputToolBarSendMode:(RoomInputToolbarViewSendMode)sendMode
{
isInReplyMode = enable;
if (self.inputToolbarView && [self.inputToolbarView isKindOfClass:[RoomInputToolbarView class]])
{
RoomInputToolbarView *roomInputToolbarView = (RoomInputToolbarView*)self.inputToolbarView;
roomInputToolbarView.replyToEnabled = enable;
roomInputToolbarView.sendMode = sendMode;
}
}
- (RoomInputToolbarViewSendMode)inputToolBarSendMode
{
RoomInputToolbarViewSendMode sendMode = RoomInputToolbarViewSendModeSend;
if (self.inputToolbarView && [self.inputToolbarView isKindOfClass:[RoomInputToolbarView class]])
{
RoomInputToolbarView *roomInputToolbarView = (RoomInputToolbarView*)self.inputToolbarView;
sendMode = roomInputToolbarView.sendMode;
}
return sendMode;
}
- (void)onSwipeGesture:(UISwipeGestureRecognizer*)swipeGestureRecognizer
{
UIView *view = swipeGestureRecognizer.view;
@ -2871,16 +2878,16 @@
- (void)selectEventWithId:(NSString*)eventId
{
BOOL shouldEnableReplyMode = [self.roomDataSource canReplyToEventWithId:eventId];;
[self enableReplyMode:shouldEnableReplyMode];
BOOL shouldEnableReplyMode = [self.roomDataSource canReplyToEventWithId:eventId];
[self setInputToolBarSendMode: shouldEnableReplyMode ? RoomInputToolbarViewSendModeReply : RoomInputToolbarViewSendModeSend];
customizedRoomDataSource.selectedEventId = eventId;
}
- (void)cancelEventSelection
{
[self enableReplyMode:NO];
[self setInputToolBarSendMode:RoomInputToolbarViewSendModeSend];
if (currentAlert)
{

View file

@ -18,6 +18,16 @@
#import "MediaPickerViewController.h"
/**
Destination of the message in the composer
*/
typedef enum : NSUInteger
{
RoomInputToolbarViewSendModeSend,
RoomInputToolbarViewSendModeReply,
} RoomInputToolbarViewSendMode;
@protocol RoomInputToolbarViewDelegate <MXKRoomInputToolbarViewDelegate>
/**
@ -70,9 +80,9 @@
@property (nonatomic) BOOL isEncryptionEnabled;
/**
Tell whether the input text will be a reply to a message.
Destination of the message in the composer.
*/
@property (nonatomic, getter=isReplyToEnabled) BOOL replyToEnabled;
@property (nonatomic) RoomInputToolbarViewSendMode sendMode;
/**
Tell whether a call is active.

View file

@ -69,6 +69,7 @@
[super awakeFromNib];
_supportCallOption = YES;
_sendMode = RoomInputToolbarViewSendModeSend;
self.rightInputToolbarButton.hidden = YES;
@ -154,11 +155,31 @@
self.placeholder = placeholder;
}
- (void)setReplyToEnabled:(BOOL)isReplyToEnabled
- (void)setSendMode:(RoomInputToolbarViewSendMode)sendMode
{
_replyToEnabled = isReplyToEnabled;
_sendMode = sendMode;
[self updatePlaceholder];
[self updateToolbarButtonLabel];
}
- (void)updateToolbarButtonLabel
{
NSString *title;
switch (_sendMode)
{
case RoomInputToolbarViewSendModeReply:
title = NSLocalizedStringFromTable(@"room_action_reply", @"Vector", nil);
break;
default:
title = [NSBundle mxk_localizedStringForKey:@"send"];
break;
}
[self.rightInputToolbarButton setTitle:title forState:UIControlStateNormal];
[self.rightInputToolbarButton setTitle:title forState:UIControlStateHighlighted];
}
- (void)updatePlaceholder
@ -172,17 +193,44 @@
if (!shouldDisplayLargePlaceholder)
{
placeholder = _replyToEnabled ? NSLocalizedStringFromTable(@"room_message_reply_to_short_placeholder", @"Vector", nil) : NSLocalizedStringFromTable(@"room_message_short_placeholder", @"Vector", nil);
switch (_sendMode)
{
case RoomInputToolbarViewSendModeReply:
placeholder = NSLocalizedStringFromTable(@"room_message_reply_to_short_placeholder", @"Vector", nil);
break;
default:
placeholder = NSLocalizedStringFromTable(@"room_message_short_placeholder", @"Vector", nil);
break;
}
}
else
{
if (_isEncryptionEnabled)
{
placeholder = _replyToEnabled ? NSLocalizedStringFromTable(@"encrypted_room_message_reply_to_placeholder", @"Vector", nil) : NSLocalizedStringFromTable(@"encrypted_room_message_placeholder", @"Vector", nil);
switch (_sendMode)
{
case RoomInputToolbarViewSendModeReply:
placeholder = NSLocalizedStringFromTable(@"encrypted_room_message_reply_to_placeholder", @"Vector", nil);
break;
default:
placeholder = NSLocalizedStringFromTable(@"encrypted_room_message_placeholder", @"Vector", nil);
break;
}
}
else
{
placeholder = _replyToEnabled ? NSLocalizedStringFromTable(@"room_message_reply_to_placeholder", @"Vector", nil) : NSLocalizedStringFromTable(@"room_message_placeholder", @"Vector", nil);
switch (_sendMode)
{
case RoomInputToolbarViewSendModeReply:
placeholder = NSLocalizedStringFromTable(@"room_message_reply_to_placeholder", @"Vector", nil);
break;
default:
placeholder = NSLocalizedStringFromTable(@"room_message_placeholder", @"Vector", nil);
break;
}
}
}