meetingrequest/mrgui/src/cesmrresponsedialog.cpp
changeset 0 8466d47a6819
child 12 4ce476e64c59
--- /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"
+//<cmail>
+#include "esmrdef.h"
+//</cmail>
+#include "esmrinternaluid.h"
+
+#include <eikenv.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>
+#include <aknappui.h>
+#include <aknViewAppUi.h>
+#include <aknview.h>
+#include <eikcolib.h>
+#include <akntoolbarobserver.h>
+#include <aknbutton.h>
+
+#include <featmgr.h>
+//</cmail>
+
+// <cmail> custom sw help files not avilable in Cmail
+//#include <fsmr.hlp.hrh>
+// </cmail>
+
+// 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:
+            {
+            // <cmail>
+            // TUid uid = { KUidCalendarApplication };
+            // </cmail>
+            CArrayFix<TCoeHelpContext>* cntx = 
+				new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
+            CleanupStack::PushL( cntx );
+            // <cmail>
+            //cntx->AppendL( TCoeHelpContext( uid, KFSCA_HLP_RESPONSE_EDITOR ) );
+            // /</cmail>
+            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<CEikAppUiFactory*>( 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<CEikAppUiFactory*>( 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