calendarui/controller/inc/calenservicesimpl.h
changeset 0 f979ecb2b13e
child 15 9711e452b5e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/controller/inc/calenservicesimpl.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,280 @@
+/*
+* 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:  Provides services for native Calendar extensions
+*
+*/
+
+#ifndef CALENSERVICESIMPL_H
+#define CALENSERVICESIMPL_H
+
+#include <e32base.h>
+#include <calennotificationhandler.h>
+#include <calsession.h>
+#include <calenservices.h>
+
+// Forward declarations
+class CCalenGlobalData;     // Calendar-wide accessors
+class CCalenController;     // Calendar controller
+class CCalenIcons;
+class CGulIcon;
+class CCalenAttachmentModel;
+class CCalCalendarInfo;
+class MCalenPreview;
+
+/**
+ * Calendar Services External API implementation.
+ */
+NONSHARABLE_CLASS( CCalenServicesImpl ) : public CBase,
+                                                              public MCalenServices
+    {
+public:  // Construction and destruction.
+	/**
+	 * Two phased constructor. Use this in preference to the C++
+	 * constructor where possible.
+	 * @param aCommandRangeStart    start of the command range
+	 * @param aCommandRangeEnd      end of command range
+	 */
+	static CCalenServicesImpl* NewL( TInt aCommandRangeStart,
+												  TInt aCommandRangeEnd );
+
+	/**
+	 * Two phased constructor. Use this in preference to the C++
+	 * constructor where possible.
+	 */
+	static CCalenServicesImpl* NewL();
+	
+	/**
+	 * Completes construction of this object.
+	 */
+	void ConstructL();
+
+	/**
+	 * Performs cleanup of this object.
+	 */
+	void Release();
+
+public:  // Functions from base classes.
+	/**
+	 * Retrieve the calendar session currently in use by Calendar
+	 * @return CCalSession& currently used by Calendar
+	 */
+	 CCalSession& SessionL();
+
+	/**
+	 * Retrieve the calendar session currently in use by Calendar
+	 * @return CCalSession& currently used by Calendar
+	 */
+	 CCalSession& SessionL( const TDesC& aCalendar );
+	
+	/**
+	 * Retrieve the calendar entry view currently in use by Calendar
+	 * @return CCalEntryView* currently used by Calendar
+	 */
+	 CCalEntryView* EntryViewL();
+
+	
+	/**
+	 * Retrieve the calendar entry view currently in use by Calendar
+	 * @return CCalEntryView* currently used by Calendar
+	 */
+	 CCalEntryView* EntryViewL(const TCalCollectionId aCollectionId );
+	
+	
+	/**
+	 * Retrieve the calendar instance view currently in use by Calendar
+	 * @return CCalInstanceView* currently used by Calendar
+	 */
+	 CCalInstanceView* InstanceViewL();
+
+	/**
+	 * Retrieve the calendar instance view currently in use by Calendar
+	 * @return CCalInstanceView* currently used by Calendar
+	 */
+	 CCalInstanceView* InstanceViewL( 
+							const RArray<TInt>& aCollectionIds );
+
+	/**
+	 * Retrieve the InterimUtils
+	 * @return CCalenInterimUtils2&
+	 */
+	CCalenInterimUtils2& InterimUtilsL();
+
+	TBool QueueKeyEvent( const TKeyEvent& aEvent, TEventCode aType );
+	TBool GetQueuedKeyEvent( TKeyEvent& aEvent, TEventCode& aType );
+	void ResetKeyEventQueue();
+	/**
+	 * Get calendar icon of specific type
+	 * @return CGulIcon*
+	 */
+	CGulIcon* GetIconL( MCalenServices::TCalenIcons aIndex );
+
+	/**
+	 * Register for notifications of Calendar events
+	 * @param aHandler the MCalenNotificationHandler to notify
+	 * @param aNotification single notification to be notified about
+	 */
+	virtual void RegisterForNotificationsL( MCalenNotificationHandler* aHandler,
+													TCalenNotification aNotification );
+	
+	/**
+	 * Register for notifications of Calendar events
+	 * @param aHandler the MCalenNotificationHandler to notify
+	 * @param aNotifications array of notifications to be notified about
+	 */
+	virtual void RegisterForNotificationsL( MCalenNotificationHandler* aHandler,
+													RArray<TCalenNotification>& aNotifications );
+
+	/**
+	 * Cancel notifications of Calendar events
+	 * @param aHandler the MCalenNotificationHandler to stop notifying
+	 */
+	void CancelNotifications( MCalenNotificationHandler* aHandler );
+
+	/**
+	 * Issue a command to be handled by Calendar or a customization
+	 * All commands will be handled asynchronously.  Calendar may reject
+	 * @param aCommand the command to be handled
+	 * @return ETrue, if Calendar will attempt to handle the command
+	 * @return EFalse, if Calendar will not attempt to handle the command
+	 */
+	TBool IssueCommandL( TInt aCommand );
+
+	/**
+	 * Issue a notification to Calendar, which will be broadcast
+	 * synchronously to all registered notification handlers.
+	 * Only one notification may be issued at once.
+	 * @param aNotification the notification to broadcast
+	 */
+	void IssueNotificationL( TCalenNotification aNotification );
+
+	/**
+	 * Returns the context. This includes information such
+	 * as the currently focused date/instance.
+	 */
+	MCalenContext& Context();
+
+	/**
+	 * Request activation of a specific view
+	 * @param aViewId The view to be activated
+	 */
+	void RequestActivationL( const TVwsViewId& aViewId );
+
+	/**
+	 * Notify Calendar that a specific view has been activated.
+	 * Custom views must call this on activation
+	 * @param aViewId The view that was activated
+	 */
+	void ActivationNotificationL( const TVwsViewId& aViewId );
+
+	/**
+	 * Offers the menu pane for population, interested parties can
+	 * add or remove menu items
+	 * @param aMenuPane meu pane to be populated
+	 * @param aResourceId   resource id of menu pane
+	 */
+	void OfferMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+	 /**
+	 * Gets the command range that has been allocated to this MCalenServices 
+	 * instance
+	 * 
+	 * @param aCommandRangeStart start of command range
+	 * @param aCommandRangeEnd end of command range
+	 */
+	void GetCommandRange( TInt& aCommandRangeStart, 
+									  TInt& aCommandRangeEnd ) const;
+
+	  /**
+	 * Offers a TRect to customisations for the creation of
+	 * a control to be displayed in the infobar
+	 * @return info bar control
+	 */
+	CCoeControl* Infobar( const TRect& aRect );
+	
+	/**
+	 * Customisation creates the text for display in infobar
+	 * @return infobar Text
+	 */
+	const TDesC& Infobar( );
+
+        MCalenPreview* CustomPreviewPaneL( TRect& aRect );
+	/**
+	 * Offers a TRect to available customisations for the creation of a 
+	 * control to be displayed in the preview pane
+	 * @return preview pane control
+	 */
+	CCoeControl* PreviewPane( TRect& aRect );
+	
+	/**
+	 * Get a pointer to the Calendar toolbar, or NULL if none is available.
+	 * Ownership is not transferred.
+	 * @return Calendar toolbar if available
+	 */
+	MCalenToolbar* ToolbarOrNull();
+	
+	/**
+	 * Get Missed alarm store
+	 * @return reference to Missed alarm store
+	 */        
+	CMissedAlarmStore* MissedAlarmStore();
+	
+	/**
+	 * Get missed alarms list
+	 * @return an array of missed alarms
+	 */
+	void GetMissedAlarmsList(RArray<TCalenInstanceId>& aMissedAlarmList);
+	
+	/**
+	 * Get attachment model
+	 * @return CCalenAttachmentModel* pointer to CCalenAttachmentModel
+	 */
+	CCalenAttachmentModel* GetAttachmentData();
+	
+	/**
+	* @brief Get all available calendar info
+	*
+	* @param  returns the list of available calendar info iterating 
+	* through all calendars
+	*/
+	void GetAllCalendarInfoL(
+			RPointerArray<CCalCalendarInfo>& aCalendarInfoList );
+	
+	/**
+	 * @brief get calendar file name for the collection id
+	 * 
+	 * @param aCalendarFile reference to the calendar file name
+	 * @param aCollectionId  collection id of the session for 
+	 * which calendar file name is required
+	 */
+	const TDesC& GetCalFileNameForCollectionId(const TCalCollectionId aCollectionId);
+	
+private:
+	/**
+	 * C++ constructor.
+	 */
+	CCalenServicesImpl( TInt aCommandRangeStart, 
+								TInt aCommandRangeEnd );
+
+    private:  // Data
+        CCalenGlobalData* iGlobalData;
+        CCalenController* iController;
+        
+
+        TInt iCommandRangeStart; // start of the valid command range
+        TInt iCommandRangeEnd;   // end of the valid command range
+    };
+
+#endif // CALENSERVICESIMPL_H
+
+// End of file