homesync/contentmanager/homesyncwizard/inc/cmsappwizard.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homesync/contentmanager/homesyncwizard/inc/cmsappwizard.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,456 @@
+/*
+* 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:  Header file for the Setup wizard class
+*
+*/
+
+
+
+
+#ifndef CMSAPPWIZARD
+#define CMSAPPWIZARD
+
+// INCLUDES
+#include <aknmessagequerydialog.h>
+#include <AknWaitDialog.h>
+#include "upnpavdeviceobserver.h"
+
+
+// FORWARD DECLARATIONS
+class CCmMediaServerFull;
+class CMSEngine;
+class CMSSelectionStorage;
+class CMSMultiselectionPopup;
+class MUPnPAVController;
+
+// CLASS DECLARATION
+
+/**
+  * CMSAppWizard class
+  * Class implementing the functionality of the setup wizard
+  *
+  * @since S60 5.1
+  *
+  * @lib msappwizard.lib
+  */
+NONSHARABLE_CLASS( CMSAppWizard ) : public CBase,
+                                    public MUPnPAVDeviceObserver,
+                                    public MProgressDialogCallback
+    {
+
+    // Wizard steps
+    enum TWizardStep
+        {
+        EStep1 = 0,
+        EStep2,
+        EStep3,
+        EStep4,
+        EStep5,
+        EStep6,
+        EStep7,
+        EStep8,
+        EStep9,
+        EStep10,
+        EStep11,
+        EStep12,
+        ELastStep,
+        EWizardEnd,
+        ECancelWizard
+        };
+
+    public:     // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         *
+         * @since S60 5.1
+         * @param aMSEngine, application engine
+         * @return CMSAppWizard pointer
+         */
+        IMPORT_C static CMSAppWizard* NewL( CMSEngine& aMSEngine );
+
+        /**
+         * Two-phased constructor.
+         *
+         * @since S60 5.1
+         * @param aMSEngine, application engine
+         * @return CMSAppWizard pointer
+         */
+        IMPORT_C static CMSAppWizard* NewLC( CMSEngine& aMSEngine );        
+
+        /**
+         * Destructor.
+         */
+        virtual ~CMSAppWizard();
+
+
+    public:
+
+        /**
+         * Starts wizard
+         * @since S60 5.1
+         * @return TInt, sk button, 0 if cancelled
+         */
+        IMPORT_C TInt StartL();
+
+
+
+    public: // Methods from MProgressDialogCallback
+
+        /**
+         * Handles the situation when the dialog
+         * is dismissed.
+         *
+         * @since S60 5.1
+         * @param aButtonId The identifier of the button, with which the
+         *                  dialog was dismissed.
+         * @return None
+         */
+        void DialogDismissedL( TInt aButtonId );
+
+
+    private:
+
+        /**
+         * Show the information note with OK BACK buttons
+         *
+         * @since S60 5.1
+         * @param aMain, resource ID
+         * @param aHeading, heading text
+         * @return keycode of the button user has pressed.
+         */
+        TInt ShowInfoStepL( TInt aMain, TPtr aHeading );
+
+        /**
+         * Show the UI dialog with selection list
+         *
+         * @since S60 5.1
+         * @param aMain, resource ID
+         * @param aHeading, heading text
+         * @return keycode of the button user has pressed.
+         */
+        TInt ShowListStepL( TInt aMain, TPtr aHeading );
+
+        /**
+         * Shows the step for setting shared content
+         *
+         * @since S60 5.1
+         * @param aItemArray, item array
+         * @param aResultArray, selected indexes
+         * @param aHeading, heading text
+         * @return keycode of the button user has pressed.
+         */
+        TInt ShowMultiselectionStepL( CDesCArrayFlat& aItemArray,
+                                      CArrayFix<TInt>& aResultArray,
+                                      TPtr aHeading );
+
+        /**
+         * Determines the next wizard step
+         *
+         * @since S60 5.1
+         * @param aSelection, forward / backward
+         */
+        void SetNextStep( const TInt aDirection );
+
+        /**
+         * Cancels device search operation.
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None
+         */
+        void CancelDeviceSearch();
+
+        /**
+         * Creates AV controller.
+         *
+         * @since S60 5.1
+         * @param None
+         * @return operation success. KErrNone if succesfull
+         */
+        TInt CreateAvControllerL();
+
+        /**
+         * Updates multiselection dialog content.
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None
+         */
+        void UpdateDevicePopupDlgL();
+
+        /**
+         * Show the UI dialog with selection list
+         *
+         * @since S60 5.1
+         * @param aServer, server name
+         * @param aServerIndex, server array index
+         * @return comparison result.
+         */
+        TInt MatchFoundServer( TDesC8& aServer, TInt &aServerIndex );
+
+        /**
+         * Sets server state to deleted if needed
+         * And updates server name
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None         
+         */
+        void CheckAndSetServerStateL();
+
+        /**
+         * Fetches devices from AVController and calls 
+         * DeviceDiscovered-callback for each of them.
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None         
+         */
+        void FetchAlreadyDiscoveredDevicesL();
+        
+        /**
+         * Close wait dialog
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None         
+         */
+        void CloseWaitDialog();
+        
+        /**
+         * Creates multiselection store list items according
+         * to default store rule
+         *
+         * @since S60 5.1
+         * @param None
+         * @return CDesCArrayFlat, item array
+         */
+        CDesCArrayFlat* CreateMultiselectionStoreListItemsLC();
+
+        /**
+         * Creates multiselection store list items according
+         * to UI spec string
+         *
+         * @since S60 5.1
+         * @param None
+         * @return CDesCArrayFlat, item array
+         */
+        CDesCArrayFlat* CreateMultiselectionUIStoreListStringLC();
+
+
+        /**
+         * Creates server name list for device selection dialog
+         *
+         * @since S60 5.1
+         * @param aServerArray, server list
+         * @return None
+         */        
+        void CreateServerNameListL(
+                    RPointerArray<CCmMediaServerFull>& aServerArray);
+
+        /**
+         * Creates multiselection fill list items
+         *
+         * @since S60 5.1
+         * @param None
+         * @return CDesCArrayFlat, item array
+         */        
+        CDesCArrayFlat* CreateMultiselectionFillListItemsLC();
+
+        /**
+         * Shows wait note until first device appears
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None
+         */        
+        TInt ShowWaitNoteL();
+
+        /**
+         * Shows info note
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None         
+         */
+        void ShowInfoNoteL( TInt aBodyTextResource );
+        
+        /**
+         * Adds device name to device name list
+         *
+         * @since S60 5.1
+         * @param aDevice, upnp device
+         * @return None         
+         */
+        void AddDeviceNameL( const CUpnpAVDevice& aDevice );
+
+    public: // Functions from base classes
+
+        /**
+         * Notifies that a new UPnP device was discovered.
+         *
+         * @since S60 5.1
+         * @param aDevice, upnp device
+         * @return None
+         */
+        void UPnPDeviceDiscovered( const CUpnpAVDevice& aDevice );
+
+        /**
+         * Notifies that a new UPnP device was discovered.
+         *
+         * @since S60 5.1
+         * @param aDevice, upnp device
+         * @return None
+         */     
+        void UPnPDeviceDiscoveredL( const CUpnpAVDevice& aDevice );
+
+        /**
+         * Notifies that a UPnP device was dissapeared.
+         *
+         * @since S60 5.1
+         * @param aDevice, upnp device
+         * @return None
+         */
+        void UPnPDeviceDisappeared( const CUpnpAVDevice& aDevice );
+
+                /**
+         * Notifies that a UPnP device was dissapeared.
+         *
+         * @since S60 5.1
+         * @param aDevice, upnp device
+         * @return None
+         */
+        void UPnPDeviceDisappearedL( const CUpnpAVDevice& aDevice );
+
+        /**
+         * Notifies lost in WLAN connection
+         *
+         * @since S60 5.1
+         * @param None
+         * @return None
+         */
+        void WLANConnectionLost();
+
+        /**
+         * Sets system update id to zero
+         * @since S60 5.1
+         * @param None
+         * @return None         
+         */
+        void ClearServersSystemUpdateId();
+
+    private:
+
+        /**
+         * Performs the second phase construction.
+         */
+        void ConstructL();
+
+        /**
+         * Performs the first phase of two phase construction.
+         *
+         * @since S60 5.1
+         * @param aMSEngine, application engine
+         * @return None
+         */
+        CMSAppWizard( CMSEngine& aMSEngine );
+
+    private:
+
+        /**
+         * Resource file offset
+         */
+        TInt                                    iResFileOffset;
+        /**
+         * Control environment for file server access
+         */
+        CEikonEnv*                              iCoeEnv;
+        /**
+         * The position of the wizard
+         */
+        TInt                                    iStep;
+        /**
+         * Flag for indicating device search cancel
+         */
+        TBool                                   iUserCancelledSearch;
+        /**
+         * selection popup for category and device selection
+         */
+        CMSMultiselectionPopup*                 iMultiSelectionDlg; // owned
+        /**
+         * wait dialog
+         */
+        CAknWaitDialog*                         iWaitDialog;        // owned
+        /**
+         * wait sheduler
+         */
+        CActiveSchedulerWait                    iWait;              // owned
+        /**
+         * list of new servers
+         */
+        RPointerArray<CCmMediaServerFull>       iMediaServers;      // owned
+        /**
+         * list of previously stored servers
+         */
+        RPointerArray<CCmMediaServerFull>*      iOriginalServers;   // owned
+        /**
+         * list of upload capable servers
+         */
+        RPointerArray<CCmMediaServerFull>       iStoreServers;      // owned        
+        /**
+         * List of server names
+         */
+        CDesCArrayFlat*                         iDeviceNameArray;   // owned
+        /**
+         * The storage for the user selections
+         */
+        CMSSelectionStorage*                    iSelections;        // owned        
+        /**
+         * application engine
+         */
+        CMSEngine*                              iMSEngine;      // not owned  
+        /**
+         * Step count
+         */
+        TInt                                    iMaxSteps;
+        /**
+         * AV controller
+         */
+        MUPnPAVController*                      iAvController;      // owned
+        /**
+         * File server session
+         */
+        RFs                                     iFileSession;
+        /**
+         * found drives
+         */
+        RPointerArray<CCmDriveInfo>             iDriveArray;        // owned
+        /**
+         * Selected drives indexes
+         */
+        RArray<TInt>                            iDriveIndexes;
+        /**
+         * Flag for wlan lost 
+         */
+        TBool                                   iWLanLost;
+        /**
+         * Upload capable server found -flag
+         */
+        TBool                                   iUploadServerFound;
+    };
+
+#endif  // CMSAPPWIZARD
+
+// End of File