diff -r 000000000000 -r 96612d01cf9f filedetails/filedetailsplugin/src/filedetailsplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filedetails/filedetailsplugin/src/filedetailsplugin.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2009 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: Implementation of file details plugin* +*/ +#include +#include +#include "filedetailsplugin.h" +#include +#include +#include +#include +#include + +const TInt KThousandNotKilobyte = 1000; + +// ----------------------------------------------------------------------------- +// CFileDetailsPlugin::NewL +// +// ----------------------------------------------------------------------------- +// +CFileDetailsPlugin* CFileDetailsPlugin::NewL() + { + CFileDetailsPlugin* self = + new (ELeave) CFileDetailsPlugin(); + + return self; + } + +// ----------------------------------------------------------------------------- +// CFileDetailsPlugin::CFileDetailsPlugin +// +// ----------------------------------------------------------------------------- +// +CFileDetailsPlugin::CFileDetailsPlugin() + { + } + +// ----------------------------------------------------------------------------- +// CFileDetailsPlugin::~CFileDetailsPlugin +// +// ----------------------------------------------------------------------------- +// +CFileDetailsPlugin::~CFileDetailsPlugin() + { + } + +// ----------------------------------------------------------------------------- +// CFileDetailsPlugin::~CFileDetailsPlugin +// +// ----------------------------------------------------------------------------- +// +void CFileDetailsPlugin::ShowFileDetails( const CMPXMedia& aMedia ) + { + CMPFileDetailsDialog* detailsDialog = CMPFileDetailsDialog::NewL(); + CMPFileDetails* details = new (ELeave) CMPFileDetails(); + + //File path + if ( aMedia.IsSupported( KMPXMediaGeneralUri ) ) + { + details->iFilePath = aMedia.ValueText( KMPXMediaGeneralUri ).AllocLC(); + } + + //Name + if ( aMedia.IsSupported( KMPXMediaGeneralTitle ) ) + { + details->iTitle = aMedia.ValueText( KMPXMediaGeneralTitle ).AllocLC(); + } + else if ( details->iFilePath ) + { + details->iTitle = details->iFilePath->AllocLC(); + } + + //Duration + if ( aMedia.IsSupported( KVcxMediaMyVideosDuration ) ) + { + TReal32 length = *(aMedia.Value( KVcxMediaMyVideosDuration )); + if ( length > 0 ) + { + details->iDurationInSeconds = static_cast( length ); + } + } + + //File size + if ( aMedia.IsSupported( KMPXMediaGeneralExtSizeInt64 ) ) + { + details->iSize = *(aMedia.Value( KMPXMediaGeneralExtSizeInt64 )); + } + + //Copyright + if ( aMedia.IsSupported( KMPXMediaGeneralCopyright ) ) + { + details->iCopyright = aMedia.ValueText( KMPXMediaGeneralCopyright ).AllocLC(); + } + + //MIME + if ( aMedia.IsSupported( KMPXMediaGeneralMimeType ) ) + { + details->iFormat = aMedia.ValueText( KMPXMediaGeneralMimeType ).AllocLC(); + } + + // File creation date + if ( aMedia.IsSupported( KMPXMediaGeneralDate ) ) + { + details->iTime = *aMedia.Value( KMPXMediaGeneralDate ) ; + } + + // Bit rate + if ( aMedia.IsSupported( KMPXMediaVideoBitRate ) ) + { + // Multiplied by 1k as the value provided by MDS is kbps and file + // details dialog assumes it get bps + details->iBitrate = *aMedia.Value( KMPXMediaVideoBitRate ) * KThousandNotKilobyte ; + } + + // Height + if ( aMedia.IsSupported( KMPXMediaVideoHeight ) ) + { + details->iResolutionHeight = *aMedia.Value( KMPXMediaVideoHeight ); + } + + // Width + if ( aMedia.IsSupported( KMPXMediaVideoWidth ) ) + { + details->iResolutionWidth = *aMedia.Value( KMPXMediaVideoWidth ); + } + + //Artist + if ( aMedia.IsSupported( KMPXMediaVideoArtist ) ) + { + details->iArtist = aMedia.ValueText( KMPXMediaVideoArtist ).AllocLC(); + } + + detailsDialog->ExecuteLD( details ); + + // cleanup + if( details->iFormat ) + { + CleanupStack::PopAndDestroy( details->iFormat ); + details->iFormat = NULL; + } + if( details->iCopyright ) + { + CleanupStack::PopAndDestroy( details->iCopyright ); + details->iCopyright = NULL; + } + if( details->iTitle ) + { + CleanupStack::PopAndDestroy( details->iTitle ); + details->iTitle = NULL; + } + if( details->iFilePath ) + { + CleanupStack::PopAndDestroy( details->iFilePath ); + details->iFilePath = NULL; + } + + delete details; + }