From f4c0a82668965016ccbaa3f928090814976aa438 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 25 Feb 2017 03:22:17 +0100 Subject: Implement basic player layout Does nothing yet, just for show :) --- BeetPlayer.pro | 7 +++- beetplayer.cpp | 3 ++ playerwidget.cpp | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ playerwidget.h | 42 +++++++++++++++++++ 4 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 playerwidget.cpp create mode 100644 playerwidget.h diff --git a/BeetPlayer.pro b/BeetPlayer.pro index ee39671..5e319f0 100644 --- a/BeetPlayer.pro +++ b/BeetPlayer.pro @@ -27,14 +27,17 @@ SOURCES += main.cpp\ beetplayer.cpp \ configurationdialog.cpp \ indexerwidget.cpp \ - globals.cpp + globals.cpp \ + playerwidget.cpp HEADERS += beetplayer.h \ configurationdialog.h \ indexerwidget.h \ - globals.h + globals.h \ + playerwidget.h LIBS += -ltag RESOURCES += \ beetplayer.qrc + diff --git a/beetplayer.cpp b/beetplayer.cpp index 5402b80..3f3c793 100644 --- a/beetplayer.cpp +++ b/beetplayer.cpp @@ -9,6 +9,7 @@ #include "beetplayer.h" #include "configurationdialog.h" #include "indexerwidget.h" +#include "playerwidget.h" #include "globals.h" BeetPlayer::BeetPlayer(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, f) { @@ -22,6 +23,8 @@ BeetPlayer::BeetPlayer(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, //tabs mTab = new QTabWidget; IndexerWidget *indexer = new IndexerWidget; + PlayerWidget *player = new PlayerWidget; + mTab->addTab(player, tr("Player")); mTab->addTab(indexer, tr("Indexer")); connect(mTab, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); menuBar()->clear(); 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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(){ + +} diff --git a/playerwidget.h b/playerwidget.h new file mode 100644 index 0000000..66c813a --- /dev/null +++ b/playerwidget.h @@ -0,0 +1,42 @@ +#ifndef PLAYERWIDGET_H +#define PLAYERWIDGET_H + +#include + +class QTreeView; +class QStandardItemModel; +class QSortFilterProxyModel; +class QLineEdit; +class QComboBox; +class QLabel; +class QSlider; +class QTextEdit; +class QMediaPlayer; + +class PlayerWidget : public QWidget { + Q_OBJECT + public: + explicit PlayerWidget(QWidget *parent = 0); + + public slots: + //void doFilter(); + void populateBy(QString selector); + void refreshSort(); + + private: + void setupGui(); + void populateByArtist(); + QComboBox *mSortBy; + QLineEdit *mFilter; + QMediaPlayer *mPlayer; + QTreeView *mView; + QStandardItemModel *mViewModel; + QSortFilterProxyModel *mViewProxy; + QLabel *mNowPlayingL; + QSlider *mSlider; + QTextEdit *mCurrentTE; + QTreeView *mPlayListView; + QStandardItemModel *mPlayListModel; +}; + +#endif // PLAYERWIDGET_H -- cgit v1.2.3-70-g09d2