phonesrv_plat/phone_settings_api/inc/psetnetworkwrapper.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
 * Copyright (c) 2009 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:
 *
 */

#ifndef PSETNETWORKWRAPPER_H
#define PSETNETWORKWRAPPER_H

#include <QObject>

class PSetNetworkWrapperPrivate;
class CPsetContainer;
class HbDialog;

#ifdef BUILD_PSETWRAPPER
#define PSETWRAPPER_EXPORT Q_DECL_EXPORT
#else
#define PSETWRAPPER_EXPORT Q_DECL_IMPORT
#endif

class PSETWRAPPER_EXPORT PSetNetworkWrapper : public QObject
{
    Q_OBJECT

public:
    
    enum ErrorCode {
        ErrNoError  = 0,
        ErrGeneral,
        ErrCauseCallActive,
        ErrNoNetworkService,
        ErrOfflineOpNotAllowed,
        ErrNoNetworkAccess
    };
    
    enum RequestType {
        RequestNone,
        RequestEnumerateNetworks,
        RequestGetNetworkInfo,
        RequestGetCurrentNetworkInfo,
        RequestGetNetworkSearchMode,
        RequestSetNetwork,
        RequestSetNetworkMode,
        RequestSetNetworkAutomatic
    };
    
    enum RegistrationStatus {
        RegisteredOnHomeNetwork,
        RegisteredRoaming
    };
    
    enum NetworkAccessMode {
        AccessModeDual,
        AccessModeUmts,
        AccessModeGsm
    };
    
    struct NetworkId{
        /*! Country code. Maximum length is 4. */
        QString m_countryCode;
        /*! Network code. Maximum length is 8. */
        QString m_networkCode;
    };

    enum NetworkSelectionMode {
        SelectionModeManual,
        SelectionModeAutomatic 
    };

    enum NetworkStatus {
        StatusUnknown,
        StatusAvailable,
        StatusCurrent,
        StatusForbidden
    };
    
    enum NetworkAccessType {
        AccessTypeGsm, 
        AccessTypeWcdma,
        AccessTypeGsmAndWcdma
    };

    struct NetworkInfo {
        NetworkId m_id;
        NetworkStatus m_status;
        NetworkSelectionMode m_mode;
        NetworkAccessType m_access;
        /*! Short name. Maximum length is 20. */
        QString m_shortName;
        /*! Long name. Maximum length is 30. */
        QString m_longName;
    };        

public:

    explicit PSetNetworkWrapper(CPsetContainer &psetContainer,
        QObject *parent = NULL);

    virtual ~PSetNetworkWrapper();

public:
    
    void getAvailableNetworks();
    
    ErrorCode getNetworkSelectionMode(
        PSetNetworkWrapper::NetworkSelectionMode& mode) const;
    
    void selectNetwork( 
        const PSetNetworkWrapper::NetworkInfo& info);
    
    void cancelRequest();

public:

    void getNetworkAccessMode() const;

    void setNetworkAccessMode(PSetNetworkWrapper::NetworkAccessMode mode);
    
    bool isManualNetworkSelectionSupported() const;

signals:

    // Real type of parameter mode is enum PSetNetworkWrapper::NetworkAccessMode.
    void networkAccessModeGot(int mode);
    
    void availableNetworksGot(QList<PSetNetworkWrapper::NetworkInfo*> &networkInfoList);
     
    void networkReqestFailed(
        PSetNetworkWrapper::ErrorCode error, 
        PSetNetworkWrapper::RequestType type);
    
    void searchingNetworks(PSetNetworkWrapper::RequestType &type);
    
    void requestingSelectedNetwork(bool ongoing);
    
    void networkChanged(
        PSetNetworkWrapper::NetworkInfo& currentInfo,
        PSetNetworkWrapper::RegistrationStatus& status);

    void chageVisbilityOfManualNetworkSelection(bool visible);
    
private:
    
    PSetNetworkWrapper(const PSetNetworkWrapper &);
    PSetNetworkWrapper &operator=(const PSetNetworkWrapper &);
    PSetNetworkWrapperPrivate* m_privateImpl;
    friend class PSetNetworkWrapperPrivate;
};

#endif // PSETNETWORKWRAPPER_H