mirror of
https://github.com/zxing/zxing.git
synced 2025-02-21 02:55:27 -08:00
ZXing license link within the scanning view from erikprice. Closes Issue 1075.
git-svn-id: https://zxing.googlecode.com/svn/trunk@2198 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
45abf6d9ec
commit
bf133c75d7
|
@ -1,4 +1,4 @@
|
||||||
/* Add Contact? */
|
/* Add Contact? */
|
||||||
"AddContactAction alert message" = "Add Contact?";
|
"AddContactAction alert message" = "Add Contact?";
|
||||||
|
|
||||||
/* Cancel */
|
/* Cancel */
|
||||||
|
@ -150,4 +150,25 @@
|
||||||
"No Actions" = "No Actions";
|
"No Actions" = "No Actions";
|
||||||
|
|
||||||
/*Button title when multiple actions are available*/
|
/*Button title when multiple actions are available*/
|
||||||
"Actions ..." = "Actions ...";
|
"Actions ..." = "Actions ...";
|
||||||
|
|
||||||
|
/* Place a red line over the bar code to be scanned. */
|
||||||
|
"OverlayView 1d instructions" = "Place a red line over the bar code to be scanned.";
|
||||||
|
|
||||||
|
/* Cancel */
|
||||||
|
"OverlayView cancel button title" = "Cancel";
|
||||||
|
|
||||||
|
/* Place a barcode inside the viewfinder rectangle to scan it. */
|
||||||
|
"OverlayView displayed message" = "Place a barcode inside the viewfinder rectangle to scan it.";
|
||||||
|
|
||||||
|
/* Cancel */
|
||||||
|
"OverlayView license alert cancel title" = "Cancel";
|
||||||
|
|
||||||
|
/* Scanning functionality provided by ZXing library, licensed under Apache License version 2.0. */
|
||||||
|
"OverlayView license alert message" = "Scanning functionality provided by ZXing library, licensed under Apache License version 2.0.";
|
||||||
|
|
||||||
|
/* License */
|
||||||
|
"OverlayView license alert title" = "License";
|
||||||
|
|
||||||
|
/* View License */
|
||||||
|
"OverlayView license alert view title" = "View License";
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
@property (nonatomic, assign) CGRect cropRect;
|
@property (nonatomic, assign) CGRect cropRect;
|
||||||
@property (nonatomic, copy) NSString *displayedMessage;
|
@property (nonatomic, copy) NSString *displayedMessage;
|
||||||
|
|
||||||
|
- (id)initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled showLicense:(BOOL)shouldShowLicense;
|
||||||
- (id)initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled;
|
- (id)initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled;
|
||||||
|
|
||||||
- (void)setPoint:(CGPoint)point;
|
- (void)setPoint:(CGPoint)point;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
// -*- Mode: ObjC; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright 2009 Jeff Verkoeyen
|
* Copyright 2009 Jeff Verkoeyen
|
||||||
*
|
*
|
||||||
|
@ -17,9 +19,11 @@
|
||||||
#import "OverlayView.h"
|
#import "OverlayView.h"
|
||||||
|
|
||||||
static const CGFloat kPadding = 10;
|
static const CGFloat kPadding = 10;
|
||||||
|
static const CGFloat kLicenseButtonPadding = 10;
|
||||||
|
|
||||||
@interface OverlayView()
|
@interface OverlayView()
|
||||||
@property (nonatomic,assign) UIButton *cancelButton;
|
@property (nonatomic,assign) UIButton *cancelButton;
|
||||||
|
@property (nonatomic,assign) UIButton *licenseButton;
|
||||||
@property (nonatomic,retain) UILabel *instructionsLabel;
|
@property (nonatomic,retain) UILabel *instructionsLabel;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -29,12 +33,17 @@ static const CGFloat kPadding = 10;
|
||||||
@synthesize delegate, oneDMode;
|
@synthesize delegate, oneDMode;
|
||||||
@synthesize points = _points;
|
@synthesize points = _points;
|
||||||
@synthesize cancelButton;
|
@synthesize cancelButton;
|
||||||
|
@synthesize licenseButton;
|
||||||
@synthesize cropRect;
|
@synthesize cropRect;
|
||||||
@synthesize instructionsLabel;
|
@synthesize instructionsLabel;
|
||||||
@synthesize displayedMessage;
|
@synthesize displayedMessage;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
- (id) initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled {
|
- (id)initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled {
|
||||||
|
return [self initWithFrame:theFrame cancelEnabled:isCancelEnabled oneDMode:isOneDModeEnabled showLicense:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id) initWithFrame:(CGRect)theFrame cancelEnabled:(BOOL)isCancelEnabled oneDMode:(BOOL)isOneDModeEnabled showLicense:(BOOL)showLicenseButton {
|
||||||
self = [super initWithFrame:theFrame];
|
self = [super initWithFrame:theFrame];
|
||||||
if( self ) {
|
if( self ) {
|
||||||
|
|
||||||
|
@ -51,7 +60,7 @@ static const CGFloat kPadding = 10;
|
||||||
if (isCancelEnabled) {
|
if (isCancelEnabled) {
|
||||||
UIButton *butt = [UIButton buttonWithType:UIButtonTypeRoundedRect];
|
UIButton *butt = [UIButton buttonWithType:UIButtonTypeRoundedRect];
|
||||||
self.cancelButton = butt;
|
self.cancelButton = butt;
|
||||||
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
|
[cancelButton setTitle:NSLocalizedStringWithDefaultValue(@"OverlayView cancel button title", nil, [NSBundle mainBundle], @"Cancel", @"Cancel") forState:UIControlStateNormal];
|
||||||
if (oneDMode) {
|
if (oneDMode) {
|
||||||
[cancelButton setTransform:CGAffineTransformMakeRotation(M_PI/2)];
|
[cancelButton setTransform:CGAffineTransformMakeRotation(M_PI/2)];
|
||||||
|
|
||||||
|
@ -68,6 +77,18 @@ static const CGFloat kPadding = 10;
|
||||||
[self addSubview:cancelButton];
|
[self addSubview:cancelButton];
|
||||||
[self addSubview:imageView];
|
[self addSubview:imageView];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (showLicenseButton) {
|
||||||
|
self.licenseButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
|
||||||
|
|
||||||
|
CGRect lbFrame = [licenseButton frame];
|
||||||
|
lbFrame.origin.x = self.frame.size.width - licenseButton.frame.size.width - kLicenseButtonPadding;
|
||||||
|
lbFrame.origin.y = self.frame.size.height - licenseButton.frame.size.height - kLicenseButtonPadding;
|
||||||
|
[licenseButton setFrame:lbFrame];
|
||||||
|
[licenseButton addTarget:self action:@selector(showLicenseAlert:) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
|
||||||
|
[self addSubview:licenseButton];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -79,6 +100,23 @@ static const CGFloat kPadding = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)showLicenseAlert:(id)sender {
|
||||||
|
NSString *title = NSLocalizedStringWithDefaultValue(@"OverlayView license alert title", nil, [NSBundle mainBundle], @"License", @"License");
|
||||||
|
NSString *message = NSLocalizedStringWithDefaultValue(@"OverlayView license alert message", nil, [NSBundle mainBundle], @"Scanning functionality provided by ZXing library, licensed under Apache 2.0 license.", @"Scanning functionality provided by ZXing library, licensed under Apache 2.0 license.");
|
||||||
|
NSString *cancelTitle = NSLocalizedStringWithDefaultValue(@"OverlayView license alert cancel title", nil, [NSBundle mainBundle], @"OK", @"OK");
|
||||||
|
NSString *viewTitle = NSLocalizedStringWithDefaultValue(@"OverlayView license alert view title", nil, [NSBundle mainBundle], @"View License", @"View License");
|
||||||
|
|
||||||
|
UIAlertView *av = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:cancelTitle otherButtonTitles:viewTitle, nil];
|
||||||
|
[av show];
|
||||||
|
[av release];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
|
||||||
|
if (buttonIndex == [alertView firstOtherButtonIndex]) {
|
||||||
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.apache.org/licenses/LICENSE-2.0.html"]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
- (void) dealloc {
|
- (void) dealloc {
|
||||||
[imageView release];
|
[imageView release];
|
||||||
|
@ -135,7 +173,7 @@ static const CGFloat kPadding = 10;
|
||||||
- (void)drawRect:(CGRect)rect {
|
- (void)drawRect:(CGRect)rect {
|
||||||
[super drawRect:rect];
|
[super drawRect:rect];
|
||||||
if (displayedMessage == nil) {
|
if (displayedMessage == nil) {
|
||||||
self.displayedMessage = @"Place a barcode inside the viewfinder rectangle to scan it.";
|
self.displayedMessage = NSLocalizedStringWithDefaultValue(@"OverlayView displayed message", nil, [NSBundle mainBundle], @"Place a barcode inside the viewfinder rectangle to scan it.", @"Place a barcode inside the viewfinder rectangle to scan it.");
|
||||||
}
|
}
|
||||||
CGContextRef c = UIGraphicsGetCurrentContext();
|
CGContextRef c = UIGraphicsGetCurrentContext();
|
||||||
|
|
||||||
|
@ -152,11 +190,14 @@ static const CGFloat kPadding = 10;
|
||||||
// CGContextSetStrokeColor(c, white);
|
// CGContextSetStrokeColor(c, white);
|
||||||
CGContextSaveGState(c);
|
CGContextSaveGState(c);
|
||||||
if (oneDMode) {
|
if (oneDMode) {
|
||||||
char *text = "Place a red line over the bar code to be scanned.";
|
NSString *text = NSLocalizedStringWithDefaultValue(@"OverlayView 1d instructions", nil, [NSBundle mainBundle], @"Place a red line over the bar code to be scanned.", @"Place a red line over the bar code to be scanned.");
|
||||||
CGContextSelectFont(c, "Helvetica", 15, kCGEncodingMacRoman);
|
UIFont *helvetica15 = [UIFont fontWithName:@"Helvetica" size:15];
|
||||||
CGContextScaleCTM(c, -1.0, 1.0);
|
CGSize textSize = [text sizeWithFont:helvetica15];
|
||||||
|
|
||||||
CGContextRotateCTM(c, M_PI/2);
|
CGContextRotateCTM(c, M_PI/2);
|
||||||
CGContextShowTextAtPoint(c, 74.0, 285.0, text, 49);
|
// Invert height and width, because we are rotated.
|
||||||
|
CGPoint textPoint = CGPointMake(self.bounds.size.height / 2 - textSize.width / 2, self.bounds.size.width * -1.0f + 20.0f);
|
||||||
|
[text drawAtPoint:textPoint withFont:helvetica15];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
UIFont *font = [UIFont systemFontOfSize:18];
|
UIFont *font = [UIFont systemFontOfSize:18];
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
@property (nonatomic, retain) OverlayView *overlayView;
|
@property (nonatomic, retain) OverlayView *overlayView;
|
||||||
|
|
||||||
- (id)initWithDelegate:(id<ZXingDelegate>)delegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode;
|
- (id)initWithDelegate:(id<ZXingDelegate>)delegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode;
|
||||||
|
- (id)initWithDelegate:(id<ZXingDelegate>)scanDelegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode showLicense:(BOOL)shouldShowLicense;
|
||||||
|
|
||||||
- (BOOL)fixedFocus;
|
- (BOOL)fixedFocus;
|
||||||
- (void)setTorch:(BOOL)status;
|
- (void)setTorch:(BOOL)status;
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
@interface ZXingWidgetController ()
|
@interface ZXingWidgetController ()
|
||||||
|
|
||||||
@property BOOL showCancel;
|
@property BOOL showCancel;
|
||||||
|
@property BOOL showLicense;
|
||||||
@property BOOL oneDMode;
|
@property BOOL oneDMode;
|
||||||
@property BOOL isStatusBarHidden;
|
@property BOOL isStatusBarHidden;
|
||||||
|
|
||||||
|
@ -49,22 +50,29 @@
|
||||||
#endif
|
#endif
|
||||||
@synthesize result, delegate, soundToPlay;
|
@synthesize result, delegate, soundToPlay;
|
||||||
@synthesize overlayView;
|
@synthesize overlayView;
|
||||||
@synthesize oneDMode, showCancel, isStatusBarHidden;
|
@synthesize oneDMode, showCancel, showLicense, isStatusBarHidden;
|
||||||
@synthesize readers;
|
@synthesize readers;
|
||||||
|
|
||||||
|
|
||||||
- (id)initWithDelegate:(id<ZXingDelegate>)scanDelegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode {
|
- (id)initWithDelegate:(id<ZXingDelegate>)scanDelegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode {
|
||||||
|
|
||||||
|
return [self initWithDelegate:scanDelegate showCancel:shouldShowCancel OneDMode:shouldUseoOneDMode showLicense:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)initWithDelegate:(id<ZXingDelegate>)scanDelegate showCancel:(BOOL)shouldShowCancel OneDMode:(BOOL)shouldUseoOneDMode showLicense:(BOOL)shouldShowLicense {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
[self setDelegate:scanDelegate];
|
[self setDelegate:scanDelegate];
|
||||||
self.oneDMode = shouldUseoOneDMode;
|
self.oneDMode = shouldUseoOneDMode;
|
||||||
self.showCancel = shouldShowCancel;
|
self.showCancel = shouldShowCancel;
|
||||||
|
self.showLicense = shouldShowLicense;
|
||||||
self.wantsFullScreenLayout = YES;
|
self.wantsFullScreenLayout = YES;
|
||||||
beepSound = -1;
|
beepSound = -1;
|
||||||
decoding = NO;
|
decoding = NO;
|
||||||
OverlayView *theOverLayView = [[OverlayView alloc] initWithFrame:[UIScreen mainScreen].bounds
|
OverlayView *theOverLayView = [[OverlayView alloc] initWithFrame:[UIScreen mainScreen].bounds
|
||||||
cancelEnabled:showCancel
|
cancelEnabled:showCancel
|
||||||
oneDMode:oneDMode];
|
oneDMode:oneDMode
|
||||||
|
showLicense:shouldShowLicense];
|
||||||
[theOverLayView setDelegate:self];
|
[theOverLayView setDelegate:self];
|
||||||
self.overlayView = theOverLayView;
|
self.overlayView = theOverLayView;
|
||||||
[theOverLayView release];
|
[theOverLayView release];
|
||||||
|
|
Loading…
Reference in a new issue