Multiple download fix, Added pause button, Added next button
[groove] / groove.cpp
index 3bd7b6a..f8c30c0 100644 (file)
@@ -1,5 +1,7 @@
 #include "groove.h"
-
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
+#include "qmaemo5rotator.h"
+#endif
 
 
 groove::groove(QWidget *parent) :
@@ -14,9 +16,10 @@ groove::groove(QWidget *parent) :
     QVBoxLayout *vlayout = new QVBoxLayout();
     QHBoxLayout *bottomLayout = new QHBoxLayout();
     button = new QPushButton("Search");
-    QPushButton *dButton = new QPushButton("Play");
-    QPushButton *stopButton = new QPushButton("Stop");
-    QPushButton *moreButton = new QPushButton();
+    QPushButton *dButton = new QPushButton("Queue");
+    QPushButton *stopButton = new QPushButton("Pause");
+    QPushButton *moreButton = new QPushButton("...");
+    QPushButton *nextB = new QPushButton("->");
     resultView = new QTableView();
     QMenu *pushMenu = new QMenu();
     //showFullScreen();
@@ -25,6 +28,13 @@ groove::groove(QWidget *parent) :
     pushMenu->addAction("Song:");
     //pushMenu->addAction("Artist:");
     //pushMenu->addAction("Album:");
+    pd = new grooveProgressBar(this);
+    pd->hide();
+    QMenu *moreAction = new QMenu();
+    //moreAction->addAction("Playlist");
+    connect(moreAction->addAction("Play Now"),SIGNAL(triggered()),this,SLOT(play()));
+    connect(moreAction->addAction("Show download Progress"),SIGNAL(triggered()),pd,SLOT(show()));
+    moreButton->setMenu(moreAction);
 
     //sMethod->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Maximum);
     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
@@ -45,8 +55,12 @@ groove::groove(QWidget *parent) :
     /*QPalette pal = resultView->palette();
     pal.setBrush(QPalette::Highlight,QBrush(Qt::transparent,Qt::NoBrush));
     resultView->setPalette(pal);*/
-
+    portrait = false;
     layout->addWidget(sMethod);
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
+    rot = new QMaemo5Rotator(QMaemo5Rotator::AutomaticBehavior,this);
+#endif
+    //this->setAttribute(Qt::WA_Maemo5AutoOrientation);
     layout->addWidget(lineEdit);
     layout->addWidget(button);
     vlayout->addLayout(layout);
@@ -54,6 +68,7 @@ groove::groove(QWidget *parent) :
     vlayout->addLayout(bottomLayout);
     bottomLayout->addWidget(dButton);
     bottomLayout->addWidget(stopButton);
+    bottomLayout->addWidget(nextB);
     bottomLayout->addWidget(moreButton);
     vlayout->setMenuBar(mBar);
     setLayout(vlayout);
@@ -65,9 +80,19 @@ groove::groove(QWidget *parent) :
     connect(gs, SIGNAL(finishedSearch()), this, SLOT(finishedS()));
     connect(lineEdit,SIGNAL(returnPressed()),this, SLOT(search()));
     connect(pushMenu,SIGNAL(triggered(QAction*)),this,SLOT(changeS(QAction*)));
-    connect(dButton,SIGNAL(clicked()),this, SLOT(play()));
+    connect(dButton,SIGNAL(clicked()),this, SLOT(addSongPlaylist()));
     connect(stopButton,SIGNAL(clicked()),this,SLOT(stop()));
-    connect(gs,SIGNAL(sKeyFound()),this,SLOT(startP()));
+    connect(moreButton,SIGNAL(clicked()),this,SLOT(moreB()));
+    //connect(rotator,SIGNAL(orientationChanged(Orientation)),this,SLOT(orientationChanged()));
+    pl = new playlist();
+    pl->setGscom(gs);
+    player->setPlaylist(pl);
+    connect(pl,SIGNAL(downloadProgress(int,qint64,qint64)),this,SLOT(progressUpdate(int,qint64,qint64)));
+    connect(pl,SIGNAL(bufferReady(int)),pd,SLOT(close()));
+    connect(pl,SIGNAL(freeze(bool)),resultView,SLOT(setDisabled(bool)));
+    connect(pl,SIGNAL(freeze(bool)),pushMenu,SLOT(setDisabled(bool)));
+    connect(pl,SIGNAL(freeze(bool)),dButton,SLOT(setDisabled(bool)));
+    connect(nextB,SIGNAL(clicked()),player,SLOT(playNext()));
 }
 void groove::search()
 {
@@ -123,21 +148,62 @@ void groove::play()
         if(item == 0)
             return;
         //gs->getSong();
-        gs->getSong(item->text());
+        player->play(pl->addSong(item));
+        pd->setMaximum(100);
+        pd->setValue(0);
+        pd->show();
     }
     //selected.
     //if
 }
-void groove::startP()
+void groove::addSongPlaylist()
 {
-    if(!gs->sku.isValid())
-        return;
-    player->~sPlayer();
-    player = new sPlayer();
-    player->play(gs->streamID,gs->sku);
-
+    QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
+    if(!selected.isEmpty())
+    {
+        QStandardItem *item = model->item(selected.first().row(),2);
+        if(item == 0)
+            return;
+        //gs->getSong();
+        if(pl->currentplaying() == -1)
+        {
+            player->play(pl->addSong(item));
+        }
+        else
+            pl->addSong(item);
+        pd->setMaximum(100);
+        pd->setValue(0);
+        pd->show();
+        model->item(selected.first().row(),1)->setText("Added to Playlist");;
+    }
 }
+
 void groove::stop()
 {
-    player->stop();
+    player->pause();
+}
+void groove::moreB()
+{
+    qDebug() << "He pressed the button";
+}
+void groove::progressUpdate(int p, qint64 d, qint64 t)
+{
+    //if(!pd->isHidden())
+    //{
+
+
+        pd->setMaximum(t);
+        pd->setValue(d);
+    //}
+}
+
+void groove::orientationChanged()
+{
+#ifdef Q_WS_MAEMO_5
+    QRect screenGeometry = QApplication::desktop()->screenGeometry();
+    if (screenGeometry.width() > screenGeometry.height())
+        portrait = false;
+    else
+        portrait = true;
+#endif
 }