#include "groove.h"
-
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
+#include "qmaemo5rotator.h"
+#include <QtDBus>
+#endif
groove::groove(QWidget *parent) :
QWidget(parent)
{
+ //mpg = new mpgplayer();
+ //mpg->start();
mBar = new QMenuBar();
//mBar->addAction("test");
sMethod = new QPushButton("Song:");
player = new sPlayer();
QHBoxLayout *layout = new QHBoxLayout();
QVBoxLayout *vlayout = new QVBoxLayout();
- QHBoxLayout *bottomLayout = new QHBoxLayout();
+ //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("->");
+ topBar *ok = new topBar(this);
resultView = new QTableView();
QMenu *pushMenu = new QMenu();
//showFullScreen();
pushMenu->addAction("Song:");
//pushMenu->addAction("Artist:");
//pushMenu->addAction("Album:");
+ 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());
resultView->setColumnHidden(2,true);
resultView->setColumnHidden(3,true);
resultView->setAutoScroll(false);
+ resultView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
/*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);
- vlayout->addWidget(resultView);
- vlayout->addLayout(bottomLayout);
- bottomLayout->addWidget(dButton);
+ vlayout->setContentsMargins(QMargins(0,0,0,0));
+ //vlayout->setMargin(0);
+ vlayout->setSpacing(0);
+ vlayout->addWidget(ok);
+ //vlayout->addLayout(layout);
+ stack = new QStackedWidget();
+ stack->addWidget(resultView);
+
+ vlayout->addWidget(stack);
+ //vlayout->addLayout(bottomLayout);
+ bBar = new bottomBar();
+ vlayout->addWidget(bBar);
+
+ /*bottomLayout->addWidget(dButton);
bottomLayout->addWidget(stopButton);
- bottomLayout->addWidget(moreButton);
+ bottomLayout->addWidget(nextB);
+ bottomLayout->addWidget(moreButton);*/
vlayout->setMenuBar(mBar);
setLayout(vlayout);
- setWindowTitle("GrooveShark");
+ setWindowTitle("Groove");
//Create New Grooveshark connection
gs = new gscom();
//Connections
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(this);
+ 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()));
+ connect(ok,SIGNAL(changeTask()),this,SLOT(showOthers()));
+ connect(ok,SIGNAL(searchRequest(QString)),this,SLOT(performSearch(QString)));
+ connect(ok,SIGNAL(closeApp()),this,SLOT(close()));
+ connect(bBar,SIGNAL(addB()),this,SLOT(addSongPlaylist()));
+ connect(bBar,SIGNAL(nextB()),player,SLOT(playNext()));
+ connect(bBar,SIGNAL(pause()),this,SLOT(stop()));
+
+ connect(bBar,SIGNAL(back()),player,SLOT(back()));
+ connect(bBar,SIGNAL(settings()),this,SLOT(showSettings()));
+ bBar->setPlaybackProgress(100,100);
+ pwindow = new pWin();
+ stack->addWidget(pwindow);
+ stack->setCurrentWidget(resultView);
+ connect(bBar,SIGNAL(list()),this,SLOT(togglePlaylist()));
+ pwindow->setModel(pl);
+
+}
+void groove::showSettings(){
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
+ rot->test();
+#endif
+}
+
+void groove::togglePlaylist()
+{
+ if(stack->currentWidget()==pwindow)
+ stack->setCurrentWidget(resultView);
+ else
+ stack->setCurrentWidget(pwindow);
}
+
+void groove::performSearch(QString s)
+{
+ qDebug() << s;
+ resultView->setModel(gs->getSongModel(s));
+ this->stack->setCurrentWidget(this->resultView);
+}
+
void groove::search()
{
if(!lineEdit->text().isEmpty())
model = gs->getModel();
resultView->setModel(model);
button->setText("Search");
- resultView->setColumnWidth(0,resultView->viewport()->width()/2);
- resultView->setColumnWidth(1,resultView->viewport()->width()/2);
+ resultView->setColumnWidth(0,resultView->maximumViewportSize().width()/2);
+ resultView->setColumnWidth(1,resultView->maximumViewportSize().width()/2);
lineEdit->setDisabled(false);
resultView->setColumnHidden(2,true);
}
sMethod->setText(action->text());
sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
}
+
+void groove::showOthers()
+{
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_HILDON)
+ QDBusConnection c = QDBusConnection::sessionBus();
+ QDBusMessage m = QDBusMessage::createSignal("/", "com.nokia.hildon_desktop", "exit_app_view");
+
+ c.send(m);
+#endif
+}
+
void groove::play()
{
QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
if(item == 0)
return;
//gs->getSong();
- gs->getSong(item->text());
+ player->play(pl->addSong(item,model->item(selected.first().row(),0)->text()));
}
//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,model->item(selected.first().row(),0)->text()));
+ }
+ else
+ pl->addSong(item,model->item(selected.first().row(),0)->text());
+ model->item(selected.first().row(),1)->setText("Added to Playlist");;
+ //pwindow->addSong(model->item(selected.first().row(),0)->text());
+ }
}
+
void groove::stop()
{
- player->stop();
+ player->pause();
+ //mpg->pause();
+}
+void groove::moreB()
+{
+ qDebug() << "He pressed the button";
+}
+void groove::progressUpdate(int p, qint64 d, qint64 t)
+{
+ //if(!pd->isHidden())
+ //{
+ bBar->setPlaybackProgress(d,t);
+ //}
+}
+void groove::resizeEvent(QResizeEvent *)
+{
+ if(resultView->isColumnHidden(2))
+ {
+ resultView->setColumnWidth(0,resultView->maximumViewportSize().width()/2);
+ resultView->setColumnWidth(1,resultView->maximumViewportSize().width()/2);
+ }
+ else
+ resultView->setColumnWidth(0,resultView->maximumViewportSize().width());
+}
+
+void groove::orientationChanged()
+{
+#ifdef Q_WS_MAEMO_5
+ QRect screenGeometry = QApplication::desktop()->screenGeometry();
+ if (screenGeometry.width() > screenGeometry.height())
+ portrait = false;
+ else
+ portrait = true;
+#endif
}