From 62fd64730ad1a5debde105893cd940c89a6b1f08 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 8 Jan 2022 23:17:20 +0600 Subject: [PATCH] Add icon set fallback feature --- src/qt/qt_machinestatus.cpp | 42 ++++++++++++++-------------- src/qt/qt_progsettings.cpp | 7 +++++ src/qt/qt_progsettings.hpp | 1 + src/qt/qt_settingsfloppycdrom.cpp | 10 +++---- src/qt/qt_settingsharddisks.cpp | 2 +- src/qt/qt_settingsotherremovable.cpp | 8 +++--- 6 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index 2deb9330d..b844ade83 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -55,7 +55,7 @@ namespace { QPixmap active; QPixmap empty; QPixmap empty_active; - void load(const QString& basePath); + void load(QString basePath); }; struct Pixmaps { PixmapSetEmpty cartridge; @@ -132,20 +132,20 @@ namespace { static const QString pixmap_active = QStringLiteral("_active"); static const QString pixmap_empty_active = QStringLiteral("_empty_active"); void PixmapSetEmpty::load(const QString &basePath) { - normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); + normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); + empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); } void PixmapSetActive::load(const QString &basePath) { - normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); + normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); + active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); } - void PixmapSetEmptyActive::load(const QString &basePath) { - normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); - empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); - empty_active = QIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size); + void PixmapSetEmptyActive::load(QString basePath) { + normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); + active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); + empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); + empty_active = ProgSettings::loadIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size); } } @@ -153,20 +153,20 @@ struct MachineStatus::States { Pixmaps pixmaps; States(QObject* parent) { - pixmaps.cartridge.load(ProgSettings::getIconSetPath() + "/cartridge%1.ico"); - pixmaps.cassette.load(ProgSettings::getIconSetPath() + "/cassette%1.ico"); - pixmaps.floppy_disabled.normal = QIcon(ProgSettings::getIconSetPath() + QStringLiteral("/floppy_disabled.ico")).pixmap(pixmap_size); + pixmaps.cartridge.load("/cartridge%1.ico"); + pixmaps.cassette.load("/cassette%1.ico"); + pixmaps.floppy_disabled.normal = ProgSettings::loadIcon(QStringLiteral("/floppy_disabled.ico")).pixmap(pixmap_size); pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal; pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal; pixmaps.floppy_disabled.empty_active = pixmaps.floppy_disabled.normal; - pixmaps.floppy_525.load(ProgSettings::getIconSetPath() + "/floppy_525%1.ico"); - pixmaps.floppy_35.load(ProgSettings::getIconSetPath() + "/floppy_35%1.ico"); - pixmaps.cdrom.load(ProgSettings::getIconSetPath() + "/cdrom%1.ico"); - pixmaps.zip.load(ProgSettings::getIconSetPath() + "/zip%1.ico"); - pixmaps.mo.load(ProgSettings::getIconSetPath() + "/mo%1.ico"); - pixmaps.hd.load(ProgSettings::getIconSetPath() + "/hard_disk%1.ico"); - pixmaps.net.load(ProgSettings::getIconSetPath() + "/network%1.ico"); - pixmaps.sound = QIcon(ProgSettings::getIconSetPath() + "/sound.ico").pixmap(pixmap_size); + pixmaps.floppy_525.load("/floppy_525%1.ico"); + pixmaps.floppy_35.load("/floppy_35%1.ico"); + pixmaps.cdrom.load("/cdrom%1.ico"); + pixmaps.zip.load("/zip%1.ico"); + pixmaps.mo.load("/mo%1.ico"); + pixmaps.hd.load("/hard_disk%1.ico"); + pixmaps.net.load("/network%1.ico"); + pixmaps.sound = ProgSettings::loadIcon("/sound.ico").pixmap(pixmap_size); cartridge[0].pixmaps = &pixmaps.cartridge; cartridge[1].pixmaps = &pixmaps.cartridge; diff --git a/src/qt/qt_progsettings.cpp b/src/qt/qt_progsettings.cpp index c0e4623a4..8e47cffec 100644 --- a/src/qt/qt_progsettings.cpp +++ b/src/qt/qt_progsettings.cpp @@ -50,6 +50,13 @@ QString ProgSettings::getIconSetPath() return iconset_to_qt[icon_set]; } +QIcon ProgSettings::loadIcon(QString file) +{ + (void)getIconSetPath(); + if (!QFile::exists(iconset_to_qt[icon_set] + file)) return QIcon(iconset_to_qt[""] + file); + return QIcon(iconset_to_qt[icon_set] + file); +} + ProgSettings::ProgSettings(QWidget *parent) : QDialog(parent), ui(new Ui::ProgSettings) diff --git a/src/qt/qt_progsettings.hpp b/src/qt/qt_progsettings.hpp index f4ad58bbb..a21fe9203 100644 --- a/src/qt/qt_progsettings.hpp +++ b/src/qt/qt_progsettings.hpp @@ -16,6 +16,7 @@ public: explicit ProgSettings(QWidget *parent = nullptr); ~ProgSettings(); static QString getIconSetPath(); + static QIcon loadIcon(QString file); static void loadTranslators(QObject* parent = nullptr); static void reloadStrings(); class CustomTranslator : public QTranslator diff --git a/src/qt/qt_settingsfloppycdrom.cpp b/src/qt/qt_settingsfloppycdrom.cpp index 3cd040c9b..b2c2df83f 100644 --- a/src/qt/qt_settingsfloppycdrom.cpp +++ b/src/qt/qt_settingsfloppycdrom.cpp @@ -16,11 +16,11 @@ extern "C" { static void setFloppyType(QAbstractItemModel* model, const QModelIndex& idx, int type) { QIcon icon; if (type == 0) { - icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_disabled.ico"); + icon = ProgSettings::loadIcon("/floppy_disabled.ico"); } else if (type >= 1 && type <= 6) { - icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_525.ico"); + icon = ProgSettings::loadIcon("/floppy_525.ico"); } else { - icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_35.ico"); + icon = ProgSettings::loadIcon("/floppy_35.ico"); } model->setData(idx, QObject::tr(fdd_getname(type))); @@ -32,11 +32,11 @@ static void setCDROMBus(QAbstractItemModel* model, const QModelIndex& idx, uint8 QIcon icon; switch (bus) { case CDROM_BUS_DISABLED: - icon = QIcon(ProgSettings::getIconSetPath() + "/cdrom_disabled.ico"); + icon = ProgSettings::loadIcon("/cdrom_disabled.ico"); break; case CDROM_BUS_ATAPI: case CDROM_BUS_SCSI: - icon = QIcon(ProgSettings::getIconSetPath() + "/cdrom.ico"); + icon = ProgSettings::loadIcon("/cdrom.ico"); break; } diff --git a/src/qt/qt_settingsharddisks.cpp b/src/qt/qt_settingsharddisks.cpp index ecf8df882..1e9d11350 100644 --- a/src/qt/qt_settingsharddisks.cpp +++ b/src/qt/qt_settingsharddisks.cpp @@ -55,7 +55,7 @@ static void addRow(QAbstractItemModel* model, hard_disk_t* hd) { QString busName = Harddrives::BusChannelName(hd->bus, hd->channel); model->setData(model->index(row, ColumnBus), busName); - model->setData(model->index(row, ColumnBus), QIcon(ProgSettings::getIconSetPath() + "/hard_disk.ico"), Qt::DecorationRole); + model->setData(model->index(row, ColumnBus), ProgSettings::loadIcon( "/hard_disk.ico"), Qt::DecorationRole); model->setData(model->index(row, ColumnBus), hd->bus, DataBus); model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel); QString fileName = hd->fn; diff --git a/src/qt/qt_settingsotherremovable.cpp b/src/qt/qt_settingsotherremovable.cpp index 5aafae0b8..3fa7b0351 100644 --- a/src/qt/qt_settingsotherremovable.cpp +++ b/src/qt/qt_settingsotherremovable.cpp @@ -22,11 +22,11 @@ static void setMOBus(QAbstractItemModel* model, const QModelIndex& idx, uint8_t QIcon icon; switch (bus) { case MO_BUS_DISABLED: - icon = QIcon(ProgSettings::getIconSetPath() + "/mo_disabled.ico"); + icon = ProgSettings::loadIcon("/mo_disabled.ico"); break; case MO_BUS_ATAPI: case MO_BUS_SCSI: - icon = QIcon(ProgSettings::getIconSetPath() + "/mo.ico"); + icon = ProgSettings::loadIcon("/mo.ico"); break; } @@ -51,11 +51,11 @@ static void setZIPBus(QAbstractItemModel* model, const QModelIndex& idx, uint8_t QIcon icon; switch (bus) { case ZIP_BUS_DISABLED: - icon = QIcon(ProgSettings::getIconSetPath() + "/zip_disabled.ico"); + icon = ProgSettings::loadIcon("/zip_disabled.ico"); break; case ZIP_BUS_ATAPI: case ZIP_BUS_SCSI: - icon = QIcon(ProgSettings::getIconSetPath() + "/zip.ico"); + icon = ProgSettings::loadIcon("/zip.ico"); break; }