#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 "ysmacro.h"
#include "ysgui.h"
#include "ysmalloc.h"
#include "ysrename.h"

extern int Ys11Id;

int	newFileDlg = -1 ;
int	newFilePreviewId = -1 ;
int	newFileHeadId = -1 ;
int	newFileNum[2] = -1 ;
int	newFileNumClmId = -1 ;
int	newFileTailId = -1 ;
int	newFileExtId = -1 ;


static char head[64],tail[64];
static int type;
static int nNum;
static char ext[4];


static int dspFlag=YSOFF;


void newFileGetValue(void);
void newFileSetValue(void);
void newFileSetPreview(void);

int newFileDialogue()
{
	int var,min,max,del,col;
	HYPER bas,nfd;
	int dx,dy;

	if(dspFlag==YSON)
	{
		return YSTRUE;
	}

	MMI_SendMessage(Ys11Id,MM_GETHYPER,1,&bas);
	MMI_SendMessage(newFileDlg,MM_GETHYPER,1,&nfd);
	dx=bas.fr.lupx-nfd.fr.lupx;
	dy=bas.fr.lupy-nfd.fr.lupy;
	dx+=16;
	dy+=16;
	MMI_SendMessage(newFileDlg,MM_MOVE,2,dx,dy);

	NfGetHead(head);
	NfGetTail(tail);
	NfGetType(&type);
	NfGetNumColumn(&nNum);
	NfGetExtention(ext);

	MMI_SendMessage(newFileHeadId,MM_SETTEXT,3,head,8,FALSE);
	MMI_SendMessage(newFileTailId,MM_SETTEXT,3,tail,8,FALSE);
	MMI_SendMessage(newFileExtId,MM_SETTEXT,3,ext,3,FALSE);

	switch(type)
	{
	case NFTYPE_NUMBER:
		MTL_setFlagObj(newFileNum[0],MS_TOGGLE);
		MTL_resetFlagObj(newFileNum[1],~MS_TOGGLE);
		break;
	case NFTYPE_ALPHA:
		MTL_setFlagObj(newFileNum[1],MS_TOGGLE);
		MTL_resetFlagObj(newFileNum[0],~MS_TOGGLE);
		break;
	}

	MMI_SendMessage(newFileNumClmId,MM_GETNUMBOX,5,&var,&min,&max,&del,&col);
	MMI_SendMessage(newFileNumClmId,MM_SETNUMBOX,5,nNum,min,max,del,col);

	MMI_SendMessage(newFileDlg,MM_ATTACH,1,MMI_GetBaseObj());
	MMI_SendMessage(newFileDlg,MM_SHOW,0);

	dspFlag=YSON;

	return YSTRUE;
}

int	newFileTypeFunc(int kobj)
{
	if(MTL_checkFlagObj(kobj,MS_TOGGLE)==0)
	{
		MTL_setFlagObj(kobj,MS_TOGGLE);
		MMI_SendMessage(kobj,MM_SHOW,0);
		return NOERR;
	}

	if(kobj==newFileNum[0])
	{
		type=NFTYPE_NUMBER;
		MTL_resetFlagObj(newFileNum[1],~MS_TOGGLE);
	}
	else
	{
		type=NFTYPE_ALPHA;
		MTL_resetFlagObj(newFileNum[0],~MS_TOGGLE);
	}

	MMI_SendMessage(newFileNum[0],MM_SHOW,0);
	MMI_SendMessage(newFileNum[1],MM_SHOW,0);

	newFileViewFunc();

	return NOERR ;
}



void newFileSetValue(void);
void newFileSetPreview(void);

int	newFileViewFunc()
{
	char head[64],tail[64];
	int type;
	int nNum;
	char ext[4];

	NfGetHead(head);
	NfGetTail(tail);
	NfGetType(&type);
	NfGetNumColumn(&nNum);
	NfGetExtention(ext);

	newFileGetValue();
	newFileSetValue();
	newFileSetPreview();

	NfSetHead(head);
	NfSetTail(tail);
	NfSetType(type);
	NfSetNumColumn(nNum);
	NfSetExtention(ext);

	return NOERR ;
}

void newFileGetValue(void)
{
	int var,min,max,del,col;

	MMI_SendMessage(newFileHeadId,MM_GETTEXT,3,head,8,FALSE);
	MMI_SendMessage(newFileTailId,MM_GETTEXT,3,tail,8,FALSE);
	MMI_SendMessage(newFileExtId,MM_GETTEXT,3,ext,3,FALSE);

	if(MTL_checkFlagObj(newFileNum[0],MS_TOGGLE)!=0)
	{
		type=NFTYPE_NUMBER;
	}
	else
	{
		type=NFTYPE_ALPHA;
	}

	MMI_SendMessage(newFileNumClmId,MM_GETNUMBOX,5,&var,&min,&max,&del,&col);
	nNum=var;
}

void newFileSetValue(void)
{
	NfSetHead(head);
	NfSetTail(tail);
	if(NfSetType(type)!=YSTRUE)
	{
		YsConfirm(Ys11Id,"ｱﾙﾌｧﾍﾞｯﾄに設定するにはﾌｧｲﾙ数が多すぎます.",NULL);
	}
	NfSetNumColumn(nNum);
	NfSetExtention(ext);
}

void newFileSetPreview(void)
{
	char fil[80];
	static char str[80];

	NfGetNewFileName(fil,1);
	sprintf(str,"%-20s",fil);
	str[20]=0;
	MMI_SendMessage(newFilePreviewId,MM_SETMSG,1,str);
	MMI_SendMessage(newFilePreviewId,MM_SHOW,0);
}


int	newFileSetFunc()
{
	newFileGetValue();
	newFileSetValue();
	MMI_SendMessage(newFileDlg,MM_ERASE,0);
	MMI_SendMessage(newFileDlg,MM_DETACH,0);

	dspFlag=YSOFF;

	FlResetNewFile();
	LmClearListMenu();
	LmSetListMenu();

	return NOERR ;
}

int	newFileCancelFunc()
{
	MMI_SendMessage(newFileDlg,MM_ERASE,0);
	MMI_SendMessage(newFileDlg,MM_DETACH,0);

	dspFlag=YSOFF;

	return NOERR ;
}

