BookShelf/mainwindow.h

66 lines
2.6 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QItemDelegate>
#include <QLabel>
#include <QListView>
#include <QMainWindow>
#include <QSplitter>
#include <QStandardItemModel>
#include <QTableView>
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