mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp
changeset 37 eb79a7c355bf
parent 36 a0afa279b8fe
child 38 b93f525c9244
--- a/mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp	Fri May 28 19:46:01 2010 -0500
+++ b/mpviewplugins/mpcollectionviewplugin/src/mpcollectionview.cpp	Fri Jun 11 19:36:32 2010 -0500
@@ -27,8 +27,6 @@
 #include <hbmenu.h>
 #include <hbmessagebox.h>
 #include <hblabel.h>
-#include <QTranslator>
-#include <QLocale>
 #include <hblistview.h>
 #include <hbscrollbar.h>
 
@@ -49,8 +47,21 @@
 
 
 const char*MUSIC_COLLECTION_DOCML = ":/docml/musiccollection.docml";
-const char*EFFECT_SELECT = ":/effects/select.fxml";
-const char*EFFECT_SELECT_END = ":/effects/select_end.fxml";
+
+const char*CONTAINER_EFFECT_GROUP = "mpcontainer";
+
+const char*SHOW_EFFECT = "show";
+const char*HIDE_EFFECT = "hide";
+const char*SHOW_BACK_EFFECT = "show_back";
+const char*HIDE_BACK_EFFECT = "hide_back";
+
+const char*SHOW_EFFECT_RESOURCE_NAME = "view_show_normal";
+const char*HIDE_EFFECT_RESOURCE_NAME = "view_hide_normal";
+const char*SHOW_BACK_EFFECT_RESOURCE_NAME = "view_show_back";
+const char*HIDE_BACK_EFFECT_RESOURCE_NAME = "view_hide_back";
+
+const char*EFFECT_TARGET_SNAPSHOT = "snapshot";
+const char*EFFECT_TARGET_CONTAINER = "container";
 
 const int KMainToolBarAll = 0;
 const int KMainToolBarArtists = 1;
@@ -99,8 +110,6 @@
       mMainToolBar( 0 ),
       mPlaylistToolBar( 0 ),
       mSnapshot( 0 ),
-      mMpTranslator( 0 ),
-      mCommonTranslator( 0 ),
       mActivationWaiting( false ),
       mMpPopupHandler( 0 ),
       mUsbBlocked( false )
@@ -133,8 +142,6 @@
     delete mContainerFactory;
     delete mCollectionDataModel;
     delete mDocumentLoader;
-    delete mMpTranslator;
-    delete mCommonTranslator;
     TX_EXIT
 }
 
@@ -145,25 +152,6 @@
 {
     TX_ENTRY
 
-    //Load musicplayer and common translators
-    QString lang = QLocale::system().name();
-    QString path = QString( "z:/resource/qt/translations/" );
-    bool translatorLoaded = false;
-
-    mMpTranslator = new QTranslator( this );
-    translatorLoaded = mMpTranslator->load( path + "musicplayer_" + lang );
-    TX_LOG_ARGS( "Loading translator ok=" << translatorLoaded );
-    if ( translatorLoaded ) {
-        qApp->installTranslator( mMpTranslator );
-    }
-
-    mCommonTranslator = new QTranslator( this );
-    translatorLoaded = mCommonTranslator->load( path + "common_" + lang );
-    TX_LOG_ARGS( "Loading common translator ok=" << translatorLoaded );
-    if ( translatorLoaded ) {
-        qApp->installTranslator( mCommonTranslator );
-    }
-
     mWindow = mainWindow();
 
     // Create softkey actions
@@ -219,29 +207,12 @@
 
         setWidget( mMainContainer );
 
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_out_to_left.fxml" ),
-                QString( "slide_out_to_left" ) );
-
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_out_to_right.fxml" ),
-                QString( "slide_out_to_right" ) );
-
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_out_to_top.fxml" ),
-                QString( "slide_out_to_top" ) );
+        HbEffect::add(
+            QStringList() << CONTAINER_EFFECT_GROUP << CONTAINER_EFFECT_GROUP << CONTAINER_EFFECT_GROUP << CONTAINER_EFFECT_GROUP,
+            QStringList() << SHOW_EFFECT_RESOURCE_NAME <<  HIDE_EFFECT_RESOURCE_NAME << SHOW_BACK_EFFECT_RESOURCE_NAME << HIDE_BACK_EFFECT_RESOURCE_NAME,
+            QStringList() << SHOW_EFFECT << HIDE_EFFECT << SHOW_BACK_EFFECT << HIDE_BACK_EFFECT);
 
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_in_to_right_and_fade_in.fxml" ),
-                QString( "slide_in_to_right_and_fade_in" ) );
 
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_in_to_left_and_fade_in.fxml" ),
-                QString( "slide_in_to_left_and_fade_in" ) );
-
-        HbEffect::add( QString( "container" ),
-                QString( ":/effects/slide_in_to_top_and_fade_in.fxml" ),
-                QString( "slide_in_to_top_and_fade_in" ) );
     }
     else {
         TX_LOG_ARGS( "Error: invalid xml file." );
@@ -262,7 +233,7 @@
 
     if ( MpSettingsManager::firstStartup() ) {
         mActivationWaiting = true;
-        mMpEngine->refreshLibrary();
+        mMpEngine->refreshLibrary( true );
     }
 
     TX_EXIT
@@ -301,8 +272,8 @@
 {
     TX_ENTRY
     mActivated = false;
-	
-    cancelOngoingOperation();
+
+    closeActiveDialog( true );
 
     setNavigationAction( 0 );
     TX_EXIT
@@ -360,6 +331,10 @@
     if ( mActivated ) {
         setSoftkey();
     }
+
+    // Close any possible popup already launched with previous context
+    closeActiveDialog();
+
     updateToolBar();
     updateMenu();
 
@@ -471,9 +446,8 @@
                 break;
         }
     }
-    // TODO: "showingPopup()" used as workaround for HbListView multiple events: longPress and activated.
-    //       Remove once HbListView get fixed (wk16)
-    if ( doOpen && !mMpPopupHandler->showingPopup() ) {
+
+    if ( doOpen ) {
         if ( mCollectionContext == ECollectionContextArtistAlbums ) {
             if ( (mCollectionData->count() > 1) && (index == 0) ) {
                 mMpEngine->openCollectionItem( index );
@@ -515,11 +489,7 @@
 void MpCollectionView::playAlbumSongs( int albumIndex, int songIndex )
 {
     TX_ENTRY_ARGS( "albumIndex=" << albumIndex << "songIndex=" << songIndex );
-    // TODO: "showingPopup()" used as workaround for HbListView multiple events: longPress and activated.
-    //       Remove once HbListView get fixed (wk16)
-    if ( !mMpPopupHandler->showingPopup() ) {
-        mMpEngine->playAlbumSongs(albumIndex, songIndex);
-    }
+    mMpEngine->playAlbumSongs(albumIndex, songIndex);
     TX_EXIT
 }
 
@@ -613,7 +583,7 @@
  */
 void MpCollectionView::containerTransitionComplete( const HbEffect::EffectStatus &status )
 {    
-    if ( status.userData == "snapshot_effect" ) {
+    if ( status.userData == EFFECT_TARGET_SNAPSHOT ) {
         qobject_cast<QGraphicsView *>( mWindow )->scene()->removeItem( mSnapshot );
         mSnapshot->deleteLater();
         mSnapshot = 0;
@@ -640,14 +610,6 @@
 }
 
 /*!
- Slot to be called when 'Refresh Library' is clicked by the user from the menu.
- */
-void MpCollectionView::refreshLibrary()
-{
-    mMpEngine->refreshLibrary();
-}
-
-/*!
  Slot to be called when 'Add to playlist' is clicked by the user from the menu.
  */
 void MpCollectionView::addToPlaylist()
@@ -777,7 +739,7 @@
     TX_ENTRY_ARGS( "blocked=" << blocked );
     mUsbBlocked = blocked;
         
-    cancelOngoingOperation();
+    closeActiveDialog();
     
     updateMenu();
     if ( mCollectionContext == ECollectionContextPlaylistSongs ) {
@@ -792,7 +754,7 @@
 void MpCollectionView::handleLibraryAboutToUpdate()
 {
     TX_ENTRY
-    cancelOngoingOperation();
+    closeActiveDialog();
     TX_EXIT
 }
 
@@ -807,7 +769,7 @@
         activateView();
     }
     else {
-        cancelOngoingOperation();
+        closeActiveDialog();
         
         //Update cache, even if collection is in background.
         //Library refreshing could be triggered at any point due USB/MMC events.
@@ -997,7 +959,7 @@
                 }
                 menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_refresh_library" ) );
                 if ( !mUsbBlocked ) {
-                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( refreshLibrary() ) );
+                    connect( menuAction, SIGNAL( triggered() ), mMpEngine, SLOT( refreshLibrary() ) );
                 }
                 else {
                     menuAction->setDisabled( true );
@@ -1008,7 +970,7 @@
             case ECollectionContextAlbums:
                 menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_refresh_library" ) );
                 if ( !mUsbBlocked ) {
-                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( refreshLibrary() ) );
+                    connect( menuAction, SIGNAL( triggered() ), mMpEngine, SLOT( refreshLibrary() ) );                
                 }
                 else {
                     menuAction->setDisabled( true );
@@ -1081,7 +1043,7 @@
             case ECollectionContextAlbums:
                 menuAction = myMenu->addAction( hbTrId( "txt_mus_opt_refresh_library" ) );
                 if ( !mUsbBlocked ) {
-                    connect( menuAction, SIGNAL( triggered() ), this, SLOT( refreshLibrary() ) );
+                    connect( menuAction, SIGNAL( triggered() ), mMpEngine, SLOT( refreshLibrary() ) );
                 }
                 else {
                     menuAction->setDisabled( true );
@@ -1221,58 +1183,40 @@
     mWindow->scene()->addItem( mSnapshot );
 
 
-    if ( ( contextFrom == ECollectionContextAlbums && contextTo == ECollectionContextAlbumsTBone ) ||
-         ( contextFrom == ECollectionContextArtists && contextTo == ECollectionContextArtistAlbums ) ||
-         ( contextFrom == ECollectionContextArtistAlbums && contextTo == ECollectionContextArtistAlbumsTBone ) ||
-         ( contextFrom == ECollectionContextArtistAlbums && contextTo == ECollectionContextArtistAllSongs ) ||
-         ( contextFrom == ECollectionContextPlaylists && contextTo == ECollectionContextPlaylistSongs ) ) {
-        HbEffect::start( mSnapshot,
-                QString( "container" ),
-                QString( "slide_out_to_left" ),
-                this,
-                "containerTransitionComplete",
-                QString( "snapshot_effect") );
-
-        HbEffect::start( mMainContainer,
-                QString( "container" ),
-                QString( "slide_in_to_left_and_fade_in" ),
-                this,
-                "containerTransitionComplete",
-                QString( "mainContainer_effect") );
-    }
-    else if( ( contextFrom == ECollectionContextAlbumsTBone && contextTo == ECollectionContextAlbums ) ||
+    if( ( contextFrom == ECollectionContextAlbumsTBone && contextTo == ECollectionContextAlbums ) ||
              ( contextFrom == ECollectionContextArtistAlbums && contextTo == ECollectionContextArtists ) ||
              ( contextFrom == ECollectionContextArtistAlbumsTBone && contextTo == ECollectionContextArtistAlbums ) ||
+             ( contextFrom == ECollectionContextArtistAlbumsTBone && contextTo == ECollectionContextArtists ) ||
              ( contextFrom == ECollectionContextArtistAllSongs && contextTo == ECollectionContextArtistAlbums ) ||
              ( contextFrom == ECollectionContextPlaylistSongs && contextTo == ECollectionContextPlaylists ) ) {
         HbEffect::start( mSnapshot,
-                QString( "container" ),
-                QString( "slide_out_to_right" ),
+                QString( CONTAINER_EFFECT_GROUP ),
+                QString( HIDE_BACK_EFFECT ),
                 this,
                 "containerTransitionComplete",
-                QString( "snapshot_effect") );
+                QString( EFFECT_TARGET_SNAPSHOT) );
 
         HbEffect::start( mMainContainer,
-                QString( "container" ),
-                QString( "slide_in_to_right_and_fade_in" ),
+                QString( CONTAINER_EFFECT_GROUP ),
+                QString( SHOW_BACK_EFFECT ),
                 this,
                 "containerTransitionComplete",
-                QString( "mainContainer_effect") );
+                QString( EFFECT_TARGET_CONTAINER) );
     }
     else {
         HbEffect::start( mSnapshot,
-                QString( "container" ),
-                QString( "slide_out_to_top" ),
+                QString( CONTAINER_EFFECT_GROUP ),
+                QString( HIDE_EFFECT ),
                 this,
                 "containerTransitionComplete",
-                QString( "snapshot_effect") );
+                QString( EFFECT_TARGET_SNAPSHOT) );
 
         HbEffect::start( mMainContainer,
-                QString( "container" ),
-                QString( "slide_in_to_top_and_fade_in" ),
+                QString( CONTAINER_EFFECT_GROUP ),
+                QString( SHOW_EFFECT ),
                 this,
                 "containerTransitionComplete",
-                QString( "mainContainer_effect") );
+                QString( EFFECT_TARGET_CONTAINER ) );
     }
 }
 
@@ -1280,11 +1224,9 @@
  \internal
  Closes any active dialog or menu.
  */
-void MpCollectionView::cancelOngoingOperation()
+void MpCollectionView::closeActiveDialog( bool onlyContextMenu )
 {
-    if ( mActivated ) {
-        mMpPopupHandler->cancelOngoingPopup();
-        menu()->close();
-    }
+    mMpPopupHandler->cancelOngoingPopup( onlyContextMenu );
+    menu()->close();
 }