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
6b43144d29
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,
|
MessageDataTypeVoice = 34,
|
||||||
MessageDataTypeVideo = 43,
|
MessageDataTypeVideo = 43,
|
||||||
MessageDataTypeSticker = 47,
|
MessageDataTypeSticker = 47,
|
||||||
MessageDataTypeLink = 49,
|
MessageDataTypeAppUrl = 49,
|
||||||
|
MessageDataTypePrompt = 10000
|
||||||
};
|
};
|
||||||
|
|
||||||
@interface NSString (MD5)
|
@interface NSString (MD5)
|
||||||
|
@ -151,3 +152,16 @@ typedef NS_ENUM(unsigned int, MessageDataType) {
|
||||||
- (id)initWithViewControllers:(NSArray *)arg1;
|
- (id)initWithViewControllers:(NSArray *)arg1;
|
||||||
|
|
||||||
@end
|
@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.Sticker" = "Sticker";
|
||||||
"Tweak.Message.Link" = "Link";
|
"Tweak.Message.Link" = "Link";
|
||||||
"Tweak.Message.AMessage" = "a message";
|
"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.Sticker" = "表情";
|
||||||
"Tweak.Message.Link" = "链接";
|
"Tweak.Message.Link" = "链接";
|
||||||
"Tweak.Message.AMessage" = "一条消息";
|
"Tweak.Message.AMessage" = "一条消息";
|
||||||
|
"Tweak.MessageMenuItem.CopyLink" = "复制链接";
|
||||||
|
"Tweak.MessageMenuItem.OpenInBrowser" = "使用浏览器打开";
|
||||||
|
|
|
@ -16,3 +16,5 @@
|
||||||
"Tweak.Message.Sticker" = "表情";
|
"Tweak.Message.Sticker" = "表情";
|
||||||
"Tweak.Message.Link" = "链接";
|
"Tweak.Message.Link" = "链接";
|
||||||
"Tweak.Message.AMessage" = "一条消息";
|
"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("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("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("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 type = { "T", "@\"NSString\"" }; // NSString
|
||||||
objc_property_attribute_t atom = { "N", "" }; // nonatomic
|
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;
|
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Video"]]; break;
|
||||||
case MessageDataTypeSticker:
|
case MessageDataTypeSticker:
|
||||||
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Sticker"]]; break;
|
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Sticker"]]; break;
|
||||||
case MessageDataTypeLink:
|
case MessageDataTypeAppUrl:
|
||||||
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Link"]]; break;
|
[msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Link"]]; break;
|
||||||
default:
|
default:
|
||||||
[msgContent appendString:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.AMessage"]]; break;
|
[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
|
#pragma mark - Mutiple Instance
|
||||||
|
|
||||||
+ (BOOL)tweak_HasWechatInstance {
|
+ (BOOL)tweak_HasWechatInstance {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user