diff -r 000000000000 -r 8466d47a6819 meetingrequest/mrgui/src/cesmrresponsedialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/src/cesmrresponsedialog.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,288 @@ +/* +* Copyright (c) 2007-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: ESMR policy implementation +* +*/ + +#include "cesmrresponsedialog.h" +#include "cmrresponsedialogview.h" +#include "esmrgui.hrh" +// +#include "esmrdef.h" +// +#include "esmrinternaluid.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +// + +// custom sw help files not avilable in Cmail +//#include +// + +// DEBUG +#include "emailtrace.h" + + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::CESMRResponseDialog +// --------------------------------------------------------------------------- +// +CESMRResponseDialog::CESMRResponseDialog( HBufC*& aText ): iText(aText) + { + FUNC_LOG; + // Do nothing + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::~CESMRResponseDialog +// --------------------------------------------------------------------------- +// +CESMRResponseDialog::~CESMRResponseDialog() + { + FUNC_LOG; + TRAP_IGNORE( RestoreMrGuiToolbarL() ); + // iView is deleted by framework because it uses the + // custom control mechanism. + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C CESMRResponseDialog* CESMRResponseDialog::NewL( HBufC*& aText ) + { + FUNC_LOG; + CESMRResponseDialog* self = + new (ELeave) CESMRResponseDialog( aText ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::ConstructL +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::ConstructL() + { + FUNC_LOG; + CAknDialog::ConstructL( R_RESPONSE_DIALOG_MENUBAR ); + CEikonEnv* eikonEnv = CEikonEnv::Static();// codescanner::eikonenvstatic + TRect clientRect = eikonEnv->EikAppUi()->ClientRect(); + iView = CESMRResponseDialogView::NewL(); + iView->SetRect( clientRect ); + iView->SetSize(clientRect.Size()); + + MakeResponseToolbarL(); + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::ProcessCommandL +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::ProcessCommandL( TInt aCommand ) + { + FUNC_LOG; + CAknDialog::ProcessCommandL( aCommand ); + + switch ( aCommand ) + { + case EAknCmdHelp: + { + // + // TUid uid = { KUidCalendarApplication }; + // + CArrayFix* cntx = + new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL( cntx ); + // + //cntx->AppendL( TCoeHelpContext( uid, KFSCA_HLP_RESPONSE_EDITOR ) ); + // / + CleanupStack::Pop( cntx ); + HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), cntx ); + break; + } + case EESMRCmdSendMR: // Fall through + case EAknSoftkeyBack: // Fall through + case EAknCmdExit: + { + TryExitL( aCommand ); + break; + } + default: + { + break; + } + } + } +// --------------------------------------------------------------------------- +// CESMRResponseDialog::DynInitMenuPaneL() +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::DynInitMenuPaneL( + /*TInt aResourceId,*/ + CEikMenuPane* aMenuPane ) + { + FUNC_LOG; + if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) ) + { + // remove help support in pf5250 + aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue); + } + } +// --------------------------------------------------------------------------- +// CESMRResponseDialog::OfferKeyEventL +// --------------------------------------------------------------------------- +// +TKeyResponse CESMRResponseDialog::OfferKeyEventL( + const TKeyEvent& aEvent, + TEventCode aType) + { + FUNC_LOG; + TKeyResponse response( EKeyWasNotConsumed ); + if ( !MenuShowing() ) + { + response = iView->OfferKeyEventL( aEvent, aType ); + } + + if ( response == EKeyWasNotConsumed ) + { + response = CAknDialog::OfferKeyEventL( aEvent, aType ); + } + + return response; + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::OkToExitL +// --------------------------------------------------------------------------- +// +TBool CESMRResponseDialog::OkToExitL(TInt aButtonId) + { + FUNC_LOG; + TBool res( EFalse ); + // show options + if ( aButtonId == EAknSoftkeyOptions ) + { + CAknDialog::DisplayMenuL(); + } + // exit dialog + if ( aButtonId == EESMRCmdSendMR || + aButtonId == EAknSoftkeyBack || + aButtonId == EAknCmdExit ) + { + iText = iView->GetTextL(); + res = ETrue; + } + + return res; + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::CreateCustomControlL +// --------------------------------------------------------------------------- +// +SEikControlInfo CESMRResponseDialog::CreateCustomControlL( TInt aType ) + { + FUNC_LOG; + SEikControlInfo controlInfo; + controlInfo.iControl = NULL; + controlInfo.iFlags = 0; + controlInfo.iTrailerTextId = 0; + + if ( aType == EEsMrResponseDialogType ) + { + controlInfo.iControl = iView; + } + + return controlInfo; + } + +// --------------------------------------------------------------------------- +// CESMRResponseDialog::ExecuteViewLD +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CESMRResponseDialog::ExecuteDlgLD() + { + FUNC_LOG; + return ExecuteLD( R_RESPONSE_DIALOG ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerDialog::OfferToolbarEventL +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::OfferToolbarEventL( TInt aCommand ) + { + TryExitL( aCommand ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerDialog::MakeResponseToolbarL +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::MakeResponseToolbarL() + { + CAknToolbar* currentToolbar = static_cast( iEikonEnv->AppUiFactory() )->CurrentFixedToolbar(); + iOldObserver = currentToolbar->ToolbarObserver(); + currentToolbar->SetToolbarObserver( this ); + + CAknButton* buttonSend = CAknButton::NewL(); + buttonSend->ConstructFromResourceL( R_SEND_BUTTON ); + CAknButton* buttonEmpty1 = CAknButton::NewL(); + CAknButton* buttonEmpty2 = CAknButton::NewL(); + + currentToolbar->AddItemL( buttonSend, EAknCtButton, EESMRCmdSendMR, 0, 0 ); + currentToolbar->AddItemL( buttonEmpty1, EAknCtButton, EESMRCmdUndefined, 0, 1 ); + currentToolbar->AddItemL( buttonEmpty2, EAknCtButton, EESMRCmdUndefined, 0, 2 ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerDialog::RestoreMrGuiToolbarL +// --------------------------------------------------------------------------- +// +void CESMRResponseDialog::RestoreMrGuiToolbarL() + { + CAknToolbar* currentToolbar = static_cast( iEikonEnv->AppUiFactory() )->CurrentFixedToolbar(); + + currentToolbar->SetToolbarObserver( iOldObserver ); + + CAknButton* buttonAccept = CAknButton::NewL(); + CAknButton* buttonTentative = CAknButton::NewL(); + CAknButton* buttonDecline = CAknButton::NewL(); + buttonAccept->ConstructFromResourceL( R_ACCEPT_BUTTON ); + buttonTentative->ConstructFromResourceL( R_TENTATIVE_BUTTON ); + buttonDecline->ConstructFromResourceL( R_DECLINE_BUTTON ); + currentToolbar->AddItemL( buttonAccept, EAknCtButton, EESMRCmdAcceptMR, 0, 0 ); + currentToolbar->AddItemL( buttonTentative, EAknCtButton, EESMRCmdTentativeMR, 0, 1 ); + currentToolbar->AddItemL( buttonDecline, EAknCtButton, EESMRCmdDeclineMR, 0, 2 ); + } +// EOF