QIcon caching optimizations in settings pages
This commit is contained in:
@@ -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++)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user