Mercurial > minori
diff include/gui/pages/search.h @ 250:c130f47f6f48
*: many many changes
e.g. the search page is actually implemented now!
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Sun, 04 Feb 2024 21:17:17 -0500 |
parents | 8043152ef9d4 |
children | 862d0d8619f6 |
line wrap: on
line diff
--- a/include/gui/pages/search.h Wed Jan 24 20:18:59 2024 -0500 +++ b/include/gui/pages/search.h Sun Feb 04 21:17:17 2024 -0500 @@ -1,12 +1,66 @@ #ifndef __gui__pages__search_h #define __gui__pages__search_h -#include <QWidget> + +#include "core/anime.h" + +#include <QFrame> +#include <QAbstractListModel> +#include <QSortFilterProxyModel> +#include <QItemSelection> + +class QTreeView; + +class SearchPageListSortFilter final : public QSortFilterProxyModel { + Q_OBJECT + + public: + SearchPageListSortFilter(QObject* parent = nullptr); + + protected: + bool lessThan(const QModelIndex& l, const QModelIndex& r) const override; +}; + +class SearchPageListModel final : public QAbstractListModel { + Q_OBJECT -class SearchPage final : public QWidget { + public: + enum columns { + SR_TITLE, + SR_TYPE, + SR_EPISODES, + SR_SCORE, + SR_SEASON, + + NB_COLUMNS + }; + + SearchPageListModel(QObject* parent); + ~SearchPageListModel() override = default; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant data(const QModelIndex& index, int role) const override; + QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const override; + Qt::ItemFlags flags(const QModelIndex& index) const override; + + void ParseSearch(const std::vector<int>& ids); + Anime::Anime* GetAnimeFromIndex(const QModelIndex& index) const; + + private: + std::vector<int> ids; +}; + +class SearchPage final : public QFrame { Q_OBJECT public: SearchPage(QWidget* parent = nullptr); -}; + void Search(const std::string& search); + void DisplayListMenu(); + void ItemDoubleClicked(); + private: + SearchPageListModel* model = nullptr; + SearchPageListSortFilter* sort_model = nullptr; + QTreeView* treeview = nullptr; +}; #endif // __gui__pages__search_h