Files
86Box/src/qt/qt_vmmanager_listviewdelegate.hpp
cold-brewed c6da2caff2 vmm preview
2025-05-30 15:20:23 +05:00

67 lines
2.0 KiB
C++

/*
* 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 <QPainter>
#include <QStyledItemDelegate>
#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