--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/remotestoragefw/rsfwnotifierplugins/inc/rsfwnotplugindlg.h Wed Sep 01 12:15:08 2010 +0100
@@ -0,0 +1,263 @@
+/*
+* Copyright (c) 2006 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: RSFW notifier server plugin
+*
+*/
+
+#ifndef C_RSFWNOTPLUGIN_H
+#define C_RSFWNOTPLUGIN_H
+
+#include <e32def.h>
+#include <e32base.h>
+#include <eiknotapi.h> // MEikSrvNotifierBase
+#include <MAknMemorySelectionObserver.h>
+#include "rsfwauthenticationdlgrequest.h"
+#include "rsfwsavetodlgrequest.h"
+#include "rsfwnotpluginrequest.h"
+
+class CAknDialog;
+
+
+IMPORT_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray();
+
+/**
+ * Remote Storage FW plugin to the notifier server.
+ *
+ * This plugin implements the custom global dialogs needed by
+ * Remote Storage Framework.
+ *
+ * @lib rsfwnotplugin.dll
+ * @since S60 v3.2
+ */
+class CRsfwNotPluginDlg : public CActive,
+ public MEikSrvNotifierBase2,
+ public MAknMemorySelectionObserver,
+ public MProgressDialogCallback
+ {
+public:
+
+ static CRsfwNotPluginDlg* NewL();
+
+ ~CRsfwNotPluginDlg();
+
+ // for base class CActive
+
+ /**
+ * From CActive
+ * Handles an active object's request completion event.
+ *
+ * @since S60 v3.2
+ */
+ void RunL();
+
+ /**
+ * From CActive
+ * Handles a leave occurring in the request completion event handler RunL().
+ *
+ * @since S60 v3.2
+ */
+ TInt RunError(TInt aError);
+
+ /**
+ * From CActive
+ * Implements cancellation of an outstanding request.
+ *
+ * @since S60 v3.2
+ */
+ void DoCancel();
+
+ // from base class MEikSrvNotifierBase2
+
+ /**
+ * From .MEikSrvNotifierBase2
+ * Called when all resources allocated by notifiers should be freed.
+ *
+ * @since S60 v3.2
+ *
+ */
+ virtual void Release();
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * Called when a notifier is first loaded to allow any initial construction that is required.
+ *
+ * @since S60 v3.2
+ *
+ */
+ virtual MEikSrvNotifierBase2::TNotifierInfo RegisterL();
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * Return the priority a notifier takes and the channels it acts on. The return value may be varied
+ * at run-time.
+ *
+ * @since S60 v3.2
+ */
+ virtual MEikSrvNotifierBase2::TNotifierInfo Info() const;
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * Start the notifier with data aBuffer and return an initial response.
+ *
+ * @since S60 v3.2
+ * @param aBuffer Data that can be passed from the client-side. The format and
+ * meaning of any data is implementation dependent.
+ */
+ virtual TPtrC8 StartL(const TDesC8& aBuffer);
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * Start the notifier with data aBuffer. aMessage should be completed when the notifier is deactivated.
+ * May be called multiple times if more than one client starts the notifier. The notifier is immediately
+ * responsible for completing aMessage.
+ *
+ * @since S60 v3.2
+ * @param aBuffer Data that can be passed from the client-side. The format and
+ * meaning of any data is implementation dependent.
+ * @param aReplySlot Identifies which message argument to use for the reply.
+ * This message argument will refer to a modifiable descriptor, a TDes8 type,
+ * into which data can be returned. The format and meaning of any returned data
+ * is implementation dependent.
+ @param aMessage Encapsulates a client request
+ */
+ virtual void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage);
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * The notifier has been deactivated so resources can be freed and outstanding messages completed.
+ *
+ * @since S60 v3.2
+ */
+ virtual void Cancel();
+
+
+ /**
+ * From MEikSrvNotifierBase2
+ * Update a currently active notifier with data aBuffer.
+ *
+ * @since S60 v3.2
+ * @param aBuffer Data that can be passed from the client-side. The format and
+ * meaning of any data is implementation dependent.
+ * @return A pointer descriptor representing data that may be returned. The format
+ * and meaning of any data is implementation dependent.
+ */
+ virtual TPtrC8 UpdateL(const TDesC8& aBuffer);
+
+ // from base class MAknMemorySelectionObserver
+
+ /**
+ * From MAknMemorySelectionObserver
+ * Logic to decide whether the inputs given in the dialog are ok
+ *
+ * @since S60 v3.2
+ * @param aMemory the selected memory
+ */
+ TBool OkToExitL( CAknMemorySelectionDialog::TMemory aMemory );
+
+ // from base class MProgressDialogCallback
+
+ /**
+ * From MProgressDialogCallback
+ * Callback we receive when a non-modal wait dialog is dismissed
+ *
+ * @since S60 v3.2
+ * @param aButtonId the button user pressed
+ */
+ void DialogDismissedL( TInt aButtonId );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CRsfwNotPluginDlg();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ // New functions
+
+ // Helpers
+ void HandleAsyncRequestL();
+
+ // show dialogs
+ TInt ShowAuthenticationDialogL();
+ TBool ShowUnavailableRetryNoteL();
+ TBool ShowSaveToDlgL();
+ void ShowWaitNoteL();
+
+ /**
+ * Returns the type of given item index in CFileManagerItemProperties bitmask
+ * @param aFullPath Full path to item which type is needed..
+ * @return CFileManagerItemProperties bitmask
+ */
+ TUint32 FileTypeL( const TDesC& aFullPath ) const;
+
+ void Cleanup();
+
+ TBool GetValidNameL(TDesC& aPath, TDes& aName);
+
+ void ShowDiskFullNoteL( TBool aInternal );
+
+ void CancelL();
+
+ /**
+ * Temporarily disables 'app key', so that user cannot switch or close
+ * the app when global dialog is being displayed
+ */
+ void BlockAppSwitching();
+ void UnblockAppSwitching();
+
+ private: // Data
+ TInt iMethod; // See TRsfwNotPluginRequest::TRsfwNotPluginMethod
+ RMessagePtr2 iMessage;
+ TInt iReplySlot;
+ MEikSrvNotifierBase2::TNotifierInfo iInfo;
+
+ // for all dialogs
+ TBuf<KRsfwMaxDrivenameLength> iDriveName;
+ // for authentication dialog
+ HBufC* iUserName;
+ HBufC* iPassword;
+
+ // param structs
+ TRsfwAuthParamsPckg* iAuthRequest;
+ TRsfwSaveToParamsPckg* iSaveToRequest;
+
+ // Valid during showing a dialog
+ CAknDialog* iDialog;
+ CAknWaitDialog* iWaitDialog;
+ TBool iCancelled;
+
+ // for save as dialog
+ HBufC* iFileName;
+ TInt iFileSize;
+ TBuf<KRsfwMaxDriveletterLength> iCacheDrive;
+ CAknMemorySelectionDialog* iMemDialog;
+ HBufC* iCurrentRootPath;
+ RFs iFs;
+
+ //
+ TBool iDialogDismissedCalled;
+ TBool iAppSwitchingBlocked; // is 'app key' disabled
+ };
+
+#endif
\ No newline at end of file