Add a stop button
[groove] / groove.cpp
1 #include "groove.h"
2
3
4
5 groove::groove(QWidget *parent) :
6     QWidget(parent)
7 {
8     mBar = new QMenuBar();
9     //mBar->addAction("test");
10     sMethod = new QPushButton("Song:");
11     lineEdit = new QLineEdit("");
12     player = new sPlayer();
13     QHBoxLayout *layout = new QHBoxLayout();
14     QVBoxLayout *vlayout = new QVBoxLayout();
15     QHBoxLayout *bottomLayout = new QHBoxLayout();
16     button = new QPushButton("Search");
17     QPushButton *dButton = new QPushButton("Play");
18     QPushButton *stopButton = new QPushButton("Stop");
19     QPushButton *moreButton = new QPushButton();
20     resultView = new QTableView();
21     QMenu *pushMenu = new QMenu();
22     //showFullScreen();
23     lineEdit->insert("");
24     lineEdit->setDisabled(true);
25     pushMenu->addAction("Song:");
26     //pushMenu->addAction("Artist:");
27     //pushMenu->addAction("Album:");
28
29     //sMethod->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Maximum);
30     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
31     sMethod->setMenu(pushMenu);
32     model = new  QStandardItemModel();
33     model->setHorizontalHeaderLabels(
34         QStringList() << "Please wait for initialization"
35                       /*<< "Artist"*/);
36     resultView->setModel(model);
37     resultView->verticalHeader()->hide();
38     resultView->horizontalHeader()->setStretchLastSection(true);
39     resultView->setSelectionBehavior(QAbstractItemView::SelectRows);
40     resultView->setSelectionMode(QAbstractItemView::SingleSelection);
41     resultView->setEditTriggers(QAbstractItemView::NoEditTriggers);
42     resultView->setColumnHidden(2,true);
43     resultView->setColumnHidden(3,true);
44     resultView->setAutoScroll(false);
45     /*QPalette pal = resultView->palette();
46     pal.setBrush(QPalette::Highlight,QBrush(Qt::transparent,Qt::NoBrush));
47     resultView->setPalette(pal);*/
48
49     layout->addWidget(sMethod);
50     layout->addWidget(lineEdit);
51     layout->addWidget(button);
52     vlayout->addLayout(layout);
53     vlayout->addWidget(resultView);
54     vlayout->addLayout(bottomLayout);
55     bottomLayout->addWidget(dButton);
56     bottomLayout->addWidget(stopButton);
57     bottomLayout->addWidget(moreButton);
58     vlayout->setMenuBar(mBar);
59     setLayout(vlayout);
60     setWindowTitle("GrooveShark");
61     //Create New Grooveshark connection
62     gs = new gscom();
63     //Connections
64     connect(button, SIGNAL(clicked()), this, SLOT(search()));
65     connect(gs, SIGNAL(finishedSearch()), this, SLOT(finishedS()));
66     connect(lineEdit,SIGNAL(returnPressed()),this, SLOT(search()));
67     connect(pushMenu,SIGNAL(triggered(QAction*)),this,SLOT(changeS(QAction*)));
68     connect(dButton,SIGNAL(clicked()),this, SLOT(play()));
69     connect(stopButton,SIGNAL(clicked()),this,SLOT(stop()));
70     connect(gs,SIGNAL(sKeyFound()),this,SLOT(startP()));
71 }
72 void groove::search()
73 {
74     if(!lineEdit->text().isEmpty())
75     {
76     if(lineEdit->isEnabled())
77     {
78
79         if(sMethod->text().compare("Song:")==0)
80             resultView->setModel(gs->getSongModel(lineEdit->text()));
81         else if(sMethod->text().compare("Artist:")==0)
82             resultView->setModel(gs->getArtistModel(lineEdit->text()));
83         else if(sMethod->text().compare("Album")==0)
84             resultView->setModel(gs->getAlbumModel(lineEdit->text()));
85         else
86             return;
87
88
89         button->setText("Stop");
90         lineEdit->setDisabled(true);
91     }
92     else
93     {
94         resultView->setModel(model);
95         button->setText("Search");
96         resultView->setColumnWidth(0,resultView->viewport()->width()/2);
97         resultView->setColumnWidth(1,resultView->viewport()->width()/2);
98         lineEdit->setDisabled(false);
99     }
100     }
101 }
102 void groove::finishedS()
103 {
104     model = gs->getModel();
105     resultView->setModel(model);
106     button->setText("Search");
107     resultView->setColumnWidth(0,resultView->viewport()->width()/2);
108     resultView->setColumnWidth(1,resultView->viewport()->width()/2);
109     lineEdit->setDisabled(false);
110     resultView->setColumnHidden(2,true);
111 }
112 void groove::changeS( QAction * action)
113 {
114     sMethod->setText(action->text());
115     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
116 }
117 void groove::play()
118 {
119     QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
120     if(!selected.isEmpty())
121     {
122         QStandardItem *item = model->item(selected.first().row(),2);
123         if(item == 0)
124             return;
125         //gs->getSong();
126         gs->getSong(item->text());
127     }
128     //selected.
129     //if
130 }
131 void groove::startP()
132 {
133     if(!gs->sku.isValid())
134         return;
135     player->~sPlayer();
136     player = new sPlayer();
137     player->play(gs->streamID,gs->sku);
138
139 }
140 void groove::stop()
141 {
142     player->stop();
143 }