app/src/mpmainwindow.cpp
changeset 20 82baf59ce8dd
parent 19 4e84c994a771
child 22 ecf06a08d4d9
--- a/app/src/mpmainwindow.cpp	Fri Mar 19 09:28:13 2010 +0200
+++ b/app/src/mpmainwindow.cpp	Fri Apr 16 14:56:30 2010 +0300
@@ -22,18 +22,20 @@
 #include <xqpluginloader.h>
 #include <xqplugininfo.h>
 #include <xqserviceutil.h>
+#include <QTranslator>
+#include <QLocale>
 
 #include "mpmainwindow.h"
-#include "mpmediakeyhandler.h"
 #include "mpcommondefs.h"
 #include "mpviewbase.h"
 #include "musicfetcher.h"
+#include "mpengine.h"
 #include "mptrace.h"
 
 /*!
    \class MpMainWindow
    \brief The MpMainWindow class provides Main Window functionalities.
-   
+
    MpMainWindow handles activation of views
 
 */
@@ -44,9 +46,10 @@
 
 MpMainWindow::MpMainWindow()
     : MpxViewFramework(),
-      mMediaKeyHandler(0),
       mCollectionViewPlugin(0),
       mPlaybackViewPlugin(0),
+      mSettingsViewPlugin(0),
+      mDetailsViewPlugin(0),
       mCurrentViewPlugin(0),
       mPreviousViewPlugin(0),
       mMusicFetcher(0)
@@ -60,7 +63,6 @@
 MpMainWindow::~MpMainWindow()
 {
     TX_ENTRY
-    delete mMediaKeyHandler;
     delete mMusicFetcher;
 
     if (mCollectionViewPlugin) {
@@ -71,6 +73,14 @@
         mPlaybackViewPlugin->destroyView();
         delete mPlaybackViewPlugin;
     }
+    if (mSettingsViewPlugin) {
+        mSettingsViewPlugin->destroyView();
+        delete mSettingsViewPlugin;
+    }
+    if (mDetailsViewPlugin) {
+        mDetailsViewPlugin->destroyView();
+        delete mDetailsViewPlugin;
+    }
 
     TX_EXIT
 }
@@ -83,6 +93,18 @@
 {
     TX_ENTRY
 
+    //Load musicplayer translator
+    QTranslator translator;
+    QString lang = QLocale::system().name();
+    QString path = QString("z:/resource/qt/translations/");
+
+    bool translatorLoaded = false;
+    translatorLoaded = translator.load(path + "musicplayer_" + lang);
+    TX_LOG_ARGS("Loading musicplayer translator ok=" << translatorLoaded);
+    if ( translatorLoaded ) {
+        qApp->installTranslator( &translator );
+    }
+
 #ifdef _DEBUG
     QList<XQPluginInfo> impls;
     XQPluginLoader::listImplementations("org.nokia.mmdt.MpxViewPlugin/1.0", impls);
@@ -97,8 +119,7 @@
         // Set the Collection View and Playback View to fetcher mode
         mMusicFetcher = new MusicFetcher();
     }
-    
-    setViewSwitchingEnabled(false);
+
     XQPluginLoader collectionLoader(MpCommon::KCollectionViewUid);
     XQPluginLoader playbackLoader(MpCommon::KPlaybackViewUid);
 
@@ -119,7 +140,7 @@
             TX_LOG_ARGS("connection error: " << err);
         }
         else {
-            collectionView->setTitle("Music");
+            collectionView->setTitle(hbTrId("txt_mus_title_music"));
         }
         // Collection view is the default view.
         activateView(MpMainWindow::CollectionView);
@@ -142,11 +163,14 @@
             TX_LOG_ARGS("connection error: " << err);
         }
         else {
-            playbackView->setTitle("Music");
+            playbackView->setTitle(hbTrId("txt_mus_title_music"));
         }
     }
 
-    mMediaKeyHandler = new MpMediaKeyHandler();
+    MpEngine *engine = MpEngine::instance();
+    connect( engine, SIGNAL( libraryRefreshed() ), this, SLOT( handleLibraryUpdated() ) );
+    connect( engine, SIGNAL( exitApplication() ), this, SLOT( handleExitApplication() ) );
+
     TX_EXIT
 }
 
@@ -165,7 +189,7 @@
 void MpMainWindow::handleCommand( int commandCode )
 {
     TX_ENTRY_ARGS("commandCode=" << commandCode );
-    
+
     switch ( commandCode ) {
         case MpCommon::Exit:
             if ( mCurrentViewPlugin ) {
@@ -179,6 +203,12 @@
         case MpCommon::ActivatePlaybackView:
             activateView(PlaybackView);
             break;
+        case MpCommon::ActivateSettingsView:
+            activateView(SettingsView);
+            break;
+        case MpCommon::ActivateDetailsView:
+            activateView(DetailsView);
+            break;
     }
     TX_EXIT
 }
@@ -191,7 +221,7 @@
     TX_ENTRY_ARGS("viewType=" << viewType );
 
     if ( mCurrentViewPlugin ) {
-        
+
         disconnectView();
         mCurrentViewPlugin->deactivateView();
         mPreviousViewPlugin = mCurrentViewPlugin;
@@ -204,6 +234,30 @@
     else if ( viewType == MpMainWindow::PlaybackView && mPlaybackViewPlugin ) {
         mCurrentViewPlugin = mPlaybackViewPlugin;
     }
+    else if ( viewType == MpMainWindow::SettingsView ) {
+        if ( mSettingsViewPlugin ) {
+            mCurrentViewPlugin = mSettingsViewPlugin;
+        }
+		else {
+			XQPluginLoader settingsLoader( MpCommon::KSettingsViewUid );
+            QObject* settingsInstance = settingsLoader.instance();
+            mSettingsViewPlugin = qobject_cast<MpxViewPlugin*>( settingsInstance )->viewPlugin();
+            mSettingsViewPlugin->createView();
+            mCurrentViewPlugin = mSettingsViewPlugin;
+        }
+    }
+    else if ( viewType == MpMainWindow::DetailsView ) {
+        if ( mDetailsViewPlugin ) {
+            mCurrentViewPlugin = mDetailsViewPlugin;
+        }
+        else {
+            XQPluginLoader detailsLoader( MpCommon::KDetailsViewUid );
+            QObject* detailsInstance = detailsLoader.instance();
+            mDetailsViewPlugin = qobject_cast<MpxViewPlugin*>( detailsInstance )->viewPlugin();
+            mDetailsViewPlugin->createView();
+            mCurrentViewPlugin = mDetailsViewPlugin;
+        }
+    }
 
     if ( mCurrentViewPlugin ) {
         addView( mCurrentViewPlugin->getView() );
@@ -257,3 +311,38 @@
     TX_EXIT
 }
 
+/*!
+ Slot to be called when Library has changed.
+ */
+void MpMainWindow::handleLibraryUpdated()
+{
+    TX_ENTRY
+
+    // If library changed while playing back, always return to AllSongs collection view.
+    if ( mPlaybackViewPlugin &&
+         mCurrentViewPlugin == mPlaybackViewPlugin &&
+         mCollectionViewPlugin ) {
+
+        activateView( CollectionView );
+        MpViewBase* collectionView = reinterpret_cast<MpViewBase*>(mCollectionViewPlugin->getView());
+        collectionView->setDefaultView();
+    }
+
+    TX_EXIT
+}
+
+/*!
+ Slot to be called when application must exit.
+ */
+void MpMainWindow::handleExitApplication()
+{
+    TX_ENTRY
+
+    if ( mCurrentViewPlugin ) {
+        disconnectView();
+    }
+    qApp->quit();
+
+    TX_EXIT
+}
+