#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include class GroupDisplayDelegate : public QItemDelegate { public: GroupDisplayDelegate(); virtual ~GroupDisplayDelegate() override; // QAbstractItemDelegate interface public: virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual void setEditorData(QWidget* editor, const QModelIndex& index) const override; virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override; virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; }; class ItemDisplayDelegate : public QItemDelegate { public: ItemDisplayDelegate(); virtual ~ItemDisplayDelegate() override; // QAbstractItemDelegate interface public: virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override; virtual void setEditorData(QWidget* editor, const QModelIndex& index) const override; virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override; virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override; }; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget* parent = nullptr); virtual ~MainWindow() override; private: QListView* const groups_view; QStandardItemModel* const groups_list; QListView* const items_view; QStandardItemModel* const items_list; QSplitter* const details_panel; QLabel* const cover_display; QTableView* const details_view; QStandardItemModel* const details_model; QTableView* const labels_view; QStandardItemModel* const labels_model; void init_groups_list(QStandardItemModel* model); void init_items_present(const QModelIndex& index); }; #endif // MAINWINDOW_H