mpviewplugins/mpmediawallviewplugin/src/mpmediawallview.cpp
changeset 48 af3740e3753f
parent 41 ea59c434026a
child 51 560ce2306a17
equal deleted inserted replaced
42:79c49924ae23 48:af3740e3753f
    38 #include "mpplaybackdata.h"
    38 #include "mpplaybackdata.h"
    39 #include "mpalbumcoverwidget.h"
    39 #include "mpalbumcoverwidget.h"
    40 #include "mptracklistwidget.h"
    40 #include "mptracklistwidget.h"
    41 #include "mpcollectiontbonelistdatamodel.h"
    41 #include "mpcollectiontbonelistdatamodel.h"
    42 #include "mptrace.h"
    42 #include "mptrace.h"
       
    43 #include "mpreflectioneffect.h"
    43 
    44 
    44 const char*MUSIC_MEDIAWALL_DOCML = ":/mediawallviewdocml/mediawall.docml";
    45 const char*MUSIC_MEDIAWALL_DOCML = ":/mediawallviewdocml/mediawall.docml";
    45 
    46 
    46 /*!
    47 /*!
    47     \class MpMediaWallView
    48     \class MpMediaWallView
   161         TX_LOG_ARGS( "Error: invalid xml file." );
   162         TX_LOG_ARGS( "Error: invalid xml file." );
   162         Q_ASSERT_X( ok, "MpCollectionView::initializeView", "invalid xml file" );
   163         Q_ASSERT_X( ok, "MpCollectionView::initializeView", "invalid xml file" );
   163     }
   164     }
   164     
   165     
   165     mAlbumCover = new MpAlbumCoverWidget( this );
   166     mAlbumCover = new MpAlbumCoverWidget( this );
       
   167     mAlbumCover->setGraphicsEffect( new MpReflectionEffect(mAlbumCover) );
   166     mAlbumCover->setDefaultIcon( HbIcon( "qtg_large_album_art" ) );
   168     mAlbumCover->setDefaultIcon( HbIcon( "qtg_large_album_art" ) );
   167     mAlbumCover->hide();
   169     mAlbumCover->hide();
   168     
   170     
   169     mTrackList = new MpTrackListWidget( this );
   171     mTrackList = new MpTrackListWidget( this );
       
   172     mTrackList->setGraphicsEffect( new MpReflectionEffect(mTrackList) );
   170     mTrackList->list()->setModel( new MpCollectionTBoneListDataModel(mCollectionData, mPlaybackData, mTrackList ) );
   173     mTrackList->list()->setModel( new MpCollectionTBoneListDataModel(mCollectionData, mPlaybackData, mTrackList ) );
   171     mTrackList->hide();
   174     mTrackList->hide();
   172     
   175     
   173     connect(mAlbumCover,SIGNAL(clicked()),this, SLOT(hideTracksList()));
   176     connect(mAlbumCover,SIGNAL(clicked()),this, SLOT(hideTracksList()));
   174     connect(mTrackList->list(), SIGNAL(activated(QModelIndex)), this, SLOT(listItemActivated(QModelIndex)));
   177     connect(mTrackList->list(), SIGNAL(activated(QModelIndex)), this, SLOT(listItemActivated(QModelIndex)));
   175     connect(mTrackList,SIGNAL(closed()),this, SLOT(hideTracksList()));
   178     connect(mTrackList,SIGNAL(closed()),this, SLOT(hideTracksList()));
   176 
   179 
   177     HbStyleLoader::registerFilePath(":/css/mpcustommediawall.css");
   180     HbStyleLoader::registerFilePath(":/css/mpcustommediawall.css");
       
   181     HbStyleLoader::registerFilePath(":/css/mpcustommediawall_color.css");
   178     HbStyleLoader::registerFilePath(":/css/mpcustommediawall.hgmediawall.widgetml");  
   182     HbStyleLoader::registerFilePath(":/css/mpcustommediawall.hgmediawall.widgetml");  
   179     
   183     
   180     TX_EXIT
   184     TX_EXIT
   181 }
   185 }
   182 
   186 
   222             delete mNoMusic;
   226             delete mNoMusic;
   223             mNoMusic = 0;
   227             mNoMusic = 0;
   224         }
   228         }
   225         if ( mMediaWallWidget ) {
   229         if ( mMediaWallWidget ) {
   226             mModel->refreshModel();
   230             mModel->refreshModel();
       
   231             scrollToDefault();
   227         } else {
   232         } else {
   228             bool ok = false;
   233             bool ok = false;
   229             mDocumentLoader->load( MUSIC_MEDIAWALL_DOCML, "mediaWall", &ok);
   234             mDocumentLoader->load( MUSIC_MEDIAWALL_DOCML, "mediaWall", &ok);
   230             if ( ok ) {
   235             if ( ok ) {
   231                 QGraphicsWidget *widget;
   236                 QGraphicsWidget *widget;
   274  Slot to be called when the container contents changed.
   279  Slot to be called when the container contents changed.
   275  */
   280  */
   276 void MpMediaWallView::containerContentsChanged() 
   281 void MpMediaWallView::containerContentsChanged() 
   277 {
   282 {
   278     if ( !mLibraryUpdating && mEngine ) {
   283     if ( !mLibraryUpdating && mEngine ) {
       
   284         dismissListClosingAnimation();
   279         mEngine->openCollection( ECollectionContextAlbumsMediaWall );
   285         mEngine->openCollection( ECollectionContextAlbumsMediaWall );
   280     }
   286     }
   281 }
   287 }
   282 
   288 
   283 /*!
   289 /*!
   410     HbIcon defaultIcon( "qtg_large_album_art" );
   416     HbIcon defaultIcon( "qtg_large_album_art" );
   411     defaultIcon.setSize(mMediaWallWidget->itemSize());
   417     defaultIcon.setSize(mMediaWallWidget->itemSize());
   412     mMediaWallWidget->setDefaultImage( defaultIcon.pixmap().toImage() );
   418     mMediaWallWidget->setDefaultImage( defaultIcon.pixmap().toImage() );
   413     mMediaWallWidget->enableReflections( true );
   419     mMediaWallWidget->enableReflections( true );
   414     mMediaWallWidget->setModel( mModel );
   420     mMediaWallWidget->setModel( mModel );
       
   421     scrollToDefault();
       
   422     mMediaWallWidget->setTitleFontSpec( HbFontSpec( HbFontSpec::Primary ) );
       
   423     mMediaWallWidget->setDescriptionFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
       
   424     mMediaWallWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn ); //HgWidget::ScrollBarAutoHide
       
   425     mMediaWallWidget->scrollBar()->setInteractive( true );
       
   426     mMediaWallWidget->setIndexFeedbackPolicy( HgWidget::IndexFeedbackSingleCharacter );
       
   427     connect(mMediaWallWidget, SIGNAL(animationAboutToEnd(QModelIndex)), SLOT(fetchAlbumSongs(QModelIndex)));
       
   428     connect(mMediaWallWidget, SIGNAL(activated(QModelIndex)), SLOT(showTrackList()));
       
   429     connect(mMediaWallWidget, SIGNAL(scrollingStarted()), SLOT(dismissListClosingAnimation()));
       
   430 }
       
   431 /*!
       
   432  Scrolls the media wall to a default position.
       
   433  */
       
   434 void MpMediaWallView::scrollToDefault()
       
   435 {
       
   436     //if something is playing go there, if not go to a balanced position.
   415     if ( mPlaybackData->playbackState() != MpPlaybackData::NotPlaying ) {
   437     if ( mPlaybackData->playbackState() != MpPlaybackData::NotPlaying ) {
   416         scrollToNowPlaying();
   438         scrollToNowPlaying();
   417     }
   439     }
   418     //The rest of the cases are attepting to balance the items on screen.
   440     else  if ( mModel->rowCount() >= 5 ) {
   419     else if ( mModel->rowCount() >= 5 ) {
       
   420         /* 5 and more
   441         /* 5 and more
   421         [0] [1] [X] [3] [4]...
   442         [0] [1] [X] [3] [4]...
   422         */
   443         */
   423         QModelIndex index;
   444         QModelIndex index;
   424         index = mModel->index( 2 );
   445         index = mModel->index( 2 );
   425         mMediaWallWidget->scrollTo( index );
   446         mMediaWallWidget->scrollTo( index );
       
   447         fetchAlbumSongs( index );
       
   448         
   426     }
   449     }
   427     else if ( mModel->rowCount() >=3  ) {
   450     else if ( mModel->rowCount() >=3  ) {
   428         /* 4 and 3
   451         /* 4 and 3
   429         __ [0] [X] [2] [3]
   452         __ [0] [X] [2] [3]
   430         __ [0] [X] [2] __
   453         __ [0] [X] [2] __
   431         */
   454         */
   432         QModelIndex index;
   455         QModelIndex index;
   433         index = mModel->index( 1 );
   456         index = mModel->index( 1 );
   434         mMediaWallWidget->scrollTo( index );
   457         mMediaWallWidget->scrollTo( index );
       
   458         fetchAlbumSongs( index );
   435     }
   459     }
   436     else {
   460     else {
   437         /* 2 and 1
   461         /* 2 and 1
   438         __ __ [X] [1] __
   462         __ __ [X] [1] __
   439         __ __ [X] __ __
   463         __ __ [X] __ __
   440         */
   464         */
   441         QModelIndex index;
   465         QModelIndex index;
   442         index = mModel->index( 0 );
   466         index = mModel->index( 0 );
   443         mMediaWallWidget->scrollTo( index );
   467         mMediaWallWidget->scrollTo( index );
   444     }
   468         fetchAlbumSongs( index );
   445     mMediaWallWidget->setTitleFontSpec( HbFontSpec( HbFontSpec::Primary ) );
   469     }
   446     mMediaWallWidget->setDescriptionFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
       
   447     mMediaWallWidget->setScrollBarPolicy( HgWidget::ScrollBarAlwaysOn ); //HgWidget::ScrollBarAutoHide
       
   448     mMediaWallWidget->scrollBar()->setInteractive( true );
       
   449     mMediaWallWidget->setIndexFeedbackPolicy( HgWidget::IndexFeedbackSingleCharacter );
       
   450     connect(mMediaWallWidget, SIGNAL(animationAboutToEnd(QModelIndex)), SLOT(fetchAlbumSongs(QModelIndex)));
       
   451     connect(mMediaWallWidget, SIGNAL(activated(QModelIndex)), SLOT(showTrackList()));
       
   452     connect(mMediaWallWidget, SIGNAL(scrollingStarted()), SLOT(dismissListClosingAnimation()));
       
   453 }
   470 }
   454 
   471 
   455 /*!
   472 /*!
   456  Scrolls the media wall to now playing position.
   473  Scrolls the media wall to now playing position.
   457  */
   474  */
   460     if ( mMediaWallWidget  && mPlaybackData->playbackState() != MpPlaybackData::NotPlaying ) {
   477     if ( mMediaWallWidget  && mPlaybackData->playbackState() != MpPlaybackData::NotPlaying ) {
   461         int albumId = mPlaybackData->albumId();
   478         int albumId = mPlaybackData->albumId();
   462         QModelIndex index;
   479         QModelIndex index;
   463         index = mModel->index( mCollectionData->itemIndex( albumId ) );
   480         index = mModel->index( mCollectionData->itemIndex( albumId ) );
   464         mMediaWallWidget->scrollTo( index );
   481         mMediaWallWidget->scrollTo( index );
       
   482         fetchAlbumSongs( index );
   465     }
   483     }
   466 }
   484 }
   467 
   485 
   468 /*!
   486 /*!
   469  Sets up the album and list animation.
   487  Sets up the album and list animation.