#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "sftlib.h"

extern int	DB_scond  ;
extern int	DB_scond_hyp[2]  ;
extern int	DB_scond_T[23]  ;
extern int	DB_scond_TM[23]  ;
extern int	DB_scond_sub[19]  ;
extern int	DB_scond_T2[5]  ;
extern int	DB_scond_TM2[5]  ;
extern int	DB_scond_num  ;
extern int	DB_scond_numd[3]  ;
extern int	DB_scond_numu[3]  ;
extern int	DB_scond_name1  ;
extern int	DB_scond_name2  ;
extern int	DB_scond_maker  ;
extern int	DB_scond_about  ;
extern int	DB_scond_infom  ;


#define STRBIT_LEN 60

PROTO int get_DB_search( void )
{
	char buf[256];
    search *p;
    int i, min, max, delta, ptc;
    
    p=&DB_search;

/* タイトルの1文字     */
    p->name1bit=0;
	MMI_SendMessage( DB_scond_name1, MM_GETTEXT, 3, buf, 60, FALSE);
	buf[STRBIT_LEN]=0;
	for( i=0; i< strlen(buf); i++ ) p->name1bit |= DB_ctob( buf[i] );
	if( p->name1bit==0 ) p->name1bit=-1;

/* サブタイトルの1文字 は設定なし */
    p->name2bit=0;
	MMI_SendMessage( DB_scond_name2, MM_GETTEXT, 3, buf, 60, FALSE);
	buf[STRBIT_LEN]=0;
	for( i=0; i< strlen(buf); i++ ) p->name2bit |= DB_ctob( buf[i] );
	if( p->name2bit==0 ) p->name2bit=-1;

  /* メーカの1文字       */
    p->makerbit=0;
	MMI_SendMessage( DB_scond_maker, MM_GETTEXT, 3, buf, 60, FALSE);
	buf[STRBIT_LEN]=0;
	for( i=0; i< strlen(buf); i++ ) p->makerbit |= DB_ctob( buf[i] );
	if( p->makerbit==0 ) p->makerbit=-1;

  /* 概要   */
    p->aboutbit=0;
	MMI_SendMessage( DB_scond_about, MM_GETTEXT, 3, buf, 60, FALSE);
	buf[STRBIT_LEN]=0;
	for( i=0; i< strlen(buf); i++ ) p->aboutbit |= DB_ctob( buf[i] );
	if( p->aboutbit==0 ) p->aboutbit=-1;

  /* 必須･対応周辺機器   */
    p->infombit=0;
	MMI_SendMessage( DB_scond_infom, MM_GETTEXT, 3, buf, 60, FALSE);
	buf[STRBIT_LEN]=0;
	for( i=0; i< strlen(buf); i++ ) p->infombit |= DB_ctob( buf[i] );
	if( p->infombit==0 ) p->infombit=-1;

  /* 定価下              */
	MMI_SendMessage( DB_scond_numd[0], MM_GETNUMBOX, 5, 
	             &(p->teikad), &min, &max, &delta, &ptc );
  /* 定価上              */
	MMI_SendMessage( DB_scond_numu[0], MM_GETNUMBOX, 5, 
	             &(p->teikau), &min, &max, &delta, &ptc );

  /* メディア            */
	p->mediabit=0;
	for( i=0; i< MEDIA_NUM; i++ ) {
		p->mediabit |= (MTL_checkFlagObj(DB_scond_T2[i],MS_TOGGLE)?(1<<i):0);
	}
  /* 分類コード          */
	p->sortbit=0;
	for( i=0; i< BUNRUI_NUM; i++ ) {
		p->sortbit |= (MTL_checkFlagObj(DB_scond_T[i],MS_TOGGLE)?(1<<i):0);
	}
  /* 必要メモリ下        */
	MMI_SendMessage( DB_scond_numd[1], MM_GETNUMBOX, 5, 
	             &(p->ramd), &min, &max, &delta, &ptc );
  /* 必要メモリ上        */
	MMI_SendMessage( DB_scond_numu[1], MM_GETNUMBOX, 5, 
	             &(p->ramu), &min, &max, &delta, &ptc );
  /* 必要ハードディスク下    */
	MMI_SendMessage( DB_scond_numd[2], MM_GETNUMBOX, 5, 
	             &(p->hdd), &min, &max, &delta, &ptc );
  /* 必要ハードディスク上    */
	MMI_SendMessage( DB_scond_numu[2], MM_GETNUMBOX, 5, 
	             &(p->hdu), &min, &max, &delta, &ptc );

	return 0;
}


	
PROTO int set_DB_search( void )
{
	static char *str1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	char buf[256];
    search *p;
    int i;
    
    p=&DB_search;

/* タイトルの1文字     */

	if( p->name1bit==0 ) p->name1bit=-1;
    strcpy(buf, str1);
	for( i=0; i< 26; i++)
	{
	    if( ((p->name1bit)&(1<<i))==0 ) buf[i]=' ';
	} 
	MMI_SendMessage( DB_scond_name1, MM_SETTEXT, 3, buf, 60, FALSE);

/* サブタイトルの1文字 は設定なし */
	if( p->name2bit==0 ) p->name2bit=-1;
    strcpy(buf, str1);
	for( i=0; i< 26; i++)
	{
	    if( ((p->name2bit)&(1<<i))==0 ) buf[i]=' ';
	} 
	MMI_SendMessage( DB_scond_name2, MM_SETTEXT, 3, buf, 60, FALSE);

/* メーカの1文字       */
	if( p->makerbit==0 ) p->makerbit=-1;
    strcpy(buf, str1);
	for( i=0; i< 26; i++)
	{
	    if( ((p->makerbit)&(1<<i))==0 ) buf[i]=' ';
	} 
	MMI_SendMessage( DB_scond_maker, MM_SETTEXT, 3, buf, 60, FALSE);

  /* 概要   */
	if( p->aboutbit==0 ) p->aboutbit=-1;
    strcpy(buf, str1);
	for( i=0; i< 26; i++)
	{
	    if( ((p->aboutbit)&(1<<i))==0 ) buf[i]=' ';
	} 
	MMI_SendMessage( DB_scond_about, MM_SETTEXT, 3, buf, 60, FALSE);

  /* 必須･対応周辺機器   */
	if( p->infombit==0 ) p->infombit=-1;
    strcpy(buf, str1);
	for( i=0; i< 26; i++)
	{
	    if( ((p->infombit)&(1<<i))==0 ) buf[i]=' ';
	} 
	MMI_SendMessage( DB_scond_infom, MM_SETTEXT, 3, buf, 60, FALSE);


  /* 定価下              */
	MMI_SendMessage( DB_scond_numd[0], MM_SETNUMBOX, 5, 
	             (p->teikad), TEIKA_MIN, TEIKA_MAX, 1, 0 );
  /* 定価上              */
	MMI_SendMessage( DB_scond_numu[0], MM_SETNUMBOX, 5, 
	             (p->teikau), TEIKA_MIN, TEIKA_MAX, 1, 0 );

  /* メディア            */
	for( i=0; i< MEDIA_NUM; i++ ) {
		if( p->mediabit & (1<<i) ) 
			MTL_setFlagObj(DB_scond_T2[i],MS_TOGGLE);
		else	MTL_resetFlagObj(DB_scond_T2[i], ~MS_TOGGLE);
	}
  /* 分類コード          */
	for( i=0; i< BUNRUI_NUM; i++ ) {
		if( p->sortbit & (1<<i) ) 
			MTL_setFlagObj(DB_scond_T[i],MS_TOGGLE);
		else	MTL_resetFlagObj(DB_scond_T[i], ~MS_TOGGLE);
	}
  /* 必要メモリ下        */
	MMI_SendMessage( DB_scond_numd[1], MM_SETNUMBOX, 5, 
	             (p->ramd), RAM_MIN, RAM_MAX, 1, 0 );
  /* 必要メモリ上        */
	MMI_SendMessage( DB_scond_numu[1], MM_SETNUMBOX, 5, 
	             (p->ramu), RAM_MIN, RAM_MAX, 1, 0 );
  /* 必要ハードディスク下    */
	MMI_SendMessage( DB_scond_numd[2], MM_SETNUMBOX, 5, 
	             (p->hdd), HD_MIN, HD_MAX, 1, 0 );
  /* 必要ハードディスク上    */
	MMI_SendMessage( DB_scond_numu[2], MM_SETNUMBOX, 5, 
	             (p->hdu), HD_MIN, HD_MAX, 1, 0 );

	return 0;
}


