diff -r 839377eedc2b -r befca0ec475f videofeeds/clientapi/src/CIptvMyVideosClient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/clientapi/src/CIptvMyVideosClient.cpp Wed Sep 01 12:30:28 2010 +0100 @@ -0,0 +1,1642 @@ +/* +* 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 the License "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: Implements My Videos Client API.* +*/ + + + + +// INCLUDE FILES + +#include +#include + +#include "IptvClientServerCommon.h" +#include "IptvDebug.h" +#include "CIptvMyVideosClient.h" +#include "MIptvMyVideosClientObserver.h" +#include "IptvServer.pan" +#include "CIptvMyVideosFolder.h" +#include "CIptvMyVideosGlobalFileId.h" +#include "CIptvMyVideosVideoBriefDetails.h" +#include "CIptvMyVideosVideoFullDetails.h" +#include "CIptvMyVideosContentUpdateObserver.h" +#include "CIptvMyVideosTotalVideoLengthObserver.h" +#include "CIptvMyVideosCopyOrMoveObserver.h" + +// CONSTANTS +const TInt KIptvMaxFileSizeInKiloBytes = 4194303; // (TUint32) ((KMaxTUint32 - 1) / 1024) +const TInt KTUint32SizeInBytes = 4; +const TInt KTUint16SizeInBytes = 2; + +_LIT(KIptvInvalidFileNameChars, "\"<>/|'?*"); + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CIptvMyVideosClient +// ----------------------------------------------------------------------------- +// +CIptvMyVideosClient::CIptvMyVideosClient( + MIptvMyVideosClientObserver& aClientObserver ) + : CActive( EPriorityStandard ), + iClientObserver( aClientObserver ), + iMsgPtr( NULL, 0 ) + { + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::ConstructL +// ----------------------------------------------------------------------------- +// +void CIptvMyVideosClient::ConstructL( TBool aSkipMaintenance ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::ConstructL -- Enter"); + + User::LeaveIfError(iSession.Connect()); + + // Create observers for "content updated", "get total video length" and "copy/move complete" + // messages from server. These messages stay pending until server has completed operation. + // + iContentUpdateObserver = CIptvMyVideosContentUpdateObserver::NewL(iClientObserver, iSession); + iTotalVideoLengthObserver = CIptvMyVideosTotalVideoLengthObserver::NewL(iClientObserver, iSession); + iCopyOrMoveObserver = CIptvMyVideosCopyOrMoveObserver::NewL(iClientObserver, iSession); + + // If client does not need maintenance scan, send the information about + // need for maintenance to server. If this message is not sent, server + // assumes that maintenance is needed and performs it after a short while. + // + if ( aSkipMaintenance ) + { + TRequestStatus status; + delete iMsg; + iMsg = NULL; + iMsg = HBufC8::NewL(KTUint32SizeInBytes); + iMsgPtr.Set(iMsg->Des()); + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL(stream); + stream.WriteUint32L(static_cast(aSkipMaintenance)); + CleanupStack::PopAndDestroy(&stream); + iSession.SendRequest(EIptvEngineMyVideosPassMaintenanceInfoReq, iMsgPtr, status); + User::WaitForRequest(status); + } + + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::ConstructL -- Exit"); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvMyVideosClient* CIptvMyVideosClient::NewL( + MIptvMyVideosClientObserver& aClientObserver, + TBool aMaintenance /*= EFalse*/ ) + { + CIptvMyVideosClient* self = CIptvMyVideosClient::NewLC( + aClientObserver, + aMaintenance ); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::NewLC +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvMyVideosClient* CIptvMyVideosClient::NewLC( + MIptvMyVideosClientObserver& aClientObserver, + TBool aMaintenance /*= EFalse*/ ) + { + CIptvMyVideosClient* self = new (ELeave) CIptvMyVideosClient(aClientObserver); + CleanupStack::PushL(self); + self->ConstructL(aMaintenance); + return self; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::~CIptvMyVideosClient +// ----------------------------------------------------------------------------- +// +CIptvMyVideosClient::~CIptvMyVideosClient() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::~CIptvMyVideosClient -- Enter"); + + // Cancel own requests, there shouldn't be any though. + Cancel(); + + // Cancel the content update and total video length requests. + // The cancellation is done with the help of server side. + if (!IsActive()) + { + if (!iSession.IsNull()) + { + TRequestStatus status; + iSession.SendRequest(EIptvEngineMyVideosCancelReq, status); + User::WaitForRequest(status); + } + } + + delete iContentUpdateObserver; + delete iTotalVideoLengthObserver; + delete iCopyOrMoveObserver; + + delete iMsg; + + iSession.Close(); + + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::~CIptvMyVideosClient -- Exit"); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetFolderListL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetFolderListL( + CIptvMyVideosGlobalFolderId& aParentFolderId, + TUint32 aFrom, + TUint32 aAmount, + TUint32& aTotalAmount, + RPointerArray& aFolderList ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetFolderListL"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosGetFolderListSizeReq, + aParentFolderId, + aFrom, + aAmount ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosGetFolderListDataReq ) ) ) + { + error = HandleMyVideosGetFolderListDataReqL( aTotalAmount, aFolderList ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetParentFolderL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetParentFolderL( + CIptvMyVideosGlobalFolderId& aFolderId, + CIptvMyVideosGlobalFolderId& aParentFolder ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetParentFolderL"); + + TInt error = KErrServerBusy; + + if ( aFolderId.iDrive == 0 && aFolderId.iFolderId == 0 ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosGetParentFolderSizeReq, aFolderId ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosGetParentFolderDataReq ) ) ) + { + error = HandleMyVideosGetParentFolderDataReqL( aParentFolder ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetFolderNameL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetFolderNameL( + CIptvMyVideosGlobalFolderId& aFolderId, + TDes& aName ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetParentFolderL"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosGetFolderNameSizeReq, aFolderId ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosGetFolderNameDataReq ) ) ) + { + error = HandleMyVideosGetFolderNameDataReqL( aName ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::DeleteFolderReqL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::DeleteFolderReqL(CIptvMyVideosGlobalFolderId& aFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::DeleteFolderReqL"); + + TInt error = KErrServerBusy; + + if (aFolderId.iDrive == 0 && aFolderId.iFolderId == 0) + { + return KErrArgument; + } + + if (!IsActive()) + { + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + TUint32 dataSize = aFolderId.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFolderId.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(EIptvEngineMyVideosDeleteFolderRequestReq, iMsgPtr, iStatus); + iActiveRequest = EIptvEngineMyVideosDeleteFolderRequestReq; + SetActive(); + + error = KErrNone; + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::DeleteFolderL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::DeleteFolderL( CIptvMyVideosGlobalFolderId& aFolderId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::DeleteFolderL"); + + TInt error = KErrServerBusy; + + if ( aFolderId.iDrive == 0 && aFolderId.iFolderId == 0 ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosDeleteFolderReq, aFolderId ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetVideoListL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetVideoListL( + CIptvMyVideosGlobalFolderId& aParentFolderId, + TUint32 aFrom, + TUint32 aAmount, + TUint32& aTotalAmount, + RPointerArray& aVideoList ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetVideoListL"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosGetVideoListSizeReq, + aParentFolderId, + aFrom, + aAmount ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosGetVideoListDataReq ) ) ) + { + error = HandleMyVideosGetVideoListDataReqL( aTotalAmount, aVideoList ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetVideoDetailsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetVideoDetailsL( + CIptvMyVideosGlobalFileId& aFileId, + CIptvMyVideosVideoFullDetails& aFullDetails ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetVideoDetailsL"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosGetVideoDetailsSizeReq, aFileId ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosGetVideoDetailsDataReq ) ) ) + { + error = HandleMyVideosGetVideoDetailsDataReqL( aFullDetails ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetVideoDetailsForPathL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetVideoDetailsForPathL( + const TDesC& aLocalPath, + CIptvMyVideosVideoFullDetails& aFullDetails ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetVideoDetailsForPathL"); + + TInt error = KErrServerBusy; + + if ( aLocalPath.Length() == 0 || aLocalPath.Length() > KIptvMaxPath ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + RDesWriteStream writeStream; + CleanupClosePushL( writeStream ); + TRequestStatus status; + TUint32 length = aLocalPath.Length(); + + // Request for the video details. + delete iMsg; + iMsg = NULL; + iMsg = HBufC8::NewL( KTUint16SizeInBytes + ( length * 2 ) ); + iMsgPtr.Set( iMsg->Des() ); + writeStream.Open( iMsgPtr ); + CIptvUtil::WriteDesToStreamL( aLocalPath, writeStream ); + CleanupStack::PopAndDestroy( &writeStream ); + + iSession.SendRequest( EIptvEngineMyVideosGetVideoDetailsForPathSizeReq, iMsgPtr, status ); + User::WaitForRequest( status ); + error = status.Int(); + + // If operation went ok, get the reply data. + if ( error == KErrNone ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( + EIptvEngineMyVideosGetVideoDetailsForPathDataReq ) ) ) + { + error = HandleMyVideosGetVideoDetailsDataReqL( aFullDetails ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::GetTotalVideoLengthRequestL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetTotalVideoLengthRequestL() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::GetTotalVideoLengthRequestL"); + + if (iTotalVideoLengthObserver && (! iTotalVideoLengthObserver->IsActive())) + { + iTotalVideoLengthObserver->SetActiveL(); + return KErrNone; + } + else + { + return KErrServerBusy; + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SetVideoDetailsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::SetVideoDetailsL( + CIptvMyVideosVideoFullDetails& aVideoFullDetails ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SetVideoDetailsL()"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosSetVideoDetailsReq, + aVideoFullDetails ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::DeleteVideoReqL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::DeleteVideoReqL(CIptvMyVideosGlobalFileId& aFileId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::DeleteVideoReqL"); + + TInt error = KErrServerBusy; + + if (!IsActive()) + { + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + TUint32 dataSize = aFileId.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFileId.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(EIptvEngineMyVideosDeleteVideoRequestReq, iMsgPtr, iStatus); + iActiveRequest = EIptvEngineMyVideosDeleteVideoRequestReq; + SetActive(); + + error = KErrNone; + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::DeleteVideoL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::DeleteVideoL( CIptvMyVideosGlobalFileId& aFileId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::DeleteVideoL"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosDeleteVideoReq, aFileId ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CopyReqL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CopyReqL(CIptvMyVideosGlobalFileId& aSourceFileId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CopyReqL(file)"); + + if (iCopyOrMoveObserver && (! iCopyOrMoveObserver->IsActive())) + { + iCopyOrMoveObserver->SetActiveL(EIptvEngineMyVideosCopyFileRequestReq, aSourceFileId, aTargetFolderId); + return KErrNone; + } + else + { + return KErrServerBusy; + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CopyL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CopyL( + CIptvMyVideosGlobalFileId& aSourceFileId, + CIptvMyVideosGlobalFolderId& aTargetFolderId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CopyL(file)"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosCopyFileReq, + aSourceFileId, + aTargetFolderId ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CopyReqL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CopyReqL(CIptvMyVideosGlobalFolderId& aSourceFolderId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CopyReqL(folder)"); + + if (iCopyOrMoveObserver && (! iCopyOrMoveObserver->IsActive())) + { + iCopyOrMoveObserver->SetActiveL(EIptvEngineMyVideosCopyFolderRequestReq, aSourceFolderId, aTargetFolderId); + return KErrNone; + } + else + { + return KErrServerBusy; + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CopyL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CopyL( + CIptvMyVideosGlobalFolderId& aSourceFolderId, + CIptvMyVideosGlobalFolderId& aTargetFolderId, + TUint32& aFailed ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CopyL(folder)"); + + TInt error = KErrServerBusy; + + if ( aSourceFolderId.iDrive == 0 && aSourceFolderId.iFolderId == 0 ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosCopyFolderSizeReq, + aSourceFolderId, + aTargetFolderId ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosCopyFolderDataReq ) ) ) + { + error = HandleMyVideosCopyFolderDataReqL( aFailed ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::MoveReqL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::MoveReqL(CIptvMyVideosGlobalFileId& aSourceFileId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::MoveReqL(file)"); + + if (iCopyOrMoveObserver && (! iCopyOrMoveObserver->IsActive())) + { + iCopyOrMoveObserver->SetActiveL(EIptvEngineMyVideosMoveFileRequestReq, aSourceFileId, aTargetFolderId); + return KErrNone; + } + else + { + return KErrServerBusy; + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::MoveL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::MoveL( + CIptvMyVideosGlobalFileId& aSourceFileId, + CIptvMyVideosGlobalFolderId& aTargetFolderId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::MoveL(file)"); + + TInt error = KErrServerBusy; + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosMoveFileReq, + aSourceFileId, + aTargetFolderId ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::MoveReqL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::MoveReqL(CIptvMyVideosGlobalFolderId& aSourceFolderId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::MoveReqL(folder)"); + + if (iCopyOrMoveObserver && (! iCopyOrMoveObserver->IsActive())) + { + iCopyOrMoveObserver->SetActiveL(EIptvEngineMyVideosMoveFolderRequestReq, aSourceFolderId, aTargetFolderId); + return KErrNone; + } + else + { + return KErrServerBusy; + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::MoveL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::MoveL( + CIptvMyVideosGlobalFolderId& aSourceFolderId, + CIptvMyVideosGlobalFolderId& aTargetFolderId, + TUint32& aFailed ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::MoveL(folder)"); + + TInt error = KErrServerBusy; + + if ( aSourceFolderId.iDrive == 0 && aSourceFolderId.iFolderId == 0 ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosMoveFolderSizeReq, + aSourceFolderId, + aTargetFolderId ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosMoveFolderDataReq ) ) ) + { + error = HandleMyVideosMoveFolderDataReqL( aFailed ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CancelCopyOrMoveL() +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CancelCopyOrMoveL() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CancelCopyOrMoveL()"); + + TInt error = KErrServerBusy; + + if (!IsActive()) + { + TRequestStatus status; + iSession.SendRequest(EIptvEngineMyVideosCancelCopyOrMoveReq, status); + User::WaitForRequest(status); + + error = status.Int(); + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::RenameDatabaseFolderL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::RenameDatabaseFolderL( + CIptvMyVideosGlobalFolderId& aFolderId, + TDesC& aName ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::RenameDatabaseFolderL"); + + TInt error = KErrServerBusy; + + if ( ( aFolderId.iDrive == 0 && aFolderId.iFolderId == 0 ) || + ( aName.Length() == 0 ) || + ( aName.Length() > KIptvMyVideosFolderNameMaxLength ) ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosRenameDatabaseFolderReq, + aFolderId, + aName ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::NewDatabaseFolderL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::NewDatabaseFolderL( + CIptvMyVideosGlobalFolderId& aParentFolderId, + TDesC& aName, + CIptvMyVideosGlobalFolderId& aNewFolderId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::NewDatabaseFolderL"); + + TInt error = KErrServerBusy; + + if ( ( aName.Length() == 0 ) || ( aName.Length() > KIptvMyVideosFolderNameMaxLength ) ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosNewDatabaseFolderSizeReq, + aParentFolderId, + aName ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( + EIptvEngineMyVideosNewDatabaseFolderDataReq ) ) ) + { + error = HandleMyVideosNewDatabaseFolderDataReqL( aNewFolderId ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::CreateVideoL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::CreateVideoL( + CIptvMyVideosVideoFullDetails& aFullDetails, + TVideoType aVideoType, + TUint32 aSizeEstimateInKiloBytes ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::CreateVideoL"); + + TInt error = KErrServerBusy; + + if ( aSizeEstimateInKiloBytes > KIptvMaxFileSizeInKiloBytes || + HasInvalidFileNameChars( aFullDetails.VideoPath() ) ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosCreateVideoSizeReq, + aFullDetails, + (TUint32) aVideoType, + aSizeEstimateInKiloBytes ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosCreateVideoDataReq ) ) ) + { + error = HandleMyVideosGetVideoDetailsDataReqL( aFullDetails ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::EnsureFreeSpaceL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::EnsureFreeSpaceL( + CIptvMyVideosGlobalFileId& aFileId, + TUint32 aRequiredSpaceInKiloBytes ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::EnsureFreeSpaceL (single drive)"); + + TInt error = KErrServerBusy; + + if ( ( aFileId.iDrive == 0 && aFileId.iFileId == 0 ) || + ( aRequiredSpaceInKiloBytes > KIptvMaxFileSizeInKiloBytes ) ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosEnsureFreeSpaceReq, + aFileId, + aRequiredSpaceInKiloBytes ) ) ) + { + error = HandleMyVideosReqL(); // No return data. + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::EnsureFreeSpaceL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::EnsureFreeSpaceL( + CIptvMyVideosGlobalFileId& aCurrentFileId, + TUint32 aRequiredSpaceInKiloBytes, + CIptvMyVideosGlobalFileId& aNewFileId ) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::EnsureFreeSpaceL (multi drive)"); + + TInt error = KErrServerBusy; + + if ( ( aCurrentFileId.iDrive == 0 && aCurrentFileId.iFileId == 0 ) || + ( aRequiredSpaceInKiloBytes > KIptvMaxFileSizeInKiloBytes ) ) + { + return KErrArgument; + } + + if ( ! IsActive() ) + { + if ( KErrNone == + ( error = SendRequestL( EIptvEngineMyVideosEnsureFreeSpaceSizeReq, + aCurrentFileId, + aRequiredSpaceInKiloBytes ) ) ) + { + if ( KErrNone == + ( error = HandleMyVideosSizeReqL( EIptvEngineMyVideosEnsureFreeSpaceDataReq ) ) ) + { + error = HandleMyVideosEnsureFreeSpaceDataReqL( aNewFileId ); + } + } + } + + return error; + } + +// ----------------------------------------------------------------------------- +// Count total video length and total file size (sum of all videos). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::GetTotalVideoLengthL( + TIptvPlayTime& /*aTotalPlayTime*/, + TIptvFileSize& /*aTotalFileSize*/ ) + { + // Not implemented here. + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// Deletes all videos which are under downloading. +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvMyVideosClient::DeleteAllDownloadsL() + { + // Not implemented here. + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::RunL +// ----------------------------------------------------------------------------- +// +void CIptvMyVideosClient::RunL() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::RunL"); + + // Note: Always delete the message first. If user makes another + // request from DeleteResponse below, we don't want to delete that. + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + if ( iActiveRequest == EIptvEngineMyVideosDeleteFolderRequestReq || + iActiveRequest == EIptvEngineMyVideosDeleteVideoRequestReq ) + { + iClientObserver.DeleteResponse(iStatus.Int()); + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::DoCancel +// ----------------------------------------------------------------------------- +// +void CIptvMyVideosClient::DoCancel() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::DoCancel"); + + iActiveRequest = KErrNone; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::RunError +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::RunError(TInt /*aError*/) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::RunError"); + + iActiveRequest = KErrNone; + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFileId& aFileIdParam) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = aFileIdParam.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFileIdParam.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFileId& aSourceFileId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = aSourceFileId.CountExternalizeSize(); + dataSize += aTargetFolderId.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aSourceFileId.ExternalizeL(stream); + aTargetFolderId.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFolderId& aFolderIdParam) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = aFolderIdParam.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFolderIdParam.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFolderId& aFolderId, const TDesC& aName) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + TUint32 length = aName.Length(); + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = (aFolderId.CountExternalizeSize() + KTUint16SizeInBytes + (length * 2)); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFolderId.ExternalizeL(stream); + CIptvUtil::WriteDesToStreamL(aName, stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFolderId& aSourceFolderId, CIptvMyVideosGlobalFolderId& aTargetFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = aSourceFolderId.CountExternalizeSize(); + dataSize += aTargetFolderId.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aSourceFolderId.ExternalizeL(stream); + aTargetFolderId.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFolderId& aFolderIdParam, TUint32 aUintParam1, TUint32 aUintParam2) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = (aFolderIdParam.CountExternalizeSize() + KTUint32SizeInBytes + KTUint32SizeInBytes); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFolderIdParam.ExternalizeL(stream); + stream.WriteUint32L(aUintParam1); + stream.WriteUint32L(aUintParam2); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosVideoFullDetails& aVideoFullDetails) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = aVideoFullDetails.CountExternalizeSize(); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aVideoFullDetails.ExternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosVideoFullDetails& aVideoFullDetails, TUint32 aUintParam1, TUint32 aUintParam2) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = (aVideoFullDetails.CountExternalizeSize() + KTUint32SizeInBytes + KTUint32SizeInBytes); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aVideoFullDetails.ExternalizeL(stream); + stream.WriteUint32L(aUintParam1); + stream.WriteUint32L(aUintParam2); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::SendRequestL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::SendRequestL(TInt aMessage, CIptvMyVideosGlobalFileId& aFileIdParam, TUint32 aUintParam) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::SendRequestL"); + + TRequestStatus status; + TUint32 dataSize = 0; + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + } + + dataSize = (aFileIdParam.CountExternalizeSize() + KTUint32SizeInBytes); + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + RDesWriteStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFileIdParam.ExternalizeL(stream); + stream.WriteUint32L(aUintParam); + CleanupStack::PopAndDestroy( &stream ); + + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosSizeReqL +// Generic method for handling received size reply and starting data request. +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosSizeReqL(TInt aMessage) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosSizeReqL"); + + if (iMsg) + { + RDesReadStream stream; + CleanupClosePushL( stream ); + stream.Open(iMsgPtr); + TUint32 dataSize = stream.ReadUint32L(); + CleanupStack::PopAndDestroy( &stream ); + + delete iMsg; + iMsg = NULL; + + iMsg = HBufC8::NewL(dataSize); + iMsgPtr.Set(iMsg->Des()); + + TRequestStatus status; + iSession.SendRequest(aMessage, iMsgPtr, status); + User::WaitForRequest(status); + + return status.Int(); + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosReqL +// Generic method for finishing request with no response data. +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosReqL() + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosReqL"); + + if (iMsg) + { + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosGetFolderListDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosGetFolderListDataReqL(TUint32& aTotalAmount, RPointerArray& aFolderList) + { + IPTVLOGSTRING_LOW_LEVEL("CIptvMyVideosClient::HandleMyVideosGetFolderListDataReqL"); + + TUint32 count = 0; + CIptvMyVideosFolder* folder = NULL; + + if (iMsg) + { + RDesReadStream stream; + CleanupClosePushL( stream ); + stream.Open(iMsgPtr); + aTotalAmount = stream.ReadUint32L(); + count = stream.ReadUint32L(); + for (TUint32 i = 0; i < count; i++) + { + folder = CIptvMyVideosFolder::NewLC(); + folder->InternalizeL(stream); + aFolderList.AppendL(folder); + CleanupStack::Pop(folder); + } + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosGetParentFolderDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosGetParentFolderDataReqL(CIptvMyVideosGlobalFolderId& aParentFolder) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosGetParentFolderDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + CleanupClosePushL( stream ); + stream.Open(iMsgPtr); + aParentFolder.InternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosGetFolderNameDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosGetFolderNameDataReqL(TDes& aName) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosGetFolderNameDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + CIptvUtil::ReadDesFromStreamL(aName, stream); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosGetVideoListDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosGetVideoListDataReqL(TUint32& aTotalAmount, RPointerArray& aVideoList) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosGetVideoListDataReqL"); + + if (iMsg) + { + TUint32 count = 0; + CIptvMyVideosVideoBriefDetails* details = NULL; + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aTotalAmount = stream.ReadUint32L(); + count = stream.ReadUint32L(); + for (TUint32 i = 0; i < count; i++) + { + details = CIptvMyVideosVideoBriefDetails::NewLC(); + details->InternalizeL(stream); + aVideoList.AppendL(details); + CleanupStack::Pop(details); + } + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosGetVideoDetailsDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosGetVideoDetailsDataReqL(CIptvMyVideosVideoFullDetails& aFullDetails) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosGetVideoDetailsDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFullDetails.InternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosCopyFolderDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosCopyFolderDataReqL(TUint32& aFailed) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosCopyFolderDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFailed = stream.ReadUint32L(); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosMoveFolderDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosMoveFolderDataReqL(TUint32& aFailed) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosMoveFolderDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aFailed = stream.ReadUint32L(); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosNewDatabaseFolderDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosNewDatabaseFolderDataReqL(CIptvMyVideosGlobalFolderId& aNewFolderId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosNewDatabaseFolderDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aNewFolderId.InternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HandleMyVideosEnsureFreeSpaceDataReqL +// ----------------------------------------------------------------------------- +// +TInt CIptvMyVideosClient::HandleMyVideosEnsureFreeSpaceDataReqL(CIptvMyVideosGlobalFileId& aNewFileId) + { + IPTVLOGSTRING_LOW_LEVEL("My Videos Mgr ## CIptvMyVideosClient::HandleMyVideosEnsureFreeSpaceDataReqL"); + + if (iMsg) + { + RDesReadStream stream; + stream.Open(iMsgPtr); + CleanupClosePushL( stream ); + aNewFileId.InternalizeL(stream); + CleanupStack::PopAndDestroy( &stream ); + delete iMsg; + iMsg = NULL; + + return KErrNone; + } + + return KErrGeneral; + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosClient::HasInvalidFileNameChars +// ----------------------------------------------------------------------------- +// +TBool CIptvMyVideosClient::HasInvalidFileNameChars(const TDesC& aString) + { + const TDesC& charString = KIptvInvalidFileNameChars; + + for (TInt strIndex = 0; strIndex < aString.Length(); strIndex++) + { + for (TInt charIndex = 0; charIndex < charString.Length(); charIndex++) + { + if (aString[strIndex] == charString[charIndex]) + { + return ETrue; + } + } + } + + return EFalse; + }