Media actions

pull/1/head
Michael Kirk 7 years ago
parent 729336774c
commit 210cba3e37

@ -2002,15 +2002,23 @@ typedef enum : NSUInteger {
- (void)conversationCell:(ConversationViewCell *)cell didLongpressMediaViewItem:(ConversationViewItem *)viewItem
{
DDLogDebug(@"%@ in %s TODO", self.logTag, __PRETTY_FUNCTION__);
NSArray<MessageAction *> *messageActions = [viewItem mediaActionsWithDelegate:self];
[self presentMessageActions:messageActions withFocusedCell:cell];
}
- (void)conversationCell:(ConversationViewCell *)cell didLongpressQuoteViewItem:(ConversationViewItem *)viewItem
{
DDLogDebug(@"%@ in %s TODO", self.logTag, __PRETTY_FUNCTION__);
NSArray<MessageAction *> *messageActions = [viewItem quotedMessageActionsWithDelegate:self];
[self presentMessageActions:messageActions withFocusedCell:cell];
}
- (void)conversationCell:(ConversationViewCell *)cell didLongpressTextViewItem:(ConversationViewItem *)viewItem
{
NSArray<MessageAction *> *messageActions = [viewItem textActionsWithDelegate:self];
[self presentMessageActions:messageActions withFocusedCell:cell];
}
- (void)presentMessageActions:(NSArray<MessageAction *> *)messageActions withFocusedCell:(ConversationViewCell *)cell
{
// TODO Interpolate from 0->0.3 depending on distance to make visible.
NSTimeInterval animationDuration = 0.3;
@ -2023,8 +2031,7 @@ typedef enum : NSUInteger {
}
completion:^(BOOL finished) {
// TODO pass in real actions
NSArray<MessageAction *> *messageActions = [viewItem textActionsWithDelegate:self];
MessageActionsViewController *messageActionsViewController =
[[MessageActionsViewController alloc] initWithFocusedView:cell actions:messageActions];

@ -112,6 +112,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType);
#pragma mark - MessageActions
@property (nonatomic, readonly) BOOL hasBodyTextActionContent;
@property (nonatomic, readonly) BOOL hasMediaActionContent;
- (void)copyTextAction;
- (void)shareMediaAction;

@ -48,6 +48,24 @@ struct MessageActionBuilder {
conversationViewItem.deleteAction()
})
}
static func copyMedia(conversationViewItem: ConversationViewItem, delegate: MessageActionsDelegate) -> MessageAction {
return MessageAction(image: #imageLiteral(resourceName: "generic-attachment-small"),
title: NSLocalizedString("MESSAGE_ACTION_COPY_MEDIA", comment: "Action sheet button title"),
subtitle: nil,
block: { (_) in
conversationViewItem.copyMediaAction()
})
}
static func saveMedia(conversationViewItem: ConversationViewItem, delegate: MessageActionsDelegate) -> MessageAction {
return MessageAction(image: #imageLiteral(resourceName: "generic-attachment-small"),
title: NSLocalizedString("MESSAGE_ACTION_SAVE_MEDIA", comment: "Action sheet button title"),
subtitle: nil,
block: { (_) in
conversationViewItem.saveMediaAction()
})
}
}
extension ConversationViewItem {
@ -72,6 +90,38 @@ extension ConversationViewItem {
return actions
}
@objc
func mediaActions(delegate: MessageActionsDelegate) -> [MessageAction] {
var actions: [MessageAction] = []
let replyAction = MessageActionBuilder.reply(conversationViewItem: self, delegate: delegate)
actions.append(replyAction)
if self.hasMediaActionContent {
let copyMediaAction = MessageActionBuilder.copyMedia(conversationViewItem: self, delegate: delegate)
actions.append(copyMediaAction)
let saveMediaAction = MessageActionBuilder.saveMedia(conversationViewItem: self, delegate: delegate)
actions.append(saveMediaAction)
}
let deleteAction = MessageActionBuilder.deleteMessage(conversationViewItem: self, delegate: delegate)
actions.append(deleteAction)
let showInfoAction = MessageActionBuilder.showDetails(conversationViewItem: self, delegate: delegate)
actions.append(showInfoAction)
return actions
}
@objc
func quotedMessageActions(delegate: MessageActionsDelegate) -> [MessageAction] {
var actions: [MessageAction] = []
owsFail("\(self.logTag) in \(#function) TODO")
return actions
}
}
@objc

@ -1162,19 +1162,25 @@
"MEDIA_GALLERY_THIS_MONTH_HEADER" = "This Month";
/* Action sheet button title */
"MESSAGE_ACTION_COPY_TEXT" = "Copy message text";
"MESSAGE_ACTION_COPY_MEDIA" = "Copy Media";
/* Action sheet button title */
"MESSAGE_ACTION_DELETE_MESSAGE" = "Delete this message";
"MESSAGE_ACTION_COPY_TEXT" = "Copy Message Text";
/* Action sheet button title */
"MESSAGE_ACTION_DELETE_MESSAGE" = "Delete this Message";
/* Action sheet button subtitle */
"MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "This will delete it on this device only";
/* Action sheet button title */
"MESSAGE_ACTION_REPLY" = "Reply to this message";
"MESSAGE_ACTION_DETAILS" = "More Info";
/* Action sheet button title */
"MESSAGE_ACTION_REPLY" = "Reply to this Message";
/* Action sheet button title */
"MESSAGE_ACTION_DETAILS" = "More info";
"MESSAGE_ACTION_SAVE_MEDIA" = "Save Media";
/* Title for the 'message approval' dialog. */
"MESSAGE_APPROVAL_DIALOG_TITLE" = "Message";

Loading…
Cancel
Save