epoc32/include/mw/apselect.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/apselect.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/apselect.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,745 @@
-apselect.h
+/*
+* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of the CApSelect class.
+*
+*/
+
+
+#ifndef CAPSELECT_H
+#define CAPSELECT_H
+
+// Deprecation warning
+#warning This header file has been deprecated. Will be removed in one of the next SDK releases.
+ 
+ 
+//  INCLUDES
+#include <commdb.h>
+#include <ApEngineVer.h>
+#include <ApEngineConsts.h>
+
+
+// FORWARD DECLARATIONS
+class CApListItem;
+class CApListItemList;
+class CApUtils;
+
+
+
+enum TVpnFilterType
+    {
+    EVpnFilterVpnOnly,          ///< Shows only VPN access points
+    EVpnFilterNoVpn,            ///< Shows only non-VPN access points
+    EVpnFilterBoth              ///< Shows both normal and VPN access points
+    };
+
+
+// CLASS DECLARATION
+// Extra data holder
+typedef struct
+    {
+        TInt                iMaxIndex;
+        TInt                iReqIpvType;
+        TInt                iIsIpv6Supported;
+        TInt                iExtra;
+        TBool               iIsFeatureManagerInitialised;
+        TBool               iCdma;
+        TInt                iVpnFilterType; // TVpnFilterType values !!
+        TBool               iWlanSupported;
+        TBool               iIncludeEasyWlan;
+    }TSelectExtra;
+
+
+
+typedef struct
+    {
+    TUint32     iVpnIapId;
+    TUint32     iHomeIapId;
+    HBufC *     iName;
+    }TVpnData;
+
+
+/**
+*  This class is used to help client's access point selection.
+*  Selection can be tailored with specific filters, rules and sort order.
+*  Provides methods for setting and getting filters and sort order.
+*
+*/
+class CApSelect :public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor. Leaves on failure, places instance
+        * on cleanup stack.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @return The constructed CApSelect.
+        *
+        * @deprecated
+        */
+        IMPORT_C static CApSelect* NewLC(
+                                        CCommsDatabase& aDb,
+                                        TInt aIspFilter,
+                                        TInt aBearerFilter,
+                                        TInt aSortType
+                                        );
+
+
+        /**
+        * Two-phased constructor. Leaves on failure, places instance
+        * on cleanup stack.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        * @return The constructed CApSelect.
+        *
+        * @deprecated
+        */
+        IMPORT_C static CApSelect* NewLC(
+                                        CCommsDatabase& aDb,
+                                        TInt aIspFilter,
+                                        TInt aBearerFilter,
+                                        TInt aSortType,
+                                        TInt aReqIpvType
+                                        );
+
+
+
+        /**
+        * Two-phased constructor. Leaves on failure, places instance
+        * on cleanup stack.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        * @param aVpnFilterType a TVpnFilterType enum specifying the 
+        * vpn filtering.
+        * @return The constructed CApSelect.
+        *
+        * @deprecated
+        */
+        IMPORT_C static CApSelect* NewLC(
+                                        CCommsDatabase& aDb,
+                                        TInt aIspFilter,
+                                        TInt aBearerFilter,
+                                        TInt aSortType,
+                                        TInt aReqIpvType,
+                                        TVpnFilterType aVpnFilterType );
+
+
+        /**
+        * Two-phased constructor. Leaves on failure, places instance
+        * on cleanup stack.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        * @param aVpnFilterType a TVpnFilterType enum specifying the 
+        * vpn filtering.
+        * @param aIncludeEasyWlan TBool specifying whther to include
+        * EasyWlan access point in the list or not...
+        * @return The constructed CApSelect.
+        *
+        * @deprecated
+        */
+        IMPORT_C static CApSelect* NewLC(
+                                        CCommsDatabase& aDb,
+                                        TInt aIspFilter,
+                                        TInt aBearerFilter,
+                                        TInt aSortType,
+                                        TInt aReqIpvType,
+                                        TVpnFilterType aVpnFilterType,
+                                        TBool aIncludeEasyWlan );
+
+
+        /**
+        * Destructor.
+        *
+        * @deprecated
+        */
+        IMPORT_C virtual ~CApSelect();
+
+
+    protected:      // Constructors
+
+        /**
+        * C++ default constructor.
+        *
+        * @deprecated
+        */
+        IMPORT_C CApSelect();
+
+
+        /**
+        * Second-phase constructor.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        *
+        * @deprecated
+        */
+        IMPORT_C void ConstructL(
+                                CCommsDatabase& aDb,
+                                TInt aIspFilter,
+                                TInt aBearerFilter,
+                                TInt aSortType
+                                );
+
+
+        /**
+        * Second-phase constructor.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        *
+        * @deprecated
+        */
+        IMPORT_C void ConstructL(
+                                CCommsDatabase& aDb,
+                                TInt aIspFilter,
+                                TInt aBearerFilter,
+                                TInt aSortType,
+                                TInt aReqIpvType
+                                );
+
+
+        /**
+        * Second-phase constructor.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        * @param aVpnFilterType a TVpnFilterType enum specifying the 
+        * vpn filtering.
+        *
+        * @deprecated
+        */
+        IMPORT_C void ConstructL( CCommsDatabase& aDb,
+                                 TInt aIspFilter,
+                                 TInt aBearerFilter,
+                                 TInt aSortType,
+                                 TInt aReqIpvType,
+                                 TVpnFilterType aVpnFilterType 
+                                 );
+                                 
+        /**
+        * Second-phase constructor.
+        * @param aDb a pointer to a CCommsDataBase.
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP, KEApIspTypeWAPMandatory
+        * KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType Filtering criteria on the IPv type of the 
+        * access point. In case of GPRS, GPRS_PDP_TYPE holds it, while
+        * in case of CSD, all CSD access points are 
+        * considered to be IPv4 & IPv6 (both)
+        * @param aVpnFilterType a TVpnFilterType enum specifying the 
+        * vpn filtering.
+        * @param aIncludeEasyWlan TBool specifying whther to include
+        * EasyWlan access point in the list or not...
+        *
+        * @deprecated
+        */                                 
+        IMPORT_C void ConstructL( CCommsDatabase& aDb,
+                                 TInt aIspFilter,
+                                 TInt aBearerFilter,
+                                 TInt aSortType,
+                                 TInt aReqIpvType,
+                                 TVpnFilterType aVpnFilterType,
+                                 TBool aIncludeEasyWlan );
+                                 
+    public: // New functions
+        /**
+        * Sets filters and sorting order for the list of available
+        * access points
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP,
+        * KEApIspTypeWAPMandatory, KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        *
+        * @deprecated
+        */
+        IMPORT_C void SetFiltersL(
+                                 TInt aIspFilter,
+                                 TInt aBearerFilter,
+                                 TInt aSortType
+                                 );
+
+
+
+        /**
+        * Gets the current ISP-type filter
+        * @return The current ISP-type filter
+        *
+        * @deprecated
+        */
+        IMPORT_C TInt IspTypeFilter();
+
+
+        /**
+        * Gets the current bearer-type filter
+        * @return The current bearer-type filter
+        *
+        * @deprecated
+        */
+        IMPORT_C TInt BearerFilter();
+
+
+        /**
+        * Gets the current sorting order
+        * @return The current sorting order
+        *
+        * @deprecated
+        */
+        IMPORT_C TInt SortOrder();
+
+
+        /**
+        * Navigates to the first access point in the list.
+        * @return Boolean indicating the success of the operation.
+        *
+        * @deprecated
+        */
+        IMPORT_C TBool  MoveToFirst();
+
+
+        /**
+        * Navigates to the next access point in the list.
+        * @return Boolean indicating the success of the operation.
+        *
+        * @deprecated
+        */
+        IMPORT_C TBool  MoveNext();
+
+
+        /**
+        * Navigates to the last access point in the list.
+        * @return Boolean indicating the success of the operation.
+        *
+        * @deprecated
+        */
+        IMPORT_C TBool  MoveLast();
+
+
+        /**
+        * Navigates to the previous access point in the list.
+        * @return Boolean indicating the success of the operation.
+        *
+        * @deprecated
+        */
+        IMPORT_C TBool  MovePrev();
+
+
+        /**
+        * Counts the items in the list
+        * @return The number of items in the list.
+        *
+        * @deprecated
+        */
+        IMPORT_C TUint32 Count();
+
+
+        /**
+        * Gets the name of the 'current' access point
+        * Ownership of the returned text is not passed.
+        * @return The name of the current access point
+        *
+        * @deprecated
+        */
+        IMPORT_C const TDesC& Name();
+
+
+        /**
+        * Gets the UID of the current access point
+        * @return The UID of the current access point
+        *
+        * @deprecated
+        */
+        IMPORT_C TUint32 Uid();
+
+
+        /**
+        * Gets the ISP-type of the current access point
+        * @return The ISP-type of the current access point.
+        *
+        * @deprecated
+        */
+        IMPORT_C TCommsDbIspType Type();
+
+
+        /**
+        * Gets the bearer-type of the current access point
+        * @return The bearer-type of the current access point.
+        *
+        * @deprecated
+        */
+        IMPORT_C TApBearerType BearerType();
+
+
+        /**
+        * Provides all data in a CApListItemList array.
+        * @param aList A reference to a CApListItemList object
+        * to hold the values.
+        * @return The number of items in the list.
+        * All elements in the aList array and their memory
+        * will be freed inside the routine.
+        * The routine expands or shrinks the array as necessary
+        * to minimize memory consumption.
+        *
+        * @deprecated
+        */
+        IMPORT_C TInt AllListItemDataL( CApListItemList& aList );
+
+        /**
+        * Returns whether the current item is read-only or not.
+        * @return Returns whether the current item is read-only or not.
+        *
+        * @deprecated
+        */
+        IMPORT_C TBool IsReadOnly() const;
+
+    private:
+        /**
+        * This function updates the member data according to the
+        * current filter settings.
+        * @return Error code.
+        */
+        TInt DoUpdateL();
+
+
+        /**
+        * Gets the filtered and sorted wap table
+        * and places it on the Cleanupstack
+        */
+        CCommsDbTableView* GetFilteredSortedWapTableViewLC();
+
+
+        /**
+        * Gets the filtered and sorted IP bearer table
+        * and places it on the Cleanupstack
+        */
+        CCommsDbTableView* GetFilteredSortedIpBearerTableViewLC();
+
+
+        /**
+        * Gets the filtered and sorted ISP table
+        * and places it on the Cleanupstack
+        */
+        CCommsDbTableView* GetFilteredSortedIspOutTableViewLC();
+
+
+        /**
+        * Gets the filtered and sorted GPRS table
+        * and places it on the Cleanupstack
+        */
+        CCommsDbTableView* GetFilteredSortedGprsTableViewLC( TBool aIn );
+
+
+        /**
+        * Gets the filtered and sorted CDMA table
+        * and places it on the Cleanupstack
+        */
+        CCommsDbTableView* GetFilteredSortedCdmaTableViewLC();
+
+
+        /**
+        * Reads up the specified columns TUint32 values stored
+        * in the table and returns it in the passed array
+        */
+        void GetUintValuesL
+                (
+                CCommsDbTableView* aTable,
+                const TDesC& aField,
+                CArrayFixFlat<TUint32>& aArray
+                );
+
+
+        /**
+        * Reads up the protection values stored
+        * in the table and returns it in the passed array
+        */
+        void GetProtValuesL( CCommsDbTableView* aTable,
+                             CArrayFixFlat<TUint32>& aArray );
+
+        /**
+        * Reads up the specified columns text values stored
+        * in the table and returns it in the passed array
+        */
+        void GetTextValuesL
+                (
+                CCommsDbTableView* aTable,
+                const TDesC& aField,
+                CArrayPtrFlat<HBufC>& aArray
+                );
+
+
+        /**
+        * Reads up the specified columns long text values stored
+        * in the table and returns it in the passed array
+        */
+        void GetLongTextValuesL
+                (
+                CCommsDbTableView* aTable,
+                const TDesC& aField,
+                CArrayPtrFlat<HBufC>& aArray
+                );
+
+
+        /**
+        * Returns whether a given value is in the given array or not
+        */
+        TBool IsInArray( CArrayFixFlat<TUint32>* aArray, TUint32 aValue );
+
+
+        /**
+        * Returns the position of a given value in the given array.
+        */
+        TInt PosInArray( CArrayFixFlat<TUint32>* aArray, TUint32 aValue );
+
+
+        /**
+        * Returns the position of an item with a given UID in the given list.
+        */
+        TInt GetItemPos( CApListItemList* aTmpApList, TUint32 aId );
+
+
+        /**
+        * Opens a view on the given table where a given text coloumn has
+        * a given value
+        * @return the opened view on the table
+        */
+        CCommsDbTableView* OpenViewMatchingTextL
+                                (
+                                const TDesC& aTableName,
+                                const TDesC& aColumnToMatch,
+                                const TDesC16& aValueToMatch
+                                );
+
+        /**
+        * Gets the ISP values (ISP UID, ISP type, ISP bearer type)
+        * from a given table
+        * @param aTable the table to go through (already filtered & ordered)
+        * @param aArray An array to hold the readed values
+        * @param aColName Column name (different column names are used for
+        * CSD/GPRS/CDMA.
+        */
+        void GetIspValuesL
+                (
+                CCommsDbTableView* aTable,
+                CArrayFixFlat<TUint32[3]>* aArray,
+                const TDesC& aColName
+                );
+
+        /**
+        * Gets the position of an element with a given IAP UID
+        */
+        TInt GetIapPos
+                (
+                CArrayFixFlat<TUint32[3]>* aArray,
+                TUint32 aValue
+                );
+
+        /**
+        * Sorts the data according to localised sorting on the 
+        * access point names, using CompareC
+        */
+        void SortLocalisedNameL( TBool aAscending = ETrue );
+
+
+        /**
+        * Sorts the data according to Uids
+        */
+        void SortUidL( TBool aAscending = ETrue );
+
+
+
+    private:    // New functions
+        /**
+        * Sets filters and sorting order for the list of available
+        * access points
+        * @param aIspTypeFilter Filtering criteria on ISP type
+        * Possible values are:
+        * KEApIspTypeInternetOnly, KEApIspTypeWAPOnly,
+        * KEApIspTypeInternetAndWAP,
+        * KEApIspTypeWAPMandatory, KEApIspTypeAll and their combinations.
+        * @param aBearerFilter Filtering criteria on bearer type
+        * Possible values are the TApBearer enums and
+        * their combinations (or-ed).
+        * @param aSortType Specifies the sort order to use.
+        * Possible values are:
+        * KEApSortUidAscending, KEApSortUidDescending,
+        * KEApSortNameAscending, KEApSortNameDescending
+        * @param aReqIpvType The filtering criteria for IPv type
+        * @param aVpnFilterType The Vpn filtering type, TVpnFilterType values
+        */
+        void SetFiltersL( TInt aIspFilter,
+                          TInt aBearerFilter,
+                          TInt aSortType,
+                          TInt aReqIpvType,
+                          TInt aVpnFilterType
+                         );
+
+
+        /**
+        * Returns a pointer to the opened VPN_SERVICE table
+        */
+        CCommsDbTableView* GetVpnTableViewLC();
+
+
+        /**
+        * Gets the VPN values (VPN IAP UID, VPN HOME IAP UID, VPN Name )
+        * from the given VPN table
+        * @param aTable the table to go through (already filtered & ordered)
+        * @param aVpnArray An array to hold the readed vpn data values
+        */
+        void GetVpnValuesL( CCommsDbTableView* aTable, 
+                            CArrayFixFlat<TVpnData>* aVpnArray );
+
+
+        /**
+        * Returns the supported bearer set from the passed requested bearer set
+        * @param aBearerFilter The requested bearer set
+        * return The supported subset of the requested bearers.
+        */
+        TInt GetSupportedBearerSet( TInt aBearerFilter );
+
+
+        /**
+        * Adding WLAN or LAN access points to existing list.
+        * aWlan a TBool specifying whether WLAN or LAN
+        */
+        void AddLanL( TBool aWlan );
+
+
+
+
+    private:    // Data
+        CCommsDatabase*             iDb;    // Does not own it!
+        TInt                        iIsp;
+        TInt                        iBearer;
+        TInt                        iSort;
+        CApListItemList*            iApList;
+        TInt                        iCursor;
+        TInt                        iCount;
+        TSelectExtra*               iExt;
+
+    };
+
+#endif      // CAPSELECT_H
+
+// End of File