From d3439845817beb78b6036762ee42b428069e0482 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Feb 2018 05:54:31 +0100 Subject: Introduce new class CollectionWidget It's intended to be the base class/widget for different views of the collection, eg. Artists or Songs. Each collection view should have its own widget to make it easier to keep the state when switching between collection views. Let's see how it turns out :) --- BeetPlayer.pro | 6 ++++-- collectionwidget.cpp | 18 ++++++++++++++++++ collectionwidget.h | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 collectionwidget.cpp create mode 100644 collectionwidget.h diff --git a/BeetPlayer.pro b/BeetPlayer.pro index ef8c662..7b7da0d 100644 --- a/BeetPlayer.pro +++ b/BeetPlayer.pro @@ -34,7 +34,8 @@ SOURCES += main.cpp\ indexerdialog.cpp \ helper.cpp \ webdownloader.cpp \ - webradiodialog.cpp + webradiodialog.cpp \ + collectionwidget.cpp HEADERS += beetplayer.h \ configurationdialog.h \ @@ -45,7 +46,8 @@ HEADERS += beetplayer.h \ indexerdialog.h \ helper.h \ webdownloader.h \ - webradiodialog.h + webradiodialog.h \ + collectionwidget.h LIBS += -ltag diff --git a/collectionwidget.cpp b/collectionwidget.cpp new file mode 100644 index 0000000..a27041a --- /dev/null +++ b/collectionwidget.cpp @@ -0,0 +1,18 @@ +#include +#include +#include +#include + +#include "collectionwidget.h" + +CollectionWidget::CollectionWidget(QWidget *parent) : QWidget(parent){ + mView = new QTreeView; + mModel = new QStandardItemModel(this); + mProxy = new QSortFilterProxyModel(this); + mProxy->setSourceModel(mModel); + mView->setModel(mProxy); + mView->setSortingEnabled(true); + QHBoxLayout *mainLayout = new QHBoxLayout; + mainLayout->addWidget(mView); + setLayout(mainLayout); +} diff --git a/collectionwidget.h b/collectionwidget.h new file mode 100644 index 0000000..86135bb --- /dev/null +++ b/collectionwidget.h @@ -0,0 +1,35 @@ +#ifndef COLLECTIONWIDGET_H +#define COLLECTIONWIDGET_H + +#include + +class QTreeView; +class QStandardItemModel; +class QSortFilterProxyModel; + +class CollectionWidget : public QWidget { + Q_OBJECT + public: + enum CustomRoles { TypeRole = Qt::UserRole + 1, IdRole = Qt::UserRole + 2, FullPathRole = Qt::UserRole + 3, GenreRole = Qt::UserRole + 4, ArtistRole = Qt::UserRole + 5, TitleRole = Qt::UserRole + 6, AlbumRole = Qt::UserRole + 7, LengthRole = Qt::UserRole + 8, UrlRole = Qt::UserRole + 9, RemoteRole = Qt::UserRole + 10 }; + enum ItemType { Artist, Album, Song, Genre, WebRadio }; + explicit CollectionWidget(QWidget *parent = nullptr); + QTreeView *view() { return mView; } + QStandardItemModel *model() { return mModel; } + QSortFilterProxyModel *proxy() { return mProxy; } + void setHeaders(const QStringList headers) { mHeaders = headers; } + const QStringList headers() const { return mHeaders; } + + signals: + + public slots: + virtual void populate() { return; } + + private: + QTreeView *mView; + QStandardItemModel *mModel; + QSortFilterProxyModel *mProxy; + QStringList mHeaders; + +}; + +#endif // COLLECTIONWIDGET_H -- cgit v1.2.3-70-g09d2