summaryrefslogtreecommitdiffstats
path: root/playerwidget.cpp
blob: 07ad1bab71bf39a4a16441b24307d29b1bbe9b67 (plain)
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(){

}