#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <egb.h>
#include <guidbg.h>
#include <file_dlg.h>
#include <eintm.h>	// EIN(TM)関連ライブラリのヘッダ
#include "music.h"

int	mainIconId = -1 ;
int	measMesId = -1 ;
int	statusMesId = -1 ;
int	panelicBtnId = -1 ;

int	panelic(){
	char cl[EINCLIPSIZE] ;
	extern int mainPanelId ;

	// 既にパネルが表示されているなら何もしない
	if (dispMode == DISPMODE_PANEL){
		return ILLEGAL_FUNCTION ;
	}
	dispMode = DISPMODE_PANEL ;

	//	アイコンをDETACHする
	MMI_SendMessage(mainIconId, MM_SLEEP, 0) ;
	MMI_SendMessage(mainIconId, MM_ERASE, 0) ;
	MMI_SendMessage(mainIconId, MM_DETACH, 0) ;

	//	パネルをATTACHする
	MMI_SendMessage(mainPanelId, MM_ATTACH, 1, MMI_GetBaseObj()) ;

	EIN_clipOpen(cl) ;
	MMI_SendMessage(mainPanelId, MM_SHOW, 0) ;
	MMI_SendMessage(mainPanelId, MM_WAKE, 0) ;

	extern int helpPage ;
	extern int helpPanelId ;
	if (helpPage != -1) updateObj(helpPanelId) ;

	EIN_clipClose(cl) ;

	return NOERR ;
}

/*	initDataMP_ICON2:mainIconId:MJ_WINDOWL40の呼び出し関数	*/
int	iconFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	HYPER	hyp ;
	FRAME	fr ;

	if(trigger & MS_EVKEYONL40) 
		return panelic() ;
	else if(pev->what == EVMOSDN){
		// 枠座標を得る
		MMI_SendMessage(kobj, MM_GETHYPER, 1, &hyp) ;
		fr = hyp.fr ;
		do {
			MMI_iosense() ;
		} while((MMI_GetEvnt((EVMOSUP|EVMOSDRAG|EVKEY), &pev)) < NOERR) ;
		if (pev->what == EVKEY)
			return panelic() ;
		else if (pev->what == EVMOSUP){
			if (MMI_DoubleClickCheck(&fr, pev) != FALSE){
				return panelic() ;
			}
			return NOERR ;
		}
	}
	// エラーで抜けるとWINDOW部品本来の動作をするのだ
	return ILLEGAL_FUNCTION ;
}

/*	initDataMP_ICON2:panelicBtnId:MJ_BUTTONL40の呼び出し関数	*/
int	panelicBtnFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	return panelic();
}

/*	initDataMP_ICON2:NULL:MJ_ICONL40の呼び出し関数	*/
int	iconLoadFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	extern int selectOpen(int, char *, char **);
	extern int tmmMode ;
	static char *ExtStr[] = { "*.EUP","*.FMB","*.PMB",NULL,NULL } ;
	if (tmmMode == TMM_UNAVAILABLE)
		ExtStr[3] = NULL ;
	else
		ExtStr[3] = "*.MID" ;
	return selectOpen(0, "ファイル読込", ExtStr) ;
}
