cbs/cbsui/UiSrc/CbsUiUtility.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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: 
*   Implementation of CbsUiClenaupHandler     
*
*
*/


// INCLUDES
#include    <e32base.h>
#include    <gulicon.h>
#include    <aknnotewrappers.h>
#include    <aknappui.h>
#include    <aknnavi.h>
#include    <CbsCommon.h>
#include    <cbsuiApp.rsg>
#include    "CbsUiUtility.h"
#include    "CbsUiPanic.h"
#include    "MSaveMessageController.h"
#include    "CbsUiDebug.h"
#include    "MCbs.h"



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


// ---------------------------------------------------------
// CbsUiUtility::ShowConfirmationNoteL
// 
// 
// ---------------------------------------------------------
//
void CbsUiUtility::ShowConfirmationNoteL(
    const TInt aResourceId, TBool aWaitingDialog )
    {
    HBufC* text = CCoeEnv::Static()->AllocReadResourceLC(aResourceId);
    CAknConfirmationNote* note = 
        new (ELeave) CAknConfirmationNote(aWaitingDialog);
    note->ExecuteLD(*text);
    CleanupStack::PopAndDestroy(text);
    }

// ---------------------------------------------------------
// CbsUiUtility::ShowErrorNoteL
// 
// 
// ---------------------------------------------------------
//
void CbsUiUtility::ShowErrorNoteL( const TInt aResourceId )
    {
    HBufC* text = CCoeEnv::Static()->AllocReadResourceLC( aResourceId );
    CAknErrorNote* note = new (ELeave) CAknErrorNote;
    note->ExecuteLD( *text );
    CleanupStack::PopAndDestroy( text );
    }

// ---------------------------------------------------------
// CbsUiUtility::ShowWarningNoteL
// 
// 
// ---------------------------------------------------------
//
void CbsUiUtility::ShowWarningNoteL( const TInt aResourceId )
    {
    HBufC* text = CCoeEnv::Static()->AllocReadResourceLC( aResourceId );
    CAknWarningNote* note = new (ELeave) CAknWarningNote;
    note->ExecuteLD( *text );
    CleanupStack::PopAndDestroy( text );
    }

// ---------------------------------------------------------
// CbsUiUtility::CreateEmptyNavigationPaneL
// 
// 
// ---------------------------------------------------------
//
CAknNavigationDecorator* CbsUiUtility::CreateEmptyNavigationPaneL()
    {
    CEikStatusPane* statusPane = 
        STATIC_CAST( CAknAppUi*, 
            CEikonEnv::Static()->EikAppUi() )->StatusPane();

    CAknNavigationControlContainer* naviContainer = 
        STATIC_CAST( CAknNavigationControlContainer*, statusPane->
        ControlL(TUid::Uid(EEikStatusPaneUidNavi)) );

    CAknNavigationDecorator* decorator;
    decorator = naviContainer->CreateNavigationLabelL();

    naviContainer->PushL(*decorator);

    return decorator;
    }

// ---------------------------------------------------------
// CbsUiUtility::IsSavedL
// 
// 
// ---------------------------------------------------------
//
TBool CbsUiUtility::IsSavedL( const TCbsMessageHandle aHandle, MCbs& aServer )
    {
    __ASSERT_DEBUG(&aServer, CbsUiPanic(EErrNullPointer) );
    __ASSERT_DEBUG(aServer.Connected(), CbsUiPanic(EErrServerDisconnected) );

    TCbsMessage message;
    
    TInt ret = aServer.FindMessageByHandle(aHandle, message);

    __CBSUI_ASSERT( ret == KErrNone, CbsUiPanic(EErrMsgHandleNotFound) );

    User::LeaveIfError(ret);
    TBool saved(EFalse);

    if ( message.iPermanent )
        {
        saved = ETrue;
        }

    return saved;
    }

// ---------------------------------------------------------
// CbsUiUtility::SaveCurrentMessageL
// 
// 
// ---------------------------------------------------------
//
TInt CbsUiUtility::SaveCurrentMessageL(
    const TCbsMessageHandle aHandle, MSaveMessageController& aSaver )
    {    
    __ASSERT_DEBUG(&aSaver, CbsUiPanic(EErrNullPointer) );

    TInt resultCode( aSaver.SaveMessage(aHandle) );
    
    switch ( resultCode )
        {
        case KErrDiskFull:
            {
            User::Leave( KErrDiskFull );
            break;
            }
        case KErrNone: // Normal case
            {
            // do nothing
            break;
            }
        default:
            {          
            CbsUiUtility::ShowErrorNoteL(R_TEXT_NOTE_MEMORY_FULL_ERROR);
            break;
            }
        }

    return resultCode;
    }

//  End of File