summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--BeetPlayer.pro7
-rw-r--r--beetplayer.cpp3
-rw-r--r--playerwidget.cpp125
-rw-r--r--playerwidget.h42
4 files changed, 175 insertions, 2 deletions
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 <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(){
+
+}
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 <QWidget>
+
+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