From ed4a312f4f6dec174a848dfa13bee8d9cc551976 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= <13226155+dhrdlicka@users.noreply.github.com> Date: Fri, 28 Mar 2025 23:13:23 +0100 Subject: [PATCH 1/2] Remove support for icon sets --- src/config.c | 11 ----- src/include/86box/86box.h | 1 - src/qt/qt.c | 2 - src/qt/qt_machinestatus.cpp | 44 ++++++++--------- src/qt/qt_mediamenu.cpp | 18 +++---- src/qt/qt_progsettings.cpp | 62 ------------------------ src/qt/qt_progsettings.hpp | 3 -- src/qt/qt_progsettings.ui | 72 ++++++---------------------- src/qt/qt_settings.cpp | 2 +- src/qt/qt_settingsfloppycdrom.cpp | 10 ++-- src/qt/qt_settingsharddisks.cpp | 2 +- src/qt/qt_settingsotherremovable.cpp | 8 ++-- src/unix/unix.c | 1 - 13 files changed, 57 insertions(+), 179 deletions(-) diff --git a/src/config.c b/src/config.c index 2e6a5460f..8ff7d548c 100644 --- a/src/config.c +++ b/src/config.c @@ -192,12 +192,6 @@ load_general(void) else if (mouse_sensitivity > 2.0) mouse_sensitivity = 2.0; - p = ini_section_get_string(cat, "iconset", NULL); - if (p != NULL) - strcpy(icon_set, p); - else - strcpy(icon_set, ""); - enable_discord = !!ini_section_get_int(cat, "enable_discord", 0); open_dir_usr_path = ini_section_get_int(cat, "open_dir_usr_path", 0); @@ -2038,11 +2032,6 @@ save_general(void) ini_section_set_string(cat, "language", buffer); } - if (!strcmp(icon_set, "")) - ini_section_delete_var(cat, "iconset"); - else - ini_section_set_string(cat, "iconset", icon_set); - if (enable_discord) ini_section_set_int(cat, "enable_discord", enable_discord); else diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h index c58d595c5..61de69cf3 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -118,7 +118,6 @@ extern int vid_resize; /* (C) allow resizing */ extern int invert_display; /* (C) invert the display */ extern int suppress_overscan; /* (C) suppress overscans */ extern uint32_t lang_id; /* (C) language code identifier */ -extern char icon_set[256]; /* (C) iconset identifier */ extern int scale; /* (C) screen scale factor */ extern int dpi_scale; /* (C) DPI scaling of the emulated screen */ extern int vid_api; /* (C) video renderer */ diff --git a/src/qt/qt.c b/src/qt/qt.c index a9a6460eb..ecf4b964b 100644 --- a/src/qt/qt.c +++ b/src/qt/qt.c @@ -35,8 +35,6 @@ qt_nvr_save(void) return nvr_save(); } -char icon_set[256] = ""; /* name of the iconset to be used */ - int plat_vidapi(const char *api) { diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index a00cc032b..eff29a232 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -176,24 +176,24 @@ static const QString pixmap_empty_active = QStringLiteral("_empty_active"); void PixmapSetEmpty::load(const QString &basePath) { - normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); + normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); + empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); } void PixmapSetActive::load(const QString &basePath) { - normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); + normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); + active = QIcon(basePath.arg(pixmap_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); + 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); } } @@ -202,21 +202,21 @@ struct MachineStatus::States { States(QObject *parent) { - 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.cartridge.load(":/settings/qt/icons/cartridge%1.ico"); + pixmaps.cassette.load(":/settings/qt/icons/cassette%1.ico"); + pixmaps.floppy_disabled.normal = QIcon(":/settings/qt/icons/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("/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); - pixmaps.soundMuted = ProgSettings::loadIcon("/sound_mute.ico").pixmap(pixmap_size); + pixmaps.floppy_525.load(":/settings/qt/icons/floppy_525%1.ico"); + pixmaps.floppy_35.load(":/settings/qt/icons/floppy_35%1.ico"); + pixmaps.cdrom.load(":/settings/qt/icons/cdrom%1.ico"); + pixmaps.zip.load(":/settings/qt/icons/zip%1.ico"); + pixmaps.mo.load(":/settings/qt/icons/mo%1.ico"); + pixmaps.hd.load(":/settings/qt/icons/hard_disk%1.ico"); + pixmaps.net.load(":/settings/qt/icons/network%1.ico"); + pixmaps.sound = QIcon(":/settings/qt/icons/sound.ico").pixmap(pixmap_size); + pixmaps.soundMuted = QIcon(":/settings/qt/icons/sound_mute.ico").pixmap(pixmap_size); cartridge[0].pixmaps = &pixmaps.cartridge; cartridge[1].pixmaps = &pixmaps.cartridge; @@ -511,7 +511,7 @@ MachineStatus::refresh(QStatusBar *sbar) config_save(); if (d->sound) d->sound->setPixmap(sound_muted ? d->pixmaps.soundMuted : d->pixmaps.sound); - + muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); }); } @@ -697,7 +697,7 @@ MachineStatus::refresh(QStatusBar *sbar) d->sound->setPixmap(sound_muted ? d->pixmaps.soundMuted : d->pixmaps.sound); if (muteUnmuteAction) muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); - + connect(d->sound.get(), &ClickableLabel::clicked, this, [this](QPoint pos) { this->soundMenu->popup(pos - QPoint(0, this->soundMenu->sizeHint().height())); }); diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp index fdea16c2a..f7abebdf1 100644 --- a/src/qt/qt_mediamenu.cpp +++ b/src/qt/qt_mediamenu.cpp @@ -154,10 +154,10 @@ MediaMenu::refresh(QMenu *parentMenu) MachineStatus::iterateCDROM([this, parentMenu](int i) { auto *menu = parentMenu->addMenu(""); cdromMutePos = menu->children().count(); - menu->addAction(ProgSettings::loadIcon("/cdrom_mute.ico"), tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true); + menu->addAction(QIcon(":/settings/qt/icons/cdrom_mute.ico"), tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true); menu->addSeparator(); - menu->addAction(ProgSettings::loadIcon("/cdrom_image.ico"), tr("&Image..."), [this, i]() { cdromMount(i, 0, nullptr); })->setCheckable(false); - menu->addAction(ProgSettings::loadIcon("/cdrom_folder.ico"), tr("&Folder..."), [this, i]() { cdromMount(i, 1, nullptr); })->setCheckable(false); + menu->addAction(QIcon(":/settings/qt/icons/cdrom_image.ico"), tr("&Image..."), [this, i]() { cdromMount(i, 0, nullptr); })->setCheckable(false); + menu->addAction(QIcon(":/settings/qt/icons/cdrom_folder.ico"), tr("&Folder..."), [this, i]() { cdromMount(i, 1, nullptr); })->setCheckable(false); menu->addSeparator(); for (int slot = 0; slot < MAX_PREV_IMAGES; slot++) { cdromImageHistoryPos[slot] = menu->children().count(); @@ -170,7 +170,7 @@ MediaMenu::refresh(QMenu *parentMenu) for (const auto &letter : driveLetters) { auto drive = QString("%1:\\").arg(letter); if (GetDriveType(drive.toUtf8().constData()) == DRIVE_CDROM) - menu->addAction(ProgSettings::loadIcon("/cdrom_host.ico"), tr("Host CD/DVD Drive (%1:)").arg(letter), [this, i, letter] { cdromMount(i, 2, QString(R"(\\.\%1:)").arg(letter)); })->setCheckable(false); + menu->addAction(QIcon(":/settings/qt/icons/cdrom_host.ico"), tr("Host CD/DVD Drive (%1:)").arg(letter), [this, i, letter] { cdromMount(i, 2, QString(R"(\\.\%1:)").arg(letter)); })->setCheckable(false); } menu->addSeparator(); #endif // Q_OS_WINDOWS @@ -666,7 +666,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) children = menu->children(); imageHistoryUpdatePos = dynamic_cast(children[cdromImageHistoryPos[slot]]); if (fn.left(8) == "ioctl://") { - menu_icon = ProgSettings::loadIcon("/cdrom_host.ico"); + menu_icon = QIcon(":/settings/qt/icons/cdrom_host.ico"); #ifdef Q_OS_WINDOWS menu_item_name = tr("Host CD/DVD Drive (%1)").arg(fn.right(2)).toUtf8().constData(); #else @@ -674,7 +674,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type) #endif } else { fi.setFile(fn); - menu_icon = fi.isDir() ? ProgSettings::loadIcon("/cdrom_folder.ico") : ProgSettings::loadIcon("/cdrom_image.ico"); + menu_icon = fi.isDir() ? QIcon(":/settings/qt/icons/cdrom_folder.ico") : QIcon(":/settings/qt/icons/cdrom_image.ico"); menu_item_name = fn.isEmpty() ? tr("previous image").toUtf8().constData() : fn.toUtf8().constData(); } imageHistoryUpdatePos->setIcon(menu_icon); @@ -727,7 +727,7 @@ MediaMenu::cdromUpdateMenu(int i) auto childs = menu->children(); auto *muteMenu = dynamic_cast(childs[cdromMutePos]); - muteMenu->setIcon(ProgSettings::loadIcon((cdrom[i].sound_on == 0) ? "/cdrom_unmute.ico" : "/cdrom_mute.ico")); + muteMenu->setIcon(QIcon((cdrom[i].sound_on == 0) ? ":/settings/qt/icons/cdrom_unmute.ico" : ":/settings/qt/icons/cdrom_mute.ico")); muteMenu->setText((cdrom[i].sound_on == 0) ? tr("&Unmute") : tr("&Mute")); auto *imageMenu = dynamic_cast(childs[cdromImagePos]); @@ -740,13 +740,13 @@ MediaMenu::cdromUpdateMenu(int i) menu_item_name = tr("Host CD/DVD Drive (%1)").arg(name.right(name.length() - 8)); #endif name2 = menu_item_name; - menu_icon = ProgSettings::loadIcon("/cdrom_host.ico"); + menu_icon = QIcon(":/settings/qt/icons/cdrom_host.ico"); } else { QFileInfo fi(cdrom[i].image_path); menu_item_name = name.isEmpty() ? QString().toUtf8().constData() : name.toUtf8().constData(); name2 = name; - menu_icon = fi.isDir() ? ProgSettings::loadIcon("/cdrom_folder.ico") : ProgSettings::loadIcon("/cdrom_image.ico"); + menu_icon = fi.isDir() ? QIcon(":/settings/qt/icons/cdrom_folder.ico") : QIcon(":/settings/qt/icons/cdrom_image.ico"); } imageMenu->setIcon(menu_icon); imageMenu->setText(QString::asprintf(tr("Eject %s").toUtf8().constData(), menu_item_name.toUtf8().constData())); diff --git a/src/qt/qt_progsettings.cpp b/src/qt/qt_progsettings.cpp index ce6c21dd6..2fd108186 100644 --- a/src/qt/qt_progsettings.cpp +++ b/src/qt/qt_progsettings.cpp @@ -36,71 +36,16 @@ extern "C" { #include <86box/rom.h> } -static QMap iconset_to_qt; extern MainWindow *main_window; ProgSettings::CustomTranslator *ProgSettings::translator = nullptr; QTranslator *ProgSettings::qtTranslator = nullptr; -QString -ProgSettings::getIconSetPath() -{ - if (iconset_to_qt.isEmpty()) { - // Always include default bundled icons - iconset_to_qt.insert("", ":/settings/qt/icons"); - // Walk rom_paths to get the candidates - for (rom_path_t *emu_rom_path = &rom_paths; emu_rom_path != nullptr; emu_rom_path = emu_rom_path->next) { - // Check for icons subdir in each candidate - QDir roms_icons_dir(QString(emu_rom_path->path) + "/icons"); - if (roms_icons_dir.isReadable()) { - auto dirList = roms_icons_dir.entryList(QDir::AllDirs | QDir::Executable | QDir::Readable); - for (auto &curIconSet : dirList) { - if (curIconSet == "." || curIconSet == "..") { - continue; - } - iconset_to_qt.insert(curIconSet, (roms_icons_dir.canonicalPath() + '/') + curIconSet); - } - } - } - } - 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) { ui->setupUi(this); - (void) getIconSetPath(); - ui->comboBox->setItemData(0, ""); - ui->comboBox->setCurrentIndex(0); - for (auto i = iconset_to_qt.begin(); i != iconset_to_qt.end(); i++) { - if (i.key() == "") - continue; - QFile iconfile(i.value() + "/iconinfo.txt"); - iconfile.open(QFile::ReadOnly); - QString friendlyName; - QString iconsetinfo(iconfile.readAll()); - iconfile.close(); - if (iconsetinfo.isEmpty()) - friendlyName = i.key(); - else - friendlyName = iconsetinfo.split('\n')[0]; - ui->comboBox->addItem(friendlyName, i.key()); - if (strcmp(icon_set, i.key().toUtf8().data()) == 0) { - ui->comboBox->setCurrentIndex(ui->comboBox->findData(i.key())); - } - } - ui->comboBox->setItemData(0, '(' + tr("Default") + ')', Qt::DisplayRole); - ui->comboBoxLanguage->setItemData(0, 0xFFFF); for (auto i = lcid_langcode.begin(); i != lcid_langcode.end(); i++) { if (i.key() == 0xFFFF) @@ -129,7 +74,6 @@ ProgSettings::ProgSettings(QWidget *parent) void ProgSettings::accept() { - strcpy(icon_set, ui->comboBox->currentData().toString().toUtf8().data()); lang_id = ui->comboBoxLanguage->currentData().toUInt(); open_dir_usr_path = ui->openDirUsrPath->isChecked() ? 1 : 0; confirm_exit = ui->checkBoxConfirmExit->isChecked() ? 1 : 0; @@ -161,12 +105,6 @@ ProgSettings::~ProgSettings() delete ui; } -void -ProgSettings::on_pushButton_released() -{ - ui->comboBox->setCurrentIndex(0); -} - #ifdef Q_OS_WINDOWS /* Return the standard font name on Windows, which is overridden per-language to prevent CJK fonts with embedded bitmaps being chosen as a fallback. */ diff --git a/src/qt/qt_progsettings.hpp b/src/qt/qt_progsettings.hpp index 642b2002d..b4e59e02d 100644 --- a/src/qt/qt_progsettings.hpp +++ b/src/qt/qt_progsettings.hpp @@ -14,8 +14,6 @@ class ProgSettings : public QDialog { public: explicit ProgSettings(QWidget *parent = nullptr); ~ProgSettings(); - static QString getIconSetPath(); - static QIcon loadIcon(QString file); #ifdef Q_OS_WINDOWS static QString getFontName(uint32_t lcid); #endif @@ -56,7 +54,6 @@ public: protected slots: void accept() override; private slots: - void on_pushButton_released(); void on_pushButtonLanguage_released(); void on_horizontalSlider_valueChanged(int value); diff --git a/src/qt/qt_progsettings.ui b/src/qt/qt_progsettings.ui index f7b32ce84..d3ebf8c85 100644 --- a/src/qt/qt_progsettings.ui +++ b/src/qt/qt_progsettings.ui @@ -29,21 +29,14 @@ QLayout::SizeConstraint::SetFixedSize - + Default - - - - Icon set: - - - - + Qt::Orientation::Horizontal @@ -56,7 +49,7 @@ - + 30 @@ -68,7 +61,7 @@ - + <html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html> @@ -78,14 +71,7 @@ - - - - Default - - - - + Qt::Orientation::Horizontal @@ -98,14 +84,14 @@ - + Default - + 10 @@ -127,21 +113,21 @@ - + Language: - + Ask for confirmation before saving settings - + Qt::Orientation::Horizontal @@ -151,63 +137,35 @@ - + Inhibit multimedia keys on Windows - - - - false - - - 30 - - - - (Default) - - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - + Mouse sensitivity: - + Ask for confirmation before hard resetting - + Ask for confirmation before quitting - + Display hotkey message when entering full-screen mode diff --git a/src/qt/qt_settings.cpp b/src/qt/qt_settings.cpp index 471558e22..19a537652 100644 --- a/src/qt/qt_settings.cpp +++ b/src/qt/qt_settings.cpp @@ -95,7 +95,7 @@ SettingsModel::data(const QModelIndex &index, int role) const case Qt::DisplayRole: return tr(pages.at(index.row()).toUtf8().data()); case Qt::DecorationRole: - return QIcon(QString("%1/%2.ico").arg(ProgSettings::getIconSetPath(), page_icons[index.row()])); + return QIcon(QString(":/settings/qt/icons/%1.ico").arg(page_icons[index.row()])); case Qt::SizeHintRole: return QSize(-1, fontHeight * 2); default: diff --git a/src/qt/qt_settingsfloppycdrom.cpp b/src/qt/qt_settingsfloppycdrom.cpp index cc58d3cde..52d737ae6 100644 --- a/src/qt/qt_settingsfloppycdrom.cpp +++ b/src/qt/qt_settingsfloppycdrom.cpp @@ -46,11 +46,11 @@ setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type) { QIcon icon; if (type == 0) - icon = ProgSettings::loadIcon("/floppy_disabled.ico"); + icon = QIcon(":/settings/qt/icons/floppy_disabled.ico"); else if (type >= 1 && type <= 6) - icon = ProgSettings::loadIcon("/floppy_525.ico"); + icon = QIcon(":/settings/qt/icons/floppy_525.ico"); else - icon = ProgSettings::loadIcon("/floppy_35.ico"); + icon = QIcon(":/settings/qt/icons/floppy_35.ico"); model->setData(idx, QObject::tr(fdd_getname(type))); model->setData(idx, type, Qt::UserRole); @@ -64,12 +64,12 @@ setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint switch (bus) { case CDROM_BUS_DISABLED: - icon = ProgSettings::loadIcon("/cdrom_disabled.ico"); + icon = QIcon(":/settings/qt/icons/cdrom_disabled.ico"); break; case CDROM_BUS_ATAPI: case CDROM_BUS_SCSI: case CDROM_BUS_MITSUMI: - icon = ProgSettings::loadIcon("/cdrom.ico"); + icon = QIcon(":/settings/qt/icons/cdrom.ico"); break; } diff --git a/src/qt/qt_settingsharddisks.cpp b/src/qt/qt_settingsharddisks.cpp index e679dafa5..ded50ac34 100644 --- a/src/qt/qt_settingsharddisks.cpp +++ b/src/qt/qt_settingsharddisks.cpp @@ -81,7 +81,7 @@ addRow(QAbstractItemModel *model, hard_disk_t *hd) QString busName = Harddrives::BusChannelName(hd->bus_type, hd->channel); model->setData(model->index(row, ColumnBus), busName); - model->setData(model->index(row, ColumnBus), ProgSettings::loadIcon("/hard_disk.ico"), Qt::DecorationRole); + model->setData(model->index(row, ColumnBus), QIcon(":/settings/qt/icons/hard_disk.ico"), Qt::DecorationRole); model->setData(model->index(row, ColumnBus), hd->bus_type, DataBus); model->setData(model->index(row, ColumnBus), hd->bus_type, DataBusPrevious); model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel); diff --git a/src/qt/qt_settingsotherremovable.cpp b/src/qt/qt_settingsotherremovable.cpp index 1a6dceacb..8a810a4fb 100644 --- a/src/qt/qt_settingsotherremovable.cpp +++ b/src/qt/qt_settingsotherremovable.cpp @@ -46,11 +46,11 @@ setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t QIcon icon; switch (bus) { case MO_BUS_DISABLED: - icon = ProgSettings::loadIcon("/mo_disabled.ico"); + icon = QIcon(":/settings/qt/icons/mo_disabled.ico"); break; case MO_BUS_ATAPI: case MO_BUS_SCSI: - icon = ProgSettings::loadIcon("/mo.ico"); + icon = QIcon(":/settings/qt/icons/mo.ico"); break; default: @@ -81,11 +81,11 @@ setZIPBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_ QIcon icon; switch (bus) { case ZIP_BUS_DISABLED: - icon = ProgSettings::loadIcon("/zip_disabled.ico"); + icon = QIcon(":/settings/qt/icons/zip_disabled.ico"); break; case ZIP_BUS_ATAPI: case ZIP_BUS_SCSI: - icon = ProgSettings::loadIcon("/zip.ico"); + icon = QIcon(":/settings/qt/icons/zip.ico"); break; default: diff --git a/src/unix/unix.c b/src/unix/unix.c index 81312d25d..c41aee2a4 100644 --- a/src/unix/unix.c +++ b/src/unix/unix.c @@ -73,7 +73,6 @@ static int exit_event = 0; static int fullscreen_pending = 0; uint32_t lang_id = 0x0409; // Multilangual UI variables, for now all set to LCID of en-US uint32_t lang_sys = 0x0409; // Multilangual UI variables, for now all set to LCID of en-US -char icon_set[256] = ""; /* name of the iconset to be used */ static const uint16_t sdl_to_xt[0x200] = { [SDL_SCANCODE_ESCAPE] = 0x01, From 8b72c84c028effa55f4751f25da0c51ec1603ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= <13226155+dhrdlicka@users.noreply.github.com> Date: Sat, 29 Mar 2025 00:13:10 +0100 Subject: [PATCH 2/2] Use indicator overlays for status bar icons --- src/qt/CMakeLists.txt | 3 + src/qt/icons/active.ico | Bin 0 -> 9622 bytes src/qt/icons/cartridge_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/cassette_active.ico | Bin 9622 -> 0 bytes src/qt/icons/cassette_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/cassette_empty_active.ico | Bin 9622 -> 0 bytes src/qt/icons/cdrom_active.ico | Bin 9622 -> 0 bytes src/qt/icons/cdrom_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/cdrom_empty_active.ico | Bin 9622 -> 0 bytes src/qt/icons/disabled.ico | Bin 0 -> 9622 bytes src/qt/icons/floppy_35_active.ico | Bin 9622 -> 0 bytes src/qt/icons/floppy_35_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/floppy_35_empty_active.ico | Bin 9622 -> 0 bytes src/qt/icons/floppy_525_active.ico | Bin 9622 -> 0 bytes src/qt/icons/floppy_525_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/floppy_525_empty_active.ico | Bin 9622 -> 0 bytes src/qt/icons/hard_disk_active.ico | Bin 9622 -> 0 bytes src/qt/icons/mo_active.ico | Bin 9622 -> 0 bytes src/qt/icons/mo_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/mo_empty_active.ico | Bin 9622 -> 0 bytes src/qt/icons/network_active.ico | Bin 9622 -> 0 bytes src/qt/icons/network_empty.ico | Bin 6950 -> 0 bytes src/qt/icons/sound_mute.ico | Bin 9622 -> 0 bytes src/qt/icons/zip_active.ico | Bin 9622 -> 0 bytes src/qt/icons/zip_empty.ico | Bin 9622 -> 0 bytes src/qt/icons/zip_empty_active.ico | Bin 9622 -> 0 bytes src/qt/qt_iconindicators.cpp | 33 +++++++++++ src/qt/qt_iconindicators.hpp | 15 +++++ src/qt/qt_machinestatus.cpp | 72 +++++++++++++---------- src/qt_resources.qrc | 25 +------- 30 files changed, 94 insertions(+), 54 deletions(-) create mode 100644 src/qt/icons/active.ico delete mode 100644 src/qt/icons/cartridge_empty.ico delete mode 100644 src/qt/icons/cassette_active.ico delete mode 100644 src/qt/icons/cassette_empty.ico delete mode 100644 src/qt/icons/cassette_empty_active.ico delete mode 100644 src/qt/icons/cdrom_active.ico delete mode 100644 src/qt/icons/cdrom_empty.ico delete mode 100644 src/qt/icons/cdrom_empty_active.ico create mode 100644 src/qt/icons/disabled.ico delete mode 100644 src/qt/icons/floppy_35_active.ico delete mode 100644 src/qt/icons/floppy_35_empty.ico delete mode 100644 src/qt/icons/floppy_35_empty_active.ico delete mode 100644 src/qt/icons/floppy_525_active.ico delete mode 100644 src/qt/icons/floppy_525_empty.ico delete mode 100644 src/qt/icons/floppy_525_empty_active.ico delete mode 100644 src/qt/icons/hard_disk_active.ico delete mode 100644 src/qt/icons/mo_active.ico delete mode 100644 src/qt/icons/mo_empty.ico delete mode 100644 src/qt/icons/mo_empty_active.ico delete mode 100644 src/qt/icons/network_active.ico delete mode 100644 src/qt/icons/network_empty.ico delete mode 100644 src/qt/icons/sound_mute.ico delete mode 100644 src/qt/icons/zip_active.ico delete mode 100644 src/qt/icons/zip_empty.ico delete mode 100644 src/qt/icons/zip_empty_active.ico create mode 100644 src/qt/qt_iconindicators.cpp create mode 100644 src/qt/qt_iconindicators.hpp diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt index 90ea218af..e6e45fc25 100644 --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -194,6 +194,9 @@ add_library(ui STATIC qt_openglshaderconfig.hpp qt_openglshaderconfig.cpp qt_openglshaderconfig.ui + + qt_iconindicators.hpp + qt_iconindicators.cpp ) if(RTMIDI) diff --git a/src/qt/icons/active.ico b/src/qt/icons/active.ico new file mode 100644 index 0000000000000000000000000000000000000000..9569a3962ba1d76f735492b689bfd8fd1cd95839 GIT binary patch literal 9622 zcmeHMy-ve05Wb2Egc#`1p<6RD@&uPeF)|>`_t`ncazmBG zNh+1Q>f-q4?(8r2-N_Z1$W&%CL0QPdROD7f=JQa0Jr#LD+hP&wkLM!y7a~Ow>d%n- zz}PFu;1wD|I|^ArE|VPOmD{RvvWBd3(9=u@WJr*%e$>-c$D!r9%5n~VAzVwCf3x-L zD9R{no0Wz@1_Ex2&G-&pN6b3g8xZ{r+>Q4)^jD-O_^6&p&v;yRRb8DOJwxFPQg=Io z94Ycf)q5A6rY{dae!UXIbjx<~v$`AjEmPJ$D-8idU^E2W*Ntw;;wX zq|kB=*0^#!Uk1;y%yfFbZ75OD6yxt|l~z9-1B5VuoiJNr4V12GRP zz$>ukVQXGojz^j=#pM{*gT4CrqH`H)9#u@!d@C+>PJP7abOq2&+MD}nFXz$s91dx} zjqM>YF#FB--ZA3Ov)E=2VC+$yKdzrtV(^zA@|%P{Dy%=q^!=pnXdY_Q&#CO|+hnai zwH24O1Fg{zFa!(%L%whyl-?KNnvdAYnk+U;VoXO7gcOl==lnAsd^bt`yvy=sEOrr+3BP(YCsn@n@wlqcC{Kr6(O#` z41Qy}tOtr71OFDWnd2Wni^Zag6@>4(3tsWt>f;tc_>L7Qy)dv3;unM;(|3IQ;1`6i zBJbj#n86bN^oo2f=H!nJi#hpQ9cbcsYybF(q3?e?Z`x{~H*hje-H5tn@#g7`)1@;@gOQEWeM_`sXQZ`seJ}~4lY<$obu~`xy-<(Bkm&Avx zwFSK|@iFHtPVsr0&U>|cfqq)tm-^Ybpljk|Pg}$me6L)=EA>Msg=*kK=gThQqb|AV z7j4_<`Lxz^s=3(-x^qjf(DF@xoLk@ZE}ikvhgyuf$gN9CF6uxRO81@ZyP6>HzzuO( zom?9Iz_7=#@k6JO7)s)2Mx+qmCGjJhvd#K2#&6H!7=6t3kJZHTk8%I-?WFLS_fM)e ztk>)xW?Txfjhr{`gI9WmPAQhm|5Drg5i&=Q oP2FBeH&~kT?`Ox@+M{37fBLp744SNre@%1qcfEd6oPPxV2L@}=i2wiq diff --git a/src/qt/icons/cassette_active.ico b/src/qt/icons/cassette_active.ico deleted file mode 100644 index 32fca20b4bb41aefbd3a03a22c94f0098882b7fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmeHMJ#*YP5QQe5crq^JLWMi4OqqXRSN_|c0 zTj1fAAViTo>c$_!4Q`3WzV{YO5Q(ZcU5Fpgu9=}oh9_^Gp? zPtIStg#A8Ouz9ZD_n1$K@ip6<;?mgc0)Cz=&tVCUd`Y);jtR@xPyd-z zY1Ep7ab8EAMme7W2)9-rCob=69TzU}=vX!M_1B#A$VCnFBM&~e*@@LLV+vR1r;klI z@oB6%+JYV7_c?g1_-g*%nq2?$3RF?<$Y92lM`KeduRTd90fQc-fk|wf8P^ zI80wPS!U;Gs}`yO?FxNz?Hl@r4gKdJeR?i3KR=dVR`Zk2{SEr!^44og!_QOC#yP)3 z^b40bVcA;#f#wSO&2{A*ERkEjRG&#TK)!houxoF0ovt1?b7?vfXCLst_<<1uUNCV$n1Df84o44e1a z7;`<#2=c+NzjK(Ax_rbaSLI(@KQH~BFKZB2uru`iT8L+EH*rbdV|wcb-o{Q}TrJC3 zzZS!aBU?W&{o?D=nhQ6_`1I!K8|%uo!DT#}4~a+XYidY)fvt0tcF}SAy}1QibMcm& z(=RnXg7z1=e$--a4VT8-wcVlOuKv6RkJ-xkM-ugQdbBaM@7sL^zT*nu1;kVQ0|+l8 XF7Ps9gO>@LlWygDfUo_M0vpc%8S%6om&VLP9htQl#9Hl1E6z8*B{~;xV?QA->Y?@%=w{Y>zF6@F<*w)6-zM2yae8co9N4J8Se$k3;xiw)68wfBPha z*H1%OEE@g2<=t59Gt03vD8~`LouvYtC%wstzS*fdcBS{z}iH7a(?WJ zA=c+&2l0bSr4BJ5F(7u3JoV=oBnHF|Vo&?)cvr2QKg}T~tzYuPXz9bPTfDp7ME&k(!4ZlUy(Bx~l4WSwO|5qJ74;o4DU-zmmMO zJ!+P?0`YpYqp=u|V#N63RDe_c44RJ#t7KNUvDb@grs^cJYG` zwa~$wy^9|tuh8MS{djJ@vUllOj&=pw zXU&%3RC*YDf9LXzXS;9eSiJq-rVFymP8@!EU`JOjG5AV)E)F}W()7Uw(xWeu2U53- zKQUvmi$8p+jh@3?To-?A)FM|rG$($LICKzu%HR8l!4A^X>p2eMMJ*pgE$kl2qZfYc z((zF%r(^f%^Ss}BwET&k3RC_%R zzt-gJi@ADT^C!IGJwh(M(Mw3YdgvUR{82CI)87Bsa<%b;^Z>n`o*s#pJ(q)>+%(5* z0Y7$hxTBK~cK8R+PpurnsgEC?`Piv- z`gYAfb+25#hdRIJ*1DUt=b!uXP?(;7jt`B^63qYe3Ow8u(EaYkzC&EvcZj87H4$F= H9_YUTai}4j diff --git a/src/qt/icons/cassette_empty_active.ico b/src/qt/icons/cassette_empty_active.ico deleted file mode 100644 index e1bf61f612a9628a4416efa842d21d04911c7f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 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 diff --git a/src/qt/icons/cdrom_empty.ico b/src/qt/icons/cdrom_empty.ico deleted file mode 100644 index 45580999cc66d4d9a75aed03ff9fc268592a28d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmciIF>d5W5Cu>gSQs#zY_P$G3LW|g8~Fx=LOC*g2}24U`Uo31ut$KEI`Zlgy2J#| zln9XMYL4D)tA}MU7lbL#;Vp-Gmqp{FiER)xuJ1;6R$V;^tAe zKmS=n@3?B=R4om@Fl)@!wlrwT*LZ(64BM+=xH%n$&1GO8xEY2%@Uq~|=ehhgc(=j7 z`!o#YJ`=Z_@qSb8S7rPb_o!zK`Wfy!tVshNqeYu$M)@fm%JZf?clz^T zyZIE)sq=VF6+8>P8v5J7y9&qnE|0&B=h=Nc*B;_|SDst(3f+AlKb~7Z#=G>obJ0bjRFPa&7i0h&9T3nCXjI{Mn8?N!lnt9&R#+&oNX`%k*^=%HPJX%~e z8JGCA2QJK7=JHUyh2gOuYM>hPAU?Sk#qly${0=vxnwqj0pfC2X=1_XKF28el z8B1M`&8)*-J?R@i>(o8T;lic+4IZQu+Is24aA4N97xFEnH`o7jwRzUsj`?P7@wNTa zn?hRI<2AJT@qo0UJ;$X3Q z_pi%%@9N{d>k;_e!PcWln*XnKI~fy zU+$0;^8V)Q!#Q^CM!DXS((zN?+0#6G>p|U1df~Bzxd-0xIXx_S%4ctJ-td?nXskth zj?WW{uj#>h)GQ&s9(clBKi2~-m}^_}wchHddeAR#sHTOPN2kRXj~@0T*U*G&mN4rq z@SofxGM6{Zd0rVauQiXw@BL|HE^jE0Uule5;&@9~PQX$PZ&-Pj@_IbGhowGw>$Nsb z$72smdh$`b_#TbB!dolH_R#TI!qP93In?VKy|rAtIp4?JtFOQE{^INBZ7*YuvpwLu zX4SQ@>{%;EOWwTIgFJ7jK4YzubF^CVs&?Fu%;ycWPF3IK+C0y-YoB+#Vb+Nr_Jb$P zTyx$nO+1JP#l!gEI$Grw;lImDxdw}kkW<-s9sT0EgV zExfgOU^o%r!4rz}hOgVY?Gtv_@Qe#dAZi`ETW-j(O8dFNjB(8A20 zn-B5*&iD@seSiKCU;Nzn{n=f7@pIevr`z}-B0i5e-E2002KIrM{pn4=x!P{}v)jPC c&v+X1%k2iQp!&d~S9FVh@!9=DM0~IGAARs@lmGw# diff --git a/src/qt/icons/cdrom_empty_active.ico b/src/qt/icons/cdrom_empty_active.ico deleted file mode 100644 index a48371bd7b0e0775308bacc103eb0cfb7bb16f8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 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 diff --git a/src/qt/icons/floppy_525_active.ico b/src/qt/icons/floppy_525_active.ico deleted file mode 100644 index e19baa8a2094ca6d155472f1efa9c38a706e80a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmeHLy>b*W4A#L7KSPl#Qly}`k}^-ggoepuP%)G|!j@DS9wQYsWga3AkSAbxgGHa# z-<{TL@2+?ExCG8O!nSPblO+6$dHac`5{@@HC5jGg*xmYI7_fUhtIQVZw>oQ269R^*YlUidmkTK-u$Nasqsc0 z8{;ATcz-+}E1%1)G4j|`RaG)S4=oS<9v@@x1CP(WzDLsZ&AF!G(fBk}x$)|*u1Q>v z`)Av_MxD`eWAz603hlers6^Z4g09UT)Bdr&Vd??>9pW9t8ua9H#rqv&$f2pW?hhCT z(5E^F>m2PohJDBIpN~DyY=LqAFvdgnA!hI~8}^$l;_1lvBjT%iI{FwN-ych#<#A)9 z<*T>JkH^~QW%|aY`iAagi9YPj)pOc>(%1gZz%TF#d-{(&`i;H!AI2%d9gF!Xp5G&K zrg^%j%8iZxRo6)IS~Oq1IKyC2FwNbk>BIyRfCc70;KL!7V< zokMqsvGe_|=5@btO+5_$n4%xL(bV$%59gX_e~Es@82w$Pe@gT}b^nyukG-TmA6e`R z^9OnnD>j>lJhEhR{{TDeAC>>Av!y%6fId&igQfH{r{exG>4$9zAGQ7-nPWd?1BPLd zm+MRXlhe`1pQ0aimei*kYo+?JA2ppcRMSuTyYCnulgH#A*utFP`-*dKvmbl=G43PO zv($Qy@AvvU$#K=xOV)&1-fDe(?+EjFPip=_>>ak%%~wi%hgJBG%WfN|GljDN&--NV zm~S&ZV(YuI`^E%&dDpQIm_v8o=SSbTg`0YTRlzRBrL9Zh_+znB`2?d(4Ln>NomQ!doLHljEoMk_VYwt5OTAJCWxPA}@dM M33KpE+j=8^0H9Cz?*IS* diff --git a/src/qt/icons/floppy_525_empty.ico b/src/qt/icons/floppy_525_empty.ico deleted file mode 100644 index 8fa6c6b87c333dee1e85e39c68e15470471d3305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmeI0J8soL6ov;WLP9htQlz{kB}+)f4lGKj5F4Q8mXs_Z1qE`Xq>U(0HjzyPiH;_X zIlrARapwAX9?lDNN4olb9{+ib@7Qt(&%#dF-3^AT@Np-EHz9<*y+J;G9>THd_V)+* z%Zm^`ybNKr8szWB`)$6jjANG;VbB|d1LIAs?n+mSVZC1W+)}i>9h`56hkXnWJ6oy~ zgeM)>9vA)D*;yY0RJdF&c|mx}PdxH~_<-oax%{#zHY<*SEW4KezK93vgOXe4IJ=unvoF82BBgcqc8FK??(LYrE@gBo{!d~4)Mw?)zKh^jQ$O5XR4wGm z<>bzixFz$41Ey*!sh^l&st^3O^@rf?L&^M!!Ca9̾*+C%wh#r8qFsUQ0__F`QSLFHI?z27l6Oh}OKa8qsG~MkEg#;J z{)qvW_OPUXa)PDzFuZO5_5Xin2yXZPu;?6Ia{n{y+S$X?{m*qSilY_#586$A>^GL} j`$J>jA=-RAZ`z}awt4%fX-_T(l-!uUD30Yl{?Yyg5+_;a diff --git a/src/qt/icons/floppy_525_empty_active.ico b/src/qt/icons/floppy_525_empty_active.ico deleted file mode 100644 index 703d2a64f6d3a3a3ac6726d3411e84959eccd8e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmeHLF>ll`6!ujG2{E)oD|O>WMt;JvFn6fc5hldQ!c0a+e!>k5l}~C{#84eS;&$dD zF~QO$ywAyZaeQ%XCsz(cjnXf+-}}Dzo*gHgQWLeW4iA;!RK3|(>V;D3=&0&{eyG%? zjGdfR{SS|ndi_|b>9p!!h~E#feJVb3D-6}RfSQS4M=R^G6oid?S=XW{tZxKMRfsRI znuk80=5x!@iQuVL9UtRh+(eEe zKHmF?IW&K~udh#^lxBWV>e+$CRgLWHw=#cwRqA&y<$Wcn!?=)nytm{NT0N7C@2ywz zE#1*t&xp(q>BGmpAVZ$4I>3>2vK)o*_*cU{__C&<<-Avt^w0A#yx~|5N;|L27Mihx+qAgs?&L z=d01pao0}k2l73&SL(A#X)aW$PgNT+el7Fw#qQb&>I&rt10z2i=sx^z?048y0-4Fh z@2~ja0)ex+B4j(^p$kPor&p8I4ZHk$n2a*^>ky2vl} zIq!{4xb6Gj)eGGt4vAr#`S*R7h*JAsqmT4Q=bxp`Na`52vi`!ATzgL+`Hzj^U(bK+ z{@;22b`dl7z?Swu_l?DzJ=o|EKL4nV)Y04+LeGMINaPRJ%k|G)f05%m#A@>oW8i+E z9uecXc#eXHad0e#A?;QS=+s&*lwtBy7p4R9hg+~wBZfk7XZgppN9G@1e@QB)&G{ku zyT0B6*qAsU!!h}j8}ZjMWNEwpjDur;3aN|ubNBzYVnqEI$576p{`4D@KRJlGIgH7l zn#9~Sq~Cr1!}mXHNW5SFdDb~NX8*I+Lu*ez?0?>;B7D$%`)YJ^+_!W4TAv*oGvCvC tHZi794JuXjiJV_f%;MXgKL2@au5OJ!|E101#%R6L^1FnfPRGkH<~P>c0FM9w diff --git a/src/qt/icons/hard_disk_active.ico b/src/qt/icons/hard_disk_active.ico deleted file mode 100644 index 9946a7f2e14e25dccc12b695f445fa2a63e96706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmeI1zm6P55QqC@3xpilfdglE2@;{-07pCrx&R^Z21FYY@(2zHECOQ4mc-9t3F$)Q z&;eqouV+7BUAt#@W_I^X;6Bw>cURZ%S6$P8X7@_DC=bh%CnfY%`Tk)k-;`3GJ{{Y? ze^$zG(f91x*#7B@Qoegs%GK4_eieRy$JnpJC#r!k_J=Aj!tcm3guk*BYABoVRYn{! z#O&+vp@jGCA2@+=eSLjU;N0i`%gdL;X0xe6y_LEC_}$#xRIcrITXASp7o!^Eqvl~3 zKYolsEc8*tA-?LvyhE6`^VeT4ebDq_#~&Xw?L+?fF7;=;F}HcB@&EY8BtLdJ<#j&T zzWj9u3yfa;jA=2zv0n^x(9R#sr9%E$z+kNrd_Q&>{)#8|=P<;Qin+{_%|(68 z^@DRJj+=Vka9&Yeh&jB#RM9Z-R&$B?xnyC1oEgpShYFE?m^I$xFJ!V|N_q74`JeE!eD6BGX|^ebSRGy1IO{E?Sq1WfQk>OCR%F~+snA89!D;h3x3;j$&#&wdn;a{%kvQLt#9L9`V7VApY^F|?wn2U&#B#d zJBq|J@538z$C@=w9_He+4?X+xo^1DgwjG1-SyTgz58Lv= zvlbsL&tSFqo~7^{gHPOIQjB(nE#A}T@G>4Vr!Fw@ww3Nx!dC73l=3~ z(=WcZiV;}gWpPdR;x{%ij&ObNyevcOsCY~?)LD>-fPdQ4{TUdB&xhgP2gC5sMZ9~B zXLfk_>=$YLwwlVCRzcHF)v_+ntW=xNp@3;9oF8Fi!&4c_s&fGV}-F^pN z!k=TvT)7T!=Eeu<@oJkpf5)Tq^T_o)hPwM|pU&g*`RiQnLmOXy2X5zb?lv*VANp+H y_4myq^BaS?xepEJr}A+#5I;a%#y^1K$A~u%HvCjD%E^NY?6M7c6ZoF#=>GtO+SvmD diff --git a/src/qt/icons/mo_active.ico b/src/qt/icons/mo_active.ico deleted file mode 100644 index 06b788b4d533b13cbf947d59592360fc02d4c612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 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 diff --git a/src/qt/icons/network_empty.ico b/src/qt/icons/network_empty.ico deleted file mode 100644 index 4a1a102846ea018ba6d899b5352dd9fbdcfce858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6950 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 DJ}<5+ diff --git a/src/qt/icons/zip_empty_active.ico b/src/qt/icons/zip_empty_active.ico deleted file mode 100644 index d57860b1050ffb2520c1c04c337435f1fc4a50fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9622 zcmchczi!+{5XSdxCq|IME*!v}Rl3X@_<{gwqr&V0Bvp{7kmxRD9zmtC0+KeBq?fpt zxFS%aMu5DT+2fB~j=1EKJbMHBU9qfO< zcJ6QSy?%YL|NO?e-@kS4U_pQ{(tuP$?0&XjHGgfGFQ`CE|A*z^retsVD z?CdPHgR7;M>%h};kPF`2+{D`J>+4t(WJz`RpYk*u)WjThYHotsGy1yfgN~*?&4nxW zmB7{2)ntGA4b~ctC`A5=`yl;oO|LJtpv=MkvBwf>=e1l>JGBYYLrZN9u^if2h2yCG z(UU`T5l{OQV{Ysmrt?$7d^sdWDcVOLu4Z2K8t|S=umSAs<}m z;A~r*qYoXUoQ3+}vU&#XhEr?O#WS|ET06%X>xCQSY_)qWH-oh!e$}V-?2+6)dJh-r zOM1XXo$}KMedJ6bb>w|1eQ2LTbb&+qh|Qf{d*9yPcAq67hl72YLh{itq>mZX9Ldua zds`%rx|k?J6p4Z4;Yn@1Pp{H8 zk%PUq7&&XZv5a9 z{nWAtAkP7NiT*(jc|bY;G4$uSnPaR+vlsDf>jAZU1Gn|V4bnsN(xraol@;Kk2GsnR z&>((`kxTi~OA6r~;viPq!}i1;(@#!m5Avu(W22;<}S6z^e^S4u0%ikT#9gmbM$Mj?xn0jL<8Jo`ia?G{1)j+K8Qbx z5&??DELu)$kLg!lUAAVet(;-^Jbdy`!^8Vcxc}(F-Kh(E!JVL26u=$i*QGr*#AS%T6){7(=(@kuctj< z#_oDP{^ixh4mu_^FsJF^25p%&p5>vw)~EY2p}~GG273w#e%~+WSoZS!XSI?os2)`B(MUPtnT$N|D>!oZmj1SsFyIw$#45a`WRa z(lBQalK%9t^Wdj9X!Ck@qao&U&Jt9=F5N5mb^hoR>~ST2;-Jmz**aUILu**-*Nc2@ zfew5ieyx?fRwFifIiyz)g@=6jQ*L4w>1omC +#include +#include "qt_iconindicators.hpp" + +QIcon +getIndicatorIcon(IconIndicator indicator) +{ + switch (indicator) { + case Active: + return QIcon(":/settings/qt/icons/active.ico"); + case Disabled: + return QIcon(":/settings/qt/icons/disabled.ico"); + default: + return QIcon(); + } +} + +QPixmap +getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode, IconIndicator indicator) +{ + auto iconPixmap = icon.pixmap(size, iconMode); + + if (indicator == None) + return iconPixmap; + + auto painter = QPainter(&iconPixmap); + auto indicatorPixmap = getIndicatorIcon(indicator).pixmap(size); + + painter.drawPixmap(0, 0, indicatorPixmap); + painter.end(); + + return iconPixmap; +} \ No newline at end of file diff --git a/src/qt/qt_iconindicators.hpp b/src/qt/qt_iconindicators.hpp new file mode 100644 index 000000000..553520063 --- /dev/null +++ b/src/qt/qt_iconindicators.hpp @@ -0,0 +1,15 @@ +#ifndef QT_ICONINDICATORS_HPP +# define QT_INDICATORS_HPP + +#include +#include + +enum IconIndicator { + None, + Active, + Disabled, +}; + +QPixmap getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode, IconIndicator indicator); + +#endif \ No newline at end of file diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index eff29a232..d555be360 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -54,6 +54,7 @@ extern "C" { #include "qt_mainwindow.hpp" #include "qt_soundgain.hpp" #include "qt_progsettings.hpp" +#include "qt_iconindicators.hpp" #include @@ -65,19 +66,24 @@ namespace { struct PixmapSetActive { QPixmap normal; QPixmap active; - void load(const QString &basePath); + void load(const QIcon &icon); +}; +struct PixmapSetDisabled { + QPixmap normal; + QPixmap disabled; + void load(const QIcon &icon); }; struct PixmapSetEmpty { QPixmap normal; QPixmap empty; - void load(const QString &basePath); + void load(const QIcon &icon); }; struct PixmapSetEmptyActive { QPixmap normal; QPixmap active; QPixmap empty; QPixmap empty_active; - void load(QString basePath); + void load(const QIcon &icon); }; struct Pixmaps { PixmapSetEmpty cartridge; @@ -90,7 +96,7 @@ struct Pixmaps { PixmapSetEmptyActive mo; PixmapSetActive hd; PixmapSetEmptyActive net; - QPixmap sound, soundMuted; + PixmapSetDisabled sound; }; struct StateActive { @@ -170,30 +176,35 @@ struct StateEmptyActive { }; static QSize pixmap_size(16, 16); -static const QString pixmap_empty = QStringLiteral("_empty"); -static const QString pixmap_active = QStringLiteral("_active"); -static const QString pixmap_empty_active = QStringLiteral("_empty_active"); + void -PixmapSetEmpty::load(const QString &basePath) +PixmapSetEmpty::load(const QIcon &icon) { - normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size); + normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None); + empty = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, None); } void -PixmapSetActive::load(const QString &basePath) +PixmapSetActive::load(const QIcon &icon) { - normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size); - active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size); + normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None); + active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active); } void -PixmapSetEmptyActive::load(QString basePath) +PixmapSetDisabled::load(const QIcon &icon) { - 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); + normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None); + disabled = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, Disabled); +} + +void +PixmapSetEmptyActive::load(const QIcon &icon) +{ + normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None); + active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active); + empty = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, None); + empty_active = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, Active); } } @@ -202,21 +213,20 @@ struct MachineStatus::States { States(QObject *parent) { - pixmaps.cartridge.load(":/settings/qt/icons/cartridge%1.ico"); - pixmaps.cassette.load(":/settings/qt/icons/cassette%1.ico"); + pixmaps.cartridge.load(QIcon(":/settings/qt/icons/cartridge.ico")); + pixmaps.cassette.load(QIcon(":/settings/qt/icons/cassette.ico")); pixmaps.floppy_disabled.normal = QIcon(":/settings/qt/icons/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(":/settings/qt/icons/floppy_525%1.ico"); - pixmaps.floppy_35.load(":/settings/qt/icons/floppy_35%1.ico"); - pixmaps.cdrom.load(":/settings/qt/icons/cdrom%1.ico"); - pixmaps.zip.load(":/settings/qt/icons/zip%1.ico"); - pixmaps.mo.load(":/settings/qt/icons/mo%1.ico"); - pixmaps.hd.load(":/settings/qt/icons/hard_disk%1.ico"); - pixmaps.net.load(":/settings/qt/icons/network%1.ico"); - pixmaps.sound = QIcon(":/settings/qt/icons/sound.ico").pixmap(pixmap_size); - pixmaps.soundMuted = QIcon(":/settings/qt/icons/sound_mute.ico").pixmap(pixmap_size); + pixmaps.floppy_525.load(QIcon(":/settings/qt/icons/floppy_525.ico")); + pixmaps.floppy_35.load(QIcon(":/settings/qt/icons/floppy_35.ico")); + pixmaps.cdrom.load(QIcon(":/settings/qt/icons/cdrom.ico")); + pixmaps.zip.load(QIcon(":/settings/qt/icons/zip.ico")); + pixmaps.mo.load(QIcon(":/settings/qt/icons/mo.ico")); + pixmaps.hd.load(QIcon(":/settings/qt/icons/hard_disk.ico")); + pixmaps.net.load(QIcon(":/settings/qt/icons/network.ico")); + pixmaps.sound.load(QIcon(":/settings/qt/icons/sound.ico")); cartridge[0].pixmaps = &pixmaps.cartridge; cartridge[1].pixmaps = &pixmaps.cartridge; @@ -510,7 +520,7 @@ MachineStatus::refresh(QStatusBar *sbar) sound_muted ^= 1; config_save(); if (d->sound) - d->sound->setPixmap(sound_muted ? d->pixmaps.soundMuted : d->pixmaps.sound); + d->sound->setPixmap(sound_muted ? d->pixmaps.sound.disabled : d->pixmaps.sound.normal); muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); }); @@ -694,7 +704,7 @@ MachineStatus::refresh(QStatusBar *sbar) } d->sound = std::make_unique(); - d->sound->setPixmap(sound_muted ? d->pixmaps.soundMuted : d->pixmaps.sound); + d->sound->setPixmap(sound_muted ? d->pixmaps.sound.disabled : d->pixmaps.sound.normal); if (muteUnmuteAction) muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); diff --git a/src/qt_resources.qrc b/src/qt_resources.qrc index 6ca323b89..dc8db2c06 100644 --- a/src/qt_resources.qrc +++ b/src/qt_resources.qrc @@ -1,16 +1,9 @@ qt/icons/cartridge.ico - qt/icons/cartridge_empty.ico qt/icons/cassette.ico - qt/icons/cassette_active.ico - qt/icons/cassette_empty.ico - qt/icons/cassette_empty_active.ico qt/icons/cdrom.ico - qt/icons/cdrom_active.ico qt/icons/cdrom_disabled.ico - qt/icons/cdrom_empty.ico - qt/icons/cdrom_empty_active.ico qt/icons/cdrom_mute.ico qt/icons/cdrom_unmute.ico qt/icons/cdrom_image.ico @@ -18,38 +11,24 @@ qt/icons/cdrom_host.ico qt/icons/display.ico qt/icons/floppy_35.ico - qt/icons/floppy_35_active.ico - qt/icons/floppy_35_empty.ico - qt/icons/floppy_35_empty_active.ico qt/icons/floppy_525.ico - qt/icons/floppy_525_active.ico - qt/icons/floppy_525_empty.ico - qt/icons/floppy_525_empty_active.ico qt/icons/floppy_and_cdrom_drives.ico qt/icons/floppy_disabled.ico qt/icons/hard_disk.ico - qt/icons/hard_disk_active.ico qt/icons/input_devices.ico qt/icons/machine.ico qt/icons/mo.ico - qt/icons/mo_active.ico qt/icons/mo_disabled.ico - qt/icons/mo_empty.ico - qt/icons/mo_empty_active.ico qt/icons/network.ico - qt/icons/network_active.ico - qt/icons/network_empty.ico qt/icons/other_peripherals.ico qt/icons/other_removable_devices.ico qt/icons/ports.ico qt/icons/sound.ico - qt/icons/sound_mute.ico qt/icons/storage_controllers.ico qt/icons/zip.ico - qt/icons/zip_active.ico qt/icons/zip_disabled.ico - qt/icons/zip_empty.ico - qt/icons/zip_empty_active.ico + qt/icons/active.ico + qt/icons/disabled.ico qt/icons/86Box-gray.ico qt/icons/86Box-green.ico qt/icons/86Box-red.ico