/*************************************************************************
*	"wpaper.cci" : 壁紙設定
*************************************************************************/


int		_wall_setCfg(char *obj, int cfg)
{
	char	*s;

	switch( cfg )
	{	case	APL_WALLPAPER_CFG_NORMAL:	s = "NORMAL";	break;
		case	APL_WALLPAPER_CFG_CENTER:	s = "CENTER";	break;
		case	APL_WALLPAPER_CFG_TILE:		s = "TILE";		break;
		default:							s = "???";		break;
	}
	MNU_setObj(obj, 1, MNU_STR, 'D', "Display mode [%s]", s, 1, NULL, NULL );
}

char	*_wall_setFile(char *obj, char *path )
{
	int			ret;
	char		*s;
	char		*fdl;
	static char	buf[128];

	if ( (fdl = FDL_open(0)) == NULL )
		return (path);
	FDL_set_title( fdl,"WallPaper tiff file");
	FDL_set_wildcard( fdl, "*.tif");
	FDL_set_defaultFilename( fdl, path);
	ret = FDL_start(fdl);
	s   = FDL_get_filename(fdl);
	if ( ret == NORMAL && strlen(s) > 0 )
	{
		strcpy( buf, s );
		path = buf;
		MNU_setObj(obj, 0, MNU_STR, 'F', "FILE : %s", path , 0, NULL, NULL );
	}
	FDL_close(fdl);
	return (path);
}

int		WallTiff()
{
	int			ret, cfg, frcol, bkcol;
	char		*mnu;
	char		*obj;
	char		*path;

	cfg   = APL_getWallPaper(1);
	frcol = APL_getWallPaper(2) & 15;
	bkcol = APL_getWallPaper(3) & 15;
	path  = APL_getWallPaper(4);

	obj = MNU_alloc(7);

	MNU_setObj(obj, 0, MNU_STR, 'F', "FILE : %s",	path , 0, NULL, NULL );
	_wall_setCfg(obj,cfg);
	MNU_setObj(obj, 2, MNU_BLK,  0,   NULL,			NULL , 0, NULL, NULL );
	MNU_setObj(obj, 3, MNU_DIG, 'F', "前景色  %d",	frcol, 2, NULL, NULL );
	MNU_setObj(obj, 4, MNU_DIG, 'B', "背景色  %d",	bkcol, 3, NULL, NULL );
	MNU_setObj(obj, 5, MNU_BLK,  0,   NULL,			NULL , 0, NULL, NULL );
	MNU_setObj(obj, 6, MNU_NOR, 'S', "決定",		NULL , 4, NULL, NULL );

	mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "WallPaper" );
	while ( 1 )
	{	ret = MNU_start ( mnu );
		if ( ret < 0 || ret == 4 )
			break;
		switch( ret )
		{	case	0:	/* ファイル	*/
				path = _wall_setFile(obj, path);
				break;
			case	1:
				if ( cfg == APL_WALLPAPER_CFG_NORMAL )
				{	cfg = APL_WALLPAPER_CFG_CENTER;
				} else if ( cfg == APL_WALLPAPER_CFG_CENTER )
				{	cfg = APL_WALLPAPER_CFG_TILE;
				} else if ( cfg == APL_WALLPAPER_CFG_TILE )
				{	cfg = APL_WALLPAPER_CFG_NORMAL;
				}
				_wall_setCfg(obj,cfg);
				break;
			case	2:
				if ( (ret = COLSET_dlg(frcol)) >= 0 )
				{	frcol = ret;
					MNU_setObj(obj, 3, MNU_DIG, 'F', "前景色  %d",	frcol, 2, NULL, NULL );
				}
				break;
			case	3:
				if ( (ret = COLSET_dlg(bkcol)) >= 0 )
				{	bkcol = ret;
					MNU_setObj(obj, 4, MNU_DIG, 'B', "背景色  %d",	bkcol, 3, NULL, NULL );
				}
				break;
		}
	}
	MNU_close(mnu);
	MNU_free(obj);
	if ( ret == 4 )
	{	APL_setWallPaper( APL_WALLPAPER_TIFF, cfg, frcol,bkcol, path );
	}
	return (NORMAL);
}

#if	0
int		WallColor()
{
	int		ret, col;
	char	buf[16];
	char	*dlg;

	dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
	                    "壁紙の色番号を入力してください。");
	DLG_getsSetTitle( dlg, "WallPaper" );
	col = APL_getWallPaper(3);	/* get BkCol */
	sprintf( buf, "%d", col );
	ret = DLG_getsStart( dlg, 15, buf );
	if ( ret > 0 && (col = atoi(buf)) >= 0 )
	{	APL_setWallPaper( APL_WALLPAPER_NORMAL, col);
	}
	DLG_getsClose(dlg);

	return (NORMAL);
}
#else
int		WallColor()
{
	int		col;

	col = APL_getWallPaper(3);	/* get BkCol */
	col = COLSET_dlg2( col );
	if ( col >= 0 )
	{	APL_setWallPaper( APL_WALLPAPER_NORMAL, col);
	}
	MOS_initMoveArea();
	return (NORMAL);
}
#endif

/*************************************************************************
*	壁紙の設定
*-------------------------------------------------------------------------
*	アイテム登録可能
*	パラメータ：なし
*************************************************************************/

int		CCI_setWallPaper(int argc, char **argv)
{
	int			ret;
	char		*mnu;
	char		*obj;

	obj = MNU_alloc(2);
	MNU_setObj(obj, 0, MNU_NOR, 'C', "Color 色指定",		NULL, 0, NULL, NULL );
	MNU_setObj(obj, 1, MNU_NOR, 'T', "Tiff  ファイル指定",	NULL, 1, NULL, NULL );

	mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "WallPaper" );
	ret = MNU_start ( mnu );
	MNU_close(mnu);
	MNU_free(obj);
	switch ( ret )
	{
		case	0:	WallColor();	break;
		case	1:	WallTiff();	break;
	}
	return (NORMAL);
}


/*************************************************************************
*	アプリケーション・カラーテーブルの変更（デバッグ用）
*-------------------------------------------------------------------------
*	アイテム登録可能
*	パラメータ:なし
*************************************************************************/

int		CCI_setColPtn_1( int argc, char **argv )
{
#if	0	/*	DEBUG CHECK	*/
	int		i;

	for ( i = 0; i <20; ++i )
	{
		printf( "AplCol[%2d] = $%04X\n", i, AplCol[i] );
		fflush(stdout);
	}
#endif
	APLCOL_WHITE	= C_HWHITE;
	APLCOL_BLACK	= C_MBLACK;
	APLCOL_GRAY		= C_WHITE;
	APLCOL_DARK		= C_HBLACK;
	APLCOL_SHADOW	= C_MBLACK;
	APLCOL_WARNNING	= C_HYELLOW;
	APLCOL_ERROR	= C_HRED;
	APLCOL_SELBOX	= C_HRED;
	APLCOL_INFO		= C_HGREEN;
	APLCOL_WINBOX	= C_RED;
	APLCOL_GRAY0	= C_HBLACK;
	APLCOL_GRAY1	= C_RED;
	APLCOL_GRAY2	= C_WHITE;
	APLCOL_GRAY3	= C_MAGENTA;
	APLCOL_METAL0	= C_GREEN;
	APLCOL_METAL1	= C_CYAN;
	APLCOL_METAL2	= C_YELLOW;
	APLCOL_DLGBASE	= C_MAGENTA;

	APLCOL_BLUE		= C_HBLUE;
	APLCOL_RED		= C_HRED;
	APLCOL_MAGENTA	= C_HMAGENTA;
	APLCOL_GREEN	= C_HGREEN;
	APLCOL_CYAN		= C_HCYAN;
	APLCOL_HYELLOW	= C_HYELLOW;

	return (NORMAL);
}
