CTC++ Coverage Report - Execution Profile    #1/17

Directory Summary | Files Summary | Functions Summary | Execution Profile
To files: First | Previous | Next | Last | Index | No Index


File: Z:\musicplayer\mpviewplugins\mpdetailsviewplugin\src\mpdetailsview.cpp
Instrumentation mode: function-decision
TER: 17 % ( 18/109)

Start/ End/    
True False - Line Source

  1 /*
  2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
  3 * All rights reserved.
  4 * This component and the accompanying materials are made available 
  5 * under the terms of "Eclipse Public License v1.0"
  6 * which accompanies this distribution, and is available
  7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
  8 *
  9 * Initial Contributors:
  10 * Nokia Corporation - initial contribution.
  11 *
  12 * Contributors:
  13 *
  14 * Description: Music Player details view.
  15 *
  16 */
  17 #include <qwebsettings>
  18 #include <QGraphicsWidget>
  19 #include <QGraphicsLayoutItem>
  20 #include <QUrl>
  21 #include <QSslError>
  22 #include <QDomElement>
  23 #include <QList>
  24 #include <QFile>
  25 #include <QTranslator>
  26 #include <QLocale>
  27 #include <QGraphicsLinearLayout>
  28 #include <QSizeF>
  29 
  30 #include <thumbnailmanager_qt.h>
  31 #include <thumbnaildata.h>
  32 #include <thumbnailobjectsource.h>
  33 
  34 #include <hbinstance.h>
  35 #include <hbmainwindow.h>
  36 #include <hbaction.h>
  37 #include <hblabel.h>
  38 #include <hbgroupbox.h>
  39 #include <hbdocumentloader.h>
  40 #include <hbwidget.h>
  41 #include <hbpushbutton.h>
  42 #include <hbpopup.h>
  43 #include <hbdialog.h>
  44 #include <hblistwidget.h>
  45 #include <hblistwidgetitem.h>
  46 #include <hblistviewitem.h>
  47 #include <hbprogressbar>
  48 
  49 #include "mpdetailsview.h"
  50 #include "mpenginefactory.h"
  51 #include "mpcommondefs.h"
  52 #include "mpsongdata.h"
  53 #include "mpsettingsmanager.h"
  54 #include "mpdetailssharedialog.h"
  55 #include "mpquerymanager.h"
  56 #include "mptrace.h"
  57 #include "logger.h"
  58 #define SHARE_FUNC_ENABLE
  59 
  60 const int KUndefined = -1;
  61 const int KRecommendationNum = 2;
  62 
  63 /*!
  64  Constructor
  65  */
Top
  66 MpDetailsView::MpDetailsView()
  67     : mMpEngine( 0 ),
  68       mSongData( 0 ),
  69       mActivated( false ),
  70       mWindow( 0 ),
  71       mSoftKeyBack( 0 ),
  72       mSongText( NULL ),
  73       mAlbumText( NULL ),
  74       mArtistText( NULL ),
  75       mAlbumArt( NULL ),
  76       mDocumentLoader( NULL ),
  77       mDownloadedAlbumArts( 0 ),
  78       mMpTranslator( 0 ),
  79       mCommonTranslator( 0 ), 
  80       mSharePopup( 0 ),
  81       mMpQueryManager( 0),
  82       mInspireMeOpen(true),
  83       mSongDetailsGbOpen(false)
  84 {
  85     TX_ENTRY
  86     bool widgetsOk = false;
  87     HbMainWindow *mainWindow = hbInstance->allMainWindows()[0];
  88     mDocumentLoader = new HbDocumentLoader();
  89     
  90     TX_LOG_ARGS("Document loader created")
- 91     if(!mDocumentLoader) {
  92         TX_LOG_ARGS( "MpDetailsView() Error: HbDocumentLoader not constructed" );
 - 93         return;    
  94     }
  95 
  96     TX_LOG_ARGS("Loading :/mpdetailsviewdocml/mpdetailsview.docml")
  97     mDocumentLoader->load( QString(":/mpdetailsviewdocml/mpdetailsview.docml"), &widgetsOk );
- 98     if(!widgetsOk) {
  99         TX_LOG_ARGS( "MpDetailsView() Error: invalid mpdetailsview.docml" );
 - 100         return;    
  101     }
  102     
  103     TX_LOG_ARGS("Loaded :/mpdetailsviewdocml/mpdetailsview.docml")
  104     QGraphicsWidget *widget = 0; 
  105         
  106     widget = mDocumentLoader->findWidget( QString("content") );
    107     TRACE2("MpDetailsView() mDocumentLoader->findWidget for <content>:%x", widget);
    107 while ( 0 )
  108     mContainer = qobject_cast<HbWidget *>(widget);
    109     TRACE2("MpDetailsView() <content> widget found mContainer:%x", mContainer);
    109 while ( 0 )
  110     setWidget( mContainer );
  111         
  112     widget = mDocumentLoader->findWidget( QString("shareButton") );
  113     mShareButton = qobject_cast<HbPushButton *>(widget);
    114     TRACE2("MpDetailsView() <shareButton> widget found mShareButton:%x", mShareButton);     
    114 while ( 0 )
  115         
  116     widget = mDocumentLoader->findWidget( QString("trackTitle") );
  117     mSongText = qobject_cast<HbLabel *>(widget);
    118     TRACE2("MpDetailsView() <trackTitle> widget found mSongText:%x", mSongText);     
    118 while ( 0 )
  119     
  120     widget = mDocumentLoader->findWidget( QString("artist") );
  121     mArtistText = qobject_cast<HbLabel *>(widget);
    122     TRACE2("MpDetailsView() <artist> widget found mArtistText:%x", mArtistText);     
    122 while ( 0 )
  123     
  124     widget = mDocumentLoader->findWidget( QString("albumName") );
  125     mAlbumText = qobject_cast<HbLabel *>(widget);
    126     TRACE2("MpDetailsView() <albumName> widget found mAlbumText:%x", mAlbumText);     
    126 while ( 0 )
  127 
  128     widget = mDocumentLoader->findWidget( QString("albumArt") );
  129     mAlbumArt = qobject_cast<HbLabel *>(widget);
    130     TRACE2("MpDetailsView() <albumArt> widget found mAlbumArt:%x", mAlbumArt);                     
    130 while ( 0 )
  131     
  132     widget = mDocumentLoader->findWidget( QString("songDetails") );
  133     mSongDetailsGroupBox = qobject_cast<HbGroupBox *>(widget);
    134     TRACE2("MpDetailsView() <songDetails> widget found mSongDetailsGroupBox:%x", mSongDetailsGroupBox);
    134 while ( 0 )
  135      
  136     widget = mDocumentLoader->findWidget( QString("songDetailsListWidget") );
  137     mDetailList = qobject_cast<HbListWidget *>(widget);
    138     TRACE2("MpDetailsView() <songDetailsListWidget> widget found mDetailList:%x", mDetailList);
    138 while ( 0 )
  139              
  140     widget = mDocumentLoader->findWidget( QString("inspireMeGroupBox") );
  141     mInspireMeGroupBox = qobject_cast<HbGroupBox *>(widget);
    142     TRACE2("MpDetailsView() <inspireMeGroupBox> widget found mInspireMeGroupBox:%x", mInspireMeGroupBox);
    142 while ( 0 )
  143 
  144     widget = mDocumentLoader->findWidget( QString("inspireListWidget") );
  145     mInspireList = qobject_cast<HbListWidget *>(widget);
    146     TRACE2("MpDetailsView() <inspireListWidget> widget found mInspireList:%x", mInspireList);
    146 while ( 0 )
  147         
  148     widget = mDocumentLoader->findWidget( QString("inspireMeProgressBar") );
  149     mInspireMeProgressBar = qobject_cast<HbProgressBar *>(widget);
    150     TRACE2("MpDetailsView() <inspireMeProgressBar> widget found mInspireMeProgressBar:%x", mInspireMeProgressBar);    
    150 while ( 0 )
  151    
  152     TX_EXIT
  153 }
  154 
  155 /*!
  156  Destructs the details view.
  157  */
Top
  158 MpDetailsView::~MpDetailsView()
  159 {
  160     TX_ENTRY    
- 161     if ( mSoftKeyBack ) {
  162         delete mSoftKeyBack;
  163     }
- 164     if ( mDocumentLoader ) {
  165         delete mDocumentLoader;
  166     }
- 167     if( mThumbnailManager ) {
  168         delete mThumbnailManager;
  169     }
  170     delete mMpTranslator;
  171     delete mCommonTranslator;
  172     delete mSharePopup;
  173     delete mMpQueryManager;
  174 
  175     TX_EXIT
  176 }
  177 
  178 /*!
  179  Initializes the details view. Allocates all resources needed by the view.
  180  */
Top
  181 void MpDetailsView::initializeView()
  182 {
  183     TX_ENTRY    
  184     
  185     //Load musicplayer and common translators
  186         QString lang = QLocale::system().name();
  187         QString path = QString( "z:/resource/qt/translations/" );
  188         bool translatorLoaded = false;
  189 
  190         mMpTranslator = new QTranslator( this );
  191         translatorLoaded = mMpTranslator->load( path + "musicplayer_" + lang );
  192         TX_LOG_ARGS( "Loading translator ok=" << translatorLoaded );
- 193         if ( translatorLoaded ) {
  194             qApp->installTranslator( mMpTranslator );
  195         }
  196 
  197         mCommonTranslator = new QTranslator( this );
  198         translatorLoaded = mCommonTranslator->load( path + "common_" + lang );
  199         TX_LOG_ARGS( "Loading common translator ok=" << translatorLoaded );
- 200         if ( translatorLoaded ) {
  201             qApp->installTranslator( mCommonTranslator );
  202         }
  203         
  204     // TODO: Hkn: Remove this once ELCE-844GBS is fixed    
  205     mInspireMeProgressBar->hide();
  206     
  207     mWindow = mainWindow();
  208     mSoftKeyBack = new HbAction( Hb::BackAction, this );    
  209     
  210     mMpEngine = MpEngineFactory::sharedEngine();
  211     mSongData = mMpEngine->songData();
  212     
  213     // TODO: Remove this once Orbit bug ELCE-843HFJ is fixed
  214     mInspireList->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
  215     
  216     
  217    
  218     
  219     mThumbnailManager = new ThumbnailManager( this );
  220     mThumbnailManager->setQualityPreference( ThumbnailManager::OptimizeForQuality );
  221     mThumbnailManager->setThumbnailSize( ThumbnailManager::ThumbnailSmall );
  222     QObject::connect( mThumbnailManager, SIGNAL( thumbnailReady( QPixmap , void * , int , int ) ),
  223             this, SLOT( thumbnailReady( QPixmap , void * , int , int  ) ) );
  224     // TODO: Use the album art in provided by 10.1 wk16 platform. Current one is in the binary        
  225     mDefaultRecommendationAlbumArt = QPixmap( ":/mpdetailsviewicons/qtg_large_music_album.svg" );
  226     
  227     // TODO: might need later
  228     setupMenu();
  229     mMpQueryManager = new MpQueryManager(); 
  230       
  231     connect( mSoftKeyBack, SIGNAL( triggered() ), this, SLOT( back() ) );
  232     connect( mSongData, SIGNAL( albumArtReady() ), this, SLOT( albumArtChanged() ) ); 
  233     connect( mSongData, SIGNAL( playbackInfoChanged() ), this, SLOT( handlePlaybackInfoChanged() ) );
  234     connect( mSongData, SIGNAL( songDetailInfoChanged() ), this, SLOT( songDetailInfoChanged() ) ); 
  235     connect( mSongDetailsGroupBox, SIGNAL( toggled( bool ) ), this, SLOT( handleDetailsGroupBoxToggled( bool ) ) );
  236     connect( mInspireMeGroupBox, SIGNAL( toggled( bool ) ), this, SLOT( handleInspireMeGroupBoxToggled( bool ) ) );
  237     connect( mMpQueryManager, SIGNAL(onlineStatusChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
  238     connect( mMpQueryManager, SIGNAL(setAlbumArt(const QString &, const QString &) ), this ,SLOT(setAlbumArtUri(const QString &, const QString & )));
  239 #ifdef SHARE_FUNC_ENABLED    
  240     connect( mShareButton, SIGNAL( clicked() ), this, SLOT( share() ) );
  241        
  242     // Preload the share popup
  243     mSharePopup = new MpDetailsShareDialog( mSongData );
  244 #endif
  245     TX_EXIT
  246 }
  247 
  248 /*!
  249  Activates the details view.
  250  */
Top
  251 void MpDetailsView::activateView()
  252 {
  253     TX_ENTRY    
  254     setNavigationAction( mSoftKeyBack );
  255     mMpEngine->retrieveSong();
  256         
  257     mActivated = true;
  258     mInspireMeOpen = MpSettingsManager::inspireMe();
  259     mSongDetailsGbOpen = MpSettingsManager::songDetailsGb();
  260     TX_LOG_ARGS( "InspireMeVal: " << mInspireMeOpen );
  261     TX_LOG_ARGS( "SongDetailsGbVal: " << mSongDetailsGbOpen );
  262     mInspireMeGroupBox->setCollapsed(!mInspireMeOpen);
  263     mSongDetailsGroupBox->setCollapsed(!mSongDetailsGbOpen);
  264     TX_EXIT
  265 }
  266 
  267 /*!
  268  Deactivates the details view.
  269  */
Top
  270 void MpDetailsView::deactivateView()
  271 {
  272     TX_ENTRY    
  273     setNavigationAction( 0 );
  274     mActivated = false;    
  275     TX_EXIT
  276 }
  277 
  278 /*!
  279  Setup the menu.
  280  */
Top
  281 void MpDetailsView::setupMenu()
  282 {
  283     TX_ENTRY
  284 
  285     TX_EXIT
  286 }
  287 
  288 /*!
  289  Slot to handle back command from softkey.
  290  */
Top
  291 void MpDetailsView::back()
  292 {
  293     TX_ENTRY  
- 294     if (mInspireMeGroupBox->isCollapsed() ) {
  295       MpSettingsManager::setInspireMe(false);
    296       } else {
  297       MpSettingsManager::setInspireMe(true);
  298       }
  299       
- 300     if (mSongDetailsGroupBox->isCollapsed() ) {
  301       MpSettingsManager::setSongDetailsGb(false);
    302       } else {
  303       MpSettingsManager::setSongDetailsGb(true);
  304       }
  305         
  306     emit command( MpCommon::ActivatePlaybackView );
  307     TX_EXIT
  308 }
  309 
  310 /*!
  311  Slot to be called when share button is clicked
  312  */
Top
- 313 void MpDetailsView::share()
  314 {
  315     TX_ENTRY
  316     // TODO: Fix the layout issue in idex.html then enable this
- 317     if ( !mSharePopup )
  318     {
  319         mSharePopup = new MpDetailsShareDialog( mSongData );
  320     }
- 321     if ( mSharePopup )
  322     {
  323         mSharePopup->show();
  324     }
- 325     if (canQuerySharePlayerLink() ) {
  326     mMpQueryManager->queryLocalMusicStore(mSongData->artist(),mSongData->album(),mSongData->title() );
  327        }
  328     TX_EXIT    
  329 }
  330 
  331 /*!
  332  Slot to handle Album art changed.
  333  */
Top
- 334 void MpDetailsView::albumArtChanged( )
  335 {    
  336     TX_ENTRY
  337     HbIcon icon;
  338     mSongData->albumArt( icon );
  339     mAlbumArt->setIcon( icon );
  340     TX_EXIT
  341 }
  342 
  343 /*!
  344  Slot to handle Connection changes.
  345  */
Top
- 346 void MpDetailsView::onlineStateChanged(bool state)
  347     {
  348     TX_ENTRY
  349     mOnline = state;
  350     TX_EXIT
  351     }
  352 
  353 /*!
  354  Sets recommendation album art
  355 */
Top
- 356 void MpDetailsView::setAlbumArtUri( const QString &albumArtUri, const QString &albumArtName )
  357 {
  358     TX_ENTRY_ARGS( "albumArtUri = " << albumArtUri )
  359     TX_LOG_ARGS( "albumArtName = " << albumArtName )
- 360     if ( !albumArtUri.isEmpty() ) {
  361         int id = mThumbnailManager->getThumbnail( albumArtName, reinterpret_cast<void *>( const_cast<QString *>( &albumArtUri ) ) );
- 362         if ( id == KUndefined ) {
  363             // Request failed. Set default album art.
  364         mMpQueryManager->insertMapItem( albumArtUri, mDefaultRecommendationAlbumArt );
  365             recommendationAlbumArtReady();
  366         }
  367     }
    368     else {
  369         // No album art uri. Set default album art.
  370         mMpQueryManager->insertMapItem( albumArtUri, mDefaultRecommendationAlbumArt );
  371         recommendationAlbumArtReady();
  372     }
  373     TX_EXIT
  374 }
  375 
  376 /*!
  377  Render inspireme groupbox after album arts downloaded
  378  */
Top
- 379 void MpDetailsView::RenderInspireMeGroupBox() 
  380 {
  381     TX_ENTRY
  382     
- 383     if( mMpQueryManager->recommendationAlbumArtsMap().count() ) {
  384         // we have recommendations
- 385         for ( int i = 0; i < KRecommendationNum; i++ ) {
  386             // configure the layout properties
- 387             if(!mInspireList->count()) {
  388                 // we havent configured the prototype before 
  389                 HbListViewItem *prototype = mInspireList->listItemPrototype();
  390                 prototype->setGraphicsSize( HbListViewItem::LargeIcon );
  391             }
  392             // create the item
  393             HbListWidgetItem  *inspireMeItem = new HbListWidgetItem();
  394             HbIcon icon( QIcon( mMpQueryManager->recommendationAlbumArtsMap().value(mMpQueryManager->recommendationAlbumArtsLink().at( i ) ) ) ); 
  395             inspireMeItem->setIcon( icon );
  396             inspireMeItem->setText( mMpQueryManager->recommendationSongs().at( i ) );
  397             inspireMeItem->setSecondaryText( mMpQueryManager->recommendationArtists().at( i ) );
  398             mInspireList->addItem( inspireMeItem );
  399         }
  400     }
    401     else {
  402         // we dont have recommendations
  403         // we havent configured the prototype before 
  404         HbListViewItem *prototype = mInspireList->listItemPrototype();
  405         const int maxTextRowCount = 20;
  406         const int minTextRowCount = 1;
  407         prototype->setSecondaryTextRowCount(minTextRowCount,maxTextRowCount);
  408         
  409         HbListWidgetItem  *inspireMeItem = new HbListWidgetItem();
  410         QString info(tr("There are no recommendations for this track, but you can always discover new music on Ovi"));
  411         inspireMeItem->setSecondaryText(info);
  412         mInspireList->addItem( inspireMeItem );
  413     }
  414     
  415     TX_EXIT
  416 }
  417 
Top
- 418 void MpDetailsView::recommendationAlbumArtReady()
  419 {   
  420     TX_ENTRY_ARGS( "mAlbumArtsReadyCount = " << mMpQueryManager->albumArtsReadyCount() )
  421         ( mMpQueryManager->albumArtsReadyCount() )++;
- 422     if ( mMpQueryManager->albumArtsReadyCount() == KRecommendationNum ) {
  423         mInspireMeProgressBar->hide();
  424         RenderInspireMeGroupBox();
  425     }
  426     TX_EXIT
  427 }
  428 
  429 
  430 
Top
- 431 bool MpDetailsView::canQueryRecommendations() const
  432 {
  433     bool result = (!(mAlbumText->isEmpty()) || !(mArtistText->isEmpty()) ) && !(mInspireMeGroupBox->isCollapsed());
  434     TX_LOG_ARGS(" result:" << result);
 - 435     return result;
  436 }
  437 
Top
- 438 bool MpDetailsView::canQuerySharePlayerLink() const
  439 {
  440   bool result = !(mSongText->isEmpty()) && !(mArtistText->isEmpty());
  441   TX_LOG_ARGS(" result:" << result);
 - 442   return result;
  443 }
  444 
  445 /*!
  446  Slot to handle basic song information
  447  */
Top
- 448 void MpDetailsView::handlePlaybackInfoChanged()
  449 {
  450     TX_ENTRY
  451 
  452     mMpQueryManager->clearNetworkReplies();
  453     clearInspireMe();   
  454     
- 455     if ( !mSongData->title().isEmpty () ) {
  456         mSongText->setPlainText( mSongData->title() );
    457     } else {
  458         mSongText->setPlainText( mSongData->fileName() );
  459     }
  460     
- 461     if ( !mSongData->album().isEmpty () ) {
  462         mAlbumText->setPlainText( mSongData->album() );
    463     } else {
  464         mAlbumText->setPlainText( tr( "Unknown ") );
  465     }
  466     
- 467     if ( !mSongData->artist().isEmpty() ) {
  468         mArtistText->setPlainText( mSongData->artist() );
    469     } else {
  470         mArtistText->setPlainText( tr( "Unknown ") );
  471     }
  472         
- 473     if (canQueryRecommendations()) {
  474         // start inspire me area progress bar
  475         // TODO: currently, till we get to this callback from MPX the bar not shown
  476         // TODO: check if inspireMe is ON, if not, dont show
  477         mInspireMeProgressBar->show();
- 478         if (canQuerySharePlayerLink() ) {
  479         mMpQueryManager->queryLocalMusicStore(mSongData->artist(),mSongData->album(),mSongData->title());
  480         }
  481         mMpQueryManager->queryInspireMeItems(mSongData->artist(),mSongData->album(),mSongData->title());
  482     }
    483     else {
  484         // metadata to query for inspire me items not available
  485         // show information note
- 486       if (!mInspireMeGroupBox->isCollapsed())
  487         RenderInspireMeGroupBox();
  488     }
  489     TX_EXIT    
  490 }
  491 
Top
- 492 void MpDetailsView::clearInspireMe()
  493 {
  494     TX_ENTRY    
  495     mInspireList->clear();
  496     mMpQueryManager->clearRecommendations(); 
  497     TX_EXIT    
  498 }
  499 /*!
  500  Slot to handle detail song information
  501  */
Top
- 502 void MpDetailsView::songDetailInfoChanged()
  503 {
  504     TX_ENTRY
  505     mDetailList->clear();
  506     
- 507     if ( !mSongData->albumTrack().isNull() ) {
  508         HbListWidgetItem *item = new HbListWidgetItem(); 
  509         item->setText( tr( "Song number" ) );
  510         item->setSecondaryText( mSongData->albumTrack() );
  511         item->setEnabled( false );
  512         mDetailList->addItem( item );
  513     }
  514     
- 515     if ( !mSongData->year().isNull() ) {
  516         HbListWidgetItem *item = new HbListWidgetItem();
  517         item->setText( tr( "Year" ) );
  518         item->setSecondaryText( mSongData->year() );
  519         item->setEnabled( false );
  520         mDetailList->addItem( item );
  521     }
  522     
- 523     if ( !mSongData->genre().isNull() ) {
  524         HbListWidgetItem *item = new HbListWidgetItem();
  525         item->setText( tr( "Genre" ) );
  526         item->setSecondaryText( mSongData->genre() );
  527         item->setEnabled( false );
  528         mDetailList->addItem( item );
  529     }
  530     
- 531     if ( !mSongData->composer().isNull() ) {
  532         HbListWidgetItem *item = new HbListWidgetItem();
  533         item->setText( tr( "Composer" ) );
  534         item->setSecondaryText( mSongData->composer() );
  535         item->setEnabled( false );
  536         mDetailList->addItem( item );
  537     }
  538 
- 539     if ( !mSongData->fileName().isNull() ) {
  540         HbListWidgetItem *item = new HbListWidgetItem();
  541         item->setText( tr( "File name" ) );
  542         item->setSecondaryText( mSongData->fileName() );
  543         item->setEnabled( false );
  544         mDetailList->addItem( item );
  545     }
  546     
- 547     if ( !mSongData->mimeType().isNull() ) {
  548         HbListWidgetItem *item = new HbListWidgetItem();
  549         item->setText( tr( "Format" ) );
  550         item->setSecondaryText( mSongData->mimeType() );
  551         item->setEnabled( false );
  552         mDetailList->addItem( item );
  553     }
  554 
- 555     if ( !mSongData->duration().isNull() ) {
  556         HbListWidgetItem *item = new HbListWidgetItem();
  557         item->setText( tr( "Duration" ) );
  558         item->setSecondaryText( mSongData->duration() );
  559         item->setEnabled( false );
  560         mDetailList->addItem( item );
  561     }
  562     
- 563     if ( !mSongData->bitRate().isNull() ) {
  564         HbListWidgetItem *item = new HbListWidgetItem();
  565         item->setText( tr( "Bitrate" ) );
  566         item->setSecondaryText( mSongData->bitRate().append( " Kbps" ) );
  567         item->setEnabled( false );
  568         mDetailList->addItem( item );
  569     }
  570     
- 571     if ( !mSongData->sampleRate().isNull() ) {
  572         HbListWidgetItem *item = new HbListWidgetItem();
  573         item->setText( tr( "Sampling rate" ) );
  574         item->setSecondaryText( mSongData->sampleRate().append( " hz" ) );
  575         item->setEnabled( false );
  576         mDetailList->addItem( item );
  577     }
  578     
- 579     if ( !mSongData->size().isNull() ) {
  580         HbListWidgetItem *item = new HbListWidgetItem();
  581         item->setText( tr( "Size" ) );
  582         item->setSecondaryText( mSongData->size() );
  583         item->setEnabled( false );
  584         mDetailList->addItem( item );
  585     }
  586     
- 587     if ( !mSongData->modified().isNull() ) {
  588         HbListWidgetItem *item = new HbListWidgetItem();
  589         item->setText( tr( "Modified" ) );
  590         item->setSecondaryText( mSongData->modified() );
  591         item->setEnabled( false );
  592         mDetailList->addItem( item );
  593     }
  594 
- 595     if ( !mSongData->copyright().isNull() ) {
  596         HbListWidgetItem *item = new HbListWidgetItem();
  597         item->setText( tr( "Copyright" ) );
  598         item->setSecondaryText( mSongData->copyright() );
  599         item->setEnabled( false );
  600         mDetailList->addItem( item );
  601     }
  602     
- 603     if ( !mSongData->musicURL().isNull() ) {
  604         HbListWidgetItem *item = new HbListWidgetItem();
  605         item->setText( tr( "Web site" ) );
  606         item->setSecondaryText( mSongData->musicURL() );
  607         item->setEnabled( true );
  608         mDetailList->addItem( item );
  609     }
  610     TX_EXIT
  611 }
  612 
Top
  613 void MpDetailsView::handleDetailsGroupBoxToggled(bool state)
  614 {
  615     TX_ENTRY
- 616     if ( !mSongDetailsGroupBox->isCollapsed() ) {
  617             mInspireMeGroupBox->setCollapsed( true );
  618     }
  619     TX_EXIT
  620 }
  621 
Top
- 622 void MpDetailsView::handleInspireMeGroupBoxToggled(bool /*state*/)
  623 {
  624     TX_ENTRY
- 625     if ( !mInspireMeGroupBox->isCollapsed() ) {
  626             mSongDetailsGroupBox->setCollapsed( true );
  627     }
  628     TX_LOG_ARGS("count" << mInspireList->count());
- 629     if ( (mInspireList->count() == 0 ) && canQueryRecommendations() ) {
  630     mMpQueryManager->queryInspireMeItems(mSongData->artist(),mSongData->album(),mSongData->title());
- 631     } else if (mInspireList->count() == 0 && !canQueryRecommendations()) {
  632     RenderInspireMeGroupBox();
  633     }
  634     TX_EXIT
  635 }
  636 
  637 /*!
  638  Slot to handle the recommendation album art 
  639 */
Top
- 640 void MpDetailsView::thumbnailReady(
  641         const QPixmap& pixmap,
  642         void *data,
  643         int /*id*/,
  644         int error  )
  645 {
  646     TX_ENTRY
  647     // TODO: Hkn: use qobject_cast
  648     QString uri = *( reinterpret_cast<QString *>( data ) );
  649     TX_LOG_ARGS( "Uri: " << uri );
  650     
- 651     if ( error == 0 ) {
  652         TX_LOG_ARGS( "album art link: " << uri );
  653         mMpQueryManager->insertMapItem( uri, pixmap );
    654     } else {
  655         mMpQueryManager->insertMapItem( uri, mDefaultRecommendationAlbumArt );
  656     }
  657     recommendationAlbumArtReady();
  658     TX_EXIT
  659 }
***TER 17% (18/109) of SOURCE FILE mpdetailsview.cpp

Directory Summary | Files Summary | Functions Summary | Execution Profile
To files: First | Previous | Next | Last | Top | Index | No Index