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 - (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 - (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 - (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. // TODO Interpolate from 0->0.3 depending on distance to make visible.
NSTimeInterval animationDuration = 0.3; NSTimeInterval animationDuration = 0.3;
@ -2024,7 +2032,6 @@ typedef enum : NSUInteger {
completion:^(BOOL finished) { completion:^(BOOL finished) {
// TODO pass in real actions // TODO pass in real actions
NSArray<MessageAction *> *messageActions = [viewItem textActionsWithDelegate:self];
MessageActionsViewController *messageActionsViewController = MessageActionsViewController *messageActionsViewController =
[[MessageActionsViewController alloc] initWithFocusedView:cell actions:messageActions]; [[MessageActionsViewController alloc] initWithFocusedView:cell actions:messageActions];

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

@ -48,6 +48,24 @@ struct MessageActionBuilder {
conversationViewItem.deleteAction() 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 { extension ConversationViewItem {
@ -72,6 +90,38 @@ extension ConversationViewItem {
return actions 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 @objc

@ -1162,19 +1162,25 @@
"MEDIA_GALLERY_THIS_MONTH_HEADER" = "This Month"; "MEDIA_GALLERY_THIS_MONTH_HEADER" = "This Month";
/* Action sheet button title */ /* Action sheet button title */
"MESSAGE_ACTION_COPY_TEXT" = "Copy message text"; "MESSAGE_ACTION_COPY_MEDIA" = "Copy Media";
/* Action sheet button title */ /* 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 */ /* Action sheet button subtitle */
"MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "This will delete it on this device only"; "MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "This will delete it on this device only";
/* Action sheet button title */ /* 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 */ /* Action sheet button title */
"MESSAGE_ACTION_DETAILS" = "More info"; "MESSAGE_ACTION_SAVE_MEDIA" = "Save Media";
/* Title for the 'message approval' dialog. */ /* Title for the 'message approval' dialog. */
"MESSAGE_APPROVAL_DIALOG_TITLE" = "Message"; "MESSAGE_APPROVAL_DIALOG_TITLE" = "Message";

Loading…
Cancel
Save