211 lines
7.8 KiB
Objective-C
211 lines
7.8 KiB
Objective-C
#import "JcPrinterPlugin.h"
|
|
|
|
#if !TARGET_IPHONE_SIMULATOR
|
|
#import <JCPrinterSDK/JCPrinterSDK.h>
|
|
#endif
|
|
|
|
@implementation JcPrinterPlugin
|
|
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
|
|
FlutterMethodChannel* channel = [FlutterMethodChannel methodChannelWithName:@"jc_printer" binaryMessenger:[registrar messenger]];
|
|
|
|
JcPrinterPlugin* instance = [[JcPrinterPlugin alloc] init];
|
|
[registrar addMethodCallDelegate:instance channel:channel];
|
|
|
|
|
|
FlutterEventChannel* eventChannel = [FlutterEventChannel eventChannelWithName:@"printer_stream" binaryMessenger:[registrar messenger]];
|
|
[eventChannel setStreamHandler:instance];
|
|
}
|
|
|
|
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
|
|
// NSLog(@"arguments is :%@", call.arguments);
|
|
|
|
#if !TARGET_IPHONE_SIMULATOR
|
|
[self printingCount];
|
|
[self errorInfo];
|
|
|
|
if ([@"getPlatformVersion" isEqualToString:call.method]) {
|
|
result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);
|
|
} else if ([@"connect" isEqualToString:call.method]) {
|
|
[self connect:call.arguments];
|
|
result(nil);
|
|
} else if ([@"disconnect" isEqualToString:call.method]) {
|
|
[self disconnect];
|
|
result(nil);
|
|
} else if ([@"setTotalPrints" isEqualToString:call.method]) {
|
|
[self setTotalPrints:call.arguments];
|
|
result(nil);
|
|
} else if ([@"initDrawingBoard" isEqualToString:call.method]) {
|
|
[self initDrawingBoard:call.arguments result:result];
|
|
} else if ([@"drawLabelImage" isEqualToString:call.method]) {
|
|
[self drawLabelImage:call.arguments result:result];
|
|
} else if ([@"drawLabelText" isEqualToString:call.method]) {
|
|
[self drawLabelText:call.arguments result:result];
|
|
} else if ([@"drawLabelBarcode" isEqualToString:call.method]) {
|
|
[self drawLabelBarcode:call.arguments result:result];
|
|
} else if ([@"getLabelData" isEqualToString:call.method]) {
|
|
[self getLabelData:result];
|
|
} else if ([@"startJob" isEqualToString:call.method]) {
|
|
[self startJob:call.arguments result:result];
|
|
} else if ([@"cancelJob" isEqualToString:call.method]) {
|
|
[self cancelJob:result];
|
|
} else if ([@"endPrint" isEqualToString:call.method]) {
|
|
[self endPrint:result];
|
|
} else if ([@"commit" isEqualToString:call.method]) {
|
|
[self commit:call.arguments result:result];
|
|
} else {
|
|
result(FlutterMethodNotImplemented);
|
|
}
|
|
#else
|
|
result(nil);
|
|
#endif
|
|
}
|
|
|
|
#if !TARGET_IPHONE_SIMULATOR
|
|
- (void) disconnect {
|
|
[JCAPI closePrinter];
|
|
}
|
|
|
|
- (void) setTotalPrints:(NSString *)args {
|
|
NSInteger page = [args integerValue];
|
|
[JCAPI setTotalQuantityOfPrints:page];
|
|
}
|
|
|
|
- (void)initDrawingBoard:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSNumber *width = args[@"width"];
|
|
NSNumber *height = args[@"height"];
|
|
NSNumber *horizontalShift = args[@"horizontalShift"];
|
|
NSNumber *verticalShift = args[@"verticalShift"];
|
|
NSNumber *rotate = args[@"rotate"];
|
|
NSString *font = args[@"font"];
|
|
|
|
[JCAPI initDrawingBoard:width.floatValue withHeight:height.floatValue withHorizontalShift:horizontalShift.floatValue withVerticalShift:verticalShift.floatValue rotate:rotate.intValue font:font];
|
|
result(nil);
|
|
}
|
|
|
|
- (void)drawLabelImage:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSNumber *x = args[@"x"];
|
|
NSNumber *y = args[@"y"];
|
|
NSNumber *width = args[@"width"];
|
|
NSNumber *height = args[@"height"];
|
|
NSNumber *rotate = args[@"rotate"];
|
|
NSNumber *type = args[@"type"];
|
|
NSNumber *threshold = args[@"threshold"];
|
|
NSString *base64 = args[@"base64"];
|
|
|
|
BOOL isSuccess = [JCAPI DrawLableImage:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withImageData:base64 withRotate:rotate.intValue withImageProcessingType:type.intValue withImageProcessingValue:threshold.floatValue];
|
|
result(@(isSuccess));
|
|
}
|
|
|
|
- (void)drawLabelText:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSNumber *x = args[@"x"];
|
|
NSNumber *y = args[@"y"];
|
|
NSNumber *width = args[@"width"];
|
|
NSNumber *height = args[@"height"];
|
|
NSNumber *fontSize = args[@"fontSize"];
|
|
NSNumber *rotate = args[@"rotate"];
|
|
NSNumber *textAlignHorizontal = args[@"textAlignHorizontal"];
|
|
NSNumber *textAlignVertical = args[@"textAlignVertical"];
|
|
NSNumber *lineMode = args[@"lineMode"];
|
|
NSNumber *letterSpacing = args[@"letterSpacing"];
|
|
NSNumber *lineSpacing = args[@"lineSpacing"];
|
|
NSString *content = args[@"content"];
|
|
|
|
BOOL isSuccess = [JCAPI drawLableText:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:content withFontFamily:@"" withFontSize:fontSize.floatValue withRotate:rotate.intValue withTextAlignHorizonral:textAlignHorizontal.intValue withTextAlignVertical:textAlignVertical.intValue withLineMode:lineMode.intValue withLetterSpacing:letterSpacing.floatValue withLineSpacing:lineSpacing.floatValue withFontStyle:@[@0,@0,@0,@0]];
|
|
result(@(isSuccess));
|
|
}
|
|
|
|
- (void)drawLabelBarcode:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSNumber *x = args[@"x"];
|
|
NSNumber *y = args[@"y"];
|
|
NSNumber *width = args[@"width"];
|
|
NSNumber *height = args[@"height"];
|
|
NSNumber *fontSize = args[@"fontSize"];
|
|
NSNumber *rotate = args[@"rotate"];
|
|
NSNumber *codeType = args[@"codeType"];
|
|
NSNumber *textPosition = args[@"textPosition"];
|
|
NSNumber *textHeight = args[@"textHeight"];
|
|
NSString *text = args[@"text"];
|
|
|
|
BOOL isSuccess = [JCAPI drawLableBarCode:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:text withFontSize:fontSize.floatValue withRotate:rotate.intValue withCodeType:codeType.intValue withTextHeight:textHeight.floatValue withTextPosition:textPosition.intValue];
|
|
result(@(isSuccess));
|
|
}
|
|
|
|
- (void)getLabelData:(FlutterResult)result {
|
|
NSString *data = [JCAPI GenerateLableJson];
|
|
result(data);
|
|
}
|
|
|
|
- (void)startJob:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSNumber *blackRules = args[@"blackRules"];
|
|
NSNumber *paperStyle = args[@"paperStyle"];
|
|
[JCAPI startJob:blackRules.intValue withPaperStyle:paperStyle.intValue withCompletion:^(BOOL isSuccess) {
|
|
result(@(isSuccess));
|
|
}];
|
|
}
|
|
|
|
- (void)commit:(NSDictionary *)args result:(FlutterResult)result {
|
|
NSString *data = args[@"data"];
|
|
NSNumber *count = args[@"count"];
|
|
[JCAPI commit:data withOnePageNumbers:count.intValue withComplete:^(BOOL isSuccess) {
|
|
result(@(isSuccess));
|
|
}];
|
|
}
|
|
|
|
- (void)endPrint:(FlutterResult)result {
|
|
[JCAPI endPrint:^(BOOL isSuccess) {
|
|
result(@(isSuccess));
|
|
}];
|
|
}
|
|
|
|
- (void)cancelJob:(FlutterResult)result {
|
|
[JCAPI cancelJob:^(BOOL isSuccess) {
|
|
result(@(isSuccess));
|
|
}];
|
|
}
|
|
#endif
|
|
|
|
#pragma mark - FlutterStreamHandler
|
|
|
|
- (FlutterError *)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)events {
|
|
self.eventSink = events;
|
|
return nil;
|
|
}
|
|
|
|
- (FlutterError *)onCancelWithArguments:(id)arguments {
|
|
return nil;
|
|
}
|
|
|
|
#if !TARGET_IPHONE_SIMULATOR
|
|
- (void)connect:(NSString *)name {
|
|
[JCAPI openPrinter:name completion:^(BOOL isSuccess) {
|
|
NSDictionary *params = @{
|
|
@"type": @"connectState",
|
|
@"result": @(isSuccess),
|
|
};
|
|
!self.eventSink ? : self.eventSink(params);
|
|
}];
|
|
}
|
|
|
|
-(void)errorInfo {
|
|
[JCAPI getPrintingErrorInfo:^(NSString *printInfo) {
|
|
NSDictionary *params = @{
|
|
@"type": @"errorInfo",
|
|
@"result": printInfo,
|
|
};
|
|
!self.eventSink ? : self.eventSink(params);
|
|
}];
|
|
}
|
|
|
|
- (void)printingCount {
|
|
[JCAPI getPrintingCountInfo:^(NSDictionary *printDicInfo) {
|
|
NSDictionary *params = @{
|
|
@"type": @"printingCount",
|
|
@"result": printDicInfo,
|
|
};
|
|
!self.eventSink ? : self.eventSink(params);
|
|
}];
|
|
}
|
|
#endif
|
|
|
|
@end
|