diff -r f5050f1da672 -r 04becd199f91 javaextensions/pim/agnadapter/inc.s60/cpimtodoadaptermanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/pim/agnadapter/inc.s60/cpimtodoadaptermanager.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,287 @@ +/* +* 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: Provides static information about todo lists and creates + * todo list adapters. + * +*/ + + +#ifndef CPIMTODOADAPTERMANAGER_H +#define CPIMTODOADAPTERMANAGER_H + +// INCLUDES +#include "mpimtodoadaptermanager.h" +#include "mpimadaptermanager.h" +#include "pimtodo.h" + +// CONSTANTS + +// Supported fields by platform +const TPIMField KPIMSupportedToDoFields[] = +{ + EPIMToDoSummary, + EPIMToDoNote, + EPIMToDoDue, + EPIMToDoExtAlarm, + EPIMToDoPriority, + EPIMToDoCompleted, + EPIMToDoCompletionDate, + EPIMToDoClass, + EPIMToDoUid, + EPIMToDoRevision +}; + +const TInt KPIMSupportedToDoFieldsCount = sizeof(KPIMSupportedToDoFields) + / sizeof(TPIMField); + +// CLASS DECLARATION + +/** + * PIM Todo Adapter Manager class + */ +NONSHARABLE_CLASS(CPIMToDoAdapterManager): public CBase, + public MPIMAdapterManager, + public MPIMToDoAdapterManager +{ +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPIMToDoAdapterManager* NewL(const TDesC& aListName); + + /** + * Destructor. + */ + ~CPIMToDoAdapterManager(); + +public: // Functions from more specific MPIMToDoAdapterManager + + + /** + * Provides access to the \ref MPIMAdapterManager representation of + * this object. + * + * @return The \ref MPIMAdapterManager representation of this object. + */ + MPIMAdapterManager* GetAdapterManager(); + +public: // Functions from generic MPIMAdapterManager + + const TDesC& ListNameL(); + + /** + * Provides number of maximum categories supported by the list adapter. + * @return Number of maximum supported categories . + */ + TInt MaxCategories(); + + /** + * Checks whether a specific field is supported by the list adapter. + * @param aField The field to be checked. + * @return ETrue if the given field is supported, EFalse otherwise. + */ + TBool IsSupportedField( + TPIMField aField); + + /** + * Provides all fields supported by the list adapter. + * + * @return An array containing all supported fields. The order of the + * fields must be the same as in the native side application + * UI. + * + * @par Leaving: + * The method leaves on error. Such error always means that the adapter + * is non-functional. + */ + const CArrayFix& GetSupportedFieldsL(); + + /** + * Checks whether a specific attribute is supported by the list adapter. + * + * @param aField The field to which the attribute might be associated. + * @param aAttribute The attribute to be checked. + * + * @return ETrue if the given attribute is supported, EFalse otherwise, + * also on unsupported \a aField. + */ + TBool IsSupportedAttribute( + TPIMField aField, + TPIMAttribute aAttribute); + + /** + * Provides attributes supported for a field. + * + * @param aField The field to which the attributes are associated with. + * + * @return An array containing attributes supported for the \a aField. + * The order of attributes must reflect the order of field and + * attribute combinations in the native application UI. + * + * @par Leaving: + * The method leaves on error. Error codes should be interpreted as + * follows: + * @li \c KErrArgument - \a aField is not valid. + * @li Other - Array could not be created. + */ + const CArrayFix& GetSupportedAttributesL( + TPIMField aField); + + /** + * Provides attributes supported for a field, combined into single + * integer value. + * + * @param aField The field to which the attributes are associated with. + * + * @return An integer holding the combination of all attributes + * supported for \a aField. + * + * @par Leaving. + * The method leaves on error. Error codes should be interpreted as + * follows: + * @li \c KErrArgument - \a aField is not valid. + */ + TPIMAttribute GetSupportedAttributesCombinedL( + TPIMField aField); + + /** + * Provides all attributes supported for all fields, combined into + * single integer value. + * + * @return An integer holding the combination of all attributes + * supported for all fields. + */ + TPIMAttribute GetAllSupportedAttributesCombined(); + + /** + * Checks whether a specific array element is supported by the list + * adapter. + * + * @param aStringArrayField The field to which the array element belongs + * @param aArrayElement The array element to be checked. + * + * @return ETrue if the given array element is supported, EFalse if not. + */ + TBool IsSupportedArrayElement( + TPIMField aStringArrayElement, + TPIMArrayElement aArrayElement); + + /** + * Provides supported array elements for a specific field. + * + * @param aStringArrayField A string array field. + * + * @return An array containing supported array elements for the field. + * + * @par Leaving: + * The method leaves on error. Error codes should be interpreted as + * follows: + * @li \c KErrArgument - \a aField is not valid. + * @li Other - Array could not be created. + */ + const CArrayFix& GetSupportedArrayElementsL( + TPIMField aStringArrayField); + + /** + * Provides the number of maximum values supported for a specific field. + * + * @param aField The field to be evaluated. + * + * @return Number of values supported for the field. -1 for unlimited, + * 0 if not supported. + */ + TInt MaxValues( + TPIMField aField); + + /** + * Provides the array size of a specific string array field. + * The values in a string array field are arrays themselves. + * StringArraySize method returns the number of elements in every value + * of the field. + * + * @param aStringArrayField The string array field to be evaluated. + * @return Number of elements in a single string array value. + * + * @par Leaving: + * The method leaves with \c KErrArgument if \a aStringArrayField + * is not a string array field or is not supported. + */ + TInt StringArraySizeL( + TPIMField aStringArrayField); + + /** + * Provides pointer to a function which implements an algorithm that + * determines the order of two items. + * + * @return Item comparison function. + */ + TPIMItemComparisonFunc ItemOrder(); + + /** + * Compares two MPIMItemData objects. + * Used for determining + * their ordering in an item enumeration. + * + * @param aFirst first object to compare + * @param aSecond second object to compare + * @return + * @li < 0, if aFirst becomes \b before aSecond + * @li 0, if the objects are equal in the ordering + * @li > 0, if aFirst becomes \b after aSecond + */ + static TInt ItemComparisonFunc( + const MPIMItem& aFirst, + const MPIMItem& aSecond); + + /** + * Compares two MPIMItemData objects. + * Used for determining their ordering in an item enumeration. + * This is the leaving version of the comparison function. + * + * @param aFirst first object to compare + * @param aSecond second object to compare + * @return + * @li < 0, if aFirst becomes \b before aSecond + * @li 0, if the objects are equal in the ordering + * @li > 0, if aFirst becomes \b after aSecond + */ + static TInt ItemComparisonFuncL( + const MPIMItem& aFirst, + const MPIMItem& aSecond); + +private: + + /** + * C++ default constructor. + */ + CPIMToDoAdapterManager(); + + /** + * 2nd phase constructor. + */ + void ConstructL(const TDesC& aListName); + +private: // Member data + + // All the following arrays are owned by CPIMToDoAdapterManager class + CArrayFixFlat< TPIMField>* iSupportedToDoFields; + CArrayFixFlat< TPIMAttribute>* iEmptyToDoAttributeArray; + + /** Owned. */ + TDesC* iListName; +}; + +#endif // CPIMTODOADAPTERMANAGER_H +// End of File