Add icon set fallback feature

This commit is contained in:
Cacodemon345
2022-01-08 23:17:20 +06:00
parent f2f06aa958
commit 62fd64730a
6 changed files with 39 additions and 31 deletions

View File

@@ -55,7 +55,7 @@ namespace {
QPixmap active; QPixmap active;
QPixmap empty; QPixmap empty;
QPixmap empty_active; QPixmap empty_active;
void load(const QString& basePath); void load(QString basePath);
}; };
struct Pixmaps { struct Pixmaps {
PixmapSetEmpty cartridge; PixmapSetEmpty cartridge;
@@ -132,20 +132,20 @@ namespace {
static const QString pixmap_active = QStringLiteral("_active"); static const QString pixmap_active = QStringLiteral("_active");
static const QString pixmap_empty_active = QStringLiteral("_empty_active"); static const QString pixmap_empty_active = QStringLiteral("_empty_active");
void PixmapSetEmpty::load(const QString &basePath) { void PixmapSetEmpty::load(const QString &basePath) {
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
} }
void PixmapSetActive::load(const QString &basePath) { void PixmapSetActive::load(const QString &basePath) {
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
} }
void PixmapSetEmptyActive::load(const QString &basePath) { void PixmapSetEmptyActive::load(QString basePath) {
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
empty_active = QIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size); empty_active = ProgSettings::loadIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size);
} }
} }
@@ -153,20 +153,20 @@ struct MachineStatus::States {
Pixmaps pixmaps; Pixmaps pixmaps;
States(QObject* parent) { States(QObject* parent) {
pixmaps.cartridge.load(ProgSettings::getIconSetPath() + "/cartridge%1.ico"); pixmaps.cartridge.load("/cartridge%1.ico");
pixmaps.cassette.load(ProgSettings::getIconSetPath() + "/cassette%1.ico"); pixmaps.cassette.load("/cassette%1.ico");
pixmaps.floppy_disabled.normal = QIcon(ProgSettings::getIconSetPath() + QStringLiteral("/floppy_disabled.ico")).pixmap(pixmap_size); pixmaps.floppy_disabled.normal = ProgSettings::loadIcon(QStringLiteral("/floppy_disabled.ico")).pixmap(pixmap_size);
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal; pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal; pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
pixmaps.floppy_disabled.empty_active = 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_525.load("/floppy_525%1.ico");
pixmaps.floppy_35.load(ProgSettings::getIconSetPath() + "/floppy_35%1.ico"); pixmaps.floppy_35.load("/floppy_35%1.ico");
pixmaps.cdrom.load(ProgSettings::getIconSetPath() + "/cdrom%1.ico"); pixmaps.cdrom.load("/cdrom%1.ico");
pixmaps.zip.load(ProgSettings::getIconSetPath() + "/zip%1.ico"); pixmaps.zip.load("/zip%1.ico");
pixmaps.mo.load(ProgSettings::getIconSetPath() + "/mo%1.ico"); pixmaps.mo.load("/mo%1.ico");
pixmaps.hd.load(ProgSettings::getIconSetPath() + "/hard_disk%1.ico"); pixmaps.hd.load("/hard_disk%1.ico");
pixmaps.net.load(ProgSettings::getIconSetPath() + "/network%1.ico"); pixmaps.net.load("/network%1.ico");
pixmaps.sound = QIcon(ProgSettings::getIconSetPath() + "/sound.ico").pixmap(pixmap_size); pixmaps.sound = ProgSettings::loadIcon("/sound.ico").pixmap(pixmap_size);
cartridge[0].pixmaps = &pixmaps.cartridge; cartridge[0].pixmaps = &pixmaps.cartridge;
cartridge[1].pixmaps = &pixmaps.cartridge; cartridge[1].pixmaps = &pixmaps.cartridge;

View File

@@ -50,6 +50,13 @@ QString ProgSettings::getIconSetPath()
return iconset_to_qt[icon_set]; 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) : ProgSettings::ProgSettings(QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::ProgSettings) ui(new Ui::ProgSettings)

View File

@@ -16,6 +16,7 @@ public:
explicit ProgSettings(QWidget *parent = nullptr); explicit ProgSettings(QWidget *parent = nullptr);
~ProgSettings(); ~ProgSettings();
static QString getIconSetPath(); static QString getIconSetPath();
static QIcon loadIcon(QString file);
static void loadTranslators(QObject* parent = nullptr); static void loadTranslators(QObject* parent = nullptr);
static void reloadStrings(); static void reloadStrings();
class CustomTranslator : public QTranslator class CustomTranslator : public QTranslator

View File

@@ -16,11 +16,11 @@ extern "C" {
static void setFloppyType(QAbstractItemModel* model, const QModelIndex& idx, int type) { static void setFloppyType(QAbstractItemModel* model, const QModelIndex& idx, int type) {
QIcon icon; QIcon icon;
if (type == 0) { if (type == 0) {
icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_disabled.ico"); icon = ProgSettings::loadIcon("/floppy_disabled.ico");
} else if (type >= 1 && type <= 6) { } else if (type >= 1 && type <= 6) {
icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_525.ico"); icon = ProgSettings::loadIcon("/floppy_525.ico");
} else { } else {
icon = QIcon(ProgSettings::getIconSetPath() + "/floppy_35.ico"); icon = ProgSettings::loadIcon("/floppy_35.ico");
} }
model->setData(idx, QObject::tr(fdd_getname(type))); model->setData(idx, QObject::tr(fdd_getname(type)));
@@ -32,11 +32,11 @@ static void setCDROMBus(QAbstractItemModel* model, const QModelIndex& idx, uint8
QIcon icon; QIcon icon;
switch (bus) { switch (bus) {
case CDROM_BUS_DISABLED: case CDROM_BUS_DISABLED:
icon = QIcon(ProgSettings::getIconSetPath() + "/cdrom_disabled.ico"); icon = ProgSettings::loadIcon("/cdrom_disabled.ico");
break; break;
case CDROM_BUS_ATAPI: case CDROM_BUS_ATAPI:
case CDROM_BUS_SCSI: case CDROM_BUS_SCSI:
icon = QIcon(ProgSettings::getIconSetPath() + "/cdrom.ico"); icon = ProgSettings::loadIcon("/cdrom.ico");
break; break;
} }

View File

@@ -55,7 +55,7 @@ static void addRow(QAbstractItemModel* model, hard_disk_t* hd) {
QString busName = Harddrives::BusChannelName(hd->bus, hd->channel); QString busName = Harddrives::BusChannelName(hd->bus, hd->channel);
model->setData(model->index(row, ColumnBus), busName); 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->bus, DataBus);
model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel); model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel);
QString fileName = hd->fn; QString fileName = hd->fn;

View File

@@ -22,11 +22,11 @@ static void setMOBus(QAbstractItemModel* model, const QModelIndex& idx, uint8_t
QIcon icon; QIcon icon;
switch (bus) { switch (bus) {
case MO_BUS_DISABLED: case MO_BUS_DISABLED:
icon = QIcon(ProgSettings::getIconSetPath() + "/mo_disabled.ico"); icon = ProgSettings::loadIcon("/mo_disabled.ico");
break; break;
case MO_BUS_ATAPI: case MO_BUS_ATAPI:
case MO_BUS_SCSI: case MO_BUS_SCSI:
icon = QIcon(ProgSettings::getIconSetPath() + "/mo.ico"); icon = ProgSettings::loadIcon("/mo.ico");
break; break;
} }
@@ -51,11 +51,11 @@ static void setZIPBus(QAbstractItemModel* model, const QModelIndex& idx, uint8_t
QIcon icon; QIcon icon;
switch (bus) { switch (bus) {
case ZIP_BUS_DISABLED: case ZIP_BUS_DISABLED:
icon = QIcon(ProgSettings::getIconSetPath() + "/zip_disabled.ico"); icon = ProgSettings::loadIcon("/zip_disabled.ico");
break; break;
case ZIP_BUS_ATAPI: case ZIP_BUS_ATAPI:
case ZIP_BUS_SCSI: case ZIP_BUS_SCSI:
icon = QIcon(ProgSettings::getIconSetPath() + "/zip.ico"); icon = ProgSettings::loadIcon("/zip.ico");
break; break;
} }