--- a/remotestoragefw/remotefileengine/src/rsfwwaitnotemanager.cpp Mon Jan 18 21:00:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,564 +0,0 @@
-/*
-* Copyright (c) 2005 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: Global wait notes used in Remote File Engine
-*
-*/
-
-
-// INCLUDE FILES
-#include <pathinfo.h>
-#include <CAknMemorySelectionDialog.h>
-#include <RemoteFileEngine.rsg>
-#include <aknnotpi.rsg>
-#include <AknGlobalConfirmationQuery.h>
-#include <StringLoader.h>
-#include <CDirectoryLocalizer.h>
-#include <AknGlobalNote.h>
-#include <bautils.h>
-
-#include "rsfwwaitnotemanager.h"
-#include "rsfwrfeserver.h"
-#include "sysutil.h"
-#include "mdebug.h"
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::CRsfwWaitNoteManager
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CRsfwWaitNoteManager::CRsfwWaitNoteManager() :
- CActive( CActive::EPriorityUserInput )
- {
-
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ConstructL()
- {
- DEBUGSTRING(("CRsfwWaitNoteManager::ConstructL"));
- CActiveScheduler::Add( this );
- iOpState = ERemoteWaitNoteStateOk;
-
- // read wait note txt:s from the localization file
- TFileName resourceFile;
- resourceFile.Copy(KResourceFile);
- BaflUtils::NearestLanguageFile(CRsfwRfeServer::Env()->iFs,resourceFile);
-
- DEBUGSTRING16(("opening resource file '%S'", &resourceFile));
- iResourceFile.OpenL(CRsfwRfeServer::Env()->iFs, resourceFile);
- iResourceFile.ConfirmSignatureL();
- DEBUGSTRING(("resource file ok"));
-
- // pre-read the most common strings
- HBufC8* warningNoteLabel = iResourceFile.AllocReadL(R_WAIT_NOTE_DISC_WARNING);
- CleanupStack::PushL(warningNoteLabel);
- iResourceReader.SetBuffer(warningNoteLabel);
- iNoteTxt = iResourceReader.ReadHBufCL();
- CleanupStack::PopAndDestroy(warningNoteLabel);
-
- iAvkonNoteId = 0;
-
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::NewL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CRsfwWaitNoteManager* CRsfwWaitNoteManager::NewL()
- {
- CRsfwWaitNoteManager* self = new ( ELeave ) CRsfwWaitNoteManager();
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CRsfwWaitNoteManager::~CRsfwWaitNoteManager()
- {
- Deque();
- iResourceFile.Close();
-
-
- if (iNoteTxt)
- {
- delete iNoteTxt;
- }
- if (iAuthRequest)
- {
- delete iAuthRequest;
- }
-
- if (iGlobalNoteRequest)
- {
- delete iGlobalNoteRequest;
- }
-
- if (iSaveToRequest)
- {
- delete iSaveToRequest;
- iSaveToRequest = NULL;
- }
-
- iNotifier.Close();
-
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::StartWaitNoteL
-// Start to display a wait note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CRsfwWaitNoteManager::StartWaitNoteL(
- TRemoteOperationType aOpType,
- CRsfwWaitNoteStateMachine* aOperation)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::StartWaitNoteL"));
-
- // It is possible that when this function is called there already is
- // a wait note. In this case we allow the new operation and its wait note
- // to override the ongoing concurrent operation's wait note.
- // However, we want to protect some dialogs.
- // These are
- // 1) Wait note when uploading a file
- // The reason for this is that the wait note is in fact the only indication
- // the user gets about the status of writing a file to the server.
- // 2) User query when uploading failed and we need to give time to read
- // the dialogs about selecting a new location from a local media
- if (!((iOpState == ERemoteWaitNoteStateInProgress) && (iOpType == ERemoteSaveToLocal)))
- {
- iOperation = aOperation;
-
- // cancel whatever is there currently
- CancelWaitNoteL(iNoteId);
-
- DEBUGSTRING16(("CRsfwWaitNoteManager::CancelWaitNoteL returned"));
-
- // don't make asynchronous request when there has been already any!
- if(!IsActive())
- {
- if (aOpType <= ERemoteSaveToLocal)
- {
- DEBUGSTRING16(("calling iNotifier.Connect()"));
- User::LeaveIfError(iNotifier.Connect());
- DEBUGSTRING16(("called iNotifier.Connect()"));
- }
-
- switch( aOpType )
- {
- // these "basic request" pass the method and drive friendly name
- // drive friendly name is not needed for wait notes, only for retryrequest
- // so there could be even more simple IPC struct without it
- // (on the other hand, current param struct would easily allow showing the friendly name
- // with the wait notes)
- case ERemoteOpConnecting:
- case ERemoteOpDirDownloading:
- case ERemoteUnavailableRetry:
- {
- iNotifier.StartNotifierAndGetResponse(iStatus, KRsfwNotifierPluginUID,
- *iGlobalNoteRequest, *iGlobalNoteRequest);
- }
- break;
- case ERemoteWarnDisconnect:
- {
- CAknGlobalConfirmationQuery* iQuery = CAknGlobalConfirmationQuery::NewL();
- iQuery->ShowConfirmationQueryL(iStatus, *iNoteTxt);
- break;
- }
- case ERemoteOpAuthDialog:
- {
- DEBUGSTRING16(("calling ERemoteOpAuthDialog/ERemoteUnavailableRetry"));
- // same struct used for input and output params.
- iNotifier.StartNotifierAndGetResponse(iStatus, KRsfwNotifierPluginUID,
- *iAuthRequest, *iAuthRequest);
- break;
- }
-
- case ERemoteSaveToLocal:
- DEBUGSTRING16(("calling ERemoteOpAuthDialog/ERemoteSaveToLocal"));
- iNotifier.StartNotifierAndGetResponse(iStatus, KRsfwNotifierPluginUID,
- *iSaveToRequest, *iSaveToRequest);
- break;
- }
-
- DEBUGSTRING16(("CRsfwWaitNoteManager calling SetActive()"));
- SetActive();
-
-
- DEBUGSTRING16(("CRsfwWaitNoteManager::StartWaitNoteL function returns"));
- iOpType = aOpType;
- iOpState = ERemoteWaitNoteStateInProgress;
- return ++iNoteId;
- }
- else
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::StartWaitNoteL attempt to make request when object is active"));
- DEBUGSTRING16(("CRsfwWaitNoteManager::StartWaitNoteL function returns 0"));
- return 0; // caller didn't "get" the note
- }
- }
- else
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::StartWaitNoteL function returns 0"));
- return 0; // caller didn't "get" the note
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::CancelWaitNote
-// Cancel a wait note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::CancelWaitNoteL(TInt aNoteId)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::CancelWaitNoteL, iOpState = %d, iOpType = %d", iOpState, iOpType));
- // Cancel a wait note if there is one and it is the same one that
- // the caller thinks it is removing...
- if ( (iOpState == ERemoteWaitNoteStateInProgress ) && (aNoteId == iNoteId))
- {
-
- if (iOpType <= ERemoteSaveToLocal)
- {
- // notifier plugin dialogs
- User::LeaveIfError(iNotifier.CancelNotifier(KRsfwNotifierPluginUID));
- iNotifier.Close();
- }
-
-
- // Dismiss qlobal query
- if ( iQuery )
- {
- iQuery->CancelConfirmationQuery();
- delete iQuery;
- iQuery = NULL;
- }
-
-
-
- iOpState = ERemoteWaitNoteStateOk;
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::RunL
-// Handles an active object’s request completion event.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::RunL()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::RunL, status=%d, optype=%d", iStatus.Int(), iOpType));
- CancelWaitNoteL(iNoteId);
-
- TInt errorCode = iStatus.Int();
-
- switch (iOpType)
- {
- case ERemoteWarnDisconnect:
- if (iStatus == EAknSoftkeyYes)
- {
- errorCode = KErrNone;
- }
- else
- {
- errorCode = KErrCancel;
- }
- break;
- case ERemoteOpAuthDialog:
- iAuthCredentials->iUserName = (*iAuthRequest)().iUserName;
- iAuthCredentials->iPassword = (*iAuthRequest)().iPassword;
- delete iAuthRequest;
- iAuthRequest = NULL;
- break;
- case ERemoteUnavailableRetry:
- case ERemoteOpConnecting:
- case ERemoteOpDirDownloading:
- delete iGlobalNoteRequest;
- iGlobalNoteRequest = NULL;
- break;
- case ERemoteSaveToLocal:
- iSaveParams->iFileName = (*iSaveToRequest)().iFileName;
- delete iSaveToRequest;
- iSaveToRequest = NULL;
- break;
- }
-
- if (iOperation) // is some operation waiting for info about this wait note?
- {
- if (((iOpType == ERemoteOpDirDownloading) || (iOpType == ERemoteOpConnecting))
- && (errorCode == KErrCancel))
- {
- DEBUGSTRING16(("calling iOperation->CancelTransaction()"));
- // we received from the dialog information that user wants to cancel
- // call CancelTransaction on the access protocol module
- // this then must cancel our pending transaction
- // so we finally get to the ErrorL() state of the state machine
- iOperation->CancelTransaction();
- }
-
- else
- {
- DEBUGSTRING16(("calling iOperation->HandleRemoteAccessResponse()"));
- iOperation->HandleRemoteAccessResponse(0, errorCode);
- }
- }
-
- }
-
-// ----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::RunError
-// ----------------------------------------------------------------------------
-//
-TInt CRsfwWaitNoteManager::RunError(TInt /*aError*/)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::RunError"));
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::DoCancel()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowAddressNotFoundErrorL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowAddressNotFoundErrorL(
- const TDesC& aFriendlyName)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowAddressNotFoundErrorL (drive '%S')", &aFriendlyName));
- RResourceFile resourceFile;
- TResourceReader resourceReader;
-
- // get the name of the localized resource file
- TFileName resourceFileName;
- resourceFileName.Copy(KResourceFile);
- BaflUtils::NearestLanguageFile(CRsfwRfeServer::Env()->iFs,resourceFileName);
-
- DEBUGSTRING16(("opening resource file '%S'", &resourceFileName));
- // read localized string from resource file
- resourceFile.OpenL(CRsfwRfeServer::Env()->iFs, resourceFileName);
- CleanupClosePushL(resourceFile);
- resourceFile.ConfirmSignatureL();
- DEBUGSTRING(("resource file ok"));
- HBufC8* noteBuffer = resourceFile.AllocReadLC(R_NOTE_ADDRESS_NOT_AVAILABLE);
- resourceReader.SetBuffer(noteBuffer);
- HBufC* noteText = resourceReader.ReadHBufCL();
- CleanupStack::PushL(noteText);
-
- // S60 .loc formatting
- HBufC* formattedText = HBufC::NewLC(noteText->Length() + aFriendlyName.Length());
- TPtr fprt = formattedText->Des();
- StringLoader::Format(fprt, *noteText , -1, aFriendlyName);
-
- // error dialog
- CAknGlobalNote* errorDialog = CAknGlobalNote::NewLC();
- errorDialog->ShowNoteL(EAknGlobalErrorNote, *formattedText);
- CleanupStack::PopAndDestroy(5); // resourceFile, noteBuffer, noteText, formattedText, errordialog
- }
-
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::SetAuthenticationDialogL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::SetAuthenticationDialogL(TRsfwAuthenticationDlgRequest& aAuthRequest)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::SetAuthenticationDialogL"));
- if (iAuthRequest)
- {
- delete iAuthRequest;
- iAuthRequest = NULL;
- }
- iAuthRequest = new (ELeave) TRsfwAuthParamsPckg();
-
- (*iAuthRequest)() = aAuthRequest;
- iAuthCredentials = &aAuthRequest;
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::SetGlobalNoteRequestL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::SetGlobalNoteRequestL(TRsfwNotPluginRequest& aRequestStruct)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::SetGlobalNoteRequestL"));
- if (iGlobalNoteRequest)
- {
- delete iGlobalNoteRequest;
- iGlobalNoteRequest = NULL;
- }
-
- iGlobalNoteRequest = new (ELeave) TRsfwRetryParamsPckg();
- (*iGlobalNoteRequest)() = aRequestStruct;
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::SetSaveToDialogRequestL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::SetSaveToDialogRequestL(TRsfwSaveToDlgRequest& aSaveToRequest)
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::SetSaveToDialogRequestL"));
- if (iSaveToRequest)
- {
- delete iSaveToRequest;
- iSaveToRequest = NULL;
- }
-
- iSaveToRequest = new (ELeave) TRsfwSaveToParamsPckg();
-
- (*iSaveToRequest)() = aSaveToRequest;
- iSaveParams = &aSaveToRequest;
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowFileSavedToDialogL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowFileSavedToDialogL(const TDesC& aPath )
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowFileSavedToDialogL"));
- HBufC8* textbuffer = iResourceFile.AllocReadL(R_CONFIRM_FILE_SAVED_TO);
- CleanupStack::PushL(textbuffer);
- iResourceReader.SetBuffer(textbuffer);
- HBufC* text = iResourceReader.ReadHBufCL();
- CleanupStack::PushL(text);
- HBufC* formattedText = NULL;
-
- // extract the path
- TParse parser;
- parser.Set(aPath, NULL, NULL);
- // try to get localized path
- CDirectoryLocalizer* localizer = CDirectoryLocalizer::NewL();
- CleanupStack::PushL(localizer);
- // S60 localizer requires also drive letter,
- // i.e. matches are like C:\\Data\\Images
- localizer->SetFullPath(parser.DriveAndPath());
- TPtrC localizedName = localizer->LocalizedName();
-
- if (localizedName != KNullDesC)
- {
- formattedText = HBufC::NewMaxLC(text->Length() +
- localizedName.Length());
-
- TPtr formatPtr(formattedText->Des());
- StringLoader::Format(formatPtr, *text, -1, localizedName);
- }
- else
- {
- formattedText = HBufC::NewMaxLC(text->Length() +
- aPath.Length());
-
- TPtr formatPtr(formattedText->Des());
- StringLoader::Format(formatPtr, *text, -1, parser.Path());
- }
-
-
- CAknGlobalNote* dlg = CAknGlobalNote::NewLC();
- dlg->ShowNoteL(EAknGlobalInformationNote, *formattedText );
- CleanupStack::PopAndDestroy(5); // textbuffer, text, localizer, formattedtext, dlg
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowFailedSaveNoteL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowFailedSaveNoteL()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowFailedSaveNoteL"));
- ShowGlobalInformationNoteL(R_SAVING_FAILED);
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowFailedSaveNoteL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowNoNetworkCoverageNoteL()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowNoNetworkCoverageNoteL"));
- ShowGlobalInformationNoteL(R_NO_NETWORK_COVERAGE);
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowOfflineNotPossibleNoteL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowOfflineNotPossibleNoteL()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowOfflineNotPossibleNoteL"));
- ShowGlobalInformationNoteL(R_OFFLINE_NOT_POSSIBLE);
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowOutOfMemoryNoteL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowOutOfMemoryNoteL()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ShowOutOfMemoryNoteL"));
- ShowGlobalInformationNoteL(R_RAM_OUT_OF_MEMORY);
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ShowGlobalInformationNoteL
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ShowGlobalInformationNoteL(TInt aResourceId)
- {
- HBufC8* textbuffer = iResourceFile.AllocReadL(aResourceId);
- CleanupStack::PushL(textbuffer);
- iResourceReader.SetBuffer(textbuffer);
- HBufC* text = iResourceReader.ReadHBufCL();
- CleanupStack::PushL(text);
- CAknGlobalNote* dlg = CAknGlobalNote::NewLC();
- dlg->ShowNoteL(EAknGlobalInformationNote, *text );
- CleanupStack::PopAndDestroy(3); // textBuffer, text, dlg
- }
-
-// -----------------------------------------------------------------------------
-// CRsfwWaitNoteManager::ResetOperation
-// -----------------------------------------------------------------------------
-//
-void CRsfwWaitNoteManager::ResetOperation()
- {
- DEBUGSTRING16(("CRsfwWaitNoteManager::ResetOperation"));
- iOperation = NULL;
- }
-
-// -----------------------------------------------------------------------------
-
-// End of File