//
//  RecViewController.h
//  ZeroRec/Komadori
//
//  Created by AIG-Soft on 11/03/02.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import <UIKit/UIKit.h>
@class	AppDelegate;
@class	Setup;
@class	NowDate;
@class	LimitedSymbol;
@class	IntervalRec;
@class	PlaySound;
@class	AntiSleep;
@class	OneShotTimer;
#ifdef USE_BLUETOOTH
#import "Bluetooth.h"
#endif
#ifdef USE_EXITDELAY
@class	ExitDelay;
#endif
#ifdef USE_BATTERY
@class	Battery;
@class	BatteryCheck;
#endif
#if	defined(USE_ALARM)||defined(USE_NSHOT)
@class	PostTimer;
#endif
@protocol RecViewControllerDelegate;

enum { // frecの値
	REC_NONE=0,		// 録画準備前
	REC_PREPARE,	// 準備中
	REC_EXITDELAY,	// 遅延中
	REC_ON,			// 実録画中
	REC_ON1SHOT,	// 1ショットの録画中
	REC_ONNSHOT,	// nSHOT録画中
};

@interface RecViewController : UIViewController
<
UIImagePickerControllerDelegate,
UINavigationControllerDelegate
#ifdef USE_BLUETOOTH
,BluetoothDelegate
#endif
>
{
#ifdef USE_BLUETOOTH
	Bluetooth	*bluetooth;
#endif
	// IBOutletの付いているものは、IBとの接続があるので、コンパイル条件にかかわらずメンバーは残すこと
	// 表示制御
	IBOutlet	__weak	UILabel		*labelLeftPic;		// 残り録画枚数
	IBOutlet	__weak	UIImageView	*imageBluetooth;

#ifdef USE_NSHOT
	// 残り枚数（表示だけ；録画時間制御はアラームポストで行われる）
	NSInteger		leftPic;			// 残りこの枚数録画したら録画時間終了。アラームインターバルを使う
#endif
	// 時間制御
	IntervalRec		*intervalRec;		// 常時録画とアラームで共用；なぜなら、Zeroでは重ねあわせはないから
#ifdef USE_TIMER
	NSTimer			*recTimer;			// タイマー
#endif
#ifdef	USE_BATTERY
	BatteryCheck	*batteryCheck;		// 電池チェック
#endif
#if defined(USE_ALARM)
	OneShotTimer	*alarmLimit;		// アラームリミット
#endif
#if	defined(USE_ALARM)||defined(USE_NSHOT)
	PostTimer		*postTimer;			// アラームポスト&抑止タイマー(NSHOTでは抑止には使われない）
#endif
	AntiSleep		*antiSleep;			// スリープ抑止
	NowDate			*nowDate;			// 現在日時
	// 他制御
	NSUInteger	ftakePicture;			// 現在撮影可能かどうか(1枚単位);TAKE_PICTURE_*
	NSUInteger	fevent;					// 現在アラーム録画中かどうか;EVENT_*
	BOOL		fnowActiveTimer;		// 現在タイマーが有効な期間かどうか
	//
	LimitedSymbol	*alertSymbol;			// ↓の制御用
	IBOutlet	__weak	UIImageView	*imageAlert;	// 撮影できないマーク
	IBOutlet	__weak	UIView		*indicatorView;	// ActivityIndicator表示用View;self.viewが変形により座標が変わるので別途持つ
	//
	UIImagePickerController *imgPicker;
}
@property (nonatomic,strong) id <RecViewControllerDelegate> delegate;
@property (nonatomic) NSUInteger frec;	// 現在録画状態かどうか;REC_*が入る
@property (nonatomic,weak) IBOutlet	UILabel *labelNowDate;
@property (nonatomic,weak) IBOutlet	UILabel *labelDate;
@property (nonatomic,weak) IBOutlet	UILabel *labelAlarm;		// ZeroRecではイベントシンボル、Komadoriでは未使用
@property (nonatomic,weak) IBOutlet	UILabel *labelPercent0;
@property (nonatomic,weak) IBOutlet	UILabel *labelPercent100;
@property (nonatomic,weak) IBOutlet	UIProgressView	*batteryMeter;	// 電池残量表示
@property (nonatomic,weak) IBOutlet	UIButton *btnCancelTATE;
@property (nonatomic,weak) IBOutlet	UIButton *btnRecStartTATE;
@property (nonatomic,weak) IBOutlet	UIButton *btnRecEndTATE;
@property (nonatomic,weak) IBOutlet	UIButton *btnRec1Shot;
@property (nonatomic,weak) IBOutlet	UIButton *btnCameraFR;
@property (nonatomic,weak) IBOutlet	UIButton *btnRecNShot; 

// オーバーレイ上のボタン
-(IBAction)recStartEnd:(id)sender;
-(IBAction)recCancel:(id)sender;
-(IBAction)cameraFR:(id)sender;
#ifdef USE_1SHOT
-(IBAction)recStart1Shot:(id)sender;
#endif
#ifdef USE_NSHOT
-(IBAction)recStartNShot:(id)sender;	// アラームトリガーそのものである
#endif
// 他
-(void)initRecView;
-(UIImagePickerController *)startImagePicker;
-(void)rotationOverlay:(UIDeviceOrientation)orientation fall:(BOOL)fall fTranfsorm:(BOOL)fTranfsorm;
-(BOOL)isntRecOn:(id)sender;
-(void)recEnd;
-(void)antiSleepMain:(id)sender;
#ifdef USE_TIMER
-(void)startCheckRecTimer;
#endif
#if defined(USE_ALARM)||defined(USE_NSHOT)
-(void)AlarmSensor:(BOOL)onoff;
-(void)Alarm:(NSString *)name;
-(void)endOfAlarm:(id)sender;
#endif
#if defined(USE_ALARM)
-(void)limitOfAlarm:(id)sender;
#endif
#ifdef USE_BLUETOOTH
-(void)setBluetooth:(Bluetooth *)bluetooth_;
#endif

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

enum {
	LABEL_INTIMER_INIT=0
,	LABEL_INTIMER_OFF
,	LABEL_INTIMER_ON
};

enum { // ftakePictureの値
	TAKE_PICTURE_ENABLE=0		// 撮影可能
,	TAKE_PICTURE_INTERVAL		// 通常撮影命令直後（実撮影前）
,	TAKE_PICTURE_ANTI_SLEEP		// Anti-Sleep撮影命令直後（実撮影前）
};

@end

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

@protocol RecViewControllerDelegate
// 現在はRootViewColtrollerにある
-(void)setQuality:(CGFloat)quality_;
-(void)setLabelDateAndAlarm:(NSString *)date Alarm:(NSString *)alarm;
-(void)setImageSize:(CGRect)imageSize_;
-(void)saveLatestPicture;
-(void)AVIfileOpen;
-(void)AVIfileClose;
-(void)AVIfileDelete:(NSString *)path;
-(void)AVIwaitAlbumCopyEnd;
-(void)AVIfileWrite:(UIImage *)image text:(NSString *)mes;
@end
