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

📄 plxuilib.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "SMSStruct.h"
void mmi_frm_sms_search_phb (void);
extern MMI_PHB_LIST_VIEW phbListView;
extern U8    g_bBeCalled;
static void SearchPhbEntry (void);
#endif

void PLIB_SelectPhbookRecord (unsigned char fieldMask, int bMultiSel, void (*callback)(void * info, int count))
{
    if ( fieldMask & PFIELD_NUMBER == 0 
        && fieldMask & PFIELD_EMAIL == 0 )
        return;
    
//    if ( gUserNotify.cbSelectPbook )
//        return;
// 
    gSelPhbPara.fieldMask = fieldMask;
    gSelPhbPara.bMultiSel = (unsigned char)bMultiSel;
    gUserNotify.cbSelectPbook = callback;
    gScreenID = GetActiveScreenId();

#ifndef _PHB_SEARCH_SURNAME
    mmi_phb_generic_enter_list (cbInternalLstPhbook);
#else
	EntryNewScreen (SCR_ID_PLX_UIL_SELPHBOOK, NULL, SearchPhbEntry, NULL);
	mmi_frm_sms_search_phb ();
//	mmi_msg_search_phb ();
#endif
#if 0
	mmi_phb_entry_list(PhoneBookEntryCount, /*Total Entry*/
							  0, /*Title String*/
							  0, /*Title Image*/	
							  STR_GLOBAL_OK, /*LSK*/
							  IMG_GLOBAL_OK, /*LSK*/
							  mmi_phb_get_index_second_level, /*Highlight Callback*/	
							  mmi_phb_sms_send_data_choose_entry, /*LSK Callback*/
							  mmi_phb_sms_send_data_choose_entry, /*SEND Key Callback*/
							  mmi_phb_list_get_item, /*List Callback*/
							  mmi_phb_list_get_hint, /*Hint Callback*/
							  mmi_phb_frm_enter_send_entry, /*Re-Entry Callback*/
							  TRUE,	/*Alpha Index*/
							  TRUE);	/*Right Arrow Key*/

	SetRightSoftkeyFunction (GoBackHistory, KEY_EVENT_UP);
#endif
}

#ifdef _PHB_SEARCH_SURNAME
static void SearchPhbEntry (void)
{
	if ( phbListView == MMI_PHB_LIST_FOR_FRM ) {//|| g_bBeCalled == SURNAME_CALLED_BY_SMS_SINGLE ) {
		PLIBPBRECORD record;
		pfnUnicodeStrcpy ((char*)record.field, (char*)g_frm_sms_cntx.mmi_frm_sms_number);
		g_frm_sms_cntx.mmi_frm_sms_number[0] = 0;   
		g_frm_sms_cntx.mmi_frm_sms_number[1] = 0;      
		phbListView = MMI_PHB_LIST_FOR_MMS_NUMBER; 
//		g_bBeCalled = 0;
		SelPhbookBack ((void *)&record, 1);
	}
	else {
		SelPhbookBack (NULL, 0);
	}
}
#endif

static void cbInternalLstPhbook (MMI_PHB_VCARD_STRUCT * info)
{
    if ( info == NULL ) {
        SelPhbookBack (NULL, 0);
    }
    else {
        GetPhbookRecNumber (&gSelPhbPara.nums, info);
        if ( gSelPhbPara.nums.cnt == 0 ) {
            DisplayPopup ((U8*)GetString(STR_ID_PLX_UIL_DATANOTFOUND), 
                IMG_GLOBAL_UNFINISHED, 1, 1000, EMPTY_LIST_TONE);
        }
        else if ( gSelPhbPara.nums.cnt == 1 ) {
            PLIBPBRECORD record;
            MakePhbookRecord (&record, &gSelPhbPara.nums);
            SelPhbookBack ((void *)&record, 1);
        }
        else {
            ChooseNumEntry ();
        }
    }
}

static void ChooseNumEntry (void)
{
    unsigned char * guiBuffer;

    EntryNewScreen(SCR_ID_PLX_UIL_CHOOSENUM, NULL, NULL, NULL);
    guiBuffer = GetCurrGuiBuffer(STR_ID_PLX_UIL_CHOOSENUM);
    RegisterHighlightHandler(ChooseNumOnHilight);
    
    ShowCategory53Screen(STR_ID_PLX_UIL_CHOOSENUM, 
        IMG_SCR_PBOOK_CAPTION,
        STR_GLOBAL_OK, 
        IMG_GLOBAL_OK, 
        STR_GLOBAL_BACK, 
        IMG_GLOBAL_BACK,
        gSelPhbPara.nums.cnt, 
        (unsigned char**)gSelPhbPara.nums.strlst, 
        gSelPhbPara.nums.imglst, 
        NULL, 0, 0, guiBuffer);
    
    SetLeftSoftkeyFunction(ChooseNumOnOK, KEY_EVENT_UP);
    SetKeyHandler(ChooseNumOnOK, KEY_SEND, KEY_EVENT_UP);
    SetRightSoftkeyFunction(ChooseNumOnCancel,KEY_EVENT_UP);
}

static void SelPhbookBack (void * info, int count)
{
    SELPBRECCALLBACK callback = gUserNotify.cbSelectPbook;

    if ( callback ) {
        gUserNotify.cbSelectPbook = NULL;
        callback (info, count);
    }
    GoBackToHistory (gScreenID);
}

static void GetPhbookRecNumber (PNUMLIST list, MMI_PHB_VCARD_STRUCT * info)
{
    int cnt = 0;

    pfnUnicodeStrcpy ((char*)list->name, (char*)info->name);
    
    if ( gSelPhbPara.fieldMask & PFIELD_NUMBER ) {
        if ( strlen (info->number) > 0 ) {
            AnsiiToUnicodeString ((char*)list->data[0], (char *)info->number);
            list->strlst[cnt] = (unsigned char *)list->data[0];
            list->imglst[cnt] = IMG_MOBILE_NUMBER;
            cnt ++;
        }
        if ( strlen (info->homeNumber) > 0 ) {
            AnsiiToUnicodeString ((char*)list->data[1], (char *)info->homeNumber);
            list->strlst[cnt] = (unsigned char *)list->data[1];
            list->imglst[cnt] = IMG_HOME_NUMBER;
            cnt ++;
        }
        if ( strlen (info->officeNumber) > 0 ) {
            AnsiiToUnicodeString ((char*)list->data[2], (char *)info->officeNumber);
            list->strlst[cnt] = (unsigned char *)list->data[2];
            list->imglst[cnt] = IMG_OFFICE_NUMBER;
            cnt ++;
        }
        if ( strlen (info->faxNumber) > 0 ) {
            AnsiiToUnicodeString ((char*)list->data[3], (char *)info->faxNumber);
            list->strlst[cnt] = (unsigned char *)list->data[3];
            list->imglst[cnt] = IMG_FAX_NUMBER;
            cnt ++;
        }
    }
    if ( gSelPhbPara.fieldMask & PFIELD_EMAIL ) {
        if ( strlen (info->emailAddress) > 0 ) {
            AnsiiToUnicodeString ((char*)list->data[4], (char*)info->emailAddress);
            list->strlst[cnt] = (unsigned char *)list->data[4];
            list->imglst[cnt] = IMG_EMAIL_ADDRESS;
            cnt ++;
        }
    }
    list->actIdx = 0;
    list->cnt = cnt;
}

static void MakePhbookRecord (PPLIBPBRECORD rec, PNUMLIST info)
{
    pfnUnicodeStrcpy ((char*)rec->name, (char*)info->name);
    pfnUnicodeStrcpy ((char*)rec->field, (char*)info->strlst[info->actIdx]);
}

static void ChooseNumOnHilight (S32 idx)
{
    gSelPhbPara.nums.actIdx = (int)idx;
}

static void ChooseNumOnOK (void)
{
    PLIBPBRECORD record;
    MakePhbookRecord (&record, &gSelPhbPara.nums);
    SelPhbookBack ((void *)&record, 1);
}

static void ChooseNumOnCancel (void)
{
    mmi_phb_generic_enter_list (cbInternalLstPhbook);
}

/************************************************************************/
/*    Query Phonebook related name string by number or EmailAddress     */
/************************************************************************/
static char * lookUpMailAddress (char * addr);
void PLIB_GetPhbookName (WCHAR * nameBuf, int bufSize, unsigned char fieldMask, const WCHAR * data)
{
    char * ptr;

    if ( nameBuf == NULL || bufSize <= 0 )
        return;

    if ( fieldMask & PFIELD_EMAIL == 0 
        && fieldMask & PFIELD_NUMBER == 0 
        && fieldMask & PFIELD_NAME == 0 )
        goto NAMENOTFOUND;

    if ( data == NULL )
        goto NAMENOTFOUND;

    if ( fieldMask & PFIELD_NUMBER ) {
        ptr = lookUpNumber ((char*)data);
        if ( ptr != NULL )
            goto NAMEFOUND;
    }
    if ( fieldMask & PFIELD_NAME ) {
        ptr = lookUpName ((char*)data);
        if ( ptr != NULL )
            goto NAMEFOUND;
    }
    if ( fieldMask & PFIELD_EMAIL ) {
		ptr = lookUpMailAddress ((char*)data);
		if ( ptr != NULL )
			goto NAMEFOUND;
    }
    goto NAMENOTFOUND;

NAMEFOUND:
    pfnUnicodeStrncpy ((char*)nameBuf, ptr, bufSize/2);
    return;

NAMENOTFOUND:
    nameBuf[0] = 0x0000;
    return;
}

extern unsigned short g_phb_name_index[];
extern unsigned short PhoneBookEntryCount;
extern MMI_PHB_ENTRY_BCD_STRUCT	PhoneBook[MAX_PB_ENTRIES];
#include "nvramprot.h"
#include "nvramenum.h"
static char * lookUpMailAddress (char * mailaddr)
{
	unsigned short idx;
	int i;
	char addr[MAX_PB_FIELD_LEN];

	UnicodeToAnsii (addr, mailaddr);
	
	for(i = 0; i < PhoneBookEntryCount; i++)
	{
		idx = g_phb_name_index[i];
		if ( idx >= MAX_PB_PHONE_ENTRIES )
			continue;
		if ( PhoneBook[idx].field & MMI_PHB_ENTRY_FIELD_EMAIL ) {
			PHB_OPTIONAL_FIELDS_STRUCT fields;
			short err;
			ReadRecord(NVRAM_EF_PHB_FIELDS_LID, (unsigned short)(idx + 1), (void*)&fields, OPTIONAL_FIELDS_RECORD_SIZE, &err);
			if ( strcmp ((char*)addr, (char*)fields.emailAddress) == 0 )
				return (char*)PhoneBook[idx].alpha_id.name;
		}
	}

	return NULL;
}

/************************************************************************/
/*  Select a file path from File Manager                                */
/************************************************************************/
static void ChooseFileEntry (void);
static void ChooseFileOnExit (void);
static unsigned char ChooseFileOnDelete (void * inhis);
static int selfileback = 0;

void PLIB_SelectFile (PLIBFILEFILTER type, const WCHAR* defPath, void (*callback)(WCHAR* path))
{
    FMGR_FILTER filter;
    char tbuf[64];

    if ( gUserNotify.cbSelectFile )
        return;

	selfileback = 0;
	gUserNotify.cbSelectFile = callback;
    gScreenID = GetActiveScreenId ();

    FMGR_FILTER_INIT(&filter);

    switch ( type ) {
    case PFFILTER_IMAGE:
        FMGR_FILTER_SET_IMAGE(&filter);
        break;
    case PFFILTER_AUDIO:
        FMGR_FILTER_SET_AUDIO(&filter);
        break;
    case PFFILTER_VIDEO:
        FMGR_FILTER_SET_VIDEO(&filter);
        break;
    default:
        FMGR_FILTER_SET_ALL(&filter);
        break;
    }
    FMGR_FILTER_SET(&filter, FMGR_TYPE_FOLDER);

    if ( defPath )
        pfnUnicodeStrcpy (tbuf, (char*)defPath);
    else
        AnsiiToUnicodeString (tbuf, DEFAULTPATH);


    EntryNewScreen (SCR_ID_PLX_UIL_CHOOSEFILE, ChooseFileOnExit, NULL, NULL);
	SetDelScrnIDCallbackHandler(SCR_ID_PLX_UIL_CHOOSEFILE, ChooseFileOnDelete);

#ifdef PROJECT_SIMCOM_6217
    mmi_fmgr_select_path_and_enter (APP_MULTIMEDIA, FMGR_SELECT_FILE, filter, (char*)tbuf, (PsFuncPtr) cbInteralSelFile);
#else
    mmi_fmgr_select_path_and_enter (APP_MULTIMEDIA, FMGR_SELECT_FILE, filter, (char*)tbuf, (PsExtFuncPtr) cbInteralSelFile);
#endif
}

#ifdef SIMCOM_6217
static void cbInteralSelFile (void * info)
#else
static void cbInteralSelFile (void * info, int count)
#endif
{
    selfileback = 1;
    if ( gUserNotify.cbSelectFile != NULL ) {
        SELFILECALLBACK callback = gUserNotify.cbSelectFile;
        gUserNotify.cbSelectFile = NULL;
        callback ((WCHAR*)info);
    }
}

static void ChooseFileEntry (void)
{
}

static void ChooseFileOnExit (void)
{
	history    ScrDA; /* Variable to hold the history data*/
 
	ScrDA.scrnID = SCR_ID_PLX_UIL_CHOOSEFILE;
	ScrDA.entryFuncPtr = ChooseFileEntry;
 
	AddHistory(ScrDA);
}

static unsigned char ChooseFileOnDelete (void * inhis)
{
    if ( gUserNotify.cbSelectFile != NULL && !selfileback) {
        SELFILECALLBACK callback = gUserNotify.cbSelectFile;
        gUserNotify.cbSelectFile = NULL;
		selfileback = 1;
        // we here use keyword to indicate that we callback because of user back to idle
		// it is not a good idea but it should work well
		callback ((WCHAR*)"BACKIDLE");	
		
    }

	return 0;
}

/************************************************************************/
/*  Save data to the user selected path                                                                    */
/************************************************************************/
#ifdef SIMCOM_6217
static void cbInteralSelPath (void * info);
#else
static void cbInteralSelPath (void * info, int count);
#endif

static void InputFilenameEntry (void);
static void InputNameOnOK (void);
static void InputNameOnCancel (void);
static void InputNameMenuOnOK (void);
static void SavedataNotify (int result);
static WCHAR * MakeFullPathName (void);

typedef enum {
	MEDIA_IMAGE = 1,
	MEDIA_AUDIO,
	MEDIA_VIDEO,
	MEDIA_UNKNOWN
} MEDIATYPE;

typedef struct tagCONTENTTYPETABLE {
	const char * name;
	const char * ext;
} CONTENTTYPETABLE, *PCONTENTTYPETABLE;

static const CONTENTTYPETABLE  gContentTab[] = {
   {"application/octet-stream",		"exe"},
   {"application/octet-stream",		"bin"},
   {"application/octet-stream",		"class"},
   {"application/octet-stream",		"dms"},
   {"application/octet-stream",		"lha"},
   {"application/octet-stream",		"lzh"},
   {"application/sdp",				"sdp"},
   {"application/vnd.poc.refer-to",	""},
   {"application/vcard",			"vcf"},
   {"application/hbs-vcs",			"vcs"},
   {"application/zip",				"zip"},
   {"application/pdf",				"pdf"},
   {"application/x-dvi",			"dvi"},
   {"application/vnd.Nokia.ringing-tone", "rng"},
   {"application/vnd.smaf",			"mmf"},
   {"application/x-smaf",			"mmf"},
   {"application/x-pmd",			"pmd"},
  
   {"audio/basic",					"au"},
   {"audio/basic",					"snd"},
   {"audio/mid",					"mid"},
   {"audio/mid",					"rmi"},
   {"audio/vm",						"vm"},
   {"audio/aac",					"aac"},
   {"audio/rmf",					"rmf"},
   {"audio/x-aiff",					"aif"},
   {"audio/x-aiff",					"aifc"},
   {"audio/x-aiff",					"aiff"},
   {"audio/m4a",					"m4a"},
   {"audio/x-mpegurl",				"m3u"},
   {"audio/x-pn-realaudio",			"ra"},
   {"audio/x-pn-realaudio",			"ram"},
   {"audio/wav",					"wav"},
   {"audio/x-wav",					"wav"},
   {"audio/amr",					"amr"},
   {"audio/amr-wb",					"awb"},
   {"audio/mid",					"mid"},
   {"audio/imelody",				"imy"},
   {"audio/x-imy",					"imy"},
   {"audio/mp3",					"mp3"},
   {"audio/mpeg",					"mp3"},    
   {"audio/midi",					"mid"},
   {"audio/x-midi",					"mid"},
   {"audio/sp-midi",				"mid"},
   {"audio/x-epoc-wve",				"wve"},
   {"audio/3gpp",					"3gp"},
   {"audio/x-ms-wma",				"wma"},
   
   {"message/rfc822",				"mht"},
   {"message/rfc822",				"mhtml"},
   {"message/rfc822",				"nws"},
   
   {"image/bmp",					"bmp"},
   {"image/cis-cod",				"cod"},
   {"image/gif",					"gif"},
   {"image/ief",					"ief"},
   {"image/jpeg",					"jpg"},
   {"image/jpeg",					"jpe"},

⌨️ 快捷键说明

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