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

📄 mmi.cpp

📁 MTK手机平台的MMI部分的源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
 *
 * Filename:
 * ---------
 *  MMI.cpp
 *
 * Project:
 * --------
 *  MAUI
 *
 * Description:
 * ------------
 *  WinMain() for PC simulator
 *
 * Author:
 * -------
 * -------
 * -------
 *                      
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
#ifndef _MMI_CPP
#define _MMI_CPP

#ifdef MMI_ON_WIN32

#include "stdafx.h"
#include "resource.h"
#include "windows.h"
#include "MMI_features.h"
#include <mmsystem.h>		
#include "MMI.h"
#include "pixteldatatypes.h"
#include "QueueGprot.h"
#include "KeyBrd.h"
/* #include "taskinit.h" new customizer */
#include "DCMLHandler.h"		/* main symbols */
#include "BUildCfg.h"
#include "CustDataRes.h"
#include "CustDataProts.h"
#include "Custresdef.h"
#include "GlobalConstants.h" /* KEY_INVALID */
#include "FontDCL.h"
#include "FontRes.h"
#include "ProtocolEvents.h"

#include <assert.h>

extern "C"
{ 
  #include "CustThemesRes.h"
  #include "AudioInc.h"	
  #include "taskinit.h"
}

#ifndef __CUSTOMER_LEVEL_1_RELEASE__
#include "NWSimEngine.h"
#endif


/***************************************************************************** 
* Define
*****************************************************************************/
#define	WM_REFRESH_MMI				(10006)
#define	WM_CLOSE_CUSTOMIZE_ENG	(10007)

/* used for skin loader */
#define	SKIN_128x128		(0)
#define	SKIN_128x160		(1)
#define	SKIN_176x220		(2)
#define	SKIN_240x320		(3)
#define	BUFFER_LENGTH		(256)
#define	PATH_FOR_128x128	"../Skins/128x128"
#define	PATH_FOR_128x160	"../Skins/128x160"
#define	PATH_FOR_176x220	"../Skins/176x220"
#define	PATH_FOR_240x320	"../Skins/240x320"

#define	USING_DLL_UI

/* define flags for DLL_UI */
#define	IN_PC_SIMULATOR		(1)
#ifdef __CUSTOMER_LEVEL_1_RELEASE__
#define	IN_LEVEL_1_RELEASE	(2)
#else
#define	IN_LEVEL_1_RELEASE	(0)
#endif

/***************************************************************************** 
* Typedef 
*****************************************************************************/

/***************************************************************************** 
* Local Variable
*****************************************************************************/
HWND	hWnd;
HWND	hDlg;
BOOL	bFlagNWSimulatorStart = FALSE;
static	BOOL is_first_bootup = TRUE;


static char			skin_name_buffer[BUFFER_LENGTH];
static char			old_skin_name_buffer[BUFFER_LENGTH];

#ifndef __CUSTOMER_LEVEL_1_RELEASE__
CNWSimEngine		NWSimEngine;
#endif

static char PrintableStr[256];

FILE *DebugFile; 


char	cwd[BUFFER_LENGTH];
char	old_cwd[BUFFER_LENGTH];


/***************************************************************************** 
* Local Function
*****************************************************************************/

BOOL 			CALLBACK	LoadSkinsProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);
static void	LoadSkins(HINSTANCE hInstance, HWND hwnd);
static void	ListSkinsInDir(HWND hDlg, char path[], HWND hLB);

void	keydown_by_mouse(HWND hWnd, int xPos, int yPos);
void	keyup_by_mouse(HWND hWnd);
void	keyup_by_shortcut(HWND hWnd, unsigned int wParam);
void	keydown_by_shortcut(HWND hWnd, int wParam);
void	mouse_move_enable(HWND hWnd, int xPos, int yPos);
void	key_detect_ind(unsigned char key_status, unsigned char key_code);
void	charger_inout(void);
void	incoming_call(void);
void	draw_main_bitmap(HDC hdc);
void	launch_nw_simulator(void);
void	shutdown_system_operation(void);
void	on_timer(unsigned int id);
void	automatic_power_on(void);
BOOL writeKeyMsgOnCondition(MYQUEUE *Message);


/***************************************************************************** 
* Global Variable
*****************************************************************************/

extern "C" s32								simulator_skin_sub_LCD_x;
extern "C" s32								SUB_LCD_device_width;
extern "C" BOOL							IsLcdFirstInit;

#ifdef USING_DLL_UI
extern "C" BOOL							using_dll_ui = TRUE;
#else
extern "C" BOOL							using_dll_ui = FALSE;
#endif

/***************************************************************************** 
* Global Function
*****************************************************************************/

/* quit whole system opeartion */
extern "C" void	ShutdownSystemOperation(void);
extern "C" void	FeedBackFeelingKeyAction(int key);
extern "C" void	FeedBackFeelingKeyInit(HWND hWnd, HINSTANCE hInstance, HBITMAP main_hbitmap);
extern "C" void	InitPCSimulatorBootup(void);

extern "C" void	ResetKeyMemory();
extern "C" void	ReadKeyProfile(char in_path[], HWND hWnd);
extern "C" BOOL	GetSimulatorBootStatus();
extern "C" HWND	GetDialogHandle();
extern "C" HWND	GetWindowHandle();

extern "C" void	lcd_screen_init(HWND hWnd, HINSTANCE hInstance);
extern "C" void	update_screen();
extern "C" void lcd_dspl_init();

extern "C" __declspec(dllimport)
void MtkWinDllStart(
	void (*w32_key_detect_ind_callback)(unsigned char, unsigned char),
	void (*w32_charger_inout_callback)(void),
	void (*w32_incoming_call_callback)(void),
	void (*w32_screen_init_callback)(HWND, HINSTANCE),
	void (*w32_keydown_by_mouse_callback)(HWND, int, int),
	void (*w32_keyup_by_mouse_callback)(HWND),
	void (*w32_keydown_by_shortcut_callback)(HWND, int),
	void (*w32_keyup_by_shortcut_callback)(HWND, unsigned int),
	void (*w32_mouse_move_enable_callback)(HWND, int, int),
	void (*w32_draw_main_bitmap_callback)(HDC),
	void (*w32_update_screen_callback)(void),
	void (*w32_TASK_Initialization_callback)(void),
	void (*w32_ReadKeyProfile_callback)(char [], HWND hwnd),
	void (*w32_ResetKeyMemory_callback)(void),
	void (*w32_dspl_init_callback)(void),
	void (*pc_sim_shutdown_callback)(void),
	void (*pc_sim_launch_nw_sim_callback)(void),
	void (*pc_sim_on_timer_callback)(unsigned int),
	int  pc_simulator_flag
);


/*****************************************************************************
 * FUNCTION
 *  DebugInfo
 * DESCRIPTION
 *  logging debug information (only for PC simulator thread)
 * PARAMETERS
 *  arg_type   [IN]     arguement type
 *  ...        [IN]     variable number paramemter list
 * RETURNS
 *  void
 *****************************************************************************/
static void DebugInfo(S8 *arg_type, ...)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    va_list MyList;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    va_start(MyList, arg_type);
    vsprintf(PrintableStr, arg_type, MyList);
    va_end(MyList);

    if (DebugFile)
    {
        fputs(PrintableStr, DebugFile);
    }

    flushall();
    return;
}

/*****************************************************************************
* FUNCTION
*  WinMain_ext
* DESCRIPTION
*   Entry point of application.
*
* PARAMETERS
*  hInstance		IN			HINSTANCE
*  hPrevInstance	IN			HINSTANCE
*	lpCmdLine		IN			LPSTR
*	nCmdShow			IN			nCmdShow
* RETURNS
*   int APIENTRY
* GLOBALS AFFECTED
*   nil
*****************************************************************************/
int APIENTRY WinMain_ext(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
   /*----------------------------------------------------------------*/
   /* Local Variables                                                */
   /*----------------------------------------------------------------*/
#ifndef USING_DLL_UI
	MSG msg;
	HACCEL hAccelTable;
#endif

	/*----------------------------------------------------------------*/
   /* Code Body                                                      */
   /*----------------------------------------------------------------*/

#ifndef USING_DLL_UI
	/* Initialize global strings */
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_MTK_SIMULATOR, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	/* Perform application initialization: */
	if (!InitInstance (hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MTK_SIMULATOR);

	/************* Vijay *****************/	
	/* Call the function to initialze the MMI */
	InitApplication();
#endif	

    /* open debugging information file */
    {
        if (!(DebugFile = fopen("debug.log", "w")))
        {
            exit(1);
        }
    }

#ifdef USING_DLL_UI
	SetCurrentDirectory(".\\Debug");
	/************* Vincent ***************/	
	/* SHOW DLL UI */
	MtkWinDllStart(
		key_detect_ind,
		charger_inout,
		incoming_call,
		lcd_screen_init,
		keydown_by_mouse,
		keyup_by_mouse,
		keydown_by_shortcut,
		keyup_by_shortcut,
		mouse_move_enable,
		draw_main_bitmap,
		update_screen,
		InitApplication,

⌨️ 快捷键说明

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