mmimemo.c

来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,168 行 · 第 1/3 页

C
1,168
字号

            TRACE_EVENT("LISTS_REASON_SELECT");                
            position=ListData->ListPosition; 
            //listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298		
            memoBrowse_destroy(memo_win);         //2004.2.27 WYJ 
            change_win=MemoChange_create(Parent); //2004.2.27 WYJ
            if( change_win NEQ NULL )
                SEND_EVENT(change_win, MEMOCHANGE_INIT, 0, 0);
        }
    }
    else if( data->event==MEMOBROWSE_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); 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
        {
            FFS_MemoData.item[ListData->ListPosition].position=0;
            memset(FFS_MemoData.item[ListData->ListPosition].text,0,sizeof(MEMO_LEN)); 

            flash_Memowrite();                
            dialog_info_init(&display_info);                
            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;//MemoDelete_dialog_cb;
            display_info.iconindex = REMIND_COMPLETE;
            display_info.Identifier =0;
            /*
            * Call Info Screen
            */
            info_dialog (data->win, &display_info);                 
            positionChange();               //重新排列记录   
            //listsDestroy(data->menu_list_data->win); 2004.4.21 WYJ MI18800000298
            memoBrowse_destroy(memo_win);
        }
    }
}

/* 删除后对记录的调整 */
void positionChange()
{
    int i,j,k=0;
    Flash_Memo t;

    for( i=9;i>0;i-- )
    {
        if( !k )
        {
            k=1;                            //标志 没有交换的话,就不再做
            for( j=0;j<i;j++ )
            {
                if( (FFS_MemoData.item[j].text[0]==0)&&(FFS_MemoData.item[j+1].text[0]!=0) )
                {
                    memset(&t,0,sizeof(Flash_Memo));
                    t.position=FFS_MemoData.item[j].position;
                    FFS_MemoData.item[j].position=FFS_MemoData.item[j+1].position;
                    FFS_MemoData.item[j+1].position=t.position;
                    wstrcpy(t.text,FFS_MemoData.item[j].text);
                    wstrcpy(FFS_MemoData.item[j].text,FFS_MemoData.item[j+1].text);
                    wstrcpy(FFS_MemoData.item[j+1].text,t.text);               
                    k=0;
                }
            }
        }
    }
}

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

    TRACE_EVENT ("memoBrowse_destroy()");

    memo_win=NULL;
    if( own_window )
    {
        /*
        * Delete WIN Handler
            */


        win_delete (own_window);
        /*
        * Free Memory
        */      
        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(memoBrowseData));  
    }
}


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

    TRACE_EVENT ("memoBrowse_destroy()");

    memo_win=NULL;
    if( own_window )
    {
        /*
        * Delete WIN Handler
            */


        win_delete (own_window);
        /*
        * Free Memory
        */   
        FREE_MEMORY ((void *)data, sizeof(memoBrowseData));  
    }
}


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

    TRACE_EVENT("memoDeleteAll");  

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

    return MFW_EVENT_CONSUMED;
}
int memoOnebyone(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND           parent_win = mfwParent( mfw_header());
    T_MFW_HND           win    = memoBrowse_create(parent_win);

    TRACE_EVENT("memoOnebyone");   

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

    return MFW_EVENT_CONSUMED;
}

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

    TRACE_EVENT ("MemoChange_destroy()");


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


        win_delete (own_window);
        /*
        * Free Memory
        */
        flash_Memowrite();
        FREE_MEMORY ((void *)data, sizeof (MemoChangeData));
    }
}

static T_MFW_HND MemoChange_create(MfwHnd parent_window)
{
    T_MFW_WIN  * win;
    MemoChangeData* data = (MemoChangeData *)ALLOC_MEMORY (sizeof (MemoChangeData ));

    TRACE_EVENT("stopwEditor_create");

    if( data EQ NULL )
    {
        return NULL;
    }

    // Create window handler
    data->win = win_create(parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MemoChange_win_cb);
    if( data->win EQ NULL )
    {
        return NULL;
    }
    // connect the dialog data to the MFW-window
    data->mmi_control.dialog = (T_DIALOG_FUNC)MemoChange_DialogCB;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent_win         = parent_window;   

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

static void MemoChange_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoChangeData* data = (MemoChangeData *) win_data->user;

    switch( event )
    {
    case MEMOCHANGE_INIT:
        MemoChangeSetEditor(win);
        data->editor_data.Callback          = (T_EDIT_CB)MemoChangeCB;
        /* 2003/12/04 sunsj modify for new editor mode */
        if( data->editor_data.mode == TEXTINPUT_MODE )
        {
            data->editor_win = text_input(win, &(data->editor_data));
        }
        else
        {
            data->editor_win = editor_start(win, &(data->editor_data));
        }
        //winShow(win);
        break;
    case MEMOCHANGE_EXIT:
        MemoChange_destroy(win);
        break;
    }
}

static int  MemoChange_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
    MemoChangeData* data = (MemoChangeData *)win->user;
    T_DISPLAY_DATA display_info;
    char str[4];

    TRACE_EVENT ("stopwEditor_win_cb()");


    if( data EQ 0 )
        return 1;

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

/* 修改记录编辑框的回调函数 */
static void MemoChangeCB( T_MFW_HND win,USHORT Identifier,UBYTE reason)
{
    T_MFW_WIN       *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoChangeData   *data       = (MemoChangeData *) win_data->user;      
    T_DISPLAY_DATA    display_info;

    TRACE_EVENT("MemoCB");

    switch( reason )
    {
    case INFO_KCD_LEFT:
        memset(FFS_MemoData.item[position].text,0,MEMO_LEN);
        memcpy(FFS_MemoData.item[position].text,data->string,MEMO_LEN);
        flash_Memowrite();

        dialog_info_init(&display_info);
        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     =TxtSaved;
        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);    
        /* 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);
        }
        MemoChange_destroy(win);
        //memoBrowse_destroy(memo_win); 	//2004.2.27 WYJ 
        break;
    case INFO_KCD_RIGHT:
    case INFO_KCD_HUP: 
        /* 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);
        }
        MemoChange_destroy(win); 
        //memoBrowse_destroy(memo_win);		//2004.2.27 WYJ
        break;
    }

}

void memo_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
    //MemoIndexInit();
}

void MemoDelete_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
    T_MFW_WIN       *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoChangeData * data       = (MemoChangeData *) win_data->user;     
}
/* 创建"查看"->修改记录的编辑框 */
void MemoChangeSetEditor(T_MFW_HND win)
{
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    MemoChangeData* data = (MemoChangeData *) win_data->user;   

    TRACE_EVENT("MemoChangeSetEditor");
    memset((char*)data->string,0,MEMO_LEN);
    memcpy((char*)data->string,(char*)FFS_MemoData.item[position].text,MEMO_LEN);   
    editor_attr_init_fullscr(&((data->editor_data).editor_attr), 1,TxtChange, (char*)data->string, 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       = TxtSoftConfirm;//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 */
}






















⌨️ 快捷键说明

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