//
//  SetupViewController.h
//  ZeroRec/Komadori
//
//  Created by AIG-Soft on 2011/2/24
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import <UIKit/UIKit.h>
// 以下MessageUI.frameworkが必要
#import <MessageUI/MessageUI.h>
#import	<MessageUI/MFMailComposeViewController.h>

// 宣言は機能定義によらず常に行う
// IBOutlet物は常に用意してあるので、機能定義によらず定義すること
@interface SetupViewController : UITableViewController
<
UINavigationControllerDelegate
#ifdef USE_SETUPOUTPUT
,MFMailComposeViewControllerDelegate
#endif
>
{
	// テーブル作成用
	NSArray		 *sections;		// セクション名
	NSDictionary *dataSource;	// データソース
	NSArray		 *objects;		// セクション名をまとめる配列
	// セル項目用
	// IBOutletの付いているものは、IBとの接続があるので、コンパイル条件にかかわらずメンバーは残すこと
	IBOutlet	__weak	UITableViewCell *cellCameraDevice,*cellCameraFlashMode;
	IBOutlet	__weak	UITableViewCell *cellAtrb;
	IBOutlet	__weak	UITableViewCell *cellFoverwrite;
	IBOutlet	__weak	UITableViewCell *cellExitDelay;
	IBOutlet	__weak	UITableViewCell *cellAlarmQuality,*cellAlarmInterval,*cellAlarmPost,*cellAlarmYokushi;
	IBOutlet	__weak	UITableViewCell *cellFalarmRetigger;
	IBOutlet	__weak	UITableViewCell *cellFalarm1file;
	IBOutlet	__weak	UITableViewCell *cellAlarmLimit;
	IBOutlet	__weak	UITableViewCell *cellAlarmSource;
	IBOutlet	__weak	UITableViewCell *cellTimer,*cellCounter;
	IBOutlet	__weak	UITableViewCell *cellConstantQuality,*cellConstantInterval;
	IBOutlet	__weak	UITableViewCell *cellPlaybackSpeed,*cellMaxPics;
	IBOutlet	__weak	UITableViewCell *cellBTConnection;
	// 設定項目
	IBOutlet	__weak	UISwitch			*swFalarmRetigger;
	IBOutlet	__weak	UISwitch			*swFalarm1file;
	IBOutlet	__weak	UISegmentedControl	*segAlarmQuality;
	IBOutlet	__weak	UISwitch			*swFbluetoothShutter;
	IBOutlet	__weak	UISegmentedControl	*segConstantQuality,*segCameraDevice,*segCameraFlashMode;
	//
	// 設定値の受け渡し用
	NSUInteger		valueNo;	// 値を入れる変数の要素番号を登録する
	NSUInteger		*valueAdrs;	// 値を入れる変数のアドレスを記録する
	NSTimeInterval	*tblValues;	// テーブルを登録する
	//
#ifdef USE_SETUPOUTPUT
	MFMailComposeViewController *mail;
#endif
}

- (IBAction)updateSwitch:(id)sender;
- (IBAction)updateSegment:(id)sender;
- (void)displaySetup;
#ifdef USE_SETUPOUTPUT
- (NSString *)makeSetupAndLogText:(UITextView *)textView;
- (void)openListupView:(id)sender;
#endif

enum { // sections/objectsに合わせること
	SectionGeneralSelect=0,
#ifdef USE_CONSTANT
	SectionConstantSelect,
#endif
#if defined(USE_ALARM)||defined(USE_NSHOT)
	SectionAlarmSelect,
#endif
#ifdef USE_ETC
	SectionEtc
#endif
};

// picker/Timer/Atrbを呼び出すテーブルの項目番号設定
// switch/segmentは不要
enum { // general
	RowDummy1=-1,		// 次を=0にするため
#ifdef USE_TIMER
	RowTimer,
#endif
#ifdef USE_EXITDELAY
	RowExitDelay,
#endif
#ifdef USE_BLUETOOTH
	RowBluetoothShutter
#endif
// カメラ系の可変項目に注意
};

enum { // constant系
	RowDummy2=0,		// 次を=1にするため:0=Quality
	RowConstantInterval,
};

#if defined(USE_ALARM)||defined(USE_NSHOT)
enum { // alarm
	RowDummy3=0,		// 次を=1にするため:0=Quality
	RowAlarmInterval,
	RowAlarmPost,
#if defined(USE_ALARM)
	RowAlarmYokushi,
	RowFalarmRetigger,
	RowAlarmLimit,
	RowAlarmSource,
#endif
	RowFalarm1file,
};
#endif

enum { // etc.
	RowDummy4=-1,		// 次を=0にするため
#ifdef USE_COLORSELECT
	RowAtrb,
#endif
	RowPlaybackSpeed,
	RowMaxPics,
#ifdef USE_COUNT
	RowCounter
#endif
};

enum { // switchのtag : #ifdefによらず変更しないこと（IBで設定しているから)
	SW_FOVERWRITE=0,
	SW_FALARMLEVEL,
	SW_FALARMRETRIGGER,
	SW_FBLUETOOTHSHUTTER,	
	SW_FALARM1FILE,
};

enum { // segmentのtag
	SEG_ALARM_QUALITY=0,
	SEG_CONSTANT_QUALITY,
	SEG_CAMERADEVICE,
	SEG_CAMERAFLASHMODE
};

// 設定とログを書き出すPDFファイル名
#define	PDF_SETUPLOG	@"settingLog.pdf"

@end 