#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "sftlib.h"

int	DB_mdfy_Alert = -1 ;
int	DB_mdfy_tB[6] ;
int	DB_mdfy_name1 = -1 ;
int	DB_mdfy_name1_k = -1 ;
int	DB_mdfy_name2 = -1 ;
int	DB_mdfy_name2_k = -1 ;
int	DB_mdfy_maker = -1 ;
int	DB_mdfy_maker_k = -1 ;
int	DB_mdfy_about = -1 ;
int	DB_mdfy_about_k = -1 ;
int	DB_mdfy_infom = -1 ;
int	DB_mdfy_infom_k = -1 ;
int	DB_mdfy_sort = -1 ;
int	DB_mdfy_code = -1 ;
int	DB_mdfy_teika = -1 ;
int	DB_mdfy_ram = -1 ;
int	DB_mdfy_hd = -1 ;
int	DB_mdfy_Alert_sub[16] = -1 ;
int	DB_mdfy_mda[5] = -1 ;
int	DB_mdfy_docfile = -1 ;
int	DB_mdfy_mdaM[5] = -1 ;
int	DB_mdfy_BT[3] = -1 ;
int	DB_mdfy_BTM[3] = -1 ;
int	DB_mdfy_Alert_tM[6] ;
int	DB_mdfy_Alert_t[6] ;
int	DB_mdfy_AlertDate ;
int	DB_mdfy_AlertDateT ;
int	DB_mdfy_AlertDateN[6] ;
int	DB_mdfy_AlertDateM[6] ;
int	DB_mdfy_AlertDateB[3] ;
int	DB_mdfy_AlertDateBM[3] ;


/* global val */
int DB_mdfy_ret=0;
int DB_mdfyDate_ret=0;
soft DB_mdfy_data;

/*	initDataMDFY:DB_mdfy_tB[0]:MJ_ICONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_tB[1]:MJ_ICONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_tB[2]:MJ_ICONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_tB[3]:MJ_ICONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_tB[4]:MJ_ICONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_tB[5]:MJ_ICONL40の呼び出し関数	*/
int	DB_mdfy_date(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	time_t *t;
	int i; int ret;
	char *str;

	t=&(DB_mdfy_data.d_date3);
	for(i=0; i<6; i++, t++) {
		if( kobj==DB_mdfy_tB[i] ) break;
	}
	if(i>=6) return NOERR;

	str=&(date_mes[i][0]);
	ret=DB_mdfy_dateCall( str, t);
	if( ret!=1 ) {
		strcpy( DB_mdate[i], DB_ctime(t));
		MMI_SendMessage( DB_mdfy_Alert_t[i], MM_SETMSG, 1, DB_mdate[i]); 
		MMI_SendMessage( DB_mdfy_Alert_t[i], MM_ERASE, 0); 
		MMI_SendMessage( DB_mdfy_Alert_t[i], MM_SHOW, 0); 
	}
	return NOERR ;
}

/*	initDataMDFY:DB_mdfy_BT[0]:MJ_DBUTTONL40の呼び出し関数	*/
int	DB_mdfy_btn_set(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{

	DB_mdfy_getdata( &DB_mdfy_data );
	MMI_SendMessage( DB_mdfy_Alert, MM_ERASE, 0);
	MMI_SendMessage( DB_mdfy_Alert, MM_DETACH, 0);
	MMI_SetHaltFlag(True);
	DB_mdfy_ret=0;
	return NOERR ;
}

/*	initDataMDFY:DB_mdfy_BT[1]:MJ_DBUTTONL40の呼び出し関数	*/
int	DB_mdfy_btn_can(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	MMI_SendMessage( DB_mdfy_Alert, MM_ERASE, 0);
	MMI_SendMessage( DB_mdfy_Alert, MM_DETACH, 0);
	MMI_SetHaltFlag(True);
	DB_mdfy_ret=1;
	return NOERR ;
}

/*	initDataMDFY:DB_mdfy_BT[2]:MJ_DBUTTONL40の呼び出し関数	*/
int	DB_mdfy_btn_help(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
    DB_typeAlertCall( "編集について",    DB_help4p );
	return NOERR ;
}

/*	initDataMDFY:DB_mdfy_Alert_sub[13]:MJ_ICONL40の呼び出し関数	*/
int	DB_mdfy_sftkey(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	MMI_DspSkb();
	return NOERR ;
}

/*	initDataMDFY:DB_mdfy_Alert_sub[15]:MJ_ICONL40の呼び出し関数	*/
int	DB_mdfy_file(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	char path[_MAX_PATH+1];
	char fname[TDOCFL_LEN+1];
	int ret;
	TEHandle *texth;
	AMI_PATH_t p;
	int pathlen;
	
	MMI_SendMessage( DB_mdfy_docfile, MM_GETTEXT, 3, fname, TDOCFL_LEN,FALSE );
	strcpy( path, DB_docdir);
	strcat( path, fname);
	ret=AMI_FILED_getpath_A( path, "呼出しファイル", "取 得", "やめる", 
								DB_mdfy_Alert);
	MMI_SendMessage( DB_mdfy_Alert, MM_DETACH, 0);
	MMI_SendMessage( DB_mdfy_Alert, MM_ATTACH, 1, DB_base );
/*	MMI_SendMessage( DB_mdfy_AlertDate, MM_ATTACH, 1, DB_mdfy_Alert );*/
/*	MMI_SendMessage( DB_mdfy_Alert, MM_SHOW, 0); */

	if( ret==1 ) /* 実行して終了した */
	{
		MMI_SendMessage( DB_mdfy_docfile, MM_GETTEHANDLE, 1, &texth );
		AMI_pathsplit( &p, path) ;
		strcpy( path, p.fname);
		strcat( path, p.ext );
		MMI_SendMessage( DB_mdfy_docfile, MM_SETTEXT, 3, path, 
			strlen(path), FALSE);
		TE_Activate( texth, 0, 0 );
		TE_offsetJump( strlen(path) );
		TE_UpDate();
		TE_Deactivate();
/*		strcpy( AMI_PLT_pltpath, path );*/ /* 控えは作っていない */
	}
	
	return NOERR ;
}


/*	initDataMDFY:DB_mdfy_AlertDateB[0]:MJ_DBUTTONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_AlertDateB[1]:MJ_DBUTTONL40の呼び出し関数	*/
/*	initDataMDFY:DB_mdfy_AlertDateB[2]:MJ_DBUTTONL40の呼び出し関数	*/
int	DB_mdfyDateFunc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	if( kobj==DB_mdfy_AlertDateB[0]) DB_mdfyDate_ret=0;
	if( kobj==DB_mdfy_AlertDateB[1]) DB_mdfyDate_ret=1;
	if( kobj==DB_mdfy_AlertDateB[2]) DB_mdfyDate_ret=2;

	MMI_SendMessage( DB_mdfy_AlertDate, MM_ERASE, 0);
	MMI_SendMessage( DB_mdfy_AlertDate, MM_DETACH, 0);
	MMI_SetHaltFlag(True);
	return NOERR ;
}

int DB_mdfy_dsp( soft *data )
{
	DB_mdfy_data=*data;
	
	DB_mdfy_setdata( &DB_mdfy_data);
	MMI_SendMessage( DB_mdfy_Alert, MM_ATTACH, 1, DB_base);
	MMI_SendMessage( DB_mdfy_Alert, MM_SHOW, 0);
	MMI_ExecSystem();
	if( DB_mdfy_ret==0 ) *data=DB_mdfy_data;
	return DB_mdfy_ret;
}

PROTO int DB_mdfy_call( int n , index *ind)
{
	soft data;
	FILE *fpd, *fpx;
	int ret;
	
	fpd=fopen( DB_sftlibp,"rb+");
	fseek( fpd, sizeof(soft)*n, SEEK_SET);
	fread( &data, sizeof(data),1,fpd);
	DB_mdfy_cttlsp( &data );
	ret=DB_mdfy_dsp( &data );
	if( ret==0 ) {
		data.d_system[0]='S';
		fseek( fpd, sizeof(soft)*n, SEEK_SET);
		fwrite( &data, sizeof(data),1,fpd);

		data2ind( &data, ind );
		ind->softno=n;
		fpx=fopen(DB_indexp,"rb+");
		fseek( fpx, sizeof(index)*n, SEEK_SET);
		fwrite( ind, sizeof(index),1,fpx);
		fseek( fpx, 0, SEEK_END);
		fclose(fpx);
	}
	fseek( fpd, 0, SEEK_END);
	fclose(fpd);


	return ret;
}


PROTO int DB_mdfy_dateCall( char *str, time_t *t)
{
	struct tm tx;
	time_t tt;
	int min, max, del, pnt;


	MMI_SendMessage( DB_mdfy_AlertDateT, MM_SETMSG, 1, str);

	if( *t!=0 ) tt=*t; else time(&tt);
	tx=*localtime(&tt);

	MMI_SendMessage( DB_mdfy_AlertDateN[0], MM_SETNUMBOX, 5, 
	             1900+(tx.tm_year), 1980, 2020, 1, 0 );
	MMI_SendMessage( DB_mdfy_AlertDateN[1], MM_SETNUMBOX, 5, 
	             1+(tx.tm_mon), 1, 12, 1, 0 );
	MMI_SendMessage( DB_mdfy_AlertDateN[2], MM_SETNUMBOX, 5, 
	             tx.tm_mday, 1, 31, 1, 0 );
	MMI_SendMessage( DB_mdfy_AlertDateN[3], MM_SETNUMBOX, 5, 
	             tx.tm_hour, 0, 23, 1, 0 );
	MMI_SendMessage( DB_mdfy_AlertDateN[4], MM_SETNUMBOX, 5, 
	             tx.tm_min, 0, 59, 1, 0 );
	MMI_SendMessage( DB_mdfy_AlertDateN[5], MM_SETNUMBOX, 5, 
	             tx.tm_sec, 0, 61, 1, 0 );

	MMI_SendMessage( DB_mdfy_AlertDate, MM_ATTACH, 1, DB_base);
	MMI_SendMessage( DB_mdfy_AlertDate, MM_SHOW, 0);
	MMI_ExecSystem();
	if( DB_mdfyDate_ret==0 ) {  /* 設定が押された */
		MMI_SendMessage( DB_mdfy_AlertDateN[0], MM_GETNUMBOX, 5, 
	             &(tx.tm_year), &min, &max, &del, &pnt );(tx.tm_year)-=1900;
		MMI_SendMessage( DB_mdfy_AlertDateN[1], MM_GETNUMBOX, 5, 
	             &(tx.tm_mon), &min, &max, &del, &pnt );--(tx.tm_mon);
		MMI_SendMessage( DB_mdfy_AlertDateN[2], MM_GETNUMBOX, 5, 
	             &(tx.tm_mday), &min, &max, &del, &pnt );
		MMI_SendMessage( DB_mdfy_AlertDateN[3], MM_GETNUMBOX, 5, 
	             &(tx.tm_hour), &min, &max, &del, &pnt );
		MMI_SendMessage( DB_mdfy_AlertDateN[4], MM_GETNUMBOX, 5, 
	             &(tx.tm_min), &min, &max, &del, &pnt );
		MMI_SendMessage( DB_mdfy_AlertDateN[5], MM_GETNUMBOX, 5, 
	             &(tx.tm_sec), &min, &max, &del, &pnt );
		*t=mktime( &tx);
	}
	if( DB_mdfyDate_ret==2 ) { /* 消去が押された */
		*t=0;
	}
	return DB_mdfyDate_ret;
}

