diff options
-rw-r--r-- | BeetPlayer.pro | 6 | ||||
-rw-r--r-- | collectionwidget.cpp | 18 | ||||
-rw-r--r-- | collectionwidget.h | 35 |
3 files changed, 57 insertions, 2 deletions
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 <QTreeView> +#include <QStandardItem> +#include <QSortFilterProxyModel> +#include <QHBoxLayout> + +#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 <QWidget> + +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 |