annotate include/gui/pages/anime_list.h @ 118:39521c47c7a3

*: another huge megacommit, SORRY The torrents page works a lot better now Added the edit option to the anime list right click menu Vectorized currently playing files Available player and extensions are now loaded at runtime from files in (dotpath)/players.json and (dotpath)/extensions.json These paths are not permanent and will likely be moved to (dotpath)/recognition ... ... ...
author Paper <mrpapersonic@gmail.com>
date Tue, 07 Nov 2023 23:40:54 -0500
parents ab191e28e69d
children 862d0d8619f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
1 #ifndef __gui__pages__anime_list_h
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
2 #define __gui__pages__anime_list_h
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
3
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
4 #include "core/anime.h"
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
5 #include <QAbstractListModel>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
6 #include <QSortFilterProxyModel>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
7 #include <QStyledItemDelegate>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
8 #include <QWidget>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
9 #include <vector>
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
10
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
11 class QTreeView;
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
12 class QTabBar;
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
13
95
8043152ef9d4 include: set classes as final where appropriate
Paper <mrpapersonic@gmail.com>
parents: 85
diff changeset
14 class AnimeListPageSortFilter final : public QSortFilterProxyModel {
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
15 Q_OBJECT
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
16
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
17 public:
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
18 AnimeListPageSortFilter(QObject* parent = nullptr);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
19
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
20 protected:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
21 bool lessThan(const QModelIndex& l, const QModelIndex& r) const override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
22 };
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
23
95
8043152ef9d4 include: set classes as final where appropriate
Paper <mrpapersonic@gmail.com>
parents: 85
diff changeset
24 class AnimeListPageModel final : public QAbstractListModel {
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
25 Q_OBJECT
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
26
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
27 public:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
28 enum columns {
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
29 AL_TITLE,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
30 AL_PROGRESS,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
31 AL_EPISODES,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
32 AL_SCORE,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
33 AL_AVG_SCORE,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
34 AL_TYPE,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
35 AL_SEASON,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
36 AL_STARTED,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
37 AL_COMPLETED,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
38 AL_UPDATED,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
39 AL_NOTES,
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
40
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
41 NB_COLUMNS
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
42 };
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
43
114
ab191e28e69d *: add initial torrent stuff
Paper <mrpapersonic@gmail.com>
parents: 108
diff changeset
44 AnimeListPageModel(QObject* parent, Anime::ListStatus _status);
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
45 ~AnimeListPageModel() override = default;
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
46 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
47 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
48 QVariant data(const QModelIndex& index, int role) const override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
49 QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
50 void RefreshList();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
51 Anime::Anime* GetAnimeFromIndex(QModelIndex index);
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
52
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
53 private:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
54 Anime::ListStatus status;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
55 std::vector<Anime::Anime> list;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
56 };
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
57
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
58 /* todo: rename these to "page" or something more
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
59 sensible than "widget" */
95
8043152ef9d4 include: set classes as final where appropriate
Paper <mrpapersonic@gmail.com>
parents: 85
diff changeset
60 class AnimeListPage final : public QWidget {
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
61 Q_OBJECT
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
62
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
63 public:
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
64 AnimeListPage(QWidget* parent);
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 10
diff changeset
65 void Refresh();
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
66
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
67 protected:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
68 void paintEvent(QPaintEvent*) override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
69 void InitStyle(QStyleOptionTabWidgetFrame* option) const;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
70 void InitBasicStyle(QStyleOptionTabWidgetFrame* option) const;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
71 void SetupLayout();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
72 void showEvent(QShowEvent*) override;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
73 void resizeEvent(QResizeEvent* e) override;
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 10
diff changeset
74 void RefreshList();
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 10
diff changeset
75 void RefreshTabs();
77
6f7385bd334c *: update
Paper <mrpapersonic@gmail.com>
parents: 64
diff changeset
76 void UpdateAnime(int id);
6f7385bd334c *: update
Paper <mrpapersonic@gmail.com>
parents: 64
diff changeset
77 void RemoveAnime(int id);
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
78
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
79 private slots:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
80 void DisplayColumnHeaderMenu();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
81 void DisplayListMenu();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
82 void ItemDoubleClicked();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
83 void SetColumnDefaults();
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
84 int VisibleColumnsCount() const;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
85
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
86 private:
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
87 QTabBar* tab_bar;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
88 QTreeView* tree_view;
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
89 QRect panelRect;
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 77
diff changeset
90 std::array<AnimeListPageSortFilter*, 5> sort_models;
10
Paper <mrpapersonic@gmail.com>
parents: 9
diff changeset
91 };
85
c69230dc2b5d *: cleanup includes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
92
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 7
diff changeset
93 #endif // __gui__pages__anime_list_h