Implemented settings dialog and refactored accordingly.
[vlc-remote] / src / playermainwindow.cpp
index a400cd7..f5b5d55 100644 (file)
   #include "configdialog.h"
   #include "aboutdialog.h"
   #include "accountdialog.h"
+  #include "settingsdialog.h"
   #include "appsettings.h"
 #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5)
 #include <QMaemo5InformationBox>
 #endif
+#include <QMessageBox>
 
   PlayerMainWindow::PlayerMainWindow(QWidget *parent) :
          QMainWindow(parent),
   #endif
 
       connect(mTimer,SIGNAL(timeout()),this,SLOT(askStatus()));
+      connect(ui->actionSettings,SIGNAL(triggered()),this,SLOT(showSettings()));
       connect(ui->actionConfiguration,SIGNAL(triggered()),this,SLOT(showConfig()));
       connect(ui->actionAbout,SIGNAL(triggered()),this,SLOT(showAbout()));
-      connect(ui->actionPortrait,SIGNAL(triggered()),this,SLOT(setPortrait()));
-      connect(ui->actionLandscape,SIGNAL(triggered()),this,SLOT(setLandscape()));
-      connect(ui->actionAutoRotate,SIGNAL(triggered()),this,SLOT(setAutoRotate()));
+      connect(ui->actionFavourites,SIGNAL(triggered()),this,SLOT(showFavourites()));
+      //connect(ui->actionPortrait,SIGNAL(triggered()),this,SLOT(setPortrait()));
+      //connect(ui->actionLandscape,SIGNAL(triggered()),this,SLOT(setLandscape()));
+      //connect(ui->actionAutoRotate,SIGNAL(triggered()),this,SLOT(setAutoRotate()));
       connect(ui->playlistButton,SIGNAL(clicked()),mPlayListMainWindow,SLOT(show()));
       connect(ui->playlistButton,SIGNAL(clicked()),mPlayListMainWindow,SLOT(showPlayList()));
       connect(ui->browseButton,SIGNAL(clicked()),mBrowserMainWindow,SLOT(show()));
       mFavouritesMainWindow->init();
   }
 
+  void PlayerMainWindow::updateFromSettings()
+  {
+    #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5)
+    switch (AppSettings::getOrientation()) {
+      case LANDSCAPE:
+          this->setAttribute(Qt::WA_Maemo5LandscapeOrientation, true);
+          break;
+      case PORTRAIT:
+          this->setAttribute(Qt::WA_Maemo5PortraitOrientation, true);
+          break;
+      case AUTO_ROTATE:
+          this->setAttribute(Qt::WA_Maemo5AutoOrientation, true);
+          break;
+    }
+    #endif
+    if (AppSettings::getShowAlbumArt()) {
+        this->mIsFirstStatusCall = true;
+    }
+    mTimer->start(AppSettings::getStatusPollTimeout());
+  }
+
   void PlayerMainWindow::setPortrait()
   {
     #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5)
       mNetManager->get(QNetworkRequest(QUrl("http://"+mIp+"/requests/status.xml?command=seek&val="+QString::number(value)+"%25")));
   }
 
+  void PlayerMainWindow::showSettings()
+  {
+    SettingsDialog * dialog = new SettingsDialog(this);
+    connect(dialog, SIGNAL(closeSignal()), this, SLOT(updateFromSettings()));
+    dialog->exec();
+  }
   void PlayerMainWindow::showConfig()
   {
       mTimer->stop();
           ui->playpauseButton->setIcon(QIcon::fromTheme("camera_playback"));
       }
 
-      if (STOP == mCurrentStatus.state) {
+      if (STOP == mCurrentStatus.state || !AppSettings::getShowAlbumArt()) {
           ui->labelArtPortrait->setVisible(false);
           ui->labelArtLandscape->setVisible(false);
       }
           // potential actions:
           //   rebuild display layout
           //   retrieve album art
-          mHasImage = false;
-          QTimer::singleShot(AppSettings::getRetrieveArtTimeout(), mPlayListMainWindow, SLOT(requestPlayList()));
+          if (AppSettings::getShowAlbumArt()) {
+              mHasImage = false;
+              QTimer::singleShot(AppSettings::getRetrieveArtTimeout(), mPlayListMainWindow, SLOT(requestPlayList()));
+          }
       }
       // Update the buttons on the playlist window
       if (NULL != this->mPlayListMainWindow) {
         ui->labelArtPortrait->setVisible(true);
     }
   }
+  void PlayerMainWindow::closeEvent(QCloseEvent * event) {
+      if (!AppSettings::getAlertOnClose() || PLAYING != mCurrentStatus.state) {
+          event->accept();
+      }
+      else { // handle alert
+          if (QMessageBox::Yes == QMessageBox::question(this
+                                                       , tr("Really quit?")
+                                                       , tr("You currently have media playing on your remote machine. Are you sure you wish to quit vlc-remote?")
+                                                       , QMessageBox::Yes | QMessageBox::No
+                                                       , QMessageBox::No)) {
+            event->accept();
+          }
+          else {
+            event->ignore();
+          }
+      }
+  }