/* * 86Box A hypervisor and IBM PC system emulator that specializes in * running old operating systems and software designed for IBM * PC systems and compatibles from 1981 through fairly recent * system designs based on the PCI bus. * * This file is part of the 86Box distribution. * * Header for 86Box VM manager list view delegate module * * * * Authors: cold-brewed * * Copyright 2024 cold-brewed */ #ifndef QT_VMMANAGER_LISTVIEWDELEGATE_H #define QT_VMMANAGER_LISTVIEWDELEGATE_H #include #include #include "qt_vmmanager_system.hpp" class VMManagerListViewDelegateStyle { VMManagerListViewDelegateStyle(); [[nodiscard]] inline QRect systemNameBox(const QStyleOptionViewItem &option, const QModelIndex &index) const; [[nodiscard]] inline qreal statusFontPointSize(const QFont &f) const; [[nodiscard]] inline QRect statusBox(const QStyleOptionViewItem &option, const QModelIndex &index) const; QSize iconSize; QSize smallIconSize; QMargins margins; int spacingHorizontal; int spacingVertical; friend class VMManagerListViewDelegate; }; class VMManagerListViewDelegate final : public QStyledItemDelegate { Q_OBJECT public: explicit VMManagerListViewDelegate(QObject *parent = nullptr); ~VMManagerListViewDelegate() override; using QStyledItemDelegate::QStyledItemDelegate; [[nodiscard]] QMargins contentsMargins() const; void setContentsMargins(int left, int top, int right, int bottom) const; [[nodiscard]] int horizontalSpacing() const; void setHorizontalSpacing(int spacing) const; [[nodiscard]] int verticalSpacing() const; void setVerticalSpacing(int spacing) const; void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; [[nodiscard]] QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: VMManagerListViewDelegateStyle *m_ptr; }; #endif // QT_VMMANAGER_LISTVIEWDELEGATE_H