diff -r d189ee25cf9d -r 3533d4323edc meetingrequest/mrgui/src/cesmrtitlepanehandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/src/cesmrtitlepanehandler.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,144 @@ +/* +* 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: MR title pane handler implementation +* +*/ + +#include "cesmrtitlepanehandler.h" + +#include +#include +#include // EEikStatusPaneUidTitle + +// DEBUG +#include "emailtrace.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::CESMRTitlePaneHandler +// --------------------------------------------------------------------------- +// +CESMRTitlePaneHandler::CESMRTitlePaneHandler( CEikonEnv& aEnv ) + : iEikEnv( aEnv ) + { + FUNC_LOG; + // Do nothing + } + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::ConstructL +// --------------------------------------------------------------------------- +// +void CESMRTitlePaneHandler::ConstructL() + { + FUNC_LOG; + // Do nothing + } + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::NewL +// --------------------------------------------------------------------------- +// +CESMRTitlePaneHandler* CESMRTitlePaneHandler::NewL( CEikonEnv& aEnv ) + { + FUNC_LOG; + CESMRTitlePaneHandler* self = new (ELeave) CESMRTitlePaneHandler( aEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::~CESMRTitlePaneHandler +// --------------------------------------------------------------------------- +// +CESMRTitlePaneHandler::~CESMRTitlePaneHandler() + { + FUNC_LOG; + delete iSaveTitlePaneText; + } + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::SetNewTitle +// --------------------------------------------------------------------------- +// +void CESMRTitlePaneHandler::SetNewTitle( const TDesC* aNewTitle ) + { + FUNC_LOG; + TRAPD( error, SetTitlePaneTextL( aNewTitle ) ); + + if ( error != KErrNone ) + { + iEikEnv.HandleError( error ); + } + } + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::Rollback +// --------------------------------------------------------------------------- +// +void CESMRTitlePaneHandler::Rollback() + { + FUNC_LOG; + if ( iTitlePane && iSaveTitlePaneText ) + { + // iTitlePane takes ownership of iSaveTitlePaneText + iTitlePane->SetText( iSaveTitlePaneText ); + iSaveTitlePaneText = NULL; + } + } + + +// --------------------------------------------------------------------------- +// CESMRTitlePaneHandler::SetTitlePaneTextL +// --------------------------------------------------------------------------- +// +void CESMRTitlePaneHandler::SetTitlePaneTextL( const TDesC* aNewTitle ) + { + FUNC_LOG; + // Reset saved state + delete iSaveTitlePaneText; + iSaveTitlePaneText = NULL; + + CEikStatusPane* statusPane = iEikEnv.AppUiFactory()->StatusPane(); + + if ( statusPane ) + { + if ( statusPane->PaneCapabilities( + TUid::Uid( EEikStatusPaneUidTitle ) ).IsPresent() ) + { + iTitlePane = static_cast( + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + + if ( iTitlePane->Text() ) + { + iSaveTitlePaneText = iTitlePane->Text()->AllocL(); + } + + if ( aNewTitle ) + { + iTitlePane->SetTextL( *aNewTitle ); + } + else + { + iTitlePane->SetTextToDefaultL(); + } + } + } + } + +// End of file +