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

📄 mmilists.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:
				MenuHandle = mfwControl(data->MenuLists);
				data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
				data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
				data->Callback(data->Parent, &data->MenuData);
			}
			else if (getMelodyListStatus() == TRUE)
			{
				TRACE_EVENT("in melody");
				mnuDown(data->MenuLists);
				MenuHandle = mfwControl(data->MenuLists);
				data->MenuData.Reason = LISTS_REASON_SCROLL;
				data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
				data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; 
				SEND_EVENT(data->Parent,E_START_MELODY,0,(void*)data);
			}
			else if (GetSMSLISTWINHandle())
			{
				TRACE_EVENT("in sms");
				mnuDown(data->MenuLists);
				MenuHandle = mfwControl(data->MenuLists);
				data->MenuData.Reason = LISTS_REASON_DOWN;
				data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
				data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
				data->Callback(data->Parent, &data->MenuData);              
			}
#ifdef _MMS_ENABLE_
			else if (data->Parent == MMS_Get_MMSImageMusic_WHnd()) //added by xie 04-07-15
			{
				mnuDown(data->MenuLists);
				MenuHandle = mfwControl(data->MenuLists);
				data->MenuData.Reason = LISTS_REASON_DOWN;
				data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
				data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
				data->Callback(data->Parent, &data->MenuData);    
			}
#endif		
			else
			{
				TRACE_EVENT("we only mnudown");
				mnuDown(data->MenuLists);
			}             
			break;
		case KCD_LEFT: /* activate this entry */
			// mnuSelect(data->MenuLists);

/*2003/11/24, wangyan modify*/
#if 0
			if (getMelodyListStatus() == TRUE)
				dspl_Clear(0,16,16,141);
#endif            
			data->ExitReason = LISTS_REASON_SELECT;
			data->MenuData.Reason = LISTS_REASON_SELECT;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
			//currentring = data->MenuData.ListPosition;

			data->Callback(data->Parent, &data->MenuData);

#ifdef _MMS_ENABLE_
			//begin xie  04-07-08
			if (MMS_Get_CurSetList_WHnd() == data->Parent)
			{
				mnuSelect(data->MenuLists);
				break;
			}
			//end xie
#endif	

			if (data->MenuData.autoDestroy)
			{
				winDelete (win);
				FREE_MEMORY ((void*)data, sizeof (ListWinInfo));
			}
			break;

		case KCD_CALL: /* press send key */
			data->ExitReason = LISTS_REASON_SEND;
			data->MenuData.Reason = LISTS_REASON_SEND;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
			data->Callback(data->Parent, &data->MenuData);
			if (data->MenuData.autoDestroy)
			{
				winDelete (win);
				FREE_MEMORY ((void*)data, sizeof (ListWinInfo));
			}
			break;
		case KCD_HUP: /* back to previous menu */
			if (weeklyAlarm_win)
			{
				data->ExitReason = LISTS_REASON_HANGUP;
				data->MenuData.Reason = LISTS_REASON_HANGUP;
				data->Callback(data->Parent, &data->MenuData);
			}
			else if (data->Parent==GetWindowHandle()||data->Parent==GetCallWindowHandle())
			{
				TRACE_EVENT("in phb,press hup");
				data->ExitReason = LISTS_REASON_HANGUP;
				data->MenuData.Reason = LISTS_REASON_HANGUP;
				data->Callback(data->Parent, &data->MenuData);
			}
			else if (getMelodyListStatus() == TRUE)
			{
				data->ExitReason = LISTS_REASON_HANGUP;
				data->MenuData.Reason = LISTS_REASON_HANGUP;
				data->Callback(data->Parent, &data->MenuData);
			}
#ifdef _MMS_ENABLE_	
			else if (data->Parent == MMS_Get_MMSNew_WHnd() || data->Parent == MMS_Get_MsgList_WHnd() ||data->Parent == MMS_Get_RecvList_WHnd() || data->Parent == MMS_Get_AllSetList_WHnd() ||data->Parent == MMS_Get_CurSetList_WHnd())//add by xie 2004-7-1
			{
				data->ExitReason = LISTS_REASON_HANGUP;
				data->MenuData.Reason = LISTS_REASON_HANGUP;
				data->Callback(data->Parent, &data->MenuData);
			}
#endif
			else
			{
				mnuEscape(data->MenuLists);
			}
			if (returntoidle(0))
				break;
			if (data->MenuData.autoDestroy)
			{
				listsDestroy(win);
			}
			break;
		case KCD_RIGHT:	/* back to previous menu */
			if (data->Parent==GetWindowHandle()||data->Parent==GetCallWindowHandle())
			{
				TRACE_EVENT("in phb,press right");
				data->ExitReason = LISTS_REASON_BACK;
				data->MenuData.Reason = LISTS_REASON_BACK;
				data->Callback(data->Parent, &data->MenuData);
			}
#ifdef _MMS_ENABLE_
			else if (data->Parent == MMS_Get_RecvList_WHnd())//add by xie 04-07-28
			{
				data->ExitReason = LISTS_REASON_BACK;
				data->MenuData.Reason = LISTS_REASON_BACK;
				data->Callback(data->Parent, &data->MenuData);
				break;
			}
#endif		
			else
			{
				mnuEscape(data->MenuLists);
			}

			if (data->MenuData.autoDestroy)
			{
				listsDestroy(win);
			}
			break;

		case KCD_MNULEFT:
			data->ExitReason = LISTS_REASON_LEFT;
			data->MenuData.Reason = LISTS_REASON_LEFT;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; // True cursor position in list menu. 
			data->Callback(data->Parent, &data->MenuData);
			break;
		case KCD_MNURIGHT:
			data->ExitReason = LISTS_REASON_RIGHT;
			data->MenuData.Reason = LISTS_REASON_RIGHT;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; // True cursor position in list menu. 
			data->Callback(data->Parent, &data->MenuData);          
			break;      
		case KCD_OK:
			data->ExitReason = LISTS_REASON_OK;
			data->MenuData.Reason = LISTS_REASON_OK;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; // True cursor position in list menu. 
			data->Callback(data->Parent, &data->MenuData);            
			if (data->MenuData.autoDestroy)
			{
				winDelete (win);
				FREE_MEMORY ((void*)data, sizeof (ListWinInfo));
			}
			break;

		case KCD_0:
		case KCD_1:
		case KCD_2:
		case KCD_3:
		case KCD_4:
		case KCD_5:
		case KCD_6:
		case KCD_7:
		case KCD_8:
		case KCD_9:
			data->ExitReason =k->code+20;// LISTS_REASON_KCD4;
			data->MenuData.Reason = k->code+20;//LISTS_REASON_KCD4;
			MenuHandle = mfwControl(data->MenuLists);
			data->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			data->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
			data->Callback(data->Parent, &data->MenuData);
			break;

		case KCD_F4:   //stop melody when hall is closed in melody select menu
			if (getMelodyListStatus()== TRUE)
			{
				if (drvpara.hallstatusflag ==0)
					Stopplayingdevice();
				data->ExitReason = LISTS_REASON_HANGUP;
				data->MenuData.Reason = LISTS_REASON_HANGUP;
				data->Callback(data->Parent, &data->MenuData);

			}
			if (!HallStatus())
			{
				returntoidle(1);
			}
			break;
		default: /* no response to all other keys */
			return MFW_EVENT_CONSUMED;
		}
	}
	return MFW_EVENT_CONSUMED;
}

/*******************************************************************************

 $Function:  listsWinEvent  

 $Description:	 window event handler

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int listsWinEvent(MfwEvt e, MfwWin *w)
{
	ListWinInfo * ListData = (ListWinInfo *)w->user;
	MfwMnu    *MenuHandle;
	UINT32 oldColor,oldFontColor;

	TRACE_FUNCTION("listsWinEvent()");

	switch (e)
	{
	case E_WIN_VISIBLE:
		//  if (w->flags & E_WIN_VISIBLE&&!(CallListFlag==1&&cugwindows))  //CallListFlag==1&&cugwindows represent "in rencent menu list" and "have done a call "
		if (w->flags & E_WIN_VISIBLE)  //CallListFlag==1&&cugwindows represent "in rencent menu list" and "have done a call "
		{

			// 	    dspl_ClearAll();//zy add 09/18
			controlBrowseNew();//zy 10/08
			oldColor=dspl_GetBkgColor();//zy 09/05
			dspl_SetBkgColor(GetPreDefinedColor(ColorSoftKeyBG));
			oldFontColor=dspl_GetFrgColor();
			dspl_SetFrgColor(GetPreDefinedColor(ColorSoftKeyFont));
			displaySoftKeys(ListData->MenuData.LeftSoftKey, ListData->MenuData.RightSoftKey);
			dspl_SetBkgColor(oldColor);
			dspl_SetFrgColor(oldFontColor);//zy 09/05
		}	//  ListData->Callback(ListData->Parent, &ListData->MenuData);
		if (getMelodyListStatus() == TRUE)
		{
			TRACE_EVENT("listsWinEvent():getMelodyListStatus is true");
		}
		else if ((CallListFlag==1&&cugwindows)||ListData->Parent==GetWindowHandle()||ListData->Parent==GetCallWindowHandle()||GetSMSLISTWINHandle())
		//then case of "ListData->Parent==GetWindowHandle()" bemay done displaySoftKeys two times
		//if (CallListFlag==1)
		{


			//  displaySoftKeys(ListData->MenuData.LeftSoftKey, ListData->MenuData.RightSoftKey);
			TRACE_FUNCTION("LISTS_REASON_UPDATE hubh 1-21 ");
			ListData->ExitReason = LISTS_REASON_UPDATE;
			ListData->MenuData.Reason = LISTS_REASON_UPDATE;
			MenuHandle = mfwControl(ListData->MenuLists);
			ListData->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
			ListData->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
			ListData->Callback(ListData->Parent, &ListData->MenuData);
			//SEND_EVENT(ListData->Parent, LISTS_REASON_UPDATE, 0, 0) //2003-1-21

		}
		// else
		//displaySoftKeys(ListData->MenuData.LeftSoftKey, ListData->MenuData.RightSoftKey);


		break;

	default:
		return MFW_EVENT_PASSED;
		break;
	}
	return MFW_EVENT_CONSUMED;
}

static void lists_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
	ListWinInfo    * ListData = (ListWinInfo *)win_data->user;
	T_MFW_HND      * l_parent;
	SHORT            l_id;

	TRACE_FUNCTION ("lists_exec_cb()");

	switch (event)
	{
	case E_INIT:
	case E_BACK:
	case E_RETURN:
	case E_ABORT:
	case E_EXIT:
		/* defaultreaction */
		l_parent = ListData->Parent;
		l_id = ListData->id;
		winDelete (win);
		FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo));
		SEND_EVENT (l_parent, event, l_id, NULL); /* forward event to parent */
		break;
	default:
		return;
	}
}



/*******************************************************************************

 $Function:  listsListCbMenu  

 $Description:	 List menu handler. (mfw callback function)

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
int listsListCbMenu(MfwEvt EventCode, MfwMnu *MenuHandle)
{
	int Status = LISTS_OK;
	T_MFW_HND   win      = mfw_parent (mfw_header());
	T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
	ListWinInfo* ListData = (ListWinInfo *)win_data->user;

	TRACE_FUNCTION("listsCbMenu()");

	switch (EventCode)
	{
	case E_MNU_SELECT:
		ListData->ExitReason = E_MNU_SELECT;
		ListData->MenuData.Reason = LISTS_REASON_SELECT;// MZ 14/2/01 E_MNU_SELECT;
		ListData->MenuData.CursorPosition = MenuHandle->lCursor[MenuHandle->level];
		ListData->MenuData.ListPosition  = MenuHandle->lCursor[MenuHandle->level]; /* True cursor position in list menu. */
		ListData->Callback(ListData->Parent, &ListData->MenuData);
		break;

	case E_MNU_ESCAPE:
		ListData->ExitReason = LISTS_REASON_BACK;
		ListData->MenuData.Reason = LISTS_REASON_BACK;
		ListData->Callback(ListData->Parent, &ListData->MenuData);
		break;

	default:
		Status = LISTS_FAIL;
		TRACE_FUNCTION("Activation 77 error"); 
		break;
	}

	/*
	 * Free all allocated memory and handler
	 */
	if (ListData->MenuData.autoDestroy)
	{
		winDelete (win);
		FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo));
	}
	return Status;
}

void listsDestroy(T_MFW_HND win)
{
	T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
	ListWinInfo * ListData = (ListWinInfo *)win_data->user;
	winDelete (win);
	FREE_MEMORY ((void*) ListData, sizeof (ListWinInfo));

}

⌨️ 快捷键说明

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