contacts_plat/virtual_phonebook_engine_api/inc/RVPbkContactFieldDefaultPriorities.h
changeset 0 e686773b3f54
child 22 5577f3882caa
child 32 2828b4d142c0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/RVPbkContactFieldDefaultPriorities.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,163 @@
+/*
+* 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:  An array of default field priorities.
+*
+*/
+
+
+#ifndef RVPBKCONTACTFIELDDEFAULTPRIORITIES_H
+#define RVPBKCONTACTFIELDDEFAULTPRIORITIES_H
+
+//  INCLUDES
+#include <e32std.h>
+#include <vpbkfieldtype.hrh> // TVPbkDefaultType
+
+// CONSTANTS
+namespace VPbkContactFieldDefaultPriorities
+    {
+    /**
+     * The maximum amount of elements that can be appended to the array.
+     */
+    const TInt KMaxElementCount = 255;
+    /**
+     * The maximum value of TVPbkDefaultType
+     */
+    const TInt KMaxElementValue = 255;
+    }
+
+// CLASS DECLARATION
+
+/**
+ * An array of default field priorities.
+ *
+ * A helper class for client to manage default attribute priorities
+ * of the contact fields. For accessing default information the client uses
+ * the attribute manager.
+ *
+ * @see CVPbkContactManager::ContactAttributeManagerL
+ * @see CVPbkDefaultAttribute
+ */
+class RVPbkContactFieldDefaultPriorities
+    {
+    public:  // Interface
+        /**
+         * Default constructor for an empty array.
+         */
+        RVPbkContactFieldDefaultPriorities();
+        /**
+
+        /**
+         * Releases resources used for storing the array.
+         *
+         * This object must not be used after Close() has been called to it.
+         */
+        void Close();
+
+        /**
+         * Returns the number of elements in the array.
+         *
+         * @return The number of elements in the array.
+         */
+        TInt Count() const;
+
+        /**
+         * Returns true if this array is empty.
+         *
+         * @return ETrue if the array is empty.
+         */
+        TBool IsEmpty() const;
+        
+        /**
+         * Returns a type at aIndex.
+         *
+         * @param aIndex A zero based index of the element.
+         * @return A type at aIndex.
+         */
+        TVPbkDefaultType At(const TInt aIndex) const;
+        
+        /**
+         * Appends a default type to the array.
+         *
+         * @param aDefaultType The default type to append in to the array.
+         * @return KErrNone or a system wide error code.
+         */
+        TInt Append(const TVPbkDefaultType aDefaultType);
+
+        /**
+         * Outputs this objects state to a buffer.
+         *
+         * @return A buffer containing the state of the object.
+         */
+        IMPORT_C HBufC8* ExternalizeLC() const;
+        
+        /**
+         * Initializes the instance from the buffer.
+         *
+         * @param aBuffer A buffer that was created using ExternalizeLC.
+         */
+        IMPORT_C void InternalizeL(const TDesC8& aBuffer);
+
+    private: // Data
+        /// Own: An array of default types to use.
+        RArray<TVPbkDefaultType> iDefaultTypes;
+    };
+
+// INLINE IMPLEMENTATION
+
+inline RVPbkContactFieldDefaultPriorities::RVPbkContactFieldDefaultPriorities()
+    {
+    }
+
+inline void RVPbkContactFieldDefaultPriorities::Close()
+    {
+    iDefaultTypes.Close();
+    }
+
+inline TInt RVPbkContactFieldDefaultPriorities::Count() const
+    {
+    return iDefaultTypes.Count();
+    }
+
+inline TBool RVPbkContactFieldDefaultPriorities::IsEmpty() const
+    {
+    return !iDefaultTypes.Count();
+    }
+
+inline TVPbkDefaultType RVPbkContactFieldDefaultPriorities::At
+        (const TInt aIndex) const
+    {
+    return iDefaultTypes[aIndex];
+    }
+
+inline TInt RVPbkContactFieldDefaultPriorities::Append
+        (const TVPbkDefaultType aDefaultType)
+    {
+    TInt ret = KErrOverflow;
+    if (Count() < VPbkContactFieldDefaultPriorities::KMaxElementCount)
+        {
+        if (aDefaultType > VPbkContactFieldDefaultPriorities::KMaxElementValue)
+            {
+            ret = KErrTooBig;
+            }
+        else
+            {
+            ret = iDefaultTypes.Append(aDefaultType);
+            }
+        }
+    return ret;
+    }
+
+#endif // RVPBKCONTACTFIELDDEFAULTPRIORITIES_H
+
+// End of File