diff -r dec420019252 -r 4f111d64a341 videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfiledetailswidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/controlsrc/mpxvideoplaybackfiledetailswidget.cpp Thu Apr 01 22:38:49 2010 +0300 @@ -0,0 +1,419 @@ +/* +* 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 "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 QMPXVideoPlaybackFileDetailsWidget +* +*/ + +// Version : %version: 13 % + + + +#include +#include +#include +#include + +#include +#include +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackdocumentloader.h" +#include "mpxvideoplaybackfiledetailswidget.h" +#include "mpxvideoplaybackdocumentloader.h" +#include "mpxvideoplaybackcontrolscontroller.h" + +const float KILOBYTE = 1024 ; +const QString KDATETIMEFORMAT = "d/M/yyyy hh:mm:ss ap"; + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget( + QMPXVideoPlaybackControlsController* controller ) + : mController( controller ) + , mListWidget( 0 ) + , mFileDetailsUpdated( false ) +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFileDetailsWidget::QMPXVideoPlaybackFileDetailsWidget()")); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::~QMPXVideoPlaybackFileDetailsWidget +// ------------------------------------------------------------------------------------------------- +// +QMPXVideoPlaybackFileDetailsWidget::~QMPXVideoPlaybackFileDetailsWidget() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFileDetailsWidget::~QMPXVideoPlaybackFileDetailsWidget()")); + + HbStyleLoader::unregisterFilePath( ":/hbvideoplaybackview/hblistwidget.css" ); + + if ( mListWidget ) + { + delete mListWidget; + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::initialize +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::initialize() +{ + MPX_ENTER_EXIT(_L("QMPXVideoPlaybackFileDetailsWidget::initialize")); + + updateWithFileDetails( mController->fileDetails() ); +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::updateControlsWithFileDetails +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::updateWithFileDetails( + QMPXVideoPlaybackViewFileDetails* details ) +{ + QMPXVideoPlaybackDocumentLoader *loader = mController->layoutLoader(); + + if ( loader ) + { + // + // load fileDetails widget + // + QGraphicsWidget *widget = loader->findWidget( QString( "fileDetails" ) ); + + // + // cast fileDetails widget to HbListWidget + // + mListWidget = qobject_cast( widget ); + + if ( ! mFileDetailsUpdated ) + { + // + // load file details style sheet + // + bool ret = HbStyleLoader::registerFilePath( ":/hbvideoplaybackview/hblistwidget.css" ); + + mFileDetailsUpdated = true; + + QFileInfo fileInfo( details->mClipName ); + + // + // Title + // + makeTitleItem( details ); + + // + // Description + // + addItemToListWidget( "Description", details->mDescription ); + + // + // Duration + // + if ( details->mPlaybackMode != EMPXVideoLiveStreaming && details->mDuration > 0 ) + { + QString duration = QString("%1").arg( + valueToReadableFormat( (qreal)details->mDuration / (qreal)KPbMilliMultiplier ) ); + addItemToListWidget( "Duration", duration ); + } + + // + // Date + // + if ( details->mPlaybackMode == EMPXVideoLocal || + details->mPlaybackMode == EMPXVideoProgressiveDownload ) + { + // + // Date created + // + QString date = QString("%1").arg( fileInfo.created().toString( KDATETIMEFORMAT ) ); + addItemToListWidget( "Date", date ); + + // + // Date modified + // + QString modified = QString("%1").arg( fileInfo.lastModified().toString( KDATETIMEFORMAT ) ); + addItemToListWidget( "Modified", modified ); + } + + // + // Location + // + addItemToListWidget( "Location", details->mLocation ); + + // + // Author + // + addItemToListWidget( "Author", details->mArtist ); + + // + // Copyright + // + addItemToListWidget( "Copyright", details->mCopyright ); + + // + // Language + // + addItemToListWidget( "Language", details->mLanguage ); + + // + // Keywords + // + addItemToListWidget( "Keywords", details->mKeywords ); + + // + // Size + // + makeSizeItem( details ); + + // + // Resolution + // + if ( details->mVideoEnabled ) + { + QString resolution = QString("%1 x %2") + .arg( details->mVideoWidth ).arg( details->mVideoHeight ); + addItemToListWidget( "Resolution", resolution ); + } + + // + // Format + // + addItemToListWidget( "Format", details->mMimeType ); + + // + // Bitrate + // + makeBitRateItem( details ); + + // + // Folder + // + if ( details->mPlaybackMode == EMPXVideoLocal || + details->mPlaybackMode == EMPXVideoProgressiveDownload) + { + QString folder = fileInfo.dir().dirName(); + addItemToListWidget( "Collection", folder ); + } + + } + + // + // Set the rect size dynamically based on the view mode + // + QString sectionName; + + if ( mController->viewMode() == EDetailsView ) + { + sectionName = "detailsView"; + } + else if ( mController->viewMode() == EAudioOnlyView ) + { + if ( details->mPlaybackMode == EMPXVideoLocal ) + { + sectionName = "audioOnlyViewWithLocalPlayback"; + } + else + { + sectionName = "audioOnlyViewWithNonLocalPlayback"; + } + } + + bool ok = false; + loader->load( KMPXPLAYBACKVIEW_XML, sectionName, &ok ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::valueToReadableFormat +// ------------------------------------------------------------------------------------------------- +// +QString QMPXVideoPlaybackFileDetailsWidget::valueToReadableFormat( int value ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::valueToReadableFormat value = %d"), value); + + int hour = value / 3600; + value = value % 3600; + int minutes = value / 60; + value = value % 60; + int second = value; + + QTime time( hour ,minutes ,second ); + QString str; + + if ( hour > 0 ) + { + str = time.toString( QString::number( hour ) ).append(" hr "); + } + + if ( minutes > 0 ) + { + str.append( time.toString( QString::number( minutes ) ).append(" min ")); + } + + if ( second > 0 ) + { + str.append( time.toString( QString::number( second ) ).append(" sec ")); + } + + return str; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::makeTitleItem +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::makeTitleItem( QMPXVideoPlaybackViewFileDetails* details ) +{ + MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::makeTitleItem()")); + + // + // Title should be the first item in file details list + // + if ( mController->viewMode() == EAudioOnlyView ) + { + // + // show the title for audio-only view + // + if ( mListWidget->count() == 0 || ! mListWidget->item( 0 )->text().contains( "Title", Qt::CaseInsensitive ) ) + { + QString title = details->mTitle; + + if ( title.count() == 0 ) + { + // + // If title is not available, show clip name + // + QFileInfo fileInfo( details->mClipName ); + title = fileInfo.baseName (); + } + + // + // populate Title and its associated text + // + HbListWidgetItem* listWidgetItem = new HbListWidgetItem(); + listWidgetItem->setText( "Title" ); + listWidgetItem->setSecondaryText( title ); + mListWidget->insertItem( 0, listWidgetItem ); + } + } + else if ( mListWidget->count() && + mListWidget->item( 0 )->text().contains( "Title", Qt::CaseInsensitive ) ) + { + // + // title is displayed under the status pane for video clips, + // so hide the title for this details view + // + delete mListWidget->takeItem ( 0 ); + } + +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::makeSizeItem +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::makeSizeItem( QMPXVideoPlaybackViewFileDetails* details ) +{ + if ( details->mPlaybackMode == EMPXVideoLocal || + details->mPlaybackMode == EMPXVideoProgressiveDownload ) + { + QFileInfo fileInfo( details->mClipName ); + float size = fileInfo.size(); + + if ( size > 0.0 ) + { + QString scale(" KB"); + + if ( size > KILOBYTE ) + { + size /= KILOBYTE; + } + + if ( size > KILOBYTE ) + { + size /= KILOBYTE; + scale = QString(" MB"); + } + + if ( size > KILOBYTE ) + { + size /= KILOBYTE; + scale = QString(" GB"); + } + + int temp = size * 10; + size = (float)temp / 10; + + QString text = QString("%1").arg( size ); + text.append( scale ); + + addItemToListWidget( "Size", text ); + } + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::makeBitRateItem +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::makeBitRateItem( QMPXVideoPlaybackViewFileDetails* details ) +{ + if ( details->mBitRate > 0 ) + { + float bitrate = details->mBitRate; + + QString scale(" Kbps"); + + if ( bitrate > KILOBYTE ) + { + bitrate /= KILOBYTE; + } + + if ( bitrate > KILOBYTE ) + { + bitrate /= KILOBYTE; + scale = QString(" Mbps"); + } + + int temp = bitrate * 10; + bitrate = (float)temp / 10; + + QString text = QString("%1").arg( bitrate ); + text.append( scale ); + + addItemToListWidget( "Bitrate", text ); + } +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget +// ------------------------------------------------------------------------------------------------- +// +void QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget( QString item, QString text ) +{ + if ( text.count() > 0 ) + { + MPX_DEBUG(_L("QMPXVideoPlaybackFileDetailsWidget::addItemToListWidget( %s , %s )"), item.data(), text.data() ); + + HbListWidgetItem* listWidgetItem = new HbListWidgetItem(); + listWidgetItem->setText( item ); + listWidgetItem->setSecondaryText( text ); + + mListWidget->addItem( listWidgetItem ); + } +} + +//End of file