--- /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