phonebookengines/VirtualPhonebook/VPbkEng/src/VPbkContactViewFilterBuilder.cpp
changeset 0 e686773b3f54
child 68 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/VirtualPhonebook/VPbkEng/src/VPbkContactViewFilterBuilder.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 2002-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:  A factory for creating contact view filters.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "VPbkContactViewFilterBuilder.h"
+
+// Virtual Phonebook
+#include <VPbkDataCaging.hrh>
+#include <CVPbkContactManager.h>
+#include <CVPbkFieldTypeSelector.h>
+#include <VPbkFieldTypeSelectors.rsg>
+
+// Virtual Phonebook Engine Utils
+#include <RLocalizedResourceFile.h>
+
+// System includes
+#include <barsread.h>
+
+/// Unnamed namespace for local definitions
+namespace {
+
+/**
+ * Reads the given filter from resources and appends it to given selector.
+ *
+ * @param aFieldTypeSelector    Field type selector.
+ * @param aResourceId           Resource id of the filter.
+ * @param aResFile              Resource file.
+ */
+void DoAppendFilterL( CVPbkFieldTypeSelector& aFieldTypeSelector,
+        TInt aResourceId, VPbkEngUtils::RLocalizedResourceFile& aResFile )
+    {
+    TResourceReader resReader;
+    HBufC8* selectorBuf = aResFile.AllocReadLC( aResourceId );
+    resReader.SetBuffer( selectorBuf );
+    aFieldTypeSelector.AppendL( resReader );
+    CleanupStack::PopAndDestroy(); // selectorBuf
+    }
+
+} /// namespace
+
+// =========================== MEMBER FUNCTIONS =============================
+
+// --------------------------------------------------------------------------
+// VPbkContactViewFilterBuilder::AppendViewFilterL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CVPbkFieldTypeSelector&
+    VPbkContactViewFilterBuilder::BuildContactViewFilterL
+        ( CVPbkFieldTypeSelector& aFieldTypeSelector,
+        TVPbkContactViewFilter aFilter,
+        CVPbkContactManager& aContactManager )
+    {
+    // Open resource file
+    VPbkEngUtils::RLocalizedResourceFile resFile;
+    resFile.OpenLC( aContactManager.FsSession(), KVPbkRomFileDrive,
+        KDC_RESOURCE_FILES_DIR, KVPbkFieldTypeSelectorsResFileName );
+
+    TInt resourceId = KErrNotFound;
+
+    switch ( aFilter )
+        {
+        case EVPbkContactViewFilterEmail:
+            {
+            resourceId = R_VPBK_EMAIL_ADDRESS_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterPhoneNumber:
+            {
+            resourceId = R_VPBK_PHONE_NUMBER_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterMobileNumber:
+            {
+            resourceId = R_VPBK_MOBILE_NUMBER_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterFaxNumber:
+            {
+            resourceId = R_VPBK_FAX_NUMBER_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterRingingTone:
+            {
+            resourceId = R_VPBK_RINGING_TONE_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterVideoNumber:
+            {
+            resourceId = R_VPBK_VIDEO_NUMBER_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterPagerNumber:
+            {
+            resourceId = R_VPBK_PAGER_NUMBER_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterDTMF:
+            {
+            resourceId = R_VPBK_DTMF_NUMBER_SELECTOR;
+            break;
+            }
+case EVPbkContactViewFilterTopContact:  
+            {
+            resourceId = R_VPBK_TOPCONTACT_SELECTOR;
+            break;
+            }
+        case EVPbkContactViewFilterVoIP:
+            {
+            resourceId = R_VPBK_VOIP_ADDRESS_SELECTOR;
+            break;
+            }
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            break;
+            }
+        };
+
+    // Append the filter resource
+    DoAppendFilterL( aFieldTypeSelector, resourceId, resFile );
+
+    CleanupStack::PopAndDestroy(); // resFile
+    return aFieldTypeSelector;
+    }
+
+//  End of File