meetingrequest/mrgui/src/cesmrresponsedialog.cpp
branchRCL_3
changeset 25 3533d4323edc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/src/cesmrresponsedialog.cpp	Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,215 @@
+/*
+* 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:  ESMR policy implementation
+*
+*/
+
+#include "cesmrresponsedialog.h"
+#include "cmrresponsedialogview.h"
+#include "esmrgui.hrh"
+//<cmail>
+#include "esmrdef.h"
+//</cmail>
+#include "esmrinternaluid.h"
+
+#include <eikenv.h>
+#include <eikcolib.h>
+#include <eikappui.h>
+#include <avkon.hrh>
+#include <MAgnEntryUi.h>
+#include <eikedwin.h>
+#include <esmrgui.rsg>
+#include <calentry.h>
+#include <hlplch.h>
+#include <akntoolbar.h>
+
+// <cmail> custom sw help files not avilable in Cmail
+#include <csxhelp/cmail.hlp.hrh>
+// </cmail>
+
+// DEBUG
+#include "emailtrace.h"
+#include "FreestyleEmailUiConstants.h"
+
+// ---------------------------------------------------------------------------
+// CESMRResponseDialog::CESMRResponseDialog
+// ---------------------------------------------------------------------------
+//
+CESMRResponseDialog::CESMRResponseDialog( HBufC*& aText ): iText(aText)
+    {
+    FUNC_LOG;
+    // Do nothing
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRResponseDialog::~CESMRResponseDialog
+// ---------------------------------------------------------------------------
+//
+CESMRResponseDialog::~CESMRResponseDialog()
+    {
+    FUNC_LOG;
+    static_cast<CEikAppUiFactory*>( 
+    		iEikonEnv->AppUiFactory() )->CurrentFixedToolbar()->
+    		SetToolbarVisibility( iPreviousVisibility );
+    // 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 );
+    iPreviousVisibility = static_cast<CEikAppUiFactory*>( 
+    		iEikonEnv->AppUiFactory() )->CurrentFixedToolbar()->IsShown();
+    static_cast<CEikAppUiFactory*>( 
+        	iEikonEnv->AppUiFactory() )->CurrentFixedToolbar()->SetToolbarVisibility( EFalse );
+    TRect clientRect = iEikonEnv->EikAppUi()->ClientRect();
+    iView = CESMRResponseDialogView::NewL();
+    iView->SetRect( clientRect );
+    iView->SetSize(clientRect.Size());
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRResponseDialog::ProcessCommandL
+// ---------------------------------------------------------------------------
+//
+void CESMRResponseDialog::ProcessCommandL( TInt aCommand )
+    {
+    FUNC_LOG;
+    CAknDialog::ProcessCommandL( aCommand );
+
+    switch ( aCommand )
+        {
+        case EAknCmdHelp:
+            {
+            CArrayFix<TCoeHelpContext>* cntx =
+				new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
+            CleanupStack::PushL( cntx );
+            cntx->AppendL( TCoeHelpContext( KFSEmailUiUid, 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::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 );
+    }
+
+// EOF