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

#import <UIKit/UIKit.h>
#import "libs.h"
#import	"main.h"
#import "qalib.h"	// setEndianness()
#import "AppDelegate.h"

// プログラム名
NSString *programVersion,*programName;

// プログラム状態
BOOL 	fmemwarn;
BOOL	fRotaionLock=NO;	// YES=回転禁止

int main(int argc, char *argv[])
{
    @autoreleasepool {
		setEndianness(); // CPUの68/86形式を識別設定;ARMは両方向設定可能なので固定できない;ARM上限定なら、GCCの__LITTLE_ENDIAN__でわかる模様
		//
		fmemwarn=NO;
		//
		// plistからプログラム名とバージョンを得る
		programName=[[NSBundle mainBundle]infoDictionary][(NSString *)kCFBundleNameKey]; // これは常に日本語名なので注意
		nslog(@"programName=%@",programName);
	#ifdef KOMADORI
		// こまどりだけCFBundleShortVersionStringを使わなければならない
		// Xcode4.1にしたときにCFBundleVersion=2にしてしまい、これ以上の数値でないとiTunesConnectが受け付けてくれないため
		programVersion=[[NSBundle mainBundle]infoDictionary][(NSString *)@"CFBundleShortVersionString"];
	#else
		programVersion=[[[NSBundle mainBundle]infoDictionary]objectForKey:(NSString *)kCFBundleVersionKey];
	#endif
		nslog(@"programVersion=%@",programVersion);
		//
		// defaultデータベースに書きこむ；これにより、iOS設定でこれらの値が読めるようになる
		// Root.plistに書くkey名(Identifier)はdefault内のキー名またはRoot.strings内のキー名である
		// ただし、現在読んでいるのはバージョンのみ
		NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
		[defaults setObject:programName	   forKey:keyProgramName];
		[defaults setObject:programVersion forKey:keyProgramVersion];
		//
		return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
	}
}


// 画面回転の許可条件
BOOL okInterfaceOrientation(UIInterfaceOrientation interfaceOrientation)
{
//	printFuncs(@"%d",interfaceOrientation);
	// 全方向OK
	return YES;
}


// 画面回転の許可条件(iOS6)
// okInterfaceOrientation()に合わせる
NSUInteger supportedInterfaceOrientationsByMain(void)
{
//	printFunc();
	// 縦のみ
	return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskPortraitUpsideDown;
}

// iOS6
BOOL shouldAutorotateByMain(void)
{
//	printFuncs(@"fRotaionLock=%d",fRotaionLock);
	if (!fRotaionLock) {
		return YES;
	}
	return NO;
}

