Start adding support for playlist and progress on downloading songs
[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(gs,SIGNAL(sKeyFound()),this,SLOT(startP()));
70 }
71 void groove::search()
72 {
73     if(!lineEdit->text().isEmpty())
74     {
75     if(lineEdit->isEnabled())
76     {
77
78         if(sMethod->text().compare("Song:")==0)
79             resultView->setModel(gs->getSongModel(lineEdit->text()));
80         else if(sMethod->text().compare("Artist:")==0)
81             resultView->setModel(gs->getArtistModel(lineEdit->text()));
82         else if(sMethod->text().compare("Album")==0)
83             resultView->setModel(gs->getAlbumModel(lineEdit->text()));
84         else
85             return;
86
87
88         button->setText("Stop");
89         lineEdit->setDisabled(true);
90     }
91     else
92     {
93         resultView->setModel(model);
94         button->setText("Search");
95         resultView->setColumnWidth(0,resultView->viewport()->width()/2);
96         resultView->setColumnWidth(1,resultView->viewport()->width()/2);
97         lineEdit->setDisabled(false);
98     }
99     }
100 }
101 void groove::finishedS()
102 {
103     model = gs->getModel();
104     resultView->setModel(model);
105     button->setText("Search");
106     resultView->setColumnWidth(0,resultView->viewport()->width()/2);
107     resultView->setColumnWidth(1,resultView->viewport()->width()/2);
108     lineEdit->setDisabled(false);
109     resultView->setColumnHidden(2,true);
110 }
111 void groove::changeS( QAction * action)
112 {
113     sMethod->setText(action->text());
114     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
115 }
116 void groove::play()
117 {
118     QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
119     if(!selected.isEmpty())
120     {
121         QStandardItem *item = model->item(selected.first().row(),2);
122         if(item == 0)
123             return;
124         //gs->getSong();
125         gs->getSong(item->text());
126     }
127     //selected.
128     //if
129 }
130 void groove::startP()
131 {
132     if(!gs->sku.isValid())
133         return;
134     player->~sPlayer();
135     player = new sPlayer();
136     player->play(gs->streamID,gs->sku);
137
138 }