mirror of
https://github.com/Sunnyyoung/WeChatTweak-macOS.git
synced 2025-05-22 22:36:07 +08:00
Add location type message menu tweaks
Add open in Google Maps and Amap menu item
This commit is contained in:
parent
e2300d8edb
commit
8b3dcc24a0
|
@ -11,6 +11,11 @@
|
|||
|
||||
#import <CoreImage/CoreImage.h>
|
||||
|
||||
typedef NS_ENUM(NSUInteger, OpenMapMenuType) {
|
||||
OpenMapMenuTypeGoogleMaps = 0,
|
||||
OpenMapMenuTypeAmap
|
||||
};
|
||||
|
||||
@implementation NSObject (ContextMenu)
|
||||
|
||||
static void __attribute__((constructor)) tweak(void) {
|
||||
|
@ -76,6 +81,26 @@ static void __attribute__((constructor)) tweak(void) {
|
|||
})];
|
||||
break;
|
||||
}
|
||||
case MessageDataTypeLocation: {
|
||||
[menu addItem:NSMenuItem.separatorItem];
|
||||
[menu addItem:({
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.OpenInGoogleMaps"]
|
||||
action:@selector(tweakOpenMaps:)
|
||||
keyEquivalent:@""];
|
||||
item.target = self;
|
||||
item.tag = OpenMapMenuTypeGoogleMaps;
|
||||
item;
|
||||
})];
|
||||
[menu addItem:({
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.OpenInAmap"]
|
||||
action:@selector(tweakOpenMaps:)
|
||||
keyEquivalent:@""];
|
||||
item.target = self;
|
||||
item.tag = OpenMapMenuTypeAmap;
|
||||
item;
|
||||
})];
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
|
@ -153,4 +178,32 @@ static void __attribute__((constructor)) tweak(void) {
|
|||
}];
|
||||
}
|
||||
|
||||
- (void)tweakOpenMaps:(NSMenuItem *)sender {
|
||||
MMMessageCellView *cell = (MMMessageCellView *)sender.target;
|
||||
|
||||
NSURL *url = ({
|
||||
NSURL *url = nil;
|
||||
NSDictionary *location = [NSDictionary dictionaryWithXMLString:cell.messageTableItem.message.msgContent][@"location"];
|
||||
id x = location[@"_x"];
|
||||
id y = location[@"_y"];
|
||||
if (x && y) {
|
||||
switch (sender.tag) {
|
||||
case OpenMapMenuTypeGoogleMaps:
|
||||
url = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.google.com/maps/search/?api=1&query=%@,%@", x, y]];
|
||||
break;
|
||||
case OpenMapMenuTypeAmap:
|
||||
url = [NSURL URLWithString:[NSString stringWithFormat:@"https://uri.amap.com/marker?position=%@,%@", y, x]];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
url;
|
||||
});
|
||||
|
||||
if (url) {
|
||||
[NSWorkspace.sharedWorkspace openURL:url];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -17,6 +17,7 @@ typedef NS_ENUM(unsigned int, MessageDataType) {
|
|||
MessageDataTypeVoice = 34,
|
||||
MessageDataTypeVideo = 43,
|
||||
MessageDataTypeSticker = 47,
|
||||
MessageDataTypeLocation = 48,
|
||||
MessageDataTypeAppUrl = 49,
|
||||
MessageDataTypePrompt = 10000
|
||||
};
|
||||
|
|
|
@ -22,3 +22,5 @@
|
|||
"Tweak.MessageMenuItem.IdentifyQRCode" = "Identify QRCode";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "The result of the recognition has been copied to the pasteboard";
|
||||
"Tweak.MessageMenuItem.ExportSticker" = "Export Sticker";
|
||||
"Tweak.MessageMenuItem.OpenInGoogleMaps" = "Open in Google Maps";
|
||||
"Tweak.MessageMenuItem.OpenInAmap" = "Open in Amap";
|
||||
|
|
|
@ -22,3 +22,5 @@
|
|||
"Tweak.MessageMenuItem.IdentifyQRCode" = "识别二维码";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "识别结果已复制到粘贴板";
|
||||
"Tweak.MessageMenuItem.ExportSticker" = "导出表情";
|
||||
"Tweak.MessageMenuItem.OpenInGoogleMaps" = "使用谷歌地图打开";
|
||||
"Tweak.MessageMenuItem.OpenInAmap" = "使用高德地图打开";
|
||||
|
|
|
@ -22,3 +22,5 @@
|
|||
"Tweak.MessageMenuItem.IdentifyQRCode" = "識別QRCode";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "識別結果已復製到粘貼板";
|
||||
"Tweak.MessageMenuItem.ExportSticker" = "導出貼圖";
|
||||
"Tweak.MessageMenuItem.OpenInGoogleMaps" = "使用谷歌地圖打開";
|
||||
"Tweak.MessageMenuItem.OpenInAmap" = "使用高德地圖打開";
|
||||
|
|
Loading…
Reference in New Issue
Block a user