Add (better) portrait mode support. This commit will temporarily break
[groove] / groove.cpp
1 #include "groove.h"
2 #include "qmaemo5rotator.h"
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     QMenu *moreAction = new QMenu();
30     moreAction->addAction("Playlist");
31     moreAction->addAction("Add current song to playlist");
32     moreAction->addAction("Show download Progress");
33     moreButton->setMenu(moreAction);
34
35     //sMethod->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Maximum);
36     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
37     sMethod->setMenu(pushMenu);
38     model = new  QStandardItemModel();
39     model->setHorizontalHeaderLabels(
40         QStringList() << "Please wait for initialization"
41                       /*<< "Artist"*/);
42     resultView->setModel(model);
43     resultView->verticalHeader()->hide();
44     resultView->horizontalHeader()->setStretchLastSection(true);
45     resultView->setSelectionBehavior(QAbstractItemView::SelectRows);
46     resultView->setSelectionMode(QAbstractItemView::SingleSelection);
47     resultView->setEditTriggers(QAbstractItemView::NoEditTriggers);
48     resultView->setColumnHidden(2,true);
49     resultView->setColumnHidden(3,true);
50     resultView->setAutoScroll(false);
51     /*QPalette pal = resultView->palette();
52     pal.setBrush(QPalette::Highlight,QBrush(Qt::transparent,Qt::NoBrush));
53     resultView->setPalette(pal);*/
54     portrait = false;
55     layout->addWidget(sMethod);
56     rot = new QMaemo5Rotator(QMaemo5Rotator::AutomaticBehavior,this);
57     layout->addWidget(lineEdit);
58     layout->addWidget(button);
59     vlayout->addLayout(layout);
60     vlayout->addWidget(resultView);
61     vlayout->addLayout(bottomLayout);
62     bottomLayout->addWidget(dButton);
63     bottomLayout->addWidget(stopButton);
64     bottomLayout->addWidget(moreButton);
65     vlayout->setMenuBar(mBar);
66     setLayout(vlayout);
67     setWindowTitle("GrooveShark");
68     //Create New Grooveshark connection
69     gs = new gscom();
70     //Connections
71     connect(button, SIGNAL(clicked()), this, SLOT(search()));
72     connect(gs, SIGNAL(finishedSearch()), this, SLOT(finishedS()));
73     connect(lineEdit,SIGNAL(returnPressed()),this, SLOT(search()));
74     connect(pushMenu,SIGNAL(triggered(QAction*)),this,SLOT(changeS(QAction*)));
75     connect(dButton,SIGNAL(clicked()),this, SLOT(play()));
76     connect(stopButton,SIGNAL(clicked()),this,SLOT(stop()));
77     connect(gs,SIGNAL(sKeyFound()),this,SLOT(startP()));
78     connect(moreButton,SIGNAL(clicked()),this,SLOT(moreB()));
79     //connect(rotator,SIGNAL(orientationChanged(Orientation)),this,SLOT(orientationChanged()));
80 }
81 void groove::search()
82 {
83     if(!lineEdit->text().isEmpty())
84     {
85     if(lineEdit->isEnabled())
86     {
87
88         if(sMethod->text().compare("Song:")==0)
89             resultView->setModel(gs->getSongModel(lineEdit->text()));
90         else if(sMethod->text().compare("Artist:")==0)
91             resultView->setModel(gs->getArtistModel(lineEdit->text()));
92         else if(sMethod->text().compare("Album")==0)
93             resultView->setModel(gs->getAlbumModel(lineEdit->text()));
94         else
95             return;
96
97
98         button->setText("Stop");
99         lineEdit->setDisabled(true);
100     }
101     else
102     {
103         resultView->setModel(model);
104         button->setText("Search");
105         resultView->setColumnWidth(0,resultView->viewport()->width()/2);
106         resultView->setColumnWidth(1,resultView->viewport()->width()/2);
107         lineEdit->setDisabled(false);
108     }
109     }
110 }
111 void groove::finishedS()
112 {
113     model = gs->getModel();
114     resultView->setModel(model);
115     button->setText("Search");
116     resultView->setColumnWidth(0,resultView->viewport()->width()/2);
117     resultView->setColumnWidth(1,resultView->viewport()->width()/2);
118     lineEdit->setDisabled(false);
119     resultView->setColumnHidden(2,true);
120 }
121 void groove::changeS( QAction * action)
122 {
123     sMethod->setText(action->text());
124     sMethod->setMaximumWidth(sMethod->sizeHint().rwidth());
125 }
126 void groove::play()
127 {
128     QModelIndexList selected = resultView->selectionModel()->selectedRows(0);
129     if(!selected.isEmpty())
130     {
131         QStandardItem *item = model->item(selected.first().row(),2);
132         if(item == 0)
133             return;
134         //gs->getSong();
135         gs->getSong(item->text());
136     }
137     //selected.
138     //if
139 }
140 void groove::startP()
141 {
142     if(!gs->sku.isValid())
143         return;
144     player->~sPlayer();
145     player = new sPlayer();
146 #ifdef Q_WS_MAEMO_5
147     player->play(gs->streamID,gs->sku,rot->currentOrientation());
148 #else
149     player->play(gs->streamID,gs->sku);
150 #endif
151 }
152 void groove::stop()
153 {
154     player->stop();
155 }
156 void groove::moreB()
157 {
158     qDebug() << "He pressed the button";
159 }
160 void groove::orientationChanged()
161 {
162 #ifdef Q_WS_MAEMO_5
163     QRect screenGeometry = QApplication::desktop()->screenGeometry();
164     if (screenGeometry.width() > screenGeometry.height())
165         portrait = false;
166     else
167         portrait = true;
168 #endif
169 }