//
//  SetupViewController.m
//  traceWrite
//
//  Created by 今井 彰彦 on 2011/12/05
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import "AppDelegate.h"
#import "SetupViewController.h"
#import	"RootViewController.h"
#import "BunshoSelect.h"
#import "Setup.h"
#import "libs.h"
#import "click.h"
#import "main.h"
#import "Bunsho.h"

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

@implementation SetupViewController

//--------------------------------------------
// 初期化処理
//--------------------------------------------

-(void)open:(id)target retSelector:(SEL)selector
{
	printSelf();

	_frame0=self.view.frame; // popoverのサイズを設定するために保存:iPhone用のそれを使う
	app=getAppDelegate();
	setup=app.setup;
	
	// 各Viewはメモリ節約のため利用時に読み込む
	_bunshoSelect	=nil;	// _bunshoSelectは再表示バグ回避のためでもある
	
	// Navigationの設定
	// retTarget:retSelectorNavigation標準の戻るボタンを消す
	self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:NSLocalStr(@"SAVE")
																 style:UIBarButtonItemStyleDone
																target:target
																action:selector];
	_fclosePopover=NO; // 画面は開いてない
}

//----------------------------------------------------
// 基本画面のTableView制御
//----------------------------------------------------

#pragma mark -
#pragma mark -View lifecycle

- (void)viewDidLoad
{
	printSelf();
	//
	clickStop(); // ビューが表示され終わるまでクリック音を止める；これをしないと、セグメントとスイッチへの設定時にクリック音がなってしまう
	//
    [super viewDidLoad];
	
	self.title=NSLocalStr(@"SETUP");
	//
	// セクション名の設定
	// ここの定義順を変えるときは、.hのSection＊も変更すること
	// objectsと同じ順にすること
	sections = @[NSLocalizedString(@"GENERAL",@"全般設定")];
	NSArray *general=@[cellGensho,cellAttachFile];
	//
	// sectionsと同じ順にすること
	objects	=@[general];
	//
	dataSource=[[NSDictionary alloc]initWithObjects:objects forKeys:sections];
	//
	// generalはここで開放される
}

-(void)viewWillAppear:(BOOL)animated
{
	[super viewWillAppear:animated];
	// seupViewControllerはtableViewなのでnibのように固定サイズを持たない
//	printFrame(@"SetupViewController.元frame",self.view.frame);
	self.preferredContentSize=_frame0.size; // poppverのサイズを戻す(これが重要)
	_segAttachFile.selectedSegmentIndex=setup.attachFile;
}

-(void)viewDidAppear:(BOOL)animated
{
	printSelf();
	[super viewDidAppear:animated];
	// これ以降クリック音を鳴らす(かもしれない)
	clickResume();
	_fclosePopover=NO; // 画面を表示したの印
}

-(void)viewDidDisappear:(BOOL)animated
{
	[super viewDidDisappear:animated];
	_fclosePopover=YES; // もう画面は閉じたの印
}

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

#pragma mark -action

// segment設定
-(IBAction)updateSegment:(UISegmentedControl *)seg
{
#ifdef DEBUG
	printSelf();
	nslog(@"%d:%d",(int)seg.tag,(int)seg.selectedSegmentIndex);
#endif
	clickSound();
	switch (seg.tag) {
		case SEG_ATTACH_FILE:
			setup.attachFile=seg.selectedSegmentIndex;
			break;
		default: // 警告回避のため
			break;
	}
}

//-----------------------------------------------------
// テーブル処理

#pragma mark -テーブル処理

// セクション数を返す
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [sections count];
}

// セクションごとの名前を返す
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
	return sections[section];
}

// セクションごとの行数を返す
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
	return [dataSource[sections[section]] count];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	return dataSource[sections[indexPath.section]][indexPath.row];
}

// セル内にアクセサリとしてつけたボタンが選択された
// アクセサリとしてつけたボタンは外部に現れないので、IBでは接続できない
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
	nslog(@"セル選択=%@",indexPath);
	
	// ここにない項目は、直接ターゲットで処理される
	// close側で使うため、選択位置を保存
	// 本当はindexPathをまるごと保存すれば楽だが、メモリーを使う上にエラーが出るので整数化して記録
	idx_row		=indexPath.row;
	idx_section	=indexPath.section;
	switch (idx_section) {
		case SectionGeneralSelect:
			switch (idx_row) {
				case RowBunshoSelect:
				{ // switch内の変数宣言のため
					// setup内部はsetup.bunFileName＝ファイル名で記録されている
					NSArray *fnames=[Bunsho bunNames];
					NSArray *pathes=[Bunsho bunList];
					self.bunshoSelect = [[BunshoSelect alloc]initWithNibName:@"PickerView" bundle:[NSBundle mainBundle]];
					[_bunshoSelect initPickerView:self retSelector:@selector(closeBunshoSelect:)
										   title:cellGensho.textLabel.text
										  colmuns:fnames
									   selectRow:pathArray2No(setup.bunFileName,pathes)];
					//
					[_bunshoSelect setNextButton:NSLocalStr(@"FONTSELECT")];
//					_bunshoSelect.preferredContentSize=_bunshoSelect.view.frame.size; // poppverのサイズ合わせ(これが重要)
					clickSound(); // クリック音
					[self.navigationController pushViewController:_bunshoSelect animated:YES];
				} // switch内の変数宣言のため
					break;
			}
			break;
	}
}

//----------------------------------------------------
// 閉じ処理
//-----------------------------------------------------

// _bunshoSelectを閉じる(1段目）
-(void)closeBunshoSelect:(id)sender
{
	printSelf();
	
	// 選択値を読み出す(pickerを開放してしまうので、その前に)
	switch (idx_section) {
		case SectionGeneralSelect:
			switch (idx_row) {
				case RowBunshoSelect:
					nslog(@"RowBunshoSelect");
					NSArray *pathes=[Bunsho bunList];
					setup.bunFileName=[pathes[_bunshoSelect.selectRow]lastPathComponent];
					nslog(@"bunFileName=%@",setup.bunFileName);
					break;
			}
			break;
	}
	
	// 画面を閉じる
	clickSound(); // クリック音
	[self.navigationController popToViewController:self animated:YES];
}

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

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

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

//-----------------------------------------------------
// メモリ系
//-----------------------------------------------------

#pragma mark -
#pragma mark -Memory management

#ifdef DEBUG
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
	nslog(@"メモリ警告発生:SetupViewController");
	[super didReceiveMemoryWarning];
    
    // Relinquish ownership any cached data, images, etc. that aren't in use.
}

#endif

- (void)dealloc
{
	printSelf();
	_fclosePopover=NO;
}

@end

