phoneclientserver/phoneclient/Src/UssdWrapper/CPhCltUssdNoteController.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
parent 0 ff3b6d0fd310
child 20 987c9837762f
permissions -rw-r--r--
Revision: 201033 Kit: 201035

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


// INCLUDE FILES
#include <hbdevicemessageboxsymbian.h>
#include <hbdeviceprogressdialogsymbian.h>
#include <hbtextresolversymbian.h>

#include "phcltclientserver.h" 
#include "cphcltussdnotecontroller.h" 
#include "tflogger.h"

_LIT(KUssdLocFilename, "ussd_");
_LIT(KCommonLocFilename, "common_");
_LIT(KPath, "z:\\resource\\qt\\translations");
_LIT(KUssdRequesting, "txt_common_info_requesting"); // Requesting
_LIT(KUssdDone, "txt_ussd_dpopinfo_done"); // Done
_LIT(KUssdNotDone, "txt_ussd_dpopinfo_not_done"); // NotDone
_LIT(KUssdNotAllowed, "txt_ussd_dpopinfo_not_allowed"); //NotAllowed
_LIT(KUssdUnconfirmed, "txt_ussd_dpopinfo_request_not_confirmed"); // Unconfirmed
_LIT(KUssdNoService, "txt_ussd_dpopinfo_no_service"); // NoService
_LIT(KUssdOffline, "txt_ussd_dpopinfo_unable_to_use_network_phone_is"); // Offline
_LIT(KUssdHide, "txt_common_button_hide"); // Hide

const int KPhCltUssdProgressBarMaxLength = 10;
// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CPhCltUssdNoteController* CPhCltUssdNoteController::NewL(
        MPhCltUssdNoteControllerCallBack& aCallBack )
    {
    TFLOGSTRING("CPhCltUssdNoteController: NewL call")
    CPhCltUssdNoteController* self = new( ELeave ) 
        CPhCltUssdNoteController( aCallBack );

    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    TFLOGSTRING("CPhCltUssdNoteController: NewL exit")
    return self;
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CPhCltUssdNoteController::ConstructL()
    {
    TFLOGSTRING( "CPhCltUssdNoteController: ConstructL call_exit" ) 
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::CPhCltUssdNoteController
// C++ constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
CPhCltUssdNoteController::CPhCltUssdNoteController(
    MPhCltUssdNoteControllerCallBack& aCallBack )
    : iGlobalWaitNote( NULL ),
      iCallBack( aCallBack )
    {
    TFLOGSTRING("CPhCltUssdNoteController: CPhCltUssdNoteController call")
    TFLOGSTRING("CPhCltUssdNoteController: CPhCltUssdNoteController exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController:~CPhCltUssdNoteController
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CPhCltUssdNoteController::~CPhCltUssdNoteController()
    {
    TFLOGSTRING("CPhCltUssdNoteController: ~CPhCltUssdNoteController call")
    DestroyGlobalWaitNote();
    TFLOGSTRING("CPhCltUssdNoteController: ~CPhCltUssdNoteController exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::ShowGlobalInformationNoteL
// -----------------------------------------------------------------------------
void CPhCltUssdNoteController::ShowGlobalInformationNoteL( 
        const TPhCltUssdInformationType aInfoType )
    {
    TFLOGSTRING2("CPhCltUssdNoteController: ShowGlobalInformationNoteL\
            aInfoType = %d call", aInfoType)
    const TBool textResolver = HbTextResolverSymbian::Init( 
        KUssdLocFilename, KPath );
    TFLOGSTRING2("CPhCltUssdNoteController: ShowGlobalInformationNoteL\
        ussd textResolver = %d", textResolver ) 
    HBufC* temp(NULL);
    switch ( aInfoType )
        {
        case EPhCltUssdUnconfirme:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdUnconfirmed );
            break;
            }
        case EPhCltUssdNotallowed:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdNotAllowed );
            break;
            }
        case EPhCltUssdNoservice:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdNoService );
            break;
            }
        case EPhCltUssdOffline:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdOffline );
            break;
            }
        case EPhCltUssdDone:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdDone );
            break;
            }
        case EPhCltUssdNotDone:
            {
            temp = HbTextResolverSymbian::LoadLC( KUssdNotDone );
            break;
            }
        default:
            {
            User::Leave( KErrArgument );
            break;
            }
        }
    CHbDeviceMessageBoxSymbian* dlg = CHbDeviceMessageBoxSymbian::NewL(
            CHbDeviceMessageBoxSymbian::EInformation);
    CleanupStack::PushL( dlg );
    dlg->SetTextL( temp->Des() );
    dlg->SetButton( CHbDeviceMessageBoxSymbian::EAcceptButton, ETrue );
    dlg->ExecL();
    CleanupStack::PopAndDestroy( dlg );
    CleanupStack::PopAndDestroy( temp );
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalInformationNoteL exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::ShowGlobalWaitNoteL
// -----------------------------------------------------------------------------
void CPhCltUssdNoteController::ShowGlobalWaitNoteL( )
    {
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalWaitNoteL call")
    DestroyGlobalWaitNote();
    TBool textResolver = HbTextResolverSymbian::Init( 
        KCommonLocFilename, KPath );
    TFLOGSTRING2("CPhCltUssdNoteController: ConstructL\
        init common textResolver = %d", textResolver ) 
    //CHbDeviceProgressDialogSymbian
    iGlobalWaitNote = CHbDeviceProgressDialogSymbian::NewL(
            CHbDeviceProgressDialogSymbian::EProgressDialog );
    CleanupStack::PushL( iGlobalWaitNote );
    HBufC* context = HbTextResolverSymbian::LoadLC( KUssdRequesting );
    iGlobalWaitNote->SetTextL( context->Des() );
    HBufC* bottonText = HbTextResolverSymbian::LoadLC( KUssdHide );
    iGlobalWaitNote->SetButtonTextL( bottonText->Des() );
    iGlobalWaitNote->SetObserver( this );
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalWaitNoteL before setactive")
    iGlobalWaitNote->SetRange(0,KPhCltUssdProgressBarMaxLength);
    iGlobalWaitNote->SetProgressValue( KPhCltUssdProgressBarMaxLength );
    iGlobalWaitNote->SetAutoClose( EFalse );
    iGlobalWaitNote->ShowL();
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalWaitNoteL after ShowL")
    CleanupStack::PopAndDestroy( bottonText );
    CleanupStack::PopAndDestroy( context );
    CleanupStack::Pop( iGlobalWaitNote );
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalWaitNoteL after setactive")
    TFLOGSTRING("CPhCltUssdNoteController: ShowGlobalWaitNoteL exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::DestroyGlobalWaitNote
// -----------------------------------------------------------------------------
void CPhCltUssdNoteController::DestroyGlobalWaitNote()
    {
    TFLOGSTRING("CPhCltUssdNoteController: DestroyGlobalWaitNote call")
    if ( iGlobalWaitNote )
        {
        iGlobalWaitNote->Close();
        delete iGlobalWaitNote;
        iGlobalWaitNote = NULL;
        }
    TFLOGSTRING("CPhCltUssdNoteController: DestroyGlobalWaitNote exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::ProgressDialogCancelled
//
// 
// -----------------------------------------------------------------------------
//
void CPhCltUssdNoteController::ProgressDialogCancelled(
        const CHbDeviceProgressDialogSymbian* /*aProgressDialog*/)
    {
    TFLOGSTRING("CPhCltUssdNoteController: ProgressDialogCancelled call")
    iCallBack.GlobalWaitNoteHidden();
    TFLOGSTRING("CPhCltUssdNoteController: ProgressDialogCancelled exit")
    }

// -----------------------------------------------------------------------------
// CPhCltUssdNoteController::ProgressDialogClosed
//
// 
// -----------------------------------------------------------------------------
//
void CPhCltUssdNoteController::ProgressDialogClosed(
        const CHbDeviceProgressDialogSymbian* /*aProgressDialog*/)
    {
    TFLOGSTRING("CPhCltUssdNoteController: ProgressDialogClosed call")
    TFLOGSTRING("CPhCltUssdNoteController: ProgressDialogClosed exit")
    }

// End of file