javaextensions/pim/agnadapter/inc.s60/cpimtodolistadapter.h
branchRCL_3
changeset 19 04becd199f91
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/agnadapter/inc.s60/cpimtodolistadapter.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,233 @@
+/*
+* 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:  Handles PIM todo list <-> Agenda Model todo conversions
+ *
+*/
+
+
+#ifndef CPIMTODOLISTADAPTER_H
+#define CPIMTODOLISTADAPTER_H
+
+// INCLUDES
+#include "mpimtodolistadapter.h"
+#include "cpimagnlistadapter.h"
+#include "pimexternalchanges.h"
+
+// FORWARD DECLARATIONS
+class MPIMToDoItem;
+class CPIMAgnToDoAdapter;
+
+// CLASS DECLARATION
+
+/**
+ * PIM ToDo List Adapter class
+ *
+ *  To-do list adapter creates, reads, writes and removes to-do items
+ *  in a native database. See also \ref MPIMListAdapter class description.
+ */
+NONSHARABLE_CLASS(CPIMToDoListAdapter): public CPIMAgnListAdapter,
+        public MPIMToDoListAdapter
+{
+public: // Constructor and destructor
+
+    /**
+     * Two-phased constructor.
+     */
+    static CPIMToDoListAdapter* NewL(java::util::FunctionServer* aFuncServer);
+
+    /**
+     * Destructor.
+     */
+    ~CPIMToDoListAdapter();
+
+public: // Overloaded functions from (CPIMAgnListAdapter) MPIMListAdapter
+
+    /**
+     * Provides all categories currently existing in the native database.
+     *
+     * @return Array of categories. The contents of the array are not
+     *         meant to be modified.
+     *
+     * @par Leaving:
+     * The method leaves on error. Such error always means that the list
+     * adapter is non-functional.
+     */
+    const CDesCArray& GetCategoriesL();
+
+    /**
+     * Provides the external changes to the items (entries) in the
+     * native database. See \ref IsItemsExternallyModified method.
+     *
+     * If GetExternalItemModificationsL has never been called, all
+     * entries in the native database are considered to be new.
+     *
+     * \b Important: The interpretation of the returned data set
+     * depends of the status provided by IsItemsExternallyModified():
+     * @li \c EExternalChangesNone always means that there are no
+     *     modifications and NULL will be returned.
+     * @li \c EExternalChangesMinor means that the changes are
+     *     applied over the existing set of items, reflecting the
+     *     addition, removal and modification of the database
+     *     entries.
+     * @li \c EExternalChangesMajor means that the changes cannot
+     *     be classified and the whole set of items must be
+     *     refreshed. All current entries in the database are
+     *     returned as new entries and it is up to the caller to
+     *     discard the existing set of items and create new set of
+     *     items or to deduce which of the given entries are new
+     *     and which of the existing items have been removed.
+     *     If any existing items are reused, their data content
+     *     must be explicitly refreshed.
+     *
+     * @return An array of item state change objects. The \b ownership
+     *         of the array is transferred to the caller. If no
+     *         changes are present, \c NULL is returned.
+     *
+     * @par Leaving:
+     * The method leaves with \c KErrCorrupt if updating the list of
+     * external modifications has failed at some point. If the method has
+     * leaved once, it must always leave.
+     */
+    RPointerArray< CPIMItemStateChange>* GetExternalItemModificationsL();
+
+    /**
+     * Used to inform the list adapter that the list has been closed. The
+     * list adapter may then release all resources it has reserved.
+     * No method of the list adapter can be invoked after call to Close.
+     */
+    void Close();
+
+public: // Functions from MPIMToDoListAdapter
+
+    /**
+     * Provides access to the \ref MPIMListAdapter representation of this
+     * MPIMToDoListAdapter object.
+     *
+     * @return The \ref MPIMListAdapter representation of the specialized
+     *         list adapter.
+     */
+    MPIMListAdapter* GetPimListAdapter();
+
+    /**
+     * Creates a new To-Do item in the native Agenda File.
+     * The adapter creates a new native database entry, sets its data
+     * according to the data in \a aToDoItem, adds it to the Agenda File
+     * and sets the Item ID of \a aToDoItem. \a aToDoItem must
+     * contain valid data and have Item ID \ref KPIMNullItemID.
+     *
+     * @param aToDoItem The To-Do item to add to the Agenda File.
+     *
+     * @par Leaving:
+     * The method leaves on error. Such error always means that the list
+     * adapter is non-functional.
+     */
+    void CreateToDoItemL(MPIMToDoItem& aToDoItem);
+
+    void CPIMToDoListAdapter::DoCreateToDoItemL(
+        MPIMToDoItem& aToDoItem);
+
+    /**
+     * Reads an existing To-Do item from the Agenda File.
+     * The adapter maps the Item ID in \a aToDoItem to a native Agenda Model
+     * entry identifier, reads the entry and sets the data of
+     * \a aToDoItem according to the data in the native entry.
+     * \a aToDoItem must have valid Item ID that corresponds to an
+     * existing native Agenda File entry.
+     *
+     * @param aToDoItem The To-Do item to be read from the Agenda File.
+     *
+     * @par Leaving:
+     * The method leaves on error. Error codes should be interpreted as
+     * follows:
+     * @li \c KErrArgument - The Item ID of \a aToDoItem is
+     *        \ref KPIMNullItemID and thus invalid.
+     * @li \c KErrNotFound - No corresponding native Agenda File entry could
+     *        be retrieved, although the Item ID of \a aToDoItem is not
+     *        \ref KPIMNullItemID. The entry is probably removed from the
+     *        native Agenda File.
+     * @li Other - The list adapter is non-functional.
+     */
+    void ReadToDoItemL(MPIMToDoItem& aToDoItem);
+
+    void CPIMToDoListAdapter::DoReadToDoItemL(
+        MPIMToDoItem& aToDoItem);
+
+    /**
+     * Writes an existing To-Do item to the native Agenda File.
+     * The adapter maps the Item ID in \a aToDoItem to a native Agenda Model
+     * entry identifier, reads the entry and sets the data of the entry
+     * according to the data in \a aToDoItem. \a aToDoItem must have valid
+     * Item ID that corresponds to an existing native Agenda Model entry.
+     *
+     * @param aToDoItem The To-Do item to write to the Agenda File.
+     *
+     * @par Leaving:
+     * The method leaves on error. Error codes should be interpreted as
+     * follows:
+     * @li \c KErrArgument - The Item ID of \a aToDoItem is
+     *        \ref KPIMNullItemID and thus invalid.
+     * @li \c KErrNotFound - No corresponding native database entry could
+     *        be retrieved, although the Item ID of \a aToDoItem is not
+     *        \ref KPIMNullItemID. The entry is probably removed from the
+     *        native Agenda File.
+     * @li \c KErrInUse - The entry is currently in use by some other
+     *        client. The operation may succeed later.
+     * @li Other - The list adapter is non-functional.
+     */
+    void WriteToDoItemL(MPIMToDoItem& aToDoItem);
+
+    void CPIMToDoListAdapter::DoWriteToDoItemL(
+        MPIMToDoItem& aToDoItem);
+
+    /**
+     * Removes an existing To-Do from the native Agenda File.
+     * The adapter maps \a aItemID to a native Agenda Model entry and removes
+     * it.
+     *
+     * @param aItemID Item ID of the item to be removed.
+     *
+     * @par Leaving:
+     * @li \c KErrArgument - \a aItemID is \ref KPIMNullItemID and thus
+     *        invalid.
+     * @li \c KErrNotFound - No native Agenda Model entry could be retrieved
+     *        by \a aItemID. The entry is probably already removed.
+     * @li \c KErrInUse - The entry is currently in use by some other
+     *        client. The operation may succeed later.
+     * @li Other - The list adapter is non-functional.
+     */
+    void RemoveToDoItemL(TPIMItemID aItemID);
+
+    void CPIMToDoListAdapter::DoRemoveToDoItemL(
+        TPIMItemID aItemID);
+
+protected:
+
+    /**
+     * C++ default constructor.
+     */
+    CPIMToDoListAdapter(java::util::FunctionServer* aFuncServer);
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+
+private: // Member data
+
+    CDesCArrayFlat* iToDoCategoryArray;
+    CPIMAgnToDoAdapter* iAgnToDoAdapter;
+};
+
+#endif // CPIMTODOLISTADAPTER_H
+// End of File