1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#include <QComboBox>
#include <QGroupBox>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QTextEdit>
#include <QSlider>
#include <QTreeView>
#include <QSplitter>
#include <QStandardItemModel>
#include <QSortFilterProxyModel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QSqlDatabase>
#include <QSqlQuery>
#include "playerwidget.h"
PlayerWidget::PlayerWidget(QWidget *parent) : QWidget(parent){
setupGui();
}
void PlayerWidget::setupGui(){
//filter
QGroupBox *filterGB = new QGroupBox(tr("Filter"));
mFilter = new QLineEdit;
connect(mFilter, SIGNAL(returnPressed()), this, SLOT(doFilter()));
QPushButton *filterB = new QPushButton(tr("Go!"));
connect(filterB, SIGNAL(clicked()), this, SLOT(doFilter()));
QHBoxLayout *filterLayout = new QHBoxLayout;
filterLayout->addWidget(mFilter);
filterLayout->addWidget(filterB);
filterGB->setLayout(filterLayout);
//show by
QGroupBox *sortByGB = new QGroupBox(tr("Show by"));
mSortBy = new QComboBox;
mSortBy->addItems(QStringList() << tr("Artists") << tr("Albums") << tr("Genres"));
connect(mSortBy, SIGNAL(currentIndexChanged(QString)), this, SLOT(populateBy(QString)));
QPushButton *refreshSortB = new QPushButton(tr("Refresh"));
connect(refreshSortB, SIGNAL(clicked()), this, SLOT(refreshSort()));
QHBoxLayout *sortByL = new QHBoxLayout;
sortByL->addWidget(mSortBy);
sortByL->addWidget(refreshSortB);
sortByL->setStretchFactor(mSortBy, 3);
sortByGB->setLayout(sortByL);
//THE view
mView = new QTreeView;
mViewModel = new QStandardItemModel;
mViewProxy = new QSortFilterProxyModel;
mViewProxy->setSourceModel(mViewModel);
//left widget
QWidget *leftWidget = new QWidget;
QVBoxLayout *leftWidgetL = new QVBoxLayout;
leftWidgetL->addWidget(sortByGB);
leftWidgetL->addWidget(filterGB);
leftWidgetL->addWidget(mView);
leftWidget->setLayout(leftWidgetL);
//now playing label
mNowPlayingL = new QLabel;
mNowPlayingL->setAlignment(Qt::AlignCenter);
mNowPlayingL->setFont(QFont("courier new", 20, QFont::Bold));
mNowPlayingL->setText(tr("(none)"));
//slider
mSlider = new QSlider;
mSlider->setOrientation(Qt::Horizontal);
//current info
QGroupBox *currentInfoGB = new QGroupBox(tr("Current"));
mCurrentTE = new QTextEdit;
mCurrentTE->setReadOnly(true);
QVBoxLayout *currentInfoL = new QVBoxLayout;
currentInfoL->addWidget(mCurrentTE);
currentInfoGB->setLayout(currentInfoL);
//center widget
QWidget *centerWidget = new QWidget;
QVBoxLayout *centerWidgetL = new QVBoxLayout;
centerWidgetL->addWidget(mNowPlayingL);
centerWidgetL->addWidget(mSlider);
centerWidgetL->addWidget(currentInfoGB);
centerWidget->setLayout(centerWidgetL);
//playlist
mPlayListModel = new QStandardItemModel;
mPlayListView = new QTreeView;
mPlayListView->setModel(mPlayListModel);
QGroupBox *playListGB = new QGroupBox(tr("Playlist"));
QVBoxLayout *playListL = new QVBoxLayout;
playListL->addWidget(mPlayListView);
playListGB->setLayout(playListL);
//right widget
QWidget *rightWidget = new QWidget;
QVBoxLayout *rightWidgetL = new QVBoxLayout;
rightWidgetL->addWidget(playListGB);
rightWidget->setLayout(rightWidgetL);
//put it all together
QSplitter *splitter = new QSplitter;
splitter->addWidget(leftWidget);
splitter->addWidget(centerWidget);
splitter->addWidget(rightWidget);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(splitter);
setLayout(mainLayout);
}
void PlayerWidget::populateBy(QString selector){
if(selector == tr("Artist")){
populateByArtist();
}
}
void PlayerWidget::refreshSort(){
populateBy(mSortBy->currentText());
}
void PlayerWidget::populateByArtist(){
}
|