diff -r f5050f1da672 -r 04becd199f91 javaextensions/pim/agnadapter/inc.s60/cpimeventadaptermanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/pim/agnadapter/inc.s60/cpimeventadaptermanager.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,316 @@ +/* +* 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: Base class for the Agenda Model event adapter managers + * +*/ + + +#ifndef CPIMEVENTADAPTERMANAGER_H +#define CPIMEVENTADAPTERMANAGER_H + +// INCLUDES +#include "mpimeventadaptermanager.h" +#include "mpimadaptermanager.h" +#include "cpimeventlistadapter.h" +#include "pimevent.h" +#include "pimlocalizationids.h" +#include "agneventsupport.h" + +// CONSTANTS +const TInt KPIMSupportedRepeatRuleFieldsCount = 2; + +const TInt KPIMSupportedRepeatRuleFields[KPIMSupportedRepeatRuleFieldsCount] = +{ + EPIMRepeatRuleFrequency, + EPIMRepeatRuleInterval +}; + +const TInt KPIMRepeatRuleSupportedWeeklyInterval = 2; +const TInt KPIMSupportedRepeatRuleIntervalsCount = 1; + +const TInt +KPIMSupportedRepeatRuleIntervals[KPIMSupportedRepeatRuleIntervalsCount] = + { KPIMRepeatRuleSupportedWeeklyInterval }; + +// CLASS DECLARATION + +/** + * PIM Event Adapter Manager base class + */ +NONSHARABLE_CLASS(CPIMEventAdapterManager): public CBase, + public MPIMAdapterManager, + public MPIMEventAdapterManager +{ +public: // destructor + + /** + * Destructor. + */ + virtual ~CPIMEventAdapterManager(); + +public: // MPIMEventAdapterManager + + /** + * Provides access to the \ref MPIMAdapterManager representation of + * this object. + * + * @return The \ref MPIMAdapterManager representation of this object. + */ + virtual MPIMAdapterManager* GetAdapterManager() = 0; + + /** + * Provides the supported repeat rule fields for a given frequency. + * + * @param aFrequency A frequency. + * + * @return Supported repeat rule fields for \a aFrequency. If no + * fields are supported for the frequency, an empty array + * is returned. + * + * @par Leaving: + * @li \c KErrArgument - \a aFrequency is not a valid frequency. + */ + virtual const CArrayFix< TPIMField>& GetSupportedRepeatRuleFieldsL( + const TPIMRepeatRuleFrequency& aFrequency); + + /** + * Provides the supported interval values for given frequency. + * + * @param aFrequency A frequency. + * + * @return Supported interval values for given frequency. If the + * interval field is not supported for given frequency, + * an empty array is returned. + * + * @par Leaving: + * @li \c KErrArgument - \a aFrequency is not a valid frequency. + */ + virtual const CArrayFix< TInt>& GetSupportedIntervalsL( + const TPIMRepeatRuleFrequency& aFrequency); + +public: // Functions from generic MPIMAdapterManager + + const TDesC& ListNameL(); + + /** + * 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(); + + /** + * 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); + + /** + * Checks whether a specific array element is supported by the list adapter. + * + * @param aStringArrayField The field to which the array element belongs to. + * @param aArrayElement The array element to be checked. + * + * @return ETrue if the given array element is supported, EFalse otherwise. + */ + 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. + */ + virtual 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); + +protected: + + // Allow derivation with protected default constructor. + CPIMEventAdapterManager() + {} + + /** + * 2nd phase constructor. + * + * @param aListName Name of the list. + */ + void ConstructL(const TDesC& aListName); + +private: // Member data + + // All the following arrays are owned by CPIMEventAdapterManager class + CArrayFixFlat< TPIMField>* iRepeatRuleFieldArray; + CArrayFixFlat< TPIMField>* iRepeatRuleFieldArrayEmpty; + CArrayFixFlat< TInt>* iRepeatRuleIntervalArray; + CArrayFixFlat< TInt>* iRepeatRuleIntervalArrayEmpty; + CArrayFixFlat< TPIMAttribute>* iEventAttributeArray; + +protected: + + /** Owned. */ + TDesC* iListName; + + CArrayFixFlat* iSupportedFields; +}; + +#endif // CPIMEVENTADAPTERMANAGER_H +// End of File +