contacts_plat/virtual_phonebook_engine_api/inc/TVPbkContactStoreUriPtr.h
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/TVPbkContactStoreUriPtr.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2004-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 class for using contact store URIs
+*
+*/
+
+
+#ifndef TVPBKCONTACTSTOREURIPTR_H
+#define TVPBKCONTACTSTOREURIPTR_H
+
+
+// INCLUDES
+#include <e32std.h>
+#include <MVPbkStreamable.h>
+
+
+// CLASS DECLARATIONS
+
+/**
+ * A class for using contact store URIs (Uniform Resource Identifier).
+ *
+ * A URI identifies a contact store. This class is a helper for
+ * accessing URI data. It can be used to separate the different parts
+ * of the URI and compare URIs.
+ *
+ * E.g. A URI of the store could be cntdb://c:contacts.cdb.
+ * This URI have three components:
+ * 1) cntdb is a scheme - EContactStoreUriStoreType
+ * 2) c is a drive of the database - EContactStoreUriStoreDrive
+ * 3) c:contacts.cdb is the location - EContactStoreUriStoreLocation
+ *
+ * @lib VPbkEng.lib
+ */
+class TVPbkContactStoreUriPtr : public MVPbkStreamable
+    {
+    public: // Types
+        /**
+         * URI component types.
+         */
+        enum TVPbkContactStoreUriComponent
+            {
+            /// the whole URI
+            EContactStoreUriAllComponents,
+            /// the stores type, the URI's scheme 
+            EContactStoreUriStoreType,
+            /// the stores drive letter
+            EContactStoreUriStoreDrive,
+            /// the stores file/host location
+            EContactStoreUriStoreLocation
+            };
+
+    public:  // constructor and destructor
+        /**
+         * Constructs a URI pointer to aStoreUri.
+         *
+         * @param aStoreUri A reference to the contact store URI.
+         */
+        IMPORT_C TVPbkContactStoreUriPtr(const TDesC& aStoreUri);
+
+        /**
+         * Constructor.
+         */
+        IMPORT_C TVPbkContactStoreUriPtr();
+
+    public: // interface
+        /**
+         * Returns a descriptor that holds the whole Uri.
+         *
+         * @return A descriptor that holds the whole Uri.
+         */
+        IMPORT_C const TDesC& UriDes() const;
+
+        /**
+         * Compares this URI's component to aUri's component.
+         *
+         * @param aUri The URI whose component is compared.
+         * @param aComponent Defines the component that are compared.
+         * @return Zero if the URIs are the same.
+         */
+        IMPORT_C TInt Compare(const TVPbkContactStoreUriPtr& aUri, 
+                TVPbkContactStoreUriComponent aComponent) const;
+
+        /**
+         * Compares this URI's component to aUriComponent.
+         *
+         * @param aUriComponent A descriptor that contains the component data.
+         * @param aComponent Defines the component of this URI that is compared
+         *                   to aUriComponent.
+         * @return Zero if components matched.
+         */
+        IMPORT_C TInt Compare(const TDesC& aUriComponent, 
+                TVPbkContactStoreUriComponent aComponent) const;
+
+        /**
+         * Returns a pointer to the aComponent part of URI.
+         *
+         * @param aComponent Defines the component that is returned.
+         * @return a pointer to the aComponent part of URI.
+         */
+        IMPORT_C const TPtrC Component(
+                TVPbkContactStoreUriComponent aComponent) const;
+
+        /**
+         * Sets this URI pointer to point to the same URI as aUri.
+         *
+         * @param aUri The URI that will be pointed to.
+         */
+        IMPORT_C void Set(const TVPbkContactStoreUriPtr& aUri);
+
+        /**
+         * Returns the length of the URI.
+         *
+         * @return The length of the URI.
+         */
+        IMPORT_C TInt Length() const;
+
+    public: // from MVPbkStreamable
+        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+        IMPORT_C TInt ExternalizedSize() const;
+
+    private: // implementation
+        TInt Compare(const TDesC& aLhsUri, const TDesC& aRhsUri) const;
+
+    private: // Data
+        /// Own: Pointer to the URI 
+        TPtrC iUriBufferPointer;
+        ///Own: Extension reserve
+        TAny* iSpare;
+    };
+
+#endif  // TVPBKCONTACTSTOREURIPTR_H
+
+//End of file