javaextensions/pim/framework/inc.s60/cpimcontactitem.h
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/framework/inc.s60/cpimcontactitem.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,255 @@
+/*
+* Copyright (c) 2008 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:  Contact item implementation.
+ *
+*/
+
+
+#ifndef CPIMCONTACTITEM_H
+#define CPIMCONTACTITEM_H
+
+// INTERNAL INCLUDES
+#include "cpimitem.h"
+#include "mpimcontactitem.h"
+
+// EXTERNAL INCLUDES
+#include <cntdef.h>
+
+// FORWARD DECLARATIONS
+class CPIMContactValidator;
+class MPIMContactAdapterManager;
+class MPIMContactListAdapter;
+
+// CLASS DECLARATION
+
+/**
+ *  PIM item Contact specialization.
+ *
+ *  @par Notes:
+ *  @li The Contact item implementation supports preferred index handling only
+ *  on string fields (\ref EPIMFieldString). For all other field types the
+ *  attribute is either leave intact (if the contact is not associated with
+ *  a list), or dropped silently (if the contact is associated with a list).
+ */
+NONSHARABLE_CLASS(CPIMContactItem): public CPIMItem, public MPIMContactItem
+{
+
+public: // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     * @param aContactValidator Contact validator.
+     */
+    static CPIMContactItem* NewL(
+        const CPIMContactValidator& aContactValidator);
+
+    /**
+     * Two-phased constructor, puts the created item into cleanup stack.
+     * @param aContactValidator Contact validator.
+     */
+    static CPIMContactItem* NewLC(
+        const CPIMContactValidator& aContactValidator);
+
+    /**
+     * Destructor.
+     */
+    virtual ~CPIMContactItem();
+
+public: // New functions
+
+    /**
+     * Sets the associated contact adapter manager and contact list
+     * adapter.
+     *
+     * @param aContactAdapterManager Adapter manager. Must not be NULL.
+     * @param aContactListAdapter List adapter. May be NULL.
+     */
+    void SetContactAdapterAssociation(
+        MPIMContactAdapterManager* aContactAdapterManager,
+        MPIMContactListAdapter* aContactListAdapter);
+
+    /**
+     * Removes the contact adapter associations.
+     * Performs any housekeeping related to removing the adapter
+     * associations, if necessary.
+     */
+    void RemoveAdapterAssociation();
+
+public: // Functions from CPIMItem
+
+    TPIMListType ItemType() const;
+    void commit();
+    void ListClosed();
+
+    /**
+     * @par Notes:
+     * Overridden so that first adds the string value using base class
+     * AddStringL operation and then moves preferred index, if necessary.
+     */
+    void AddStringL(TPIMField aField,
+                    TPIMAttribute aAttributes,
+                    HBufC* aValue);
+
+    /**
+     * @par Notes:
+     * Overridden so that first sets the string value using base class
+     * SetStringL operation and then moves preferred index, if necessary.
+     */
+    void SetStringL(TPIMField aField,
+                    TInt aIndex,
+                    TPIMAttribute aAttributes,
+                    HBufC* aValue);
+
+    TBool IsReadOnly(const TPIMField& aField);
+
+    /**
+     * Loads full item from the list adapter. This function
+     * should be overwriten in the base class if it supports
+     * partial data initialization
+     */
+    void DoLoadFullItemL();
+
+    /**
+     * Loads a specific field from the list adapter. This function
+     * should be overwriten in the base class if it supports
+     * partial data initialization
+     *
+     * @param aField The field which is to be loaded from
+     *        the associated list adapter
+     */
+    void DoLoadFieldL(const TPIMField aField);
+
+public: // Functions from MPIMContactItem
+
+    MPIMItemData& ItemData();
+    const MPIMItemData& ItemData() const;
+
+    /**
+     * @par Notes
+     * @li The implementation supports preferred index only on
+     *     string fields (\ref EPIMFieldString).
+     */
+
+    int getPreferredIndex(TPIMField aField) const;
+    /**
+     * Sets new contact item id for this contact item
+     *
+     * @param aContactItemId New id for this contact item. Old is to
+     *        be owerwriten
+     */
+    void SetContactItemIdL(const TPIMItemID& aContactItemId);
+
+    /**
+     * Sets new contact item id for this contact item
+     * This function was introduces for easier item id handling
+     *
+     * @param aContactItemId New id for this contact item. Old is to
+     *        be owerwriten
+     */
+    void SetContactItemIdL(const TUint aContactItemId);
+
+    /**
+     * Returns contact item id
+     * The existing PIM item id is converted to a contact
+     * contact database item id, so it is easier to use it
+     *
+     * @return Contact item id
+     */
+    TUint ContactItemIdL() const;
+
+    /**
+     * Sets the last modified date/time of the item
+     * @param aLastModified Last modification date of this item
+     */
+    void SetLastModifiedL(TPIMDate aLastModified);
+
+    /**
+     * Resets the item's internal state and remove all data
+     * associated with this item. The item is ready for use
+     * after reset
+     */
+    void PrepareForLoadL();
+
+public: // functions from pimbaseitem
+
+    int getRepeatHandle()
+    {
+        return 0;
+    }
+
+    bool isItemRepeating() const
+    {
+        return false;
+    }
+
+    void setItemRepeating(jboolean /*aSetRepeating*/) {}
+
+protected: // New functions
+
+    /**
+     * Set preferred index for a string field.
+     * Clears the preferred index attribute from all values of given field
+     * and then sets the preferred index attribute for the given index.
+     *
+     * @par Leaving:
+     * @li \c KErrArgument \a aField is invalid.
+     * @li \c KErrNotFound \a aIndex is invalid.
+     */
+    void SetPreferredIndexStringL(
+        const TPIMField& aField,
+        const TInt& aIndex,
+        TPIMAttribute aAttribute);
+
+    /**
+     * Get preferred index (value with the "preferred" attribute set)
+     * from given field.
+     *
+     * @return Index of the value with "preferred" attribute set; -1 if not
+     *         found.
+     *
+     * @par Leaving:
+     * @li \c KErrArgument - \a aField is not supported for Contact items.
+     * @li Other - internal error.
+     *
+     * @par Notes
+     * @li The implementation supports preferred index only on
+     *     string fields (\ref EPIMFieldString).
+     */
+    TInt DoGetPreferredIndexL(const TPIMField& aField) const;
+
+protected: // Constructors
+
+    /**
+     * C++ constructor.
+     */
+    CPIMContactItem(const CPIMContactValidator& aContactValidator);
+
+    // Data
+
+    /**
+     * Associated contact adapter manager. Not owned by this object.
+     * May be NULL.
+     */
+    MPIMContactAdapterManager* iContactAdapterManager;
+
+    /**
+     * Associated contact list adapter. Not owned by this object.
+     * May be NULL.
+     */
+    MPIMContactListAdapter* iContactListAdapter;
+
+};
+
+#endif // CPIMCONTACTITEM_H
+// End of File