46da9d3bca73c1a2313aeea14bd10f3ff67c160f
[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     button = new QPushButton("Search");
16     QPushButton *dButton = new QPushButton("Play");
17     resultView = new QTableView();
18     QMenu *pushMenu = new QMenu();
19     //showFullScreen();
20     lineEdit->insert("");
21     lineEdit->setDisabled(true);
22     pushMenu->addAction("Song:");
23     pushMenu->addAction("Artist:");
24     pushMenu->addAction("Album:");
25
26     //sMethod->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Maximum);
27     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
28     sMethod->setMenu(pushMenu);
29     model = new  QStandardItemModel();
30     model->setHorizontalHeaderLabels(
31         QStringList() << "Please wait for initialization"
32                       /*<< "Artist"*/);
33     resultView->setModel(model);
34     resultView->verticalHeader()->hide();
35     resultView->horizontalHeader()->setStretchLastSection(true);
36     resultView->setSelectionBehavior(QAbstractItemView::SelectRows);
37     resultView->setSelectionMode(QAbstractItemView::SingleSelection);
38     resultView->setEditTriggers(QAbstractItemView::NoEditTriggers);
39     resultView->setColumnHidden(2,true);
40     resultView->setAutoScroll(false);
41
42     layout->addWidget(sMethod);
43     layout->addWidget(lineEdit);
44     layout->addWidget(button);
45     vlayout->addLayout(layout);
46     vlayout->addWidget(resultView);
47     vlayout->addWidget(dButton);
48     vlayout->setMenuBar(mBar);
49     setLayout(vlayout);
50     setWindowTitle("GrooveShark");
51     //Create New Grooveshark connection
52     gs = new gscom();
53     //Connections
54     connect(button, SIGNAL(clicked()), this, SLOT(search()));
55     connect(gs, SIGNAL(finishedSearch()), this, SLOT(finishedS()));
56     connect(lineEdit,SIGNAL(returnPressed()),this, SLOT(search()));
57     connect(pushMenu,SIGNAL(triggered(QAction*)),this,SLOT(changeS(QAction*)));
58     connect(dButton,SIGNAL(clicked()),this, SLOT(play()));
59     connect(gs,SIGNAL(sKeyFound()),this,SLOT(startP()));
60 }
61 void groove::search()
62 {
63     if(!lineEdit->text().isEmpty())
64     {
65     if(lineEdit->isEnabled())
66     {
67
68         if(sMethod->text().compare("Song:")==0)
69             resultView->setModel(gs->getSongModel(lineEdit->text()));
70         else if(sMethod->text().compare("Artist:")==0)
71             resultView->setModel(gs->getArtistModel(lineEdit->text()));
72         else if(sMethod->text().compare("Album")==0)
73             resultView->setModel(gs->getAlbumModel(lineEdit->text()));
74         else
75             return;
76
77
78         button->setText("Stop");
79         lineEdit->setDisabled(true);
80     }
81     else
82     {
83         resultView->setModel(model);
84         button->setText("Search");
85         resultView->setColumnWidth(0,resultView->viewport()->width()/2);
86         resultView->setColumnWidth(1,resultView->viewport()->width()/2);
87         lineEdit->setDisabled(false);
88     }
89     }
90 }
91 void groove::finishedS()
92 {
93     model = gs->getModel();
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     resultView->setColumnHidden(2,true);
100 }
101 void groove::changeS( QAction * action)
102 {
103     sMethod->setText(action->text());
104     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
105 }
106 void groove::play()
107 {
108     QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
109     if(!selected.isEmpty())
110     {
111         QStandardItem *item = model->item(selected.first().row(),2);
112         if(item == 0)
113             return;
114         //gs->getSong();
115         gs->getSong(item->text());
116     }
117     //selected.
118     //if
119 }
120 void groove::startP()
121 {
122     if(!gs->sku.isValid())
123         return;
124     player->~sPlayer();
125     player = new sPlayer();
126     player->play(gs->streamID,gs->sku);
127
128 }