diff options
author | Arno <arno@disconnect.de> | 2017-02-25 03:22:17 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-25 03:22:17 +0100 |
commit | f4c0a82668965016ccbaa3f928090814976aa438 (patch) | |
tree | 68af1b326b9ab966a0ab17dcb20a9d2d00df902a /playerwidget.cpp | |
parent | 803959759a66d01d44d9e07b38f4220a93e57a2c (diff) | |
download | BeetPlayer-f4c0a82668965016ccbaa3f928090814976aa438.tar.gz BeetPlayer-f4c0a82668965016ccbaa3f928090814976aa438.tar.bz2 BeetPlayer-f4c0a82668965016ccbaa3f928090814976aa438.zip |
Implement basic player layout
Does nothing yet, just for show :)
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r-- | playerwidget.cpp | 125 |
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(){ + +} |