--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpsettings/appwizard/inc/cupnpappwizard.h Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,517 @@
+/*
+* 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 CUPNPAPPWIZARD
+#define CUPNPAPPWIZARD
+
+// INCLUDES
+#include <e32base.h>
+#include <AknWaitNoteWrapper.h> // base class MAknBackgroundProcess
+
+#include "upnpfilesharingengine.h" //CUPnPFileSharingEngine & THomeConnectMediaType
+#include "upnpfilesharingengineobserver.h" //MUPnPFileSharingEngineObserver
+
+
+
+// CONSTANTS
+const TInt KUPnPAlwaysAskInd = 0;
+const TInt KUPnPCreateNewInd = 1;
+
+
+// FORWARD DECLARATIONS
+class CAknViewAppUi;
+class CUPnPSettingsEngine;
+class CEikonEnv;
+class CUPnPMultiselectionUi;
+// CLASS DECLARATION
+
+/**
+ * CUPnPAppWizard class
+ *
+ * Class implementing the functionality of the setup wizard
+ * @since S60 v3.1
+ * @lib upnpappwizard.lib
+ */
+class CUPnPAppWizard : public CBase,
+ private MUPnPFileSharingEngineObserver,
+ MAknBackgroundProcess
+ {
+public: // Constructors and destructor
+
+ enum TSharingStarting
+ {
+ ENotActive,
+ EStartingSharing,
+ ESharingStarted
+ };
+
+ enum TShareArrayState
+ {
+ ESetMarked,
+ EResetArray,
+ EAddToArray
+ };
+
+ /**
+ * Two-phased constructor.
+ * @since S60 v3.1
+ * @param aFirstStepText, Text for the first wizard step, owned by \
+client. If length of the aFirstStepText is 0 default text is used
+ * @param aEng, Pointer to filesharing engine instance
+ */
+ IMPORT_C static CUPnPAppWizard* NewL( const TDesC& aFirstStepText,
+ CUPnPFileSharingEngine* aEng );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CUPnPAppWizard();
+
+public: // New functions
+
+ /**
+ * Starts wizard
+ *
+ * @since S60 v3.1
+ * @return TInt, Error code
+ */
+ IMPORT_C TInt StartL();
+
+ /**
+ * Modifies iShareImgAndVideoArray and iShareMusicArray arrays
+ *
+ * @param aArrayState
+ * @param aValue
+ * @param aUiDlg
+ */
+ void ModifyMarkedArrayL( TShareArrayState aArrayState
+ , TInt aValue = 0
+ , CUPnPMultiselectionUi* aUiDlg = NULL );
+
+private:
+ /**
+ * CSelectionStorage class
+ *
+ * Private class for user selections and handling their
+ * storage and retrieval
+ * @since S60 v3.1
+ */
+ NONSHARABLE_CLASS( CSelectionStorage ) : public CBase
+ {
+ public :
+
+ enum TSharingStartResult
+ {
+ ESharingStarted,
+ ENothingToShare,
+ ESharingStartFailed
+ };
+ /**
+ * C++ default constructor
+ * @param aSetEng. Pointer to CUPnPSettingsEngine, not owned
+ * @param aFileEng. Pointer to CUPnPFileSharingEngine, not owned
+ */
+ CSelectionStorage( CUPnPSettingsEngine* aSetEng,
+ CUPnPFileSharingEngine* aFileEng );
+ /**
+ * Destructor.
+ */
+ virtual ~CSelectionStorage();
+
+ /**
+ * Store locally users selected device name
+ * @since S60 v3.1
+ * @param aDeviceName. The new name
+ */
+ void SetDeviceNameL( TDes& aDeviceName );
+
+ /**
+ * Get device name from local store of from cenrep
+ * @since S60 v3.1
+ * @param aDeviceName. Descriptor to store the name
+ * @return success of the operation
+ */
+ TInt GetDeviceNameL( TDes& aDeviceName );
+
+ /**
+ * Sets the IAP id of the user selected IAP
+ * @since S60 v3.1
+ * @param aIapId. Iap id of the selected IAP
+ * @param aIndexForUi, Index of the iap in UI list
+ */
+ void SetIapId( const TInt aIapId,
+ const TInt aIndexForUi );
+ /**
+ * Function for getting the iapid from local storage or from cenrep
+ * @since S60 v3.1
+ * @param aIapId. Iap id of the selected IAP
+ * @return success of the operation
+ */
+ TInt GetIapId( TInt& aIapId );
+
+ /**
+ * Initialize Iap name and iap id arrays with some fixed texts
+ * @since S60 v3.1
+ * @param aIapNameArr. Array pointer for the names
+ * @param aIApIdArr. Array pointer for iap IDs
+ */
+ void InitializeIapArraysL( CDesCArray* aIapNameArr,
+ RArray<TInt64>& aIapIdArr ) const;
+
+ /**
+ * Stores the user selections from filesharing popus to local storage
+ * @since S60 v3.1
+ * @param aMedia. Type of media
+ * @param aSelections. Array of the selections user has made.
+ * Stored only locally
+ */
+ void SetSharedContent( THomeConnectMediaType aMedia,
+ CArrayFix<TInt>* aSelections );
+
+ /**
+ * Stores the devicename and IAP from local store to cenrep
+ * @since S60 v3.1
+ * @return success of the operation
+ */
+ TInt StoreSettingsL();
+
+ /**
+ * Stores the selected image and video albums from local store to
+ * cenrep
+ * @since S60 v3.2
+ * @return error code
+ */
+ TInt ImageStoreSharedFilesL();
+
+ /**
+ * Gets the users sharing selections as indexes from local storage
+ * @since S60 v3.1
+ * @param aMedia. The kind of selections to get
+ * @param aSelections. Array for selections
+ */
+ void GetSelectionsL(
+ THomeConnectMediaType aMedia,
+ CArrayFix<TInt>* aSelections );
+
+ /**
+ * Determines if the is need to start sharing
+ * @since S60 v3.1
+ * @return ETrue if sharing needs to be activated.
+ */
+ TBool HasSomethingToShare() const;
+
+ /**
+ * Gets the currently selected IAP index for the listbox UI
+ * @since S60 v3.1
+ * @param aCurrentSelection. The new current selection
+ * @param aIapIdArr. Array of IAP ids of the IAPs shown in listbox
+
+ */
+ void GetCurrentSelection( TInt& aCurrentSelection,
+ RArray<TInt64>& aIapIdArr );
+
+ /**
+ * Gets the WAP iap associated to given IAPid
+ * @since S60 v3.1
+ * @param aIAPId. Id to match
+ * @return. The id of the corresponding WAP record
+ */
+ TInt ConvertIAPIdL( TInt aIAPId );
+
+ private :
+ /**
+ * Pointer to UPnP settings engine
+ * Not owned
+ */
+ CUPnPSettingsEngine* iSetEng;
+
+ /**
+ * Pointer to UPnP File sharing engine
+ * Not owned
+ */
+ CUPnPFileSharingEngine* iFileEng;
+
+ /**
+ * Pointer to UPnP device name
+ * Not owned
+ */
+ HBufC* iDeviceName;
+
+ /**
+ * Users selected IAP id
+ *
+ */
+ TInt iIapId;
+
+ /**
+ * Index for home network UI, to show the correct item as selected
+ *
+ */
+ TInt iIndexForUi;
+
+ /**
+ * The selection of Image& video sharing for Home Network UI
+ */
+ TBool iVisualImageSelection;
+
+ /**
+ * The selection of music sharing for Home Network UI
+ */
+ TBool iVisualMusicSelection;
+
+ /**
+ * The Array of the selected indexes user has made for sharing images
+ * and videos
+ * owned
+ */
+ CArrayFix<TInt>* iImageSelectionArray;
+ /**
+ * The Array of the selected indexes user has made for sharing music
+ * owned
+ */
+ CArrayFix<TInt>* iMusicSelectionArray;
+
+ };
+
+
+ /**
+ * Internal states of wizard
+ */
+ enum TWizardStep
+ {
+ EInfo1 = 0,
+ EInfo2,
+ EDeviceName,
+ EInfo4,
+ EAccessPoint,
+ EInfo6,
+ EShareImages,
+ EShareMusic,
+ EInfo9,
+ EStoreSettings,
+ EFinished
+ };
+
+ /**
+ * C++ default constructor
+ */
+ CUPnPAppWizard();
+
+ /**
+ * Show the information note with OK BACK buttons
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ * @return keycode of the button user has pressed.
+ */
+ TInt ShowInfoStepL( TInt aMain ) const;
+
+ /**
+ * Show the first step. The text is given in constructor
+ * @param TInt, resource ID
+ * @return keycode of the button user has pressed.
+ */
+ TInt ShowFirstStepL( TInt aMain ) const;
+ /**
+ * Shows popup with text and header and edit box
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ * @return keycode of the button user has pressed.
+ */
+ TInt ShowTextStepL( TInt aMain );
+
+ /**
+ * Show the information note without buttons
+ * @since S60 v3.1
+ * @param TInt, resource ID
+
+ */
+ void ShowInfoNoteL( TInt aMain ) const;
+
+ /**
+ * Show the UI dialog with selection list
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ * @return keycode of the button user has pressed.
+ */
+ TInt ShowListStepL( TInt aMain );
+
+
+ /**
+ * Determines the next wizard step
+ * @since S60 v3.1
+ * @param TInt& The keycode of the users selection from previous dialog
+
+ */
+ void SetNextStep( const TInt& aSelection );
+
+ /**
+ * Shows the step for setting shared content
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ * @return keycode of the button user has pressed.
+ */
+ TInt ShowMultiselectionStepL( TInt aText );
+
+ /**
+ * Show error note with given resource id
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ */
+ void ShowErrorNoteL( TInt aMain ) const;
+
+ /**
+ * Show wait note with given resource id
+ * @since S60 v3.1
+ * @param TInt, resource ID
+ */
+ void ShowWaitNoteL( TInt aMain );
+
+private: //From MUPnPFileSharingEngineObserver
+ /**
+ * Function informs when file sharing was enabled or disabled
+ * @since S60 3.1
+ * @param aEngine File sharing engine
+ * @param aError, error code
+ * @param aPhase ETrue if current phase is sharing activation,
+ * otherwise EFalse
+ */
+ void HandleSharingStatus(
+ CUPnPFileSharingEngine& aEngine,
+ TInt aError,
+ TBool aPhase );
+
+ /**
+ * Callback to inform if connection has been lost
+ * @since S60 3.1
+ * @param aEngine File sharing engine
+ */
+ void HandleSharingConnectionLost(
+ CUPnPFileSharingEngine& aEngine );
+
+private:
+ /**
+ * Shows progress note to indicate progress of sharing files
+ * @since S60 v3.1
+ * @param TInt, The number of objects
+ */
+ void ShowProgressNoteL( TInt aObjectCount );
+
+ /**
+ * Called when waitnote wrapper is finished
+ * From MProgressDialogCallback
+ */
+ void DialogDismissedL( TInt aButtonId );
+
+ /**
+ * EPOC default constructor.
+ */
+ void ConstructL( const TDesC& aFirstStepText,
+ CUPnPFileSharingEngine* aEng );
+
+ void StepL();
+
+ TBool IsProcessDone() const;
+
+ /**
+ * Display info note after starting sharing content
+ * @since S60 v3.1
+ * @param TInt, Id of note header resource
+ * @param TInt, Id of note message resource
+ * @param TInt, Id of note resource
+ */
+ void DisplayInfoL(
+ TInt aHeaderResourceId,
+ TInt aMessageResourceId,
+ TInt aDialogResourceId );
+
+
+private: // Data
+
+ CAknViewAppUi* iAppUi; // Not owned
+ TInt iResFileOffset; // Resource file offset
+ CEikonEnv* iCoeEnv; // Not owned
+ /**
+ * The position of the wizard
+ */
+ TInt iStep;
+ /**
+ * The class for retrieving and setting shared items
+ */
+ CUPnPFileSharingEngine* iFileEng;
+ /**
+ * The class for setting the IAP id and deviceName
+ */
+ CUPnPSettingsEngine* iSetEng;
+ /**
+ * The storage for the user selections
+ */
+ CSelectionStorage* iSelections;
+
+ /**
+ * Wait used in asynchronous operations
+ * Started when there is operation ongoing in filesharingengine
+ */
+ CActiveSchedulerWait iWait;
+
+ /**
+ * Array for IAP names
+ */
+ CDesCArray* iIapNameArr;
+
+ /**
+ * Status of the sharing when starting wizard
+ * ETrue = Sharing on
+ */
+ TBool iSharingState;
+
+ /**
+ * Text for the first wizard step
+ *
+ */
+ HBufC* iFirstStepText;
+
+ /**
+ * Indicator if starting sharing is ongoing
+ */
+ TInt iStartingSharing;
+
+ TBool iDialogDismissed;
+
+ /**
+ * stores indexes if img and/or video is shared marked
+ */
+ CArrayFix<TInt>* iShareImgAndVideoArray;
+
+ /**
+ * stores indexes if music is shared marked
+ */
+ CArrayFix<TInt>* iShareMusicArray;
+
+ /**
+ * Flag the FeatureManager is initialized or not
+ */
+ TBool iFeatureManagerInitialized;
+ };
+
+#endif // CUPNPAPPWIZARD
+
+// End of File