// ================================================================================
// FUNCTION		: CompareStrings
// DESCRIPTION	: return true if two strings matched.
// ================================================================================
bool CContactInfo::CompareStrings(AECHAR *pszStr1, AECHAR *pszStr2)
{
	if ( (NULL==pszStr1) && (NULL==pszStr2) )
		return true;

	if (NULL==pszStr1) return false;

	if (NULL==pszStr2) return false;

	if ( 0!=WSTRCMP(pszStr1, pszStr2) )
		return false;

	return true;

}
Beispiel #2
0
/*=============================================================================
FUNCTION: CDialerApp_RecallDlg_Init

DESCRIPTION: Initializes the controls for Calling dialog

PARAMETERS:
  *pMe: CDialerApp object pointer

RETURN VALUE:
  boolean: Returns TRUE if successful

COMMENTS:

SIDE EFFECTS:

SEE ALSO:

=============================================================================*/
boolean CDialerApp_RecallDlg_Init(CDialerApp *pMe)
{
#if defined(FEATURE_WCDMA) || defined(FEATURE_GSM)
    IDialog *pActiveDlg;
    IStatic *pIStatic;
    IMenuCtl *pISoftKeyMenu;
    AEERect StaticRect;
    AEERect MenuRect;
    AECHAR *pszRecall = NULL;
    AECHAR *pszName = NULL;
    CRecallDlgInfo *pDlgInfo = NULL;

    PRINT_FUNCTION_NAME();
    // error checking
    if(pMe == NULL)
    {
        return FALSE;
    }

    pActiveDlg = CDialerApp_GetActiveDlg(pMe);

    // error checking
    if (pActiveDlg == NULL)
    {
        DIALER_ERR("Null pointer", 0,0,0);
        return FALSE;
    }

    pDlgInfo = (CRecallDlgInfo*) CDialerApp_GetActiveDlgInfo(pMe);

    // Get controls in dialog
    pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg, IDC_STATIC_RECALL);
    pISoftKeyMenu = (IMenuCtl*)IDIALOG_GetControl(pActiveDlg, IDC_SK_RECALL);
    if((pIStatic == NULL) || (pISoftKeyMenu == NULL))
    {
        DIALER_ERR("Null pointer", 0,0,0);
        return FALSE; // error
    }

    // init buffer
    pszRecall = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR));
    if(pszRecall == NULL)
    {
        DIALER_ERR("No memory", 0,0,0);
        return FALSE;
    }

    pszName = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR));
    if(pszName == NULL)
    {
        DIALER_ERR("No memory", 0,0,0);
        FREEIF(pszRecall);
        return FALSE;
    }

    // Update the softkey menu
    (void) IMENUCTL_DeleteAll(pISoftKeyMenu);

    if(AEECM_IS_VOICECALL_CONNECTED(pMe->m_pICM))
    {
        (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE,
                                IDS_HOLD_N_ACCEPT, IDL_RECALL_SK_HOLD_N_ACCEPT,
                                NULL, 0);
        (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_REL_N_ACCEPT,
                                IDL_RECALL_SK_REL_N_ACCEPT, NULL, 0);
    }
    else
    {
        (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CALL,
                                IDL_RECALL_SK_CALL, NULL, 0);
    }

    (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CANCEL,
                            IDL_RECALL_SK_CANCEL, NULL, 0);
    SetDefaultSoftkeyLook(pMe->a.m_pIShell, pISoftKeyMenu);

    // Set Static control size
    ISTATIC_GetRect(pIStatic, &StaticRect);
    IMENUCTL_GetRect(pISoftKeyMenu, &MenuRect);
    SETAEERECT(&StaticRect, 10, 10, pMe->m_rc.dx-20, pMe->m_rc.dy-MenuRect.dy-20);

    // Static Info Properties
    ISTATIC_SetRect(pIStatic, &StaticRect);
    ISTATIC_SetActive(pIStatic, FALSE);
    ISTATIC_SetProperties(pIStatic, ST_MIDDLETEXT | ST_CENTERTEXT | ST_NOSCROLL);

    // Display name or number
    if(CheckAEEReturnStatus(ICM_GetCallInfo(pMe->m_pICM,pDlgInfo->callID,
                                            &(pMe->m_CallInfo), sizeof(AEECMCallInfo))) == TRUE)
    {
        CDialerApp_FormatNumberDisplayString(pMe, &(pMe->m_CallInfo), pszName,
                                             DIALERAPP_MAX_STR_SIZE,
                                             pMe->m_bNVAutoHyphen);
        (void) ISTATIC_SetText(pIStatic, pszName, NULL, AEE_FONT_BOLD,
                               AEE_FONT_NORMAL);

        if(WSTRLEN(pMe->m_CallInfo.other_party_no) != 0)
        {
            if(pMe->m_bNVAutoHyphen == TRUE)
            {
                AECHAR *pszHyphen = CDialerApp_HyphenateNumberString(
                                        pMe->m_CallInfo.other_party_no);
                if(WSTRCMP(pszHyphen, pszName) != 0)
                {
                    // want the phone number if it is not null and already being displayed
                    (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                    (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszHyphen, NULL, TRUE);
                }
                FREEIF(pszHyphen);
            }
            else
            {
                if(WSTRCMP(pMe->m_CallInfo.other_party_no, pszName) != 0)
                {
                    // want the phone number if it is not null and already being displayed
                    (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                    (void) ISTATIC_SetTextEx(pIStatic,
                                             (byte*) pMe->m_CallInfo.other_party_no,
                                             NULL, TRUE);
                }
            }
        }
    }

    (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE,
                                IDS_AVAILABLE, pszRecall,
                                ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)));
    (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszRecall, NULL, TRUE);

    (void) IDIALOG_SetFocus(pActiveDlg, IDC_SK_RECALL);

    FREEIF(pszRecall);
    FREEIF(pszName);

    return TRUE;
#else
    return FALSE;
#endif // defined(FEATURE_WCDMA) || defined(FEATURE_GSM)
}
Beispiel #3
0
/*=============================================================================
FUNCTION: CDialerApp_CallingDlg_DisplayRefresh

DESCRIPTION: Refreshes the calling dialog display

PARAMETERS:
  *pMe: CDialerApp object pointer

RETURN VALUE:
  boolean: Returns TRUE if successful

COMMENTS:

SIDE EFFECTS:

SEE ALSO:

=============================================================================*/
boolean CDialerApp_CallingDlg_DisplayRefresh(void *pUser)
{
    CDialerApp *pMe = (CDialerApp*) pUser;
    IDialog *pActiveDlg;
    IStatic *pIStatic;
    AECHAR szCUGFormat[] = {'%','s',':',' ','%','u','\0'};
    AECHAR *pszCUGBuf = NULL;
    AECHAR *pszName = NULL;

    PRINT_FUNCTION_NAME();
    // error checking
    if(pMe == NULL)
    {
        DIALER_ERR("Null pointer", 0,0,0);
        return FALSE;
    }

    pActiveDlg = CDialerApp_GetActiveDlg(pMe);

    // error checking
    if (pActiveDlg == NULL)
    {
        DIALER_ERR("Null pointer", 0,0,0);
        return FALSE;
    }

    if(CDialerApp_GetActiveDlgID(pMe) != IDD_CALLING)
    {
        DIALER_ERR("Calling Dialog is not active", 0,0,0);
        return FALSE;
    }

    // Get controls in dialog
    pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg,
               IDC_STATIC_CALLING);
    if(pIStatic == NULL)
    {
        DIALER_ERR("Null pointer", 0,0,0);
        return FALSE; // error
    }

    // init buffer
    pszName = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR));
    pszCUGBuf = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR));
    if((pszName== NULL) || (pszCUGBuf == NULL))
    {
        DIALER_ERR("No memory", 0,0,0);
        FREEIF(pszName);
        FREEIF(pszCUGBuf);
        return FALSE;
    }

    // display all of the needed info to the screen
    if(CheckAEEReturnStatus(ICM_GetCallInfo(pMe->m_pICM, pMe->m_byCurrOrigCall, &(pMe->m_CallInfo), sizeof(AEECMCallInfo))) == FALSE)
    {
        DIALER_ERR("ICM_GetCallInfo FAILED", 0, 0, 0);
        FREEIF(pszName);
        FREEIF(pszCUGBuf);
        return TRUE;
    }

    // display the other party number and name if any in contacts
    CDialerApp_FormatNumberDisplayString(pMe, &(pMe->m_CallInfo), pszName, DIALERAPP_MAX_STR_SIZE, pMe->m_bNVAutoHyphen);
    (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszName, NULL, FALSE);
    if(WSTRLEN(pMe->m_CallInfo.other_party_no) != 0)
    {
        if(pMe->m_bNVAutoHyphen == TRUE)
        {
            AECHAR *pszHyphen = CDialerApp_HyphenateNumberString(pMe->m_CallInfo.other_party_no);
            if(WSTRCMP(pszHyphen, pszName) != 0)
            {
                // want the phone number if it is not null and already being displayed
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszHyphen, NULL, TRUE);
            }
            FREEIF(pszHyphen);
        }
        else
        {
            if(WSTRCMP(pMe->m_CallInfo.other_party_no, pszName) != 0)
            {
                // want the phone number if it is not null and already being displayed
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) pMe->m_CallInfo.other_party_no, NULL, TRUE);
            }
        }
    }

    // check for CUG info
    if(pMe->m_CallInfo.forward_cug_info.cm_cug_index.present == TRUE)
    {
        // display CUG info
        (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_USERGROUP,
                                    pszName, ((DIALERAPP_MAX_STR_SIZE) * sizeof(AECHAR)));
        WSPRINTF(pszCUGBuf, (DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR), szCUGFormat, pszName,
                 ((uint16)((pMe->m_CallInfo.forward_cug_info.cm_cug_index.msb << 8)|(pMe->m_CallInfo.forward_cug_info.cm_cug_index.lsb))));
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszCUGBuf, NULL, TRUE);
    }

    // check for alpha
    if(WSTRLEN(pMe->m_CallInfo.alpha) > 0)
    {
        // display alpha
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
        (void) ISTATIC_SetTextEx(pIStatic, (byte*) pMe->m_CallInfo.alpha, NULL, TRUE);
    }

    if(pMe->m_CallInfo.call_type == AEECM_CALL_TYPE_EMERGENCY)
    {
        AEECMSSInfo SSInfo;

        // reset the timer
        (void) ISHELL_SetTimer(pMe->a.m_pIShell, 1000,
                               (PFNNOTIFY) CDialerApp_CallingDlg_DisplayRefresh, (void*) pMe);

        if(CheckAEEReturnStatus(ICM_GetSSInfo(pMe->m_pICM, &SSInfo, sizeof(AEECMSSInfo))) == TRUE)
        {
            if(SSInfo.srv_status == AEECM_SRV_STATUS_NO_SRV)
            {
                // we want to display looking for service
                (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_LOOKINGFOREMERGENCY, pszName, (DIALERAPP_MAX_STR_SIZE * sizeof(AECHAR)));
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE);
                (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszName, NULL, TRUE);
            }
        }
    }

    IDIALOG_Redraw(pActiveDlg);

    // free memory
    FREE(pszName);
    FREE(pszCUGBuf);

    return TRUE;
}
// ================================================================================
// FUNCTION		: SetContactFromBkpDbRecord
// DESCRIPTION	: Set contact information from a given backup database record.
// ================================================================================
bool CContactInfo::SetContactFromBkpDbRecord(IDBRecord *pRecord, int nId)
{
	AEEDBFieldName rFieldName;
	AEEDBFieldType rFieldType;
	uint16 nFieldLen;
	AECHAR* psStringPtr;
	AECHAR pszEmpty[] = NODATA;

	//release previous memory taken to contact
	ReleaseMem();

	//set Id
	m_nContactId = nId;

	//DB_BACKUP_RECORD_FNAME
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psFName, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_LNAME
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psLName, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_COMPANY
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psCompany, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_JTITLE
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psJTitle, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_FAX
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psFax, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_FAXH
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psFaxH, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_FAXW
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psFaxW, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_MOBILE
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psMobile, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_MOBILEH
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psMobileH, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_MOBILEW
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psMobileW, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_TELEPHONE
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psTelephone, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_TELEPHONEH
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psTelephoneH, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_TELEPHONEW
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psTelephoneW, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_EMAIL
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psEmail, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_EMAILH
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psEmailH, psStringPtr ) )
				return false;
	}

	//DB_BACKUP_RECORD_EMAILW
	rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
	if ( (nFieldLen>0) && (SMDB_FT_STRING==rFieldType) )
	{
		psStringPtr = IDBRECORD_GetFieldString(pRecord);
		if ( 0!=WSTRCMP(psStringPtr, pszEmpty) )
			if ( !CopyFieldTo(&m_psEmailW, psStringPtr ) )
				return false;
	}

	return true;
}