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

📄 mmistopwatch.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                display_info.TextId2     =TxtNorecord;           
                display_info.Time       = FOREVER;
                display_info.Callback     = (T_VOID_FUNC)NULL;
                display_info.iconindex = REMIND_NORECORD;
                display_info.Identifier =0;
                /*
                * Call Info Screen
                */
                info_dialog (win, &display_info);
                dynamicTitleMenu_destroy(win);
            }
        }
        else if( data->id==BROWSE_DELETE )
        {
            data->numberOfRecords=StopwMemoRead();//gdy add 27/08/02
            // while(StopwIndex[data->numberOfRecords].flag)
            //  data->numberOfRecords++;
            // zgzTraceData("data->numberOfRecords", data->numberOfRecords);   		 
            if( data->numberOfRecords )
            {
                data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));

                if( data->menu_list_data == 0 )
                {
                    TRACE_EVENT("Failed memory alloc 1 ");
                    return;
                }

                data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( data->numberOfRecords * sizeof(T_MFW_MNU_ITEM) );

                if( data->menu_list_data->List == 0 )
                {
                    TRACE_EVENT("Failed memory alloc 2");
                    return;
                }

                for( i = 0; i < data->numberOfRecords ; i++ )
                {
                    if( StopwIndex[i].type )
                    {
                        /* 2004/06 sunsj modify for picture manage */
                        data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_STOPWATCH_CIRCLE, 0);//&circle_bmp;
                    }
                    else
                    {
                        /* 2004/06 sunsj modify for picture manage */
                        data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_STOPWATCH_SEPA, 0);//&sepa_bmp;
                    }
                    data->menu_list_data->List[i].exta = 0;
                    data->menu_list_data->List[i].edit = 0;
                    data->menu_list_data->List[i].menu =0;
                    data->menu_list_data->List[i].func = NULL;
                    TRACE_EVENT((char*)StopwIndex[i].name);
                    data->menu_list_data->List[i].str=(char*)StopwIndex[i].name;
                    TRACE_EVENT(data->menu_list_data->List[i].str);
                    data->menu_list_data->List[i].flagFunc = item_flag_none;     
                }

                data->menu_list_data->ListLength =data->numberOfRecords;
                data->menu_list_data->ListPosition = 1;
                data->menu_list_data->CursorPosition = 1;
                data->menu_list_data->SnapshotSize = data->numberOfRecords;
                data->menu_list_data->Font = 0;
                data->menu_list_data->LeftSoftKey = TxtDelete;
                data->menu_list_data->RightSoftKey = TxtSoftBack;
                data->menu_list_data->KeyEvents = KEY_ALL;
                data->menu_list_data->Reason = 0;
                data->menu_list_data->Strings = TRUE;
                data->menu_list_data->Attr   = &stopw_menuAttrib;
                data->menu_list_data->autoDestroy    = FALSE;
                data->menu_list_data->ListMenuFlag  =1;
                data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtStopwatch);
                listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)dynamicTitleList_cb,0);// 
            }
            else
            {
                dialog_info_init(&display_info);               
                display_info.TextId2     =TxtNorecord;           
                display_info.Time       = FOREVER;
                display_info.Callback     = (T_VOID_FUNC)NULL;
                display_info.iconindex = REMIND_NORECORD;
                display_info.Identifier =0;
                /*
                * Call Info Screen
                */
                info_dialog (win, &display_info);
                dynamicTitleMenu_destroy(win);
            }
        }
        //winShow(win);
        break;
    case DYNAMIC_EXIT:
        dynamicTitleMenu_destroy(win);
        break;
    default:
        break;          
    }
}


static int  dynamicTitle_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
    DynamicTitleData* data = (DynamicTitleData *)win->user;

    if( data EQ NULL )
        return 0;

    switch( event )
    {
    case E_WIN_VISIBLE:
        if( win->flags & E_WIN_VISIBLE )
        {
            /*
            * Clear Screen
                */
            dspl_ClearAll();                
        }
        break;
    default:
        return 0;
    }
    return 1;
}


int GetNumber()
{
    int i=0;
    while( temp_data.record[i] )
	{
		if(i >= STOPWRECORD_NUM)		// MI18800000346 2004.4.23 WYJ
		{
			i = STOPWRECORD_NUM;
			break;
		}
		
        i++;
    }
    return i;
}

void dynamicTitleList_cb(T_MFW_HND  Parent, ListMenuData * ListData)
{
    T_MFW_WIN    * win_data = ((T_MFW_HDR *)Parent)->data;
    DynamicTitleData * data     = (DynamicTitleData *)win_data->user;  
    T_MFW_HND   win;
    T_MFW_HND   parent;
    T_DISPLAY_DATA display_info;
    int i,flag=0;

    TRACE_EVENT("StopwList_cb");

    if( data->id==BROWSE_TITEL )
    {
        TRACE_EVENT("data->id==BROWSE_STOPW");
        if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
            || (ListData->Reason EQ LISTS_REASON_HANGUP) )
        {
            listsDestroy(data->menu_list_data->win);
            dynamicTitleMenu_destroy(data->win);                   
        }
        else if( ListData->Reason EQ LISTS_REASON_SELECT )
        {
            //TRACE_EVENT(StopwIndex[ListData->ListPosition].name);
            parent=data->parent_win;     
            wstrcpy((char*)temp_data.name,(char*)StopwIndex[ListData->ListPosition].name);
            temp_data.group_number=StopwIndex[ListData->ListPosition].group_number;
            temp_data.type=StopwIndex[ListData->ListPosition].type;
            TRACE_EVENT(temp_data.name);
            i=0;
            while( FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].record[i] )
            {
				if(i >= STOPWRECORD_NUM)	// MI18800000346 2004.4.23 WYJ
					break;
				
                temp_data.record[i]=FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].record[i];
                i++;
            }
	    	listsDestroy(data->menu_list_data->win);
            dynamicTitleMenu_destroy(data->win);
            win= dynamicRecord_create(parent);
            if( win NEQ NULL )
                SEND_EVENT(win, DYNAMIC_RECORD_INIT, 0, 0);
        }
    }
    else if( data->id==BROWSE_DELETE )
    {
        TRACE_EVENT("data->id==BROWSE_DELETE");
        if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
            || (ListData->Reason EQ LISTS_REASON_HANGUP) )
        {
            listsDestroy(data->menu_list_data->win); 
            dynamicTitleMenu_destroy(data->win);
        }
        else if( ListData->Reason EQ LISTS_REASON_SELECT )
        {
            for( i=0;i<NUMBER_OF_GROUP;i++ )
            {
                if( FFS_StopwData.group[i].group_number>FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].group_number )
                    FFS_StopwData.group[i].group_number--;
            }
            FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].type=0;
            memset(FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].name,0,sizeof(FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].name));
            for( i=0;i<A_GROUP_NUMBER;i++ )
            {
                FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].record[i]=0;
            }
            memset(&FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1],0,sizeof(FlashStopwatch));
            //FFS_StopwData.group[StopwIndex[ListData->ListPosition].flag-1].group_number=0;
            if( !flash_Stopwrite() )
            {
                TRACE_EVENT("flash_Stopwrite success");
                dialog_info_init(&display_info);//gdy add
                display_info.KeyEvents    = KEY_OK | KEY_RIGHT | KEY_LEFT;
                display_info.LeftSoftKey  = '\0';
                display_info.RightSoftKey = TxtSoftBack;
                display_info.TextString   = '\0';
                display_info.TextString2  = '\0';
                display_info.TextId2     =TxtDeleted;
                display_info.TextId      = '\0';
                display_info.Time       = FOREVER;
                display_info.Callback     = (T_VOID_FUNC)NULL;//dynamicTitle_dialog_cb;
                display_info.iconindex = REMIND_COMPLETE;
                display_info.Identifier =0;
                /*
                * Call Info Screen
                */
                info_dialog (data->win, &display_info);                   
                listsDestroy(data->menu_list_data->win);
                dynamicTitleMenu_destroy(dynamic_win);                    
            }
            else
            {
                dialog_info_init(&display_info);//gdy add
                display_info.KeyEvents    = KEY_OK | KEY_RIGHT | KEY_LEFT;
                display_info.LeftSoftKey  = '\0';
                display_info.RightSoftKey = TxtSoftBack;
                display_info.TextString   = '\0';
                display_info.TextString2  = '\0';
                display_info.TextId2     =TxtError;
                display_info.TextId      = '\0';
                display_info.Time       = ONE_SECS;
                display_info.Callback     = (T_VOID_FUNC)NULL;//dynamicTitle_dialog_cb;
                display_info.iconindex = REMIND_FAILURE;
                display_info.Identifier =0;
                /*
                * Call Info Screen
                */
                info_dialog (data->win, &display_info);
                for( i=0;i<NUMBER_OF_GROUP;i++ )
                {
                    if( FFS_StopwData.group[i].group_number )
                        flag=1;
                }
                //				zgzTraceData("flag=", flag);
                if( flag )
                {
                    listsDestroy(data->menu_list_data->win);
                    SEND_EVENT(dynamic_win, DYNAMIC_INIT, BROWSE_DELETE, 0);
                }
                else
                {
                    listsDestroy(data->menu_list_data->win);
                    dynamicTitleMenu_destroy(dynamic_win);
                }
            }                 
        }
    }
}

void dynamicTitleMenu_destroy(MfwHnd own_window)
{
    T_MFW_WIN     * win  = ((T_MFW_HDR *)own_window)->data;
    DynamicTitleData* data   = (DynamicTitleData*)win->user;

    TRACE_EVENT ("dynamicTitleMenu_destroy()");

    dynamic_win=NULL;


    if( own_window )
    {
        /*
        * Delete WIN Handler
            */


        win_delete (own_window);
        /*
        * Free Memory
        */
        if( data )
        {
            if( data->menu_list_data )
            {
                if( data->menu_list_data->List )
                    FREE_MEMORY((void*)data->menu_list_data->List,data->numberOfRecords*sizeof(T_MFW_MNU_ITEM));

                FREE_MEMORY((void*)data->menu_list_data,sizeof(ListMenuData));
            }
            FREE_MEMORY ((void *)data, sizeof (DynamicTitleData));
        }
    }
}

static T_MFW_HND dynamicRecord_create(MfwHnd parent_window)
{
    T_MFW_WIN  * win;
    DynamicRecordData* data = (DynamicRecordData *)ALLOC_MEMORY (sizeof (DynamicRecordData ));

    TRACE_EVENT("dynamicRecord_create");

    if( data EQ NULL )
    {
        return NULL;
    }

    // Create window handler
    data->win = win_create(parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)dynamic_win_cb);
    if( data->win EQ NULL )
    {

        return NULL;
    }
    // connect the dialog data to the MFW-window
    data->mmi_control.dialog = (T_DIALOG_FUNC)dynamicRecord_DialogCB;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent_win         = parent_window;   
    //
    //realpositon=1;
    //displaypositon=1;
    //data->stroll=0;
    dynamicRecord_win=data->win;

    return data->win;
}

static void dynamicRecord_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    DynamicRecordData* data = (DynamicRecordData *) win_data->user;
    T_DISPLAY_DATA    display_info;
    char tem_str[4];
    char* titleStr;
    int i;

    TRACE_EVENT("dynamicRecord_DialogCB");

    switch( event )
    {
    case DYNAMIC_RECORD_INIT:  
        data->kbd=kbd_create(win, KEY_ALL, (T_MFW_CB)dynamic_kbd_cb);
        data->numberOfRecords =GetNumber();    
#if (MAIN_LCD_SIZE==4)
		data->screenNumber=data->numberOfRecords/7+1;
#elif (MAIN_LCD_SIZE==3)
		data->screenNumber=data->numberOfRecords/6+1;
#endif
        
		data->currentNumber=1;
        if( data->numberOfRecords )
        {
            winShow(win);
        }
        else
        {
            dialog_info_init(&display_info);//gdy add
            display_info.KeyEvents    = KEY_OK | KEY_RIGHT | KEY_LEFT;
            display_info.LeftSoftKey  = '\0';
            display_info.RightSoftKey = TxtSoftBack;
            display_info.TextString   = '\0';
            display_info.TextString2  = '\0';
            display_info.TextId2     =TxtNorecord;
            display_info.TextId      = '\0';
            display_info.Time       = FOREVER;
            display_info.Callback     = (T_VOID_FUNC)NULL;
            display_info.iconindex = REMIND_COMPLETE;
            display_info.Identifier =0;
            /*
            * Call Info Screen
            */

⌨️ 快捷键说明

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