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

📄 mmimmsfolders.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    if( data->win EQ NULL )
    {
        return NULL;
    }
	
	MMS_Set_MsgList_WHnd(data->win);

    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_Menu_Folder_dialog;
    data->mmi_control.data   = data;
	data->winID              = folderType;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = window;
	
    winShow(data->win);
    return data->win;
}

static void MMS_Menu_Folder_dialog (T_MFW_HND win, USHORT event, USHORT value, void * parameter)
{
	T_MFW_WIN           * win_data = ((T_MFW_HDR     *) win)->data;
    T_MMS_MENU_FOLDERS  * data     = (T_MMS_MENU_FOLDERS *)win_data->user;
    T_MFW_HND           * parent   = data->parent;
	P_MMS	mms = getMMS();
	T_DISPLAY_DATA display_info;
	
	MMS_TRACE_FUNCTION("MMS_Menu_Folder_dialog");
	MMS_TRACE_EVENT(( " foldertype:%d", value));
	switch( event )
	{
	case E_INIT:
		if(value == MMS_SEND_FOLDER)
		    manager_set_currentfolder(mms->manager->unsendfolder);
		else if(value == MMS_RECV_FOLDER)
            manager_set_currentfolder(mms->manager->receivefolder);
		else if(value == MMS_DRAFT_FOLDER)
			manager_set_currentfolder(mms->manager->draftfolder);
		else if(value == MMS_SENT_FOLDER)
			manager_set_currentfolder(mms->manager->sendfolder);
		else 
			return;

		if(mms->manager && mms->manager->currentfolder && mms->manager->currentfolder->messagenumber > 0)
		    MMS_Menu_Folder_listmenu_create(data);
		break;
		
	case E_RETURN: 
	case E_EXIT: 
	case E_BACK:  
		if(mms->manager && mms->manager->currentfolder)
		{
			if(mms->manager->currentfolder->messagenumber > 0)
			{
				 MMS_Menu_Folder_destroy(data->win);
			     MMS_Menu_Folder_start(parent , gCurMMSPos);
				 return;
			}
			else
			{
#if 0
				switch(gCurMMSPos)
				{
				case MMS_SEND_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSSendFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (win, &display_info); 
					break;
				case MMS_RECV_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSRecvFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (win, &display_info); 
					break;
				case MMS_DRAFT_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSDraftFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (win, &display_info); 
					break;
				case MMS_SENT_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSSentFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (win, &display_info); 
					break;
				default:
					break;
				}
#endif
				MMS_Menu_Folder_destroy(data->win);
				switch(gCurMMSPos)
				{
				case MMS_SEND_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSSendFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (parent, &display_info); 
					break;
				case MMS_RECV_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSRecvFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (parent, &display_info); 
					break;
				case MMS_DRAFT_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSDraftFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_FAILURE;
					info_dialog (parent, &display_info); 
					break;
				case MMS_SENT_FOLDER:
					dialog_info_init(&display_info);
					display_info.RightSoftKey = TxtSoftBack;
					//display_info.LeftSoftKey  = TxtSoftConfirm;//TxtSoftSelect,TxtSoftConfirm,TxtSoftOptions
					display_info.Time         = TWO_SECS;
					display_info.KeyEvents    = KEY_RIGHT;
					display_info.TextId2      = TxtMMSSentFolderEmpty;
					display_info.Callback     = (T_VOID_FUNC)NULL;
					display_info.Identifier   = DIALOGS_REASON_NULL;
					display_info.iconindex	  = REMIND_COMPLETE;
					info_dialog (parent, &display_info); 
					break;
				default:
					break;
				}
//				SEND_EVENT (parent, event, 0, NULL);				
			}
		}
		break;
		
	case E_ABORT:      
		MMS_Menu_Folder_destroy(data->win);
		SEND_EVENT (parent, event, 0, NULL); /* forward event to parent */
		break;
	default:
		return;
	};
	return;
}

static void MMS_Menu_Folder_listmenu_create(T_MMS_MENU_FOLDERS *data)
{
	int i=0;
	pMessage	msglist;
	P_MMS	mms = getMMS();
	
	MMS_TRACE_FUNCTION("MMS_Menu_Folder_listmenu_create");
	switch( data->winID )
	{
	case MMS_SEND_FOLDER:
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSSendFolder);
		break;
	case MMS_RECV_FOLDER:
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSRecvFolder);	
		break;
	case MMS_DRAFT_FOLDER:
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSDraftFolder);
		break;
	case MMS_SENT_FOLDER:
		data->list_menu_data.ListMenuHeadStr=(char *) MmiRsrcGetText(TxtMMSSentFolder);
		break;
	}
    
	MMS_TRACE_EVENT(("MMS_Menu_Folder_listmenu_create()"));
	MMS_TRACE_EVENT(("the message number in current folder is:%d",mms->manager->currentfolder->messagenumber));
	
	
	data->list_menu_data.ListPosition   = iMsgListIndex+1;
	data->list_menu_data.CursorPosition = iMsgListIndex+1;
	data->list_menu_data.SnapshotSize   = mms->manager->currentfolder->messagenumber;
	data->list_menu_data.Font           = 0;
	data->list_menu_data.LeftSoftKey    = TxtSoftSelect;
	data->list_menu_data.RightSoftKey   = TxtSoftBack;
	data->list_menu_data.KeyEvents      = KEY_ALL^KEY_CALL;//KEY_RIGHT|KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN;
	data->list_menu_data.Reason         = 0;
	data->list_menu_data.Strings        = TRUE; 
	data->list_menu_data.Attr           = &MMS_Menu_Folder_Attrib;
	data->list_menu_data.autoDestroy    = TRUE;
	
	data->list_menu_data.List = (MfwMnuItem *)ALLOC_MEMORY ((mms->manager->currentfolder->messagenumber) * sizeof (MfwMnuItem));		
	data->list_menu_data.ListMenuFlag=1;
	data->list_menu_data.ListLength = mms->manager->currentfolder->messagenumber; 
	data->list_menu_data.autoDestroy = TRUE;
	
	for(msglist=mms->manager->currentfolder->root; msglist; msglist=msglist->next)
	{
		data->list_menu_data.List[i].icon =&textlistIcon;
		data->list_menu_data.List[i].exta = 0;
		data->list_menu_data.List[i].edit = 0;
		data->list_menu_data.List[i].menu = 0;
		data->list_menu_data.List[i].func = 0; 
		data->list_menu_data.List[i].flagFunc = item_flag_none;
		
		if(msglist->title && msglist->title[0] != '\0')
		{
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY ( MMS_TITLE_NUM_LENGTH);
			wstrcpy(data->list_menu_data.List[i].str ,(char *) (msglist->title));
		}
		
		else
		{				
			data->list_menu_data.List[i].str= (char *) ALLOC_MEMORY (MMS_TITLE_NUM_LENGTH);
			data->list_menu_data.List[i].str[0] = '\0';
		}
		i++;
	}
	data->msgNum = i;
	//manager_set_currentmessage(mms->manager->currentfolder, 1);
	listDisplayListMenu(data->win, &data->list_menu_data, (ListCbFunc)MMS_Menu_Folder_listmenu_cb,0);
	
}

static void MMS_Menu_Folder_listmenu_cb (T_MFW_HND * win, ListMenuData * ListData)
{
      T_MFW_WIN         * win_data = ((T_MFW_HDR *)win)->data;
      T_MMS_MENU_FOLDERS    * data   = (T_MMS_MENU_FOLDERS *)win_data->user;
	  P_MMS mms = getMMS();
	  pMessage  curMsg  = NULL;
  	  pMessage	msglist = NULL;

	MMS_TRACE_FUNCTION("MMS_Menu_Folder_listmenu_cb");
	
      switch( ListData->Reason )
      {
	  case LISTS_REASON_OK:
      case LISTS_REASON_SELECT:
//		iMsgListIndex = data->list_menu_data.CursorPosition;
        iMsgListIndex = ListData->CursorPosition;
		if(iMsgListIndex <= (mms->manager->currentfolder->messagenumber -1))
		{
#ifdef MMI_MMSTASK_ENABLED/*talcon added for mms task,2004.07.19*/
			{
			mmsui_data->temp_win = info_mms_dialog(win); 
			mmsui_data->current_win = win;
			mmsui_data->folderType = data->winID;
			}
			{
			T_MMI_MMS_MSETCMSG_IND parameter;
			parameter.pFolder = mms->manager->currentfolder;
			parameter.index =  iMsgListIndex + 1;
			MMS_TRACE_EVENT(("0x%08x,0x%08x,%d", mms->manager, mms->manager->currentfolder,parameter.index));
			MMS_TRACE_EVENT(("type:%d,n:%d,unsel:%d,prote:%d,size:%d,0x%08x,0x%08x",mms->manager->currentfolder->type,mms->manager->currentfolder->messagenumber,mms->manager->currentfolder->unsettlednumber,mms->manager->currentfolder->protectednumber,mms->manager->currentfolder->size,mms->manager->currentfolder->currentmessage,mms->manager->currentfolder->root));
			M_MMI_MMS_MSETCMSG_IND(  &parameter);
			}
#else
		    manager_set_currentmessage(mms->manager->currentfolder, iMsgListIndex + 1);
		    curMsg = mms->manager->currentfolder->currentmessage;
#endif
			}
#ifndef MMI_MMSTASK_ENABLED
        if(curMsg && curMsg->state != MMS_MSG_TYPE_UNNOTI)
		{
		    MMS_Folders_Play_start(data->win , data->winID);
		}
		else
			MMS_Folder_Detail_start(data->win);
#endif
        break;
  		
      case LISTS_REASON_BACK: 
        MMS_Menu_Folder_destroy(data->win);
        break;
  		
	  case LISTS_REASON_UP:
		for(msglist=mms->manager->currentfolder->root; msglist->next; msglist=msglist->next)
		 {
			  if(msglist->next == mms->manager->currentfolder->currentmessage)
			  {
				  mms->manager->currentfolder->currentmessage = msglist;
			  }
		}				  
		break;

      case LISTS_REASON_DOWN:
		if(mms->manager->currentfolder->currentmessage->next)
		{
			mms->manager->currentfolder->currentmessage = mms->manager->currentfolder->currentmessage->next;
		}			  
		break;

	  case LISTS_REASON_HANGUP:
         /*if(mms->manager)
		 {
			 manager_on_destroy();
			 mms->manager = NULL;
		 }*/
         break;
      default:
        break;
      }
      return; 
}

static void  MMS_Menu_Folder_destroy (T_MFW_HND window)
{

	T_MFW_WIN              * win_data;
	T_MMS_MENU_FOLDERS     * data;
	USHORT i;
//	pMessage	pMsg;
//	P_MMS		mms = getMMS();	
	MMS_TRACE_FUNCTION("MMS_Menu_Folder_destroy");
		
	if( window )
	{
	    win_data = ((T_MFW_HDR *)window)->data;
	    data     = (T_MMS_MENU_FOLDERS *)win_data->user;
			
	    if( data )
	    {	 
		     win_delete (data->win);
			 MMS_Set_MsgList_WHnd(NULL);
//	         for( i = 0; i < mms->manager->currentfolder->messagenumber; i++ )
			 for(i=0; i < data->msgNum; i++)
	             FREE_MEMORY( (void *)(data->list_menu_data.List[i].str), MMS_TITLE_NUM_LENGTH);
	         FREE_MEMORY ((void *)data->list_menu_data.List, data->msgNum* sizeof (MfwMnuItem)); 
	         FREE_MEMORY ((void *)data, sizeof (T_MMS_MENU_FOLDERS));
	    }
	    else
	    {
	         ;
	    }
	}
}

//MMS播放界面
static T_MFW_HND MMS_Folders_Play_start(MfwHnd parent_window, MMS_FOLDER_TYPE folderType)
{
    T_MFW_HND win;	
	MMS_TRACE_FUNCTION("MMS_Folders_Play_start");
    win = MMS_Folders_Play_create (parent_window, folderType);	
    if( win NEQ NULL )
    {
        SEND_EVENT (win, E_INIT, NULL, NULL);
    }
    return win;
}

static T_MFW_HND MMS_Folders_Play_create(T_MFW_HND parent_window, MMS_FOLDER_TYPE folderType)
{
   	T_MMS_FOLDERS_PLAYER      * data = (T_MMS_FOLDERS_PLAYER *)ALLOC_MEMORY (sizeof (T_MMS_FOLDERS_PLAYER));
    T_MFW_WIN  * win;
	PlayerInitRetVal playerVal;
	P_MMS mms = getMMS();
	MMS_TRACE_FUNCTION("MMS_Folders_Play_create");
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MMS_Folders_Play_win_cb);
    if( data->win EQ NULL )
    {
        return NULL;
    }
	
	data->winID = folderType;
    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_Folders_Play_dialog;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;
	
	//播放器的初始化
	if(mms->player == NULL)
	{
#ifdef MMI_MMSTASK_ENABLED
	mmsui_data->temp_win = info_mms_dialog(win);
	mmsui_data->current_win = win;
{
	T_MMI_MMS_PLAYERINITIALIZE_IND  parameter;
	parameter.event = PLAYER_INIT_PLAY;
	MMSTASK_DELAY(10);
	M_MMI_MMS_PLAYERINITIALIZE_IND(&parameter);

⌨️ 快捷键说明

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