diff -r 88ee4cf65e19 -r 1aa8c82cb4cb remotestoragefw/rsfwnotifierplugins/inc/rsfwnotplugindlg.h --- /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 +#include +#include // MEikSrvNotifierBase +#include +#include "rsfwauthenticationdlgrequest.h" +#include "rsfwsavetodlgrequest.h" +#include "rsfwnotpluginrequest.h" + +class CAknDialog; + + +IMPORT_C CArrayPtr* 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 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 iCacheDrive; + CAknMemorySelectionDialog* iMemDialog; + HBufC* iCurrentRootPath; + RFs iFs; + + // + TBool iDialogDismissedCalled; + TBool iAppSwitchingBlocked; // is 'app key' disabled + }; + +#endif \ No newline at end of file