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

📄 mmimt_numopt_wintab.c

📁 展讯平台的mtue源代码, 全面,精简,仅供学习, 商用后果自负
💻 C
字号:
/*****************************************************************************
** File Name:                                                                *
** Author:                                                                   *
** Date:           2007/06/30                                                *
** Copyright:      2007 MTONE, Inc. All Rights Reserved.                     *
** Description:                                                              *
******************************************************************************
**                         Important Edit History                            *
** --------------------------------------------------------------------------*
** DATE           NAME             DESCRIPTION                               *
** 2007/06/30                      Create                                    *
*****************************************************************************/

// ref. mmismsapp_wintab.c
#ifdef MMI_MTUNE
#include "mmimt_numopt_wintab.h"

#include "base/mt_ini.h"
#include "base/mt_osapi.h"
#include "base/mmimt_ex.h"
#include "base/mmimt_id.h"
#include "base/mmimt_menutable.h"
#include "base/mmimt_pubwin.h"
#include "base/mmimt_text.h"
#include "mmimt_playinfo.h"
#include "mmimt_wap_app.h"

#include "guilistbox.h"
#include "guieditbox.h"
///#include "mmk_ex.h"
#include "mtdef.h"
#include "mmi_common.h"
#include "mmipub.h"
#include "mmipb.h"

#include "window_parse.h"

#include "mmi_appmsg.h"
////////////////////////////////////////////////////////////////

uint8	g_destno[MMIMT_DESTNO_MAX][MMIMT_NO_LEN_MAX+1];
uint8	g_destno_cnt = 0;

LOCAL MMI_RESULT_E HandleNumOptWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param );

WINDOW_TABLE(MMIMT_NUMOPT_WIN_TAB) =
{
	CLEAR_LCD,
	WIN_PRIO(WIN_ONE_LEVEL),
	WIN_TITLE_ID(TXT_MT_TITLE_NUMOPT),
	WIN_FUNC((uint32)HandleNumOptWinMsg),
	WIN_ID(MMIMT_NUMOPT_WIN_ID),
	CREATE_LISTBOX_CTRL(MMI_LISTBOX_LEFT,MMI_CLIENT_RECT_TOP,MMI_MAINSCREEN_RIGHT_MAX_PIXEL,MMI_CLIENT_RECT_BOTTOM,
			LISTBOX_TEXTLIST_E,LISTBOX_TEXT1_E,MMIMT_NUMOPT_LIST_CTRL_ID),
	END_WIN
};

extern WINDOW_TABLE(MMIMT_NUMOPT_WIN_TAB);

void MMIMT_NumOpt_OpenWin( ADD_DATA add_data_ptr )
{
	if( !MMK_IsOpenWin( MMIMT_NUMOPT_WIN_ID ) )
	{
		MMK_CreateWin( (uint32 *)MMIMT_NUMOPT_WIN_TAB, add_data_ptr );
	}
}

void MMIMT_NumOpt_HandleSend( ADD_DATA add_data_ptr )
{
	uint8 i; static char destno[MMIMT_DESTNO_MAX*(MMIMT_NO_LEN_MAX+1)] = { 0 };

	MT_TRACE( "\r\nMMIMT_NumOpt_HandleSend(): g_destno_cnt=%u\r\n", g_destno_cnt );

	for( i=0; i<g_destno_cnt; i++ )
	{
		MT_TRACE( "\r\nMMIMT_NumOpt_HandleSend(): g_destno[%u]=%s\r\n", i, g_destno[i] );
	}

	*destno = 0;

	for( i=0; i<g_destno_cnt-1; i++ ) { strcat( destno, (char *)g_destno[i] ); strcat( destno, "," ); }

	if( g_destno_cnt ) { strcat( destno, (char *)g_destno[i] ); }

	if( g_destno_cnt )
	{
		MT_FWD_RING_PRM *fwd_ring_prm_ptr = add_data_ptr;

		MMK_CloseWin( MMIMT_NUMOPT_WIN_ID );

		g_destno_cnt = 0; // DO CLEAR HERE

		if( fwd_ring_prm_ptr )
		{
			const MMIMT_PLAY_INFO *playinfo_ptr = MMIMT_GetPlayInfo();

			MT_BrowserOpenURL_FwdRing2Dest( fwd_ring_prm_ptr->sztitle, fwd_ring_prm_ptr->szartist, fwd_ring_prm_ptr->szalbum, fwd_ring_prm_ptr->szfilename, destno, playinfo_ptr->pk_ver );
		}
	}
}

extern WINDOW_TABLE(MMIMT_NUMOPTINP_WIN_TAB);
extern WINDOW_TABLE(MMIMT_NUMOPTMENU_WIN_TAB);

LOCAL MMI_RESULT_E HandleNumOptWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param )
{
	MMI_RESULT_E ret = MMI_RESULT_TRUE; MMI_CONTROL_ID_E ctrl_id = MMIMT_NUMOPT_LIST_CTRL_ID;

	static ADD_DATA *add_data_ptr = NULL;

	switch( msg_id )
	{
	case MSG_OPEN_WINDOW:
	{
		uint32 i;

		add_data_ptr = MMK_GetWinAddDataPtr( win_id );

		GUILISTBOX_SetMaxItem( ctrl_id, MMIMT_DESTNO_MAX+3 );


		MMK_SetAtvCtrl( win_id, ctrl_id );

		MTGUILISTBOX_AppendListItemByTextId( ctrl_id, TXT_MT_NUMOPT_LIST_INP, TXT_MT_OK, 0 );
		MTGUILISTBOX_AppendListItemByTextId( ctrl_id, TXT_MT_NUMOPT_LIST_SEL, TXT_MT_OK, 0 );

		if( g_destno_cnt )
		{
			MTGUILISTBOX_AppendListItemByTextId( ctrl_id, TXT_MT_NUMOPT_LIST_SEND, TXT_MT_OK, 0 );

			for( i=0; i<g_destno_cnt; i++ )
			{
				MTGUILISTBOX_AppendListItem( ctrl_id, g_destno[i], (uint8)strlen((char *)g_destno[i]), FALSE, TXT_MT_OK, 0 );
			}
		}

		MMK_SetWinSoftkeyId(win_id,(MMI_TEXT_ID_T)TXT_MT_OK,(MMI_TEXT_ID_T)TXT_NULL,(MMI_TEXT_ID_T)STXT_RETURN,TRUE);


		break;
	}
	case MSG_CLOSE_WINDOW:

		g_destno_cnt = 0; // DO CLEAR HERE

		break;

//	case MSG_FULL_PAINT:

//		break;

	case MMI_PB_MULTI_SELECT_LIST_RETURN:
	{
		uint16 i, n;

		for( i=0, n=MMIAPIPB_GetSelectedListCount(); i<n && g_destno_cnt<MMIMT_DESTNO_MAX; i++ )
		{
			MMIPB_BCD_NUMBER_T pbno = { 0 }; uint8 l; uint8 no[PHONEBOOK_MAX_DN_NUMBER_LEN<<1+2];

			MMIAPIPB_GetDetailInSelectedList( NULL, &pbno, NULL, i , PNULL, PNULL);

			l = MMI_GenDispNumber( MMIPB_GetNumberTypeFromUint8( pbno.npi_ton ),
				(uint8)MIN( MMIMT_NO_LEN_MAX_BCD, pbno.number_len ), pbno.number, no, sizeof(no) );

			l = (uint8)MIN( MMIMT_NO_LEN_MAX, l );

			MT_MEMSET( g_destno[g_destno_cnt], 0, MMIMT_NO_LEN_MAX+1 );
			MT_MEMCPY( g_destno[g_destno_cnt], no, l );

			g_destno_cnt++;

			if( 1 == g_destno_cnt )
			{
				MTGUILISTBOX_AppendListItemByTextId( ctrl_id, TXT_MT_NUMOPT_LIST_SEND, TXT_MT_OK, 0 );
			}

			MTGUILISTBOX_AppendListItem( ctrl_id, no, l, FALSE, TXT_MT_OK, 0 );
		}

		GUILISTBOX_SetCurItemIndex( ctrl_id, 0 );
		MMK_SetWinSoftkeyId(win_id,(MMI_TEXT_ID_T)TXT_MT_OK,(MMI_TEXT_ID_T)TXT_NULL,(MMI_TEXT_ID_T)STXT_RETURN,TRUE);

		break;
	}
	case MSG_MT_NUMOPT_GETNO:
	{
		STRING_INFO_T *strinfo_ptr; uint16 i;

		strinfo_ptr = (STRING_INFO_T *)param;

		i = GUILISTBOX_GetCurItemIndex( ctrl_id );

		if( strinfo_ptr && strinfo_ptr->str_len )
		{
			if( i-3 < MMIMT_DESTNO_MAX )
			{
				uint8 l = (uint8)MIN( MMIMT_NO_LEN_MAX, strinfo_ptr->str_len );

				if( i > 2 )
				{
					MT_MEMSET( g_destno[i-3], 0, MMIMT_NO_LEN_MAX+1 );
					MT_MEMCPY( g_destno[i-3], strinfo_ptr->str_ptr, l );
					MTGUILISTBOX_ReplaceListItem( ctrl_id, i, strinfo_ptr->str_ptr, l, FALSE, TXT_MT_OK, 0 );
				}
				else
				{
					MT_MEMSET( g_destno[g_destno_cnt], 0, MMIMT_NO_LEN_MAX+1 );
					MT_MEMCPY( g_destno[g_destno_cnt], strinfo_ptr->str_ptr, l );

					g_destno_cnt++;

					if( 1 == g_destno_cnt )
					{
						MTGUILISTBOX_AppendListItemByTextId( ctrl_id, TXT_MT_NUMOPT_LIST_SEND, TXT_MT_OK, 0 );
					}

					MTGUILISTBOX_AppendListItem( ctrl_id, strinfo_ptr->str_ptr, l, FALSE, TXT_MT_OK, 0 );
				}
				MMK_SetWinSoftkeyId(win_id,(MMI_TEXT_ID_T)TXT_MT_OK,(MMI_TEXT_ID_T)TXT_NULL,(MMI_TEXT_ID_T)STXT_RETURN,TRUE);

////				GUILIST_UpdateListBox( ctrl_id );
			}
		}

		break;
	}
	case MSG_MT_NUMOPT_DELNO:
	{
		uint16 i, j;

		i = GUILISTBOX_GetCurItemIndex( ctrl_id );

		if( i > 2 )
		{
			j = (uint16)( i - 3 );

			if( j < MMIMT_DESTNO_MAX-1 )
			{
				MT_MEMCPY( (uint8 *)(g_destno+j), (uint8 *)(g_destno+j+1), (g_destno_cnt-j-1)*(MMIMT_NO_LEN_MAX+1) );
			}

			g_destno_cnt--;

			GUILISTBOX_RemoveItemBasePos( ctrl_id, i );

			if( !g_destno_cnt )
			{
				GUILISTBOX_RemoveItemBasePos( ctrl_id, 2 );
			}

			GUILISTBOX_SetCurItemIndex( ctrl_id, 0 );
		}

		break;
	}

   	case MSG_CTL_PENOK:
	case MSG_CTL_OK:

        switch( GUILISTBOX_GetCurItemIndex( ctrl_id ) )
        {
        case 0:

			if( g_destno_cnt < MMIMT_DESTNO_MAX )
			{
				MMK_CreateWin( (uint32 *)MMIMT_NUMOPTINP_WIN_TAB, NULL );
			}
			else
			{
				MTPUBWIN_OpenPromptAlertWin( MTPROMPT_ALERT, TXT_MT_NUMOPT_ALRT_FULL, MTMMI_3SECONDS, NULL );
			}

			break;

        case 1:
	{
			uint8 n = (uint8)( MMIMT_DESTNO_MAX - g_destno_cnt );

			if( n )
			{
				MMIAPIPB_OpenNumberList( MMIPB_LIST_FOR_SMS, MMIPB_LIST_TYPE_MUTIPLE, n, NULL );
			}
			else
			{
				MTPUBWIN_OpenPromptAlertWin( MTPROMPT_ALERT, TXT_MT_NUMOPT_ALRT_FULL, MTMMI_3SECONDS, NULL );
			}

			break;
	}
        case 2: // DO SEND

			MMIMT_NumOpt_HandleSend( add_data_ptr );

			break;

		default:

			MMK_CreateWin( (uint32 *)MMIMT_NUMOPTMENU_WIN_TAB, NULL );

			break;
		}

		break;

	case MSG_CTL_CANCEL:

		MMK_CloseWin( win_id );

		g_destno_cnt = 0; // DO CLEAR HERE

		break;

	default:

		ret = MMI_RESULT_FALSE;

		break;
	}

	return ret;
}

////////////////////////////////////////////////////////////////

LOCAL MMI_RESULT_E HandleNumInpWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param );

WINDOW_TABLE(MMIMT_NUMOPTINP_WIN_TAB) =
{
	CLEAR_LCD,
	WIN_PRIO(WIN_ONE_LEVEL),
	WIN_TITLE_ID(TXT_MT_TITLE_NUMOPTINP),
	WIN_FUNC((uint32)HandleNumInpWinMsg),
	WIN_ID(MMIMT_NUMINP_WIN_ID),
	WIN_STYLE(WS_HAS_SOFTKEY),
	CREATE_PHONENUMEDITBOX_CTRL(MMI_CLIENT_LEFT(0),MMI_CLIENT_TOP(0),MMI_CLIENT_RIGHT(0),MMI_CLIENT_BOTTOM(0),
			MMIMT_NO_LEN_MAX,MMIMT_NUMINP_EDIT_CTRL_ID),
	END_WIN
};

#define MMI_WHITE_COLOR 0xffff

extern WINDOW_TABLE(MMIMT_NUMOPTINP_WIN_TAB);

LOCAL MMI_RESULT_E HandleNumInpWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param )
{
	MMI_RESULT_E ret = MMI_RESULT_TRUE; MMI_CONTROL_ID_E ctrl_id = MMIMT_NUMINP_EDIT_CTRL_ID;

	GUI_RECT_T rect; STRING_INFO_T strinfo;

	 GUI_LCD_DEV_INFO	lcd_dev_info = {GUI_LCD_0, GUI_BLOCK_0};

	switch( msg_id )
	{
	case MSG_FULL_PAINT:

		MTMMITHEME_GetClientRect( &rect );
		
		GUIEDITBOX_SetEditBoxToSingle( MMIMT_NUMINP_EDIT_CTRL_ID, SINGLE_ALIGN_CENTER );
		
		LCD_FillRect( &lcd_dev_info, rect, MMI_WINDOW_BACKGROUND_COLOR );

		break;

	case MSG_OPEN_WINDOW:

		MTINI_GetProfileRect( INI_MT_RECT_NUMOPT_SINGLE_PHONENUMBE, &rect );

		GUIEDITBOX_SetEditBoxRect( ctrl_id, &rect );

		MMK_SetAtvCtrl( win_id, ctrl_id );

		break;

	case MSG_CTL_PENOK:
	case MSG_CTL_OK:

		MT_MEMSET( &strinfo, 0, sizeof(STRING_INFO_T) );

		GUIEDITBOX_GetPhoneNumEditBoxInfo( ctrl_id, &strinfo );

		if( strinfo.str_len )
		{
			MMK_SendMsg( MMIMT_NUMOPT_WIN_ID, MSG_MT_NUMOPT_GETNO, &strinfo );

			MMK_CloseWin( win_id );
		}
		else
		{
			MTPUBWIN_OpenPromptAlertWin( MTPROMPT_ALERT, TXT_MT_NUMOPTINP_ALRT_NULL, MTMMI_3SECONDS, NULL );
		}

		break;

	case MSG_CTL_CANCEL:

		MMK_CloseWin( win_id );

		break;

	default:
		
		ret = MMI_RESULT_FALSE;

		break;
	}

	return ret;
}

////////////////////////////////////////////////////////////////

LOCAL MMI_RESULT_E HandleNumOptMenuWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param );

WINDOW_TABLE(MMIMT_NUMOPTMENU_WIN_TAB) =
{
	CLEAR_LCD,
	WIN_PRIO(WIN_ONE_LEVEL),
	WIN_FUNC((uint32)HandleNumOptMenuWinMsg),
	WIN_ID(MMIMT_NUMOPT_MENU_WIN_ID),
	WIN_TITLE_ID(STXT_OPTION),
	CREATE_MENU_CTRL(0,0,MMI_MAINSCREEN_RIGHT_MAX_PIXEL,MMI_MAINSCREEN_BOTTOM_MAX_PIXEL, 
			MENU_MT_NUMOPT_OPT,MMIMT_NUMOPT_MENU_CTRL_ID),
	END_WIN
};

extern WINDOW_TABLE(MMIMT_NUMOPTMENU_WIN_TAB);

LOCAL MMI_RESULT_E HandleNumOptMenuWinMsg( MMIMT_WINDOW_ID_E win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param )
{
	MMI_RESULT_E ret = MMI_RESULT_TRUE;

	uint32 group_id, menu_id; uint16 i;

	switch( msg_id )
	{
	case MSG_OPEN_WINDOW:

		MMK_SetWinTitleExt(win_id,STXT_OPTION,TRUE);
		MMK_SetAtvCtrl( win_id, MMIMT_NUMOPT_MENU_CTRL_ID );

		break;

	case MSG_PROMPTWIN_OK:

		MMK_SendMsg( MMIMT_NUMOPT_WIN_ID, MSG_MT_NUMOPT_DELNO, NULL );

		MTPUBWIN_OpenPromptAlertWin( MTPROMPT_SUCCESS, TXT_MT_DONE, MTMMI_3SECONDS, NULL ); 

		MMIPUB_CloseQuerytWin(PNULL);
		MMK_CloseWin( win_id );

		break;

	case MSG_PROMPTWIN_CANCEL:

		MMIPUB_CloseQuerytWin(PNULL);

		break;

	case MSG_CTL_PENOK:
	case MSG_CTL_OK:

		GUIMENU_GetId( MMIMT_NUMOPT_MENU_CTRL_ID, (MMI_MENU_GROUP_ID_T *)&group_id, (MMI_MENU_ID_T *)&menu_id );
		
		switch( menu_id )
		{
		case ID_MT_MENU_NUMOPT_DEL:

			MTPUBWIN_OpenPromptQueryWin( TXT_MT_NUMOPT_QURY_DEL );

			break;

		case ID_MT_MENU_NUMOPT_EDIT:
			
			MMK_CreateWin( (uint32*)MMIMT_NUMOPTINP_WIN_TAB, NULL );

			i = GUILISTBOX_GetCurItemIndex( MMIMT_NUMOPT_LIST_CTRL_ID );

			if( i >= 3 && i-3 < MMIMT_DESTNO_MAX )
			{
				GUIEDITBOX_SetPhoneNumEditBoxStringInfo( MMIMT_NUMINP_EDIT_CTRL_ID, g_destno[i-3], (uint16)strlen((char *)g_destno[i-3]) );
			}

			MMK_CloseWin( win_id );

			break;

		default:

			SCI_PASSERT( 0, ( " the menu id is error" ) );

			break;
		}

		break;

	case MSG_CTL_CANCEL:

		MMK_CloseWin( win_id );

		break;

	default:

		ret = MMI_RESULT_FALSE;

		break;
	}

	return ret;
}

#endif

⌨️ 快捷键说明

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