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 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;

View File

@@ -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)

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}