mirror of
https://github.com/Sunnyyoung/WeChatTweak-macOS.git
synced 2025-07-08 00:26:06 +08:00
Image Message Menu Add Identify QRCode
This commit is contained in:
parent
1f3bfacea2
commit
83b5eac8d6
|
@ -10,6 +10,7 @@
|
|||
#import <objc/runtime.h>
|
||||
#import <objc/message.h>
|
||||
#import <JRSwizzle/JRSwizzle.h>
|
||||
#import <CoreImage/CoreImage.h>
|
||||
|
||||
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
||||
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;
|
||||
|
||||
@end
|
||||
|
||||
@interface MMImageMessageCellView : MMMessageCellView
|
||||
|
||||
@property(retain, nonatomic) NSImage *displayedImage;
|
||||
|
||||
@end
|
||||
|
|
|
@ -18,3 +18,4 @@
|
|||
"Tweak.Message.AMessage" = "a message";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "Copy Link";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "Open In Browser";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCode" = "Identify QRCode";
|
||||
|
|
|
@ -18,3 +18,4 @@
|
|||
"Tweak.Message.AMessage" = "一条消息";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "复制链接";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用浏览器打开";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCode" = "识别二维码";
|
||||
|
|
|
@ -18,3 +18,4 @@
|
|||
"Tweak.Message.AMessage" = "一条消息";
|
||||
"Tweak.MessageMenuItem.CopyLink" = "複製鏈接";
|
||||
"Tweak.MessageMenuItem.OpenInBrowser" = "使用瀏覽器打開";
|
||||
"Tweak.MessageMenuItem.IdentifyQRCode" = "識別QRCode";
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#import <objc/runtime.h>
|
||||
#import <objc/message.h>
|
||||
#import <JRSwizzle/JRSwizzle.h>
|
||||
#import <CoreImage/CoreImage.h>
|
||||
|
||||
FOUNDATION_EXPORT double WeChatTweakVersionNumber;
|
||||
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:@""];
|
||||
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;
|
||||
}
|
||||
|
@ -230,6 +236,23 @@ 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) {
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:content]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)_tweakMessageContentUrl {
|
||||
MMMessageCellView *cell = (MMMessageCellView *)self;
|
||||
NSString *content = cell.messageTableItem.message.msgContent;
|
||||
|
|
Loading…
Reference in New Issue
Block a user