--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/apengine/apsettingshandlerui/inc/ApSettingsModel.h Wed Oct 27 17:43:56 2010 +0300
@@ -0,0 +1,699 @@
+/*
+* Copyright (c) 2002 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 class CApSettingsModel.
+*
+*/
+
+
+#ifndef APSETTINGS_MODEL_H
+#define APSETTINGS_MODEL_H
+
+// INCLUDE FILES
+#include <ApDataHandler.h>
+#include <ApUtils.h>
+#include <ApSelect.h>
+
+#include <ApSettingsHandlerCommons.h>
+
+#include <ApProtHandler.h> //for protection of settings
+
+
+// FORWARD DECLARATION
+class CActiveApDb;
+class CApListItem;
+class CApListItemList;
+class CApAccessPointItem;
+class CApDataHandler;
+class CApSelect;
+class CAknWaitDialog;
+class CApSettingsDeleteOperation;
+class CApNetworkItemList;
+class CFeatureManagerWrapper;
+class CVpnApEngine;
+class CEikonEnv;
+
+class CWEPSecuritySettings;
+
+class CWPASecuritySettings;
+
+
+
+/**
+* A structure to hold filtering parameters
+* First, it is possible to specify which ISP-type we are looking for.
+* The possible values are:
+* <br>
+* KEApIspTypeInternetOnly: Filter allows only access points that are
+* capable of only internet access.
+* <br>
+* KEApIspTypeWAPOnly: Filter allows only access points that are
+* capable of only WAP access.
+* <br>
+* KEApIspTypeInternetAndWAP:Filter allows only access points that are
+* capable of internet AND WAP access.
+* <br>
+* KEApIspTypeWAPMandatory: Filter allows only access points that are
+* capable of WAP access AND contain mandatory
+* WAP settings.
+* <br>
+* KEApIspTypeAll: No filtering is done for the isp-type,
+* all types of access points are shown.
+* <br>
+* It is possible to combine them by simply adding/or-ing together the values,
+* filtering will be done in such a way that only access points with the
+* listed ISP-types will be shown.
+* Second filtering possibility (aBearerFilter) is the desired bearer type.
+* The possible values are the values of the TApBearerType enum type and their
+* combinations, as in case of the ISP type.
+* The ordering of the list can be specified with the aSortType parameter.
+* It can have the following values:
+* KEApSortUidAscending: The sorting is done according to the ID
+* of the access points in ascending order.
+* KEApSortUidDescending: The sorting is done according to the ID
+* of the access points in descending order.
+* KEApSortNameAscending: The sorting is done according to the name
+* of the access points in ascending order.
+* KEApSortNameDescending: The sorting is done according to the name
+* of the access points in descending order.
+*/
+typedef struct
+ {
+ TInt iIspFilter;
+ TInt iBearerFilter;
+ TInt iSortType;
+ }TApSettingsParams;
+
+
+
+
+
+
+
+// CLASS DECLARATION
+
+/**
+* Model for the access point settings ui.
+*/
+NONSHARABLE_CLASS( CApSettingsModel ) : public CBase
+ {
+ public: // Construct / destruct
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * The following three parameters specify the filtering and ordering
+ * criteria for the selection list creation. First, it is possible to
+ * specify which ISP-type we are looking for. The possible values are:
+ * <br>
+ * KEApIspTypeInternetOnly: Filter allows only access points that are
+ * capable of only internet access.
+ * <br>
+ * KEApIspTypeWAPOnly: Filter allows only access points that are
+ * capable of only WAP access.
+ * <br>
+ * KEApIspTypeInternetAndWAP:Filter allows only access points that are
+ * capable of internet AND WAP access.
+ * <br>
+ * KEApIspTypeWAPMandatory: Filter allows only access points that are
+ * capable of WAP access AND contain
+ * mandatory WAP settings.
+ * <br>
+ * KEApIspTypeAll: No filtering is done for the isp-type, all
+ * types of access points are shown.
+ * <br>
+ * It is possible to combine them by simply adding/or-ing together the
+ * values, filtering will be done in such a way that only access points
+ * with the listed ISP-types will be shown.
+ * Second filtering possibility (aBearerFilter) is the desired bearer
+ * type. The possible values are the values of the TApBearerType enum
+ * type and their combinations, as in case of the ISP type.
+ * The ordering of the list can be specified with the aSortType
+ * parameter. It can have the following values:
+ * KEApSortUidAscending: The sorting is done according to the ID
+ * of the access points in ascending order.
+ * KEApSortUidDescending: The sorting is done according to the ID
+ * of the access points in descending order.
+ * KEApSortNameAscending: The sorting is done according to the name
+ * of the access points in ascending order.
+ * KEApSortNameDescending: The sorting is done according to the name
+ * of the access points in descending order.
+ * Caution! The ordering values can not be combined!
+ * @param aIspTypeFilter Filtering criteria on ISP type
+ * @param aBearerFilter Filtering criteria on bearer type
+ * @param aSortType Specifies the sort order to use.
+ * @param aReqIpvType Specifies whether the caller would like to
+ * have IPv4, IPv6 or both access points. If it is IPv6 or Both,
+ * in case of IPv6 support is available as a feature, it will be
+ * supported. If IPv6 feature is not supported by the phone, it
+ * simply defaults to the normal IPv4 version.
+ * If it is IPv4, it uses the default IPv4 version independently
+ * from IPv6 feature beeing available or not.
+ * @param aVpnFilterType a TVpnFilterType representing the possible
+ * additional VPN filtering.
+ * @param aVariant The local variant value
+ * @param aIncludeEasyWlan a TBool indicating whether to include the
+ * EasyWlan AP in the list or not
+ * @param aNoEdit Gives wether editing is allowed or not
+ * @return The constructed listbox.
+ */
+ static CApSettingsModel* NewL(
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TInt aVariant,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit
+ );
+
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * The following three parameters specify the filtering and ordering
+ * criteria for the selection list creation. First, it is possible to
+ * specify which ISP-type we are looking for. The possible values are:
+ * <br>
+ * KEApIspTypeInternetOnly: Filter allows only access points that are
+ * capable of only internet access.
+ * <br>
+ * KEApIspTypeWAPOnly: Filter allows only access points that are
+ * capable of only WAP access.
+ * <br>
+ * KEApIspTypeInternetAndWAP:Filter allows only access points that are
+ * capable of internet AND WAP access.
+ * <br>
+ * KEApIspTypeWAPMandatory: Filter allows only access points that are
+ * capable of WAP access AND contain
+ * mandatory WAP settings.
+ * <br>
+ * KEApIspTypeAll: No filtering is done for the isp-type, all
+ * types of access points are shown.
+ * <br>
+ * It is possible to combine them by simply adding/or-ing together the
+ * values, filtering will be done in such a way that only access points
+ * with the listed ISP-types will be shown.
+ * Second filtering possibility (aBearerFilter) is the desired bearer
+ * type. The possible values are the values of the TApBearerType enum
+ * type and their combinations, as in case of the ISP type.
+ * The ordering of the list can be specified with the aSortType
+ * parameter. It can have the following values:
+ * KEApSortUidAscending: The sorting is done according to the ID
+ * of the access points in ascending order.
+ * KEApSortUidDescending: The sorting is done according to the ID
+ * of the access points in descending order.
+ * KEApSortNameAscending: The sorting is done according to the name
+ * of the access points in ascending order.
+ * KEApSortNameDescending: The sorting is done according to the name
+ * of the access points in descending order.
+ * Caution! The ordering values can not be combined!
+ * @param aDb The database to work on
+ * @param aIspTypeFilter Filtering criteria on ISP type
+ * @param aBearerFilter Filtering criteria on bearer type
+ * @param aSortType Specifies the sort order to use.
+ * @param aReqIpvType Specifies whether the caller would like to
+ * have IPv4, IPv6 or both access points. If it is IPv6 or Both,
+ * in case of IPv6 support is available as a feature, it will be
+ * supported. If IPv6 feature is not supported by the phone, it
+ * simply defaults to the normal IPv4 version.
+ * If it is IPv4, it uses the default IPv4 version independently
+ * from IPv6 feature beeing available or not.
+ * @param aVpnFilterType a TVpnFilterType representing the possible
+ * additional VPN filtering.
+ * @param aVariant The local variant value
+ * @param aIncludeEasyWlan a TBool indicating whether to include the
+ * EasyWlan AP in the list or not
+ * @param aNoEdit Gives wether editing is allowed or not
+ * @return The constructed listbox model.
+ */
+ static CApSettingsModel* NewL(
+ CActiveApDb& aDb,
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TInt aVariant,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CApSettingsModel();
+
+
+ protected:
+ /**
+ * Constructor.
+ * @param aIspTypeFilter Filtering criteria on ISP type
+ * @param aBearerFilter Filtering criteria on bearer type
+ * @param aSortType Specifies the sort order to use.
+ * @param aReqIpvType Specifies whether the caller would like to
+ * have IPv4, IPv6 or both access points. If it is IPv6 or Both,
+ * in case of IPv6 support is available as a feature, it will be
+ * supported. If IPv6 feature is not supported by the phone, it
+ * simply defaults to the normal IPv4 version.
+ * If it is IPv4, it uses the default IPv4 version independently
+ * from IPv6 feature beeing available or not.
+ * @param aVariant The variant
+ * @param aVpnFilterType a TVpnFilterType representing the possible
+ * additional VPN filtering.
+ * @param aVariant The local variant value
+ * @param aIncludeEasyWlan a TBool indicating whether to include the
+ * EasyWlan AP in the list or not
+ * @param aNoEdit Gives wether editing is allowed or not
+ */
+ CApSettingsModel(
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType,
+ TInt aVariant,
+ TVpnFilterType aVpnFilterType,
+ TBool aIncludeEasyWlan,
+ TBool aNoEdit
+ );
+
+
+ /**
+ * Second phase constructor. Leaves on failure.
+ * @param aDb Database to use if any, NULL otherwise.
+ */
+ virtual void ConstructL( CActiveApDb* aDb );
+
+
+ public:
+ /**
+ * Returns the database object
+ */
+ CActiveApDb* Database();
+
+
+ /**
+ * Gets the APs corresponding to the filtering criteria,
+ * already ordered.
+ * @param aFailedLocked a boolean indicating if the operation
+ * had failed because the DB was locked
+ * @param aList a reference to the list of APs.
+ * The passed list will be erased, elements destroyed,
+ * new elements created in it. The list owns the created elements
+ * and the caller maintaines ownership of the list.
+ * @param aIspFilter The isp filter to be used
+ * @param aBearerFilter The bearer filter to be used
+ * @param aSortType The ordering to be used.
+ * @param aReqIpvType Specifies whether the caller would like to
+ * have IPv4, IPv6 or both access points. If it is IPv6 or Both,
+ * in case of IPv6 support is available as a feature, it will be
+ * supported. If IPv6 feature is not supported by the phone, it
+ * simply defaults to the normal IPv4 version.
+ * If it is IPv4, it uses the default IPv4 version independently
+ * from IPv6 feature beeing available or not.
+ * @return the number of items in the list.
+ */
+ TInt AllListItemDataL
+ (
+ TBool& aFailedLocked,
+ CApListItemList& aList,
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType
+ );
+
+
+ /**
+ * Gets the APs corresponding to the filtering criteria,
+ * already ordered.
+ * @param aFailedLocked a boolean indicating if the operation
+ * had failed because the DB was locked
+ * @param aList a reference to the list of APs.
+ * The passed list will be erased, elements destroyed,
+ * new elements created in it. The list owns the created elements
+ * and the caller maintaines ownership of the list.
+ * @param aIspFilter The isp filter to be used
+ * @param aBearerFilter The bearer filter to be used
+ * @param aSortType The ordering to be used.
+ * @param aReqIpvType Specifies whether the caller would like to
+ * have IPv4, IPv6 or both access points. If it is IPv6 or Both,
+ * in case of IPv6 support is available as a feature, it will be
+ * supported. If IPv6 feature is not supported by the phone, it
+ * simply defaults to the normal IPv4 version.
+ * If it is IPv4, it uses the default IPv4 version independently
+ * from IPv6 feature beeing available or not.
+ * @param aVpnFilterType
+ * @param aIncludeEasyWlan a TBool indicating whether to include the
+ * EasyWlan AP in the list or not
+ * @return the number of items in the list.
+ */
+ TInt AllListItemDataL
+ (
+ TBool& aFailedLocked,
+ CApListItemList& aList,
+ TInt aIspFilter,
+ TInt aBearerFilter,
+ TInt aSortType,
+ TInt aReqIpvType,
+ TVpnFilterType aVpnFilterType,
+ TBool aIncludeEasyWlan
+ );
+
+
+ /**
+ * Gets the APs corresponding to the filtering criteria,
+ * already ordered.
+ * @param aFailedLocked a boolean indicating if the operation
+ * had failed because the DB was locked
+ * @param aList a reference to the list of APs.
+ * The passed list will be erased, elements destroyed,
+ * new elements created in it. The list owns the created elements
+ * and the caller maintaines ownership of the list.
+ * @return the number of items in the list.
+ */
+ TInt AllListItemDataL( TBool& aFailedLocked, CApListItemList& aList );
+
+
+ /**
+ * Reads up one access point data
+ * @param aUid The UID of the access point to read
+ * @param aApItem A reference to a CApAccessPointItem to hold the
+ * access point item readed from the database
+ */
+ void AccessPointDataL( TUint32 aUid, CApAccessPointItem& aApItem );
+
+
+ /**
+ * Updates one access point item in the database
+ * @param aApItem A reference to a CApAccessPointItem holding the
+ * access point item to be updated in the database
+ */
+ TBool UpdateAccessPointDataL( CApAccessPointItem& aApItem );
+
+
+ /**
+ * Returns a pointer to the CApDataHandler object
+ */
+ CApDataHandler* DataHandler();
+
+
+ /**
+ * Returns a pointer to the CApUtils object
+ */
+ CApUtils* ApUtils();
+
+
+ /**
+ * Sets the filtering parameters for the model
+ * @param aParams The filtering parameters to be used
+ */
+ void SetParams( TApSettingsParams aParams );
+
+
+ /**
+ * Gets the filtering parameters of the model
+ * @return The used filtering parameters
+ */
+ TApSettingsParams Params();
+
+
+ /**
+ * Returns a pointer to the VPN engine object
+ */
+ CVpnApEngine* VpnEngine();
+
+
+ /**
+ * Launches help
+ */
+ void LaunchHelpL();
+
+ /**
+ * Deletes an access point specified by its UID
+ * @param aUid The UID of the access point to delete.
+ */
+ void RemoveApL( TUint32 aUid );
+
+
+ /**
+ * Starts a transaction
+ * @param aWrite A boolean indicating whether read or write lock is
+ * needed.
+ * @param aShowNote A boolean indicating whether to show
+ * 'Cannot access database' note or not if DB is locked
+ * @param aRetry A boolean indicating whether to retry or not
+ * if DB is locked
+ * @param aLFFSChecking Whether low disk space is checked or not
+ * @return TTransactionResult containing whther it is our
+ * own transaction or not or it has failed with KErrLocked
+ */
+ TTransactionResult StartTransactionLC
+ (
+ TBool aWrite,
+ TBool aShowNote = ETrue,
+ TBool aRetry = ETrue,
+ TBool aLFFSChecking = ETrue
+ );
+
+ /**
+ * Gets write lock on the database
+ */
+ void GetWriteLockL();
+
+
+ /**
+ * Cleanup function for the transaction.
+ * In case of leave, it will be called and
+ * transaction will be rolled back
+ */
+ static void RollbackTransactionOnLeave( TAny* aDb );
+
+
+ /**
+ * Commits the transaction on the database
+ */
+ TInt CommitTransaction();
+
+
+ /**
+ * Check if Disk space goes below critical level if allocating
+ * more disk space.
+ * @param aShowErrorNote If ETrue, a warning note is shown.
+ * @param aBytesToWrite Amount of disk space to be allocated (use an
+ * estimate if exact amount is not known).
+ * @return ETrue if allocation would go below critical level.
+ */
+ TBool FFSSpaceBelowCriticalLevelL( TBool aShowErrorNote,
+ TInt aBytesToWrite /*=0*/ );
+
+
+ /**
+ * Gets the network list
+ * @param aFailedLocked a boolean indicating if the operation
+ * had failed because the DB was locked
+ * @param aList a reference to the list of networks.
+ * The passed list will be erased, elements destroyed,
+ * new elements created in it. The list owns the created elements
+ * and the caller must maintaine ownership of the list.
+ * Leaves on error (Database and memory errors)
+ * @return the number of items in the list.
+ */
+ TInt NetWorkListDataL( TBool& aFailedLocked,
+ CApNetworkItemList& aList );
+
+
+ /**
+ * Returns the model's required IPv type (4, 6 or both, bitfield)
+ */
+ TInt RequestedIPvType();
+
+
+ /**
+ * Returns whether the Select menu item should be deleted or not
+ * @param aResourceId The ID of the current menu resource
+ * @param aCount The number of items in the list
+ */
+ TBool Need2DeleteSelect( TInt aResourceId, TInt aCount );
+
+
+ /**
+ * Returns whether the Open menu item should be deleted or not
+ * @param aResourceId The ID of the current menu resource
+ * @param aCount The number of items in the list
+ * @param aUid The UID of the current item in the list
+ * @param aNeedsNone Gives whether NONE is displayed as an item or not
+ */
+ TBool Need2DeleteOpen( TInt aResourceId, TInt aCount,
+ TUint32 aUid, TBool aNeedsNone );
+
+
+ /**
+ * Returns whether the Delete menu item should be deleted or not
+ * @param aResourceId The ID of the current menu resource
+ * @param aCount The number of items in the list
+ * @param aUid The UID of the current item in the list
+ * @param aNeedsNone Gives whether NONE is displayed as an item or not
+ */
+ TBool Need2DeleteDeleteL( TInt aResourceId, TInt aCount,
+ TUint32 aUid, TBool aNeedsNone );
+
+
+ /**
+ * Returns tha the New/Use existing menu item should be deleted or not
+ * @param aResourceId The ID of the current menu resource
+ * @param aCount The number of items in the list
+ */
+ TBool Need2DeleteNewUseExisting( TInt aResourceId, TInt aCount );
+
+
+ /**
+ * @param aResourceId The ID of the current menu resource
+ * Returns whether the New menu item should be deleted or not
+ */
+ TBool Need2DeleteNewL( TInt aResourceId );
+
+
+ /**
+ * Returns whether the Help menu item should be deleted or not
+ */
+ TBool Need2DeleteHelp( TInt aResourceId );
+
+
+ protected:
+
+
+
+
+ public:
+ /**
+ * Returns the name of the first VPN accesspoint with which the access
+ * point with the passed WAP UID is associated.
+ * Name is placed on the CleanupStack if not null.
+ * Should not be called upon VPN access points!!!
+ * @param aUid The WAP UID of the normal access point
+ * @return NULL or a pointer to the name of the associated access point.
+ */
+ HBufC* GetLinkedVpnAccessPointLC( TUint32 aUid );
+
+
+ /*
+ * Returns the current EikEnvironment
+ */
+ CEikonEnv* EikEnv();
+
+
+
+ /**
+ * Creates a new access point from the passed item.
+ * @param aApItem A reference to a CApAccessPointItem holding the
+ * access point item to be added to the database
+ * @return The UID of the newly created and saved access point.
+ */
+ TUint32 CreateFromDataL( CApAccessPointItem& aApItem );
+
+
+ /**
+ * Handles WEP security settings
+ * Leaves on errors
+ * Return TInt giving exit or shutdown required if any, otherwise, 0
+ */
+ TInt ChangeWepSettingsL( CApAccessPointItem* aApItem );
+
+
+ /**
+ * Handles WPA security settings
+ * Leaves on errors
+ * Return TInt giving exit or shutdown required if any, otherwise, 0
+ */
+ TInt ChangeWpaSettingsL( CApAccessPointItem* aApItem );
+
+
+ /**
+ * Handles 802.1x security settings
+ * Leaves on errors
+ * Return TInt giving exit or shutdown required if any, otherwise, 0
+ */
+ TInt Change8021xSettingsL( CApAccessPointItem* aApItem );
+
+ /**
+ * Resets all WEP and WPA settings to NULL, thus forcing their
+ * re-load
+ */
+ void ClearWEPAndWPASettings();
+
+ /*
+ * Writes the WLAN settings part
+ */
+ void WriteWlanL( CApAccessPointItem& aApItem, TBool aIsNew );
+
+
+ /*
+ * Loads the WLAN settings part
+ */
+ void LoadWlanL( CApAccessPointItem& aApItem );
+
+ /**
+ * Returns whether the passed item has the security settings
+ * filled correctly or not.
+ */
+ TBool HasWlanSecSettingsFilledL( CApAccessPointItem& aApItem );
+
+
+ /**
+ * Update the security mode to reflect current state.
+ * Called after the user changed security settings
+ * @param aApItem The access point item containing the current settings
+ */
+ void UpdateSecurityModeL( CApAccessPointItem& aApItem );
+
+
+ private: // data
+ CActiveApDb* iDb;
+ CApDataHandler* iApData;
+ CApUtils* iUtils;
+ CApSettingsDeleteOperation* iop;
+ TApSettingsParams iParams;
+ TBool iDbOwned;
+ TInt iReqIpvType;
+ TVpnFilterType iVpnFilterType;
+ CVpnApEngine* iVpnApEngine;
+ TInt iVariant; /// Local variant value
+ TBool iIncludeEasyWlan;
+
+ CEikonEnv* iEikEnv; /// Eikon environment
+
+ public:
+ CWEPSecuritySettings* iWepSecSettings; ///< WEP settings data
+ TInt iWepUiExitReason; ///< WEP UI exit reason
+
+ CWPASecuritySettings* iWpaSecSettings; ///< WPA settings data
+ TInt iWpaUiExitReason; ///< WPA UI exit reason
+ TBool iNoEdit;
+
+ /**
+ * CFeatureManagerWrapper wraps FeatureManager to eliminate maintenance
+ * of existance of FeatureManager.
+ * Owned.
+ */
+ CFeatureManagerWrapper* iFeatureManagerWrapper;
+
+ TBool iInRefresh;
+ TBool iNeedRefresh;
+ TBool iHelpSupported;
+ TBool iProtectionSupported;
+ };
+
+
+#endif
+
+// End of file