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

📄 mmipcsyn.c

📁 是一个手机功能的模拟程序
💻 C
字号:
/******************************************************************************

 $Project name:	Basic MMI                                                      
 $File:		    mmiPcsyn.c
 $Author:		talcon  hu                                                        
 $Date:		    2004-07-03                                                     
 $Description: 
                
 $History: 
 	pcsyn mmi wnd

*******************************************************************************/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#include "mfw_sys.h"
//#include "typedef.h"
//#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#include "p_sim.h"
#include "cus_aci.h"
#include "mfw_mfw.h"
#include "mfw_win.h"
#include "mfw_kbd.h"
#include "mfw_edt.h"
#include "mfw_tim.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_sat.h"
#include "dspl.h"
#include "MmiMmi.h"
//#include "MmiDummy.h"
#include "MmiDialogs.h"
#include "MmiSoftkeys.h"
#include "MmiIcons.h"
//#include "MmiMenu.h"
#include "gdi.h"
#include "Audio.h"
#include "MmiSounds.h"
#include "MmiBookShared.h"
//#include "bmieastapi.h"


#include "Gamedisplay.h"
#include "mmi3dframe.h"
#include "mmiblklangdb.h"

#include "mmipcsyn.h"


typedef struct PCSYN_DATA
{
    T_MMI_CONTROL   mmi_control;		// common control parameter
	T_MFW_HND  win;

	T_MFW_HND  kbd;
	T_MFW_HND  kbd_long;
	T_MFW_HND  edt;
	T_MFW_HND	menu;
	T_MFW_HND 	parent_win;
	MfwEdtAttr edt_attr;
	T_MFW_HND  timer;   

	BYTE controlid;
	BYTE cid1;
	BYTE cid2;
	BYTE nEvents;
}T_PCSYN_DATA;

static T_PCSYN_DATA* pcsyn_data = 0;
BYTE g_pcsynwnd = 0;/* 0: no wnd
					  * 1: WND and focus
					  * 2 wnd anf unfocus(call wnd is focus)
					  */
static int pcsyn_win_cb (MfwEvt e, MfwWin *w);
static int pcsyn_kbd_cb (MfwEvt e, MfwKbd *k);
static int pcsyn_timer_cb(MfwEvt e, MfwTim *t);
static void pcsynDestroy (T_MFW_HND own_window);

static T_MFW_HND pcsynCreate( MfwHnd parent );

/********************win function****************************/
static int pcsyn_win_cb (MfwEvt e, MfwWin *w)
{
	TRACE_FUNCTION("pcsyn_win_cb");
    switch ( e )
    {
    case MfwWinVisible:
		dspl_ClearAll();
		switch(pcsyn_data->cid1)
		{
		case 0x11:
			dspl_TextOut(10,10, 0, "File");
			break;
		case 0x12:
			dspl_TextOut(10,10, 0, "Phone Book");
			break;
		case 0x13:
			dspl_TextOut(10,10, 0, "SMS");
			break;
		case 0x14:
			dspl_TextOut(10,10, 0, "Call record");
			break;
		}
		displaySoftKeys( TxtNull, TxtSoftBack);
        break;
    case MfwWinFocussed: /* input focus / selected   */
    case MfwWinDelete:   /* window will be deleted   */
    default:
        return MFW_EVENT_REJECTED;
    }
	
    return MFW_EVENT_CONSUMED;	
}

static void pcsyn_dialog_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	BYTE *buffer = (BYTE*)parameter;
    TRACE_FUNCTION ("pcsyn_dialog");
	
    switch( event )
    {
    case PCSYN_MMI_STATUS_IND:
		pcsyn_data->controlid = buffer[0];
		pcsyn_data->cid1 = buffer[1];
		pcsyn_data->cid2 = buffer[2];
		winShow(win);
		break;
    default:
        return;
    }

}

static int pcsyn_kbd_cb (MfwEvt e, MfwKbd *k)
{
	T_MFW_HND       win  = mfw_parent (mfw_header());
	
	TRACE_FUNCTION("pcsyn_kbd_cb");
	
	if(!(e & KEY_MAKE))
		return MFW_EVENT_CONSUMED;
	switch(k->code)
	{
	case KCD_RIGHT:
	case KCD_HUP:
		pcsynDestroy(win);
		break;
	}
	
	return MFW_EVENT_CONSUMED;
}//end function:GameSnake_kbd_cb

static int pcsyn_timer_cb(MfwEvt e, MfwTim *t)
{
    MfwHnd     win  = mfwParent (mfwHeader());
	TRACE_FUNCTION("pcsyn_timer_cb");
	if(winIsFocussed(win))
	{
		g_pcsynwnd  = 1;		
	}
	else
		g_pcsynwnd = 2;
	tim_start(pcsyn_data->timer);
	
    return 0;
	
}

static void pcsynDestroy (T_MFW_HND own_window)
{
	TRACE_FUNCTION("pcsynDestroy");
	win_delete (pcsyn_data->win);
	mfwFree((U8*)pcsyn_data,sizeof(T_PCSYN_DATA));
	pcsyn_data = 0;
	g_pcsynwnd  =0;
}
static T_MFW_HND pcsynCreate( MfwHnd parent )
{
	T_MFW_WIN     * win;

    T_PCSYN_DATA *data= (T_PCSYN_DATA *)mfwAlloc(sizeof(T_PCSYN_DATA));

	TRACE_FUNCTION("pcsynCreate");
    data->win=win_create(parent,0,E_WIN_VISIBLE | MfwWinFocussed,(T_MFW_CB)pcsyn_win_cb);
	
    if (data->win EQ 0) 
	{
		return 0;	 
	}
	pcsyn_data = data;
	g_pcsynwnd  =1;
    data->mmi_control.dialog    = (T_DIALOG_FUNC)pcsyn_dialog_cb;
    data->mmi_control.data     = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *) data;

    data->kbd      = kbd_create (data->win,KEY_ALL | KEY_MAKE,(T_MFW_CB)pcsyn_kbd_cb);
    data->timer     = tim_create (data->win,500,(T_MFW_CB)pcsyn_timer_cb); //  timeout

	winShow(data->win);
    return data->win;
}

int  pcsyn_start(MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND win = mfw_parent(mfw_header());
    
	T_MFW_HND winCur  = pcsynCreate(win);

	TRACE_FUNCTION("pcsyn_start");
	
	return MFW_EVENT_CONSUMED;
}

void send_pcsyn_event(USHORT event, void * parameter)
{
	SEND_EVENT(pcsyn_data->win, PCSYN_MMI_STATUS_IND ,0, parameter);

}

⌨️ 快捷键说明

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