homesync/contentmanager/homesyncgsplugin/inc/msmultiselectionpopup.h
changeset 0 7f85d04be362
--- /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