diff -r 000000000000 -r 7f85d04be362 homesync/contentmanager/homesyncgsplugin/inc/msmultiselectionpopup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homesync/contentmanager/homesyncgsplugin/inc/msmultiselectionpopup.h Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,195 @@ +/* +* 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: CMSMultiselectionPopup class definition +* +*/ + + +#ifndef CMSMULTISELECTIONPOPUP_H +#define CMSMULTISELECTIONPOPUP_H + +// INCLUDES +#include <AknIconArray.h> // CAknIconArray +#include <aknlistquerydialog.h> //CAknListQueryDialog + +// CLASS DECLARATION + +/** + * CMSMultiselectionPopup dialog class + * @since S60 5.1 + */ +NONSHARABLE_CLASS( CMSMultiselectionPopup ) : public CAknListQueryDialog + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @since S60 v5.1 + * @param aMediaServerArray, array of servers to show + * @param aSelectionIndexArray, currently selected servers + * @return CMSMultiselectionPopup*, the new CMSMultiselectionPopup object + */ + static CMSMultiselectionPopup* NewL( + TBool aUploadCapabilitySupport, + RPointerArray<CCmMediaServerFull>* aMediaServerArray, + CListBoxView::CSelectionIndexArray* aSelectionIndexArray ); + + /** + * Two-phased constructor. + * + * @since S60 v5.1 + * @param aMediaServerArray, array of servers to show + * @param aSelectionIndexArray, currently selected servers + * @return CMSMultiselectionPopup*, the new CMSMultiselectionPopup object + */ + static CMSMultiselectionPopup* NewLC( + TBool aUploadCapabilitySupport, + RPointerArray<CCmMediaServerFull>* aMediaServerArray, + CListBoxView::CSelectionIndexArray* aSelectionIndexArray ); + + /** + * Destructor. + */ + virtual ~CMSMultiselectionPopup(); + + /** + * Updates the list of servers. + * + * @since S60 v5.1 + * @param aMediaServer, found server + */ + void UpdateAndDrawPopupL( CCmMediaServerFull* aMediaServer ); + + /** + * Handles pointer event on touchscreen + * + * @param aPointerEvent, touchscreen key event + */ + void HandlePointerEventL ( const TPointerEvent& aPointerEvent ); + + protected: + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + + // From base class CAknSelectionListDialog + /** + * From CAknSelectionListDialog + * See base class definition + */ + void PreLayoutDynInitL(); + + /** + * From CAknSelectionListDialog + * See base class definition + */ + void PostLayoutDynInitL(); + + /** + * From CAknSelectionListDialog + * See base class definition + */ + TKeyResponse OfferKeyEventL( const TKeyEvent &aKeyEvent, + TEventCode aType ); + /** + * From CAknSelectionListDialog + * See base class definition + */ + TBool OkToExitL( TInt aButtonId ); + + private: + + /** + * C++ default constructor. + */ + CMSMultiselectionPopup( + TBool aUploadCapabilitySupport, + RPointerArray<CCmMediaServerFull>* aMediaServerArray, + CListBoxView::CSelectionIndexArray* aSelectionIndexArray ); + + + /** + * Loads a possibly skinned icon and adds it to icon array + * + * @since S60 v5.1 + * @param CAknIconArray, array of icons + * @param MAknsSkinInstance, skin instance + * @param TDesC, reference to icon file + * @param TAknsItemID, skinned icon id + * @param TInt, bitmap id + * @param TInt, bitmap mask id + */ + void AppendIconToArrayL( CAknIconArray* aArray, + MAknsSkinInstance* aSkin, + const TDesC& aMbmFile, + const TAknsItemID& aID, + TInt aBitmapId, + TInt aMaskId ) const; + + /** + * Sets the list of servers for the listbox. + * @since S60 v5.1 + */ + void AppendMediaServersL(); + + /** + * Creates listbox item string + * @since S60 v5.1 + * @param aServer, server info + * @return HBufC*, listbox item + */ + HBufC* CreateListBoxItemLC( const CCmMediaServerFull* aServer ); + + // Enumerations + + // icons indexes for the listbox + enum TIconList + { + ECheckedBox = 0, + EUnCheckedBox, + EUploadCapability, + EIconLast + }; + + private: // data + + /** + * Dialog control item + */ + CEikListBox* iListBox; // not owned + + /** + * Indicates if upload capability is needed + */ + TBool iUploadCapabilitySupport; + + /** + * Media servers + */ + RPointerArray<CCmMediaServerFull>* iServers; // not owned + + /** + * Previously selected indexes + */ + CArrayFix<TInt>* iPreviousSelection; // not owned + }; + +#endif // CMSMULTISELECTIONPOPUP_H + +// End of File