//
//  TimerView.m
//  ZeroRec
//
//  Created by AIG-Soft on 11/02/24.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import "TimerView.h"
#import "Setup.h"
#import "main.h"
#import "AppDelegate.h"
#import "click.h"

@interface TimerView()
{
	AppDelegate *app;
	Setup *setup;
}
@end

@implementation TimerView

// hourの実値から配列要素番号を得る
NSInteger searchHour(NSUInteger h)
{
	// initTimerViewでの文字列作成順に合わせること
	return(h);
}

// minの実値から配列要素番号を得る
// minsにありえない数値を与えないこと
NSInteger searchMin(NSUInteger m)
{
	// initTimerViewでの文字列作成順に合わせること
	return(m/MIN_STEP);
}

// hourの配列要素番号から実値を得る
NSInteger getHour(NSUInteger h)
{
	// initTimerViewでの文字列作成順に合わせること
	return(h);
}

// minの配列要素番号から実値を得る
NSInteger getMin(NSUInteger m)
{
	// initTimerViewでの文字列作成順に合わせること
	return(m*MIN_STEP);
}

// タイマーをPickerに表示設定する
-(void)setTimer:(NSUInteger)sh StartMin:(NSUInteger)sm EndHour:(NSUInteger)eh EndMin:(NSUInteger)em
{
	printSelf();
	nslog(@"%d,%d,%d,%d",(int)sh,(int)sm,(int)eh,(int)em);
	 // カーソル位置設定
	[_pickerViewRecStart selectRow:searchHour(sh)	inComponent:COLUM_HOUR	animated:YES];
	[_pickerViewRecStart selectRow:searchMin(sm)	inComponent:COLUM_MIN	animated:YES];
	[_pickerViewRecEnd	 selectRow:searchHour(eh)	inComponent:COLUM_HOUR	animated:YES];
	[_pickerViewRecEnd	 selectRow:searchMin(em)	inComponent:COLUM_MIN	animated:YES];
}

// 24時間に設定する
// 開始＝終了＝00:00
-(IBAction)set24Hour
{
	[self setTimer:0 StartMin:0 EndHour:0 EndMin:0];
}

-(void)viewWillAppear:(BOOL)animated
{
	[super viewWillAppear:animated];
	// 画面方向に応じた画面設定をする
	[self willAnimateRotationToInterfaceOrientation:self.interfaceOrientation duration:0.0];
	// カーソル位置設定;ここでクリック音が4回なってしまうが、今のところ対策法なし(viewDidLoadに移動しても同じ)
	[self setTimer:setup.recStartHour StartMin:setup.recStartMin EndHour:setup.recEndHour EndMin:setup.recEndMin];
}

-(void)setShadow:(UIPickerView *)pickerView
{
	// 何故かIBで設定した背景色が消えてしまうので、ここで再度設定する
	pickerView.backgroundColor=[UIColor colorWithRed:rgbf(224) green:rgbf(235) blue:rgbf(255) alpha:1];
	// 影
	CALayer *layer=pickerView.layer;
	layer.masksToBounds = NO;
	layer.shadowOffset = CGSizeMake(1, 2);
	layer.shadowRadius = 5;
	layer.shadowOpacity = 0.5;
}

-(void)viewDidLoad
{
	printSelf();
	[super viewDidLoad];
	
	// nib部の設定
	_pickerViewRecEnd.delegate		=
	_pickerViewRecStart.delegate	=self;
	_pickerViewRecEnd.dataSource	=
	_pickerViewRecStart.dataSource	=self;

	[self setShadow:_pickerViewRecStart];
	[self setShadow:_pickerViewRecEnd];
	
}

// nib読み込み時に呼び出す
- (void)initTimerView:(NSString *)title
{
	app=getAppDelegate();
	setup=app.setup;
	//
	// 時間の項目を作る
	_hours=[[NSMutableArray alloc]init];
	for (NSUInteger hour=0;hour<24;hour++) {
		[_hours addObject:[NSString stringWithFormat:@"%02d",(int)hour]];
		// 終端は自動的に付くので、付加不要(というかnilを追加しようとすると例外が発生する)
	}
	// 時間の項目を作る
	// 5分単位
	_mins=[[NSMutableArray alloc]init];
	for (NSUInteger min=0;min<60;min+=MIN_STEP) {
		[_mins addObject:[NSString stringWithFormat:@"%02d",(int)min]];
	}
//	nslog(@"hours=%d(%p)",[hours count],hours);
//	nslog(@"mins =%d(%p)",[mins  count],mins);
	//
	self.title=title; // titleプロパティへの代入
	self.navigationItem.leftBarButtonItem=	[[UIBarButtonItem alloc]
											 initWithTitle:NSLocalizedString(@"SAVE",@"保存")
													 style:UIBarButtonItemStyleDone
													target:self
													action:@selector(closeTimerView:)];
}

-(void)closeTimerView:(id)sender
{
	if ([self.delegate respondsToSelector:@selector(AtTimerViewClose:)]) {
		[self.delegate performSelector:@selector(AtTimerViewClose:) withObject:self];
	}
	// pickerを閉じる
	clickSound(); // クリック音
	[self.navigationController popViewControllerAnimated:YES];
}


// 列数を返す
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
	// 時/分
	return(MAX_COLUM);
}

// 指定行の項目数を返す
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
	switch (component) {
		case COLUM_HOUR:
			// 時
			return([_hours count]);
	}
	// 分		
	return([_mins count]);
}

// 指定行項目の文字列を返す
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
	switch (component) {
		case COLUM_HOUR:
			// 時
			return(_hours[row]);
	}
	// 分		
	return _mins[row];
}

// 選択時に呼び出される
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
	nslog(@"選択:[%d]=%d",(int)component,(int)row);
	// 実はここでは何もしていない
}

// 回転検出
// UIViewControllerの標準メソッドのオーバーライド
// 呼び出されるのは回転「前」のインスタンス
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
	printSelfs(@"Orientation=%d",(int)interfaceOrientation);
	switch (interfaceOrientation) {
		default: // 警告回避のため
		case UIInterfaceOrientationPortrait:
		case UIInterfaceOrientationPortraitUpsideDown:
			nslog(@"縦:TimerView");
			// 縦のを表示
			_btn24Hour.hidden=NO;
			_lbl24Hour.hidden=NO;
			// 横のを消す
			_btn24HourLandscape.hidden=YES;
			_lbl24HourLandscape.hidden=YES;
			break;
		case UIInterfaceOrientationLandscapeLeft:
		case UIInterfaceOrientationLandscapeRight:
			nslog(@"横:TimerView");
			// 縦のを消す
			_btn24Hour.hidden=YES;
			_lbl24Hour.hidden=YES;
			// 横のを表示
			_btn24HourLandscape.hidden=NO;
			_lbl24HourLandscape.hidden=NO;
			break;
	}
	nslog(@"回転終了");
}

//----------------------------------------------
// 画面を回転して良いかどうか
//----------------------------------------------
// iOS6.0

-(BOOL)shouldAutorotate
{
	return shouldAutorotateByMain();
}

- (NSUInteger)supportedInterfaceOrientations
{
	return (supportedInterfaceOrientationsByMain());
}

//----------------------------------------------

#pragma mark -
#pragma mark Memory management

#ifdef DEBUG
- (void)didReceiveMemoryWarning
{
	printSelf();
	[super didReceiveMemoryWarning];
}
#endif

@end

