mirror of
https://github.com/Sunnyyoung/WeChatTweak-macOS.git
synced 2025-07-08 00:26:06 +08:00
App url message menu add some items
This commit is contained in:
parent
36393a61cf
commit
80f2a8d543
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -17,7 +17,8 @@ typedef NS_ENUM(unsigned int, MessageDataType) {
|
|||
MessageDataTypeVoice = 34,
|
||||
MessageDataTypeVideo = 43,
|
||||
MessageDataTypeSticker = 47,
|
||||
MessageDataTypeLink = 49,
|
||||
MessageDataTypeAppUrl = 49,
|
||||
MessageDataTypePrompt = 10000
|
||||
};
|
||||
|
||||
@interface NSString (MD5)
|
||||
|
@ -151,3 +152,16 @@ typedef NS_ENUM(unsigned int, MessageDataType) {
|
|||
- (id)initWithViewControllers:(NSArray *)arg1;
|
||||
|
||||
@end
|
||||
|
||||
@interface MMMessageTableItem : NSObject
|
||||
|
||||
@property(retain, nonatomic) MessageData *message;
|
||||
|
||||
@end
|
||||
|
||||
@interface MMMessageCellView : NSTableCellView
|
||||
|
||||
@property(retain, nonatomic) NSView *avatarImgView;
|
||||
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
|
||||
|
||||
@end
|
||||
|
|
|
@ -16,3 +16,5 @@
|
|||
"Tweak.Message.Sticker" = "Sticker";
|
||||
"Tweak.Message.Link" = "Link";
|
||||
"Tweak.Message.AMessage" = "a message";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "Copy Link";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "Open In Browser";
|
||||
|
|
|
@ -16,3 +16,5 @@
|
|||
"Tweak.Message.Sticker" = "表情";
|
||||
"Tweak.Message.Link" = "链接";
|
||||
"Tweak.Message.AMessage" = "一条消息";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "复制链接";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用浏览器打开";
|
||||
|
|
|
@ -16,3 +16,5 @@
|
|||
"Tweak.Message.Sticker" = "表情";
|
||||
"Tweak.Message.Link" = "链接";
|
||||
"Tweak.Message.AMessage" = "一条消息";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "複製鏈接";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用瀏覽器打開";
|
||||
|
|
|
@ -63,6 +63,7 @@ static void __attribute__((constructor)) tweak(void) {
|
|||
[objc_getClass("CUtility") jr_swizzleClassMethod:NSSelectorFromString(@"FFSvrChatInfoMsgWithImgZZ") withClassMethod:@selector(tweak_HasWechatInstance) error:nil];
|
||||
[objc_getClass("NSRunningApplication") jr_swizzleClassMethod:NSSelectorFromString(@"runningApplicationsWithBundleIdentifier:") withClassMethod:@selector(tweak_runningApplicationsWithBundleIdentifier:) error:nil];
|
||||
[objc_getClass("MASPreferencesWindowController") jr_swizzleMethod:NSSelectorFromString(@"initWithViewControllers:") withMethod:@selector(tweak_initWithViewControllers:) error:nil];
|
||||
[objc_getClass("MMMessageCellView") jr_swizzleMethod:NSSelectorFromString(@"contextMenu") withMethod:@selector(tweak_contextMenu) error:nil];
|
||||
|
||||
objc_property_attribute_t type = { "T", "@\"NSString\"" }; // NSString
|
||||
objc_property_attribute_t atom = { "N", "" }; // nonatomic
|
||||
|
@ -121,7 +122,7 @@ static void __attribute__((constructor)) tweak(void) {
|
|||
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Video"]]; break;
|
||||
case MessageDataTypeSticker:
|
||||
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Sticker"]]; break;
|
||||
case MessageDataTypeLink:
|
||||
case MessageDataTypeAppUrl:
|
||||
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Link"]]; break;
|
||||
default:
|
||||
[msgContent appendString:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.AMessage"]]; break;
|
||||
|
@ -171,6 +172,38 @@ static void __attribute__((constructor)) tweak(void) {
|
|||
});
|
||||
}
|
||||
|
||||
#pragma mark - AppUrlMessageMenu
|
||||
|
||||
- (id)tweak_contextMenu {
|
||||
MMMessageCellView *view = (MMMessageCellView *)self;
|
||||
NSMenu *menu = (NSMenu *)[self tweak_contextMenu];
|
||||
if (view.messageTableItem.message.messageType == MessageDataTypeAppUrl) {
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
[menu addItem:({
|
||||
NSMenuItem *copyUrlItem = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.CopyLink"] action:@selector(tweakCopyUrl:) keyEquivalent:@""];
|
||||
copyUrlItem;
|
||||
})];
|
||||
[menu addItem:({
|
||||
NSMenuItem *openUrlItem = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.OpenInBrowser"] action:@selector(tweakOpenUrlItem:) keyEquivalent:@""];
|
||||
openUrlItem;
|
||||
})];
|
||||
}
|
||||
return menu;
|
||||
}
|
||||
|
||||
- (void)tweakCopyUrl:(id)sender {
|
||||
MMMessageCellView *cell = (MMMessageCellView *)self;
|
||||
NSString *url = [cell.messageTableItem.message.msgContent tweak_subStringFrom:@"<url>" to:@"</url>"];
|
||||
[[NSPasteboard generalPasteboard] clearContents];
|
||||
[[NSPasteboard generalPasteboard] setString:url forType:NSStringPboardType];
|
||||
}
|
||||
|
||||
- (void)tweakOpenUrlItem:(id)sender {
|
||||
MMMessageCellView *cell = (MMMessageCellView *)self;
|
||||
NSString *url = [cell.messageTableItem.message.msgContent tweak_subStringFrom:@"<url>" to:@"</url>"];
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
|
||||
}
|
||||
|
||||
#pragma mark - Mutiple Instance
|
||||
|
||||
+ (BOOL)tweak_HasWechatInstance {
|
||||
|
|
Loading…
Reference in New Issue
Block a user