Mercurial > minori
diff include/gui/pages/torrents.h @ 114:ab191e28e69d
*: add initial torrent stuff
WOAH!
these checkboxes are a pain in my fucking ass
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Tue, 07 Nov 2023 08:03:42 -0500 |
parents | 8043152ef9d4 |
children | 39521c47c7a3 |
line wrap: on
line diff
--- a/include/gui/pages/torrents.h Mon Nov 06 13:48:11 2023 -0500 +++ b/include/gui/pages/torrents.h Tue Nov 07 08:03:42 2023 -0500 @@ -1,13 +1,77 @@ #ifndef __gui__pages__torrents_h #define __gui__pages__torrents_h -#include <QWidget> +#include "core/torrent.h" +#include <QFrame> +#include <QAbstractListModel> +#include <QSortFilterProxyModel> + +class TorrentModelItem : public Torrent { + public: + bool GetChecked() const { return _checked; }; + void SetChecked(bool checked) { _checked = checked; }; + + private: + bool _checked = false; +}; + +class TorrentsPageListSortFilter final : public QSortFilterProxyModel { + Q_OBJECT + + public: + TorrentsPageListSortFilter(QObject* parent = nullptr); + + protected: + bool lessThan(const QModelIndex& l, const QModelIndex& r) const override; +}; + +class TorrentsPageListModel final : public QAbstractListModel { + Q_OBJECT -class TorrentsPage final : public QWidget { + public: + enum columns { + TL_TITLE, + TL_EPISODE, + TL_GROUP, + TL_SIZE, + TL_RESOLUTION, + TL_SEEDERS, + TL_LEECHERS, + TL_DOWNLOADERS, + TL_DESCRIPTION, + TL_FILENAME, + TL_RELEASEDATE, + + NB_COLUMNS + }; + + TorrentsPageListModel(QObject* parent); + ~TorrentsPageListModel() override = default; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + bool setData(const QModelIndex& index, const QVariant& value, int role) 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; + + QByteArray DownloadTorrentList(); + void ParseTorrentList(const QByteArray& ba); + void RefreshTorrentList(); + + private: + std::vector<TorrentModelItem> list; +}; + +class TorrentsPage final : public QFrame { Q_OBJECT public: TorrentsPage(QWidget* parent = nullptr); + void Refresh(); + + private: + TorrentsPageListModel* model = nullptr; + TorrentsPageListSortFilter* sort_model = nullptr; }; #endif // __gui__pages__torrents_h