⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iapconnectprogressnotifier.cpp

📁 这是一个手机编程s60 基于c++的关于手机连接internet的数据库协议
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CIAPConnectProgressNotifier from 
*               IAPConnectProgressNotifier.cpp
*  Part of  : Internet Access Points Example v2.0
*  Created  : 01.09.2006 by Forum Nokia
*  Version  : 2.0
*  Copyright: Forum Nokia
* ============================================================================
*/

// INCLUDES
#include "IAPConnectProgressNotifier.h"
#include "iapconnect.hrh"
#include <in_iface.h>
#include <aknglobalnote.h>

// CONSTANTS
_LIT(KNotConnectedText,             "Not Connected");  
_LIT(KUnknownStateText,             "Unknown State");
_LIT(KTextConnectionUninitialised,  "Not Connected");  
_LIT(KTextStartingSelection,        "Please wait..."); 
_LIT(KTextFinishedSelection,        "Finished Selection");
_LIT(KTextConnectionFailure,        "Connection Failure");

_LIT(KTextConnectionOpen,           "Connection Open");
_LIT(KTextConnectionClosed,         "Connection Closed");   

_LIT(KTextLinkLayerOpen,            "Link Layer Open"); 
_LIT(KTextLinkLayerClosed,          "Link Layer Closed");       

_LIT(KTextConnectionSuspended,      "Connection Suspended");
_LIT(KTextPreparingConnection,      "Preparing Connection");
_LIT(KTextConnecting,               "Connecting...");
_LIT(KTextConnectionStartingClose,  "Disconnecting");		
_LIT(KTextCsdStartingLogIn,         "Starting Login");
_LIT(KTextCsdFinishedLogIn,         "Finished Login");

// ========================== MEMBER FUNCTIONS ===============================

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::NewL(
//    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
//
// Constructs CIAPConnectProgressNotifier object
// ---------------------------------------------------------------------------
//
CIAPConnectProgressNotifier* CIAPConnectProgressNotifier::NewL(
    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
    {
    CIAPConnectProgressNotifier* self = NewLC(aObserver, aConnection);
    CleanupStack::Pop(self);
    return self;
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::NewLC(
//    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
//
// Constructs CIAPConnectProgressNotifier object
// ---------------------------------------------------------------------------
// 
CIAPConnectProgressNotifier* CIAPConnectProgressNotifier::NewLC(
    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
    {
    CIAPConnectProgressNotifier* self = 
        new (ELeave) CIAPConnectProgressNotifier(aObserver, aConnection);
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::CIAPConnectProgressNotifier(
//    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
//
// Constructor
// ---------------------------------------------------------------------------
// 
CIAPConnectProgressNotifier::CIAPConnectProgressNotifier(
    MIAPConnectStateObserver* aObserver, RConnection& aConnection)
: CActive(CActive::EPriorityStandard), 
  iConnection(aConnection), 
  iObserver(aObserver)
    {
    CActiveScheduler::Add(this);    	
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::~CIAPConnectProgressNotifier()
//
// Destructor
// ---------------------------------------------------------------------------
// 
CIAPConnectProgressNotifier::~CIAPConnectProgressNotifier()
    {
    Cancel();
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::ConstructL()
//
// Second Phase Constructor
// ---------------------------------------------------------------------------
// 
void CIAPConnectProgressNotifier::ConstructL()
    {
    iObserver->ChangeStateL(KNotConnectedText);
    
    iConnection.ProgressNotification(iProgress, iStatus);
    SetActive();
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::DoCancel()
//
// Cancel outstanding requests
// ---------------------------------------------------------------------------
// 
void CIAPConnectProgressNotifier::DoCancel()
    {
    iConnection.CancelProgressNotification();
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::RunL()
//
// Handle request completion events
// ---------------------------------------------------------------------------
// 
void CIAPConnectProgressNotifier::RunL()
    {

    switch (iProgress().iStage)
        {
        // Connection unitialised
        case KConnectionUninitialised:
            iState = EIAPConnectStateNotConnected;
            iObserver->ChangeStateL(KTextConnectionUninitialised);
            break;

        // Starting connetion selection
        case KStartingSelection:
            iState = EIAPConnectStateConnecting;
            iObserver->ChangeStateL(KTextStartingSelection);
            break;

        // Selection finished
        case KFinishedSelection:
            if (iProgress().iError == KErrNone)
                {
                // The user successfully selected an IAP to be used
                iState = EIAPConnectStateConnecting;
                iObserver->ChangeStateL(KTextFinishedSelection);
                }
            else
                {
                // The user pressed e.g. "Cancel" and did not select an IAP
                iState = EIAPConnectStateNotConnected;
                iObserver->ChangeStateL(KNotConnectedText);
                }
            break;

        // Connection failure
        case KConnectionFailure:
            iState = EIAPConnectStateNotConnected;
            iObserver->ChangeStateL(KTextConnectionFailure);
            break;

        // Prepearing connection (e.g. dialing)
        case KPsdStartingConfiguration:
        case KPsdFinishedConfiguration:
        case KCsdFinishedDialling:
        case KCsdScanningScript:
        case KCsdGettingLoginInfo:
        case KCsdGotLoginInfo:
            
            iState = EIAPConnectStateConnecting;
            iObserver->ChangeStateL(KTextPreparingConnection);
            break;
        
        // Creating connection (e.g. GPRS activation)
        case KCsdStartingConnect:
        case KCsdFinishedConnect:

            iState = EIAPConnectStateConnecting;
            iObserver->ChangeStateL(KTextConnecting);
            break;

        // Starting log in
        case KCsdStartingLogIn:

            iState = EIAPConnectStateConnecting;
            iObserver->ChangeStateL(KTextCsdStartingLogIn);
            break;

        // Finished login
        case KCsdFinishedLogIn:

            iState = EIAPConnectStateConnecting;
            iObserver->ChangeStateL(KTextCsdFinishedLogIn);
            break;

        // Connection open
        case KConnectionOpen:
        case KLinkLayerOpen:

            iState = EIAPConnectStateConnected;
            iObserver->ChangeStateL(KTextConnectionOpen);
            break;
            
        // Connection blocked or suspended
        case KDataTransferTemporarilyBlocked:
            
            iState = EIAPConnectStateConnected;
            iObserver->ChangeStateL(KTextConnectionSuspended);
            break;

        // Hangup or GRPS deactivation
        case KConnectionStartingClose:
            
            iState = EIAPConnectStateDisconnecting;
            iObserver->ChangeStateL(KTextConnectionStartingClose);
            break;

        // Connection closed
        case KConnectionClosed:
        case KLinkLayerClosed:

            iState = EIAPConnectStateNotConnected;
            iObserver->ChangeStateL(KTextConnectionClosed);
            break;

        // Unhandled state
        default:
            iState = EIAPConnectStateUnknown;     
            iObserver->ChangeStateL(KUnknownStateText);
            break;
        }

    iConnection.ProgressNotification(iProgress, iStatus);
    SetActive();
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::SetState(TInt aState)
//
// Set internal state
// ---------------------------------------------------------------------------
// 
void CIAPConnectProgressNotifier::SetState(TInt aState)
    {
    iState=aState;
    }

// ---------------------------------------------------------------------------
// CIAPConnectProgressNotifier::GetState() const
//
// Get internal state
// ---------------------------------------------------------------------------
// 
TInt CIAPConnectProgressNotifier::GetState() const
    {
    return iState;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -