--- a/ccservices/cmsservices/cmsengine/Server/inc/cmsphonebookproxy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/ccservices/cmsservices/cmsengine/Server/inc/cmsphonebookproxy.h Tue May 11 16:00:21 2010 +0300
@@ -187,6 +187,11 @@
* Set default attribute for voice call
*/
void SetVoiceCallDefaultL( MVPbkStoreContact* aContact );
+
+ /**
+ * Set contact
+ */
+ void SetContact( MVPbkStoreContact* aContact );
public:
@@ -323,7 +328,14 @@
/// Array to keep a list of installed xSP stores. Owned.
CDesCArrayFlat ixSPStoresArray;
/// Default setting handle
- CmsSetVoiceCallDefault* iSetDefault;
+ CmsSetVoiceCallDefault* iSetDefault;
+ // Current contact, not Owned
+ MVPbkStoreContact* iContact;
+ // ETrue, if the current activated contact store ready
+ TBool iCurrentContactStoreReady;
+ // Completed stores
+ RPointerArray<HBufC> iReadyStores;
+
};
#endif //__CMSPHONEBOOKPROXY__
--- a/ccservices/cmsservices/cmsengine/Server/src/cmsphonebookproxy.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/ccservices/cmsservices/cmsengine/Server/src/cmsphonebookproxy.cpp Tue May 11 16:00:21 2010 +0300
@@ -41,6 +41,7 @@
#include "cmsfindlinkedcontact.h"
#include <MVPbkContactLink.h>
+#include <MVPbkStoreContact.h>
// CONSTANTS
const TInt KArrayGranularity = 2;
@@ -111,7 +112,8 @@
iStoreConfiguration = NULL;
}
iObserverArray.Close();
- ixSPStoresArray.Reset();
+ ixSPStoresArray.Reset();
+ iReadyStores.ResetAndDestroy();
delete iSetDefault;
}
@@ -122,7 +124,7 @@
//
TBool CCmsPhonebookProxy::StoreOpenStatus()
{
- if(iAtLeastOneStoreReady && iOpenComplete)
+ if( iAtLeastOneStoreReady && iOpenComplete && iCurrentContactStoreReady )
{
return ETrue;
}
@@ -138,8 +140,11 @@
void CCmsPhonebookProxy::InitStoresL()
{
PRINT ( _L("Start CCmsPhonebookProxy::InitStoresL()") );
+
if( !iOpenComplete )
{
+ iCurrentContactStoreReady = EFalse;
+ iReadyStores.ResetAndDestroy();
iStoreList->OpenAllL( *this );
}
PRINT ( _L("End CCmsPhonebookProxy::InitStoresL()") );
@@ -414,6 +419,47 @@
}
// ----------------------------------------------------------
+// CCmsPhonebookProxy::SetContact
+//
+// ----------------------------------------------------------
+//
+void CCmsPhonebookProxy::SetContact( MVPbkStoreContact* aContact )
+ {
+ iContact = aContact;
+
+ if( !iCurrentContactStoreReady && iContact )
+ {
+ for( TInt x=0; x<iReadyStores.Count(); x++ )
+ {
+ if( iReadyStores[x]->Des().CompareC(
+ iContact->ContactStore().StoreProperties().Uri().UriDes() ) == 0 )
+ {
+
+ iCurrentContactStoreReady = ETrue;
+ iCmsPhonebookOperationsObserver.StoreOpenComplete();
+ break;
+ }
+ }
+ }
+ // Check in case the contact has changed
+ else if( iCurrentContactStoreReady && iContact )
+ {
+ iCurrentContactStoreReady = EFalse;
+
+ for( TInt x=0; x<iReadyStores.Count(); x++ )
+ {
+ if( iReadyStores[x]->Des().Compare(
+ iContact->ContactStore().StoreProperties().Uri().UriDes() ) == 0 )
+ {
+ // Contact found from ready stores
+ iCurrentContactStoreReady = ETrue;
+ break;
+ }
+ }
+ }
+ }
+
+// ----------------------------------------------------------
// CCmsPhonebookProxy::ExternalStoresIntalled
//
// ----------------------------------------------------------
@@ -442,9 +488,10 @@
{
PRINT( _L("Start CCmsPhonebookProxy::OpenComplete()" ) );
iOpenComplete = ETrue;
- if ( iAtLeastOneStoreReady )
- {
+ if ( iAtLeastOneStoreReady && !iCurrentContactStoreReady )
+ {
iCmsPhonebookOperationsObserver.StoreOpenComplete();
+ iCurrentContactStoreReady = ETrue;
}
PRINT( _L("End CCmsPhonebookProxy::OpenComplete()" ) );
}
@@ -518,6 +565,7 @@
//
void CCmsPhonebookProxy::StoreReady( MVPbkContactStore& aContactStore )
{
+
PRINT1( _L( "CCmsPhonebookProxy::StoreReady(): Store: %S" ), (&aContactStore.StoreProperties().Uri().UriDes()) );
//Set iAtLeastOneStoreReady to ETrue to indicate that
//at least one store is available
@@ -527,6 +575,20 @@
{
iContactStore = &aContactStore;
}
+
+ TRAP_IGNORE(
+ {
+ HBufC* buf = aContactStore.StoreProperties().Uri().UriDes().AllocLC();
+ iReadyStores.AppendL( buf );
+ CleanupStack::Pop( buf );
+ } );
+
+ if( iContact && iContact->ContactStore().StoreProperties().Uri().UriDes().Compare(
+ aContactStore.StoreProperties().Uri().UriDes() ) == 0 && !iCurrentContactStoreReady )
+ {
+ iCurrentContactStoreReady = ETrue;
+ iCmsPhonebookOperationsObserver.StoreOpenComplete();
+ }
}
// ----------------------------------------------------------
@@ -604,7 +666,7 @@
// Support all contact stores, not only those defined by phonebook2 setting
iUriList = iStoreConfiguration->SupportedStoreConfigurationL();
-
+
ixSPStoresArray.Reset();
FindXSPStoresL( ixSPStoresArray );
@@ -746,7 +808,7 @@
ResetData();
CompleteContactRequestL( aError, NULL );
- iCmsPhonebookOperationsObserver.CmsSingleContactOperationComplete( aError );
+ iCmsPhonebookOperationsObserver.CmsSingleContactOperationComplete( aError );
}
--- a/ccservices/cmsservices/cmsengine/Server/src/cmsservercontact.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/ccservices/cmsservices/cmsengine/Server/src/cmsservercontact.cpp Tue May 11 16:00:21 2010 +0300
@@ -103,7 +103,7 @@
CCmsServerContact::~CCmsServerContact()
{
PRINT( _L( "Start CCmsServerContact::~CCmsServerContact()" ) );
-
+
iCmsServer.PhonebookProxyHandle().RemoveObserver( this );
if ( iPresenceNotifySubscribed && iContactLink )
@@ -117,12 +117,16 @@
iChatHandler->UnsubscribeBrandingForContact( iContactLink, this );
}
}
+ delete iContact;
+ iContact = NULL;
+
+ iCmsServer.PhonebookProxyHandle().SetContact( iContact );
+
delete iStoreUri;
delete iChatHandler;
delete iVoipHandler;
delete iXSPContactHandler;
- delete iContactLink;
- delete iContact;
+ delete iContactLink;
delete iCachedField8;
delete iAsyncContact;
delete iCachedField16;
@@ -227,6 +231,7 @@
PRINT( _L( "CCmsServerContact::OfferContactEventL(): Contact deleted, invalidate this subsession" ) );
delete iContact;
iContact = NULL;
+ iCmsServer.PhonebookProxyHandle().SetContact( iContact );
iContactDeleted = ETrue;
}
else
@@ -642,6 +647,8 @@
CreateContactLinkArrayL();
uri.Set( aContact->ParentStore().StoreProperties().Uri().UriDes() );
ParseContactStore( uri );
+
+ iCmsServer.PhonebookProxyHandle().SetContact( iContact );
}
}
--- a/contacts_plat/cca_view_plugin_api/inc/ccappviewpluginaknview.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/cca_view_plugin_api/inc/ccappviewpluginaknview.h Tue May 11 16:00:21 2010 +0300
@@ -19,8 +19,8 @@
#define CCAPPVIEWPLUGINAKNVIEW_H
#ifndef __CCAPPUTILUNITTESTMODE
-#include <AknView.h>
-#include <coneresloader.h>
+#include <aknview.h>
+#include <ConeResLoader.h>
#endif //__CCAPPUTILUNITTESTMODE
class CCCAppViewPluginAknContainer;
--- a/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2ApplicationServices.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2ApplicationServices.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
-#include <vpbkvariant.hrh> // for TVPbkLocalVariantFlags
+#include <VPbkVariant.hrh> // for TVPbkLocalVariantFlags
// FORWARD DECLARATIONS
class CVPbkContactManager;
--- a/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2StartupObserver.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2StartupObserver.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32def.h>
-#include <mpbk2startupmonitor.h>
+#include <MPbk2StartupMonitor.h>
// CLASS DECLARATION
--- a/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2ViewExplorer.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_common_ui_api/inc/MPbk2ViewExplorer.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <pbk2viewid.hrh>
+#include <Pbk2ViewId.hrh>
#include <vwsdef.h> // TVwsViewId
// FORWARD DECLARATIONS
--- a/contacts_plat/phonebook_2_presentation_api/inc/MPbk2ContactNameFormatter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_presentation_api/inc/MPbk2ContactNameFormatter.h Tue May 11 16:00:21 2010 +0300
@@ -53,7 +53,10 @@
/// characters with space character
EReplaceNonGraphicChars = 0x0004,
/// Formatter to retain all original space characters
- EPreserveAllOriginalSpaces = 0x0008
+ EPreserveAllOriginalSpaces = 0x0008,
+ /// Formatter by default uses coma separator
+ /// for separating company name
+ EDisableCompanyNameSeparator = 0x0010
};
/**
--- a/contacts_plat/phonebook_2_presentation_api/inc/MPbk2FieldProperty.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_presentation_api/inc/MPbk2FieldProperty.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDE FILES
#include <e32def.h>
-#include <pbk2fieldproperty.hrh>
+#include <Pbk2FieldProperty.hrh>
// FORWARD DECLARATIONS
class MVPbkFieldType;
--- a/contacts_plat/phonebook_2_ui_controls_api/inc/MPbk2ContactEditorControl.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_controls_api/inc/MPbk2ContactEditorControl.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define MPBK2CONTACTEDITORCONTROL_H
// INCLUDES
-#include <pbk2fieldproperty.hrh> // TPbk2FieldCtrlType
+#include <Pbk2FieldProperty.hrh> // TPbk2FieldCtrlType
// FORWARD DECLATIONS
class MPbk2ContactEditorField;
--- a/contacts_plat/phonebook_2_ui_controls_api/inc/MPbk2ContactEditorEventObserver.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_controls_api/inc/MPbk2ContactEditorEventObserver.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32std.h>
-#include <mvpbkcontactobserver.h>
+#include <MVPbkContactObserver.h>
// CLASS DECLARATION
--- a/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2AppUiExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2AppUiExtension.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define MPBK2APPUIEXTENSION_H
// INCLUDES
-#include <mpbk2uireleasable.h>
+#include <MPbk2UiReleasable.h>
// FORWARD DECLARATIONS
class MPbk2StartupMonitor;
--- a/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2ContactEditorExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2ContactEditorExtension.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,8 @@
#define MPBK2CONTACTEDITOREXTENSION_H
// INCLUDES
-#include <mpbk2uireleasable.h>
-#include <mpbk2contacteditoreventobserver.h>
+#include <MPbk2UiReleasable.h>
+#include <MPbk2ContactEditorEventObserver.h>
// FORWARD DECLARATIONS
class MVPbkStoreContactField;
--- a/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2ContactUiControlExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2ContactUiControlExtension.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,8 @@
#define MPBK2CONTACTUICONTROLEXTENSION_H
// INCLUDES
-#include <tpbk2iconid.h>
-#include <mpbk2uireleasable.h>
+#include <TPbk2IconId.h>
+#include <MPbk2UiReleasable.h>
// FORWARD DECLARATIONS
class MVPbkViewContact;
--- a/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2SettingsViewExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/phonebook_2_ui_extension_api/inc/MPbk2SettingsViewExtension.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define MPBK2SETTINGSVIEWEXTENSION_H
// INCLUDES
-#include <mpbk2uireleasable.h>
+#include <MPbk2UiReleasable.h>
// FORWARD DECLARATIONS
class MPbk2SettingsControlExtension;
--- a/contacts_plat/predictivesearch_utils_api/inc/CPcsDefs.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/predictivesearch_utils_api/inc/CPcsDefs.h Tue May 11 16:00:21 2010 +0300
@@ -128,7 +128,7 @@
const TUid KPcsAlgorithm1 = { 0x2000B5BE };
const TUid KPsDataStoreInterfaceUid = { 0x2000B5C0 };
-const TInt KLinksToFetchInOneGo = 500;
+const TInt KLinksToFetchInOneGo = 20;
/**
* Max number of supported languages for Key Map
--- a/contacts_plat/virtual_phonebook_copy_policy_api/inc/phonebook/CVPbkContactCopyPolicy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_copy_policy_api/inc/phonebook/CVPbkContactCopyPolicy.h Tue May 11 16:00:21 2010 +0300
@@ -30,7 +30,7 @@
// INCLUDES
#include <e32std.h>
#include <ecom/ecom.h>
-#include <mvpbkcontactcopypolicy.h>
+#include <MVPbkContactCopyPolicy.h>
// FORWARD DECLARATIONS
class CVPbkContactManager;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactFieldIterator.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactFieldIterator.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkstorecontactfield.h>
+#include <MVPbkStoreContactField.h>
// FORWARD DECLARATIONS
class MVPbkStoreContactFieldCollection;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactLinkArray.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactLinkArray.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkcontactlinkarray.h>
+#include <MVPbkContactLinkArray.h>
// FORWARD DECLARATIONS
class MVPbkContactStoreList;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactManager.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkContactManager.h Tue May 11 16:00:21 2010 +0300
@@ -27,7 +27,7 @@
#include <e32base.h>
#include <f32file.h>
#include <bamdesca.h>
-#include <BADESCA.H>
+#include <badesca.h>
// FORWARD DECLARATIONS
class MVPbkFieldTypeList;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkDefaultAttribute.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkDefaultAttribute.h Tue May 11 16:00:21 2010 +0300
@@ -21,10 +21,10 @@
// INCLUDE FILES
#include <e32base.h>
-#include <mvpbkcontactattribute.h>
-#include <mvpbkcontactattributemanager.h>
-#include <vpbkpublicuid.h>
-#include <vpbkfieldtype.hrh>
+#include <MVPbkContactAttribute.h>
+#include <MVPbkContactAttributeManager.h>
+#include <VPbkPublicUID.h>
+#include <VPbkFieldType.hrh>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldFilter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldFilter.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkstorecontactfieldcollection.h>
+#include <MVPbkStoreContactFieldCollection.h>
// FORWARD DECLARATIONS
class MVPbkContactFieldSelector;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldTypeRefsList.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldTypeRefsList.h Tue May 11 16:00:21 2010 +0300
@@ -23,7 +23,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkfieldtype.h>
+#include <MVPbkFieldType.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldTypeSelector.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFieldTypeSelector.h Tue May 11 16:00:21 2010 +0300
@@ -22,10 +22,10 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkcontactfieldselector.h>
-#include <mvpbkfieldtypeselector.h>
-#include <vpbkfieldtype.hrh>
-#include <tvpbkfieldtypeparameters.h>
+#include <MVPbkContactFieldSelector.h>
+#include <MVPbkFieldTypeSelector.h>
+#include <VPbkFieldType.hrh>
+#include <TVPbkFieldTypeParameters.h>
// FORWARD DECLARATIONS
class TVPbkFieldVersitProperty;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFilteredContactView.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkFilteredContactView.h Tue May 11 16:00:21 2010 +0300
@@ -21,9 +21,9 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkcontactviewbase.h>
-#include <mvpbkcontactviewobserver.h>
-#include <mvpbkcontactviewfiltering.h>
+#include <MVPbkContactViewBase.h>
+#include <MVPbkContactViewObserver.h>
+#include <MVPbkContactViewFiltering.h>
// FORWARD DECLARATIONS
namespace VPbkEngUtils { class CVPbkAsyncOperation; }
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkPhoneNumberMatchStrategy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkPhoneNumberMatchStrategy.h Tue May 11 16:00:21 2010 +0300
@@ -21,8 +21,8 @@
// INCLUDE FILES
#include <e32base.h>
-#include <mvpbkcontactfindobserver.h>
-#include <mvpbkcontactstorelist.h>
+#include <MVPbkContactFindObserver.h>
+#include <MVPbkContactStoreList.h>
// FORWARD DECLARATIONS
class CVPbkContactManager;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkSortOrder.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkSortOrder.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkfieldtype.h>
+#include <MVPbkFieldType.h>
// FORWARD DECLARATIONS
class TResourceReader;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkSpeedDialAttribute.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkSpeedDialAttribute.h Tue May 11 16:00:21 2010 +0300
@@ -21,9 +21,9 @@
// INCLUDE FILES
#include <e32base.h>
-#include <mvpbkcontactattribute.h>
-#include <mvpbkcontactattributemanager.h>
-#include <vpbkpublicuid.h>
+#include <MVPbkContactAttribute.h>
+#include <MVPbkContactAttributeManager.h>
+#include <VPbkPublicUid.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkVoiceTagAttribute.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/CVPbkVoiceTagAttribute.h Tue May 11 16:00:21 2010 +0300
@@ -21,10 +21,10 @@
// INCLUDE FILES
#include <e32base.h>
-#include <mvpbkcontactattribute.h>
-#include <mvpbkcontactattributemanager.h>
-#include <vpbkpublicuid.h>
-#include <vpbkfieldtype.hrh>
+#include <MVPbkContactAttribute.h>
+#include <MVPbkContactAttributeManager.h>
+#include <VPbkPublicUid.h>
+#include <VPbkFieldType.hrh>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkBaseContactField.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkBaseContactField.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32cmn.h>
#include <e32std.h>
-#include <mvpbkobjecthierarchy.h>
+#include <MVPbkObjectHierarchy.h>
// FORWARD DECLARATIONS
class MVPbkBaseContact;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldBinaryData.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldBinaryData.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define MVPBKCONTACTFIELDBINARYDATA_H
// INCLUDES
-#include <mvpbkcontactfielddata.h>
+#include <MVPbkContactFieldData.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldData.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldData.h Tue May 11 16:00:21 2010 +0300
@@ -24,7 +24,7 @@
// INCLUDES
#include <e32cmn.h>
#include <e32std.h>
-#include <vpbkfieldtype.hrh>
+#include <VPbkFieldType.hrh>
// CONSTANTS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldDateTimeData.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldDateTimeData.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
#define MVPBKCONTACTFIELDDATETIMEDATA_H
// INCLUDES
-#include <mvpbkcontactfielddata.h>
+#include <MVPbkContactFieldData.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldTextData.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldTextData.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
-#include <mvpbkcontactfielddata.h>
+#include <MVPbkContactFieldData.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldUriData.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFieldUriData.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
-#include <mvpbkcontactfielddata.h>
+#include <MVPbkContactFieldData.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFindFromStoresObserver.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFindFromStoresObserver.h Tue May 11 16:00:21 2010 +0300
@@ -24,7 +24,7 @@
#include <e32def.h>
// included here, instead of forward declared, so that clients
// dont delete an incomplete class.
-#include <mvpbkcontactlinkarray.h>
+#include <MVPbkContactLinkArray.h>
class MVPbkContactStore;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFindObserver.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactFindObserver.h Tue May 11 16:00:21 2010 +0300
@@ -24,7 +24,7 @@
#include <e32base.h>
// included here, instead of forward declared, so that clients
// don't delete an incomplete class.
-#include <mvpbkcontactlinkarray.h>
+#include <MVPbkContactLinkArray.h>
/**
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactGroup.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactGroup.h Tue May 11 16:00:21 2010 +0300
@@ -22,8 +22,8 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkstorecontact.h>
-#include <mvpbkstorecontact2.h>
+#include <MVPbkStoreContact.h>
+#include <MVPbkStoreContact2.h>
// FORWARD DECLARATIONS
class MVPbkContactLinkArray;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactLink.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactLink.h Tue May 11 16:00:21 2010 +0300
@@ -23,7 +23,7 @@
// INCLUDES
#include <e32cmn.h>
#include <e32std.h>
-#include <cvpbkcontactlinkarray.h>
+#include <CVPbkContactLinkArray.h>
// FORWARD DECLARATIONS
class TVPbkContactStoreUriPtr;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactOperation.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactOperation.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define MVPBKCONTACTOPERATION_H
// INCLUDES
-#include "mvpbkcontactoperationbase.h"
+#include "MVPbkContactOperationBase.h"
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactOperationFactory2.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactOperationFactory2.h Tue May 11 16:00:21 2010 +0300
@@ -23,7 +23,7 @@
// INCLUDES
#include <e32cmn.h>
#include <bamdesca.h>
-#include <BADESCA.H>
+#include <badesca.h>
// FORWARD DECLARATIONS
class MVPbkContactOperation;
class MVPbkContactLink;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactSelector.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactSelector.h Tue May 11 16:00:21 2010 +0300
@@ -58,6 +58,33 @@
};
+// Use this UID to access MVPbkOptimizedSelector extension of the MVPbkContactSelector.
+// Used as a parameter to ContactSelectorExtension() method.
+const TUid KVPbkOptimizedSelectorExtensionUid = { 2 };
+
+/**
+ * This class is an extension to MVPbkContactSelector.
+ * See documentation of MVPbkContactSelector from header MVPbkContactSelector.h
+ *
+ * @see MVPbkContactSelector
+ *
+ */
+class MVPbkOptimizedSelector
+ {
+ protected: // Destructor
+ virtual ~MVPbkOptimizedSelector() { }
+
+ public:
+
+ /**
+ * Vpbk stop calling MVPbkContactSelector::IsContactIncluded if this function returns false.
+ * With this function client can optimize selector use in VPbk.
+ */
+ virtual TBool Continue() const = 0;
+
+ };
+
+
#endif // MVPBKCONTACTSELECTOR_H
//End of file
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStore.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStore.h Tue May 11 16:00:21 2010 +0300
@@ -21,8 +21,8 @@
// INCLUDES
#include <e32def.h>
-#include <mvpbkobjecthierarchy.h>
-#include <mvpbkcontactoperationfactory.h>
+#include <MVPbkObjectHierarchy.h>
+#include <MVPbkContactOperationFactory.h>
// FORWARD DECLARATIONS
class CVPbkContactViewDefinition;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStoreListObserver.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStoreListObserver.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
-#include <mvpbkcontactstoreobserver.h>
+#include <MVPbkContactStoreObserver.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStoreProperties.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactStoreProperties.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32cmn.h>
-#include <tvpbkcontactstoreuriptr.h>
+#include <TVPbkContactStoreUriPtr.h>
// FORWARD DECLARATIONS
class MVPbkFieldTypeList;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactView.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactView.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,8 @@
#define MVPBKCONTACTVIEW_H
// INCLUDES
-#include <mvpbkcontactviewbase.h>
-#include <mvpbkobjecthierarchy.h>
+#include <MVPbkContactViewBase.h>
+#include <MVPbkObjectHierarchy.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactViewBase.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactViewBase.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32cmn.h>
-#include <vpbkcontactview.hrh>
+#include <VPbkContactView.hrh>
#include <bamdesca.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactViewBaseChildAccessExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkContactViewBaseChildAccessExtension.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32cmn.h>
-#include <vpbkcontactview.hrh>
+#include <VPbkContactView.hrh>
#include <bamdesca.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkFieldType.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkFieldType.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
-#include <vpbkfieldtype.hrh>
+#include <VPbkFieldType.hrh>
// FORWARD DECLARATIONS
class TVPbkFieldVersitProperty;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContact.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContact.h Tue May 11 16:00:21 2010 +0300
@@ -22,11 +22,11 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkbasecontact.h>
-#include <mvpbkviewcontact.h>
+#include <MVPbkBaseContact.h>
+#include <MVPbkViewContact.h>
// Includes needed for covariant return types
-#include <mvpbkstorecontactfieldcollection.h>
+#include <MVPbkStoreContactFieldCollection.h>
// FORWARD DECLARATIONS
class MVPbkContactStore;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContactField.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContactField.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
// INCLUDES
#include <e32std.h>
-#include <mvpbkbasecontactfield.h>
+#include <MVPbkBaseContactField.h>
// CONSTANTS
/// A constant that indicates that the store doesn't set limits
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContactFieldCollection.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkStoreContactFieldCollection.h Tue May 11 16:00:21 2010 +0300
@@ -22,10 +22,10 @@
// INCLUDES
#include <e32def.h>
-#include <mvpbkbasecontactfieldcollection.h>
+#include <MVPbkBaseContactFieldCollection.h>
// Includes needed for covariant return types
-#include <mvpbkstorecontactfield.h>
+#include <MVPbkStoreContactField.h>
// FORWARD DECLARATIONS
class MVPbkStoreContact;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContact.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContact.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32def.h>
-#include <mvpbkbasecontact.h>
+#include <MVPbkBaseContact.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContactField.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContactField.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
-#include <mvpbkbasecontactfield.h>
+#include <MVPbkBaseContactField.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContactFieldCollection.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkViewContactFieldCollection.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32def.h>
-#include <mvpbkbasecontactfieldcollection.h>
+#include <MVPbkBaseContactFieldCollection.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/RVPbkContactFieldDefaultPriorities.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/RVPbkContactFieldDefaultPriorities.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32std.h>
-#include <vpbkfieldtype.hrh> // TVPbkDefaultType
+#include <VPbkFieldType.hrh> // TVPbkDefaultType
// CONSTANTS
namespace VPbkContactFieldDefaultPriorities
--- a/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkContactStoreUriPtr.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkContactStoreUriPtr.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
-#include <mvpbkstreamable.h>
+#include <MVPbkStreamable.h>
// CLASS DECLARATIONS
--- a/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldTypeMapping.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldTypeMapping.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,8 @@
#ifndef TVPBKFIELDTYPEMAPPING_H
#define TVPBKFIELDTYPEMAPPING_H
-#include <vpbkfieldtype.hrh>
-#include <tvpbkfieldversitproperty.h>
+#include <VPbkFieldType.hrh>
+#include <TVPbkFieldVersitProperty.h>
class MVPbkFieldType;
class MVPbkFieldTypeList;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldTypeParameters.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldTypeParameters.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
-#include <vpbkfieldtype.hrh>
+#include <VPbkFieldType.hrh>
// FORWARD DECLARATIONS
class TResourceReader;
--- a/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldVersitProperty.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkFieldVersitProperty.h Tue May 11 16:00:21 2010 +0300
@@ -22,8 +22,8 @@
// INCLUDES
#include <e32std.h>
-#include <vpbkfieldtype.hrh>
-#include <tvpbkfieldtypeparameters.h>
+#include <VPbkFieldType.hrh>
+#include <TVPbkFieldTypeParameters.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_migration_support_api/inc/CVPbkContactIdConverter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_migration_support_api/inc/CVPbkContactIdConverter.h Tue May 11 16:00:21 2010 +0300
@@ -24,7 +24,7 @@
// INCLUDE FILES
#include <e32base.h>
-#include <vpbkpublicuid.h>
+#include <VPbkPublicUid.h>
#include <ecom/ecom.h>
// FORWARD DECLARATIONS
--- a/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactDuplicatePolicy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactDuplicatePolicy.h Tue May 11 16:00:21 2010 +0300
@@ -22,8 +22,8 @@
// INCLUDES
#include <e32base.h>
#include <ecom/ecom.h>
-#include <mvpbkcontactduplicatepolicy.h>
-#include <vpbkpolicyuid.h>
+#include <MVPbkContactDuplicatePolicy.h>
+#include <VPbkPolicyUid.h>
// FORWARD DECLARATIONS
class CVPbkContactManager;
--- a/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactFindPolicy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactFindPolicy.h Tue May 11 16:00:21 2010 +0300
@@ -23,8 +23,8 @@
#include <e32std.h>
#include <ecom/ecom.h>
-#include <vpbkpolicyuid.h>
-#include <mvpbkcontactfindpolicy.h>
+#include <VPbkPolicyUid.h>
+#include <MVPbkContactFindPolicy.h>
// FORWARD DECLARATIONS
class MVPbkFieldTypeList;
--- a/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactNameConstructionPolicy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactNameConstructionPolicy.h Tue May 11 16:00:21 2010 +0300
@@ -24,8 +24,8 @@
#include <e32std.h>
#include <ecom/ecom.h>
-#include <vpbkpolicyuid.h>
-#include <mvpbkcontactnameconstructionpolicy.h>
+#include <VPbkPolicyUid.h>
+#include <MVPbkContactNameConstructionPolicy.h>
// FORWARD DECLARATIONS
class MVPbkFieldTypeList;
--- a/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactViewSortPolicy.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_policy_api/inc/phonebook/CVPbkContactViewSortPolicy.h Tue May 11 16:00:21 2010 +0300
@@ -21,8 +21,8 @@
#define CVPBKCONTACTVIEWSORTPOLICY_H
#include <ecom/ecom.h>
-#include <vpbkpolicyuid.h>
-#include <mvpbkcontactviewsortpolicy.h>
+#include <VPbkPolicyUid.h>
+#include <MVPbkContactViewSortPolicy.h>
class CVPbkContactManager;
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkBatchOperation.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkBatchOperation.h Tue May 11 16:00:21 2010 +0300
@@ -23,8 +23,8 @@
#define CVPBKBATCHOPERATION_H
// INCLUDE FILES
-#include <cvpbkmulticontactoperationbase.h>
-#include <mvpbkbatchoperationobserver.h>
+#include <CVPbkMultiContactOperationBase.h>
+#include <MVPbkBatchOperationObserver.h>
// CLASS DECLARATION
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactAttributePlugin.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactAttributePlugin.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES FILES
#include <ecom/ecom.h>
-#include <mvpbkcontactattributemanager.h>
+#include <MVPbkContactAttributeManager.h>
// FORWARD DECLARATIONS
class CVPbkContactManager;
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactFindFromStoresOperation.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactFindFromStoresOperation.h Tue May 11 16:00:21 2010 +0300
@@ -19,8 +19,8 @@
#ifndef CVPBKCONTACTFINDFROMSTORESOPERATION_H
#define CVPBKCONTACTFINDFROMSTORESOPERATION_H
-#include <cvpbkmulticontactoperationbase.h>
-#include <mvpbkcontactfindfromstoresobserver.h>
+#include <CVPbkMultiContactOperationBase.h>
+#include <MVPbkContactFindFromStoresObserver.h>
/**
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactFindOperation.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactFindOperation.h Tue May 11 16:00:21 2010 +0300
@@ -22,8 +22,8 @@
#define CVPBKCONTACTFINDOPERATION_H
// INCLUDE FILES
-#include <cvpbkmulticontactoperationbase.h>
-#include <mvpbkcontactfindobserver.h>
+#include <CVPbkMultiContactOperationBase.h>
+#include <MVPbkContactFindObserver.h>
class CVPbkContactLinkArray;
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreDomain.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreDomain.h Tue May 11 16:00:21 2010 +0300
@@ -29,9 +29,9 @@
// INCLUDES
#include <ecom/ecom.h>
-#include "mvpbkcontactstorelist.h"
-#include "mvpbkcontactoperationfactory.h"
-#include "mvpbkcontactoperationfactory2.h"
+#include "MVPbkContactStoreList.h"
+#include "MVPbkContactOperationFactory.h"
+#include "MVPbkContactOperationFactory2.h"
// FORWARD DECLARATIONS
class TVPbkContactStoreUriPtr;
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreList.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreList.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,8 @@
#define CVPBKCONTACTSTORELIST_H
#include <e32base.h>
-#include <mvpbkcontactstorelist.h>
-#include <mvpbkcontactstoreobserver.h>
+#include <MVPbkContactStoreList.h>
+#include <MVPbkContactStoreObserver.h>
class TVPbkContactStoreUriPtr;
class CVPbkContactStoreUriArray;
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreProperties.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkContactStoreProperties.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkcontactstoreproperties.h>
+#include <MVPbkContactStoreProperties.h>
// FORWARD DECLARATION
--- a/contacts_plat/virtual_phonebook_store_api/inc/CVPbkMultiContactOperationBase.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_store_api/inc/CVPbkMultiContactOperationBase.h Tue May 11 16:00:21 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32base.h>
-#include <mvpbkcontactoperation.h>
+#include <MVPbkContactOperation.h>
// CLASS DECLARATION
/**
--- a/contacts_plat/virtual_phonebook_view_definition_api/inc/CVPbkContactViewDefinition.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_view_definition_api/inc/CVPbkContactViewDefinition.h Tue May 11 16:00:21 2010 +0300
@@ -20,7 +20,7 @@
#define CVPBKCONTACTVIEWDEFINITION_H
#include <e32base.h>
-#include <vpbkcontactview.hrh>
+#include <VPbkContactView.hrh>
class TResourceReader;
class CVPbkFieldTypeSelector;
--- a/contacts_plat/virtual_phonebook_view_definition_api/inc/VPbkContactViewFilterBuilder.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_plat/virtual_phonebook_view_definition_api/inc/VPbkContactViewFilterBuilder.h Tue May 11 16:00:21 2010 +0300
@@ -21,7 +21,7 @@
// INCLUDES
#include <e32base.h>
-#include <vpbkcontactview.hrh>
+#include <VPbkContactView.hrh>
// FORWARD DECLARATIONS
class CVPbkFieldTypeSelector;
--- a/contacts_pub/speed_dial_utility_control_api/inc/SpdiaControl.h Tue Apr 27 16:23:35 2010 +0300
+++ b/contacts_pub/speed_dial_utility_control_api/inc/SpdiaControl.h Tue May 11 16:00:21 2010 +0300
@@ -25,7 +25,7 @@
// INCLUDES
#include <coecntrl.h>
#include <TPbkContactItemField.h>
-#include <aknutils.h>
+#include <AknUtils.h>
#include <MPbkContactDbObserver.h>
#include <MPbkThumbnailOperationObservers.h>
--- a/logsui/AppSrc/CLogsBaseView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/logsui/AppSrc/CLogsBaseView.cpp Tue May 11 16:00:21 2010 +0300
@@ -1743,10 +1743,11 @@
CleanupStack::PopAndDestroy(); //readerConfig
contactCheckerPtr->StartL();
- if ( !MenuBar()->ItemSpecificCommandsEnabled() )
- {
- iIsCheckedCntLinkInvaild = !contactCheckerPtr->IsCntLinkValidSync( tempPtr );
- }
+ //if ( !MenuBar()->ItemSpecificCommandsEnabled() )
+ // {
+ // iIsCheckedCntLinkInvaild = !contactCheckerPtr->IsCntLinkValidSync( tempPtr );
+ // }
+
}
}
@@ -2891,7 +2892,7 @@
TInt CLogsBaseView::HandleNotifyL(
TInt aCmdId,
TInt aEventId,
- CAiwGenericParamList& /* aEventParamList */,
+ CAiwGenericParamList& aEventParamList,
const CAiwGenericParamList& /* aInParamList */ )
{
//Only EGenericParamContactLinkArray available in aEventParamList so we use iNumberInPbkProcessing instead
@@ -2908,6 +2909,10 @@
// If selecting Options->Exit KAiwEventError will result but the contact may have
// still been created so start updater
case KAiwEventError:
+ {
+ TInt aError = aEventParamList[0].Value().AsTInt32();
+ iCoeEnv->HandleError( aError );
+ }
case KAiwEventCompleted: // Asynch req completed. Right softkey "Done" selected for contact editor
{
//Enable UI for db-originated changes (however focus needs to be kept unchanged)
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CContactStoreInfo.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CContactStoreInfo.h Tue May 11 16:00:21 2010 +0300
@@ -57,6 +57,11 @@
public: // New functions
+ /**
+ * Set iGroupsFetched to false.
+ */
+ void ResetGroupsFetched();
+
public: // Functions from base classes
/**
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CCustomFilteredContactView.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CCustomFilteredContactView.h Tue May 11 16:00:21 2010 +0300
@@ -97,6 +97,7 @@
private: // From MVPbkContactSelector
TBool IsContactIncluded(
const MVPbkBaseContact& aContact );
+ TAny* ContactSelectorExtension( TUid aExtensionUid);
private: // From MContactViewObserver
void HandleContactViewEvent(
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CFindView.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/CFindView.h Tue May 11 16:00:21 2010 +0300
@@ -88,6 +88,7 @@
TInt& aMatchArrayIndex ) const;
void RemoveFromMatchArrayIfFound( const CViewContact& aContact );
TInt FindFromMatchArray( const CViewContact& aContact ) const;
+ void HeapSortL(RPointerArray<CCntModelViewContact> aViewContacts);
private: // Data
/// Own: the find policy
@@ -98,6 +99,21 @@
RPointerArray<CCntModelViewContact> iContactsModelMatchContacts;
};
+// CleanupStack helpers for item owning RPointerArrays
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL(T& aRef)
+ { CleanupStack::PushL(TCleanupItem(&ResetAndDestroy,&aRef)); }
+private:
+ inline static void ResetAndDestroy(TAny *aPtr)
+ { static_cast<T*>(aPtr)->ResetAndDestroy(); }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL(T& aRef)
+ { CleanupResetAndDestroy<T>::PushL(aRef); }
} // namespace VPbkCntModel
#endif // VPBKCNTMODEL_CFINDVIEW_H
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/VPbkCntModelRemoteViewPreferences.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/inc/VPbkCntModelRemoteViewPreferences.h Tue May 11 16:00:21 2010 +0300
@@ -40,7 +40,7 @@
*/
const TContactViewPreferences KVPbkDefaultContactViewPrefs =
static_cast<TContactViewPreferences>
- ( EContactsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField );
+ ( EContactCardsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField );
/**
* Virtual Phonebook Cntmodel all groups view remote view name.
@@ -52,7 +52,7 @@
*/
const TContactViewPreferences KVPbkDefaultGroupsViewPrefs =
static_cast<TContactViewPreferences>
- (EGroupsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField);
+ ( EGroupsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField );
// FUNCTIONS
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CContactStore.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CContactStore.cpp Tue May 11 16:00:21 2010 +0300
@@ -784,14 +784,12 @@
// Release any lock on contact.
if (aContactItem)
{
- // Check that contact store is open
- __ASSERT_DEBUG( iContactDb,
- ContactStorePanic( EPreCond_ContactDestroyed ) );
-
// Cancel async operation if any
iAsyncContactOperation->Cancel( aContactItem );
- if ( aCloseContact )
+ //iContactDb may be already null if store configuration changed by
+ //removing the current store from store configuartion
+ if ( aCloseContact && iContactDb)
{
// CloseContactL doesn't leave despite its name.
iContactDb->CloseContactL(aContactItem->Id());
@@ -917,6 +915,9 @@
iDbNotifier = NULL;
delete iContactDb;
iContactDb = NULL;
+ // Set iGroupsFetched to false.
+ // Make sure iGroupIds is updated again after store is opened again.
+ iStoreInfo->ResetGroupsFetched();
}
}
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CContactStoreInfo.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CContactStoreInfo.cpp Tue May 11 16:00:21 2010 +0300
@@ -125,6 +125,15 @@
}
return iStore.NativeDatabase().GroupCount();
}
+
+// -----------------------------------------------------------------------------
+// CContactStoreInfo::ResetGroupsFetched
+// -----------------------------------------------------------------------------
+//
+void CContactStoreInfo::ResetGroupsFetched()
+ {
+ iGroupsFetched = EFalse;
+ }
} // namespace VPbkCntModel
// End of File
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CCustomFilteredContactView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CCustomFilteredContactView.cpp Tue May 11 16:00:21 2010 +0300
@@ -172,6 +172,19 @@
}
// --------------------------------------------------------------------------
+// CCustomFilteredContactView::ContactSelectorExtension
+// --------------------------------------------------------------------------
+//
+TAny* CCustomFilteredContactView::ContactSelectorExtension( TUid aExtensionUid )
+ {
+ if( iContactSelector )
+ {
+ return iContactSelector->ContactSelectorExtension( aExtensionUid );
+ }
+ return NULL;
+ }
+
+// --------------------------------------------------------------------------
// CCustomFilteredContactView::HandleContactViewEvent
// --------------------------------------------------------------------------
//
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CFindView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CFindView.cpp Tue May 11 16:00:21 2010 +0300
@@ -130,6 +130,7 @@
void CFindView::MatchL(
RPointerArray<CCntModelViewContact>& aMatchedContacts )
{
+ CleanupClosePushL( aMatchedContacts );
iContactsModelMatchContacts.ResetAndDestroy();
VPBK_PROFILE_START(VPbkProfile::ECntModelFind);
@@ -163,6 +164,16 @@
}
else
{
+ // Sort the matched contacts again with the CCompareView::CompareFieldsL
+ // compare function. Mark sure the result of binary search is correct in
+ // function FindFromMatchArray().
+ // See defect ou1cimx1#333760
+ // Title: "Adding contacts (add recipent) issue while creating new message"
+ // Root cause: When contact's first or last name contain blank spaces,
+ // the comparison result may be different between CCompareView::CompareFieldsL
+ // and CntSortPlugin. e.g. "AB" and "A khan"
+ HeapSortL( iContactsModelMatchContacts );
+
// Do it slowly by looping all the parent view contacts.
const TInt contactCount = iParentView.ContactCountL();
for ( TInt i = 0; i < contactCount; ++i )
@@ -176,6 +187,7 @@
}
iContactsModelMatchContacts.ResetAndDestroy();
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
@@ -223,6 +235,7 @@
void CFindView::MatchContactL( const CViewContact& aViewContact,
RPointerArray<CCntModelViewContact>& aMatchedContacts )
{
+ CleanupResetAndDestroyPushL( aMatchedContacts );
// aContact matches if it's one of the always included contacts OR
// if it's one of Contacts Model matched contacts AND it also
// passes our own match.
@@ -256,6 +269,7 @@
aMatchedContacts.AppendL( cnt );
CleanupStack::Pop( cnt );
}
+ CleanupStack::Pop( &aMatchedContacts );
}
// --------------------------------------------------------------------------
@@ -305,5 +319,68 @@
aContact.NativeContact(),
TLinearOrder<CCntModelViewContact>( CCompareView::CompareFieldsL ) );
}
+
+/**
+Heap sort the give view contacts array.
+
+This function only be called one time when some contacts be marked and we input
+the first letter to the FindBox for searching.
+
+@param aContacts the array of view contacts to be sorted.
+@leave leave errors from CCompareView::CompareFieldsL
+*/
+void CFindView::HeapSortL(RPointerArray<CCntModelViewContact> aContacts)
+ {
+ // HeapSort (copied from RPointerArrayBase)
+ TInt ss = aContacts.Count();
+ if ( ss>1 )
+ {
+ TInt sh = ss>>1;
+ FOREVER
+ {
+ CCntModelViewContact* si;
+ if (sh != 0)
+ {
+ // make heap
+ --sh;
+ si = aContacts[sh];
+ }
+ else
+ {
+ // sort heap
+ --ss;
+ si = aContacts[ss];
+ aContacts[ss] = aContacts[0];
+ if (ss == 1)
+ {
+ aContacts[0] = si;
+ break;
+ }
+ }
+
+ // sift down
+ TInt ii = sh;
+ TInt jj = sh;
+ FOREVER
+ {
+ jj = (jj+1)<<1;
+ if ((jj >= ss) || (CCompareView::CompareFieldsL(*(aContacts[jj-1]),*(aContacts[jj])) > 0))
+ {
+ --jj;
+ }
+
+ if ((jj >= ss) || (CCompareView::CompareFieldsL(*(aContacts[jj]),*si) <= 0))
+ {
+ break;
+ }
+
+ aContacts[ii] = aContacts[jj];
+ ii = jj;
+ } //FOREVER
+
+ aContacts[ii] = si;
+ } //FOREVER
+ } //if (ss > 1)
+ }
} // namespace VPbkCntModel
// End of File
--- a/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CRefineView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkCntModel/src/CRefineView.cpp Tue May 11 16:00:21 2010 +0300
@@ -76,6 +76,7 @@
void CRefineView::MatchL(
RPointerArray<CCntModelViewContact>& aMatchedContacts )
{
+ CleanupClosePushL( aMatchedContacts );
if ( iIdleUpdate )
{
iIdleUpdate->Cancel();
@@ -98,6 +99,7 @@
aMatchedContacts.AppendL( nativeContact );
}
}
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
--- a/phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkFilteredContactView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkFilteredContactView.cpp Tue May 11 16:00:21 2010 +0300
@@ -434,6 +434,11 @@
iContactMapping.Reset();
+ MVPbkOptimizedSelector* optimizedSelector =
+ static_cast<MVPbkOptimizedSelector*>(
+ iContactSelector.ContactSelectorExtension(
+ KVPbkOptimizedSelectorExtensionUid ) );
+
const TInt count = iBaseView.ContactCountL();
for (TInt i = 0; i < count; ++i)
{
@@ -441,6 +446,17 @@
{
iContactMapping.AppendL(i);
}
+
+ if( optimizedSelector && !optimizedSelector->Continue() )
+ {
+ // we doesn't need use selector anymore -> include rest of contacts
+ for (TInt j = i+1; j < count; ++j )
+ {
+ iContactMapping.AppendL(j);
+ }
+ break;
+ }
+
}
VPBK_DEBUG_PRINT(VPBK_DEBUG_STRING
@@ -617,6 +633,13 @@
//
TInt CVPbkFilteredContactView::UpdateViewMappingAfterAddingL( TInt aBaseIndex )
{
+ // protect against ghost contacts. Can happen if last of the contacts is
+ // deleted or changed into own card immediately after creation.
+ if ( iBaseView.ContactCountL() <= aBaseIndex )
+ {
+ return KErrNotFound;
+ }
+
// first update the mapping for all elements which > aBaseIndex
TInt filteredIndex;
// find first elemnt which >= aBaseIndex
--- a/phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CFindView.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CFindView.h Tue May 11 16:00:21 2010 +0300
@@ -113,6 +113,22 @@
/// Own: match results (SIM indexes) from native view
RArray<TInt> iSIMMatchedContacts;
};
+
+// CleanupStack helpers for item owning RPointerArrays
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL(T& aRef)
+ { CleanupStack::PushL(TCleanupItem(&ResetAndDestroy,&aRef)); }
+private:
+ inline static void ResetAndDestroy(TAny *aPtr)
+ { static_cast<T*>(aPtr)->ResetAndDestroy(); }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL(T& aRef)
+ { CleanupResetAndDestroy<T>::PushL(aRef); }
} // namespace VPbkSimStore
--- a/phonebookengines/VirtualPhonebook/VPbkSimStore/src/CFindView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkSimStore/src/CFindView.cpp Tue May 11 16:00:21 2010 +0300
@@ -183,6 +183,7 @@
//
void CFindView::MatchL( RPointerArray<MVPbkSimContact>& aMatchedContacts )
{
+ CleanupResetAndDestroyPushL( aMatchedContacts );
if (iAlwaysIncluded.Count() == 0)
{
// No always included contacts. The match can be done using
@@ -232,6 +233,7 @@
// Free the memory
iSIMMatchedContacts.Reset();
+ CleanupStack::Pop( &aMatchedContacts );
}
// --------------------------------------------------------------------------
@@ -307,6 +309,7 @@
const MVPbkContactLink& /*aContactLink*/,
RPointerArray<MVPbkSimContact>& aMatchedContacts )
{
+ CleanupResetAndDestroyPushL( aMatchedContacts );
if ( &iParentView == &aView )
{
const CViewContact& viewContact = static_cast<const CViewContact&>(
@@ -363,6 +366,7 @@
}
}
}
+ CleanupStack::Pop( &aMatchedContacts );
}
// --------------------------------------------------------------------------
@@ -407,6 +411,7 @@
void CFindView::MatchContactL( const CViewContact& aViewContact,
RPointerArray<MVPbkSimContact>& aMatchedContacts )
{
+ CleanupResetAndDestroyPushL( aMatchedContacts );
// aContact matches if it's one of the always included contacts OR
// (if it's one of Contacts Model matched contacts AND it also
// passes our own match).
@@ -445,6 +450,7 @@
CleanupStack::Pop( cnt );
}
}
+ CleanupStack::Pop( &aMatchedContacts );
}
// --------------------------------------------------------------------------
--- a/phonebookengines/VirtualPhonebook/VPbkSimStore/src/CRefineView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkSimStore/src/CRefineView.cpp Tue May 11 16:00:21 2010 +0300
@@ -123,6 +123,7 @@
//
void CRefineView::MatchL( RPointerArray<MVPbkSimContact>& aMatchedContacts )
{
+ CleanupClosePushL( aMatchedContacts );
const TInt contactCount = iParentView.ContactCountL();
for ( TInt i = 0; i < contactCount; ++i )
{
@@ -140,6 +141,7 @@
aMatchedContacts.AppendL( nativeContact );
}
}
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
@@ -150,6 +152,7 @@
TInt aIndex, const MVPbkContactLink& /*aContactLink*/,
RPointerArray<MVPbkSimContact>& aMatchedContacts )
{
+ CleanupClosePushL( aMatchedContacts );
if ( &iParentView == &aView &&
IsMatchL( iParentView.ContactAtL( aIndex )))
{
@@ -198,7 +201,8 @@
{
aMatchedContacts.AppendL( nativeContact );
}
- }
+ }
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
--- a/phonebookengines/VirtualPhonebook/VPbkSimStoreImpl/src/CVPbkETelCntConverter.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/VPbkSimStoreImpl/src/CVPbkETelCntConverter.cpp Tue May 11 16:00:21 2010 +0300
@@ -274,6 +274,7 @@
RPointerArray<CVPbkSimContactBuf>& aResultArray,
TDes8& aETelContactData, MVPbkSimCntStore& aSimStore ) const
{
+ CleanupResetAndDestroyPushL( aResultArray );
iETelBuffer->Set( &aETelContactData );
User::LeaveIfError( StartRead() );
@@ -294,6 +295,7 @@
{
User::Leave( KErrBadDescriptor );
}
+ CleanupStack::Pop( &aResultArray );
}
// -----------------------------------------------------------------------------
--- a/phonebookengines/VirtualPhonebook/inc/CVPbkETelCntConverter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/VirtualPhonebook/inc/CVPbkETelCntConverter.h Tue May 11 16:00:21 2010 +0300
@@ -147,6 +147,22 @@
TInt iMinContactLength;
};
+// CleanupStack helpers for item owning RPointerArrays
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL(T& aRef)
+ { CleanupStack::PushL(TCleanupItem(&ResetAndDestroy,&aRef)); }
+private:
+ inline static void ResetAndDestroy(TAny *aPtr)
+ { static_cast<T*>(aPtr)->ResetAndDestroy(); }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL(T& aRef)
+ { CleanupResetAndDestroy<T>::PushL(aRef); }
+
#endif // CVPBKETELCNTCONVERTER_H
// End of File
--- a/phonebookengines/contactsmodel/cntplsql/src/cpplcommaddrtable.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/contactsmodel/cntplsql/src/cpplcommaddrtable.cpp Tue May 11 16:00:21 2010 +0300
@@ -817,15 +817,22 @@
User::LeaveIfError(TLex(extValString).Val(storedUpperDigits));
TInt32 stored = storedUpperDigits;
- while ( (number != 0) && (stored != 0) &&
- (number % 10 == 0 || stored % 10 == 0) )
+ TBool nonZeroInStoredFound = EFalse;
+ TBool nonZeroInNumberFound = EFalse;
+ while ((number != 0) && (stored != 0))
{
+ nonZeroInNumberFound |= (number % 10 != 0);
+ nonZeroInStoredFound |= (stored % 10 != 0);
+ if (nonZeroInStoredFound && nonZeroInNumberFound)
+ {
+ break;
+ }
number /= 10;
stored /= 10;
}
- if ( (phoneDigits.iUpperDigits == 0) || (storedUpperDigits == 0) ||
- (number == stored) )
+ if ((phoneDigits.iUpperDigits == 0) || (storedUpperDigits == 0) ||
+ (number == stored))
{
phoneMatchArray->AddL(stmnt.ColumnInt(KContactIdIdx));
}
Binary file phonebookengines/contactsmodel/conf/contactsmodel.confml has changed
Binary file phonebookengines/contactsmodel/conf/contactsmodel_10003a73.crml has changed
--- a/phonebookengines/contactsmodel/group/COMMON.INF Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/contactsmodel/group/COMMON.INF Tue May 11 16:00:21 2010 +0300
@@ -47,13 +47,13 @@
// Default View Definition store
../inc/cntviewstore.h SYMBIAN_APP_LAYER_PLATFORM_EXPORT_PATH(cntviewstore.h)
-// Documentation
-../documentation/contacts_connectivityapi.doc /epoc32/engdoc/cntmodel/contacts_connectivityapi.doc
-../documentation/contacts_current_itemapi.doc /epoc32/engdoc/cntmodel/contacts_current_itemapi.doc
-../documentation/contacts_group_supportapi.doc /epoc32/engdoc/cntmodel/contacts_group_supportapi.doc
-../documentation/contacts_multiple_templatesapi.doc /epoc32/engdoc/cntmodel/contacts_multiple_templatesapi.doc
-../documentation/contacts_own_card_supportapi.doc /epoc32/engdoc/cntmodel/contacts_own_card_supportapi.doc
-../documentation/contacts_sorting_view_supportapi.doc /epoc32/engdoc/cntmodel/contacts_sorting_view_supportapi.doc
+// Documentation (not exported until re-contributed to Symbian Foundation)
+// ../documentation/contacts_connectivityapi.doc /epoc32/engdoc/cntmodel/contacts_connectivityapi.doc
+// ../documentation/contacts_current_itemapi.doc /epoc32/engdoc/cntmodel/contacts_current_itemapi.doc
+// ../documentation/contacts_group_supportapi.doc /epoc32/engdoc/cntmodel/contacts_group_supportapi.doc
+// ../documentation/contacts_multiple_templatesapi.doc /epoc32/engdoc/cntmodel/contacts_multiple_templatesapi.doc
+// ../documentation/contacts_own_card_supportapi.doc /epoc32/engdoc/cntmodel/contacts_own_card_supportapi.doc
+// ../documentation/contacts_sorting_view_supportapi.doc /epoc32/engdoc/cntmodel/contacts_sorting_view_supportapi.doc
PRJ_MMPFILES
--- a/phonebookengines/contactsmodel/tsrc/T_CntMatch.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookengines/contactsmodel/tsrc/T_CntMatch.cpp Tue May 11 16:00:21 2010 +0300
@@ -801,9 +801,20 @@
CreateContactL(KCntName,KCntSurname,_L("584443049607"),KNullDesC);
TESTVALUE(CheckPhoneMatchL(_L("4443049607"), KBestMatchingPhoneNumbers),1);
+ ResetDatabaseL();
CreateContactL(KCntName,KCntSurname,_L("401234567"),KNullDesC);
TESTVALUE(CheckPhoneMatchL(_L("2041234567"), KBestMatchingPhoneNumbers),0);
+ ResetDatabaseL();
+ CreateContactL(KCntName,KCntSurname,_L("0401234567"),KNullDesC);
+ CreateContactL(KCntName,KCntSurname,_L("0501234567"),KNullDesC);
+ TESTVALUE(CheckPhoneMatchL(_L("0401234567"), KBestMatchingPhoneNumbers),1);
+
+ ResetDatabaseL();
+ CreateContactL(KCntName,KCntSurname,_L("020421234567"),KNullDesC);
+ CreateContactL(KCntName,KCntSurname,_L("005021234567"),KNullDesC);
+ TESTVALUE(CheckPhoneMatchL(_L("020421234567"), KBestMatchingPhoneNumbers),1);
+
}
/**
--- a/phonebookui/Phonebook/Engine/src/CContactDbConnection.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook/Engine/src/CContactDbConnection.cpp Tue May 11 16:00:21 2010 +0300
@@ -56,7 +56,7 @@
/// Default contact view preferences
const TContactViewPreferences KPbkDefaultContactViewPrefs =
static_cast<TContactViewPreferences>
- (EContactsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField);
+ ( EContactCardsOnly | EUnSortedAtEnd | ESingleWhiteSpaceIsEmptyField );
#ifdef _DEBUG
enum TPanicCode
--- a/phonebookui/Phonebook/View/src/TPbkAddItemManager.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook/View/src/TPbkAddItemManager.cpp Tue May 11 16:00:21 2010 +0300
@@ -90,6 +90,7 @@
const TPbkAddItemWrapper& aItemWrapper,
RArray<TInt>& aAddedItemsControlIds)
{
+ CleanupClosePushL( aAddedItemsControlIds );
aAddedItemsControlIds.Reset();
for (TInt i = 0; i < aItemWrapper.FieldInfoCount(); ++i)
@@ -102,6 +103,7 @@
User::LeaveIfError(aAddedItemsControlIds.Append(field.ControlId()));
}
}
+ CleanupStack::Pop();
}
/**
@@ -113,6 +115,7 @@
const CPbkFieldsInfo& aFieldsInfo,
RArray<TPbkAddItemWrapper>& aAddItems) const
{
+ CleanupClosePushL( aAddItems );
aAddItems.Reset();
const TInt fieldInfoCount = aFieldsInfo.Count();
@@ -161,6 +164,7 @@
}
}
CleanupStack::PopAndDestroy(); // addedGroups
+ CleanupStack::Pop();
}
// End of File
--- a/phonebookui/Phonebook2/Application/inc/CPbk2AppUi.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Application/inc/CPbk2AppUi.h Tue May 11 16:00:21 2010 +0300
@@ -92,11 +92,6 @@
void ExitL();
/**
- * Forces exit.
- */
- void Exit();
-
- /**
* Activates Phonebook view.
*
* @param aViewId Id of the view to activate.
--- a/phonebookui/Phonebook2/Application/src/CPbk2AppUi.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Application/src/CPbk2AppUi.cpp Tue May 11 16:00:21 2010 +0300
@@ -282,15 +282,6 @@
}
// --------------------------------------------------------------------------
-// CPbk2AppUi::Exit
-// --------------------------------------------------------------------------
-//
-void CPbk2AppUi::Exit()
- {
- CPbk2AppUiBase::Exit();
- }
-
-// --------------------------------------------------------------------------
// CPbk2AppUi::ActivatePhonebookViewL
// --------------------------------------------------------------------------
//
--- a/phonebookui/Phonebook2/BWINS/Pbk2UiControlsU.DEF Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/BWINS/Pbk2UiControlsU.DEF Tue May 11 16:00:21 2010 +0300
@@ -120,4 +120,5 @@
?MapVPbkFieldTypeToAddressGroupId@Pbk2AddressTools@@SA?AW4TPbk2FieldGroupId@@PBVMVPbkFieldType@@@Z @ 119 NONAME ; enum TPbk2FieldGroupId Pbk2AddressTools::MapVPbkFieldTypeToAddressGroupId(class MVPbkFieldType const *)
?IsAddressPreviewEmptyL@Pbk2AddressTools@@SAHAAVMVPbkStoreContact@@W4TPbk2FieldGroupId@@@Z @ 120 NONAME ; int Pbk2AddressTools::IsAddressPreviewEmptyL(class MVPbkStoreContact &, enum TPbk2FieldGroupId)
?MassUpdateSkipProgressNote@CPbk2NamesListControl@@QAEXH@Z @ 121 NONAME ; void CPbk2NamesListControl::MassUpdateSkipProgressNote(int)
+ ?SetOpeningCca@CPbk2NamesListControl@@QAEXH@Z @ 122 NONAME ; void CPbk2NamesListControl::SetOpeningCca(int)
--- a/phonebookui/Phonebook2/CommandsExtension/src/CPbk2MergeConflict.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/CommandsExtension/src/CPbk2MergeConflict.cpp Tue May 11 16:00:21 2010 +0300
@@ -235,11 +235,13 @@
RPointerArray<MVPbkStoreContactField>& aAddressFields )
{
__ASSERT_ALWAYS( iFieldFirst && iFieldSecond, Panic( EPbk2NotChosen ) );
+ CleanupClosePushL( aAddressFields );
if ( iChosenField )
{
aAddressFields.AppendL( iChosenField );
}
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
@@ -385,6 +387,7 @@
{
__ASSERT_ALWAYS( iContactChosenAddress, Panic( EPbk2NotChosen ) );
+ CleanupClosePushL( aAddressFields );
CPbk2PresentationContactFieldCollection& fields = iContactChosenAddress->PresentationFields();
for( TInt idx = 0; idx < fields.FieldCount(); idx++ )
@@ -396,5 +399,6 @@
aAddressFields.AppendL( &field );
}
}
+ CleanupStack::Pop();
}
--- a/phonebookui/Phonebook2/CommandsExtension/src/CPbk2MergeContactsCmd.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/CommandsExtension/src/CPbk2MergeContactsCmd.cpp Tue May 11 16:00:21 2010 +0300
@@ -1210,21 +1210,24 @@
//
void CPbk2MergeContactsCmd::SetTitlePaneL( TBool aCustom )
{
- CEikStatusPane* statusPane = iAvkonAppUi->StatusPane();
- if ( statusPane && statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidTitle ) ).IsPresent() )
+ if ( iAvkonAppUi )
{
- CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
- ( statusPane->ControlL ( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
- if ( aCustom )
+ CEikStatusPane* statusPane = iAvkonAppUi->StatusPane();
+ if ( statusPane && statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidTitle ) ).IsPresent() )
{
- HBufC* title = StringLoader::LoadLC( R_QTN_PHOB_TITLE_MERGE_CONTACTS );
- titlePane->SetTextL( *title );
- CleanupStack::PopAndDestroy( title );
- }
- else
- {
- titlePane->SetTextToDefaultL();
+ CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
+ ( statusPane->ControlL ( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+
+ if ( aCustom )
+ {
+ HBufC* title = StringLoader::LoadLC( R_QTN_PHOB_TITLE_MERGE_CONTACTS );
+ titlePane->SetTextL( *title );
+ CleanupStack::PopAndDestroy( title );
+ }
+ else
+ {
+ titlePane->SetTextToDefaultL();
+ }
}
}
}
--- a/phonebookui/Phonebook2/CommonUI/inc/CPbk2NonTopContactSelector.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/CommonUI/inc/CPbk2NonTopContactSelector.h Tue May 11 16:00:21 2010 +0300
@@ -30,7 +30,8 @@
/**
*/
class CPbk2NonTopContactSelector : public CBase,
- public MVPbkContactSelector
+ public MVPbkContactSelector,
+ public MVPbkOptimizedSelector
{
public:
@@ -43,12 +44,17 @@
TBool IsContactIncluded(
const MVPbkBaseContact& aContact );
-
+
+ TAny* ContactSelectorExtension(
+ TUid aExtensionUid);
+
+ private: // From MVPbkOptimizedSelector
+ TBool Continue() const;
+
private:
CPbk2NonTopContactSelector();
- void ConstructL();
private:
- TBool iMyCardSupported;
+ TBool iContinue;
};
--- a/phonebookui/Phonebook2/CommonUI/src/CPbk2NonTopContactSelector.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/CommonUI/src/CPbk2NonTopContactSelector.cpp Tue May 11 16:00:21 2010 +0300
@@ -15,21 +15,20 @@
*
*/
-
#include "CPbk2NonTopContactSelector.h"
#include <MVPbkBaseContact.h>
-#include <featmgr.h>
// Virtual Phonebook
#include <CVPbkTopContactManager.h>
CPbk2NonTopContactSelector* CPbk2NonTopContactSelector::NewL()
{
- CPbk2NonTopContactSelector* self = new (ELeave) CPbk2NonTopContactSelector();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
+ return new (ELeave) CPbk2NonTopContactSelector();
+ }
+
+CPbk2NonTopContactSelector::CPbk2NonTopContactSelector()
+: iContinue(ETrue)
+ {
}
CPbk2NonTopContactSelector::~CPbk2NonTopContactSelector()
@@ -39,41 +38,30 @@
TBool CPbk2NonTopContactSelector::IsContactIncluded(
const MVPbkBaseContact& aContact )
{
- TBool isContactIncluded( !CVPbkTopContactManager::IsTopContact( aContact ) );
-
- if( iMyCardSupported )
- {
- // this is temporary solution to hide own contact from phonebook contacts list,
- // TODO remove this code when we can hide own contact with contact model
-
- MVPbkBaseContact& contact = const_cast<MVPbkBaseContact&>( aContact );
- TAny* extension = contact.BaseContactExtension(
- KVPbkBaseContactExtension2Uid );
+ TBool isContactIncluded(
+ !CVPbkTopContactManager::IsTopContact( aContact ) );
+
+ // Continue until we found first contact that is not top contact
+ // we can stop selector when we found first contact that is not top contact
+ // because top contacts are sorted to top of the contact list.
+ iContinue = !isContactIncluded;
+ return isContactIncluded;
- if( isContactIncluded && extension )
- {
- MVPbkBaseContact2* baseContactExtension =
- static_cast<MVPbkBaseContact2*>( extension );
- TInt error( KErrNone );
- isContactIncluded =
- ( !baseContactExtension->IsOwnContact( error ) );
- }
+ }
+
+TAny* CPbk2NonTopContactSelector::ContactSelectorExtension( TUid aExtensionUid )
+ {
+ if( aExtensionUid == KVPbkOptimizedSelectorExtensionUid )
+ {
+ return static_cast<MVPbkOptimizedSelector*>( this );
}
-
- return isContactIncluded;
+ return NULL;
+ }
+
+TBool CPbk2NonTopContactSelector::Continue() const
+ {
+ return iContinue;
}
-CPbk2NonTopContactSelector::CPbk2NonTopContactSelector()
- {
- }
-
-void CPbk2NonTopContactSelector::ConstructL()
- {
- FeatureManager::InitializeLibL();
- iMyCardSupported =
- FeatureManager::FeatureSupported( KFeatureIdffContactsMycard );
- FeatureManager::UnInitializeLib();
- }
-
// End of File
--- a/phonebookui/Phonebook2/EABI/Pbk2UiControlsU.DEF Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/EABI/Pbk2UiControlsU.DEF Tue May 11 16:00:21 2010 +0300
@@ -202,4 +202,5 @@
_ZN16Pbk2AddressTools22IsAddressPreviewEmptyLER17MVPbkStoreContact17TPbk2FieldGroupId @ 201 NONAME
_ZN16Pbk2AddressTools32MapVPbkFieldTypeToAddressGroupIdEPK14MVPbkFieldType @ 202 NONAME
_ZN21CPbk2NamesListControl26MassUpdateSkipProgressNoteEi @ 203 NONAME
+ _ZN21CPbk2NamesListControl13SetOpeningCcaEi @ 204 NONAME
--- a/phonebookui/Phonebook2/GroupExtension/inc/CPguAddMembersCmd.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/GroupExtension/inc/CPguAddMembersCmd.h Tue May 11 16:00:21 2010 +0300
@@ -211,6 +211,8 @@
MVPbkContactLinkArray* iContactsInGroup;
/// Own: State of the command
TState iState;
+ /// Own: count of contacts already added to group
+ TInt iAddedContactsCount;
};
#endif // CPGUADDMEMBERSCMD_H
--- a/phonebookui/Phonebook2/GroupExtension/src/CPguAddMembersCmd.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/GroupExtension/src/CPguAddMembersCmd.cpp Tue May 11 16:00:21 2010 +0300
@@ -88,7 +88,8 @@
MPbk2ContactUiControl& aUiControl ) :
CActive( CActive::EPriorityStandard ),
iUiControl( &aUiControl ),
- iGroupLink( aContactGroup )
+ iGroupLink( aContactGroup ),
+ iAddedContactsCount( 0 )
{
PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
("CPguAddMembersCmd::CPguAddMembersCmd(0x%x)"), this);
@@ -250,7 +251,15 @@
//
TInt CPguAddMembersCmd::RunError( TInt aError )
{
- if ( aError != KErrNone )
+ if ( iState == EAddingContactsToGroup && aError == KErrInUse &&
+ iEntriesToAdd && iEntriesToAdd->Count() > KOneContact )
+ {
+ // Incase there was more than just one contact being added, ignore
+ // the KErrInUse error and continue with the remaining contacts
+ iState = EAddingContactsToGroup;
+ IssueRequest();
+ }
+ else if ( aError != KErrNone )
{
FinishCommand( aError );
}
@@ -743,33 +752,27 @@
// --------------------------------------------------------------------------
//
void CPguAddMembersCmd::AddContactsToGroupL()
- {
- TInt count = 0;
- if ( iEntriesToAdd )
- {
- count = iEntriesToAdd->Count();
- }
-
- for ( TInt i = 0; i < count; ++i )
- {
- TRAPD( err, iContactGroup->AddContactL( iEntriesToAdd->At( i ) ) );
+ {
+ if (iEntriesToAdd &&
+ iAddedContactsCount < iEntriesToAdd->Count() )
+ {
+ const MVPbkContactLink& contactToAdd = iEntriesToAdd->At( iAddedContactsCount );
+ iAddedContactsCount++;
+
+ // If leaves, RunError called
+ iContactGroup->AddContactL( contactToAdd );
+
if ( iDecorator )
{
iDecorator->ProcessAdvance( 1 );
- }
- if ( err == KErrInUse )
- {
- if ( iEntriesToAdd->Count() == 1 )
- {
- User::Leave( err );
- }
- }
- else
- {
- User::LeaveIfError( err );
- }
+ }
+ iState = EAddingContactsToGroup;
}
- iState = ECommitingTransaction;
+ else
+ {
+ iState = ECommitingTransaction;
+ }
+
IssueRequest();
}
--- a/phonebookui/Phonebook2/GroupExtension/src/CPguRenameGroupCmd.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/GroupExtension/src/CPguRenameGroupCmd.cpp Tue May 11 16:00:21 2010 +0300
@@ -213,9 +213,10 @@
// --------------------------------------------------------------------------
//
TInt CPguRenameGroupCmd::RunError( TInt aError )
- {
- CCoeEnv::Static()->HandleError( aError );
- return KErrNone;
+ {
+ IssueRequest(EFinishCommand);
+
+ return aError;
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/MapExtension/src/cpmapcmd.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/MapExtension/src/cpmapcmd.cpp Tue May 11 16:00:21 2010 +0300
@@ -568,7 +568,7 @@
//
void CPmapCmd::EditorShowOnMapsL( TVPbkFieldTypeParameter aAddressType )
{
- CMnMapView* mapview = CMnMapView::NewL( *iMapViewProvider );
+ CMnMapView* mapview = CMnMapView::NewChainedL( *iMapViewProvider );
CleanupStack::PushL( mapview );
RPointerArray<CPosLandmark> landmarks;
--- a/phonebookui/Phonebook2/NamesListExtension/inc/CPbk2NameslistUiControlExtension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/NamesListExtension/inc/CPbk2NameslistUiControlExtension.h Tue May 11 16:00:21 2010 +0300
@@ -97,7 +97,7 @@
private: // From MPbk2ContactUiControlDoubleListboxExtension
void FormatDataL(
- const MVPbkViewContact& aViewContact,
+ const MVPbkContactLink& aContactLink,
MPbk2DoubleListboxDataElement& aDataElement );
void SetCommandItemUpdater(
MPbk2CommandItemUpdater* aCommandUpdater );
--- a/phonebookui/Phonebook2/NamesListExtension/src/CPbk2NameslistUiControlExtension.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/NamesListExtension/src/CPbk2NameslistUiControlExtension.cpp Tue May 11 16:00:21 2010 +0300
@@ -271,49 +271,46 @@
// -----------------------------------------------------------------------------
//
void CPbk2NameslistUiControlExtension::FormatDataL(
- const MVPbkViewContact& aViewContact,
+ const MVPbkContactLink& aContactLink,
MPbk2DoubleListboxDataElement& aDataElement )
{
- MVPbkContactLink* link = aViewContact.CreateLinkLC();
- if( link )
- {
- HBufC* txt = NULL;
- TPbk2IconId iconId;
- CSpbContentProvider::TSpbContentType type = CSpbContentProvider::ETypeNone;
- iContentProvider.GetContentL( *link, txt, iconId, type );
+ HBufC* txt = NULL;
+ TPbk2IconId iconId;
+ CSpbContentProvider::TSpbContentType type = CSpbContentProvider::ETypeNone;
+
+ iContentProvider.GetContentL(
+ *(const_cast<MVPbkContactLink*>(&aContactLink)), txt, iconId, type );
- // select proper element type based on content type
- MPbk2DoubleListboxDataElement::TTextDataType elemType =
- MPbk2DoubleListboxDataElement::ETypeGenericText;
- if( type == CSpbContentProvider::ETypePhoneNumber )
- {
- elemType = MPbk2DoubleListboxDataElement::ETypePhoneNumber;
- }
- else if( type == CSpbContentProvider::ETypePhoneNumberMultiple && txt )
+ // select proper element type based on content type
+ MPbk2DoubleListboxDataElement::TTextDataType elemType =
+ MPbk2DoubleListboxDataElement::ETypeGenericText;
+ if( type == CSpbContentProvider::ETypePhoneNumber )
+ {
+ elemType = MPbk2DoubleListboxDataElement::ETypePhoneNumber;
+ }
+ else if( type == CSpbContentProvider::ETypePhoneNumberMultiple && txt )
+ {
+ // if we get multiple phone numbers from content provider, then
+ // the string only contains the count (as text). We need to format
+ // that into proper UI text.
+ TInt num = 0;
+ TLex16 lex( *txt );
+ TInt err = lex.Val( num );
+ if( !err )
{
- // if we get multiple phone numbers from content provider, then
- // the string only contains the count (as text). We need to format
- // that into proper UI text.
- TInt num = 0;
- TLex16 lex( *txt );
- TInt err = lex.Val( num );
- if( !err )
- {
- delete txt;
- txt = StringLoader::LoadL( R_QTN_PHOB_N_NUMBERS, num );
- }
- else
- {
- // in case of convert error
- txt->Des().Zero();
- }
+ delete txt;
+ txt = StringLoader::LoadL( R_QTN_PHOB_N_NUMBERS, num );
}
-
- aDataElement.SetText(
- MPbk2DoubleListboxDataElement::EStatusText, txt, elemType );
+ else
+ {
+ // in case of convert error
+ txt->Des().Zero();
+ }
+ }
+
+ aDataElement.SetText(
+ MPbk2DoubleListboxDataElement::EStatusText, txt, elemType );
- CleanupStack::PopAndDestroy(); // link
- }
}
// -----------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/NamesListExtension/src/NamesListExView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/NamesListExtension/src/NamesListExView.cpp Tue May 11 16:00:21 2010 +0300
@@ -413,6 +413,11 @@
{
iCurrentCommandId = aCommandId;
}
+
+ if ( EPbk2CmdOpenCca == aCommandId )
+ {
+ iControl->SetOpeningCca( ETrue );
+ }
// No command handling in this class, forward to Commands
if (!iCommandHandler->HandleCommandL( aCommandId, *iControlProxy, &iView ))
@@ -703,7 +708,14 @@
{
PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
("CPbk2NamesListExView(%x)::DoDeactivate()"), this);
-
+
+ // CCA Connection should be closed when Name List View deactivated
+ if( iCCAConnection )
+ {
+ iCCAConnection->Close();
+ iCCAConnection = NULL;
+ }
+
if ( iCommandHandler )
{
iCommandHandler->RemoveMenuCommandObserver( *this );
@@ -1320,6 +1332,11 @@
// after a command is finished.
iCtrlVisibleStateBeforeLosingForground = ETrue;
+ if( EPbk2CmdOpenCca == iCurrentCommandId )
+ {
+ iControl->SetOpeningCca( EFalse );
+ }
+
iControl->AllowPointerEvents( ETrue );
iControl->ShowThumbnail();
--- a/phonebookui/Phonebook2/NamesListExtension/src/NamesListUiExtensionPlugin.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/NamesListExtension/src/NamesListUiExtensionPlugin.cpp Tue May 11 16:00:21 2010 +0300
@@ -734,14 +734,9 @@
// --------------------------------------------------------------------------
//
void CNamesListUIExtensionPlugin::StoreUnavailable
- ( MVPbkContactStore& aContactStore, TInt /*aReason*/ )
+ ( MVPbkContactStore& /*aContactStore*/, TInt /*aReason*/ )
{
- if ( aContactStore.StoreProperties().Name().UriDes().Compare
- ( VPbkContactStoreUris::DefaultCntDbUri() ) && iLocalStore )
- {
- iLocalStore->Close( *this );
- iLocalStore = NULL;
- }
+
}
// --------------------------------------------------------------------------
@@ -767,15 +762,7 @@
{
iLocalStoreContactsCount--;
break;
- }
-
- case TVPbkContactStoreEvent::EStoreBackupRestoreCompleted:
- case TVPbkContactStoreEvent::EUnknownChanges:
- {
- iLocalStoreContactsCount = iLocalStore->StoreInfo().NumberOfContactsL();
- break;
- }
-
+ }
default:
break;
}
--- a/phonebookui/Phonebook2/Presentation/inc/CPbk2ContactNameFormatter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Presentation/inc/CPbk2ContactNameFormatter.h Tue May 11 16:00:21 2010 +0300
@@ -92,6 +92,12 @@
HBufC* GetContactTitleWithCompanyNameL(
const MVPbkBaseContactFieldCollection& aContactFields,
TUint32 aFormattingFlags );
+
+ public: // From MPbk2ContactNameFormatter3
+ CVPbkBaseContactFieldTypeListIterator* TitleWithCompanyNameFieldsLC(
+ CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields );
+
private:
void GetContactTitleWithCompanyName(
@@ -103,7 +109,11 @@
const TUint32 aFormattingFlags );
TBool IsCompanyNameField();
-
+
+ void TitleFieldsL( CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields,
+ const TInt aStartingPosition, const TInt aEndingPosition );
+
protected: // Implementation
CPbk2ContactNameFormatter(
const MVPbkFieldTypeList& aMasterFieldTypeList,
--- a/phonebookui/Phonebook2/Presentation/inc/CPbk2ContactNameFormatterBase.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Presentation/inc/CPbk2ContactNameFormatterBase.h Tue May 11 16:00:21 2010 +0300
@@ -24,6 +24,7 @@
#include <e32base.h>
#include <MPbk2ContactNameFormatter.h>
#include <MPbk2ContactNameFormatter2.h>
+#include <MPbk2ContactNameFormatter3.h>
#include "TPbk2SortOrderFieldMapper.h"
@@ -44,7 +45,8 @@
NONSHARABLE_CLASS( CPbk2ContactNameFormatterBase )
: public CBase,
public MPbk2ContactNameFormatter,
- public MPbk2ContactNameFormatter2
+ public MPbk2ContactNameFormatter2,
+ public MPbk2ContactNameFormatter3
{
public: // Constructors and destructor
@@ -91,7 +93,10 @@
const MVPbkBaseContactFieldCollection& aContactFields,
TUint32 aFormattingFlags ) = 0;
-
+ public: // from MPbk2ContactNameFormatter3
+ virtual CVPbkBaseContactFieldTypeListIterator* TitleWithCompanyNameFieldsLC(
+ CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields ) = 0;
protected: // New functions
--- a/phonebookui/Phonebook2/Presentation/inc/CPbk2JapaneseContactNameFormatter.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Presentation/inc/CPbk2JapaneseContactNameFormatter.h Tue May 11 16:00:21 2010 +0300
@@ -87,7 +87,16 @@
{
return NULL;
}
-
+
+ public: // From MPbk2ContactNameFormatter3
+
+ CVPbkBaseContactFieldTypeListIterator* TitleWithCompanyNameFieldsLC(
+ CVPbkFieldTypeRefsList& /*aFieldTypeList*/,
+ const MVPbkBaseContactFieldCollection& /*aContactFields */)
+ {
+ return NULL;
+ }
+
private: // Implementation
CPbk2JapaneseContactNameFormatter(
const MVPbkFieldTypeList& aMasterFieldTypeList,
--- a/phonebookui/Phonebook2/Presentation/src/CPbk2ContactNameFormatter.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Presentation/src/CPbk2ContactNameFormatter.cpp Tue May 11 16:00:21 2010 +0300
@@ -150,6 +150,10 @@
(aFormattingFlags, ENameCompanyPart+1, count-1); // zero-based
}
+ if ( !result || aFormattingFlags & MPbk2ContactNameFormatter::EDisableCompanyNameSeparator )
+ {
+ return result;
+ }
return result+1; // for seperator ","
}
// -----------------------------------------------------------------------------
@@ -190,6 +194,10 @@
{
return static_cast<MPbk2ContactNameFormatter2*>( this );
}
+ if ( aExtensionUid == MPbk2ContactNameFormatterExtension3Uid )
+ {
+ return static_cast<MPbk2ContactNameFormatter3*>( this );
+ }
return NULL;
}
// -----------------------------------------------------------------------------
@@ -217,7 +225,10 @@
//third field is expected to be company name
if ( IsCompanyNameField() )
{
- aTitle.Append(KSeparator);
+ if ( !( aFormattingFlags & MPbk2ContactNameFormatter::EDisableCompanyNameSeparator) )
+ {
+ aTitle.Append(KSeparator);
+ }
DoGetContactTitle(aTitle, EPreserveLeadingSpaces,
ENameCompanyPart, ENameCompanyPart);
}
@@ -250,6 +261,23 @@
}
// -----------------------------------------------------------------------------
+// CPbk2ContactNameFormatter::TitleWithCompanyNameFieldsLC
+// -----------------------------------------------------------------------------
+//
+CVPbkBaseContactFieldTypeListIterator*
+CPbk2ContactNameFormatter::TitleWithCompanyNameFieldsLC(
+ CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields )
+ {
+
+ TitleFieldsL( aFieldTypeList, aContactFields, ENameFirstPart, ENameCompanyPart);
+
+ return CVPbkBaseContactFieldTypeListIterator::NewLC(
+ aFieldTypeList,
+ aContactFields);
+
+ }
+// -----------------------------------------------------------------------------
// CPbk2ContactNameFormatter::ActualTitleFieldsLC
// See function CPbk2ContactNameFormatter::GetContactTitle.
// -----------------------------------------------------------------------------
@@ -259,29 +287,39 @@
CVPbkFieldTypeRefsList& aFieldTypeList,
const MVPbkBaseContactFieldCollection& aContactFields)
{
+
+ TitleFieldsL( aFieldTypeList, aContactFields, ENameFirstPart, ENameSecondPart);
+
+ return CVPbkBaseContactFieldTypeListIterator::NewLC(
+ aFieldTypeList,
+ aContactFields);
+ }
+// -----------------------------------------------------------------------------
+// CPbk2ContactNameFormatter::TitleFieldsL
+// -----------------------------------------------------------------------------
+//
+void CPbk2ContactNameFormatter::TitleFieldsL( CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields,
+ const TInt aStartingPosition, const TInt aEndingPosition )
+ {
aFieldTypeList.Reset();
SetFieldMapper( aContactFields );
DoAppendNonEmptyTitleFieldTypesL(
aFieldTypeList,
- ENameFirstPart,
- ENameSecondPart);
+ aStartingPosition,
+ aEndingPosition);
if( aFieldTypeList.FieldTypeCount() == 0 )
{
const TInt count = iFieldMapper.FieldCount();
DoAppendNonEmptyTitleFieldTypesL(
aFieldTypeList,
- ENameSecondPart+1,
+ aEndingPosition+1,
count-1);
}
-
- return CVPbkBaseContactFieldTypeListIterator::NewLC(
- aFieldTypeList,
- aContactFields);
}
-
// -----------------------------------------------------------------------------
// CPbk2ContactNameFormatter::MaxTitleLength
// -----------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/Presentation/src/CPbk2SortOrderManagerImpl.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/Presentation/src/CPbk2SortOrderManagerImpl.cpp Tue May 11 16:00:21 2010 +0300
@@ -171,6 +171,8 @@
//
inline void CPbk2SortOrderManagerImpl::ConstructL( RFs* aFs )
{
+ FeatureManager::InitializeLibL();
+ iFeatureManagerInitilized = ETrue;
iSortOrderSettings = CRepository::NewL(TUid::Uid(KCRUidPhonebook));
// Open resource file for reading language specific default values
@@ -230,8 +232,6 @@
( *iSortOrderSettings, *this );
iSortOrderMonitor->ActivateL();
iSeparatorMonitor->ActivateL();
- FeatureManager::InitializeLibL();
- iFeatureManagerInitilized = ETrue;
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/ServerApplication/inc/CPbk2ServerAppStoreManager.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ServerApplication/inc/CPbk2ServerAppStoreManager.h Tue May 11 16:00:21 2010 +0300
@@ -39,7 +39,6 @@
class CPbk2StoreConfiguration;
class CVPbkSortOrderAcquirer;
class MVPbkContactLinkArray;
-class CPbk2MyCardFilter;
// CLASS DECLARATION
@@ -192,8 +191,6 @@
CVPbkSortOrderAcquirer* iSortOrderAcquirer;
/// Ref: list of opened contact stores
RPointerArray<MVPbkContactStore> iOpenedStores;
- /// Own:
- CPbk2MyCardFilter* iMyCardFilter;
};
#endif // CPBK2SERVERAPPSTOREMANAGER_H
--- a/phonebookui/Phonebook2/ServerApplication/src/CPbk2MultiAssignDataPhase.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ServerApplication/src/CPbk2MultiAssignDataPhase.cpp Tue May 11 16:00:21 2010 +0300
@@ -293,12 +293,6 @@
void CPbk2MultiAssignDataPhase::ContactOperationFailed
( TContactOp /*aOpCode*/, TInt aErrorCode, TBool /*aErrorNotified*/ )
{
- // Locking the contact failed
- if ( KErrInUse == aErrorCode )
- {
- CCoeEnv::Static()->HandleError( aErrorCode );
- }
-
// If the contact operation failed, the iStoreContact is expected to be deleted,
// otherwise it will lead to memory leak.
if ( iStoreContact )
--- a/phonebookui/Phonebook2/ServerApplication/src/CPbk2ServerAppStoreManager.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ServerApplication/src/CPbk2ServerAppStoreManager.cpp Tue May 11 16:00:21 2010 +0300
@@ -48,9 +48,6 @@
// Debugging headers
#include <Pbk2Debug.h>
-#include <featmgr.h>
-
-
/// Unnamed namespace for local definitions
namespace {
@@ -71,50 +68,6 @@
} /// namespace
-/**
- * Helper class to filter mycard from phonebooks views
- */
-class CPbk2MyCardFilter : public CBase,
- public MVPbkContactSelector
- {
-public:
- CPbk2MyCardFilter();
- ~CPbk2MyCardFilter();
-protected: // From MVPbkContactSelector
- TBool IsContactIncluded(
- const MVPbkBaseContact& aContact );
- };
-
-CPbk2MyCardFilter::CPbk2MyCardFilter()
- {
- }
-
-CPbk2MyCardFilter::~CPbk2MyCardFilter()
- {
- }
-
-TBool CPbk2MyCardFilter::IsContactIncluded(
- const MVPbkBaseContact& aContact )
- {
- TBool isContactIncluded( ETrue );
- // this is temporary solution to hide own contact from phonebook contacts list,
- // TODO remove this code when we can hide own contact with contact model
-
- MVPbkBaseContact& contact = const_cast<MVPbkBaseContact&>( aContact );
- TAny* extension = contact.BaseContactExtension(
- KVPbkBaseContactExtension2Uid );
-
- if( extension )
- {
- MVPbkBaseContact2* baseContactExtension =
- static_cast<MVPbkBaseContact2*>( extension );
- TInt error( KErrNone );
- isContactIncluded =
- ( !baseContactExtension->IsOwnContact( error ) );
- }
-
- return isContactIncluded;
- }
// --------------------------------------------------------------------------
// CPbk2ServerAppStoreManager::CPbk2ServerAppStoreManager
@@ -140,7 +93,6 @@
delete iSortOrderAcquirer;
delete iMonitor;
delete iFetchView;
- delete iMyCardFilter;
}
// --------------------------------------------------------------------------
@@ -220,22 +172,11 @@
CPbk2ContactViewBuilder* viewBuilder = CPbk2ContactViewBuilder::NewLC
( iContactManager, aStoreProperties );
- if( !iMyCardFilter )
- {
- FeatureManager::InitializeLibL();
- if( FeatureManager::FeatureSupported( KFeatureIdffContactsMycard ) )
- {
- iMyCardFilter = new (ELeave) CPbk2MyCardFilter();
- }
- FeatureManager::UnInitializeLib();
- }
-
-
if ( aViewType == EVPbkContactsView )
{
result = viewBuilder->CreateContactViewForStoresLC
( aStoreUris, *this, aSortOrderManager.SortOrder(),
- aViewFilter, aFlags, iMyCardFilter );
+ aViewFilter, aFlags );
CleanupStack::Pop(); // result
}
else if ( aViewType == EVPbkGroupsView )
--- a/phonebookui/Phonebook2/UIControls/inc/CPbk2ContactViewListBoxModel.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/inc/CPbk2ContactViewListBoxModel.h Tue May 11 16:00:21 2010 +0300
@@ -119,7 +119,7 @@
CPbk2ContactViewListBoxModel::TParams& aParams );
void ConstructL(CPbk2StorePropertyArray* aStoreProperties,
MPbk2ContactUiControlExtension* aUiExtension);
- void FormatBufferL(
+ virtual void FormatBufferL(
const TInt aIndex ) const;
void FormatEmptyBuffer() const;
virtual void FormatBufferForContactL(
--- a/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewcustomlistboxitemdrawer.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewcustomlistboxitemdrawer.h Tue May 11 16:00:21 2010 +0300
@@ -200,6 +200,7 @@
protected:
+#ifndef RD_TOUCH2
/**
* Draw the item background.
*
@@ -208,6 +209,8 @@
* @param aRect Drawing area.
*/
void DrawCurrentItemRect(const TRect& aRect) const;
+
+#endif
/**
* Array of properties.
--- a/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewdoublelistbox.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewdoublelistbox.h Tue May 11 16:00:21 2010 +0300
@@ -58,7 +58,7 @@
CCoeControl& aContainer,
TResourceReader& aResourceReader,
const CVPbkContactManager& aManager,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
MPbk2ContactNameFormatter& aNameFormatter,
CPbk2StorePropertyArray& aStoreProperties,
MPbk2ContactUiControlExtension* aUiExtension,
@@ -91,7 +91,7 @@
CCoeControl& aContainer,
MPbk2ContactUiControlExtension* aUiExtension,
CPbk2PredictiveSearchFilter& aSearchFilter,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
CPbk2ThumbnailManager& aThumbManager );
/*
@@ -101,7 +101,7 @@
CCoeControl& aContainer,
TResourceReader& aResourceReader,
const CVPbkContactManager& aManager,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
MPbk2ContactNameFormatter& aNameFormatter,
CPbk2StorePropertyArray& aStoreProperties );
@@ -121,7 +121,7 @@
private: //data
//REF: View
- MVPbkContactViewBase& iView;
+ MPbk2FilteredViewStack& iView;
//REF: thumbnail manager
CPbk2ThumbnailManager& iThumbManager;
};
--- a/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewdoublelistboxmodel.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/inc/cpbk2contactviewdoublelistboxmodel.h Tue May 11 16:00:21 2010 +0300
@@ -26,6 +26,8 @@
class CPbk2ThumbnailManager;
class MPbk2ContactUiControlDoubleListboxExtension;
class CPbk2ContactViewDoubleListboxDataElement;
+class CDataElementCache;
+class MPbk2FilteredViewStack;
// CLASS DECLARATION
@@ -45,7 +47,8 @@
*/
static CPbk2ContactViewDoubleListBoxModel* NewL(
CPbk2ContactViewListBoxModel::TParams& aParams,
- CPbk2ThumbnailManager& aThumbManager );
+ CPbk2ThumbnailManager& aThumbManager,
+ MPbk2FilteredViewStack& aFilteredViewStack );
/**
* Destructor.
@@ -61,7 +64,8 @@
*/
CPbk2ContactViewDoubleListBoxModel(
CPbk2ContactViewListBoxModel::TParams& aParams,
- CPbk2ThumbnailManager& aThumbManager );
+ CPbk2ThumbnailManager& aThumbManager,
+ MPbk2FilteredViewStack& aFilteredViewStack );
protected: // new
@@ -87,15 +91,27 @@
*
* @param aIconId Id of the icon in icon array
*/
- void AppendIconIndexIfFound( const TPbk2IconId& aIconId ) const;
-
+ void AppendIconIndexIfFound( const TPbk2IconId& aIconId ) const;
+
+ void FormatBufferForElementDataL(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const;
+
+ void AppendThumbnailL(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const;
+
+ void FetchDataFromExtension(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const;
+
public: // From CPbk2ContactViewListBoxModel
-
+ void FormatBufferL(
+ const TInt aIndex ) const;
/// See CPbk2ContactViewListBoxModel
void FormatBufferForContactL(
const MVPbkViewContact& aViewContact,
TInt aIndex ) const;
-
private: //data
//REF: thumbnail manager
@@ -104,6 +120,11 @@
/// Ref
MPbk2ContactUiControlDoubleListboxExtension* iDoubleListExtensionPoint;
+ /// Own:
+ CDataElementCache* iDataElementCache;
+
+ /// Ref
+ MPbk2FilteredViewStack& iFilteredViewStack;
};
#endif // CPBK2CONTACTVIEWDOUBLELISTBOXMODEL_H
--- a/phonebookui/Phonebook2/UIControls/inc/pbk2contactviewdoublelistboxdataelement.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/inc/pbk2contactviewdoublelistboxdataelement.h Tue May 11 16:00:21 2010 +0300
@@ -25,6 +25,7 @@
#include <TPbk2IconId.h>
//FORWARD
+class MVPbkContactLink;
// CLASS DECLARATION
@@ -37,12 +38,16 @@
public MPbk2DoubleListboxDataElement
{
public: // constructor and destructor
- static CPbk2ContactViewDoubleListboxDataElement* NewLC();
+ static CPbk2ContactViewDoubleListboxDataElement* NewL(
+ MVPbkContactLink* aLink = NULL,
+ TInt aListIndex = KErrNotFound );
~CPbk2ContactViewDoubleListboxDataElement();
TPtr TextPtr(
MPbk2DoubleListboxDataElement::TTextDataElementItems aIndex) const;
-
+ inline const MVPbkContactLink* ContactLink();
+ inline TInt ListIndex();
+
public: // from MPbk2DoubleListboxDataElement
const TPbk2IconId& IconId(
MPbk2DoubleListboxDataElement::TIconDataElementItems aIndex ) const;
@@ -59,16 +64,33 @@
HBufC* aBuffer,
MPbk2DoubleListboxDataElement::TTextDataType aType );
private:
- inline CPbk2ContactViewDoubleListboxDataElement();
+ inline CPbk2ContactViewDoubleListboxDataElement(TInt aListIndex);
inline void ConstructL();
private:
TFixedArray<TPbk2IconId, 3> iIcons;
TFixedArray<HBufC*, 2> iTexts;
TFixedArray<TTextDataType, 2 > iTextType;
+ /// Own
HBufC* iEmptyBuffer;
+ /// Own: for data cache
+ MVPbkContactLink* iLink;
+ /// for data cache
+ TInt iListIndex;
};
-
+
+inline const MVPbkContactLink*
+CPbk2ContactViewDoubleListboxDataElement::ContactLink()
+ {
+ return iLink;
+ }
+
+inline TInt CPbk2ContactViewDoubleListboxDataElement::ListIndex()
+ {
+ return iListIndex;
+ }
+
+
#endif // PBK2CONTACTVIEWDOUBLELISTBOXDATAELEMENT_H
// End of File
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2AdaptiveSearchGridFiller.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2AdaptiveSearchGridFiller.cpp Tue May 11 16:00:21 2010 +0300
@@ -22,13 +22,17 @@
#include "MVPbkContactViewBase.h"
#include "MPbk2ContactNameFormatter.h"
+#include <MPbk2ContactNameFormatter2.h>
#include <FindUtil.h>
#include <badesca.h>
+#include <featmgr.h>
const TInt KMaxAdaptiveGridCacheCount = 10;
const TInt KAdaptiveSearchKeyMapGranularity = 100;
const TInt KAdaptiveSearchRefineStep = 10;
-const TInt KContactFormattingFlags = MPbk2ContactNameFormatter::EPreserveLeadingSpaces | MPbk2ContactNameFormatter::EReplaceNonGraphicChars;
+const TInt KContactFormattingFlags = MPbk2ContactNameFormatter::EPreserveLeadingSpaces |
+ MPbk2ContactNameFormatter::EReplaceNonGraphicChars |
+ MPbk2ContactNameFormatter::EDisableCompanyNameSeparator;
NONSHARABLE_CLASS(CPbk2AdaptiveGrid) : public CBase
@@ -181,20 +185,42 @@
{
const MVPbkViewContact& contact = iView->ContactAtL( iCounter );
const TInt titleLength = iNameFormatter.MaxTitleLength( contact.Fields(), KContactFormattingFlags );
- HBufC* title = HBufC::NewLC( titleLength );
- TPtr ptrTitle = title->Des();
- iNameFormatter.GetContactTitle( contact.Fields(), ptrTitle, KContactFormattingFlags );
- BuildGridL( ptrTitle, *iSearchString, iKeyMap );
+ HBufC* title = NULL;
+
+ if( FeatureManager::FeatureSupported( KFeatureIdFfContactsCompanyNames ) )
+ {
+ MPbk2ContactNameFormatter2* nameformatterExtension =
+ reinterpret_cast<MPbk2ContactNameFormatter2*>( iNameFormatter.
+ ContactNameFormatterExtension( MPbk2ContactNameFormatterExtension2Uid ) );
+ if ( nameformatterExtension && titleLength )
+ {
+ title = nameformatterExtension->GetContactTitleWithCompanyNameL( contact.Fields(),
+ KContactFormattingFlags );
+
+ }
+ }
+ else if ( titleLength )
+ {
+ title = iNameFormatter.GetContactTitleL( contact.Fields(), KContactFormattingFlags );
+ }
+
+ if ( !title )
+ {
+ title = HBufC::NewL( titleLength );
+ }
+
+ CleanupStack::PushL( title );
+ BuildGridL( *title, *iSearchString, iKeyMap );
// check number of spaces in the contact title
- TInt numberOfSpaces = NumberOfSpacesInString( ptrTitle );
+ TInt numberOfSpaces = NumberOfSpacesInString( *title );
if ( numberOfSpaces > maxSpacesNumber )
{
maxSpacesNumber = numberOfSpaces;
}
// Check if the contact's title include drgraphs,
// if it is, add it to array to save.
- if ( IsDigraphContactsTitleL( ptrTitle ) )
+ if ( IsDigraphContactsTitleL( *title ) )
{
iDigraphContactsTitleArray.AppendL( title );
CleanupStack::Pop(); //title
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2ContactEditorDlgImpl.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2ContactEditorDlgImpl.cpp Tue May 11 16:00:21 2010 +0300
@@ -843,12 +843,6 @@
//
void CPbk2ContactEditorDlgImpl::SetInitialCurrentLine()
{
- TRAPD( err, ActivateFirstPageL() );
- if(err)
- {
- return;
- }
-
TInt focusedIndex = 0;
if ( iParams.iFocusedContactField )
{
@@ -3379,31 +3373,36 @@
TEventCode aType )
{
MPbk2ContactEditorField* editorField = aCurrentField->ContactEditorField();
- MVPbkStoreContactField& contactField = editorField->ContactField();
- TVPbkFieldStorageType dataType = contactField.FieldData().DataType();
-
- if ( EVPbkFieldStorageTypeText == dataType )
+ if ( editorField )
{
- const MVPbkContactFieldTextData& textData =
- MVPbkContactFieldTextData::Cast(contactField.FieldData());
- TInt maxSize = textData.MaxLength();
+ MVPbkStoreContactField& contactField = editorField->ContactField();
+ TVPbkFieldStorageType dataType = contactField.FieldData().DataType();
- if ( KVPbkUnlimitedFieldLength != maxSize &&
- IsCheckPointEvent( aKeyEvent, aType ) )
+ if ( EVPbkFieldStorageTypeText == dataType )
{
- CEikEdwin* ctrl = editorField->Control();
- HBufC* textBuf = ctrl->GetTextInHBufL();
+ const MVPbkContactFieldTextData& textData =
+ MVPbkContactFieldTextData::Cast(contactField.FieldData());
+ TInt maxSize = textData.MaxLength();
- if ( textBuf )
+ if ( KVPbkUnlimitedFieldLength != maxSize &&
+ IsCheckPointEvent( aKeyEvent, aType ) )
{
- TInt maxLen = maxSize;
- if ( IsUnicodeL( *textBuf ) )
+ CEikEdwin* ctrl = editorField->Control();
+ HBufC* textBuf = ctrl->GetTextInHBufL();
+
+ if ( textBuf )
{
- maxLen = maxSize / KTwoBytes - KExtraByte;
- }
- if ( ctrl->MaxLength() != maxLen && textBuf->Length() <= maxLen )
- {
- ctrl->SetMaxLength( maxLen );
+ CleanupStack::PushL( textBuf );
+ TInt maxLen = maxSize;
+ if ( IsUnicodeL( *textBuf ) )
+ {
+ maxLen = maxSize / KTwoBytes - KExtraByte;
+ }
+ if ( ctrl->MaxLength() != maxLen && textBuf->Length() <= maxLen )
+ {
+ ctrl->SetMaxLength( maxLen );
+ }
+ CleanupStack::PopAndDestroy( textBuf );
}
}
}
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2ContactIconsUtils.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2ContactIconsUtils.cpp Tue May 11 16:00:21 2010 +0300
@@ -96,6 +96,7 @@
const MVPbkViewContact& aViewContact,
RArray<TPbk2IconId>& aIconArray ) const
{
+ CleanupClosePushL( aIconArray );
aIconArray.Reset();
// get dynamic icons from ui extension
@@ -134,6 +135,7 @@
}
}
}
+ CleanupStack::Pop();
}
// End of File
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2ContactViewListBox.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2ContactViewListBox.cpp Tue May 11 16:00:21 2010 +0300
@@ -427,7 +427,10 @@
const RPointerArray<MPbk2UiControlCmdItem>* aCommands )
{
iListboxModelDecorator->SetListCommands( aCommands );
- iColumnData->SetListCommands( aCommands );
+ if( iColumnData )
+ {
+ iColumnData->SetListCommands( aCommands );
+ }
}
// --------------------------------------------------------------------------
@@ -520,7 +523,7 @@
model->SetUnnamedText( iResourceData.iUnnamedText );
iModel = model;
- if(FeatureManager::FeatureSupported(KFeatureIdFfContactsPredictiveSearch))
+ if( iColumnData )
{
iColumnData->SetDataModel( iModel );
}
@@ -589,18 +592,26 @@
//
void CPbk2ContactViewListBox::CreateItemDrawerL()
{
- CPbk2ContactViewCustomListBoxData* columnData =
- CPbk2ContactViewCustomListBoxData::NewL( iSearchFilter );
-
- CleanupStack::PushL( columnData );
-
- iItemDrawer=new(ELeave) CPbk2ContactViewCustomListBoxItemDrawer(
- static_cast<MTextListBoxModel*>(Model()), iCoeEnv->NormalFont(),
- columnData);
- CleanupStack::Pop( columnData );
-
- //Ownership has been transferred to iItemDrawer
- iColumnData = columnData;
+ // Use custom drawer only if predictive search is enabled
+ if( FeatureManager::FeatureSupported(KFeatureIdFfContactsPredictiveSearch) )
+ {
+ CPbk2ContactViewCustomListBoxData* columnData =
+ CPbk2ContactViewCustomListBoxData::NewL( iSearchFilter );
+
+ CleanupStack::PushL( columnData );
+
+ iItemDrawer=new(ELeave) CPbk2ContactViewCustomListBoxItemDrawer(
+ static_cast<MTextListBoxModel*>(Model()), iCoeEnv->NormalFont(),
+ columnData);
+ CleanupStack::Pop( columnData );
+
+ //Ownership has been transferred to iItemDrawer
+ iColumnData = columnData;
+ }
+ else
+ {
+ CAknSingleGraphicStyleListBox::CreateItemDrawerL();
+ }
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2NamesListControl.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2NamesListControl.cpp Tue May 11 16:00:21 2010 +0300
@@ -876,7 +876,8 @@
iContainer( aContainer ),
iNameFormatter( aNameFormatter ),
iStoreProperties( aStoreProperties ),
- iAllowPointerEvents( ETrue )
+ iAllowPointerEvents( ETrue ),
+ iOpeningCca( EFalse )
{
}
@@ -897,7 +898,8 @@
iNameFormatter( aNameFormatter ),
iStoreProperties( aStoreProperties ),
iAllowPointerEvents( ETrue ),
- iThumbManager( aThumbManager )
+ iThumbManager( aThumbManager ),
+ iOpeningCca( EFalse )
{
}
@@ -2401,14 +2403,33 @@
// reset too. So, we reset both the find box and the view stack.
TRAPD( res,
{
- // This will reset back to base view
- iCurrentState->ResetFindL();
+ // This will reset back to base view, however retain original view
+ //when opening CCA
+ if( !iOpeningCca )
+ {
+ iCurrentState->ResetFindL();
+ }
});
HandleError( res );
if( !iCheckMassUpdate->MassUpdateCheckThis() )
{
- Reset();
+ // If it is the first time to goto a contat's cca card, then in cca we
+ // will set a defualt number to that contact by CmsSetVoiceCallDefault.
+ // Then db item changed event is notified to ui layer and names list control
+ // updated accordingly. But to end user that is not allowed, so use this
+ // flag to avoid this reset of ui control.
+ if( iOpeningCca )
+ {
+ if( iCurrentState->NamesListState() == EStateEmpty )
+ {
+ SelectAndChangeReadyStateL();
+ }
+ }
+ else
+ {
+ Reset();
+ }
}
// Do not handle contact addition here (DoHandleContactAdditionL),
@@ -2603,6 +2624,15 @@
}
// ---------------------------------------------------------------------------
+// CPbk2NamesListControl::SetOpeningCca
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2NamesListControl::SetOpeningCca( TBool aIsOpening )
+ {
+ iOpeningCca = aIsOpening;
+ }
+
+// ---------------------------------------------------------------------------
// CPbk2NamesListControlBgTask::CPbk2NamesListControlBgTask
// ---------------------------------------------------------------------------
//
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2ThumbnailManager.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2ThumbnailManager.cpp Tue May 11 16:00:21 2010 +0300
@@ -414,7 +414,9 @@
// CPbk2ThumbnailManager::GetPbkIconIndexL()
// --------------------------------------------------------------------------
//
-TInt CPbk2ThumbnailManager::GetPbkIconIndexL( TInt aListboxIndex, const MVPbkBaseContact& aContactLink )
+TInt CPbk2ThumbnailManager::GetPbkIconIndexL(
+ TInt aListboxIndex,
+ const MVPbkContactLink& aContactLink )
{
TInt arrIndex = iDefaultIconIndex;
@@ -424,7 +426,7 @@
CPbk2TmItem* item = iContactThumbnails[ aListboxIndex ];
if( !item )
{
- item = CPbk2TmItem::NewL( aContactLink.CreateLinkLC(), aListboxIndex );
+ item = CPbk2TmItem::NewL( aContactLink.CloneLC(), aListboxIndex );
CleanupStack::Pop(); // link
// set default icon index
item->SetIconArrayIndexAndId( iDefaultIconIndex,iDefaultIconId );
@@ -1032,16 +1034,39 @@
}
else
{
- // there is items in the listbox that are not loaded yet. If there is favorite contacts,
- // those are added afterwards to the list. normal items are added first.
- const TInt itemCount = aView.ContactCountL() - thumbnailCount;
- for( TInt i = 0; i < itemCount; ++i )
+ // Check if view count has changed
+ if ( aView.ContactCountL() != thumbnailCount )
{
- iContactThumbnails.InsertL( NULL, 0 );
- }
- if( itemCount > 0 )
- {
- ResetIndexes();
+ if( iLoadingQueue.Count() > 0 )
+ {
+ // store item that is currently in processing
+ iInProgressItemToBeRemoved = iLoadingQueue[0];
+ }
+
+ for ( TInt i = thumbnailCount - 1; i >= 0; --i )
+ {
+ CPbk2TmItem* item = iContactThumbnails[i];
+ if ( item )
+ {
+ // check that the icon is not a default icon
+ if( iIconArray && item->GetIconArrayIndex() != iDefaultIconIndex )
+ {
+ // inform icon array to remove the icon
+ iIconArray->RemoveIcon( item->GetIconId() );
+ }
+
+ if ( iInProgressItemToBeRemoved == item )
+ {
+ // prevent item from being deleted later
+ iContactThumbnails[i] = NULL;
+ }
+ }
+ }
+
+ // reset and recreate arrays
+ iLoadingQueue.Reset();
+ iPriorityArray.Reset();
+ PreCreateThumbnailArrayL( aView );
}
}
}
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewcustomlistboxdata.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewcustomlistboxdata.cpp Tue May 11 16:00:21 2010 +0300
@@ -35,6 +35,8 @@
#include <layoutmetadata.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
#include <aknphysics.h>
+#include <akniconarray.h>
+#include <avkon.mbg>
#ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -97,6 +99,12 @@
}
//End of Code Added for PhoneBook2
+
+//Note:
+//****
+//PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+//Define this Flag once Pbk2 decides to implement the MarkingMode changes that has been implemented for Avkon Lists
+
/**
* About animation usage:
* All animation usage is implemented in this class. Animation is eye candy and
@@ -161,6 +169,7 @@
void DeleteAnim();
void FocusGained();
void FocusLost();
+ void SkinChangedL();
void SkinChanged();
void SetControl( CCoeControl* aControl );
@@ -186,6 +195,9 @@
CWindowGc& aGc,
const TRect& aOutRect,
const TRect& aInnerRect ) const;
+
+ void LoadMarkingIconsL();
+
public: //for handling column alignment
struct TColumnExt
{
@@ -284,6 +296,8 @@
CArrayFix<TColumnExt>* iColumnExtArray; //for column alignment
TRect iMarginRect;
+
+ CAknIconArray* iMarkingIconArray;
};
/**
@@ -349,6 +363,11 @@
iKineticScrolling = CAknPhysics::FeatureEnabled();
+
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ LoadMarkingIconsL();
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
}
CPbk2ContactViewCustomListBoxDataExtension::~CPbk2ContactViewCustomListBoxDataExtension()
@@ -372,6 +391,12 @@
delete iColorBmp;
delete iHiliBmp;
delete iColumnExtArray;
+ if ( iMarkingIconArray )
+ {
+ iMarkingIconArray->ResetAndDestroy();
+ }
+
+ delete iMarkingIconArray;
}
MAknsControlContext* CPbk2ContactViewCustomListBoxDataExtension::SkinBackgroundContext() const
@@ -561,6 +586,19 @@
}
// -----------------------------------------------------------------------------
+// CPbk2ContactViewCustomListBoxDataExtension::SkinChangedL
+// -----------------------------------------------------------------------------
+//
+void CPbk2ContactViewCustomListBoxDataExtension::SkinChangedL()
+ {
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ DeleteAnim();
+ TryCreateAnimation();
+ CreateColorBitmapsL();
+ LoadMarkingIconsL();
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ }
+// -----------------------------------------------------------------------------
// CPbk2ContactViewCustomListBoxDataExtension::SkinChanged
// -----------------------------------------------------------------------------
//
@@ -1144,6 +1182,44 @@
KAknsIIDQsnFrListCenterPressed );
}
+// -----------------------------------------------------------------------------
+// CPbk2ContactViewCustomListBoxDataExtension::LoadMarkingIconsL
+// -----------------------------------------------------------------------------
+//
+void CPbk2ContactViewCustomListBoxDataExtension::LoadMarkingIconsL()
+ {
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ if ( !iMarkingIconArray )
+ {
+ iMarkingIconArray = new ( ELeave ) CAknIconArray( 2 );
+ }
+ else
+ {
+ iMarkingIconArray->ResetAndDestroy();
+ }
+
+ CGulIcon* icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
+ KAknsIIDQgnPropCheckboxOn,
+ AknIconUtils::AvkonIconFileName(),
+ EMbmAvkonQgn_prop_checkbox_on,
+ EMbmAvkonQgn_prop_checkbox_on_mask );
+
+ CleanupStack::PushL( icon );
+ iMarkingIconArray->AppendL( icon );
+ CleanupStack::Pop( icon );
+
+ icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
+ KAknsIIDQgnPropCheckboxOff,
+ AknIconUtils::AvkonIconFileName(),
+ EMbmAvkonQgn_prop_checkbox_off,
+ EMbmAvkonQgn_prop_checkbox_off_mask );
+
+ CleanupStack::PushL( icon );
+ iMarkingIconArray->AppendL( icon );
+ CleanupStack::Pop( icon );
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ }
+
CCoeControl *CPbk2ContactViewCustomListBoxData::Control() const
{
return iExtension->iControl;
@@ -1950,12 +2026,38 @@
const TColors& aColors,
TInt aItemIndex ) const
{
+
+ CEikListBox* listbox = static_cast<CEikListBox*>( iExtension->iControl );
+ if ( listbox && !listbox->View()->ViewRect().Intersects( aRect ) )
+ {
+ // outside of the clipping rect -> don't process this item
+ return;
+ }
+
TInt lastColumn = Min( LastColumn(), KMaxColumn );
TInt column=0;
TPtrC text;
TPtrC tempText;
TRgb aTextColor = aHighlight ? aColors.iHighlightedText : aColors.iText;
+
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ TBool markingMode = EFalse;
+ TRect itemRect( aRect );
+
+ if ( listbox->View() && listbox->View()->ItemDrawer() )
+ {
+ if ( listbox->View()->ItemDrawer()->Flags()
+ & CListItemDrawer::EMarkingModeEnabled
+ && iExtension->iMarkingIconArray
+ && iExtension->iMarkingIconArray->Count() == 2 )
+ {
+ markingMode = ETrue;
+ itemRect.iTl.iX +=
+ AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 0 ).LayoutLine().il;
+ }
+ }
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
MAknsSkinInstance *skin = AknsUtils::SkinInstance();
MAknsControlContext *cc = AknsDrawUtils::ControlContext( Control() );
@@ -1971,10 +2073,13 @@
if ( iExtension->iSubCellsMightIntersect )
{
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ CheckIfSubCellsIntersectL( &textLines[0], &rectClipped[0], *aText, itemRect );
+ }
+#else
CheckIfSubCellsIntersectL( &textLines[0], &rectClipped[0], *aText, aRect );
}
-
- CEikListBox* listbox = static_cast<CEikListBox*>( iExtension->iControl );
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
#ifdef RD_UI_TRANSITION_EFFECTS_LIST
MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc );
#endif // RD_UI_TRANSITION_EFFECTS_LIST
@@ -2015,6 +2120,42 @@
}
DrawHighLight( aGc, aRect, aHighlight, skin );
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ if ( markingMode && !aItemProperties.IsSelectionHidden() )
+ {
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect( aRect,
+ AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) );
+
+ aGc.SetPenColor( aColors.iText );
+ aGc.SetPenStyle( CGraphicsContext::ESolidPen );
+
+ CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked
+
+ if ( listbox->View()->ItemIsSelected( iExtension->iCurrentRow ) )
+ {
+ icon = (*iExtension->iMarkingIconArray)[0];
+ }
+
+ CFbsBitmap* bitmap = icon->Bitmap();
+
+ if ( bitmap )
+ {
+ TSize size( bitmap->SizeInPixels() ); // set size if not already
+ TSize targetSize( layoutRect.Rect().Size() );
+
+ if ( size.iWidth != targetSize.iWidth && size.iHeight != targetSize.iHeight )
+ {
+ AknIconUtils::SetSize( bitmap, targetSize,
+ EAspectRatioPreservedAndUnusedSpaceRemoved );
+ }
+
+ aGc.BitBltMasked( layoutRect.Rect().iTl, bitmap, TRect( layoutRect.Rect().Size() ), icon->Mask(), EFalse );
+ }
+
+ }
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
// The column draw loop
column = 0;
TInt subCellIndex = 0;
@@ -2129,8 +2270,13 @@
}
TAknLayoutText textLayout;
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ textLayout.LayoutText( itemRect, textLineLayout, usedFont );
+ TRect layoutedRect( itemRect);
+#else
textLayout.LayoutText( aRect, textLineLayout, usedFont );
TRect layoutedRect( aRect );
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
// *2 == leave some room for marquee
const TInt maxlen( KMaxColumnDataLength * 2 );
@@ -2177,7 +2323,11 @@
{
iExtension->iMarquee->UseLogicalToVisualConversion( bidiConv );
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ if ( iExtension->iMarquee->DrawText( aGc, itemRect, textLineLayout, convBuf, usedFont, textColor ) )
+#else
if ( iExtension->iMarquee->DrawText( aGc, aRect, textLineLayout, convBuf, usedFont, textColor ) )
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
{
// all the loops have been executed
textLayout.DrawText( aGc, convBuf, bidiConv, textColor );
@@ -2279,7 +2429,11 @@
TAknWindowLineLayout graphicLayout = iExtension->AtSL(subCellIndex).iGraphicLayout;
TAknLayoutRect graphicRect;
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ graphicRect.LayoutRect( itemRect,graphicLayout );
+#else
graphicRect.LayoutRect(aRect,graphicLayout);
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
TSize graphicSize( graphicRect.Rect().Size() );
if (index>=0 && IconArray())
@@ -2374,11 +2528,36 @@
return;
}
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ CEikListBox* listbox = static_cast<CEikListBox*>( iExtension->iControl );
+ TBool markingMode = EFalse;
+ TRect itemRect( aRect );
+
+ if ( listbox->View() && listbox->View()->ItemDrawer() )
+ {
+ if ( listbox->View()->ItemDrawer()->Flags()
+ & CListItemDrawer::EMarkingModeEnabled &&
+ iExtension->iMarkingIconArray &&
+ iExtension->iMarkingIconArray->Count() == 2 )
+ {
+ markingMode = ETrue;
+ itemRect.iTl.iX +=
+ AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 0 ).LayoutLine().il;
+ }
+ }
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
TInt extraVerticalSpace=(aRect.Height()-font->HeightInPixels());
TInt baseLineOffset=extraVerticalSpace/2+font->AscentInPixels();
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ TRect textRect( itemRect );
+ TRect textMRect; // textrect with margins.
+ textRect.iBr.iX = itemRect.iTl.iX;
+#else
TRect textRect( aRect );
TRect textMRect; // textrect with margins.
textRect.iBr.iX=aRect.iTl.iX;
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
TInt column=0;
TPtrC text;
@@ -2388,11 +2567,20 @@
// be too difficult to do without - and this is cleaner solution.
// pass 1, figures out x-coordinates for columns.
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ TInt x = itemRect.iTl.iX;
+#else
TInt x = aRect.iTl.iX;
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
TBool mirror = AknLayoutUtils::LayoutMirrored();
if (mirror)
{
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ x = itemRect.iBr.iX;
+#else
x = aRect.iBr.iX;
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
}
TInt maxx = x;
while(column <= lastColumn)
@@ -2465,12 +2653,14 @@
cc = SkinBackgroundContext();
}
+#ifndef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
// aRect is list item's rect, width of which is smaller than width of the list
// with a scroll bar. List needs to draw under scroll bar anyway, so we need to
// modify given rect here.
TRect r(aRect);
CEikListBox* listbox = static_cast<CEikListBox*>( iExtension->iControl );
+#endif // !PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
#ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -2507,8 +2697,13 @@
#endif // RD_UI_TRANSITION_EFFECTS_LIST
}
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ if ( iExtension->iCurrentRow < listbox->BottomItemIndex() )
+#else
CEikListBox* list = static_cast<CEikListBox*>( iExtension->iControl );
+
if ( iExtension->iCurrentRow < list->BottomItemIndex() )
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
{
AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin );
}
@@ -2525,6 +2720,49 @@
}
#endif // RD_UI_TRANSITION_EFFECTS_LIST
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ if ( markingMode && !aItemProperties.IsSelectionHidden() )
+ {
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect(
+ aRect,
+ AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) );
+
+ aGc.SetPenColor( aColors.iText );
+ aGc.SetPenStyle( CGraphicsContext::ESolidPen );
+
+ CGulIcon* icon = (*iExtension->iMarkingIconArray)[1]; // unchecked
+
+ if ( listbox->View()->ItemIsSelected( iExtension->iCurrentRow ) )
+ {
+ icon = (*iExtension->iMarkingIconArray)[0];
+ }
+
+ CFbsBitmap* bitmap = icon->Bitmap();
+
+ if ( bitmap )
+ {
+ TSize size( bitmap->SizeInPixels() ); // set size if not already
+ TSize targetSize( layoutRect.Rect().Size() );
+
+ if ( size.iWidth != targetSize.iWidth &&
+ size.iHeight != targetSize.iHeight )
+ {
+ AknIconUtils::SetSize(
+ bitmap,
+ targetSize,
+ EAspectRatioPreservedAndUnusedSpaceRemoved );
+ }
+
+ aGc.BitBltMasked( layoutRect.Rect().iTl,
+ bitmap,
+ TRect( layoutRect.Rect().Size() ),
+ icon->Mask(),
+ EFalse );
+ }
+ }
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
// The column draw loop
column = 0;
FOREVER
@@ -3144,7 +3382,11 @@
// too.
if( KAknsMessageSkinChange == aType )
{
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+ TRAP_IGNORE( iExtension->SkinChangedL() );
+#else
iExtension->SkinChanged();
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
}
else if(aType == KEikDynamicLayoutVariantSwitch)
{
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewcustomlistboxitemdrawer.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewcustomlistboxitemdrawer.cpp Tue May 11 16:00:21 2010 +0300
@@ -50,6 +50,11 @@
#include "cpbk2contactviewcustomlistboxitemdrawer.h"
//End of Code Added for PhoneBook2
+//Note:
+//****
+//PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+//Define this Flag once Pbk2 decides to implement the MarkingMode changes that has been implemented for Avkon Lists
+
//
// Class CPbk2ContactViewCustomListBoxItemDrawer
//
@@ -143,6 +148,7 @@
data->SetItemCellSize( iItemCellSize );
}
+#ifndef RD_TOUCH2
void CPbk2ContactViewCustomListBoxItemDrawer::DrawCurrentItemRect(const TRect& aRect) const
//
// Draw the item background
@@ -154,6 +160,7 @@
iGc->DrawRect(aRect);
iGc->CancelClippingRect();
}
+#endif // !RD_TOUCH2
/**
* Returns a pointer to the column data. Does not imply transfer of ownership.
@@ -203,6 +210,13 @@
TInt pos = -1;
TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse());
+#ifdef PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
+
+ if ( Flags() & CListItemDrawer::EMarkingModeEnabled )
+ {
+ removeicon = EFalse;
+ }
+#endif // PBK2_AVKON_TOUCH_MARKINGMODE_CHANGES
if ( Flags() & EDrawMarkSelection && ItemMarkPosition() != -1 && removeicon)
{
repl.Set( ItemMarkReplacement() );
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewdoublelistbox.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewdoublelistbox.cpp Tue May 11 16:00:21 2010 +0300
@@ -44,7 +44,7 @@
CCoeControl& aContainer,
MPbk2ContactUiControlExtension* aUiExtension,
CPbk2PredictiveSearchFilter& aSearchFilter,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
CPbk2ThumbnailManager& aThumbManager ) :
CPbk2ContactViewListBox( aContainer, aUiExtension, aSearchFilter ),
iView( aView ),
@@ -73,7 +73,7 @@
CCoeControl& aContainer,
TResourceReader& aResourceReader,
const CVPbkContactManager& aManager,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
MPbk2ContactNameFormatter& aNameFormatter,
CPbk2StorePropertyArray& aStoreProperties,
MPbk2ContactUiControlExtension* aUiExtension,
@@ -100,7 +100,7 @@
CCoeControl& aContainer,
TResourceReader& aResourceReader,
const CVPbkContactManager& aManager,
- MVPbkContactViewBase& aView,
+ MPbk2FilteredViewStack& aView,
MPbk2ContactNameFormatter& aNameFormatter,
CPbk2StorePropertyArray& aStoreProperties )
{
@@ -124,7 +124,8 @@
CPbk2ContactViewListBoxModel* CPbk2ContactViewDoubleListBox::DoCreateModelL(
CPbk2ContactViewListBoxModel::TParams params )
{
- return CPbk2ContactViewDoubleListBoxModel::NewL( params, iThumbManager );
+ return CPbk2ContactViewDoubleListBoxModel::NewL(
+ params, iThumbManager, iView );
}
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewdoublelistboxmodel.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2contactviewdoublelistboxmodel.cpp Tue May 11 16:00:21 2010 +0300
@@ -39,6 +39,7 @@
#include <MVPbkContactViewBase.h>
#include <MVPbkViewContact.h>
#include <MVPbkContactLink.h>
+#include <MVPbkContactViewBase.h>
// CONSTANTS
namespace {
@@ -64,17 +65,272 @@
// rest 56 are reserved for icon data
const TInt KMaxTxtLength = 100;
+const TInt KDataElementCacheSize = 20;
}
+/**
+ * Cache for data elements, cache is made to avoid performance problems that
+ * caused in cases when avkon implementation calls multiple times MdcaPoint function with same index
+ * Cached items must be deleted when there is any change in contact list.
+ */
+NONSHARABLE_CLASS( CDataElementCache ) :
+ public CBase,
+ public MVPbkContactViewObserver,
+ public MPbk2FilteredViewStackObserver
+ {
+public:
+ static CDataElementCache* NewL(MPbk2FilteredViewStack& aView);
+ ~CDataElementCache();
+
+ void AppendL( CPbk2ContactViewDoubleListboxDataElement* aDataElement );
+ CPbk2ContactViewDoubleListboxDataElement* Element( TInt aListIndex );
+
+private: // From MVPbkContactViewObserver
+ void ContactViewReady(
+ MVPbkContactViewBase& aView );
+ void ContactViewUnavailable(
+ MVPbkContactViewBase& aView );
+ void ContactAddedToView(
+ MVPbkContactViewBase& aView,
+ TInt aIndex,
+ const MVPbkContactLink& aContactLink );
+ void ContactRemovedFromView(
+ MVPbkContactViewBase& aView,
+ TInt aIndex,
+ const MVPbkContactLink& aContactLink );
+ void ContactViewError(
+ MVPbkContactViewBase& aView,
+ TInt aError,
+ TBool aErrorNotified );
+
+private: // From MPbk2FilteredViewStackObserver
+ void TopViewChangedL(
+ MVPbkContactViewBase& aOldView );
+ void TopViewUpdatedL();
+ void BaseViewChangedL();
+ void ViewStackError(
+ TInt aError );
+ void ContactAddedToBaseView(
+ MVPbkContactViewBase& aBaseView,
+ TInt aIndex,
+ const MVPbkContactLink& aContactLink );
+
+private:
+ inline CDataElementCache( MPbk2FilteredViewStack& aView );
+ inline void ConstructL();
+ inline void Reset();
+
+private:
+ RPointerArray<CPbk2ContactViewDoubleListboxDataElement> iCache;
+ MPbk2FilteredViewStack& iView;
+ };
+
+// --------------------------------------------------------------------------
+// CDataElementCache::NewL
+// --------------------------------------------------------------------------
+//
+CDataElementCache* CDataElementCache::NewL( MPbk2FilteredViewStack& aView )
+ {
+ CDataElementCache* self = new (ELeave) CDataElementCache(aView);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::CDataElementCache
+// --------------------------------------------------------------------------
+//
+inline CDataElementCache::CDataElementCache( MPbk2FilteredViewStack& aView )
+: iCache( KDataElementCacheSize ),
+ iView( aView )
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ConstructL
+// --------------------------------------------------------------------------
+//
+inline void CDataElementCache::ConstructL()
+ {
+ iView.AddObserverL(*this);
+ iView.AddStackObserverL(*this);
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::~CDataElementCache
+// --------------------------------------------------------------------------
+//
+CDataElementCache::~CDataElementCache()
+ {
+ Reset();
+ iView.RemoveObserver(*this);
+ iView.RemoveStackObserver(*this);
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::AppendL
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::AppendL(
+ CPbk2ContactViewDoubleListboxDataElement* aDataElement )
+ {
+ iCache.InsertL( aDataElement, 0 );
+ const TInt cacheItemCount( iCache.Count() );
+ if( cacheItemCount > KDataElementCacheSize )
+ {
+ delete iCache[cacheItemCount - 1];
+ iCache.Remove(cacheItemCount - 1);
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::Reset
+// --------------------------------------------------------------------------
+//
+inline void CDataElementCache::Reset()
+ {
+ iCache.ResetAndDestroy();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::Element
+// --------------------------------------------------------------------------
+//
+CPbk2ContactViewDoubleListboxDataElement*
+CDataElementCache::Element( TInt aListIndex )
+ {
+ const TInt cacheItemCount( iCache.Count() );
+ for( TInt i = 0 ; i < cacheItemCount ; ++i )
+ {
+ CPbk2ContactViewDoubleListboxDataElement* p = iCache[i];
+ if( p->ListIndex() == aListIndex )
+ {
+ return p;
+ }
+ }
+ return NULL;
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactViewReady
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactViewReady(
+ MVPbkContactViewBase& /*aView*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactViewUnavailable
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactViewUnavailable(
+ MVPbkContactViewBase& /*aView*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactAddedToView
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactAddedToView(
+ MVPbkContactViewBase& /*aView*/,
+ TInt /*aIndex*/,
+ const MVPbkContactLink& /*aContactLink*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactRemovedFromView
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactRemovedFromView(
+ MVPbkContactViewBase& /*aView*/,
+ TInt /*aIndex*/,
+ const MVPbkContactLink& /*aContactLink*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactViewError
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactViewError(
+ MVPbkContactViewBase& /*aView*/,
+ TInt /*aError*/,
+ TBool /*aErrorNotified*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::TopViewChangedL
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::TopViewChangedL(
+ MVPbkContactViewBase& /*aOldView*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::TopViewUpdatedL
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::TopViewUpdatedL()
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::BaseViewChangedL
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::BaseViewChangedL()
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ViewStackError
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ViewStackError(
+ TInt /*aError*/ )
+ {
+ Reset();
+ }
+
+// --------------------------------------------------------------------------
+// CDataElementCache::ContactAddedToBaseView
+// --------------------------------------------------------------------------
+//
+void CDataElementCache::ContactAddedToBaseView(
+ MVPbkContactViewBase& /*aBaseView*/,
+ TInt /*aIndex*/,
+ const MVPbkContactLink& /*aContactLink*/ )
+ {
+ Reset();
+ }
+
+
// --------------------------------------------------------------------------
// CPbk2ContactViewDoubleListBoxModel::CPbk2ContactViewDoubleListBoxModel
// --------------------------------------------------------------------------
//
CPbk2ContactViewDoubleListBoxModel::CPbk2ContactViewDoubleListBoxModel(
CPbk2ContactViewListBoxModel::TParams& aParams,
- CPbk2ThumbnailManager& aThumbManager ) :
+ CPbk2ThumbnailManager& aThumbManager,
+ MPbk2FilteredViewStack& aFilteredViewStack ) :
CPbk2ContactViewListBoxModel( aParams ),
- iThumbManager( aThumbManager )
+ iThumbManager( aThumbManager ),
+ iFilteredViewStack( aFilteredViewStack )
{
TAny* object = aParams.iUiExtension->ContactUiControlExtensionExtension
( TUid::Uid( KPbk2ContactUiControlExtensionExtensionUID ) );
@@ -88,6 +344,7 @@
//
CPbk2ContactViewDoubleListBoxModel::~CPbk2ContactViewDoubleListBoxModel()
{
+ delete iDataElementCache;
}
// --------------------------------------------------------------------------
@@ -96,43 +353,118 @@
//
CPbk2ContactViewDoubleListBoxModel* CPbk2ContactViewDoubleListBoxModel::NewL(
CPbk2ContactViewListBoxModel::TParams& aParams,
- CPbk2ThumbnailManager& aThumbManager )
+ CPbk2ThumbnailManager& aThumbManager,
+ MPbk2FilteredViewStack& aFilteredViewStack )
{
CPbk2ContactViewDoubleListBoxModel* self =
- new ( ELeave ) CPbk2ContactViewDoubleListBoxModel( aParams, aThumbManager );
+ new ( ELeave ) CPbk2ContactViewDoubleListBoxModel(
+ aParams, aThumbManager, aFilteredViewStack );
CleanupStack::PushL(self);
self->ConstructL( aParams.iStoreProperties, aParams.iUiExtension );
+ self->iDataElementCache = CDataElementCache::NewL( aFilteredViewStack );
CleanupStack::Pop();
return self;
}
// --------------------------------------------------------------------------
+// CPbk2ContactViewDoubleListBoxModel::FormatBufferL
+// --------------------------------------------------------------------------
+//
+void CPbk2ContactViewDoubleListBoxModel::FormatBufferL( const TInt aIndex ) const
+ {
+ PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+ ("CPbk2ContactViewDoubleListBoxModel::FormatBufferL(0x%x,%d), begin"),
+ this);
+ CPbk2ContactViewDoubleListboxDataElement* element =
+ iDataElementCache->Element( aIndex );
+ if( element )
+ {
+ FormatBufferForElementDataL(*element, aIndex);
+ }
+ else
+ {
+ const MVPbkViewContact& contact = iView->ContactAtL(aIndex);
+ FormatBufferForContactL(contact, aIndex );
+ }
+
+ PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+ ("CPbk2ContactViewDoubleListBoxModel::FormatBufferL(0x%x,%d), end"),
+ this);
+ }
+
+
+// --------------------------------------------------------------------------
+// CPbk2ContactViewDoubleListBoxModel::FormatBufferForElementDataL
+// --------------------------------------------------------------------------
+//
+void CPbk2ContactViewDoubleListBoxModel::FetchDataFromExtension(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const
+ {
+ // Get element data from extension
+ //
+ if( iDoubleListExtensionPoint )
+ {
+ TRAPD( err,
+ iDoubleListExtensionPoint->FormatDataL(
+ *(aDataElement.ContactLink()), aDataElement ) );
+ if( err )
+ {
+ // extension's errors are ignored.
+ PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING(
+ "CPbk2ContactViewDoubleListBoxModel::FormatBufferForElementDataL format error %d"),
+ err );
+ }
+ }
+
+ // Clip secondary text if it's a phone number
+ if( MPbk2DoubleListboxDataElement::ETypePhoneNumber ==
+ aDataElement.TextType( MPbk2DoubleListboxDataElement::EStatusText ) &&
+ iClipListBoxText )
+ {
+ TPtr secondary( aDataElement.TextPtr(
+ MPbk2DoubleListboxDataElement::EStatusText ) );
+ iClipListBoxText->ClipFromBeginning(
+ secondary, aIndex, KSecondaryTextColumn );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ContactViewDoubleListBoxModel::FormatBufferForElementDataL
+// --------------------------------------------------------------------------
+//
+void CPbk2ContactViewDoubleListBoxModel::FormatBufferForElementDataL(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const
+ {
+ FetchDataFromExtension(aDataElement, aIndex);
+
+ // start fill the new buffer for the avkon list
+ iBuffer.Zero();
+
+ AppendThumbnailL( aDataElement, aIndex );
+
+ // Format line buffer based on element's content
+ FormatBufferFromElement( aDataElement );
+ }
+
+// --------------------------------------------------------------------------
// CPbk2ContactViewDoubleListBoxModel::FormatBufferForContactL
// --------------------------------------------------------------------------
//
void CPbk2ContactViewDoubleListBoxModel::FormatBufferForContactL(
- const MVPbkViewContact& aViewContact, TInt aIndex ) const
+ const MVPbkViewContact& aViewContact,
+ TInt aIndex ) const
{
- // Reset buffer
- iBuffer.Zero();
-
+ MVPbkContactLink* link = aViewContact.CreateLinkLC();
CPbk2ContactViewDoubleListboxDataElement* element =
- CPbk2ContactViewDoubleListboxDataElement::NewLC();
+ CPbk2ContactViewDoubleListboxDataElement::NewL( link, aIndex );
+ CleanupStack::Pop(); // link
+ CleanupStack::PushL( element );
- // Fill data element cells
-
- // (1) Add thumbnail icon
- //
- TInt index = iThumbManager.GetPbkIconIndexL( aIndex, aViewContact );
- if( index != KErrNotFound )
- {
- iBuffer.AppendNum( index );
- }
- iBuffer.Append( KListColumnSeparator );
-
- // (2) Add contact name
- //
+ // get data for element
+ // get user name
HBufC* name = NULL;
if( FeatureManager::FeatureSupported( KFeatureIdFfContactsCompanyNames ))
{
@@ -164,12 +496,8 @@
MPbk2DoubleListboxDataElement::ETypeGenericText );
CleanupStack::Pop( name );
- // (3) Secondary text
- //
- // => Empty by default
-
- // (4) Trailing icon
- //
+
+ // get icons
RArray<TPbk2IconId> ids;
CleanupClosePushL( ids );
iContactIcons->GetIconIdsForContactL( aViewContact, ids );
@@ -184,33 +512,18 @@
CleanupStack::PopAndDestroy( &ids );
// Get element data from extension
- if( iDoubleListExtensionPoint )
- {
- TRAPD( err,
- iDoubleListExtensionPoint->FormatDataL( aViewContact, *element ) );
- if( err )
- {
- // extension's errors are ignored.
- PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING(
- "CPbk2ContactViewDoubleListBoxModel::FormatBufferForContactL format error %d"),
- err );
- }
- }
+ FetchDataFromExtension( *element, aIndex );
- // Clip secondary text if it's a phone number
- if( MPbk2DoubleListboxDataElement::ETypePhoneNumber ==
- element->TextType( MPbk2DoubleListboxDataElement::EStatusText ) && iClipListBoxText )
- {
- TPtr secondary( element->TextPtr(
- MPbk2DoubleListboxDataElement::EStatusText ) );
- iClipListBoxText->ClipFromBeginning(
- secondary, aIndex, KSecondaryTextColumn );
- }
+ // start format data for the avkon list
+ iBuffer.Zero();
+
+ AppendThumbnailL( *element, aIndex );
// Format line buffer based on element's content
FormatBufferFromElement( *element );
- CleanupStack::PopAndDestroy( element );
+ iDataElementCache->AppendL( element );
+ CleanupStack::Pop( element );
}
// --------------------------------------------------------------------------
@@ -225,9 +538,6 @@
// [thumbnail icon] \t [contact name] \t [secondary text] \t
// [trailing icon]
- // (1) Thumbnail icon
- // No element support needed for thumbnail at the moment
-
// (2) Contact name
AppendName( aElement.TextPtr(
MPbk2DoubleListboxDataElement::EName ).Left( KMaxTxtLength ) );
@@ -243,6 +553,25 @@
}
// --------------------------------------------------------------------------
+// CPbk2ContactViewDoubleListBoxModel::AppendThumbnailL
+// --------------------------------------------------------------------------
+//
+void CPbk2ContactViewDoubleListBoxModel::AppendThumbnailL(
+ CPbk2ContactViewDoubleListboxDataElement& aDataElement,
+ TInt aIndex ) const
+ {
+ // (1) Add thumbnail icon
+ //
+ TInt index = iThumbManager.GetPbkIconIndexL(
+ aIndex, *(aDataElement.ContactLink()) );
+ if( index != KErrNotFound )
+ {
+ iBuffer.AppendNum( index );
+ }
+ iBuffer.Append( KListColumnSeparator );
+ }
+
+// --------------------------------------------------------------------------
// CPbk2ContactViewDoubleListBoxModel::AppendText
// --------------------------------------------------------------------------
//
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2doublelistboxmodelcmddecorator.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2doublelistboxmodelcmddecorator.cpp Tue May 11 16:00:21 2010 +0300
@@ -80,8 +80,7 @@
void CPbk2DoubleListboxModelCmdDecorator::ConstructL()
{
CPbk2ListboxModelCmdDecorator::ConstructL();
- iElement = CPbk2ContactViewDoubleListboxDataElement::NewLC();
- CleanupStack::Pop( iElement ); // member
+ iElement = CPbk2ContactViewDoubleListboxDataElement::NewL();
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/UIControls/src/pbk2contactviewdoublelistboxdataelement.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/pbk2contactviewdoublelistboxdataelement.cpp Tue May 11 16:00:21 2010 +0300
@@ -15,18 +15,23 @@
*/
#include "pbk2contactviewdoublelistboxdataelement.h"
+#include <MVPbkContactLink.h>
// --------------------------------------------------------------------------
// CPbk2ContactViewDoubleListboxDataElement::NewLC
// --------------------------------------------------------------------------
//
-CPbk2ContactViewDoubleListboxDataElement* CPbk2ContactViewDoubleListboxDataElement::NewLC()
+CPbk2ContactViewDoubleListboxDataElement* CPbk2ContactViewDoubleListboxDataElement::NewL(
+ MVPbkContactLink* aLink,
+ TInt aListIndex)
{
CPbk2ContactViewDoubleListboxDataElement* self =
- new ( ELeave ) CPbk2ContactViewDoubleListboxDataElement();
+ new ( ELeave ) CPbk2ContactViewDoubleListboxDataElement(aListIndex);
CleanupStack::PushL(self);
self->ConstructL();
+ self->iLink = aLink;
+ CleanupStack::Pop(self);
return self;
}
@@ -34,7 +39,9 @@
// CPbk2ContactViewDoubleListboxDataElement::CPbk2ContactViewDoubleListboxDataElement
// --------------------------------------------------------------------------
//
-inline CPbk2ContactViewDoubleListboxDataElement::CPbk2ContactViewDoubleListboxDataElement()
+inline CPbk2ContactViewDoubleListboxDataElement::CPbk2ContactViewDoubleListboxDataElement(
+ TInt aListIndex)
+: iListIndex( aListIndex )
{
iTexts.Reset();
iIcons.Reset();
@@ -58,6 +65,7 @@
{
iTexts.DeleteAll();
delete iEmptyBuffer;
+ delete iLink;
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/UIExtensionManager/src/CPbk2UIExtensionMenuManager.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIExtensionManager/src/CPbk2UIExtensionMenuManager.cpp Tue May 11 16:00:21 2010 +0300
@@ -100,6 +100,7 @@
void CPbk2UIExtensionMenuManager::PluginForCommandIdL(
TInt aCommandId, RArray<TUid>& aPluginUids ) const
{
+ CleanupClosePushL( aPluginUids );
const TInt informationCount =
iExtensionLoader.PluginInformation().Count();
for ( TInt i = 0; i < informationCount; ++i )
@@ -111,6 +112,7 @@
aPluginUids.AppendL( pluginInformation->ImplementationUid() );
}
}
+ CleanupStack::Pop();
}
// --------------------------------------------------------------------------
--- a/phonebookui/Phonebook2/UIPolicy/src/CPbk2ContactNameConstructionPolicy.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/UIPolicy/src/CPbk2ContactNameConstructionPolicy.cpp Tue May 11 16:00:21 2010 +0300
@@ -22,12 +22,15 @@
#include <CPbk2SortOrderManager.h>
#include <Pbk2ContactNameFormatterFactory.h>
#include <MPbk2ContactNameFormatter.h>
+#include <MPbk2ContactNameFormatter3.h>
#include <CVPbkContactFieldIterator.h>
// Virtual Phonebook
#include <CVPbkContactManager.h>
#include <CVPbkFieldTypeRefsList.h>
+#include <featmgr.h>
+
// --------------------------------------------------------------------------
// CPbk2ContactNameConstructionPolicy::CPbk2ContactNameConstructionPolicy
// --------------------------------------------------------------------------
@@ -46,6 +49,7 @@
{
delete iSortOrderManager;
delete iNameFormatter;
+ FeatureManager::UnInitializeLib();
}
// --------------------------------------------------------------------------
@@ -74,6 +78,7 @@
iNameFormatter = Pbk2ContactNameFormatterFactory::CreateL
( iMasterFieldTypeList, *iSortOrderManager );
+ FeatureManager::InitializeLibL();
}
// --------------------------------------------------------------------------
@@ -85,8 +90,18 @@
( const MVPbkBaseContactFieldCollection& aFieldCollection,
CVPbkFieldTypeRefsList& aFieldTypeRefsList )
{
- return iNameFormatter->ActualTitleFieldsLC
- ( aFieldTypeRefsList, aFieldCollection );
+ if( FeatureManager::FeatureSupported( KFeatureIdFfContactsCompanyNames ) )
+ {
+ MPbk2ContactNameFormatter3* nameformatterExtension =
+ reinterpret_cast<MPbk2ContactNameFormatter3*>( iNameFormatter->
+ ContactNameFormatterExtension( MPbk2ContactNameFormatterExtension3Uid ) );
+
+ if ( nameformatterExtension )
+ {
+ return nameformatterExtension->TitleWithCompanyNameFieldsLC( aFieldTypeRefsList, aFieldCollection );
+ }
+ }
+ return iNameFormatter->ActualTitleFieldsLC( aFieldTypeRefsList, aFieldCollection );
}
// End of File
--- a/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercontainer.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercontainer.cpp Tue May 11 16:00:21 2010 +0300
@@ -645,7 +645,7 @@
// Forwarding to listbox-model
iModel->ContactFieldFetchedNotifyL(aContactField);
- if( iStatusControl )
+ if( iStatusControl && iStatusControl->IsVisible() )
{
SetDefaultStatusTextL();
}
@@ -673,7 +673,7 @@
iMdlRowCount = mdlCount;
- if( iStatusControl )
+ if( iStatusControl && iStatusControl->IsVisible() )
{
SetDefaultStatusTextL();
}
--- a/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlauncherheadercontrol.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlauncherheadercontrol.cpp Tue May 11 16:00:21 2010 +0300
@@ -174,13 +174,31 @@
//
void CCCAppCommLauncherHeaderControl::SizeChanged()
{
- // No variation anymore in layout for portrait/landscape/statusbutton/
- // no statusbutton (iStatusButtonVisibility) combinations (options 0,1,2).
- // Always use option 0.
- //const TInt isLandscape = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+ const TInt isLandscape = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
const TRect rect(Rect());
- TInt option(0);
+ /**
+ * Option0 (w button, lsc)
+ * Option2 (w/o button, lsc)
+ * Option0 (w button, prt)
+ * Option1 (w/o button, prt)
+ */
+
+ // (w/o button)
+ TInt option( isLandscape ? 2 : 1 );
+ if( iStatusButtonVisibility )
+ {
+ // (w button)
+ if( isLandscape )
+ {
+ option = 0;
+ }
+ else
+ {
+ option = 0;
+ }
+ }
+
FavoriteIconSizeChanged();
AknLayoutUtils::LayoutImage(
@@ -397,7 +415,7 @@
//
void CCCAppCommLauncherHeaderControl::SetContactStoreL(TCmsContactStore aContactStore)
{
- if (!iBitmap && !iMask)
+ if (!iBitmap && !iMask && !iHasContactImage )
{
switch (aContactStore)
{
@@ -698,13 +716,24 @@
{
//Set the size for the Favorite Icon
//This code must be in Sync with SizeChanged() code
-
- // No variation anymore in layout for portrait/landscape/statusbutton/
- // no statusbutton (iStatusButtonVisibility) combinations (options 0,1,2).
- // Always use option 0.
- //const TInt isLandscape = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+ const TInt isLandscape = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
const TRect rect(Rect());
- TInt option( 0 );
+
+ // (w/o button)
+ TInt option( isLandscape ? 2 : 1 );
+ if( iStatusButtonVisibility )
+ {
+ // (w button)
+ if( isLandscape )
+ {
+ option = 0;
+ }
+ else
+ {
+ option = 0;
+ }
+ }
+
AknLayoutUtils::LayoutImage(
iFavContactIcon, rect, AknLayoutScalable_Apps::phob2_cc_data_pane_g2(option));
--- a/phonebookui/Phonebook2/ccapplication/ccapp/inc/ccapppluginloader.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ccapplication/ccapp/inc/ccapppluginloader.h Tue May 11 16:00:21 2010 +0300
@@ -21,6 +21,7 @@
#include <e32base.h>
#include <RPbk2LocalizedResourceFile.h>
+#include <MPbk2StoreConfigurationObserver.h>
class CCCAppView;
class CCCAppPluginData;
@@ -42,7 +43,9 @@
* @lib ccaapp.exe
* @since S60 v5.0
*/
-class CCCAppPluginLoader : public CBase
+class CCCAppPluginLoader :
+ public CBase,
+ public MPbk2StoreConfigurationObserver
{
#ifdef __CCAPPUNITTESTMODE
friend class T_CCCAppPluginLoader;
@@ -178,6 +181,23 @@
TBool SetPluginVisibility(
TUid aPlugin,
TInt aVisibility);
+
+
+private:
+
+ /**
+ * Observer for store configuration changes. From MPbk2StoreConfigurationObserver
+ *
+ * @since S60 v9.2
+ */
+ void ConfigurationChanged();
+
+ /**
+ * Observer for completed store configuration changes. From MPbk2StoreConfigurationObserver
+ *
+ * @since S60 v9.2
+ */
+ void ConfigurationChangedComplete();
private:
--- a/phonebookui/Phonebook2/ccapplication/ccapp/src/ccapppluginloader.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/ccapplication/ccapp/src/ccapppluginloader.cpp Tue May 11 16:00:21 2010 +0300
@@ -23,6 +23,7 @@
#include <mccapluginfactory.h>
#include <cpbk2applicationservices.h>
+#include <CPbk2StoreConfiguration.h>
#include <CVPbkContactManager.h>
#include <MVPbkContactStoreProperties.h>
#include <VPbkContactStoreUris.h>
@@ -131,6 +132,10 @@
delete iFactoryTempPtr;
CCA_DP( KCCAppLogFile, CCA_L("<-CCCAppPluginData::~CCCAppPluginLoader"));
+ if(iAppServices)
+ {
+ iAppServices->StoreConfiguration().RemoveObserver(*this);
+ }
Release( iAppServices );
iCommandsResourceFile.Close();
@@ -371,6 +376,7 @@
KPbk2RomFileDrive, KDC_RESOURCE_FILES_DIR, KPbk2CommonUiDllResFileName );
iAppServices = CPbk2ApplicationServices::InstanceL();
+ iAppServices->StoreConfiguration().AddObserverL(*this);
}
// ---------------------------------------------------------------------------
@@ -768,6 +774,7 @@
void CCCAppPluginLoader::GetPbksXPExtesionNamesL( RArray<TPtrC>& aPbksXPExtesionNamesArray,
const TDesC& aNameString)
{
+ CleanupClosePushL( aPbksXPExtesionNamesArray );
TLex nameString ( aNameString );
TChar curChar;
nameString.Mark();
@@ -787,6 +794,7 @@
nameString.Inc();
}
}
+ CleanupStack::Pop();
}
// ---------------------------------------------------------------------------
@@ -1126,4 +1134,24 @@
}
}
+// ----------------------------------------------------------------------------
+// CCCAppPluginLoader::ConfigurationChanged
+// ----------------------------------------------------------------------------
+//
+void CCCAppPluginLoader::ConfigurationChanged()
+ {
+ //Special case. Store configuration changed, e.g. store containing current
+ //contact removed. So close CCA as current contact may not anymore be available
+ CAknAppUi* appUi = static_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi());
+ TRAP_IGNORE(appUi->HandleCommandL(EAknCmdExit));
+ }
+
+// ----------------------------------------------------------------------------
+// CCCAppPluginLoader::ConfigurationChangedComplete
+// ----------------------------------------------------------------------------
+//
+void CCCAppPluginLoader::ConfigurationChangedComplete()
+ {
+ }
+
// End of File
Binary file phonebookui/Phonebook2/group/10003A73.txt has changed
--- a/phonebookui/Phonebook2/group/pbk2spbcontentprovider.mmp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/group/pbk2spbcontentprovider.mmp Tue May 11 16:00:21 2010 +0300
@@ -66,5 +66,5 @@
LIBRARY pbk2commonui.lib
LIBRARY presencecacheclient2.lib
LIBRARY presencecacheutils.lib
-
+LIBRARY efsrv.lib
// End of File
--- a/phonebookui/Phonebook2/inc/CPbk2NamesListControl.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/inc/CPbk2NamesListControl.h Tue May 11 16:00:21 2010 +0300
@@ -251,6 +251,12 @@
*/
IMPORT_C void MassUpdateSkipProgressNote( TBool aSkip );
+ /**
+ * Set the iOpeningCca flag.
+ * @param aIsOpening - Indicates user is opening cca or not.
+ */
+ IMPORT_C void SetOpeningCca( TBool aIsOpening );
+
public: // From CCoeControl
void MakeVisible(
TBool aVisible );
@@ -503,7 +509,8 @@
CPbk2NamesListControlBgTask* iBgTask;
//Own: Mass update checker/handler
CPbk2HandleMassUpdate* iCheckMassUpdate;
-
+ //Own: Open Cca is in progress
+ TBool iOpeningCca;
};
#endif // CPBK2NAMESLISTCONTROL_H
--- a/phonebookui/Phonebook2/inc/CPbk2ThumbnailManager.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/inc/CPbk2ThumbnailManager.h Tue May 11 16:00:21 2010 +0300
@@ -111,7 +111,7 @@
* Returns icon index from Pbk2IconArray for double listbox index.
* If icon is not set, default icon index is returned
*/
- TInt GetPbkIconIndexL( TInt aListboxIndex, const MVPbkBaseContact& aContactLink );
+ TInt GetPbkIconIndexL( TInt aListboxIndex, const MVPbkContactLink& aContactLink );
/*
* Setter for default icon ID
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/inc/MPbk2ContactNameFormatter3.h Tue May 11 16:00:21 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Phonebook 2 contact name formatter interface.
+*
+*/
+
+
+#ifndef MPBK2CONTACTNAMEFORMATTER3_H
+#define MPBK2CONTACTNAMEFORMATTER3_H
+
+//Use this UID to access field property interface extension 3. Used as
+//a parameter to ContactNameFormatterExtension() method.
+const TUid MPbk2ContactNameFormatterExtension3Uid = { 3 };
+
+/**
+ * This class is an extension to MPbk2ContactNameFormatter.
+ * See documentation of MPbk2ContactNameFormatter from header
+ * MPbk2ContactNameFormatter.h
+ *
+ * you can access this extension by calling
+ * MPbk2ContactNameFormatter->ContactNameFormatterExtension()
+ */
+class MPbk2ContactNameFormatter3
+ {
+ public: // Interface
+
+ /**
+ * Return iterator that contains all fields that are used for making
+ * the formatted name.
+ *
+ * @param aFieldTypeList Field type list that is used to store
+ * field types for the iterator. The list
+ * will be resetted before use.
+ * @param aContactFields Field collection representing
+ * the data in a contact.
+ * @return Iterator for fields that are used for the formated title.
+ */
+ virtual CVPbkBaseContactFieldTypeListIterator* TitleWithCompanyNameFieldsLC(
+ CVPbkFieldTypeRefsList& aFieldTypeList,
+ const MVPbkBaseContactFieldCollection& aContactFields ) = 0;
+
+ protected:
+
+ virtual ~MPbk2ContactNameFormatter3()
+ {}
+
+
+
+ };
+
+#endif // MPBK2CONTACTNAMEFORMATTER3_H
+
+// End of File
--- a/phonebookui/Phonebook2/inc/pbk2contactuicontroldoublelistboxextension.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/inc/pbk2contactuicontroldoublelistboxextension.h Tue May 11 16:00:21 2010 +0300
@@ -20,8 +20,7 @@
#define MPBK2CONTACTUICONTROLDOUBLELISTBOXEXTENSION_H
// FORWARD DECLARATIONS
-class MVPbkStoreContact;
-class MVPbkViewContact;
+class MVPbkContactLink;
class MPbk2CommandItemUpdater;
class TPbk2IconId;
@@ -90,7 +89,7 @@
*
*/
virtual void FormatDataL(
- const MVPbkViewContact& aViewContact,
+ const MVPbkContactLink& aContactLink,
MPbk2DoubleListboxDataElement& aDataElement ) =0;
/**
--- a/phonebookui/Phonebook2/remotecontactlookup/engine/data/engine.rss Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/engine/data/engine.rss Tue May 11 16:00:21 2010 +0300
@@ -83,16 +83,25 @@
items =
{
MENU_ITEM { command = ERclCmdSaveToContacts; txt = qtn_rcl_opt_save_contact; flags = EEikMenuItemSpecific;},
+
+ // Stylus Popup menu items for Call and Send actions (in Options Menu they are submenu items)
+ MENU_ITEM { command = ERclCmdVoiceCall; txt = qtn_rcl_stylus_popup_voice_call; flags = EEikMenuItemSpecific;},
+ MENU_ITEM { command = ERclCmdVideoCall; txt = qtn_rcl_stylus_popup_video_call; flags = EEikMenuItemSpecific;},
+ MENU_ITEM { command = ERclCmdSendMsg; txt = qtn_rcl_stylus_popup_msg; flags = EEikMenuItemSpecific;},
+ MENU_ITEM { command = ERclCmdSendBusinessCard; txt = qtn_rcl_stylus_popup_bcard; flags = EEikMenuItemSpecific;},
+ MENU_ITEM { command = ERclCmdSendEmail; txt = qtn_rcl_stylus_popup_email; flags = EEikMenuItemSpecific;},
+
MENU_ITEM { command = ERclCmdViewDetails; txt = qtn_rcl_opt_details; flags = EEikMenuItemAction; },
- MENU_ITEM { command = ERclCmdAddAsRecipient; txt = qtn_rcl_opt_add_recipient; flags = EEikMenuItemSpecific;},
+ MENU_ITEM { command = ERclCmdAddAsRecipient; txt = qtn_rcl_opt_add_recipient; flags = EEikMenuItemAction;},
MENU_ITEM { command = ERclCmdNewSearchPrefilled; txt = qtn_rcl_opt_new_search; },
- MENU_ITEM { command = ERclCmdCall; cascade = r_rcl_call_menu_pane; txt = qtn_rcl_opt_call; flags = EEikMenuItemSpecific; },
- MENU_ITEM { command = ERclCmdSend; cascade = r_rcl_send_menu_pane; txt = qtn_rcl_opt_send; flags = EEikMenuItemSpecific; },
+ MENU_ITEM { command = ERclCmdCall; cascade = r_rcl_call_menu_pane; txt = qtn_rcl_opt_call; flags = EEikMenuItemAction; },
+ MENU_ITEM { command = ERclCmdSend; cascade = r_rcl_send_menu_pane; txt = qtn_rcl_opt_send; flags = EEikMenuItemAction; },
MENU_ITEM { command = EAknCmdHelp; txt = qtn_options_help; },
MENU_ITEM { command = EAknCmdExit; txt = qtn_options_exit; }
};
}
+
//
// ---------------------------------------------------------------------------
// Menu sub pane for call options
@@ -103,9 +112,9 @@
{
items =
{
- MENU_ITEM { command = ERclCmdVoiceCall; txt = qtn_rcl_opt_voice_call; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdVideoCall; txt = qtn_rcl_opt_video_call; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdVoip; txt = qtn_rcl_opt_voip; flags = EEikMenuItemSpecific;}
+ MENU_ITEM { command = ERclCmdVoiceCall; txt = qtn_rcl_opt_voice_call; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdVideoCall; txt = qtn_rcl_opt_video_call; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdVoip; txt = qtn_rcl_opt_voip; flags = EEikMenuItemAction;}
};
}
@@ -119,11 +128,11 @@
{
items =
{
- MENU_ITEM { command = ERclCmdSendMsg; txt = qtn_rcl_opt_msg; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdSendBusinessCard; txt = qtn_rcl_opt_bcard; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdSendEmail; txt = qtn_rcl_opt_email; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdSendMeetingReq; txt = qtn_rcl_opt_mreq; flags = EEikMenuItemSpecific;},
- MENU_ITEM { command = ERclCmdSendAudioMsg; txt = qtn_rcl_opt_audio; flags = EEikMenuItemSpecific;}
+ MENU_ITEM { command = ERclCmdSendMsg; txt = qtn_rcl_opt_msg; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdSendBusinessCard; txt = qtn_rcl_opt_bcard; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdSendEmail; txt = qtn_rcl_opt_email; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdSendMeetingReq; txt = qtn_rcl_opt_mreq; flags = EEikMenuItemAction;},
+ MENU_ITEM { command = ERclCmdSendAudioMsg; txt = qtn_rcl_opt_audio; flags = EEikMenuItemAction;}
};
}
@@ -189,12 +198,12 @@
RESOURCE MENU_PANE r_rcl_result_info_dialog_context_menu_pane
{
items =
- {
- MENU_ITEM { command = ERclCmdCopyDetail; txt = qtn_rcl_opt_copy_detail; },
- MENU_ITEM { command = ERclCmdVoiceCall; txt = qtn_rcl_opt_voice_call; },
- MENU_ITEM { command = ERclCmdVideoCall; txt = qtn_rcl_opt_video_call; },
- MENU_ITEM { command = ERclCmdSendMsg; txt = qtn_rcl_opt_msg; },
- MENU_ITEM { command = ERclCmdSendEmail; txt = qtn_rcl_opt_email; }
+ {
+ MENU_ITEM { command = ERclCmdVoiceCall; txt = qtn_rcl_stylus_popup_voice_call; },
+ MENU_ITEM { command = ERclCmdVideoCall; txt = qtn_rcl_stylus_popup_video_call; },
+ MENU_ITEM { command = ERclCmdSendMsg; txt = qtn_rcl_stylus_popup_msg; },
+ MENU_ITEM { command = ERclCmdSendEmail; txt = qtn_rcl_stylus_popup_email; },
+ MENU_ITEM { command = ERclCmdCopyDetail; txt = qtn_rcl_opt_copy_detail; }
};
}
@@ -257,7 +266,7 @@
{
titles =
{
- MENU_TITLE { menu_pane = r_rcl_search_result_dialog_menu_pane; }
+ MENU_TITLE { menu_pane = r_rcl_search_result_dialog_menu_pane; }
};
}
--- a/phonebookui/Phonebook2/remotecontactlookup/engine/inc/cpbkxrclsearchresultdlg.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/engine/inc/cpbkxrclsearchresultdlg.h Tue May 11 16:00:21 2010 +0300
@@ -441,6 +441,8 @@
///ETrue - if the more than max results note needs to be shown
TBool iMoreThanMaxResults;
+ TBool iFocusableContactPointed;
+
// Title pane text. Owned.
HBufC* iTitleText;
// Original title pane text (of the caller view). Owned.
--- a/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbk2remotecontactlookupaccounts.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbk2remotecontactlookupaccounts.cpp Tue May 11 16:00:21 2010 +0300
@@ -137,6 +137,7 @@
EXPORT_C void CPbk2RemoteContactLookupAccounts::GetAllAccountsL(
RPointerArray<CPbkxRemoteContactLookupProtocolAccount>& aAccounts )
{
+ CleanupClosePushL( aAccounts );
if ( iAdapters.Count() == 0 )
{
// No plugins were loaded.
@@ -170,6 +171,7 @@
}
// just let protocolAccountsTmp pass out of scope. It doesn't own anything now.
}
+ CleanupStack::Pop();
}
@@ -179,7 +181,8 @@
const TUid& aProtocol )
{
//TODO Should optimise this.
-
+ CleanupClosePushL( aAccounts );
+
RPointerArray<CPbkxRemoteContactLookupProtocolAccount> protocolAccounts;
TCleanupItem cleanupItemAcc(CleanupResetAndDestroyAccArray, &protocolAccounts);
CleanupStack::PushL(cleanupItemAcc);
@@ -203,6 +206,7 @@
protocolAccounts.Remove( j );
}
CleanupStack::Pop(); // cleanupItemAcc
+ CleanupStack::Pop();
}
CPbk2RemoteContactLookupAccounts::CPbk2RemoteContactLookupAccounts()
--- a/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclresultinfodlg.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclresultinfodlg.cpp Tue May 11 16:00:21 2010 +0300
@@ -837,6 +837,10 @@
iVisibleFocusOnList = EFalse;
listBox->HandlePointerEventL( aPointerEvent );
break;
+
+ default:
+ listBox->HandlePointerEventL( aPointerEvent );
+ break;
}
}
}
--- a/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp Tue May 11 16:00:21 2010 +0300
@@ -383,9 +383,18 @@
CEikMenuPane* aMenuPane )
{
FUNC_LOG;
+
if ( aResourceId == R_RCL_SEARCH_RESULT_DIALOG_MENU_PANE )
{
-
+ if ( !iFocusableContactPointed ) // dim stylus popup menu
+ {
+ aMenuPane->SetItemDimmed( ERclCmdVoiceCall,ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdVideoCall, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendMsg, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendEmail, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendBusinessCard, ETrue );
+ }
+
if ( iContactItems.Count() == 0 )
{
// when there are 0 results, only new search option is available
@@ -399,20 +408,34 @@
{
if ( !iContactSelectorEnabled )
{
-
+ // dim Options Menu main level items
aMenuPane->SetItemDimmed( ERclCmdAddAsRecipient, ETrue );
+ // send menu is always visible, since business card can always be sent
+ aMenuPane->SetItemDimmed( ERclCmdCall, !CallActionsAvailable() );
- aMenuPane->SetItemDimmed(
- ERclCmdCall,
- !CallActionsAvailable() );
-
- // send menu is always visible, since business card can
- // always be sent
+ if ( iFocusableContactPointed ) // dim stylus popup menu items
+ {
+ // Call menus
+ aMenuPane->SetItemDimmed( ERclCmdVoiceCall, !iContactActionService.IsActionEnabled( KFscAtComCallGSM ) );
+ aMenuPane->SetItemDimmed( ERclCmdVideoCall, !iContactActionService.IsActionEnabled( KFscAtComCallVideo ) );
+ // Send menus
+ aMenuPane->SetItemDimmed( ERclCmdSendMsg, !iContactActionService.IsActionEnabled( KFscAtComSendMsg ) );
+ aMenuPane->SetItemDimmed( ERclCmdSendEmail, !iContactActionService.IsActionEnabled( KFscAtComSendEmail ) );
+ aMenuPane->SetItemDimmed( ERclCmdSendBusinessCard, !iContactActionService.IsActionEnabled( KFscAtSendBusinessCard ) );
+ }
}
else
{
+ // dim Options Menu main level items
aMenuPane->SetItemDimmed( ERclCmdCall, ETrue );
aMenuPane->SetItemDimmed( ERclCmdSend, ETrue );
+
+ // dim stylus popup menu items
+ aMenuPane->SetItemDimmed( ERclCmdVoiceCall,ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdVideoCall, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendMsg, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendEmail, ETrue );
+ aMenuPane->SetItemDimmed( ERclCmdSendBusinessCard, ETrue );
}
aMenuPane->SetItemDimmed(
@@ -422,7 +445,6 @@
}
else if ( aResourceId == R_RCL_CALL_MENU_PANE )
{
-
aMenuPane->SetItemDimmed(
ERclCmdVoiceCall,
!iContactActionService.IsActionEnabled( KFscAtComCallGSM ) );
@@ -437,7 +459,7 @@
}
else if ( aResourceId == R_RCL_SEND_MENU_PANE )
- {
+ {
aMenuPane->SetItemDimmed(
ERclCmdSendMsg,
!iContactActionService.IsActionEnabled( KFscAtComSendMsg ) );
@@ -459,6 +481,7 @@
!iContactActionService.IsActionEnabled( KFscAtSendBusinessCard ) );
}
+ iFocusableContactPointed = EFalse;
}
// ---------------------------------------------------------------------------
@@ -1172,11 +1195,11 @@
case TPointerEvent::EButton1Down:
{
TInt focusIndex;
- TBool focusableContactPointed =
+ iFocusableContactPointed =
listBox->View()->XYPosToItemIndex(
aPointerEvent.iPosition, focusIndex );
- if ( focusableContactPointed && focusIndex > 0)
+ if ( iFocusableContactPointed )
{
TInt oldIndex = iSelectedItemIndex;
iSelectedItemIndex = focusIndex;
@@ -1197,6 +1220,11 @@
listBox->HandlePointerEventL( aPointerEvent );
break;
}
+ default:
+ {
+ listBox->HandlePointerEventL( aPointerEvent );
+ break;
+ }
}
}
}
--- a/phonebookui/Phonebook2/remotecontactlookup/loc/phonebook2rcl.loc Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/remotecontactlookup/loc/phonebook2rcl.loc Tue May 11 16:00:21 2010 +0300
@@ -187,6 +187,31 @@
// r:5.2
#define qtn_rcl_opt_audio "Audio message"
+// d:Header Stylus Popup and Context Specific menu for Voice call command.
+// l:list_single_pane_t1_cp2
+// r:5.2
+#define qtn_rcl_stylus_popup_voice_call "Voice call"
+
+// d:Header Stylus Popup and Context Specific menu for Video call command.
+// l:list_single_pane_t1_cp2
+// r:5.2
+#define qtn_rcl_stylus_popup_video_call "Video call"
+
+// d:Header Stylus Popup and Context Specific menu for Send message command.
+// l:list_single_pane_t1_cp2
+// r:5.2
+#define qtn_rcl_stylus_popup_msg "Send message"
+
+// d:Header Stylus Popup and Context Specific menu for Send email command.
+// l:list_single_pane_t1_cp2
+// r:5.2
+#define qtn_rcl_stylus_popup_email "Send email"
+
+// d:Header Stylus Popup and Context Specific menu for Send business card command.
+// l:list_single_pane_t1_cp2
+// r:5.2
+#define qtn_rcl_stylus_popup_bcard "Send business card"
+
// d:Softkey text.
// l:control_pane_t1/opt7
// r:5.2
@@ -352,7 +377,7 @@
// d:Wait note is displayed when retriving information for saving contact
// d:to the database takes longer than 1 sec.
-// l:popup_note_window/opt2
+// l:popup_note_wait_window
// r:5.2
//
#define qtn_rcl_saving_wait_note "Saving contact"
--- a/phonebookui/Phonebook2/spbcontentprovider/src/spbcontactdatamodelprivate.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/spbcontentprovider/src/spbcontactdatamodelprivate.cpp Tue May 11 16:00:21 2010 +0300
@@ -24,6 +24,7 @@
#include <CPbk2IconArray.h>
#include <MPbk2FieldProperty.h>
#include <MPbk2ClipListBoxText.h>
+#include <f32file.h>
#include <CVPbkContactManager.h>
#include <MVPbkContactLink.h>
@@ -423,8 +424,7 @@
TBool CSpbContactDataModelPrivate::IsHiddenField(const MVPbkFieldType* aFieldType)
{
TInt resId = aFieldType->FieldTypeResId();
- return ( resId == R_VPBK_FIELD_TYPE_SYNCCLASS ||
- resId == R_VPBK_FIELD_TYPE_CALLEROBJIMG );
+ return ( resId == R_VPBK_FIELD_TYPE_SYNCCLASS );
}
// ---------------------------------------------------------------------------
@@ -454,13 +454,37 @@
}
TPtrC fieldText = MVPbkContactFieldTextData::Cast(aFieldData).Text();
+ TInt resId = aFieldType.FieldTypeResId();
+ HBufC* defaultText = NULL;
+ if( resId == R_VPBK_FIELD_TYPE_CALLEROBJIMG )
+ {
+ RFs& fs = iCoeEnv.FsSession();
+ TEntry entry;
+ if ( fs.Entry( fieldText, entry) == KErrNone )
+ {
+ // get image name
+ TParse parse;
+ parse.Set(fieldText, NULL, NULL);
+ fieldText.Set(parse.Name());
+
+ }
+ else
+ {
+ // use default image name
+ defaultText = iCoeEnv.AllocReadResourceLC( R_QTN_PHOB_FIELD_THUMBNAIL );
+ fieldText.Set( defaultText->Des() );
+ }
+ }
TPtr columnBuf( ExpandColumnBufferL( fieldText.Length() ) );
columnBuf.Zero();
// replace listbox separator characters.
Pbk2PresentationUtils::AppendAndReplaceChars( columnBuf, fieldText,
KCharsToReplace, KReplacementChars );
-
+ if( defaultText )
+ {
+ CleanupStack::PopAndDestroy( defaultText );
+ }
// Replace characters that can not be displayed correctly.
Pbk2PresentationUtils::ReplaceNonGraphicCharacters( columnBuf, KReplacedChars );
--- a/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPContactManager.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPContactManager.cpp Tue May 11 16:00:21 2010 +0300
@@ -138,6 +138,7 @@
void CxSPContactManager::GetMappedPbkContactsL( TUint32 aId, TInt32 axSPContactId,
RPointerArray<MVPbkContactLink>& aPbkContactLinks ) const
{
+ CleanupClosePushL( aPbkContactLinks );
TInt count = iContactMap.Count();
for( TInt i = 0; i < count; i++ )
{
@@ -147,12 +148,14 @@
User::LeaveIfError( aPbkContactLinks.Append( map->iPbkContactLink ) );
}
}
+ CleanupStack::Pop();
}
void CxSPContactManager::GetMappedxSPContactsL( TUint32 aId,
const MVPbkContactLink& aPbkContactLink,
RArray<TInt32>& axSPContactIds ) const
{
+ CleanupClosePushL( axSPContactIds );
const TInt count = iContactMap.Count();
for( TInt i = 0; i < count; i++ )
{
@@ -165,6 +168,7 @@
}
}
}
+ CleanupStack::Pop();
}
void CxSPContactManager::ViewActivatedL( const TVwsViewId& aPrevViewId,
--- a/phonebookui/Speeddial/ControlInc/SpdiaGridDlg.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/ControlInc/SpdiaGridDlg.h Tue May 11 16:00:21 2010 +0300
@@ -101,10 +101,11 @@
* from CAknDialog
*/
TBool OkToExitL(TInt aButtonId);
+
/**
- * from CAknDialog
- */
- void HandleDialogPageEventL (TInt);
+ * From CCoeControl,HandlePointerEventL.
+ */
+ void HandlePointerEventL( const TPointerEvent& aPointerEvent );
protected:
/**
@@ -136,6 +137,8 @@
TInt iCbaID;
TBool iNeedUpdate;
TInt iPrevIndex;
+ // Grid index in which the button down
+ TInt iButton1DownIndex;
};
#endif // SPDIAGRIDDLG_H
--- a/phonebookui/Speeddial/ControlSrc/SpdiaGridDlg.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/ControlSrc/SpdiaGridDlg.cpp Tue May 11 16:00:21 2010 +0300
@@ -83,6 +83,7 @@
{
iControl = CONST_CAST(CSpdiaControl*, &aControl);
iCbaID = R_AVKON_SOFTKEYS_BACK;
+ iButton1DownIndex = 0;
}
// ----------------------------------------------------
@@ -369,13 +370,11 @@
if ( Layout_Meta_Data::IsLandscapeOrientation() )
{
- StatusPane->MakeVisible( ETrue );
AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,mainPaneRect );
StatusPane->DrawNow();
}
else
{
- StatusPane->MakeVisible( EFalse );
AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, statusPaneRect );
mainPaneRect.iTl = statusPaneRect.iTl;
@@ -395,14 +394,27 @@
}
// ---------------------------------------------------------
-// CSpdiaGridDlg::HandleDialogPageEventL()
-// Handles the events on the dialog page (for Touch)
+// CSpdiaGridDlg::HandlePointerEventL()
+// Handle the pointer events on the dialog page, instead of HandleDialogPageEventL.
+// Because HandleDialogPageEventL() can not handle the different pointer events.
+// Only when the index button down is the same with the index button up, assign is right action.
// ---------------------------------------------------------
-//
-void CSpdiaGridDlg::HandleDialogPageEventL(TInt /*aEventId*/)
- {
- // When clicking on grid, the function will simulate the event
- // just like clicking on LSK
- TryExitL( EAknSoftkeyOk );
- }
+//
+void CSpdiaGridDlg::HandlePointerEventL( const TPointerEvent& aPointerEvent )
+ {
+ iGrid->HandlePointerEventL( aPointerEvent );
+ if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+ {
+ iGrid->View()->XYPosToItemIndex( aPointerEvent.iPosition, iButton1DownIndex );
+ }
+ else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+ {
+ TInt button1UpIndex = -1;
+ iGrid->View()->XYPosToItemIndex( aPointerEvent.iPosition, button1UpIndex );
+ if( iButton1DownIndex == button1UpIndex )
+ {
+ TryExitL( EAknSoftkeyOk );
+ }
+ }
+ }
// End of File
--- a/phonebookui/Speeddial/VPbkControlSrc/speeddialprivate.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/VPbkControlSrc/speeddialprivate.cpp Tue May 11 16:00:21 2010 +0300
@@ -1970,20 +1970,6 @@
if ( !CheckSpaceBelowCriticalLevelL() )
{
- if ( iGridUsed == EGridNoUse && (*iSdmArray)[aIndex].Contact() == NULL )
- {
- iQueryDialog = CAknQueryDialog::NewL(CAknQueryDialog::ENoTone);
- TBool resDialog(EFalse);
- TRAPD(error,
- resDialog = iQueryDialog->ExecuteLD(R_SPDIA_QUERY_ASSIGN) );
- iQueryDialog = NULL;
- User::LeaveIfError(error);
- if (!resDialog)
- {
- result = EFalse;
- }
- }
-
if ( result && (*iSdmArray)[aIndex].Contact() != NULL )
{
//if(iGridUsed == EGridNoUse)//because grid will be used if you want to replace or change
@@ -2304,10 +2290,9 @@
CreateDataL( *iGrid );
}
// If the view number note popped up and the customer delete the image of contact
- // refresh the note dialog.
+ // Set the update flag.
if ( iRefreshObserver && iCurrentIndex == findResult )
{
- iRefreshObserver->RefreshDialog();
iUpdateFlag = ETrue;
}
}
@@ -2853,58 +2838,70 @@
// ---------------------------------------------------------
//
void CSpeedDialPrivate::AppendTextL(const TSpdiaIndexDataVPbk& aSdmData, TPtr& aText)
-{
-
- if (aSdmData.Contact() == NULL)
{
- aText.Append(KDesTab2);
- aText.Append(KDesTab2);
- }
+ if ( aSdmData.Contact() == NULL )
+ {
+ aText.Append( KDesTab2 );
+ aText.Append( KDesTab2 );
+ }
else
- {
- // Test application name formatting logic is that take last name and
- // first name and combine them using space as a separator. If either of
- // them exists use company name. If there are still no name use "Unnamed"
+ {
+ // Test application name formatting logic is that take last name and
+ // first name and combine them using space as a separator. If either of
+ // them exists use company name. If there are still no name use "Unnamed"
- // Get field types from the master field type list
- const MVPbkFieldType* lastNameType =
- iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME );
- const MVPbkFieldType* firstNameType =
- iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME );
- const MVPbkFieldType* companyNameType =
- iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_COMPANYNAME );
+ // Get field types from the master field type list
+ const MVPbkFieldType* lastNameType = NULL;
+ const MVPbkFieldType* firstNameType = NULL;
+ const MVPbkFieldType* companyNameType =
+ iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_COMPANYNAME );
- CDesCArrayFlat* bufs = new( ELeave ) CDesCArrayFlat( 2 );
- CleanupStack::PushL( bufs );
+ TInt language = User::Language();
+
+ CDesCArrayFlat* bufs = new( ELeave ) CDesCArrayFlat( 2 );
+ CleanupStack::PushL( bufs );
- // Non-graphical characters are replaced with space
- const TText KReplaceChar = ' ';
+ // Non-graphical characters are replaced with space
+ const TText KReplaceChar = ' ';
- // Contact should have only one last name field
- CVPbkBaseContactFieldTypeIterator* itr =
- CVPbkBaseContactFieldTypeIterator::NewLC( *lastNameType,
- aSdmData.Contact()->Fields() );
- while ( itr->HasNext() )
- {
- const MVPbkBaseContactField* field = itr->Next();
- // last name field is text data
- const MVPbkContactFieldTextData& data =
- MVPbkContactFieldTextData::Cast( field->FieldData() );
- HBufC* lastName = data.Text().AllocLC();
+ if ( ( language == ELangTaiwanChinese )
+ || ( language == ELangHongKongChinese )
+ || ( language == ELangPrcChinese ) )
+ {
+ lastNameType = iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME );
+ firstNameType = iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME );
+ }
+ else
+ {
+ // Change the display order as first name - last name.
+ lastNameType = iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME );
+ firstNameType = iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME );
+ }
+
+ // Contact should have only one last name field
+ CVPbkBaseContactFieldTypeIterator* itr =
+ CVPbkBaseContactFieldTypeIterator::NewLC( *lastNameType, aSdmData.Contact()->Fields() );
+ while ( itr->HasNext() )
+ {
+ const MVPbkBaseContactField* field = itr->Next();
+ // last name field is text data
+ const MVPbkContactFieldTextData& data =
+ MVPbkContactFieldTextData::Cast( field->FieldData() );
+ HBufC* lastName = data.Text().AllocLC();
- TPtr lName(NULL, 0);
- lName.Set( lastName->Des() );
- ReplaceNonGraphicCharacters( lName, KReplaceChar );
+ TPtr lName(NULL, 0);
+ lName.Set( lastName->Des() );
+ ReplaceNonGraphicCharacters( lName, KReplaceChar );
- const TInt len = lName.Length();
- if (0 < len)
- {
- bufs->AppendL( lName);
- }
+ const TInt len = lName.Length();
+ if ( 0 < len )
+ {
+ bufs->AppendL( lName);
+ }
- CleanupStack::PopAndDestroy( lastName );
- }
- CleanupStack::PopAndDestroy( itr );
+ CleanupStack::PopAndDestroy( lastName );
+ }
+ CleanupStack::PopAndDestroy( itr );
// Contact should have only one first name field
itr = CVPbkBaseContactFieldTypeIterator::NewLC( *firstNameType,
--- a/phonebookui/Speeddial/inc/SpdiaContainer.h Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/inc/SpdiaContainer.h Tue May 11 16:00:21 2010 +0300
@@ -151,6 +151,11 @@
* Set status pane to the normal status.
*/
void SetStatusPaneL();
+
+ /**
+ * Check whether the view note is displaying when making speeddial to background.
+ */
+ CSpdiaNoteDialog* GetViewDialogStatus();
public: // Functions from CCoeControl classes
/**
--- a/phonebookui/Speeddial/src/SpdiaContainer.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/src/SpdiaContainer.cpp Tue May 11 16:00:21 2010 +0300
@@ -379,6 +379,7 @@
TRAP_IGNORE( iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff ) );
+ iGrid->ScrollBarFrame()->VerticalScrollBar()->SetRect( TRect( 0,0,0,0 ) );
CFormattedCellListBoxData* data = iGrid->ItemDrawer()->FormattedCellData();
data->SetTransparentSubCellL( SDM_TN_CIF_TURNED, ETrue ); //5
@@ -1046,6 +1047,17 @@
return;
}
+ // check if the position is in grid view
+ CAknGridView* gridView = iGrid->GridView();
+ TInt itemIndex = 0;
+ TRect visibleItemsRect(gridView->ViewRect().iTl,
+ TSize(gridView->ItemSize(itemIndex).iWidth * gridView->NumberOfColsInView(),
+ gridView->ItemSize(itemIndex).iHeight * gridView->NumberOfRowsInView()));
+ if (!visibleItemsRect.Contains(aPointerEvent.iPosition))
+ {
+ return;
+ }
+
// Check if touch is enabled or not.
if ( !AknLayoutUtils::PenEnabled() )
{
@@ -1148,14 +1160,14 @@
// --------------------------------------------------------------------------
//
void CSpdiaContainer::HandleLongTapEventL(
- const TPoint& /*aPenEventLocation*/,
- const TPoint& aPenEventScreenLocation )
+ const TPoint& aPenEventLocation,
+ const TPoint& /*aPenEventScreenLocation*/ )
{
// Get the Current Data Index
TInt itemIndex( KErrNotFound );
// Get position when user press screen
- iGrid->View()->XYPosToItemIndex( aPenEventScreenLocation, itemIndex );
+ iGrid->View()->XYPosToItemIndex( aPenEventLocation, itemIndex );
// Compare two index
if ( AknLayoutUtils::PenEnabled() && ( itemIndex == iGrid->CurrentDataIndex() ) )
@@ -1202,7 +1214,7 @@
statusPane->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
}
- if ( statusPane->IsVisible() )
+ if ( statusPane->IsVisible()&&(!iView->IsShowVmbxDlg()) )
{
statusPane->MakeVisible( EFalse );
}
@@ -1248,4 +1260,14 @@
break;
}
}
+
+ // --------------------------------------------------------------------------
+ // CSpdiaContainer::GetViewDialogStatus
+ // Check whether the view note is displaying when making speeddial to background.
+ // --------------------------------------------------------------------------
+ //
+ CSpdiaNoteDialog* CSpdiaContainer::GetViewDialogStatus()
+ {
+ return iDialog;
+ }
// End of File
--- a/phonebookui/Speeddial/src/SpdiaView.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/phonebookui/Speeddial/src/SpdiaView.cpp Tue May 11 16:00:21 2010 +0300
@@ -457,6 +457,14 @@
LoadCba( iContainer->MenuResourceID() );
iAIWRunFlag = EFalse;
+
+ // If the view note displays when switching speeddial to background.
+ // Making the note pops up again.
+ if ( iSpeedPrivate->UpdateFlag() && iContainer->GetViewDialogStatus() )
+ {
+ CmdViewNumberL();
+ iSpeedPrivate->SetUpdateFlag( EFalse );
+ }
}
else
{
--- a/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAlgorithm1MultiSearchHelper.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAlgorithm1MultiSearchHelper.cpp Tue May 11 16:00:21 2010 +0300
@@ -410,6 +410,7 @@
{
PRINT ( _L("Enter CPcsAlgorithm1MultiSearchHelper::ConvertQueryToListL") );
+ CleanupResetAndDestroyPushL( aQueryList );
for ( TInt queryIndex = 0; queryIndex < aSearchQuery.Count(); queryIndex++ )
{
TBuf<KPsQueryMaxLen> dataWithKeys;
@@ -419,7 +420,8 @@
aQueryList.AppendL( dWKToAppend );
CleanupStack::Pop( dWKToAppend ); // ownership transfered
}
-
+
+ CleanupStack::Pop( &aQueryList );
PRINT ( _L("End CPcsAlgorithm1MultiSearchHelper::ConvertQueryToListL") );
}
--- a/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAlgorithm1Utils.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAlgorithm1Utils.cpp Tue May 11 16:00:21 2010 +0300
@@ -41,6 +41,7 @@
void CPcsAlgorithm1Utils::FormCompleteSearchResultsL(RPointerArray<CPSDATA_R_PTR_ARRAY>& aSearchResultsArr,
RPointerArray<CPsData>& aSearchResults)
{
+ CleanupClosePushL( aSearchResults );
TInt maxIndex = 0;
TInt maxValue = aSearchResultsArr[maxIndex]->Count();
TLinearOrder<CPsData> rule( CPcsAlgorithm1Utils::CompareDataBySortOrderL );
@@ -74,6 +75,7 @@
}
}
}
+ CleanupStack::Pop();
}
// ----------------------------------------------------------------------------
@@ -330,6 +332,8 @@
void CPcsAlgorithm1Utils::AppendMatchToSeqL(
RPointerArray<TDesC>& aMatchSeq, const TDesC& aMatch )
{
+ CleanupResetAndDestroyPushL( aMatchSeq );
+
HBufC* seq = aMatch.AllocLC();
seq->Des().UpperCase();
TIdentityRelation<TDesC> rule(CompareExact);
@@ -342,6 +346,7 @@
{
CleanupStack::PopAndDestroy( seq );
}
+ CleanupStack::Pop( &aMatchSeq );
}
// End of File
--- a/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsCache.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsCache.cpp Tue May 11 16:00:21 2010 +0300
@@ -120,7 +120,7 @@
void CPcsCache::GetContactsForKeyL(TInt aKeyId, RPointerArray<CPcsPoolElement>& aData)
{
PRINT ( _L("Enter CPcsCache::GetContactsForKeyL") );
-
+ CleanupClosePushL( aData );
if ( aKeyId >= 0 && aKeyId < iKeyArr.Count() )
{
const RPointerArray<CPcsPoolElement>& arr = *iKeyArr[aKeyId];
@@ -129,7 +129,7 @@
aData.AppendL(arr[i]);
}
}
-
+ CleanupStack::Pop();
PRINT ( _L("End CPcsCache::GetContactsForKeyL") );
}
@@ -140,12 +140,12 @@
void CPcsCache::GetAllContentsL(RPointerArray<CPsData>& aData)
{
PRINT ( _L("Enter CPcsCache::GetAllContentsL") );
-
+ CleanupClosePushL( aData );
for ( TInt i = 0; i < iMasterPool.Count(); i++ )
{
aData.AppendL(iMasterPool[i]);
}
-
+ CleanupStack::Pop();
PRINT ( _L("End CPcsCache::GetAllContentsL") );
}
--- a/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsAlgorithm2MultiSearchHelper.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsAlgorithm2MultiSearchHelper.cpp Tue May 11 16:00:21 2010 +0300
@@ -224,6 +224,9 @@
RArray<TPsMatchLocation>& aMatchLocation)
{
PRINT ( _L("Enter CPcsAlgorithm2MultiSearchHelper::SearchMatchSeqMultiL") );
+ CleanupResetAndDestroyPushL( aMatchSet );
+ CleanupClosePushL( aMatchLocation );
+
RPointerArray<HBufC> queryList;
ConvertQueryToListL(aPsQuery, queryList);
@@ -350,6 +353,9 @@
// Free the query list
queryList.ResetAndDestroy();
tempqueryList.Reset();
+
+ CleanupStack::Pop();
+ CleanupStack::Pop( &aMatchSet );
PRINT ( _L("End CPcsAlgorithm2MultiSearchHelper::SearchMatchSeqMultiL") );
}
--- a/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsAlgorithm2Utils.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsAlgorithm2Utils.cpp Tue May 11 16:00:21 2010 +0300
@@ -35,6 +35,8 @@
void CPcsAlgorithm2Utils::FormCompleteSearchResultsL(RPointerArray<CPSDATA_R_PTR_ARRAY>& aSearchResultsArr,
RPointerArray<CPsData>& SearchResults)
{
+ CleanupClosePushL( SearchResults );
+
TInt maxIndex = 0;
TInt maxValue = aSearchResultsArr[maxIndex]->Count();
TLinearOrder<CPsData> rule(CPcsAlgorithm2Utils::CompareDataBySortOrder);
@@ -68,6 +70,7 @@
}
}
}
+ CleanupStack::Pop();
}
// ----------------------------------------------------------------------------
--- a/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsCache.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm2/src/CPcsCache.cpp Tue May 11 16:00:21 2010 +0300
@@ -191,7 +191,7 @@
void CPcsCache::GetContactsForKeyL(TInt aKeyId, RPointerArray<CPcsPoolElement>& aData)
{
PRINT ( _L("Enter CPcsCache::GetContactsForKeyL") );
-
+ CleanupClosePushL( aData );
RPointerArray<CPcsPoolElement> arr = *keyArr[aKeyId];
for (int i = 0; i < arr.Count(); i++)
{
@@ -199,6 +199,7 @@
aData.AppendL(value);
}
+ CleanupStack::Pop();
PRINT ( _L("End CPcsCache::GetContactsForKeyL") );
}
@@ -209,13 +210,13 @@
void CPcsCache::GetAllContentsL(RPointerArray<CPsData>& aData)
{
PRINT ( _L("Enter CPcsCache::GetAllContentsL") );
-
+ CleanupClosePushL( aData );
for (int i = 0; i < masterPool.Count(); i++)
{
CPsData* value = masterPool[i];
aData.AppendL(value);
}
-
+ CleanupStack::Pop();
PRINT ( _L("End CPcsCache::GetAllContentsL") );
}
--- a/predictivesearch/PcsAlgorithm/Algorithm2/src/FindUtilChineseECE.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsAlgorithm/Algorithm2/src/FindUtilChineseECE.cpp Tue May 11 16:00:21 2010 +0300
@@ -70,6 +70,28 @@
_LIT(KPanicReason, "Abnormal input parameters!");
const TInt KLitLineFeed(8233);
+
+// CleanupStack helpers for item owning RPointerArrays
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL( T& aRef )
+ {
+ CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
+ }
+private:
+ inline static void ResetAndDestroy( TAny *aPtr )
+ {
+ static_cast<T*>( aPtr )->ResetAndDestroy();
+ }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL( T& aRef )
+ {
+ CleanupResetAndDestroy<T>::PushL( aRef );
+ }
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------
@@ -1055,6 +1077,7 @@
void CFindUtilChineseECE::InsertStrInforArrayL(RPointerArray<STRINGINFO>& aStringInfoArr,
TDes &aSegmentStr, const TBool aChinese)
{
+ CleanupResetAndDestroyPushL( aStringInfoArr );
if (aSegmentStr.Length() <= 0)
{
return;
@@ -1069,6 +1092,7 @@
aStringInfoArr.AppendL(strInfo);
aSegmentStr.Zero();
+ CleanupStack::Pop( &aStringInfoArr );
}
// ---------------------------------------------------------
--- a/predictivesearch/PcsServer/group/PcsServer.mmp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/PcsServer/group/PcsServer.mmp Tue May 11 16:00:21 2010 +0300
@@ -25,6 +25,7 @@
SECUREID 0x2000B5B6
EPOCHEAPSIZE 0x100000 0x1000000
+EPOCPROCESSPRIORITY background
SOURCEPATH ../src
SOURCE CPcsStartup.cpp
--- a/predictivesearch/adapters/contacts/src/cpcscontactstore.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/predictivesearch/adapters/contacts/src/cpcscontactstore.cpp Tue May 11 16:00:21 2010 +0300
@@ -60,11 +60,13 @@
#include <contactsort.rsg>
// CONSTANTS
+namespace {
const TInt KSimStoreOffset = -5000;
+const TInt KTimerInterval = 100000; // 100 milliseconds
_LIT(KResourceFileName, "contactsort.rsc");
_LIT(KPcsViewPrefix,"PCSView_");
-
+}
// FORWARD DECLARATION
// ============================== MEMBER FUNCTIONS ================================
@@ -318,7 +320,10 @@
{
// Fetch next block
iNextState = EFetchContactBlock;
- IssueRequest();
+ // Delay the next fetch since contact fetch is CPU intensive,
+ // this will give other threads a chance to use CPU
+ iTimer.After( iStatus, KTimerInterval); // 100 milliseconds
+ SetActive();
}
}
@@ -344,7 +349,10 @@
{
// Fetch next block
iNextState = EFetchContactBlock;
- IssueRequest();
+ // Delay the next fetch since contact fetch is CPU intensive,
+ // this will give other threads a chance to use CPU
+ iTimer.After( iStatus, KTimerInterval); // 100 milliseconds
+ SetActive();
}
PRINT ( _L("End CPcsContactStore::VPbkSingleContactOperationFailed") );
@@ -815,11 +823,6 @@
case EFetchContactBlock:
PRINT ( _L("Issuing the fetch request for next block") );
FetchlinksL();
-
- // Delay the next fetch since contact fetch is CPU intensive,
- // this will give other threads a chance to use CPU
- iTimer.After( timerStatus, 100000); // 100 milliseconds
- User::WaitForRequest( timerStatus );
break;
case EComplete:
--- a/presencecache/presencecacheutils/inc/presenceobjecthelpers.h Tue Apr 27 16:23:35 2010 +0300
+++ b/presencecache/presencecacheutils/inc/presenceobjecthelpers.h Tue May 11 16:00:21 2010 +0300
@@ -61,4 +61,19 @@
~PresenceCacheBuddyUtils();
};
+// CleanupStack helpers for item owning RPointerArrays
+template <class T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL(T& aRef)
+ { CleanupStack::PushL(TCleanupItem(&ResetAndDestroy,&aRef)); }
+private:
+ inline static void ResetAndDestroy(TAny *aPtr)
+ { static_cast<T*>(aPtr)->ResetAndDestroy(); }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL(T& aRef)
+ { CleanupResetAndDestroy<T>::PushL(aRef); }
#endif // PRESENCEOBJECTHELPERS_H
--- a/presencecache/presencecacheutils/src/presenceobjecthelpers.cpp Tue Apr 27 16:23:35 2010 +0300
+++ b/presencecache/presencecacheutils/src/presenceobjecthelpers.cpp Tue May 11 16:00:21 2010 +0300
@@ -64,6 +64,7 @@
//
EXPORT_C void TPresenceArrayPacker::UnPackArrayL( RPointerArray< MPresenceBuddyInfo2 >& aBufferArray, const TDesC8& aPack )
{
+ CleanupResetAndDestroyPushL( aBufferArray );
// No reset
if ( ! aPack.Length() )
{
@@ -85,10 +86,10 @@
info = MPresenceBuddyInfo2::NewLC();
info->InternalizeL( rs );
aBufferArray.AppendL( info );
-
+ CleanupStack::Pop();
}
- CleanupStack::Pop( objCount ); // all the objects
CleanupStack::PopAndDestroy(); // rs
+ CleanupStack::Pop( &aBufferArray );
}