Files
86Box/src/qt/qt_machinestatus.hpp

88 lines
2.3 KiB
C++
Raw Normal View History

2021-11-28 20:49:05 +01:00
#ifndef QT_MACHINESTATUS_HPP
#define QT_MACHINESTATUS_HPP
#include <QWidget>
#include <QLabel>
#include <QMouseEvent>
#include <QMimeData>
2021-11-28 20:49:05 +01:00
2021-12-16 22:30:48 +01:00
#include <memory>
class QStatusBar;
2021-11-28 20:49:05 +01:00
class ClickableLabel : public QLabel {
Q_OBJECT;
2022-11-19 08:49:04 -05:00
public:
explicit ClickableLabel(QWidget *parent = nullptr)
: QLabel(parent)
{
}
~ClickableLabel() {};
signals:
void clicked(QPoint);
void doubleClicked(QPoint);
void dropped(QString);
2022-11-19 08:49:04 -05:00
protected:
void mousePressEvent(QMouseEvent *event) override { emit clicked(event->globalPos()); }
void mouseDoubleClickEvent(QMouseEvent *event) override { emit doubleClicked(event->globalPos()); }
void dragEnterEvent(QDragEnterEvent *event) override
{
if (event->mimeData()->hasUrls() && event->mimeData()->urls().size() == 1) {
event->setDropAction(Qt::CopyAction);
event->acceptProposedAction();
} else
event->ignore();
}
void dragMoveEvent(QDragMoveEvent *event) override
{
if (event->mimeData()->hasUrls() && event->mimeData()->urls().size() == 1) {
event->setDropAction(Qt::CopyAction);
event->acceptProposedAction();
} else
event->ignore();
}
void dropEvent(QDropEvent *event) override
{
if (event->dropAction() == Qt::CopyAction) {
emit dropped(event->mimeData()->urls()[0].toLocalFile());
} else
event->ignore();
}
};
2022-11-19 08:49:04 -05:00
class MachineStatus : public QObject {
2021-11-28 20:49:05 +01:00
Q_OBJECT
public:
explicit MachineStatus(QObject *parent = nullptr);
2021-11-28 20:49:05 +01:00
~MachineStatus();
static bool hasCassette();
static bool hasIDE();
static bool hasSCSI();
2022-11-19 08:49:04 -05:00
static void iterateFDD(const std::function<void(int i)> &cb);
static void iterateCDROM(const std::function<void(int i)> &cb);
static void iterateZIP(const std::function<void(int i)> &cb);
static void iterateMO(const std::function<void(int i)> &cb);
static void iterateNIC(const std::function<void(int i)> &cb);
QString getMessage();
void clearActivity();
2021-11-28 20:49:05 +01:00
public slots:
2022-11-19 08:49:04 -05:00
void refresh(QStatusBar *sbar);
void message(const QString &msg);
void updateTip(int tag);
void refreshEmptyIcons();
void refreshIcons();
2021-11-28 20:49:05 +01:00
private:
struct States;
std::unique_ptr<States> d;
2022-11-19 08:49:04 -05:00
QTimer *refreshTimer;
2021-11-28 20:49:05 +01:00
};
#endif // QT_MACHINESTATUS_HPP