summaryrefslogtreecommitdiffstats
path: root/playerwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r--playerwidget.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp
new file mode 100644
index 0000000..07ad1ba
--- /dev/null
+++ b/playerwidget.cpp
@@ -0,0 +1,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(){
+
+}