QIcon caching optimizations in settings pages

This commit is contained in:
RichardG867
2025-09-19 19:04:24 -03:00
parent 4b8b0efa48
commit bc350fc8ce
5 changed files with 65 additions and 32 deletions

View File

@@ -34,43 +34,41 @@ extern "C" {
#include <86box/cdrom.h>
}
#include <QStandardItemModel>
#include "qt_models_common.hpp"
#include "qt_harddrive_common.hpp"
#include "qt_settings_bus_tracking.hpp"
#include "qt_progsettings.hpp"
static void
setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
void
SettingsFloppyCDROM::setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
{
QIcon icon;
if (type == 0)
icon = QIcon(":/settings/qt/icons/floppy_disabled.ico");
icon = floppy_disabled_icon;
else if (type >= 1 && type <= 6)
icon = QIcon(":/settings/qt/icons/floppy_525.ico");
icon = floppy_525_icon;
else
icon = QIcon(":/settings/qt/icons/floppy_35.ico");
icon = floppy_35_icon;
model->setData(idx, QObject::tr(fdd_getname(type)));
model->setData(idx, type, Qt::UserRole);
model->setData(idx, icon, Qt::DecorationRole);
}
static void
setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
void
SettingsFloppyCDROM::setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
{
QIcon icon;
switch (bus) {
case CDROM_BUS_DISABLED:
icon = QIcon(":/settings/qt/icons/cdrom_disabled.ico");
icon = cdrom_disabled_icon;
break;
case CDROM_BUS_ATAPI:
case CDROM_BUS_SCSI:
case CDROM_BUS_MITSUMI:
case CDROM_BUS_MKE:
icon = QIcon(":/settings/qt/icons/cdrom.ico");
icon = cdrom_icon;
break;
}
@@ -116,6 +114,10 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
{
ui->setupUi(this);
floppy_disabled_icon = QIcon(":/settings/qt/icons/floppy_disabled.ico");
floppy_525_icon = QIcon(":/settings/qt/icons/floppy_525.ico");
floppy_35_icon = QIcon(":/settings/qt/icons/floppy_35.ico");
auto *model = ui->comboBoxFloppyType->model();
int i = 0;
while (true) {
@@ -150,6 +152,9 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
this, &SettingsFloppyCDROM::onFloppyRowChanged);
ui->tableViewFloppy->setCurrentIndex(model->index(0, 0));
cdrom_disabled_icon = QIcon(":/settings/qt/icons/cdrom_disabled.ico");
cdrom_icon = QIcon(":/settings/qt/icons/cdrom.ico");
Harddrives::populateCDROMBuses(ui->comboBoxBus->model());
model = ui->comboBoxSpeed->model();
for (int i = 0; i < 72; i++)

View File

@@ -2,6 +2,7 @@
#define QT_SETTINGSFLOPPYCDROM_HPP
#include <QWidget>
#include <QStandardItemModel>
namespace Ui {
class SettingsFloppyCDROM;
@@ -36,7 +37,15 @@ private slots:
private:
Ui::SettingsFloppyCDROM *ui;
void setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type);
void setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel);
void enableCurrentlySelectedChannel();
QIcon floppy_disabled_icon;
QIcon floppy_525_icon;
QIcon floppy_35_icon;
QIcon cdrom_disabled_icon;
QIcon cdrom_icon;
};
#endif // QT_SETTINGSFLOPPYCDROM_HPP

View File

@@ -44,6 +44,8 @@ const int DataBusChannel = Qt::UserRole + 1;
const int DataBusPrevious = Qt::UserRole + 2;
const int DataBusChannelPrevious = Qt::UserRole + 3;
QIcon hard_disk_icon;
#if 0
static void
normalize_hd_list()
@@ -78,28 +80,31 @@ addRow(QAbstractItemModel *model, hard_disk_t *hd)
model->insertRow(row);
auto busIndex = model->index(row, ColumnBus);
QString busName = Harddrives::BusChannelName(hd->bus_type, hd->channel);
model->setData(model->index(row, ColumnBus), busName);
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);
model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannelPrevious);
model->setData(busIndex, busName);
model->setData(busIndex, hard_disk_icon, Qt::DecorationRole);
model->setData(busIndex, hd->bus_type, DataBus);
model->setData(busIndex, hd->bus_type, DataBusPrevious);
model->setData(busIndex, hd->channel, DataBusChannel);
model->setData(busIndex, hd->channel, DataBusChannelPrevious);
Harddrives::busTrackClass->device_track(1, DEV_HDD, hd->bus_type, hd->channel);
auto filenameIndex = model->index(row, ColumnFilename);
QString fileName = hd->fn;
if (fileName.startsWith(userPath, Qt::CaseInsensitive))
model->setData(model->index(row, ColumnFilename), fileName.mid(userPath.size()));
model->setData(filenameIndex, fileName.mid(userPath.size()));
else
model->setData(model->index(row, ColumnFilename), fileName);
model->setData(filenameIndex, fileName);
model->setData(model->index(row, ColumnFilename), fileName, Qt::UserRole);
model->setData(filenameIndex, fileName, Qt::UserRole);
model->setData(model->index(row, ColumnCylinders), hd->tracks);
model->setData(model->index(row, ColumnHeads), hd->hpc);
model->setData(model->index(row, ColumnSectors), hd->spt);
model->setData(model->index(row, ColumnSize), (hd->tracks * hd->hpc * hd->spt) >> 11);
model->setData(model->index(row, ColumnSpeed), QObject::tr(hdd_preset_getname(hd->speed_preset)));
model->setData(model->index(row, ColumnSpeed), hd->speed_preset, Qt::UserRole);
auto speedIndex = model->index(row, ColumnSpeed);
model->setData(speedIndex, QObject::tr(hdd_preset_getname(hd->speed_preset)));
model->setData(speedIndex, hd->speed_preset, Qt::UserRole);
}
SettingsHarddisks::SettingsHarddisks(QWidget *parent)
@@ -108,6 +113,8 @@ SettingsHarddisks::SettingsHarddisks(QWidget *parent)
{
ui->setupUi(this);
hard_disk_icon = QIcon(":/settings/qt/icons/hard_disk.ico");
QAbstractItemModel *model = new QStandardItemModel(0, 7, this);
model->setHeaderData(ColumnBus, Qt::Horizontal, tr("Bus"));
model->setHeaderData(ColumnFilename, Qt::Horizontal, tr("File"));

View File

@@ -26,8 +26,6 @@ extern "C" {
#include <86box/rdisk.h>
}
#include <QStandardItemModel>
#include "qt_models_common.hpp"
#include "qt_harddrive_common.hpp"
#include "qt_settings_bus_tracking.hpp"
@@ -47,17 +45,17 @@ rdiskDriveTypeName(int i)
rdisk_drive_types[i].revision);
}
static void
setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
void
SettingsOtherRemovable::setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
{
QIcon icon;
switch (bus) {
case MO_BUS_DISABLED:
icon = QIcon(":/settings/qt/icons/mo_disabled.ico");
icon = mo_disabled_icon;
break;
case MO_BUS_ATAPI:
case MO_BUS_SCSI:
icon = QIcon(":/settings/qt/icons/mo.ico");
icon = mo_icon;
break;
default:
@@ -71,17 +69,17 @@ setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t
model->setData(i, icon, Qt::DecorationRole);
}
static void
setRDiskBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
void
SettingsOtherRemovable::setRDiskBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
{
QIcon icon;
switch (bus) {
case RDISK_BUS_DISABLED:
icon = QIcon(":/settings/qt/icons/rdisk_disabled.ico");
icon = rdisk_disabled_icon;
break;
case RDISK_BUS_ATAPI:
case RDISK_BUS_SCSI:
icon = QIcon(":/settings/qt/icons/rdisk.ico");
icon = rdisk_icon;
break;
default:
@@ -123,6 +121,9 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
{
ui->setupUi(this);
mo_disabled_icon = QIcon(":/settings/qt/icons/mo_disabled.ico");
mo_icon = QIcon(":/settings/qt/icons/mo.ico");
Harddrives::populateRemovableBuses(ui->comboBoxMOBus->model());
ui->comboBoxMOBus->model()->removeRows(3, ui->comboBoxMOBus->model()->rowCount() - 3);
auto *model = ui->comboBoxMOType->model();
@@ -147,6 +148,9 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
connect(ui->tableViewMO->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &SettingsOtherRemovable::onMORowChanged);
ui->tableViewMO->setCurrentIndex(model->index(0, 0));
rdisk_disabled_icon = QIcon(":/settings/qt/icons/rdisk_disabled.ico");
rdisk_icon = QIcon(":/settings/qt/icons/rdisk.ico");
Harddrives::populateRemovableBuses(ui->comboBoxRDiskBus->model());
if ((ui->comboBoxRDiskBus->model()->rowCount() - 3) > 0)
ui->comboBoxRDiskBus->model()->removeRows(3, ui->comboBoxRDiskBus->model()->rowCount() - 3);

View File

@@ -2,6 +2,7 @@
#define QT_SETTINGSOTHERREMOVABLE_HPP
#include <QWidget>
#include <QStandardItemModel>
namespace Ui {
class SettingsOtherRemovable;
@@ -37,8 +38,15 @@ private slots:
private:
Ui::SettingsOtherRemovable *ui;
void setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel);
void setRDiskBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel);
void enableCurrentlySelectedChannel_MO();
void enableCurrentlySelectedChannel_RDisk();
QIcon mo_disabled_icon;
QIcon mo_icon;
QIcon rdisk_disabled_icon;
QIcon rdisk_icon;
};
#endif // QT_SETTINGSOTHERREMOVABLE_HPP