2021-12-03 11:38:00 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <QObject>
|
2021-12-14 00:31:55 +06:00
|
|
|
#include <QMap>
|
2022-08-30 17:18:51 -04:00
|
|
|
#include "qt_mediahistorymanager.hpp"
|
2021-12-03 11:38:00 +01:00
|
|
|
|
2022-08-30 17:18:51 -04:00
|
|
|
extern "C" {
|
|
|
|
|
#include <86box/86box.h>
|
|
|
|
|
}
|
2021-12-03 11:38:00 +01:00
|
|
|
class QMenu;
|
|
|
|
|
|
2024-03-20 21:25:14 +05:00
|
|
|
class MediaMenu : public QObject {
|
2021-12-03 11:38:00 +01:00
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
2022-11-19 08:49:04 -05:00
|
|
|
MediaMenu(QWidget *parent);
|
2021-12-03 11:38:00 +01:00
|
|
|
|
2022-11-19 08:49:04 -05:00
|
|
|
void refresh(QMenu *parentMenu);
|
2021-12-03 11:38:00 +01:00
|
|
|
|
|
|
|
|
// because some 86box C-only code needs to call zip and
|
|
|
|
|
// mo eject directly
|
|
|
|
|
static std::shared_ptr<MediaMenu> ptr;
|
|
|
|
|
|
|
|
|
|
void cassetteNewImage();
|
|
|
|
|
void cassetteSelectImage(bool wp);
|
2022-11-19 08:49:04 -05:00
|
|
|
void cassetteMount(const QString &filename, bool wp);
|
2021-12-03 11:38:00 +01:00
|
|
|
void cassetteEject();
|
|
|
|
|
void cassetteUpdateMenu();
|
|
|
|
|
|
|
|
|
|
void cartridgeSelectImage(int i);
|
2022-11-19 08:49:04 -05:00
|
|
|
void cartridgeMount(int i, const QString &filename);
|
2021-12-03 11:38:00 +01:00
|
|
|
void cartridgeEject(int i);
|
|
|
|
|
void cartridgeUpdateMenu(int i);
|
|
|
|
|
|
|
|
|
|
void floppyNewImage(int i);
|
|
|
|
|
void floppySelectImage(int i, bool wp);
|
2022-11-19 08:49:04 -05:00
|
|
|
void floppyMount(int i, const QString &filename, bool wp);
|
2021-12-03 11:38:00 +01:00
|
|
|
void floppyEject(int i);
|
2022-10-01 17:39:03 -04:00
|
|
|
void floppyMenuSelect(int index, int slot);
|
2021-12-03 11:38:00 +01:00
|
|
|
void floppyExportTo86f(int i);
|
|
|
|
|
void floppyUpdateMenu(int i);
|
|
|
|
|
|
|
|
|
|
void cdromMute(int i);
|
2024-05-19 21:17:57 +02:00
|
|
|
void cdromMount(int i, int dir, const QString &arg);
|
2022-11-19 08:49:04 -05:00
|
|
|
void cdromMount(int i, const QString &filename);
|
2021-12-03 11:38:00 +01:00
|
|
|
void cdromEject(int i);
|
2022-08-30 17:18:51 -04:00
|
|
|
void cdromReload(int index, int slot);
|
|
|
|
|
void updateImageHistory(int index, int slot, ui::MediaType type);
|
|
|
|
|
void clearImageHistory();
|
2021-12-03 11:38:00 +01:00
|
|
|
void cdromUpdateMenu(int i);
|
|
|
|
|
|
|
|
|
|
void zipNewImage(int i);
|
|
|
|
|
void zipSelectImage(int i, bool wp);
|
2022-11-19 08:49:04 -05:00
|
|
|
void zipMount(int i, const QString &filename, bool wp);
|
2021-12-03 11:38:00 +01:00
|
|
|
void zipEject(int i);
|
|
|
|
|
void zipReload(int i);
|
|
|
|
|
void zipUpdateMenu(int i);
|
|
|
|
|
|
|
|
|
|
void moNewImage(int i);
|
|
|
|
|
void moSelectImage(int i, bool wp);
|
2022-11-19 08:49:04 -05:00
|
|
|
void moMount(int i, const QString &filename, bool wp);
|
2021-12-03 11:38:00 +01:00
|
|
|
void moEject(int i);
|
|
|
|
|
void moReload(int i);
|
|
|
|
|
void moUpdateMenu(int i);
|
2022-08-27 19:08:28 +02:00
|
|
|
|
2022-08-28 13:56:24 +02:00
|
|
|
void nicConnect(int i);
|
|
|
|
|
void nicDisconnect(int i);
|
2022-08-27 19:08:28 +02:00
|
|
|
void nicUpdateMenu(int i);
|
2022-11-19 08:49:04 -05:00
|
|
|
|
2024-03-20 21:25:14 +05:00
|
|
|
public slots:
|
|
|
|
|
void cdromUpdateUi(int i);
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
void onCdromUpdateUi(int i);
|
|
|
|
|
|
2021-12-03 11:38:00 +01:00
|
|
|
private:
|
2022-11-19 08:49:04 -05:00
|
|
|
QWidget *parentWidget = nullptr;
|
2021-12-03 11:38:00 +01:00
|
|
|
|
2022-11-19 08:49:04 -05:00
|
|
|
QMenu *cassetteMenu = nullptr;
|
|
|
|
|
QMap<int, QMenu *> cartridgeMenus;
|
|
|
|
|
QMap<int, QMenu *> floppyMenus;
|
|
|
|
|
QMap<int, QMenu *> cdromMenus;
|
|
|
|
|
QMap<int, QMenu *> zipMenus;
|
|
|
|
|
QMap<int, QMenu *> moMenus;
|
|
|
|
|
QMap<int, QMenu *> netMenus;
|
2021-12-03 11:38:00 +01:00
|
|
|
|
2022-11-19 08:49:04 -05:00
|
|
|
QString getMediaOpenDirectory();
|
2022-08-30 17:18:51 -04:00
|
|
|
ui::MediaHistoryManager mhm;
|
2021-12-03 11:38:00 +01:00
|
|
|
|
2024-05-18 19:42:00 +02:00
|
|
|
const QByteArray driveLetters = QByteArrayLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
|
|
|
|
|
2021-12-05 21:22:32 +01:00
|
|
|
int cassetteRecordPos;
|
|
|
|
|
int cassettePlayPos;
|
|
|
|
|
int cassetteRewindPos;
|
|
|
|
|
int cassetteFastFwdPos;
|
|
|
|
|
int cassetteEjectPos;
|
|
|
|
|
|
|
|
|
|
int cartridgeEjectPos;
|
|
|
|
|
|
|
|
|
|
int floppyExportPos;
|
|
|
|
|
int floppyEjectPos;
|
|
|
|
|
|
2021-12-03 11:38:00 +01:00
|
|
|
int cdromMutePos;
|
|
|
|
|
int cdromReloadPos;
|
|
|
|
|
int cdromImagePos;
|
2022-03-26 23:38:38 -03:00
|
|
|
int cdromDirPos;
|
2022-08-30 17:18:51 -04:00
|
|
|
int cdromImageHistoryPos[MAX_PREV_IMAGES];
|
|
|
|
|
int floppyImageHistoryPos[MAX_PREV_IMAGES];
|
2021-12-03 11:38:00 +01:00
|
|
|
|
|
|
|
|
int zipEjectPos;
|
|
|
|
|
int zipReloadPos;
|
|
|
|
|
|
|
|
|
|
int moEjectPos;
|
|
|
|
|
int moReloadPos;
|
2021-12-14 00:31:55 +06:00
|
|
|
|
2022-08-27 19:08:28 +02:00
|
|
|
int netDisconnPos;
|
|
|
|
|
|
2021-12-14 00:31:55 +06:00
|
|
|
friend class MachineStatus;
|
2021-12-03 11:38:00 +01:00
|
|
|
};
|