#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <time.h>
#include "sftlib.h"

extern int	DB_mdfy_Alert ;
extern int	DB_mdfy_tB[6] ;
extern int	DB_mdfy_name1 ;
extern int	DB_mdfy_name1_k ;
extern int	DB_mdfy_name2 ;
extern int	DB_mdfy_name2_k ;
extern int	DB_mdfy_maker ;
extern int	DB_mdfy_maker_k ;
extern int	DB_mdfy_about ;
extern int	DB_mdfy_about_k ;
extern int	DB_mdfy_infom ;
extern int	DB_mdfy_infom_k ;
extern int	DB_mdfy_sort ;
extern int	DB_mdfy_code ;
extern int	DB_mdfy_teika ;
extern int	DB_mdfy_ram ;
extern int	DB_mdfy_hd ;
extern int	DB_mdfy_Alert_sub[16] ;
extern int	DB_mdfy_mda[5] ;
extern int	DB_mdfy_docfile ;
extern int	DB_mdfy_mdaM[5] ;
extern int	DB_mdfy_BT[3] ;
extern int	DB_mdfy_BTM[3] ;
extern int	DB_mdfy_Alert_tM[6] ;
extern int	DB_mdfy_Alert_t[6] ;
extern int	DB_mdfy_AlertDate ;
extern int	DB_mdfy_AlertDateT ;
extern int	DB_mdfy_AlertDateN[6] ;
extern int	DB_mdfy_AlertDateM[6] ;
extern int	DB_mdfy_AlertDateB[3] ;
extern int	DB_mdfy_AlertDateBM[3] ;

/* global */
char DB_mdate[6][28];


PROTO int DB_strccpy( char *d, char *s, int dlen )
{
	int slen,len;
	slen=strlen(s);
	memset( d, ' ', dlen);
	d[dlen]=0;
	len=_min(slen, dlen);
	memcpy( d, s, len);
	return 0;
}


PROTO int DB_mdfy_getdata( soft *data )
{
	extern soft DB_mdfy_data;
	char buf[512];
	int i, min, max, delta, ptc;

	MMI_SendMessage( DB_mdfy_name1, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	DB_strccpy( data->d_name1, buf, TNAME1_LEN );
	MMI_SendMessage( DB_mdfy_name1_k, MM_GETTEXT, 3, buf,sizeof(buf)-1, FALSE);
	data->d_name1h=(buf[0]);

	MMI_SendMessage( DB_mdfy_name2, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	DB_strccpy( data->d_name2, buf, TNAME2_LEN );
	MMI_SendMessage( DB_mdfy_name2_k, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	data->d_name2h=(buf[0]);

	MMI_SendMessage( DB_mdfy_maker, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	DB_strccpy( data->d_maker, buf, TMAKER_LEN );
	MMI_SendMessage( DB_mdfy_maker_k, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	data->d_makerh=(buf[0]);

	MMI_SendMessage( DB_mdfy_about, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	DB_strccpy( data->d_about, buf, TABOUT_LEN );
	MMI_SendMessage( DB_mdfy_about_k, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	data->d_abouth=(buf[0]);

	MMI_SendMessage( DB_mdfy_infom, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	DB_strccpy( data->d_infom, buf, TINFOM_LEN );
	MMI_SendMessage( DB_mdfy_infom_k, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	data->d_infomh=(buf[0]);

	MMI_SendMessage( DB_mdfy_sort, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	data->d_sort=DB_ctob(buf[0]);

	MMI_SendMessage( DB_mdfy_code, MM_GETTEXT, 3, buf, sizeof(buf)-1, FALSE);
	DB_strccpy( data->d_code, buf, CODE_NUM);

	MMI_SendMessage( DB_mdfy_teika, MM_GETNUMBOX, 5, 
	             &(data->d_teika), &min, &max, &delta, &ptc );
	MMI_SendMessage( DB_mdfy_ram, MM_GETNUMBOX, 5, 
	             &(data->d_ram), &min, &max, &delta, &ptc );
	MMI_SendMessage( DB_mdfy_hd, MM_GETNUMBOX, 5, 
	             &(data->d_hd), &min, &max, &delta, &ptc );

	if( data->d_date1==0 ) 	{time(&(data->d_date1)),data->d_date2=0;}
		else time(&(data->d_date2));
	data->d_date3=DB_mdfy_data.d_date3;
	data->d_date4=DB_mdfy_data.d_date4;
	data->d_date5=DB_mdfy_data.d_date5;
	data->d_date6=DB_mdfy_data.d_date6;
	data->d_date7=DB_mdfy_data.d_date7;
	data->d_date8=DB_mdfy_data.d_date8;

	MMI_SendMessage( DB_mdfy_docfile, MM_GETTEXT, 3, buf, sizeof(buf)-1,FALSE);
	DB_strccpy( data->d_docfile, buf, TDOCFL_LEN );

	for( i=0; i< MEDIA_NUM; i++ ) {
		if(MTL_checkFlagObj(DB_mdfy_mda[i],MS_TOGGLE) )
			data->d_media |= (1<<i);
	}

	return 0;
}

PROTO int DB_mdfy_setdata( soft *data )
{
	int i  ;
	time_t *t;

	MMI_SendMessage( DB_mdfy_name1, MM_SETTEXT, 3,
							data->d_name1, TNAME1_LEN, FALSE);
	MMI_SendMessage( DB_mdfy_name1_k, MM_SETTEXT, 3, 
							&(data->d_name1h), 1, FALSE);

	MMI_SendMessage( DB_mdfy_name2, MM_SETTEXT, 3, 
							data->d_name2, TNAME2_LEN, FALSE);
	MMI_SendMessage( DB_mdfy_name2_k, MM_SETTEXT, 3, 
							&(data->d_name2h),1,FALSE);

	MMI_SendMessage( DB_mdfy_maker, MM_SETTEXT, 3,
							data->d_maker, TMAKER_LEN, FALSE);
	MMI_SendMessage( DB_mdfy_maker_k, MM_SETTEXT, 3, 
							&(data->d_makerh),1, FALSE);

	MMI_SendMessage( DB_mdfy_about, MM_SETTEXT, 3, 
							data->d_about, TABOUT_LEN, FALSE);
	MMI_SendMessage( DB_mdfy_about_k, MM_SETTEXT, 3, 
							&(data->d_abouth),1, FALSE);

	MMI_SendMessage( DB_mdfy_infom, MM_SETTEXT, 3, 
							data->d_infom, TINFOM_LEN, FALSE);
	MMI_SendMessage( DB_mdfy_infom_k, MM_SETTEXT, 3, 
							&(data->d_infomh),1, FALSE);

	MMI_SendMessage( DB_mdfy_sort, MM_SETTEXT, 3, 
							DB_btoc(data->d_sort), 1, FALSE);

	MMI_SendMessage( DB_mdfy_code, MM_SETTEXT, 3, 
							data->d_code, CODE_NUM, FALSE);

	MMI_SendMessage( DB_mdfy_teika, MM_SETNUMBOX, 5, 
	             (data->d_teika), TEIKA_MIN, TEIKA_MAX, 1, 0 );
	MMI_SendMessage( DB_mdfy_ram, MM_SETNUMBOX, 5, 
	             (data->d_ram), RAM_MIN, RAM_MAX, 1, 0 );
	MMI_SendMessage( DB_mdfy_hd, MM_SETNUMBOX, 5, 
	             (data->d_hd), HD_MIN, HD_MAX, 1, 0 );

	MMI_SendMessage( DB_mdfy_docfile, MM_SETTEXT, 3,
							data->d_docfile, TDOCFL_LEN, FALSE);

  /* メディア            */
	for( i=0; i< MEDIA_NUM; i++ ) {
		if( data->d_media & (1<<i) ) 
			MTL_setFlagObj(DB_mdfy_mda[i],MS_TOGGLE);
		else	MTL_resetFlagObj(DB_mdfy_mda[i], ~MS_TOGGLE);
	}
	t=&(data->d_date3);
	for( i=0; i<6; i++) {
		strcpy( DB_mdate[i], DB_ctime(t++));
		MMI_SendMessage( DB_mdfy_Alert_t[i], MM_SETMSG, 1, DB_mdate[i]); 
	}

	return 0;
}


PROTO int DB_mdfy_cttlsp( soft *data )
{
	DB_cuttlsp( &(data->d_name1h), 1);          /* タイトルキー      [A-Z] */
    DB_cuttlsp( &(data->d_name2h), 1);          /* サブタイトルキー  [A-Z] */
    DB_cuttlsp( &(data->d_makerh), 1);          /* メーカーキー      [A-Z] */
    DB_cuttlsp( &(data->d_abouth), 1);          /* 概要キー          [A-Z] */
    DB_cuttlsp( &(data->d_infomh), 1);          /* 周辺機器キー      [A-Z] */
    DB_cuttlsp(  data->d_code, CODE_NUM);     /* 管理コード         注3  */
	DB_cuttlsp(  data->d_name1,TNAME1_LEN) ;  /* ソフトのタイトル          */
    DB_cuttlsp(  data->d_name2,TNAME2_LEN) ;  /* サブタイトル(ﾊﾞｰｼﾞｮﾝなど) */
    DB_cuttlsp(  data->d_maker,TMAKER_LEN) ;  /* メーカー                  */
    DB_cuttlsp(  data->d_about,TABOUT_LEN) ;  /* ソフト概要紹介文          */
    DB_cuttlsp(  data->d_infom,TINFOM_LEN) ;  /* 必須･対応周辺機器         */
    DB_cuttlsp(  data->d_docfile,TDOCFL_LEN); /* ドキュメントファイル名    */
	DB_cuttlsp(  data->d_filer,140);          /* 予備                      */
	return 0;
}

