#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	AMI_INFO = -1 ;
int	AMI_INFO_b = -1 ;
int	AMI_INFO_m[8] = -1 ;

/*ami*/

int AMI_INFO_end;

PROTO int AMI_INFO_call(char *strings[7] , char *b) PROTOEND
{
	EVENT *pev,ev;
	int   evmsk;
	int i;
	for(i=0; i<7; i++ )
		MMI_SendMessage(AMI_INFO_m[i], MM_SETMSG, 1, strings[i]);
	MMI_SendMessage(AMI_INFO_m[7], MM_SETMSG, 1, b);
	MMI_SendMessage(AMI_INFO, MM_ATTACH, 1, MMI_GetBaseObj());
	MMI_SendMessage(AMI_INFO, MM_SHOW, 0) ;
	AMI_INFO_end=1;
	evmsk=MMI_GetEventMask();
	MMI_SetEventMask( EVALL );
	while( AMI_INFO_end ){
		MMI_iosense();
		if( MMI_GetEvnt(EVALL, &pev)==NOERR )
		{
			ev=*pev;
			MMI_ExecEvnt(&ev);
			if( ev.what == EVKEY )  {
				if( ev.info == '\r' )  
					MMI_SendMessage( AMI_INFO_b, MM_EXEC, 0 );
			}
		}
	}
	MMI_SetEventMask(evmsk);
	return 0;
}

PROTO int AMI_INFO_call_1(char *str ) PROTOEND
{
	char *strings[7]={"","","","","","",""};
	char *s, *p, *pp;
	int i;
	
	p=s=AMI_malloc( strlen(str)+1 );
	if( s==NULL ) return -1;
	strcpy( s, str);
	for(i=0; i<7; i++ )
	{
		strings[i]=p;
		pp=strchr(p,'\n');
		if( pp==NULL ) break;
		*pp='\0';
		p=pp+1;
	}
	AMI_INFO_call( strings , "了 解") ;
	AMI_free(s);
	return 0;
}

PROTO int AMI_INFO_freemem() PROTOEND
{
	int p, l, max;
	char str[512];
	p=TL_checkMemory(0);
	l=TL_checkMemory(2);
	max=((p<l)?p:l)*4;
	sprintf(str, "メモリ情報\n" /*タイトル*/
		"\n"
		"純粋な空きブロック数 = %d\n" 
		"連続的に取得可能なブロック数 = %d\n" 
		"最大獲得メモリ %d Ｋバイト", 
		p,l,max);
	return AMI_INFO_call_1( str );
}
/*amiend*/

/*	initDataINFO:AMI_INFO_b:MJ_DBUTTONL40の呼び出し関数	*/
int	AMI_INFO_func(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
    MMI_SendMessage( AMI_INFO, MM_ERASE, 0 );
	MMI_SendMessage( AMI_INFO, MM_DETACH,0);
	AMI_INFO_end=0;
	return NOERR ;
}

