--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/FSEmailLauncherItem.h Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,161 @@
+/*
+* 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: Launcher item plugin API definition.
+*
+*/
+
+
+#ifndef __FSEMAILLAUNCHERITEM_H__
+#define __FSEMAILLAUNCHERITEM_H__
+
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <badesca.h>
+#include <AknIconUtils.h>
+
+/**
+ * UID of this ECOM interface.
+ */
+// <cmail> S60 UID update
+const TUid KFSEmailLauncherItemUid = {0x2001E285};
+// </cmail> S60 UID update
+
+class MFSEmailLauncherItemObserver
+ {
+public:
+
+ /**
+ * Gets called when an item requests an view refresh. The launcher should
+ * re-read all cached data from the item plug-in interface.
+ */
+ virtual void RefreshLauncherViewL() = 0;
+ };
+
+class CFSEmailLauncherItem : public CBase
+ {
+public:
+
+ /**
+ * Constructs CFSEmailLauncherItem.
+ *
+ * @param aImplementationUid UID of the implementation to be constructed.
+ * @param aObserver Observer for refreshing launcher view.
+ * @return Launcher item.
+ */
+ static CFSEmailLauncherItem* NewL(
+ TUid aImplementationUid,
+ MFSEmailLauncherItemObserver* aObserver );
+
+ /**
+ * Destructor
+ */
+ virtual ~CFSEmailLauncherItem();
+
+ /**
+ * Request a list of all available implementations which satisfy this
+ * given interface.
+ *
+ * @param aImplInfoArray Info array of implementations.
+ */
+ static void ListAllImplementationsL( RImplInfoPtrArray& aImplInfoArray );
+
+public:
+
+ /**
+ * Set observer for refreshing launcher view.
+ *
+ * @param aObserver Observer for refreshing launcher view.
+ */
+ virtual void SetObserver( MFSEmailLauncherItemObserver* aObserver ) = 0;
+
+ /**
+ * Returns the ID of the item. The IDs are allocated by the EMail UI
+ * project. The IDs are used to match the plug-in API implementations with
+ * the placeholders, so that we get the items to the correct locations on
+ * the grid defined in the UI spec. The implementation could also return
+ * some constant in which case the UI would place the item at the end of
+ * the grid or something.
+ *
+ * @return Id of the item.
+ */
+ virtual TInt Id() const = 0;
+
+ /**
+ * Returns the icon displayed in the launcher grid. The UI will call
+ * SetSize for it with appropriate values to accomodate to different
+ * screen sizes.
+ *
+ * @return Icon to be displayed.
+ */
+ virtual CAknIcon* Icon() const = 0;
+
+ /**
+ * Returns a long or short caption for the item that gets displayed in the
+ * UI.
+ *
+ * @param aLongCaption If EFalse, the short caption is returned.
+ * @return Caption for the item.
+ */
+ virtual TPtrC Caption( TBool aLongCaption ) const = 0;
+
+ /**
+ * Returns information about whether the item should be visible or not.
+ *
+ * @return Visibility of the item.
+ */
+ virtual TBool IsVisible() const = 0;
+
+ /**
+ * Gets called if the user selects the item.
+ */
+ virtual void ExecuteActionL() = 0;
+
+private:
+
+ /**
+ * Instance identifier key.
+ */
+ TUid iDtor_ID_Key;
+ };
+
+
+inline CFSEmailLauncherItem::~CFSEmailLauncherItem()
+ {
+ // Inform the ECOM framework that this specific instance of the interface
+ // has been destroyed.
+ REComSession::DestroyedImplementation(iDtor_ID_Key);
+ }
+
+inline CFSEmailLauncherItem* CFSEmailLauncherItem::NewL(
+ TUid aImplementationUid,
+ MFSEmailLauncherItemObserver* aObserver )
+ {
+ TAny* ptr = REComSession::CreateImplementationL(
+ aImplementationUid,
+ _FOFF( CFSEmailLauncherItem, iDtor_ID_Key ) );
+
+ CFSEmailLauncherItem* item = REINTERPRET_CAST( CFSEmailLauncherItem*, ptr );
+
+ item->SetObserver( aObserver );
+
+ // The type of TAny* ptr should be CFSEmailLauncherItem.
+ return item;
+ }
+
+inline void CFSEmailLauncherItem::ListAllImplementationsL( RImplInfoPtrArray& aImplInfoArray )
+ {
+ REComSession::ListImplementationsL( KFSEmailLauncherItemUid, aImplInfoArray );
+ }
+
+#endif // __FSEMAILLAUNCHERITEM_H__