/*************************************************************************
*	try4nif
*************************************************************************/


char	*MACROKEY_T4N_MAINDEF_FILENAME = "Try4nif_maindef_filename";
char	*try4nif_exp = "try4nif.exp";

int		_t4n_login();
int		_t4n_search_id();
int		_t4n_artlist();
int		_t4n_datalist();
int		_t4n_mailslist();
int		_t4n_setup();
int		_t4n_get_fnout(char *fnout, char *ttl);

int		CCI_t4n_top_menu(int argc, char **argv)
{
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *p;

	if ( (p = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME)) == NULL )
	{
#ifdef	_TAROPYON_SYSTEM
		p = "L:/USR/BBS/NIFWORK/main.def";
#else
		p = "try4nif.def";
#endif
		AMAC_setKey( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME, p );
	}

	obj = NULL;
	mnu = NULL;
	for (;;)
	{
		if( obj == NULL )
			obj = MNU_alloc(6);

		MNU_setObj(obj, 0, MNU_NOR, 'L', "LOGIN"         , NULL, 1, NULL, NULL);
		MNU_setObj(obj, 1, MNU_NOR, 'I', "ID検索"        , NULL, 2, NULL, NULL);
		MNU_setObj(obj, 2, MNU_NOR, 'A', "発言一覧"      , NULL, 3, NULL, NULL);
		MNU_setObj(obj, 3, MNU_NOR, 'D', "データ一覧"    , NULL, 4, NULL, NULL);
		MNU_setObj(obj, 4, MNU_NOR, 'S', "送信メール一覧", NULL, 5, NULL, NULL);
		MNU_setObj(obj, 5, MNU_NOR, 'E', "環境設定"      , NULL, 6, NULL, NULL);
		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "TRY4NIF MENU" );
		ret = MNU_start ( mnu );
		switch ( ret )
		{
			case 1:	_t4n_login()    ;	goto _BREAK;
			case 2:	_t4n_search_id();	goto _BREAK;
			case 3:	_t4n_artlist()  ;	goto _BREAK;
			case 4:	_t4n_datalist() ;	goto _BREAK;
			case 5:	_t4n_mailslist();	goto _BREAK;
			case 6:	_t4n_setup()    ;	break;
			default:
				goto _BREAK;
		}
	}
_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	return (0);
}

/*************************************************************************
*	サービス開始（ログイン）
*************************************************************************/

int		_t4n_login()
{
	char		*fndef;

	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	AplDtaInit();	/* DTA 領域初期化	*/
	AplDtaSetStr( "$MainArg", "%s %s", try4nif_exp, fndef );
	AplPclExec( try4nif_exp, 7);

	return (0);
}

/*************************************************************************
*	ID検索
*************************************************************************/

int		_t4n_search_id()
{
	char		   *dlg;
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *fndef, *pathtmp;
	char			mnuttl_mes[128], mnuttl_lib[128], mnuttl_fnout[256], mnuttl_id[256];

	static char		para_id[128];
	static char		fnout[256];
	static int		search_mes = 0, search_lib = 0;

	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	/* 出力テキストファイル名	*/
	if ( fnout[0] == '\0' )
	{
		if ( (pathtmp = getenv("TMP")) == NULL )
			pathtmp = AplGetStartPath();
		strcpy(fnout, pathtmp);
		make_filename(fnout,pathtmp,"searchid.txt",NULL);
	}


	obj = NULL;
	mnu = NULL;

	for (;;)
	{
		if ( obj == NULL )
			obj = MNU_alloc(6);
		sprintf(mnuttl_id   ,"検索ID           [%s]", para_id );
		sprintf(mnuttl_fnout,"出力ファイル     [%s]", fnout   );
		sprintf(mnuttl_mes  ,"会議室           [%s]", search_mes ? "ON " : "OFF");
		sprintf(mnuttl_lib  ,"データライブラリ [%s]", search_lib ? "ON " : "OFF");

		MNU_setObj(obj, 0, MNU_NOR, 'O', mnuttl_id       , NULL, 1, NULL, NULL);
		MNU_setObj(obj, 1, MNU_NOR, 'O', mnuttl_fnout    , NULL, 2, NULL, NULL);
		MNU_setObj(obj, 2, MNU_NOR, 'M', mnuttl_mes      , NULL, 3, NULL, NULL);
		MNU_setObj(obj, 3, MNU_NOR, 'L', mnuttl_lib      , NULL, 4, NULL, NULL);
		MNU_setObj(obj, 4, MNU_BLK,  0 , NULL            , NULL, 0, NULL, NULL);
		MNU_setObj(obj, 5, MNU_NOR, 'S', "<<<SEARCH>>>>" , NULL, 9, NULL, NULL);
		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "SEARCH ID" );
		ret = MNU_start ( mnu );

		switch  ( ret )
		{
			case 1:	/* 検索IDの入力	*/
				dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
				    " ID ? " );
				DLG_getsSetTitle( dlg, "SEARCH ID" );
				ret = DLG_getsStart( dlg, 127, para_id);
				DLG_getsClose(dlg);
				break;

			case 2:	/* 出力ファイル名	*/
				_t4n_get_fnout(fnout, "SEARCH ID");
				break;

			case 3:
				search_mes = search_mes ? 0 : 1;
				break;

			case 4:
				search_lib = search_lib ? 0 : 1;
				break;

			case 9:
				ret = 0;
				goto _BREAK;
			default:
				ret = -1;
				goto _BREAK;
		}
	}

_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	if ( ret == 0 )
	{
		if ( para_id[0] == '\0' || fnout[0] == '\0' )
			return (0);	/* error */

		AplDtaInit();	/* DTA 領域初期化	*/
		AplDtaSetStr( "$MainArg", "%s %s -search_id %s %s %s -id %s",
		    try4nif_exp,
		    fndef      ,
		    fnout      ,
		    search_mes ? "-conf" : "",
		    search_lib ? "-dl"   : "",
		    para_id );
		AplPclExec( try4nif_exp, 7);

		AplHelpDlg( fnout, "SEARCH ID" );
	}

	return (0);
}


/*************************************************************************
*	発言タイトルの一覧
*************************************************************************/

int		_t4n_artlist()
{
	char		   *dlg;
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *fndef, *pathtmp;
	char			mnuttl_forum[256], mnuttl_fnout[256];

	static char		para_forum[128];
	static char		fnout[256];


	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	/* 出力テキストファイル名	*/
	if ( fnout[0] == '\0' )
	{
		if ( (pathtmp = getenv("TMP")) == NULL )
			pathtmp = AplGetStartPath();
		strcpy(fnout, pathtmp);
		make_filename(fnout,pathtmp,"artlist.txt",NULL);
	}


	obj = NULL;
	mnu = NULL;
	for (;;)
	{
		if ( obj == NULL )
			obj = MNU_alloc(4);

		sprintf(mnuttl_forum,"検索フォーラム   [%s]", para_forum[0] == '\0' ? "全フォーラム" : para_forum );
		sprintf(mnuttl_fnout,"出力ファイル     [%s]", fnout   );

		MNU_setObj(obj, 0, MNU_NOR, 'F', mnuttl_forum       , NULL, 1, NULL, NULL);
		MNU_setObj(obj, 1, MNU_NOR, 'O', mnuttl_fnout       , NULL, 2, NULL, NULL);
		MNU_setObj(obj, 2, MNU_BLK,  0 , NULL               , NULL, 0, NULL, NULL);
		MNU_setObj(obj, 3, MNU_NOR, 'S', "<<<MAKE LIST>>>>" , NULL, 9, NULL, NULL);

		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "ARTICLE LIST" );
		ret = MNU_start ( mnu );

		switch  ( ret )
		{
			case 1:	/* フォーラム指定	*/
				dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
				    " FORUM " );
				DLG_getsSetTitle( dlg, "FORUM" );
				ret = DLG_getsStart( dlg, 127, para_forum);
				DLG_getsClose(dlg);
				break;

			case 2:	/* 出力ファイル名	*/
				_t4n_get_fnout(fnout, "ARTICLE LIST");
				break;

			case 9:
				ret = 0;
				goto _BREAK;
			default:
				ret = -1;
				goto _BREAK;
		}
	}

_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	if ( ret == 0 )
	{
		if ( fnout[0] == '\0' )
			return (0);	/* error */

		AplDtaInit();	/* DTA 領域初期化	*/
		AplDtaSetStr( "$MainArg", "%s %s -artlist %s %s %s",
		    try4nif_exp,
		    fndef      ,
		    fnout      ,
		    para_forum[0] == '\0' ? "" : "-forum",
		    para_forum[0] == '\0' ? "" : para_forum );
		AplPclExec( try4nif_exp, 7);

		AplHelpDlg( fnout, "ARTICLE LIST" );
	}

	return (0);
}


/*************************************************************************
*	データ一覧表示
*************************************************************************/

int		_t4n_datalist()
{
	char		   *dlg;
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *fndef, *pathtmp;
	char			mnuttl_forum[256], mnuttl_fnout[256];

	static char		para_forum[128];
	static char		fnout[256];


	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	/* 出力テキストファイル名	*/
	if ( fnout[0] == '\0' )
	{
		if ( (pathtmp = getenv("TMP")) == NULL )
			pathtmp = AplGetStartPath();
		strcpy(fnout, pathtmp);
		make_filename(fnout,pathtmp,"datalist.txt",NULL);
	}


	obj = NULL;
	mnu = NULL;
	for (;;)
	{
		if ( obj == NULL )
			obj = MNU_alloc(4);

		sprintf(mnuttl_forum,"検索フォーラム   [%s]", para_forum[0] == '\0' ? "全フォーラム" : para_forum );
		sprintf(mnuttl_fnout,"出力ファイル     [%s]", fnout   );

		MNU_setObj(obj, 0, MNU_NOR, 'F', mnuttl_forum       , NULL, 1, NULL, NULL);
		MNU_setObj(obj, 1, MNU_NOR, 'O', mnuttl_fnout       , NULL, 2, NULL, NULL);
		MNU_setObj(obj, 2, MNU_BLK,  0 , NULL               , NULL, 0, NULL, NULL);
		MNU_setObj(obj, 3, MNU_NOR, 'S', "<<<MAKE LIST>>>>" , NULL, 9, NULL, NULL);

		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "DATA LIST" );
		ret = MNU_start ( mnu );

		switch  ( ret )
		{
			case 1:	/* フォーラム指定	*/
				dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
				    " FORUM " );
				DLG_getsSetTitle( dlg, "FORUM" );
				ret = DLG_getsStart( dlg, 127, para_forum);
				DLG_getsClose(dlg);
				break;

			case 2:	/* 出力ファイル名	*/
				_t4n_get_fnout(fnout, "DATA LIST");
				break;

			case 9:
				ret = 0;
				goto _BREAK;
			default:
				ret = -1;
				goto _BREAK;
		}
	}

_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	if ( ret == 0 )
	{
		if ( fnout[0] == '\0' )
			return (0);	/* error */

		AplDtaInit();	/* DTA 領域初期化	*/
		AplDtaSetStr( "$MainArg", "%s %s -datalist %s %s %s",
		    try4nif_exp,
		    fndef  ,
		    fnout  ,
		    para_forum[0] == '\0' ? "" : "-forum",
		    para_forum[0] == '\0' ? "" : para_forum );
		AplPclExec( try4nif_exp, 7);

		AplHelpDlg( fnout, "DATA LIST" );
	}

	return (0);
}

/*************************************************************************
*	送信メール一覧表示
*************************************************************************/

int		_t4n_mailslist()
{
	char		   *dlg;
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *fndef, *pathtmp;
	char			mnuttl_fnout[256];
	static char		fnout[256];


	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	/* 出力テキストファイル名	*/
	if ( fnout[0] == '\0' )
	{
		if ( (pathtmp = getenv("TMP")) == NULL )
			pathtmp = AplGetStartPath();
		strcpy(fnout, pathtmp);
		make_filename(fnout,pathtmp,"mailsl.txt",NULL);
	}


	obj = NULL;
	mnu = NULL;
	for (;;)
	{
		if ( obj == NULL )
			obj = MNU_alloc(3);

		sprintf(mnuttl_fnout,"出力ファイル     [%s]", fnout   );
		MNU_setObj(obj, 0, MNU_NOR, 'O', mnuttl_fnout       , NULL, 1, NULL, NULL);
		MNU_setObj(obj, 1, MNU_BLK,  0 , NULL               , NULL, 0, NULL, NULL);
		MNU_setObj(obj, 2, MNU_NOR, 'S', "<<<MAKE LIST>>>>" , NULL, 9, NULL, NULL);

		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "SEND MAIL LIST" );
		ret = MNU_start ( mnu );

		switch  ( ret )
		{
			case 1:	/* 出力ファイル名	*/
				_t4n_get_fnout(fnout, "SEND MAIL LIST");
				break;

			case 9:
				ret = 0;
				goto _BREAK;
			default:
				ret = -1;
				goto _BREAK;
		}
	}

_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	if ( ret == 0 )
	{
		if ( fnout[0] == '\0' )
			return (0);	/* error */

		AplDtaInit();	/* DTA 領域初期化	*/
		AplDtaSetStr( "$MainArg", "%s %s -mail_sl %s",
		    try4nif_exp,
		    fndef  ,
		    fnout  );
		AplPclExec( try4nif_exp, 7);

		AplHelpDlg( fnout, "DATA LIST" );
	}

	return (0);
}

/*************************************************************************
*	環境設定
*************************************************************************/

int		_t4n_get_fndef(char *fndef);

int		_t4n_setup()
{
	int				ret;
	char		   *obj;
	char		   *mnu;
	char		   *fndef;
	char			tmp[256];
	char			mnuttl_fndef[256];

	fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);

	obj = NULL;
	mnu = NULL;
	for (;;)
	{
		if ( obj == NULL )
			obj = MNU_alloc(1);

		sprintf(mnuttl_fndef,"定義ファイル [%s]", fndef);

		MNU_setObj(obj, 0, MNU_NOR, 'M', mnuttl_fndef       , NULL, 1, NULL, NULL);

		if ( mnu == NULL )
			mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, MNUATT_EXIT, obj, "TRY4NIF CONFIG" );
		ret = MNU_start ( mnu );

		switch  ( ret )
		{
			case 1:	/* 定義ファイル	*/
				strcpy(tmp, fndef);
				if ( _t4n_get_fndef(tmp) == NORMAL && tmp[0] != '\0' )
				{
					AMAC_setKey( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME, tmp);
					fndef = AMAC_getName( SysMacro, MACROKEY_T4N_MAINDEF_FILENAME);
				}
				break;

			default:
				goto _BREAK;
		}
	}

_BREAK:
	if ( mnu != NULL )	MNU_close(mnu);
	if ( obj != NULL )	MNU_free(obj);

	return (0);
}

int		_t4n_get_fndef(char *fndef)
{
	char		   *fdl;
	int				ret;
	char		   *s;

	if ( (fdl = FDL_open(0)) == NULL )
		return (-1);
	FDL_set_title( fdl, "定義ファイル");
	FDL_set_wildcard( fdl, "*.def");
	FDL_set_defaultFilename( fdl, fndef);
	ret = FDL_start(fdl);
	s   = FDL_get_filename(fdl);
	if ( ret == NORMAL && strlen(s) > 0 )
		strcpy(fndef, s);
	FDL_close(fdl);

	return (ret);
}

int		_t4n_get_fnout(char *fnout, char *ttl)
{
	char		   *fdl;
	int				ret;
	char		   *s;

	if ( (fdl = FDL_open(0)) == NULL )
		return (-1);
	FDL_set_title( fdl, ttl);
	FDL_set_wildcard( fdl, "*.*");
	FDL_set_defaultFilename( fdl, fnout);
	ret = FDL_start(fdl);
	s   = FDL_get_filename(fdl);
	if ( ret == NORMAL && strlen(s) > 0 )
		strcpy(fnout, s);
	FDL_close(fdl);

	return (ret);
}

