⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imenuwindow.c

📁 以栈结构实现的多级菜单
💻 C
字号:
#include "IMenuWindow.h"
#include "HandleFunc.h"
#include "IBookmark.h"
#include "MenuStack.h"
#include "Push.h"
#include "IHistory.h"
#include "Menulist_res.h"
#include "ISettingFile.h"
#include "AEEAppGen.h"
#include "CMenulist.h"
/////////////////////////////////////////////////////////////


const TMenuItem atDefaultPageMenu[] =
{
	{MENUITEM_DEFAULTPAGENAME,0,IDS_DEFAULTHOMEPAGENAME,NULL,WAPSetHdl_SetDefHomePageName},
	{MENUITEM_DEFAULTPAGEURL,0,IDS_DEFAULTHOMEPAGEURL,NULL,WAPSetHdl_SetDefHomePageUrl},
	{MENUITEM_NULL,0,0,NULL}
};

const TMenuItem atConnectHodeMenu[] =
{
	{MENUITEM_CONNECTUDP,0,IDS_UDP,NULL,WAPSetHdl_SetConnectTypeWSPCL},
	{MENUITEM_CONNECTTCP,0,IDS_TCP,NULL,WAPSetHdl_SetConnectTypeWSPCO},
       {MENUITEM_CONNECTUDPWTLS,0,IDS_CONNECTUDPWTLS,NULL,WAPSetHdl_SetConnectTypeWSPCLWTLS},
	{MENUITEM_CONNECTTCPWTLS,0,IDS_CONNECTTCPWTLS,NULL,WAPSetHdl_SetConnectTypeWSPCOWTLS},
	{MENUITEM_HTTP,0,IDS_HTTP,NULL,WAPSetHdl_SetConnectTypeHTTP},
	{MENUITEM_HTTPWTLS,0,IDS_HTTPWTLS,NULL,WAPSetHdl_SetConnectTypeHTTPSECURITY},
	{MENUITEM_NULL,0,0,NULL,NULL}
};

const TMenuItem atGatewaySetMenu[] =
{
	{MENUITEM_GATEWAYIP,0,IDS_IP,NULL,WAPSetHdl_SetGatewayIP},
	{MENUITEM_GATEWAYPORT,0,IDS_PORT,NULL,WAPSetHdl_SetGatewayPort},
	{MENUITEM_GATEWAYUSER,0,IDS_USER,NULL,WAPSetHdl_SetGatewayUSER},
	{MENUITEM_PASSWORD,0,IDS_PASSWORD,NULL,WAPSetHdl_SetGatewayPassword},
	{MENUITEM_NULL,0,0,NULL,NULL}
};

/*const TMenuItem atMainMenu[] =
{
	{MENUITEM_CONNECT,0,IDS_CONNECTSET,atSub1Menu,NULL},
	{MENUITEM_GATEWAY,0,IDS_GATEWAY,atSub2Menu,NULL},
	{MENUITEM_NULL,0,0,NULL,NULL}
};*/

const TMenuItem atSettingMenu[] =
{
	{MENUITEM_DEFAULTPAGESET,0,IDS_DEFAULTPAGESET,atDefaultPageMenu,NULL},
	{MENUITEM_GATEWAYSET,0,IDS_GATEWAYSET,atGatewaySetMenu,NULL},
	{MENUITEM_CONNECTMETHOD,0,IDS_CONNECTMETHOD,atConnectHodeMenu,NULL},
	{MENUITEM_ADVANCESET,0,IDS_ADVANCESET,NULL},
	{MENUITEM_NULL,0,0,NULL}
};


const TMenuItem atLoginMenu[] =
{
	{MENUITEM_MAINPAGE,0,IDS_MAINPAGE,NULL},
	{MENUITEM_LASTPAGE,0,IDS_LASTPAGE,NULL},
	{MENUITEM_OPENURL,0,IDS_OPENURL,NULL,WAPSetHdl_SetOpenUrl},
	{MENUITEM_NULL,0,0,NULL}
};

const TMenuItem atMainMenu[] =
{
	{MENUITEM_LOGIN,0,IDS_LOGIN,atLoginMenu},
	{MENUITEM_BOOKMARK,0,IDS_BOOKMARK,NULL,WAPSetHdl_SetBookMark},
	{MENUITEM_PUSH,0,IDS_PUSH,NULL,PushDlg},
	{MENUITEM_HISTORY,0,IDS_HISTORY,NULL,HistoryDlg},
	{MENUITEM_SETTING,0,IDS_SETTING, atSettingMenu},
	{MENUITEM_ABOUT,0,IDS_ABOUT,NULL},
	{MENUITEM_NULL,0,0,NULL}
};


static AECHAR* IMENUWINDOW_GetData(uint16 ResId);
static uint16  IMENUWINDOW_GetSel(TMenuItem* pMenu);
boolean IMENUWINDOW_EventHandle(void* pWin,AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	return IMENUSTACK_HandleEvent(((IMenuWin*)(pWin))->m_pMenuStack,eCode,wParam,dwParam);
}

void*   IMENUWINDOW_Create(IShell* pShell,void* pParam)
{
	IMenuWin* pWin=MALLOCREC(IMenuWin);
	if(pWin)
	{
		pWin->m_pMenuStack=IMENUSTACK_CreateInstance((TMenuItem*)atMainMenu,
			IMENUWINDOW_GetData,
			IMENUWINDOW_GetSel);
		if(!pWin->m_pMenuStack)
			FREEIF(pWin);
	}
	return pWin;
}

boolean IMENUWINDOW_Release(IShell* pShell,void** pWin)
{
	if(*pWin)
	{
		IMENUSTACK_Release(&((IMenuWin*)(*pWin))->m_pMenuStack);
		FREEIF(*pWin);
	}
	return TRUE;
}
boolean IMENUWINDOW_Redraw(IShell* pShell,void* pWin)
{
	if(!pWin) return FALSE;
	return IMENUSTACK_Redraw(((IMenuWin*)pWin)->m_pMenuStack);
}

static AECHAR* IMENUWINDOW_GetData(uint16 ResId)
{
	AECHAR* pVal=NULL;
	AECHAR* pData=NULL;
	AECHAR  restext[80];
	char    cTempBuf[16];
	AECHAR  wTempBuf[32];
	int     nVal;
	AECHAR pInterval[]={':',0};  
	AEEApplet*  pApp=(AEEApplet*)GETAPPINSTANCE();
	AECHAR infoText[100];
	IBookMarkWin *ptBookmarkWin = (IBookMarkWin *)MALLOC(sizeof(IBookMarkWin));
	switch(ResId)
	{
	case IDS_IP:
		pData=ISETTINGFILE_GetStr(WAP_GATEWAYIP);
		break;
	case IDS_PORT:
		nVal=ISETTINGFILE_GetInt(WAP_GATEWAPPORT);
		SPRINTF(cTempBuf,"%d",nVal);
		STRTOWSTR(cTempBuf,wTempBuf,sizeof(wTempBuf));
		pData=wTempBuf;
		break;
	case IDS_USER:
		pData=ISETTINGFILE_GetStr(WAP_GATEWAPUSER);
		break;
	case IDS_PASSWORD:
		pData=ISETTINGFILE_GetStr(WAP_GATEWAPPASSWORD);
		break;
	case IDS_CONNECTMETHOD:
		nVal=ISETTINGFILE_GetInt(WAP_CONNECTSET);
		//SPRINTF(cTempBuf,"%d",nVal);
		//STRTOWSTR(cTempBuf,wTempBuf,sizeof(wTempBuf));
		switch(nVal)
		{
			case CONNECTION_TYPE_WSP_CO:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_TCP, infoText, sizeof(infoText));
				pData=infoText;
				break;
			case CONNECTION_TYPE_WSP_CL:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_UDP, infoText, sizeof(infoText));
				pData=infoText;
				break;
			case CONNECTION_TYPE_WSP_CO_WTLS:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_CONNECTTCPWTLS, infoText, sizeof(infoText));
				pData=infoText;
				break;
			case CONNECTION_TYPE_WSP_CL_WTLS:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_CONNECTUDPWTLS, infoText, sizeof(infoText));
				pData=infoText;
				break;
			case CONNECTION_TYPE_HTTP:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_HTTP, infoText, sizeof(infoText));
				pData=infoText;
				break;
			case CONNECTION_TYPE_HTTP_SECURITY:
				ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, IDS_HTTPWTLS, infoText, sizeof(infoText));
				pData=infoText;
				break;
			default:
				return NULL;				
		}
		break;
	case IDS_DEFAULTHOMEPAGENAME:
		pData=ISETTINGFILE_GetStr(WAP_DEFHOMEPAGENAME);
		break;	
	case IDS_DEFAULTHOMEPAGEURL:
		pData=ISETTINGFILE_GetStr(WAP_DEFHOMEPAGEURL);
		break;
	default:
		return NULL;
	}
	if(!pData)
		return NULL;
	ISHELL_LoadResString(pApp->m_pIShell, MENULIST_RES_FILE, ResId, restext, sizeof(restext));
	pVal=MALLOC(WSTRSIZE(restext)+WSTRSIZE(pData));
	WSTRCPY(pVal,restext);
	WSTRCAT(pVal,pInterval);
	WSTRCAT(pVal,pData);
	return pVal;
}
static uint16  IMENUWINDOW_GetSel(TMenuItem* pMenu) 
{
	int nVal;
	if(!pMenu) return 0;
	switch(pMenu->tItemId)
	{
	case MENUITEM_CONNECTUDP:
		nVal=ISETTINGFILE_GetInt(WAP_CONNECTSET);
		switch(nVal)
		{
		case CONNECTION_TYPE_WSP_CL:
			return MENUITEM_CONNECTUDP;
		case CONNECTION_TYPE_WSP_CO:
			return MENUITEM_CONNECTTCP;
		case CONNECTION_TYPE_WSP_CL_WTLS:
			return MENUITEM_CONNECTUDPWTLS;
		case CONNECTION_TYPE_WSP_CO_WTLS:
			return MENUITEM_CONNECTTCPWTLS;
		case CONNECTION_TYPE_HTTP:
			return CONNECTION_TYPE_HTTP;
		case CONNECTION_TYPE_HTTP_SECURITY:
			return CONNECTION_TYPE_HTTP_SECURITY;
		}
		break;
	default:
		return 0;
	}
	return 0;
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -