diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAGroupPropertiesDialog.h --- /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 +#include +#include + +#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