--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/inc/musuigeneralview.h Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,275 @@
+/*
+* Copyright (c) 2005 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: Mus Applications Event Observer Interface
+*
+*/
+
+
+
+#ifndef MUSUIGENERALVIEW_H
+#define MUSUIGENERALVIEW_H
+
+#include "musuisharingobserver.h"
+#include "musuiactivetimerobserver.h"
+
+#include <avkon.rsg> // Avkon resource file
+#include <aknview.h> // Avkon base view class
+#include <akntoolbarobserver.h>
+
+class CMusUiAppUi;
+class CMusUiEventController;
+class CMusUiActivityManager;
+class CMusUiViewContainer;
+class CAknIncallBubble;
+class CMusUiActiveTimer;
+class CMusUiBackgroundViewContainer;
+
+/**
+ * The base class for the MUS application's view classes.
+ * Encapsulates common methods for views.
+ *
+ * @lib musui.exe
+ */
+class CMusUiGeneralView : public CAknView,
+ public MAknToolbarObserver,
+ public MMusUiSharingObserver,
+ public MMusUiActiveTimerObserver
+ {
+
+public: // constructors and destructor
+
+ enum TMusFgBgEventType
+ {
+ EMusFgBgEventNone,
+ EMusFgEvent,
+ EMusBgEvent
+ };
+
+ /**
+ * EPOC default constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMusUiGeneralView();
+
+public: // new functions
+
+ /**
+ * @return the pointer to the application's AppUi (CMusUiAppUi).
+ */
+ CMusUiAppUi* MusAppUi() const;
+
+ /**
+ * Refreshes the view. Called after the mode has been changed from portrait
+ * to landscape or vice versa. This is a virtual function that must be
+ * implemented by all concrete MUS UI views.
+ */
+ virtual void RefreshView() = 0;
+
+ virtual void HandleToolbarCommandL( TInt aCommand ) = 0;
+
+ virtual void HandleKeyUpEvent( TInt aKeyCode );
+
+ virtual void SetToolbarVisibility( TBool aVisible );
+
+ void AsyncQueryDialogAcceptedL( TBool aAccepted );
+
+ TInt FocusedToolbarItem() const;
+
+ virtual void LevelIndicatorDismissed() {};
+ virtual void SetInitialFocusedItemL() = 0;
+
+ TBool OperatorSpecificFunctionality() const;
+ /**
+ * Called when UI comes to foregound / goes to background.
+ * CAknView version of HandleForegroundEventL is not used
+ * at it generates lots of events. Instead, appui implements
+ * foreground event callback funtion and forwards events to views
+ * via this method.
+ */
+ virtual void DoHandleForegroundEventL( TBool aForeground ) = 0;
+
+
+public: // from base class MAknToolbarObserver
+
+ virtual void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
+
+ virtual void OfferToolbarEventL( TInt aCommand );
+
+
+public: // from MMusUiSharingObserver
+
+ /*
+ * Shows sychronous wait dialog with softkey R_AVKON_SOFTKEYS_CANCEL.
+ * @param aPrompt Prompt text shown in dialog
+ * @param aTimerInSeconds Timer in seconds when dialog is dismissed
+ * automatically. Timer value 0 means that no timer is used.
+ * @param aExpirationMessageResourceId is ID of resource indicating
+ * the message to be shown if timer expires. Value 0 means that
+ * no message is shown.
+ * @return EFalse if dialog is dismissed by user pressing cancel
+ * or by expiration of timer. ETrue if DismissWaitDialogL
+ * is called with parameter ETrue;
+ */
+ virtual TBool ShowWaitDialogL( const TDesC& aPrompt,
+ TInt aTimerInSeconds = 0,
+ TInt aExpirationMessageResourceId = 0 );
+
+ /*
+ * Dismisses sychronous wait dialog shown by calling ShowWaitDialogL.
+ * @param aReturnValue determines return value of function
+ * ShowWaitDialogL.
+ */
+ virtual void DismissWaitDialogL( TBool aReturnValue = ETrue );
+
+ /*
+ * Set call back service of wait dialog
+ * @param aCallback A pointer of class MProgressDialogCallback
+ * which implemented DialogDismissedL
+ */
+ virtual void SetWaitDialogCallbackL( MProgressDialogCallback* aCallback );
+
+ virtual void ShowStatusPaneTitleL();
+
+ virtual void EnableMiddleSoftkeyL( TInt aResourceId );
+
+ virtual void ActivateVolumeControlL( TInt aValue );
+
+ virtual void HighlightSelectedToolbarItem( TInt aCommand );
+
+ /**
+ * General functionality for replacing a toolbar command
+ * Function should be overridden for specific functionality
+ */
+ virtual void ReplaceToolbarCommand( TInt aOldCommand,
+ TInt aNewCommand,
+ TBool aSetNewCommandFocused );
+
+ /**
+ * If toolbar is shown, audio routing button will be refreshed according to
+ * current state of audio routing.
+ * In case there is no toolbar, middle softkey will be updated
+ */
+ virtual void RefreshAudioRoutingToolbarButton();
+
+ virtual void UpdateSessionTime( const TDesC& aSessionTime );
+
+
+public: // from base class CAknView
+
+ /**
+ * Takes care of command handling.
+ *
+ * @param aCommand The command that was received.
+ */
+ virtual void HandleCommandL( TInt aCommand );
+
+ /**
+ * From MEikMenuObserver, called by framework before constructing menupane.
+ * Initializes menu items common to all sharing types.
+ */
+ virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+public: // from MMusUiActiveTimerObserver
+
+ /**
+ * Indicates that a certain amount of time elapsed
+ */
+ virtual void TimerComplete( CMusUiActiveTimer* aTimer );
+
+
+protected: // New functions
+
+ virtual CMusUiEventController* EventController() const = 0;
+
+ virtual CMusUiViewContainer& SharingContainer() const = 0;
+
+ /**
+ * Leaves with KErrNotFound if eventcontroller is not available
+ */
+ CMusUiEventController& EventControllerL() const;
+
+ /**
+ * Called when event occurs of type EEventFocusLost or
+ * EEventFocusGained.
+ *
+ * @param aForeground ETrue if the application is in the foreground,
+ * otherwise EFalse.
+ * @param aExit indicates if the application should exit
+ */
+ void HandleForegroundEventL( TBool aForeground, TBool aExit );
+
+
+protected:
+
+ /**
+ * Gets called by the framework when it's activating this view.
+ *
+ * @param aPrevViewId Previous view id
+ * @param aCustomMessageId Custom message's id
+ * @param aCustomMessage Custom message
+ */
+ void DoActivateL( const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId,
+ const TDesC8& aCustomMessage );
+
+ /**
+ * Gets called by the framework when it's deactivating this view.
+ */
+ void DoDeactivate();
+
+protected:
+
+
+ void CompleteForegroundEventL();
+ void DoForegroundEventL();
+ void DoBackgroundEventL( TBool aExit );
+ void SetCurrentFgBgEvent( TMusFgBgEventType aEventType );
+ TInt ToolbarPlaceHolderHeight() const;
+ void UpdateBackgroundOrdinalPosition( TBool aUp );
+
+protected: // data
+
+ /**
+ * ETrue if operator specific functionality is needed
+ */
+ TBool iOperatorSpecificFunctionality;
+
+ TBool iToolbarItemSelected;
+
+private: // data
+
+ CAknIncallBubble* iIncallBubble;
+
+ CMusUiActiveTimer* iSessionEndTimer;
+
+ CMusUiActiveTimer* iFgBgTimer;
+
+ TMusFgBgEventType iCurrentFgBgEvent;
+
+ TBool iCurrentExitSetting;
+
+ CMusUiBackgroundViewContainer* iBackgroundContainer; // skin background drawer
+
+ };
+
+// macro for NO_TOOLBAR case
+#define MUS_NO_TOOLBAR ( iOperatorSpecificFunctionality && !(AknLayoutUtils::PenEnabled()))
+
+#endif // MUSUIGENERALVIEW_H
+
+// end of file