#ifndef COLLECTIONWIDGET_H #define COLLECTIONWIDGET_H #include #include "beetview.h" class QStandardItemModel; class QSortFilterProxyModel; class QLineEdit; class QActionGroup; 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); BeetView *view() { return mView; } QStandardItemModel *model() { return mModel; } void setHeaders(const QStringList headers) { mHeaders = headers; } const QStringList headers() const { return mHeaders; } void disableSorting() { mView->setSortingEnabled(false); } void enableSorting(int column = 0, Qt::SortOrder sortOrder = Qt::AscendingOrder); QActionGroup *customActions() { return mCustomActions; } signals: void message(const QString &msg); public slots: virtual void populate() { return; } virtual void expandFirst(QSortFilterProxyModel *proxy); private: BeetView *mView; QStandardItemModel *mModel; QLineEdit *mFilter; QStringList mHeaders; QActionGroup *mCustomActions; }; #endif // COLLECTIONWIDGET_H