//
//  AirPrint.m
//
//  Created by AIG-Soft on 2011/12/18.
//  Copyright (c) 2011,13 AIG-Soft. All rights reserved.
//

#import "AirPrint.h"
#import "libs.h"

@implementation AirPrint

-(void)initPrintAtButton:(UIBarButtonItem *)button
{
	printSelf();
	printController = [UIPrintInteractionController sharedPrintController];
	actionButton = button;
	inView=nil; // 他方は無効にする
}

-(void)initPrintInView:(UIView *)view
{
	printSelf();
	printController = [UIPrintInteractionController sharedPrintController];
	inView=view;
	actionButton=nil; // 他方は無効にする
}

// .delegateプロパティー式で呼び出される関数
// 必ずinitPrint*の後に設定すること
-(void)setDelegate:(id<UIPrintInteractionControllerDelegate>)delegate_
{
	printSelf();
	printController.delegate=delegate_;
}

// data ← NSData(PDF) , UIImage , NSURL
-(void)setItem:(id)data jobName:(NSString *)jobName
{
	printSelf();
	// PrintInfo の取得と各種プロパティの設定；印刷情報の設定
	UIPrintInfo *printInfo	= [UIPrintInfo printInfo];
	printInfo.outputType	= UIPrintInfoOutputGeneral;	// 印刷用途とサイズ設定；写真(A6)、グレースケール(A4/L)、汎用(A4)
	printInfo.jobName		= jobName;
	printInfo.duplex		= UIPrintInfoDuplexNone;	// 印刷面:None=片面
	printController.printingItem=data;	// 印刷データ(単一)
	// 紙の向きは画面の向きと同じにする
	switch (getOrientation()) {
		case UIOrientationUnknown:
		case UIOrientationPortrait:
		case UIOrientationPortraitUpsideDown:
			printInfo.orientation = UIPrintInfoOrientationPortrait;
			break;
		default:
			printInfo.orientation = UIPrintInfoOrientationLandscape;
			break;
	}
	
	void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
		^(UIPrintInteractionController *pic, BOOL completed, NSError *error)
		{
		//	self.content = nil;
			if (!completed && error) {
				nslog(@"FAILED! due to error in domain %@ with error code %tu",error.domain, error.code);
			}
		};

	// 表示を開く
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
		// iPadはpopover
		if (inView) { // viewから
			nslog(@"popover:viewから");
			// viewの中央に表示する
			CGRect frame;
			frame.origin=inView.center;
			// 幅は適当
			frame.size.height=inView.frame.size.height/10;
			frame.size.width =inView.frame.size.width/10;
			printFrame(@"print view", frame);
			[printController presentFromRect:frame inView:inView	animated:YES completionHandler:completionHandler];
		} else { // BarButtonから
			nslog(@"popover:BarButtonから");
			[printController presentFromBarButtonItem:actionButton	animated:YES completionHandler:completionHandler];
		}
	} else {
		// iPhoneはnavi
		nslog(@"iPhone:Navi");
		[printController presentAnimated:YES completionHandler:completionHandler];
	}
}

-(void)close
// 表示を消す
{
	[printController dismissAnimated:YES];
}


@end
