classicui_plat/extended_aiw_criteria_api/inc/AiwContactAssignDataTypes.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_plat/extended_aiw_criteria_api/inc/AiwContactAssignDataTypes.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,345 @@
+/*
+* Copyright (c) 2005 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:     Defines types used in AIW contact assign services.
+*
+*/
+
+
+
+
+
+#ifndef __AIWCONTACTASSIGNDATATYPES_H__
+#define __AIWCONTACTASSIGNDATATYPES_H__
+
+#include <AiwGenericParam.hrh>
+#include <coehelp.h>
+
+namespace AiwContactAssign {
+
+/**
+ * Type of the contact assign.
+ */
+enum TAiwContactAssignDataType
+    {
+    EAiwContactAssignDataTypeNotDefined,
+    EAiwSingleContactAssignV1,
+    EAiwMultipleContactAssignV1,
+    EAiwContactAttributeAssignV1
+    };
+
+/**
+ * Parameter flags for contact assign service.
+ */
+enum TAssignFlags
+    {
+    /**
+     * By default assign, if used as a menu service, shows a
+     * menu item which haves subitems Update Existing and Add new.
+     * If this flag is set, a plain main level Assign menu item is shown.
+     *
+     * The flag is valid only in single contact assign,
+     * since multiple contact assign always uses the simple menu.
+     * Also contact attribute assign uses just the simple menu.
+     */
+    EUseSimpleMenu                  = 0x0001,
+
+    /**
+     * This flag only has meaning if EUseSimple menu is used,
+     * or if this service is used as a base service (no menus at all).
+     * Then, by default, the assign updates an existing contact,
+     * but by raising this flag a new contact is created instead.
+     *
+     * The flag is valid only in single contact assign,
+     * since multiple contact assign can not create new contacts.
+     * Contact attribute assign also can note create new contacts.
+     */
+    ECreateNewContact               = 0x0002,
+
+    /**
+     * If EDoNotOpenEditor flag is up, the selected contact is not opened
+     * to an editor but the data/attribute is directly assigned to
+     * the contact and the user is informed about it with a note.
+     * The flag is ignored when creating a new contact instead
+     * of updating an existing one - in that case editor is always
+     * opened.
+     *
+     * The flag is valid only in single contact assign,
+     * since multiple contact assign and contact attribute assign
+     * never open editor.
+     */
+    EDoNotOpenEditor                = 0x0004,
+
+    /**
+     * If set, the editor is missing an Exit option.
+     *
+     * The flag is valid only in single contact assign.
+     */
+    EHideEditorExit                 = 0x0008,
+
+    /**
+     * If set the fetch dialog will use default provider title
+     * ("Contacts", for example), otherwise client's current title is used.
+     */
+    EUseProviderTitle               = 0x0010,
+/*<branchInfo originator="gronoff" since="03-10-2008" category="new_feature" error=”none”>
+<PF5250_OFF_CYCLE_SW_INT>
+</branchInfo>*/
+// BRANCH 03-10-2008 :gronoff
+    /**
+     * If set, infonotes are not shown when user exits from
+     * contact assign service. When set infonotes like "Contact
+     * details updated" etc are not shown.
+     */
+    EskipInfoNotes                  = 0x0020,
+// BRANCH_END 03-10-2008 :gronoff
+
+    /**
+     * If set the fetch view will use custom filtering. When building the
+     * view the client is asked with KAiwEventInParamCheck, for every contact,
+     * does the contact belong to the view. This is rather slow.
+     */
+    EUseClientSideFiltering = 0x0040
+    };
+
+/**
+ * Base class for different versions of the contact assign data.
+ */
+class TAiwContactAssignDataBase
+    {
+    public: // Type checking
+        /**
+         * Function for checking the type of the contact assign
+         * data in a data buffer.
+         *
+         * @param aBuffer A buffer containing an instance of a contact
+         *                assign data class derived from this class.
+         * @return  Type of the data class that is in the buffer.
+         */
+        inline static TAiwContactAssignDataType AssignDataTypeFromBuffer(
+                    const TDesC8& aBuffer );
+
+        /**
+         * Public constructor.
+         */
+        explicit inline TAiwContactAssignDataBase();
+
+    protected: // Constructor
+        /**
+         * Constructor that sets the type of the data class.
+         *
+         * @param aAssignDataType Type of the contact assign data.
+         */
+        inline TAiwContactAssignDataBase(
+                TAiwContactAssignDataType aAssignDataType );
+
+    private: // Implementation
+        /**
+         * Returns the type of the contact assign data class.
+         *
+         * @return  The type of the contact assign data class.
+         */
+        inline TAiwContactAssignDataType AssignDataType() const;
+
+    private: // Data
+        /// Own: Type of the contact assign data class.
+        TAiwContactAssignDataType iAssignDataType;
+    };
+
+/**
+ * Version 1 of the single contact assign data.
+ *
+ * All setters return a reference to this object so that the setters
+ * can be easily chained to produce more compact code, for example:
+ *      assignData.SetProperty(EAiwProperty)
+ *                   .SetAnotherProperty(EAiwAnotherProperty)
+ */
+class TAiwSingleContactAssignDataV1 : public TAiwContactAssignDataBase
+    {
+    public: // Data type
+        static const TAiwContactAssignDataType
+            KAssignDataType = EAiwSingleContactAssignV1;
+
+    public: // Construction
+        /**
+         * Constructor.
+         */
+        explicit inline TAiwSingleContactAssignDataV1();
+
+    public: // Setters for the data members
+        /**
+         * Sets assign flags, @see TAssignFlags.
+         *
+         * @param aFlags The flags to set.
+         * @return  Reference to this object.
+         */
+        inline TAiwSingleContactAssignDataV1& SetFlags(
+                TUint aFlags );
+
+        /**
+         * Sets editor help context.
+         * By default the editor uses Phonebook's help context.
+         *
+         * @param aFlags The new help context.
+         * @return  Reference to this object.
+         */
+        inline TAiwSingleContactAssignDataV1& SetEditorHelpContext(
+                TCoeHelpContext aHelpContext );
+
+
+    public: // Getters for the data members
+        /**
+         * Returns assign flags, @see TAssignFlags.
+         *
+         * @return  Assign flags.
+         */
+        inline TUint Flags() const;
+
+        /**
+         * Returns editor help context.
+         *
+         * @return  Help context.
+         */
+        inline TCoeHelpContext EditorHelpContext() const;
+
+    private: // Data
+        /// Own: Assign flags.
+        TUint iFlags;
+        /// Own: Editor's help context.
+        TCoeHelpContext iEditorHelpContext;
+    };
+
+/**
+ * Version 1 of the multiple contact assign data.
+ *
+ * All setters return a reference to this object so that the setters
+ * can be easily chained to produce more compact code, for example:
+ *      assignData.SetProperty(EAiwProperty)
+ *                   .SetAnotherProperty(EAiwAnotherProperty)
+ */
+class TAiwMultipleContactAssignDataV1 : public TAiwContactAssignDataBase
+    {
+    public: // Data type
+        static const TAiwContactAssignDataType
+            KAssignDataType = EAiwMultipleContactAssignV1;
+
+    public: // Construction
+        /**
+         * Constructor.
+         */
+        explicit inline TAiwMultipleContactAssignDataV1();
+
+    public: // Setters for the data members
+        /**
+         * Sets assign flags, @see TAssignFlags.
+         *
+         * @param aFlags The flags to set.
+         * @return  Reference to this object.
+         */
+        inline TAiwMultipleContactAssignDataV1& SetFlags(
+                TUint aFlags );
+
+    public: // Getters for the data members
+        /**
+         * Returns assign flags, @see TAssignFlags.
+         *
+         * @return  Assign flags.
+         */
+        inline TUint Flags() const;
+
+    private: // Data
+        /// Own: Assign flags.
+        TUint iFlags;
+    };
+
+/**
+ * Version 1 of the contact attribute assign data.
+ *
+ * All setters return a reference to this object so that the setters
+ * can be easily chained to produce more compact code, for example:
+ *      assignData.SetProperty(EAiwProperty)
+ *                   .SetAnotherProperty(EAiwAnotherProperty)
+ */
+class TAiwContactAttributeAssignDataV1 : public TAiwContactAssignDataBase
+    {
+    public: // Data type
+        static const TAiwContactAssignDataType
+            KAssignDataType = EAiwContactAttributeAssignV1;
+
+    public: // Construction
+        /**
+         * Constructor.
+         */
+        explicit inline TAiwContactAttributeAssignDataV1();
+
+    public: // Setters for the data members
+        /**
+         * Sets assign flags, @see TAssignFlags.
+         *
+         * @param aFlags The flags to set.
+         * @return  Reference to this object.
+         */
+        inline TAiwContactAttributeAssignDataV1& SetFlags(
+                TUint aFlags );
+
+        /**
+         * Sets attribute remove information.
+         *
+         * @param aRemove   ETrue indicates the attribute should be
+         *                  removed from the contact. Usage of this
+         *                  value requires also sending the link to
+         *                  the contact to modify as
+         *                  EGenericParamContactLinkArray parameter.
+         *                  EFalse (default) indicates the attribute
+         *                  should be assigned to the contact.
+         * @return  Reference to this object.
+         */
+        inline TAiwContactAttributeAssignDataV1& SetAttributeRemove(
+                TBool aRemove );
+
+    public: // Getters for the data members
+        /**
+         * Returns assign flags, @see TAssignFlags.
+         *
+         * @return  Assign flags.
+         */
+        inline TUint Flags() const;
+
+        /**
+         * Returns remove attribute indicator.
+         *
+         * @return  Remove attribute indicator.
+         */
+        inline TBool RemoveAttribute() const;
+
+
+    private: // Data
+        /// Own: Assign flags.
+        TUint iFlags;
+        /// Own: Attribute removal indicator
+        TBool iRemoveAttribute;
+    };
+
+
+typedef TPckgBuf<TAiwContactAssignDataBase> TAiwContactAssignDataBasePckg;
+typedef TPckgBuf<TAiwSingleContactAssignDataV1> TAiwSingleContactAssignDataV1Pckg;
+typedef TPckgBuf<TAiwMultipleContactAssignDataV1> TAiwMultipleContactAssignDataV1Pckg;
+typedef TPckgBuf<TAiwContactAttributeAssignDataV1> TAiwContactAttributeAssignDataV1Pckg;
+
+#include <AiwContactAssignDataTypes.inl>
+
+} /// namespace
+
+#endif // __AiwContactAssignDataTypes_H__
+
+// End of File