diff -r 839377eedc2b -r befca0ec475f videocollection/hgmyvideos/src/vcxhgmyvideosmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/hgmyvideos/src/vcxhgmyvideosmodel.cpp Wed Sep 01 12:30:28 2010 +0100 @@ -0,0 +1,381 @@ +/* +* Copyright (c) 2008 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: Common model class for component.* +*/ + + + + +// INCLUDE FILES +#include +#include +#include +#include "IptvDebug.h" +#include "vcxhgmyvideosmodel.h" +#include "vcxhgmyvideoscollectionclient.h" +#include "thumbnaildata.h" +#include "vcxhgmyvideoscenrepkeys.h" +#include "vcxhgmyvideosthumbnailmanager.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel::CVcxHgMyVideosModel() + : iAppState( EVcxMyVideosAppStateUnknown ), + iPreviousAppState( EVcxMyVideosAppStateUnknown ), + iSortOrder( EVcxMyVideosSortingNone ) + { + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::NewL() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel* CVcxHgMyVideosModel::NewL() + { + CVcxHgMyVideosModel* self = + CVcxHgMyVideosModel::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::NewLC() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel* CVcxHgMyVideosModel::NewLC() + { + CVcxHgMyVideosModel* self = + new (ELeave) CVcxHgMyVideosModel(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::ConstructL() +// ----------------------------------------------------------------------------- +// +void CVcxHgMyVideosModel::ConstructL() + { + iCollection = CVcxHgMyVideosCollectionClient::NewL(); + iTouchSupport = AknLayoutUtils::PenEnabled(); + iTnManager = CVcxHgMyVideosThumbnailManager::NewL(); + InitMyVideosCenRepL(); + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::~CVcxHgMyVideosModel() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel::~CVcxHgMyVideosModel() + { + if ( iFsSession.Handle() ) + { + iFsSession.Close(); + } + delete iDriveMonitor; + delete iCollection; + delete iCollectionCenRep; + delete iMyVideosCenRep; + delete iTnManager; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::TouchSupport() +// ----------------------------------------------------------------------------- +// +TBool CVcxHgMyVideosModel::TouchSupport() + { + return iTouchSupport; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::CollectionClient() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosCollectionClient& CVcxHgMyVideosModel::CollectionClient() + { + return *iCollection; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::FileServerSessionL() +// ----------------------------------------------------------------------------- +// +RFs& CVcxHgMyVideosModel::FileServerSessionL() + { + if ( ! iFsSession.Handle() ) + { + TInt err = iFsSession.Connect(); + if ( err == KErrNone ) + { + // For sending handles to thumbnailmanager + err = iFsSession.ShareProtected(); + } + if ( err != KErrNone ) + { + iFsSession.Close(); + User::Leave( err ); + } + } + + return iFsSession; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::DriveMonitorL() +// ----------------------------------------------------------------------------- +// +CIptvDriveMonitor& CVcxHgMyVideosModel::DriveMonitorL() + { + if ( ! iDriveMonitor ) + { + iDriveMonitor = CIptvDriveMonitor::NewL(); + iDriveMonitor->RegisterObserverL( this ); + } + + return *iDriveMonitor; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::SetAppState() +// ----------------------------------------------------------------------------- +// +void CVcxHgMyVideosModel::SetAppState( + CVcxHgMyVideosModel::TVcxMyVideosAppState aAppState ) + { + iPreviousAppState = iAppState; + iAppState = aAppState; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::AppState() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel::TVcxMyVideosAppState CVcxHgMyVideosModel::AppState() + { + return iAppState; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::PreviousAppState() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel::TVcxMyVideosAppState CVcxHgMyVideosModel::PreviousAppState() + { + return iPreviousAppState; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::SetVideolistSortOrderL() +// ----------------------------------------------------------------------------- +// +void CVcxHgMyVideosModel::SetVideolistSortOrderL( TVcxMyVideosSortingOrder aSortOrder ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + iCollectionCenRep->Set( KVcxMyVideosCollectionCenrepKeySortingOrder, + static_cast( aSortOrder ) ); + + iSortOrder = aSortOrder; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetLastWatchedIdL() +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetLastWatchedIdL( TInt& aId ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + return iCollectionCenRep->Get( KVcxMyVideosCollectionCenrepKeyLastWatchedMpxId, aId ); + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetLastWatchedNameL +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetLastWatchedNameL( TDes& aName ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + return iCollectionCenRep->Get( KVcxMyVideosCollectionCenrepKeyLastWatchedName, aName ); + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetLastWatchedPath +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetLastWatchedPathL( TDes& aPath ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + return iCollectionCenRep->Get( KVcxMyVideosCollectionCenrepKeyLastWatchedPath, aPath ); + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetLastWatchedPath +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetLastWatchedIndicatorL( TInt& aValue ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + return iCollectionCenRep->Get( KVcxMyVideosCollectionCenrepKeyLastWatchedIndicator, aValue ); + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::VideolistSortOrderL() +// ----------------------------------------------------------------------------- +// +TVcxMyVideosSortingOrder CVcxHgMyVideosModel::VideolistSortOrderL() + { + if ( iSortOrder == EVcxMyVideosSortingNone ) + { + if ( ! iCollectionCenRep ) + { + iCollectionCenRep = CRepository::NewL( TUid::Uid( KVcxMyVideosCollectionCenrepUid ) ); + } + + TInt value( KErrNotFound ); + + TInt error = iCollectionCenRep->Get( KVcxMyVideosCollectionCenrepKeySortingOrder, value ); + iSortOrder = static_cast( value ); + + if ( ( error != KErrNone ) || + ( ( iSortOrder != EVcxMyVideosSortingCreationDate ) && + ( iSortOrder != EVcxMyVideosSortingName ) && + ( iSortOrder != EVcxMyVideosSortingSize ) ) ) + { + iSortOrder = EVcxMyVideosSortingCreationDate; + } + } + return iSortOrder; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetScreenResolution() +// +// Landscape Portrait +// QVGA 320x240 or 240x320 +// QHD 640x360 or 360x640 +// VGA 640x480 or 480x640 +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosModel::TVcxScreenResolution CVcxHgMyVideosModel::GetScreenResolution( + CCoeEnv* aCoeEnv ) + { + TVcxScreenResolution resolution( EVcxScreenResolutionUnknown ); + TSize screenSize = aCoeEnv->ScreenDevice()->SizeInPixels(); + TBool landscape = screenSize.iWidth > screenSize.iHeight; + + if ( ( landscape && screenSize.iHeight <= 240 ) || + ( ! landscape && screenSize.iWidth <= 240 ) ) + { + resolution = EVcxScreenResolutionQVGA; + } + else if ( ( landscape && screenSize.iHeight <= 360 ) || + ( ! landscape && screenSize.iWidth <= 360 ) ) + { + resolution = EVcxScreenResolutionQHD; + } + else if ( ( landscape && screenSize.iHeight <= 480 ) || + ( ! landscape && screenSize.iWidth <= 480 ) ) + { + resolution = EVcxScreenResolutionVGA; + } + + return resolution; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::ThumbnailManager() +// ----------------------------------------------------------------------------- +// +CVcxHgMyVideosThumbnailManager& CVcxHgMyVideosModel::ThumbnailManager() const + { + return *iTnManager; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::HandleDriveMonitorEvent() +// ----------------------------------------------------------------------------- +// +void CVcxHgMyVideosModel::HandleDriveMonitorEvent( TIptvDriveMonitorEvent& /*aEvent*/ ) + { + // We are not interested about the event, we are observing just to keep + // iDriveMonitor.iAvailableDrives up to date. + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetMyVideosCustomizationIntL() +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetMyVideosCustomizationInt( const TInt& aKey, + TInt& aValue ) + { + if ( iMyVideosCenRep ) + { + return iMyVideosCenRep->Get( aKey, aValue ); + } + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::GetMyVideosCustomizationString() +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::GetMyVideosCustomizationString( const TInt& aKey, + TDes& aValue ) + { + if ( iMyVideosCenRep ) + { + return iMyVideosCenRep->Get( aKey, aValue ); + } + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CVcxHgMyVideosModel::InitMyVideosCenRepL() +// ----------------------------------------------------------------------------- +// +TInt CVcxHgMyVideosModel::InitMyVideosCenRepL() + { + TInt retVal = KErrNone; + if ( !iMyVideosCenRep ) + { + TRAPD( error, iMyVideosCenRep = CRepository::NewL( KMyVideosMainViewCenRepUid ) ); + retVal = error; + } + return retVal; + }