//
//  AlarmSource.m
//  ZeoRec/Komadori/ChariReco
//
//  Created by AIG-Soft on 11/07/12.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import "AlarmSource.h"
#import "RotationViewController.h"
#import "SetupViewController.h"
#import "click.h"
#import "main.h"
#import "libs.h"
#import "AppDelegate.h"

@interface AlarmSource()
<RotationViewControllerDelegate>
{
	AppDelegate *app;
	Setup *setup;
}
@end

@implementation AlarmSource

- (void)initAlarmSource:(NSString *)title
{
	app=getAppDelegate();
	setup=app.setup;
	self.title=title; // titleプロパティへの代入
	UIBarButtonItem *tempBarItem=	[[UIBarButtonItem alloc]
										   initWithTitle:NSLocalStr(@"SAVE")
										   style:UIBarButtonItemStyleDone
										   target:self
										   action:@selector(closeAlarmSourceView:)];
	self.navigationItem.leftBarButtonItem=tempBarItem;
}

-(void)closeAlarmSourceView:(id)sender
{
	printSelf();
	
	clickSound(); // クリック音
	[self.navigationController popViewControllerAnimated:YES];
}

-(void)viewWillAppear:(BOOL)animated
{
	printSelf();
	[super viewWillAppear:animated];
	
	// iOS7で、viewの下にあるUIScrollViewを内包するUI要素(UITableView/UIScrollView/UIWebViewなど)のスクロール開始位置が勝手にずらされるのを禁止する
//	self.automaticallyAdjustsScrollViewInsets=NO;
	
	// 画面方向に応じた画面設定をする
	[self willAnimateRotationToInterfaceOrientation:self.interfaceOrientation duration:0.0];
	// setup->ボタン;ここでクリック音がなってしまうので止めておく
	clickStop();
	_swAlarmShake.on	=setup.falarmShake;			nslog(@"falarmShake=%d",setup.falarmShake);
	_swAlarmRotation.on	=setup.falarmRotation;		nslog(@"falarmRotation=%d",setup.falarmRotation);
	_swAlarm3D.on		=setup.falarm3D;			nslog(@"falarm3D=%d",setup.falarm3D);
	_swAlarm3DLevel.on	=(BOOL)setup.falarm3DLevel;	nslog(@"falarm3DLevel=%d",(int)setup.falarm3DLevel);
	_segAlarm3DLevel.selectedSegmentIndex=setup.falarm3DLevel;
	clickResume();
}

- (void)viewDidLoad
{
	printSelf();
    [super viewDidLoad];
	// ローカライズ
	cellAlarmShake.textLabel.text		=NSLocalStr(@"ALARMSHAKE"	 );
	cellAlarmRotation.textLabel.text	=NSLocalStr(@"ALARMROTATION" );
	cellAlarm3D.textLabel.text			=NSLocalStr(@"ALARM3D"		 );
	cellAlarm3DSetting.textLabel.text	=NSLocalStr(@"ALARM3DSETTING");
#ifdef USE_LEVEL3
	cellAlarm3DLevel3.label.text		=NSLocalStr(@"ALARM3DLEVEL"	 );
	nslog(@"ALARM3DLEVEL3=%@",cellAlarm3DLevel3.label.text);
	[segAlarm3DLevel removeAllSegments];
	[segAlarm3DLevel insertSegmentWithTitle:NSLocalStr(@"OFF") atIndex:LEVEL_OFF			  animated:NO];
	[segAlarm3DLevel insertSegmentWithTitle:NSLocalStr(@"ON1") atIndex:LEVEL_WAIT_DISCONTINUE animated:NO];
	[segAlarm3DLevel insertSegmentWithTitle:NSLocalStr(@"ON2") atIndex:LEVEL_FORCE_CANCEL	  animated:NO];
#else
	cellAlarm3DLevel2.textLabel.text	=NSLocalStr(@"ALARM3DLEVEL"	 );
	nslog(@"ALARM3DLEVEL2=%@",cellAlarm3DLevel2.textLabel.text);
#endif			  
	// テーブル
	objects =@[		cellAlarmShake,
					cellAlarmRotation,
					cellAlarm3D,
					cellAlarm3DSetting,
// レベル設定の切り替えはここだけ
#ifdef USE_LEVEL3
					cellAlarm3DLevel3,
#else
					cellAlarm3DLevel2,
#endif			  
			  ];
}

//-----------------------------------------------------
// switch/segment
//-----------------------------------------------------

-(IBAction)updateSwitch:(UISwitch *)sw
// 各アラーム源ON/OFF
{
	printSelfs(@"tag=%d",(int)sw.tag);
	nslog(@".on=%d",sw.on);
	clickSound();
	switch (sw.tag) {
		case SW_SHAKE:
			nslog(@"SW_SHAKE");
			setup.falarmShake	=sw.on;
			break;
		case SW_ROTATION:
			nslog(@"SW_ROTATION");
			setup.falarmRotation=sw.on;
			break;
		case SW_3D:
			nslog(@"SW_3D");
			setup.falarm3D		=sw.on;
			break;
		case SW_3DLEVEL:
			nslog(@"SW_3DLEVEL");
			setup.falarm3DLevel	=(NSUInteger)sw.on;
			break;
	}
}

-(IBAction)updateSegment:(UISegmentedControl *)seg
// データ源切り替え
{
	printSelf();
	nslog(@"tag=%d:select=%d",(int)seg.tag,(int)seg.selectedSegmentIndex);
	clickSound();
	// スイッチの状態は、setupViewControllerで保存しているので、ここでは不要
	switch (seg.tag) {
		case SEG_3DLEVEL:
			setup.falarm3DLevel	=seg.selectedSegmentIndex;
			break;
	}
}

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

#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
// セクション数を返す
{
    // Return the number of sections.
    return 1;
}

#if 0 // セクションはないので実装しない
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
// セクションごとの名前を返す
{
	return sections[section];
}
#endif

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	return objects[indexPath.row];
}

// セル内にアクセサリとしてつけたボタンが選択された
// アクセサリとしてつけたボタンは外部に現れないので、IBでは接続できない
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
	nslog(@"セル選択=%@",indexPath);
	// ここにない項目は、直接ターゲットで処理される
	switch (indexPath.row) {
		case RowAlarm3DSetting:
			clickSound();
			RotationViewController *rotationViewController=[[RotationViewController alloc]initWithSampling:SAMPLING selectData:setup.selectData rotationControl:setup.rotationControl];
			// 表示＆サンプリング開始
			[self.navigationController pushViewController:rotationViewController animated:YES];
			break;
	}
}

// RotationVCを閉じる
-(void)AtRotationViewControllerClose:(RotationViewController *)rotationViewController
{
	printSelf();
	setup.selectData=rotationViewController.rotationControl.dno; // データ源を保存
}

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

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

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

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

- (void)didReceiveMemoryWarning
{
	printSelf();
	[super didReceiveMemoryWarning];
}
	

@end
