calendarui/application/src/CalenAppUi.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/application/src/CalenAppUi.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,226 @@
+/*
+* Copyright (c) 2007 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:   Calendar Application UI. Delegates responsibilities to 
+*                Calendar Controller
+*
+*/
+
+
+
+// Debug
+#include "calendarui_debug.h"           // Calendar debug macros
+
+// Include files
+#include "CalenAppUi.h"                 // CCalenAppUi
+#include "CalenDoc.h"                   // CCalenDocument
+#include "calencontroller.h"            // CCalenController
+#include "CalendarVariant.hrh"          // Calendar variant flags
+
+#include <aknconsts.h>                  // KAknMaxWsBufferSize
+#include <aknenv.h>                     // CAknEnv
+#include <featmgr.h>                    // FeatureManager
+#include <calennotificationhandler.h>   // ECalenNotifyResourceChanged
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::CCalenAppUi
+// C++ default constructor
+// ----------------------------------------------------------------------------
+//
+CCalenAppUi::CCalenAppUi()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::ConstructL
+// Second phase construction
+// ----------------------------------------------------------------------------
+//
+void CCalenAppUi::ConstructL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    // Initialise the feature manager
+    FeatureManager::InitializeLibL();
+
+    // Enable Skinning and MSK support
+    //Single click
+    BaseConstructL(
+            EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
+
+    // Create the Calendar controller and pass ownership to the document.
+    // The controller can only be created after BaseConstructL has been called.
+    iController = CCalenController::NewL( *this );
+    static_cast<CCalenDocument*>( Document() )->SetController( iController );
+    
+    // Request window server command buffer size to be maximum.
+    // Lot of drawing happens in Calendar views and maximum buffer size
+    // reduces flickering
+    CAknEnv::Static()->RequestWsBuffer( KAknMaxWsBufferSize );
+
+    // Uncomment following lines to debug drawing code
+    // #ifdef __WINS__
+    //     RWsSession &ws = iEikonEnv->WsSession();
+    //     ws.SetAutoFlush(ETrue);
+    //     CEikonEnv::Static()->InfoMsg( _L("Auto flush ON!"));
+    // #endif // __WINS__
+    
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::~CCalenAppUi
+// Destructor
+// ----------------------------------------------------------------------------
+//
+CCalenAppUi::~CCalenAppUi()
+    {
+    TRACE_ENTRY_POINT;
+
+    // Free the feature manager
+    FeatureManager::UnInitializeLib();
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::HandleCommandL
+// Handles application exit commands.  All other commands are handled by the
+// controller or by customisation plugins.
+// ----------------------------------------------------------------------------
+//
+void CCalenAppUi::HandleCommandL( TInt aCommand )
+    {
+    TRACE_ENTRY_POINT;
+
+    if( aCommand == EAknSoftkeyExit || aCommand == EEikCmdExit
+    	|| aCommand == EAknCmdExit )
+        {
+        iController->BroadcastNotification(ECalenNotifyDeleteInstanceView);
+        iController->IssueCommandL(aCommand);
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::ProcessCommandParametersL
+// Passes the command line parameters to the controller for parsing.
+// ----------------------------------------------------------------------------
+//
+TBool CCalenAppUi::ProcessCommandParametersL(TApaCommand aCommand,
+                                             TFileName& aDocumentName,
+                                             const TDesC8& aTail)
+    {
+    TRACE_ENTRY_POINT;
+
+    iController->ProcessCommandParametersL( aCommand, aDocumentName, aTail );
+
+    TRACE_EXIT_POINT;
+    return CAknViewAppUi::ProcessCommandParametersL( aCommand,
+                                                                             aDocumentName,
+                                                                             aTail );
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::HandleMessageL
+// Takes care of message handling.
+// ----------------------------------------------------------------------------
+//
+MCoeMessageObserver::TMessageResponse CCalenAppUi::HandleMessageL(
+                                    TUint32 aClientHandleOfTargetWindowGroup,
+                                    TUid aMessageUid,
+                                    const TDesC8& aMessageParameters)
+    {
+    TRACE_ENTRY_POINT;
+    
+    MCoeMessageObserver::TMessageResponse response( EMessageNotHandled );
+
+#ifdef RD_CALEN_EXTERNAL_CAL
+    if (CurrentView())
+        {
+        CurrentView()->ReleaseServiceHandler();
+        }
+#endif //RD_CALEN_EXTERNAL_C
+
+    // If aMessageParameters is set Calendar has been launched by another
+    // application (probably CCalenLauncher or Active Idle).
+    if (aMessageParameters.Length())
+        {
+        TFileName dummy;
+        TApaCommand cmd=EApaCommandRun;
+        ProcessCommandParametersL( cmd, dummy, aMessageParameters );
+        response = EMessageHandled;
+        }
+
+    if ( response == EMessageNotHandled )
+        {
+        response = CAknViewAppUi::HandleMessageL( 
+                                          aClientHandleOfTargetWindowGroup,
+                                          aMessageUid,
+                                          aMessageParameters);
+        }
+
+    TRACE_EXIT_POINT;
+    return response;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::HandleResourceChangeL
+// Called by the framework on resource changes.  Broadcasts a notification of
+// ECalenNotifyResourceChanged to all registered notification handlers.
+// ----------------------------------------------------------------------------
+//
+void CCalenAppUi::HandleResourceChangeL( TInt aType )
+    {
+    TRACE_ENTRY_POINT;
+
+    CAknViewAppUi::HandleResourceChangeL( aType );
+
+    if( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        iController->BroadcastNotification( ECalenNotifyResourceChanged );
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAppUi::HandleForegroundEventL
+// Called by the framework on switch current application to foreground/background
+// Broadcasts a nofification of ECalenNotifyAppForegrounded / ECalenNotifyAppBackgrounded
+// ----------------------------------------------------------------------------
+void CCalenAppUi::HandleForegroundEventL( TBool aForeground )
+    {
+    TRACE_ENTRY_POINT;
+    
+    // have to call base class's method first
+    CAknViewAppUi::HandleForegroundEventL( aForeground );
+    
+    if( aForeground )   // switch from background to foreground
+        {
+        iController->BroadcastNotification( ECalenNotifyAppForegrounded );
+        }
+    else    // switch from foreground to background
+        {
+        iController->BroadcastNotification( ECalenNotifyAppBackgrounded );
+        }
+    
+    TRACE_EXIT_POINT;
+    
+    }
+//
+//  End of File