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

📄 mmimemo.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
    T_DISPLAY_DATA    display_info;
    MemoData * data = (MemoData *) win_data->user;
    int i;

    switch( keyboard->code )
    {
    case KCD_LEFT:       
        if( data->event==MEMO_COVER )         //覆盖第一条
        {
            memset(FFS_MemoData.item[MemoDataIndex.Item[1].position].text,0,MEMO_LEN);
            memcpy((char*)FFS_MemoData.item[MemoDataIndex.Item[1].position].text,(char*)data->text,MEMO_LEN);
            FFS_MemoData.item[MemoDataIndex.Item[1].position].position=10;
            flash_Memowrite();

            dialog_info_init(&display_info);                 
            display_info.TextId2     =TxtSaved;                   
            display_info.Time       = FOREVER;                   
            display_info.iconindex =REMIND_COMPLETE;

            display_info.Callback     = (T_VOID_FUNC)memo_dialog_cb;
            /*
             * Call Info Screen
             */

            info_dialog (data->win, &display_info);                                   
        }
        else if( data->event==MEMO_DELETEALL )    //全部删除
        {
            FlashMemoDataInitialise();
            flash_Memowrite();
            //if(!flash_Memowrite())
            {
                //MemoIndexInit();
                dialog_info_init(&display_info);
                display_info.KeyEvents    = KEY_OK | KEY_RIGHT | KEY_LEFT;
                display_info.LeftSoftKey  = '\0';
                display_info.RightSoftKey = '\0';
                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)memo_dialog_cb;
                display_info.Identifier = 0;
                display_info.iconindex =REMIND_COMPLETE;
                /*
                 * Call Info Screen
                 */

                info_dialog (data->win, &display_info);                    
            }
        }
        Memo_destroy(win);
        break;
    case KCD_RIGHT:
    case KCD_HUP:
        Memo_destroy(win);
        break;
    default:
        break;
    }
    return MFW_EVENT_CONSUMED;
}
/* 创建文本框 */
void MemoSetEditor(T_MFW_HND win)
{
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoData* data = (MemoData *) win_data->user;   

    memset(data->text,0,sizeof(data->text));
    editor_attr_init_fullscr(&((data->editor_data).editor_attr), 1,TxtAdd, (char*)data->text, MEMO_LEN, edtCurBar1);
    data->editor_data.hide              = FALSE;
    data->editor_data.min_enter         = 1;  // Avoid returning empty strings


    data->editor_data.Identifier        = 0xFFFF ; 
    data->editor_data.TextString        = NULL;  
    data->editor_data.timeout           = FOREVER;  // Avoid returning empty strings
    data->editor_data.destroyEditor     = TRUE;
    data->editor_data.TextId               = '\0';                                                
    data->editor_data.LeftSoftKey       = TxtSoftOK;//comfirm

    data->editor_data.AlternateLeftSoftKey  = TxtNull;
    data->editor_data.RightSoftKey      = TxtDelete;
    data->editor_data.mode              = TEXTINPUT_MODE;       /* 2003/12/04 sunsj modify */
    data->editor_data.InputMode         = PINYIN_INPUT_MODE;    /* 2003/12/04 sunsj */
}
/* 编辑框的回调函数 */
static void MemoCB( T_MFW_HND win,USHORT Identifier,UBYTE reason)
{
    T_MFW_WIN       *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoData   *data       = (MemoData *) win_data->user;  
    int i=0,j=0;
    T_DISPLAY_DATA    display_info;

    TRACE_EVENT("MemoCB");

    switch( reason )
    {
    case INFO_KCD_LEFT: 
        //flash_Memoread();    		
        while( (FFS_MemoData.item[i].text[0]!=0)&&(i<10) )
        {
            if( j<FFS_MemoData.item[i].position )
                j=FFS_MemoData.item[i].position;
            i++;
        }
        if( i<10 )
        {
            TRACE_EVENT("i<10");
            memset(FFS_MemoData.item[i].text,0,sizeof(FFS_MemoData.item[i].text));
            memcpy((char*)FFS_MemoData.item[i].text,(char*)data->text,MEMO_LEN);
            FFS_MemoData.item[i].position=j+1;  
            flash_Memowrite();
            // if(!flash_Memowrite())
            {
                //MemoIndexInit();
                dialog_info_init(&display_info);                                    
                display_info.TextId2     =TxtSaved;                    
                display_info.Time       = FOREVER;
                display_info.Callback     = (T_VOID_FUNC)memo_dialog_cb;
                display_info.Identifier = 0;
                display_info.iconindex =REMIND_COMPLETE;
                /*
                 * Call Info Screen
                 */

                info_dialog (data->win, &display_info);
                //editor_destroy(data->editor_win);                    
                Memo_destroy(win);
            }
        }
        else
        {
            /* 2003/12/04 sunsj modify for new editor mode */
            //记录满了 覆盖第一条
            if( data->editor_data.mode == TEXTINPUT_MODE )
            {
                text_input_destroy(data->editor_win);
            }
            else
            {
                editor_destroy(data->editor_win);
            }
            data->editor_win=0;
            SEND_EVENT(win, MEMO_COVER, 0, 0);
        }
        break;
    case INFO_KCD_RIGHT:
    case INFO_KCD_HUP:
        //editor_destroy(data->editor_win);
        Memo_destroy(win);
        break;
    }
}


void Memo_destroy(T_MFW_HND own_window)
{
    T_MFW_WIN     * win  = ((T_MFW_HDR *)own_window)->data;
    MemoData* data   = (MemoData*)win->user;

    TRACE_EVENT ("Memo_destroy()");

    if( data->editor_win )
    {
        /* 2003/12/04 sunsj modify for new editor mode */
        if( data->editor_data.mode == TEXTINPUT_MODE )
        {
            text_input_destroy(data->editor_win);
        }
        else
        {
            editor_destroy(data->editor_win);
        }
    }

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

        if( call_data.win&&call_data.win_memo )
        {
            call_data.win_memo=0;//zy 2003-04-01 if is incall destroy memo
        }
        win_delete (own_window);
        /*
        * Free Memory
        */   
        FREE_MEMORY ((void *)data, sizeof (MemoData));
    }
}


int memoBrowse(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND           parent_win = mfwParent( mfw_header());
    T_MFW_HND           win    = memoBrowse_create(parent_win);

    TRACE_EVENT("memoBrowse");      

    if( win NEQ NULL )
    {
        SEND_EVENT (win, MEMOBROWSE_INIT, 0, 0);
    }

    return MFW_EVENT_CONSUMED;
}
/* "查看" "逐个删除"窗口创建 */
static T_MFW_HND memoBrowse_create(MfwHnd parent_win)
{
    T_MFW_WIN  * win;
    memoBrowseData* data = (memoBrowseData*)ALLOC_MEMORY (sizeof (memoBrowseData)); 


    TRACE_EVENT("memoBrowse");
    if( data EQ NULL )
    {
        return NULL;
    }

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

        return NULL;
    }
    // connect the dialog data to the MFW-window
    data->mmi_control.dialog = (T_DIALOG_FUNC)MemoBrowse_DialogCB;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent_win         = parent_win;  
    memo_win=data->win;

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

}


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

    if( data EQ NULL )
        return 0;

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


/* "查看" "逐个删除"窗口事件处理函数,创建menu_list */
static void MemoBrowse_DialogCB(T_MFW_HND win, USHORT event,  SHORT value, void * parameter)
{
    T_MFW_WIN  * win_data   = ( (T_MFW_HDR *) win )->data;
    memoBrowseData * data = (memoBrowseData *) win_data->user;
    T_DISPLAY_DATA    display_info; 
    int i;

    TRACE_EVENT("MemoBrowse_DialogCB");
    data->event=event;
    TraceInt(data->event);
    switch( event )
    {
    case MEMOBROWSE_INIT:
    case MEMOBROWSE_DELETE:         
        data->numberOfRecords=0;
        for( i=0;i<10;i++ )
        {
            if( (FFS_MemoData.item[i].text[0]!=0)&&(FFS_MemoData.item[i].position!=0) )
                data->numberOfRecords++;
        }
        TraceInt(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( FFS_MemoData.item[i].text[0]!=0 )
                {
                    memset(string_data.item[i].string,0,13);
                    memcpy(&string_data.item[i].string,&FFS_MemoData.item[i].text,13);
                    data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_LISTCOMMON, 0);//&colist;     /* 2004/06 sunsj modify for icon manage */
                    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;  
                    data->menu_list_data->List[i].str  =(char*)string_data.item[i].string;                            
                    data->menu_list_data->List[i].flagFunc = item_flag_none;    
                }
            }
            if( data->event==MEMOBROWSE_INIT )
            {
                data->menu_list_data->LeftSoftKey = TxtChange;
                data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtBrowse);
            }
            else
            {
                data->menu_list_data->LeftSoftKey = TxtDelete;
                data->menu_list_data->ListMenuHeadStr =MmiRsrcGetText(TxtDeleteOnebyOne);
            }
            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->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   = &memo_menuAttrib;
            data->menu_list_data->autoDestroy    = TRUE;               //2004.4.21 WYJ MI18800000298
            data->menu_list_data->ListMenuFlag  =1;               
            listDisplayListMenu(win, data->menu_list_data,(ListCbFunc)MemoList_cb,0); 
        }
        else
        {
            dialog_info_init(&display_info);                  
            display_info.TextId2     =TxtNorecord;                  
            display_info.Time       = FOREVER;                 
            display_info.iconindex =REMIND_NORECORD;
            /*
            * Call Info Screen
            */
            info_dialog (win, &display_info);
            memoBrowse_destroy1(win);
        }
        break;      
    case MEMOBROWSE_EXIT:
        memoBrowse_destroy(win);
        break;
    }
}
/* "查看" "逐个删除"的菜单回调函数 */
void MemoList_cb(T_MFW_HND  Parent, ListMenuData * ListData)
{
    T_MFW_WIN    * win_data = ((T_MFW_HDR *)Parent)->data;
    memoBrowseData * data     = (memoBrowseData *)win_data->user;  
    T_MFW_HND  win=data->win;
    T_MFW_HND change_win;
    T_DISPLAY_DATA    display_info;

    TRACE_EVENT("MemoList_cb");
    TraceInt(data->event);
    if( data->event==MEMOBROWSE_INIT )        //"查看"
    {
        if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
            || (ListData->Reason EQ LISTS_REASON_HANGUP) )
        {
            TRACE_EVENT("LISTS_REASON_BACK");
            //listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298
            memoBrowse_destroy(memo_win);                  
        }
        else if( (ListData->Reason EQ LISTS_REASON_SELECT) || (ListData->Reason EQ LISTS_REASON_OK) ) //xsf add (ListData->Reason EQ LISTS_REASON_OK) 03.10
        {   

⌨️ 快捷键说明

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