//-------------------------------------------------------------------------------
//
//	FILE: menu.c
//
//	IMenuCtl interfaceのサブプログラム 
//
//-------------------------------------------------------------------------------

#include "MenuCtl.h"
#include "menu_res.h"
#include "main_res.h"

// Property_Menu :: Property値の選択ができるメニューコントロールの作成
void Property_Menu( MyApp *pApp )
{
	// 作業変数の定義
	CtlAddItem		pcai;
	int				nf = TEST_FONT;
	
	// NULLチェック
	if ( pApp == NULL )
	{
		DBGPRINTF( "pApp is NULL" );
		return;
	}
	
	if ( pApp->pimc == NULL )
	{
		DBGPRINTF( "IMenuCtlインスタンス is NULL" );
		return;
	}
	
	// 処理中･･･
	disp_mng( pApp );
	
	// メニューコントロールのリセット
	test_Reset( pApp );
	// IMENUCTL_SetRect()の試験
	test_SetRect( pApp, &pApp->arect );
	// タイトル設定
	test_SetTitle( pApp, MENU_RES_FILE, PRO_TITLE, NULL );
	
	pcai.pText = NULL;
	pcai.pImage = NULL;
	pcai.wFont = nf;
	pcai.pszResImage = MAIN_RES_FILE;
	pcai.pszResText = MAIN_RES_FILE;
	
	switch ( pApp->ctype )
	{
	case MENUCTL:
		set_ProMenuMENU( pApp, &pcai );
		break;
	case LISTCTL:
		set_ProMenuLIST( pApp, &pcai );
		break;
	case ICONVIEWCTL:
		set_ProMenuICON( pApp, &pcai );
		break;
	default:
		break;
	}
	
	// メニュー画面アクティブ化
	test_SetActive( pApp, TRUE );
	
	return;
}

//	Test_Menu :: プロパティ値をしたテストメニューコントロールの作成
boolean Test_Menu( MyApp *pApp, uint32 flag )
{
	// 作業変数の定義
	boolean			bRet = TRUE;
	int				nindex = TEST2_ID;
	int				nf = TEST_FONT;
	CtlAddItem		pcai;
	int				nLoop;
	uint32			unProp;

	// NULLチェック
	if ( pApp == NULL )
	{
		DBGPRINTF( "pApp is NULL" );
		return FALSE;
	}
	if ( pApp->pimc == NULL )
	{
		DBGPRINTF( "IMenuCtl Ins is NULL" );
		return FALSE;
	}
	
	// 処理中･･･
	if ( flag != MP_NO_REDRAW )
	{
		disp_mng( pApp );
	}
	
	// 初期化
	MEMSET( pApp->m_szHtmlBuf, NULL, BUFSIZE_HTML );
	MEMSET( &pcai, NULL, sizeof(CtlAddItem) );
	
	LogOutMake( pApp, TRUE, TRUE, "***コントロール確認 START***" );
	Dispclsid( pApp );
	LogOutMake( pApp, TRUE, FALSE, "==Properties==" );
	
	// メニューコントロールのリセット
	test_Reset( pApp );
	
	// IMENUCTL_SetRect()の試験
	test_SetRect( pApp, &pApp->arect );
	
	// IMENUCTL_SetTitle()の試験
	test_SetTitle( pApp, MENU_RES_FILE, TEST_TITLE, NULL );
	
	// IMENUCTL_SetProperties()の試験
	if ( flag != 0xFFFFFFFF )
	{
		test_SetProperties( pApp, flag );
	}
	
	// IMENUCTL_GetProperties()の試験
	test_GetProperties( pApp, &unProp );
	
	if ( flag == MP_MULTI_SEL )
	{
		IMENUCTL_SetFocus( pApp->pimc, (uint16)nindex );
	}
	
	pcai.wFont = (uint16)nf;
	pcai.pszResImage = MAIN_RES_FILE;
	pcai.pszResText = MENU_RES_FILE;
	
	for ( nLoop = 0; nLoop < 10; nLoop++ )
	{
		pcai.wText = TEST1 + nLoop;
		if ( flag == MP_ICON_ANIMATED )
		{
			pcai.wImage = BCI1 + nLoop;
		}
		else
		{
			pcai.wImage = IMAGE1 + nLoop;
		}
		pcai.wItemID = (uint16)nindex + nLoop;
		pcai.dwData = (uint32)nindex + nLoop;
		// IMENUCTL_AddItemEx()の試験
		test_AddItemEx( pApp, &pcai );
	}
	
	// メニュー画面アクティブ化
	test_SetActive( pApp, TRUE );
	
	return bRet;
}

//	Calendar_Menu :: カレンダーイベント表示のメニューコントロールの作成
void Calendar_Menu( MyApp *pApp, uint32 flag )
{
	// 作業変数の定義
	int				nindex = TEST2_ID;
	int				nf = TEST_FONT;
	CtlAddItem		pcai;
	int				unstart;
	uint16			unduration = DURATION;
	uint32			untime;
	int				nLoop;
	uint32			unProp;
	
	// NULLチェック
	if ( pApp == NULL )
	{
		DBGPRINTF( "pApp is NULL" );
		return;
	}
	if ( pApp->pimc == NULL )
	{
		DBGPRINTF( "IMenuCtl Ins is NULL" );
		return;
	}
	
	// 処理中･･･
	disp_mng( pApp );
	
	// 初期化
	MEMSET( pApp->m_szHtmlBuf, NULL, BUFSIZE_HTML );
	
	LogOutMake( pApp, TRUE, TRUE, "***コントロール確認 START***" );
	Dispclsid( pApp );
	LogOutMake( pApp, TRUE, FALSE, "==Properties==" );
	
	// メニューコントロールのリセット
	test_Reset( pApp );
	
	// IMENUCTL_SetRect()の試験
	test_SetRect( pApp, &pApp->arect );
	
	pcai.pText = NULL;
	pcai.pImage = NULL;
	pcai.wFont = (uint16)nf;
	pcai.pszResImage = MAIN_RES_FILE;
	pcai.pszResText = MENU_RES_FILE;
	
	// 時刻設定 (現在時刻-2h)
	untime = (GETTIMEMS() / 1000 / 60 / 60)-2;
	
	for ( nLoop = 0; nLoop < 13; nLoop++, untime++ )
	{
		pcai.wText = TEST1 + nLoop;
		pcai.wImage = IMAGE1 + nLoop;
		pcai.wItemID = (uint16)(nindex + nLoop);
		pcai.dwData = (uint32)(nindex + nLoop);
		
		test_AddItemEx( pApp, &pcai );
		
		unstart = untime * 60;
		
		// IMENUCTL_SetItemTime()の試験
		test_SetItemTime( pApp, &pcai, unstart, unduration, flag );
		
		// IMENUCTL_GetItemTime()の試験
		if ( flag == MP_CALENDAR )
		{
			test_GetItemTime( pApp, nindex + nLoop );
		}
	}
	
	if ( flag == MP_AUTOSCROLLTIME )
	{
		flag |= MP_CALENDAR;
	}
	// IMENUCTL_SetProperties()の試験
	test_SetProperties( pApp, flag );
	
	// IMENUCTL_GetProperties()の試験
	test_GetProperties( pApp, &unProp );
	
	// IMENUCTL_SetSel()の試験
	test_SetSel( pApp, nindex+5 );
	
	// メニュー画面アクティブ化
	test_SetActive( pApp, TRUE );
	
	// IMENUCTL_Redraw()の試験
	test_Redraw( pApp );
	
	return;
}

//	Con_Menu :: TRUE/FALSEの選択ができるメニューコントロールの作成
void Con_Menu( MyApp *pApp )
{
	// 作業変数の定義
	int				nindex = CON_ID;
	CtlAddItem		pcai;
	int				nf = TEST_FONT;
	int				nLoop;
	
	// NULLチェック
	if ( pApp == NULL )
	{
		DBGPRINTF( "pApp is NULL" );
		return;
	}
	if ( pApp->pimc == NULL )
	{
		DBGPRINTF( "IMenuCtl Ins is NULL" );
		return;
	}
	
	// 処理中･･･
	disp_mng( pApp );
	
	// メニューコントロールのリセット
	test_Reset( pApp );
	
	// IMENUCTL_SetRect()の試験
	test_SetRect( pApp, &pApp->arect );
	
	// タイトル設定
	test_SetTitle( pApp, MENU_RES_FILE, CON_TITLE, NULL );
	
	pcai.pText = NULL;
	pcai.pImage = NULL;
	pcai.wFont = nf;
	pcai.pszResImage = MAIN_RES_FILE;
	pcai.pszResText = MENU_RES_FILE;
	
	for ( nLoop = 0; nLoop < 2; nLoop++ )
	{
		pcai.wText = CON1+nLoop;
		pcai.wImage = IMAGE1+nLoop;
		pcai.wItemID = (uint16)nindex+nLoop;
		pcai.dwData = (uint32)nindex+nLoop;
		// IMENUCTL_AddItemEx()の試験
		test_AddItemEx( pApp, &pcai );
	}
	
	// IMENUCTL_SetSel()の試験
	test_SetSel( pApp, nindex );
	
	// IMENUCTL_GetSel()の試験
	test_GetSel( pApp );
	
	// メニュー画面アクティブ化
	test_SetActive( pApp, TRUE );
	
	return;
}

//	Sort_Menu :: ソートの種類が選択できるメニューコントロールの作成
void Sort_Menu( MyApp *pApp )
{
	// 作業変数の定義
	int				nindex = SORT_ID;
	int				nf = TEST_FONT;
	CtlAddItem		pcai;
	int				nLoop;
	
	// NULLチェック
	if ( pApp == NULL )
	{
		DBGPRINTF( "pApp is NULL" );
		return;
	}
	if ( pApp->pimc == NULL )
	{
		DBGPRINTF( "IMenuCtl Ins is NULL" );
		return;
	}
	
	// 処理中･･･
	disp_mng( pApp );
	
	// メニューコントロールのリセット
	test_Reset( pApp );
	
	// ログ表示
	LogOutMake( pApp, TRUE, TRUE, "***コントロール確認 START***" );
	LogOutMake( pApp, TRUE, FALSE, "==Sort==");

	// IMENUCTL_SetRect()の試験
	test_SetRect( pApp, &pApp->arect );
	
	// タイトル設定
	test_SetTitle( pApp, MENU_RES_FILE, SORT_TITLE, NULL );
	
	// メニュー項目初期設定
	pcai.pText = NULL;
	pcai.pImage = NULL;
	pcai.wFont = (uint16)nf;
	pcai.pszResImage = pcai.pszResText = MAIN_RES_FILE;
	
	for ( nLoop = 0; nLoop < 5; nLoop++ )
	{
		pcai.wText = SORT1+nLoop;
		pcai.wImage = IMAGE1+nLoop;
		pcai.wItemID = (uint16)nindex+nLoop;
		pcai.dwData = (uint32)nindex+nLoop;
		
		// 項目設定
		test_AddItemEx( pApp, &pcai );
	}
	
	// メニュー画面アクティブ化
	test_SetActive( pApp, TRUE );
	
	return;
}

