--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/Framework/Inc/cmconnsettingsuiimpl.h Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,566 @@
+/*
+* 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: Declaration of application selection dialog
+*
+*/
+
+#ifndef C_CMCONNSETTINGSUIIMPL_H
+#define C_CMCONNSETTINGSUIIMPL_H
+
+#include <e32def.h>
+#include <e32base.h>
+#include <ConeResLoader.h>
+#include <badesca.h> // CDesCArrayFlat
+#include <cmdefconnvalues.h>
+#include <hlplch.h>
+
+#include "cmmanager.hrh"
+#include "cmapplicationsettingsui.h"
+
+class TCmDCSettingSelection;
+class CCmManagerImpl;
+class CCmDestinationImpl;
+class CCmPluginBase;
+
+//CONSTS
+const TInt KCmDefConnIndex = 0;
+const TInt KCmUserDefinedIndex = 1;
+
+namespace CMManager
+ {
+ enum TCmDCSettingSelectionMode
+ {
+ EDCAlwaysAsk, /**<
+ * The user selected Always Ask
+ */
+ EDCAskOnce, /**<
+ * The user selected Ask Once
+ */
+ EDCDestination, /**<
+ * The user selected a destination
+ */
+ EDCConnectionMethod, /**<
+ * The user selected a connection method
+ */
+ EDCDefaultConnection /**<
+ * The user selected a connection method
+ */
+ };
+ } //namespace CmManager
+
+/**
+ * Stores the details of a setting selection
+ *
+ * @since S60 3.2
+ */
+NONSHARABLE_STRUCT( TCmDCSettingSelection ) //extended with Ask Once
+ {
+ /**
+ * Selection that the user made
+ */
+ CMManager::TCmDCSettingSelectionMode iResult;
+
+ /**
+ * Id of the selected destination or connection method
+ */
+ TUint iId;
+ // -----------------------------------------------------------------------------
+ // TCmDCSettingSelection::operator==
+ // -----------------------------------------------------------------------------
+ //
+ inline TBool TCmDCSettingSelection::operator==( TCmDCSettingSelection& aDCSettingSelection ) const
+ {
+ return ( (iResult == aDCSettingSelection.iResult) && ( iId == aDCSettingSelection.iId ) );
+ };
+
+ // -----------------------------------------------------------------------------
+ // TCmDCSettingSelection::operator!=
+ // -----------------------------------------------------------------------------
+ //
+ inline TBool TCmDCSettingSelection::operator!=( TCmDCSettingSelection& aDCSettingSelection ) const
+ {
+ return (!( (iResult == aDCSettingSelection.iResult) && ( iId == aDCSettingSelection.iId ) ));
+ };
+ // -----------------------------------------------------------------------------
+ // TCmDCSettingSelection::ConvertToDefConn
+ // -----------------------------------------------------------------------------
+ //
+ inline TCmDefConnValue TCmDCSettingSelection::ConvertToDefConn( ) const
+ {
+ TCmDefConnValue defConnValue;
+ defConnValue.iType = ECmDefConnAlwaysAsk;
+ defConnValue.iId = 0;
+ switch ( iResult )
+ {
+ case CMManager::EDCAlwaysAsk :
+ {
+ defConnValue.iType = ECmDefConnAlwaysAsk;
+ break;
+ }
+ case CMManager::EDCAskOnce :
+ {
+ defConnValue.iType = ECmDefConnAskOnce;
+ break;
+ }
+ case CMManager::EDCDestination :
+ {
+ defConnValue.iType = ECmDefConnDestination;
+ defConnValue.iId = iId;
+ break;
+ }
+ case CMManager::EDCConnectionMethod :
+ {
+ defConnValue.iType = ECmDefConnConnectionMethod;
+ defConnValue.iId = iId;
+ break;
+ }
+ case CMManager::EDCDefaultConnection :
+ {
+ defConnValue.iType = ECmDefConnAlwaysAsk; //default value
+ break;
+ }
+ default:
+ {
+ defConnValue.iType = ECmDefConnAlwaysAsk; //default value
+ break;
+ }
+ };
+ return defConnValue;
+ };
+ };
+
+
+
+/**
+ * Implementation of application setting UI.
+ *
+ * @lib cmmanage.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS(CCmConnSettingsUiImpl) : public CBase
+ {
+
+ public:
+
+ IMPORT_C static CCmConnSettingsUiImpl* NewL( CCmManagerImpl* aCCmManagerImpl = NULL );
+ static CCmConnSettingsUiImpl* NewWithoutTablesL();
+
+ virtual ~CCmConnSettingsUiImpl();
+
+ //=========================================================================
+ // UI API
+ //
+ public:
+
+ /**
+ * Launches the 'easy to use' Settings UI provided for applications
+ * for handling Destinations and Connection Methods
+ *
+ * @since 3.2
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. If a list of Destinations is displayed, and
+ * the initial highlight is set to a Connection Method, the parent Destination
+ * gets highlighted. On return, holds user selection.
+ * @param aListItems A bit field which indicates which items shoud be
+ * shown in the selection dialog. The bitmasks are
+ * defined in the TCmSelectionDialogItems enum.
+ *
+ * The function leaves with KErrNotSupported if all the items which
+ * were set to be shown are not supported/enabled.
+ * E.g. Default Connection availability/support is controlled by the
+ * Feature Manager so if only EShowDefaultConnection is set and the
+ * Default Connection feature is not enabled than the function leaves
+ * with KErrNotSupported.
+ *
+ * In other cases (when an item or items are not supported/enabled but
+ * not all) the selected but not supported/enabled items are not added
+ * to the list. The request to show such an item is silently ignored.
+ *
+ *
+ * Special note about the EShowDestinations and EShowConnectionMethods
+ * bitmasks:
+ * The following enumerations controls how how destinations and
+ * Connection Methods are presented in the selection UI.
+ * General rule about the EShowDestinations:
+ * Destinations which does not contain any Connection Methods are
+ * not shown in the selection dialog. The same rule is applied if
+ * the Destination containes Connection Methods but all of them
+ * are filtered out by the filtering criteria.
+ * EShowDestinations is set and EShowConnectionMethods is set:
+ * Destination list is added to the selection UI and a Connection
+ * Method can be selected inside a Destination.
+ * EShowDestinations is set and EShowConnectionMethods is not set:
+ * Destination list is added to the selection UI and no Connection
+ * Method can be selected inside a Destination.
+ * EShowDestinations is not set and EShowConnectionMethods is set:
+ * Connection Method list is added to the selection UI. Connection
+ * Methods are ordered according to the global bearer type
+ * priorities. Destination cannot be selected.
+ * EShowDestinations is not set and EShowConnectionMethods is not set:
+ * The selection UI will not contain any Destination or Connection
+ * Method. E.g. If EShowAlwaysAsk and EShowDefaultConnection was
+ * set then the selection UI will contain two entries (AlwaysAsk
+ * and DefaultConnection).
+ *
+ * @param aFilterArray Only Connection Methods with bearer types from
+ * the aFilterArray will be showed.
+ * All Connection Methods will be listed if the
+ * array has no element.
+ * @return TBool seleceted or not.
+ *
+ * @leave KErrArgument If the selection dialog would have zero
+ * elements based on the aListItems bitmask
+ * (aListItems is equal to zero).
+ *
+ * @leave KErrNotSupported
+ * If the selection dialog would have zero
+ * elements based on the aListItems bitmask
+ * (all the selected elements in aListItems
+ * are not supported/disabled).
+ * E.g. aListItems = EShowDefaultConnection but
+ * Default Connection feature is not enabled.
+ *
+ * @leave KErrNotFound If the selection dialog would have zero
+ * elements caused by filtering out all the
+ * Connection Methods with the aFilterArray
+ * and not requesting other list elements by
+ * the aListItems bitfield than an error note
+ * is shown and the function call leaves with
+ * KErrNotFound error code.
+ * E.g.
+ * - aListItems = EShowConnectionMethods
+ * but all Connection Methods are filtered
+ * out by the aFilterArray.
+ */
+ IMPORT_C TBool RunApplicationSettingsL(
+ TCmSettingSelection& aSelection,
+ TUint aListItems,
+ TBearerFilterArray& aFilterArray);
+
+ /**
+ * Launches the Default Connection Radio Button Page
+ * for use in Destinations View
+ * @since 3.1U
+ * @params aSelection User selection.
+ * @returns ETrue if a selection was made
+ */
+ TBool RunDefaultConnecitonRBPageL ( TCmDCSettingSelection& aSelection );
+
+ /**
+ * Creates and returns a string which contains the default connection name
+ * for use in Destinations View
+ * @since 3.1U
+ * @params aSelection User selection.
+ * @returns the default connection name
+ */
+ HBufC* CreateDefaultConnectionNameL( TCmDefConnValue aSelection );
+
+ /**
+ * Enables/Disables AlwaysAsk
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableAlwaysAsk( TBool aEnable )
+ { iShowAlwaysAsk = aEnable; }
+
+ /**
+ * Enables/Disables EasyWlan
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableEasyWlan( TBool aEnable )
+ { iShowEasyWlan = aEnable; }
+
+ /**
+ * Enables/Disables VirtualCMs
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableVirtualCMs( TBool aEnable )
+ { iShowVirtualCMs = aEnable; }
+
+ /**
+ * Enables/Disables EmptyDestinations
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableEmptyDestinations( TBool aEnable )
+ { iShowEmptyDestinations = aEnable; }
+
+ /**
+ * Sets a destination id which should be omitted from the list
+ * typically this will be the parent destination of a virtual CM
+ *
+ * @param aDestinationId
+ * @since S60 3.2
+ */
+ inline void SetDestinationToOmit( TUint32 aDestinationId )
+ { iDestinationToOmit = aDestinationId; }
+
+ /**
+ * Enables/Disables Ask Once
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableAskOnce( TBool aEnable )
+ { iShowAskOnce = aEnable; }
+
+ /**
+ * Enables/Disables Uncategorised item
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableUncat( TBool aEnable )
+ { iShowUncat = aEnable; }
+
+ /**
+ * Enables/Disables Default Connection item
+ *
+ * @param ETrue enables
+ * @since S60 3.2
+ */
+ inline void EnableDefConn( TBool aEnable )
+ { iShowDefConn = aEnable; }
+
+
+
+ /**
+ * Sets the array of destinations to be used.
+ * Typically this routine will be used by plugins having
+ * restrictions on possible destinations.
+ *
+ * @param aDestinationArray
+ * @since S60 3.2
+ */
+ IMPORT_C void SetDestinationArrayToUseL( RArray<TUint32> aDestinationArray );
+
+ /**
+ * Clear previously passed destinations and return to normal use.
+ *
+ * @since S60 3.2
+ */
+ IMPORT_C void ClearDestinationArrayToUse();
+
+ private:
+
+ CCmConnSettingsUiImpl();
+
+ void ConstructL( CCmManagerImpl* aCCmManagerImpl = NULL );
+
+ TInt LoadResourceL ();
+
+ /**
+ * Displays a set of destinations for selecting a network connection
+ *
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. If a list of Destinations is displayed, and
+ * the initial highlight is set to a Connection Method, the parent Destination
+ * gets highlighted. On return, holds user selection.
+ * @return soft key selection
+ */
+ TBool ShowConnSelectRadioPageL( TCmDCSettingSelection& aSelection,
+ const TInt aTitleStringResource,
+ TBearerFilterArray& aFilterArray );
+
+ /**
+ * Displays a the Default Connection/User Defined radio button page
+ *
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. If a list of Destinations is displayed, and
+ * the initial highlight is set to a Connection Method, the parent Destination
+ * gets highlighted. On return, holds user selection.
+ * @return soft key selection
+ */
+ // TBool ShowDefConnRadioPageL( TInt& aSelection );
+
+
+ /**
+ * Return array of destination of which have at least connection method
+ * @param aItems array of destination names
+ */
+ void BuildDestinationArrayL( CDesCArrayFlat* aItems,
+ TBearerFilterArray& aFilterArray );
+
+ /**
+ * Return array of CMs of which have at least connection method
+ * @param aItems array of destination names
+ */
+ void BuildCMArrayL( CDesCArrayFlat* aItems,
+ TBearerFilterArray& aFilterArray );
+
+ /**
+ * Put the array of CMs into iConnMethods
+ */
+ void GetCMArrayL( );
+
+ /**
+ * Build uncategorized connection method array and append
+ * 'Uncategorized' item if there's any.
+ * @param aUncatArray array of uncategorized connection method ids.
+ * @param aItems array of destination names
+ */
+ void BuildUncatArrayL( RPointerArray<CCmPluginBase>& aUncatArray,
+ CDesCArrayFlat* aItems,
+ TBearerFilterArray& aFilterArray );
+ /**
+ * Show destination selection dialog.
+ * @param aDestSelected index of selected destination
+ * @param aItems array of destination names
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. If a list of Destinations is displayed, and
+ * the initial highlight is set to a Connection Method, the parent Destination
+ * gets highlighted. On return, holds user selection.
+ * @return ETrue if a selection was made
+ */
+ TBool UserSelectionDlgL( TInt& aDestSelected,
+ CDesCArrayFlat* aItems,
+ TCmDCSettingSelection& aSelection,
+ const TInt aTitleStringResource,
+ TBool aOpenDestination );
+
+ /**
+ * Show uncategorized connection method selection dialog
+ * @param aUncatArray list of uncategorized connection methods.
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. On return, holds user selection.
+ * @return softkey selection.
+ */
+ TBool UserSelectedUncatItemL( RPointerArray<CCmPluginBase>& aUncatArray,
+ TCmDCSettingSelection& aSelection,
+ const TInt aTitleStringResource );
+
+ /**
+ * A radio button page of all the connection methods belonging to
+ * a the specified destination
+ *
+ * @param aDestinationId the destination from which a connection
+ * method will be selected
+ * @param aSelection If initialised to a valid value, sets the higlight to the
+ * corresponding list item at startup. On return, holds user selection.
+ * @return soft key selection
+ */
+ TBool ShowConnectionMethodsL( RPointerArray<CCmPluginBase>& aCmArray,
+ TCmDCSettingSelection& aSelection,
+ const TInt aTitleStringResource,
+ TBearerFilterArray& aFilterArray );
+
+ /**
+ * Checks if a Connection method is virtual
+ *
+ * @since S60 3.2
+ * @param aCmIapId the iap id of the CM
+ * @return ETrue if virtual
+ */
+ TBool IsCmVirtualL( TUint32 aCmIapId );
+
+ private: // data
+
+ /**
+ * pointer to the CmManager - OWNED
+ */
+ CCmManagerImpl* iCmManagerImpl;
+
+ /**
+ * resource loader
+ */
+ RConeResourceLoader iResourceReader;
+
+ /**
+ * List of destination or CM IDs to show
+ */
+ RArray<TUint32> iItems;
+ /**
+ * Indicates whether iItems holds destinatos or CMs
+ */
+ TBool iAreDestinations;
+
+ /**
+ * Indicates whether Always Ask should be shown in the page
+ */
+ TBool iShowAlwaysAsk;
+
+ /**
+ * Indicates whether EasyWlan should be shown in the page
+ */
+ TBool iShowEasyWlan;
+
+ /**
+ * Indicates whether virtual iaps should be shown in the page
+ */
+ TBool iShowVirtualCMs;
+
+ /**
+ * Indicates whether Empty destinations should be shown in the page
+ */
+ TBool iShowEmptyDestinations;
+
+ /**
+ * Indicates the id of destination to specifically omit (usually a parent destination)
+ * if zero, it can be ignored
+ */
+ TUint iDestinationToOmit;
+
+ /**
+ * Indicates whether Ask Once item should be shown in the page
+ */
+ TBool iShowAskOnce;
+
+ /**
+ * Indicates whether Uncategorized item should be shown in the page
+ */
+ TBool iShowUncat;
+
+ /**
+ * Indicates whether Default Connection item should be shown in the page
+ */
+ TBool iShowDefConn;
+
+ /**
+ * Indicates whether we have an own CmManager that we have to create and destroy
+ */
+ TBool iOwnCmManager;
+
+ /**
+ * Indicates whether the selected destinaton should be opened
+ */
+ TBool iOpenDestination;
+
+ /**
+ * Indicates whether to use a passed list of destinations
+ * or use our own algorithm to get the list of possible destinations.
+ */
+ TBool iUsePassedDestinationArray;
+
+ /**
+ * An Array to hold the passed destinations.
+ */
+ RArray<TUint32> iPassedDestinations;
+
+ /**
+ * help context
+ */
+ TCoeContextName iHelpContext;
+
+ /**
+ * Indicates whether the tables should be created
+ */
+ TBool iCreateTables;
+ };
+#endif // C_CMCONNSETTINGSUIIMPL_H