--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/ESMailSettingsPlugin.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,163 @@
+/*
+* 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: Declares plugin settings interface.
+*
+*/
+
+
+#ifndef _ESMAILSESETTINGSPLUGIN_H_
+#define _ESMAILSESETTINGSPLUGIN_H_
+
+// SYSTEM INCLUDES
+#include <aknview.h>
+
+/**
+ * In addition to the pure virtuals below, the plug-in implementers must implement
+ * following methods of CAknView
+ *
+ * -DoActivate()
+ * * The EMail UI will pass the account id object (provided by the FW) and the subview id
+ * packaged to a package buffer in the custom message. The implementations should save the
+ * aPrevViewId to be able to reactivate the EMail UI settings view when the user wants to
+ * return from the subview. The custom message id contains enumeration
+ * TESEmailSettingsPluginCustomMessageId
+ * -DoDeactivate()
+ * -Id()
+ * * The plug-ins should return their implementation UID as the view's id to ensure
+ * unique ids. The EMail UI will also use this id to map the accounts to correct settings
+ * plug-ins with the help of FWs Settings Info API (which returns the settings UI plug-in
+ * implementation UID for an account).
+ *
+ */
+
+// INTERFACE DECLARATION
+class CESMailSettingsPlugin : public CAknView
+{
+ public:
+ /**
+ * Creates instance of a CESMailSettingsPlugin
+ *
+ * @param aImplementationUid protocol plugin Id reveiced from Freestyle Framework
+ * @return CESMailSettingsPlugin pointer
+ */
+ inline static CESMailSettingsPlugin* NewL( const TUid& aImplementationUid );
+
+ /**
+ * Destructor
+ */
+ inline virtual ~CESMailSettingsPlugin();
+
+ public:
+ /**
+ * Returns the number of subviews visible under the mail settings. The subviews will
+ * be presented in the settings UI in the same order as their ids (0, 1, 2, 3, ...).
+ */
+ virtual TInt MailSettingsSubviewCount() = 0;
+
+ /**
+ * Returns the caption for a mail settings subview.
+ *
+ * @param aAccountId Freestyle email account information
+ * @param aSubviewIndex index of a settings subview
+ * @param aLongCaption if ETrue long version of caption is returned
+ * @return TPtrC to caption
+
+ */
+ virtual TPtrC MailSettingsSubviewCaption(
+ TFSMailMsgId aAccountId,
+ TInt aSubviewIndex,
+ TBool aLongCaption ) = 0;
+
+ /**
+ * Returns ETrue if the protocol can handle syncing of PIM data (calendar, contacts, etc...), EFalse if not.
+ * Returning ETrue will make the protocol visible in the Personal Information Management / PIM Source radio selection
+ */
+ virtual TBool CanHandlePIMSync() = 0;
+
+ /**
+ * Returns the localized protocol name that is shown in the
+ * Personal Information Management / PIM Source radio selection
+ */
+ virtual TPtrC LocalizedProtocolName() = 0;
+
+ /**
+ * Returns ETrue if the protocol is selected for PIM sync, EFalse if not. The information is used
+ * to show the correct protocol name in the settings UI
+ */
+ virtual TBool IsSelectedForPIMSync() = 0;
+
+ /**
+ * Selects or disables the protocol for PIM sync.
+ */
+ virtual void SelectForPIMSync( TBool aSelectForSync ) = 0;
+
+ /**
+ * Returns the number of subviews visible under the PIM settings. The subviews will
+ * be presented in the settings UI in the same order as their ids (0, 1, 2, 3, ...).
+ */
+ virtual TInt PIMSettingsSubviewCount() = 0;
+
+ /**
+ * Returns the caption for a PIM settings subview.
+ *
+ * @param aAccountId Freestyle email account information
+ * @param aSubviewIndex index of a settings subview
+ * @param aLongCaption if ETrue long version of caption is returned
+ * @return TPtrC to caption
+ */
+ virtual TPtrC PIMSettingsSubviewCaption(
+ TFSMailMsgId aAccountId,
+ TInt aSubviewIndex,
+ TBool aLongCaption ) = 0;
+
+ // DATA TYPES
+ public:
+ /**
+ * Container for the data needed to activate
+ * a subview in a setings UI plug-in.
+ * This class gets passed in the custom message
+ * part of the view activation message.
+ */
+ class TSubViewActivationData
+ {
+ public:
+ //<cmail> Initialize variables
+ TSubViewActivationData():
+ iPimAccount(EFalse), iLaunchedOutsideFSEmail(EFalse), iLaunchFolderSettings(EFalse)
+ {
+ //intentionally left empty
+ };
+ //</cmail>
+ TFSMailMsgId iAccount;
+ TInt iSubviewId;
+ TBool iPimAccount;
+ TBool iLaunchedOutsideFSEmail;
+ TBool iLaunchFolderSettings; //<cmail>
+ };
+
+ enum TESEmailSettingsPluginCustomMessageId
+ {
+ EActivateMailSettingsSubview,
+ EActivatePIMSettingsSubview
+ };
+ private:
+ /**
+ * Unique instance identifier key (needed for ECom)
+ */
+ TUid iDtor_ID_Key;
+};
+
+#include "ESMailSettingsPlugin.inl"
+
+#endif /*_ESMAILSESETTINGSPLUGIN_H_*/