wvuing/wvuiave/AppSrc/CCAGroupPropertiesDialog.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiave/AppSrc/CCAGroupPropertiesDialog.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2006 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:  Editing and  viewing class for chat group properties
+*
+*/
+
+
+
+#ifndef CCAGROUPPROPERTIESDIALOG_H
+#define CCAGROUPPROPERTIESDIALOG_H
+
+//  INCLUDES
+#include <aknform.h>
+#include <eiklbo.h>
+#include <bldvariant.hrh>
+
+#include "TEnumsPC.h"
+// FORWARD DECLARATIONS
+class CAknSettingItemArray;
+class CCAStatusPaneHandler;
+class CAknSettingStyleListBox;
+class CCAAppUi;
+class MCAGroupPC;
+class MCAGroupPropertiesPC;
+// CLASS DECLARATION
+
+/**
+ *  Dialog class for setting and editing group properties
+ *
+ *  @lib chatng.app
+ *  @since 3.2
+ */
+class CCAGroupPropertiesDialog : public CAknDialog,
+            public MEikListBoxObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         *
+         * @param aTitleBar The in-memory representation of the
+         *                  statuspanehandler.
+         * @param aEditMode ETrue if editing else group properties are set
+         *
+         * @param aUserList List of users
+         * @param aAdmins List of administrators
+         * @param aBannedUsers List of banned users
+         *
+         * @param aGroupId Group id
+         * @param aAreItemsEdited ETrue if items are edited
+         */
+        CCAGroupPropertiesDialog( CCAStatusPaneHandler& aTitleBar,
+                                  TBool aEditMode,
+                                  CDesCArray& aUserList,
+                                  CDesCArray& aAdmins,
+                                  CDesCArray& aBannedUsers,
+                                  const TDesC& aGroupId,
+                                  TBool& aAreItemsEdited );
+
+        /**
+         * Destructor
+         */
+        virtual ~CCAGroupPropertiesDialog();
+
+        /**
+         * 2nd level constructor.
+         * @param aMenuResource The menu resource
+         */
+        void ConstructL( TInt aMenuResource );
+
+    private: // New functions
+
+        /**
+         * This method launches access list dialog
+         * @return 1 if dialog is exit by ok else 0
+         */
+        TInt LaunchAccessListDialogL();
+
+        /**
+         * This method launches editing rights list dialog
+         * @return Dialog exit code
+         */
+        TInt LaunchEditingRightsListDialogL();
+
+        /**
+         * This method launches banned users list dialog
+         * @return Dialog exit code
+         */
+        TInt LaunchBannedUsersListDialogL();
+
+        /**
+         * This method changes CBA labels
+         */
+        void HandleCBAChangeL();
+
+        /**
+         * Helper to launch a popup and handle Cancel
+         * correctly with various list dialogs. Needed for AVKON
+         * quirks.
+         * @param aPopupResourceId The resource id for the popup texts
+         * @param aSettingResourceId The radiobutton settings page resource id
+         * @param aSelectionIndex user`s selection
+         * @param aCallBack Pointer to member to invoke under conditions of
+         * aBoolPtr and aInvokeOnFalse
+         * @param aInvokeOnFalse ETrue means to invoke aCallBack when *aBoolPtr
+         * is EFalse
+         * @since 2.common
+         * @return The aCallBack return value
+         */
+        TInt LaunchDialogHelperL(
+            TInt aPopupResourceId,
+            TInt aSettingResourceId,
+            TInt& aSelectionIndex,
+            TInt ( CCAGroupPropertiesDialog::* aCallBack )(),
+            TBool aInvokeOnFalse = EFalse );
+
+        TInt LaunchDialogHelperL(
+            TInt aPopupResourceId,
+            TInt aSettingResourceId,
+            TInt& aSelectionIndex,
+            TInt ( CCAGroupPropertiesDialog::* aCallBack )(),
+            TEnumsPC::TImpsPropertyBoolPC  aInvokeOnTrue );
+    private: //New methods
+
+        /**
+         * This method checks if items are edited
+         * @since 2.1
+         * @return ETrue if edited
+         */
+        TBool AreItemsEdited();
+
+        /**
+         * Adds text setting item to setting item array
+         * @param aSettingPageResourceId Setting page resoure
+         * @param aTitleResourceId Resource id of title
+         * @param aOrdinal Ordinal id
+         * @param aEmptyText Empty item text
+         * @param aModifiedBuffer Descriptor that contains modified value
+         */
+        void AddTextSettingItemL( TInt aSettingPageResourceId,
+                                  TInt aTitleResourceId,
+                                  TInt aOrdinal,
+                                  TDesC& aEmptyText,
+                                  TDes& aModifiedBuffer );
+
+        /**
+         * Adds integer setting item to setting item array
+         * @param aSettingPageResourceId Setting page resource Id
+         * @param aTitleResourceId Title resource id
+         * @param aOrdinal Ordinal id
+         * @param aModigiedValue Contains modified value after change
+         */
+        void AddIntegerSettingItemL( TInt aSettingPageResourceId,
+                                     TInt aTitleResourceId,
+                                     TInt aOrdinal,
+                                     TInt& aModifiedValue );
+
+        /**
+         * Adds binary setting item to setting item array
+         * @param aSettingPageResourceId Setting page resource Id
+         * @param aTitleResourceId Title resource id
+         * @param aAssociatedResourceId Associated resource id
+         * @param aOrdinal Ordinal id
+         * @param aModigiedValue Contains modified value after change
+         */
+        void AddBinarySettingItemL( TInt aSettingPageResourceId,
+                                    TInt aTitleResourceId,
+                                    TInt aAssociatedResourceId,
+                                    TInt aOrdinal,
+                                    TEnumsPC::TImpsPropertyBoolPC& aModifiedValue );
+
+        /**
+        * Launches a edit dialog from currently focused listbox item.
+        * Note! Do NOT call this method directly. Use LaunchCorrectDialogL.
+        * @return if dialog was launched (ETrue) else (EFalse)
+        */
+        TBool DoLaunchCorrectDialogL();
+
+        /**
+         * Sets up the async dialog launching.
+         * Calling this will method will eventually launch
+         * DoLaunchCorrectDialogL, which should do all the work.
+         * Async launching is done to release the pointer- and keyevents.
+         */
+        void LaunchCorrectDialog();
+
+        /**
+         * Static TCallBack method to launch dialogs
+         * This will call DoLaunchCorrectDialogL
+         * @param aDlg pointer to calling dialog (this)
+         * @return TInt return value needed for TCallBack
+         * @see DoLaunchCorrectDialogL
+         */
+        static TInt LaunchDlgCallBack( TAny* aDlg );
+
+    public:	//From MEikCommandObserver
+
+        /**
+         * Processes user commands
+         * @param ID of the command to respond to
+         */
+        void ProcessCommandL( TInt aCommand );
+
+    public: // Functions from MEikListBoxObserver
+
+        /**
+         * From MEikListBoxObserver Handles listbox events
+         * @param aListBox In memory representation of listbox
+         * @param aEventType Event type od listbox
+         */
+        void HandleListBoxEventL( CEikListBox* aListBox,
+                                  TListBoxEvent aEventType );
+
+    public:
+
+        /**
+         * Dynamically initialises a menu pane. The Uikon framework calls this
+         * function, if it is implemented in a menu’s observer, immediately
+         * before the menu pane is activated.
+         * @param aResourceId Resource ID identifying the menu bar to
+         *                    initialise
+         * @param The in-memory representation of the menu bar
+         */
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+    public:     // from CCoeControl
+
+        /**
+        * @see CCoeControl.
+        */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+
+
+        /**
+         * Help Key Support
+         * This function is called by the Framework to get the context to launch
+         * Help
+         *
+         * @param aContext	The context that contains the appid and the help id.
+         */
+        void GetHelpContext( TCoeHelpContext& aContext ) const;
+    protected:  // Functions from CEikDialog
+
+        /**
+         * From CEikDialog Sets the dialog layout when dialog is started
+         * @see CEikDialog
+         */
+        void PreLayoutDynInitL();
+
+        /**
+         * From CEikDialog. Called when dialog is dismissed
+         * @see CEikDialog
+         */
+        TBool OkToExitL( TInt aButtonId );
+
+        /**
+         * This method stores the values of setting items
+         */
+        void StoreValuesL();
+
+    private:    // enumerations for setting item ids
+
+        enum TSettingItemId
+            {
+            ESetGroupName = 0,
+            ESetGroupId,
+            ESetGroupTopic,
+            ESetGroupWelcomeNote,
+            ESetGroupSize,
+            ESetGroupAllowSearch,
+            ESetGroupAdminSelected,
+            ESetGroupIsOpen,
+            ESetGroupBannedUsers,
+            ESetGroupAllowWhisper
+            };
+
+    private:    // Data
+
+        //Doesn't own.
+        CCAStatusPaneHandler& iTitlePane;
+
+        TBool iEditMode;
+
+        //Doesn't own.
+        CDesCArray& iUserList;
+
+        //Doesn't own.
+        CDesCArray& iAdmins;
+
+        //Doesn't own
+        CDesCArray& iBannedUsers;
+
+        //Group id . Doesnt own
+        const TDesC& iGroupId;
+
+        //Whether the properties of the group has been changed by the user
+        TBool& iAreItemsEdited;
+
+        //name od the group
+        TPtr iGroupName;
+
+        //Name of the group before editting. Doesnt own
+        HBufC* iOldGroupName;
+
+        //Group topic. Doesnt own
+        TPtr iTopic;
+
+        //Topic of the group before editting. Doesnt own
+        HBufC* iOldTopic;
+
+        //Welcome note to the group. Doesnt own
+        TPtr iWelcomeNote;
+
+        //Welcome note before editting. Doesnt own
+        HBufC* iOldWelcomeNote;
+
+        //Owns
+        CAknSettingItemArray* iSettingItemArray;
+
+        //Owns
+        HBufC* iGroupNameBuf;
+
+        //Owns
+        HBufC* iTopicBuf;
+
+        //Owns
+        HBufC* iWelcomeNoteBuf;
+
+        //Size of the group. Doesnt own
+        TInt iSize;
+
+        //Size property of the group before editting
+        TInt iOldSize;
+
+        //Allow search propery
+        TEnumsPC::TImpsPropertyBoolPC iAllowSearch;
+
+        //Allow search property before editting
+        TEnumsPC::TImpsPropertyBoolPC iOldAllowSearch;
+
+        //Allow whisper messages property
+        TEnumsPC::TImpsPropertyBoolPC iAllowWhisper;
+
+        //Allow whisper messages property before editting
+        TEnumsPC::TImpsPropertyBoolPC iOldAllowWhisper;
+
+        //Is group open
+        TEnumsPC::TImpsPropertyBoolPC iIsOpen;
+
+        //Propery of group before editting
+        TEnumsPC::TImpsPropertyBoolPC iOldIsOpen;
+
+        //To launch banned users list
+        TInt iIsBannedUsers;
+        //Flag to check for banned users list before editting
+        TBool iOldIsBannedUsers;
+
+        //To launch admin privileges list
+        TInt iOldAdminSelected;
+
+        //Flag for admin privileges list before editting
+        TInt iAdminSelected;
+
+        //Flag to check if the properties have been editted for a group
+        TBool iIsEdited;
+
+        //To launch the member acces list dialog again, after modifying it
+        TBool iIsMemberAccessModified;
+
+        //To launch the member admin privileges list again, after modifying it
+        TBool iIsAdminStatusModified;
+
+        //To launch the member banned list again, after modifying it
+        TBool iIsBannedListModified;
+
+        // Doesn't own. pointer to dialogs listbox.
+        CAknSettingStyleListBox* iListbox;
+
+        // Dialog launcher
+        CIdle* iDialogLaunchCallback;
+
+        //doesnt own. pointer to the app UI instance
+        CCAAppUi* iAppUi;
+
+        //Doesnt Own.
+        MCAGroupPropertiesPC* iGroupPropertiesPC;
+
+    };
+
+#endif      // CCAGROUPPROPERTIESDIALOG_H   
+
+// End of File