mirror of
https://github.com/Sunnyyoung/WeChatTweak-macOS.git
synced 2025-07-08 00:26:06 +08:00
Merge branch 'upstream-develop' into develop
# Conflicts: # WeChatTweak.framework/Versions/A/WeChatTweak
This commit is contained in:
commit
382aea6c7d
|
@ -10,6 +10,7 @@
|
||||||
#import <objc/runtime.h>
|
#import <objc/runtime.h>
|
||||||
#import <objc/message.h>
|
#import <objc/message.h>
|
||||||
#import <JRSwizzle/JRSwizzle.h>
|
#import <JRSwizzle/JRSwizzle.h>
|
||||||
|
#import <CoreImage/CoreImage.h>
|
||||||
|
|
||||||
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
||||||
FOUNDATION_EXPORT const unsigned char WeChatTweakVersionString[];
|
FOUNDATION_EXPORT const unsigned char WeChatTweakVersionString[];
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -167,3 +167,9 @@ typedef NS_ENUM(unsigned int, MessageDataType) {
|
||||||
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
|
@property(retain, nonatomic) MMMessageTableItem *messageTableItem;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface MMImageMessageCellView : MMMessageCellView
|
||||||
|
|
||||||
|
@property(retain, nonatomic) NSImage *displayedImage;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
|
@ -18,3 +18,5 @@
|
||||||
"Tweak.Message.AMessage" = "a message";
|
"Tweak.Message.AMessage" = "a message";
|
||||||
"Tweak.MessageMenuItem.CopyLink" = "Copy Link";
|
"Tweak.MessageMenuItem.CopyLink" = "Copy Link";
|
||||||
"Tweak.MessageMenuItem.OpenInBrowser" = "Open In Browser";
|
"Tweak.MessageMenuItem.OpenInBrowser" = "Open In Browser";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCode" = "Identify QRCode";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "The result of the recognition has been copied to the pasteboard";
|
||||||
|
|
|
@ -18,3 +18,5 @@
|
||||||
"Tweak.Message.AMessage" = "一条消息";
|
"Tweak.Message.AMessage" = "一条消息";
|
||||||
"Tweak.MessageMenuItem.CopyLink" = "复制链接";
|
"Tweak.MessageMenuItem.CopyLink" = "复制链接";
|
||||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用浏览器打开";
|
"Tweak.MessageMenuItem.OpenInBrowser" = "使用浏览器打开";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCode" = "识别二维码";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "识别结果已复制到粘贴板";
|
||||||
|
|
|
@ -18,3 +18,5 @@
|
||||||
"Tweak.Message.AMessage" = "一条消息";
|
"Tweak.Message.AMessage" = "一条消息";
|
||||||
"Tweak.MessageMenuItem.CopyLink" = "複製鏈接";
|
"Tweak.MessageMenuItem.CopyLink" = "複製鏈接";
|
||||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用瀏覽器打開";
|
"Tweak.MessageMenuItem.OpenInBrowser" = "使用瀏覽器打開";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCode" = "識別QRCode";
|
||||||
|
"Tweak.MessageMenuItem.IdentifyQRCodeNotification" = "識別結果已復製到粘貼板";
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#import <objc/runtime.h>
|
#import <objc/runtime.h>
|
||||||
#import <objc/message.h>
|
#import <objc/message.h>
|
||||||
#import <JRSwizzle/JRSwizzle.h>
|
#import <JRSwizzle/JRSwizzle.h>
|
||||||
|
#import <CoreImage/CoreImage.h>
|
||||||
|
|
||||||
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
||||||
FOUNDATION_EXPORT const unsigned char WeChatTweakVersionString[];
|
FOUNDATION_EXPORT const unsigned char WeChatTweakVersionString[];
|
||||||
|
|
|
@ -211,6 +211,12 @@ static void __attribute__((constructor)) tweak(void) {
|
||||||
NSMenuItem *openUrlItem = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.OpenInBrowser"] action:@selector(tweakOpenUrlItem:) keyEquivalent:@""];
|
NSMenuItem *openUrlItem = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.OpenInBrowser"] action:@selector(tweakOpenUrlItem:) keyEquivalent:@""];
|
||||||
openUrlItem;
|
openUrlItem;
|
||||||
})];
|
})];
|
||||||
|
} else if (view.messageTableItem.message.messageType == MessageDataTypeImage) {
|
||||||
|
[menu addItem:[NSMenuItem separatorItem]];
|
||||||
|
[menu addItem:({
|
||||||
|
NSMenuItem *qrCodeItem = [[NSMenuItem alloc] initWithTitle:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.IdentifyQRCode"] action:@selector(tweakIdentifyQRCode:) keyEquivalent:@""];
|
||||||
|
qrCodeItem;
|
||||||
|
})];
|
||||||
}
|
}
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
@ -230,6 +236,34 @@ static void __attribute__((constructor)) tweak(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)tweakIdentifyQRCode:(id)sender {
|
||||||
|
MMImageMessageCellView *cell = (MMImageMessageCellView *)self;
|
||||||
|
NSImage *image = cell.displayedImage;
|
||||||
|
if (image) {
|
||||||
|
NSData *imageData = [image TIFFRepresentation];
|
||||||
|
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy: CIDetectorAccuracyHigh}];
|
||||||
|
NSArray *results = [detector featuresInImage:[CIImage imageWithData:imageData]];
|
||||||
|
if (results.count) {
|
||||||
|
CIQRCodeFeature *result = results.firstObject;
|
||||||
|
NSString *content = result.messageString;
|
||||||
|
if (content.length) {
|
||||||
|
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
|
||||||
|
[pasteboard clearContents];
|
||||||
|
[pasteboard setString:content forType:NSStringPboardType];
|
||||||
|
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:({
|
||||||
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
|
notification.informativeText = [NSBundle.tweakBundle localizedStringForKey:@"Tweak.MessageMenuItem.IdentifyQRCodeNotification"];
|
||||||
|
notification;
|
||||||
|
})];
|
||||||
|
NSURL *url = [NSURL URLWithString:content];
|
||||||
|
if ([url.scheme containsString:@"http"]) {
|
||||||
|
[[NSWorkspace sharedWorkspace] openURL:url];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (NSString *)_tweakMessageContentUrl {
|
- (NSString *)_tweakMessageContentUrl {
|
||||||
MMMessageCellView *cell = (MMMessageCellView *)self;
|
MMMessageCellView *cell = (MMMessageCellView *)self;
|
||||||
NSString *content = cell.messageTableItem.message.msgContent;
|
NSString *content = cell.messageTableItem.message.msgContent;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user