QIcon caching optimizations in settings pages
This commit is contained in:
@@ -34,43 +34,41 @@ extern "C" {
|
|||||||
#include <86box/cdrom.h>
|
#include <86box/cdrom.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <QStandardItemModel>
|
|
||||||
|
|
||||||
#include "qt_models_common.hpp"
|
#include "qt_models_common.hpp"
|
||||||
#include "qt_harddrive_common.hpp"
|
#include "qt_harddrive_common.hpp"
|
||||||
#include "qt_settings_bus_tracking.hpp"
|
#include "qt_settings_bus_tracking.hpp"
|
||||||
#include "qt_progsettings.hpp"
|
#include "qt_progsettings.hpp"
|
||||||
|
|
||||||
static void
|
void
|
||||||
setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
|
SettingsFloppyCDROM::setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
if (type == 0)
|
if (type == 0)
|
||||||
icon = QIcon(":/settings/qt/icons/floppy_disabled.ico");
|
icon = floppy_disabled_icon;
|
||||||
else if (type >= 1 && type <= 6)
|
else if (type >= 1 && type <= 6)
|
||||||
icon = QIcon(":/settings/qt/icons/floppy_525.ico");
|
icon = floppy_525_icon;
|
||||||
else
|
else
|
||||||
icon = QIcon(":/settings/qt/icons/floppy_35.ico");
|
icon = floppy_35_icon;
|
||||||
|
|
||||||
model->setData(idx, QObject::tr(fdd_getname(type)));
|
model->setData(idx, QObject::tr(fdd_getname(type)));
|
||||||
model->setData(idx, type, Qt::UserRole);
|
model->setData(idx, type, Qt::UserRole);
|
||||||
model->setData(idx, icon, Qt::DecorationRole);
|
model->setData(idx, icon, Qt::DecorationRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
SettingsFloppyCDROM::setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
|
|
||||||
switch (bus) {
|
switch (bus) {
|
||||||
case CDROM_BUS_DISABLED:
|
case CDROM_BUS_DISABLED:
|
||||||
icon = QIcon(":/settings/qt/icons/cdrom_disabled.ico");
|
icon = cdrom_disabled_icon;
|
||||||
break;
|
break;
|
||||||
case CDROM_BUS_ATAPI:
|
case CDROM_BUS_ATAPI:
|
||||||
case CDROM_BUS_SCSI:
|
case CDROM_BUS_SCSI:
|
||||||
case CDROM_BUS_MITSUMI:
|
case CDROM_BUS_MITSUMI:
|
||||||
case CDROM_BUS_MKE:
|
case CDROM_BUS_MKE:
|
||||||
icon = QIcon(":/settings/qt/icons/cdrom.ico");
|
icon = cdrom_icon;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,6 +114,10 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
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();
|
auto *model = ui->comboBoxFloppyType->model();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -150,6 +152,9 @@ SettingsFloppyCDROM::SettingsFloppyCDROM(QWidget *parent)
|
|||||||
this, &SettingsFloppyCDROM::onFloppyRowChanged);
|
this, &SettingsFloppyCDROM::onFloppyRowChanged);
|
||||||
ui->tableViewFloppy->setCurrentIndex(model->index(0, 0));
|
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());
|
Harddrives::populateCDROMBuses(ui->comboBoxBus->model());
|
||||||
model = ui->comboBoxSpeed->model();
|
model = ui->comboBoxSpeed->model();
|
||||||
for (int i = 0; i < 72; i++)
|
for (int i = 0; i < 72; i++)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define QT_SETTINGSFLOPPYCDROM_HPP
|
#define QT_SETTINGSFLOPPYCDROM_HPP
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QStandardItemModel>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class SettingsFloppyCDROM;
|
class SettingsFloppyCDROM;
|
||||||
@@ -36,7 +37,15 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsFloppyCDROM *ui;
|
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();
|
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
|
#endif // QT_SETTINGSFLOPPYCDROM_HPP
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ const int DataBusChannel = Qt::UserRole + 1;
|
|||||||
const int DataBusPrevious = Qt::UserRole + 2;
|
const int DataBusPrevious = Qt::UserRole + 2;
|
||||||
const int DataBusChannelPrevious = Qt::UserRole + 3;
|
const int DataBusChannelPrevious = Qt::UserRole + 3;
|
||||||
|
|
||||||
|
QIcon hard_disk_icon;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void
|
static void
|
||||||
normalize_hd_list()
|
normalize_hd_list()
|
||||||
@@ -78,28 +80,31 @@ addRow(QAbstractItemModel *model, hard_disk_t *hd)
|
|||||||
|
|
||||||
model->insertRow(row);
|
model->insertRow(row);
|
||||||
|
|
||||||
|
auto busIndex = model->index(row, ColumnBus);
|
||||||
QString busName = Harddrives::BusChannelName(hd->bus_type, hd->channel);
|
QString busName = Harddrives::BusChannelName(hd->bus_type, hd->channel);
|
||||||
model->setData(model->index(row, ColumnBus), busName);
|
model->setData(busIndex, busName);
|
||||||
model->setData(model->index(row, ColumnBus), QIcon(":/settings/qt/icons/hard_disk.ico"), Qt::DecorationRole);
|
model->setData(busIndex, hard_disk_icon, Qt::DecorationRole);
|
||||||
model->setData(model->index(row, ColumnBus), hd->bus_type, DataBus);
|
model->setData(busIndex, hd->bus_type, DataBus);
|
||||||
model->setData(model->index(row, ColumnBus), hd->bus_type, DataBusPrevious);
|
model->setData(busIndex, hd->bus_type, DataBusPrevious);
|
||||||
model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel);
|
model->setData(busIndex, hd->channel, DataBusChannel);
|
||||||
model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannelPrevious);
|
model->setData(busIndex, hd->channel, DataBusChannelPrevious);
|
||||||
Harddrives::busTrackClass->device_track(1, DEV_HDD, hd->bus_type, hd->channel);
|
Harddrives::busTrackClass->device_track(1, DEV_HDD, hd->bus_type, hd->channel);
|
||||||
|
auto filenameIndex = model->index(row, ColumnFilename);
|
||||||
QString fileName = hd->fn;
|
QString fileName = hd->fn;
|
||||||
if (fileName.startsWith(userPath, Qt::CaseInsensitive))
|
if (fileName.startsWith(userPath, Qt::CaseInsensitive))
|
||||||
model->setData(model->index(row, ColumnFilename), fileName.mid(userPath.size()));
|
model->setData(filenameIndex, fileName.mid(userPath.size()));
|
||||||
else
|
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, ColumnCylinders), hd->tracks);
|
||||||
model->setData(model->index(row, ColumnHeads), hd->hpc);
|
model->setData(model->index(row, ColumnHeads), hd->hpc);
|
||||||
model->setData(model->index(row, ColumnSectors), hd->spt);
|
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, ColumnSize), (hd->tracks * hd->hpc * hd->spt) >> 11);
|
||||||
model->setData(model->index(row, ColumnSpeed), QObject::tr(hdd_preset_getname(hd->speed_preset)));
|
auto speedIndex = model->index(row, ColumnSpeed);
|
||||||
model->setData(model->index(row, ColumnSpeed), hd->speed_preset, Qt::UserRole);
|
model->setData(speedIndex, QObject::tr(hdd_preset_getname(hd->speed_preset)));
|
||||||
|
model->setData(speedIndex, hd->speed_preset, Qt::UserRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsHarddisks::SettingsHarddisks(QWidget *parent)
|
SettingsHarddisks::SettingsHarddisks(QWidget *parent)
|
||||||
@@ -108,6 +113,8 @@ SettingsHarddisks::SettingsHarddisks(QWidget *parent)
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
hard_disk_icon = QIcon(":/settings/qt/icons/hard_disk.ico");
|
||||||
|
|
||||||
QAbstractItemModel *model = new QStandardItemModel(0, 7, this);
|
QAbstractItemModel *model = new QStandardItemModel(0, 7, this);
|
||||||
model->setHeaderData(ColumnBus, Qt::Horizontal, tr("Bus"));
|
model->setHeaderData(ColumnBus, Qt::Horizontal, tr("Bus"));
|
||||||
model->setHeaderData(ColumnFilename, Qt::Horizontal, tr("File"));
|
model->setHeaderData(ColumnFilename, Qt::Horizontal, tr("File"));
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ extern "C" {
|
|||||||
#include <86box/rdisk.h>
|
#include <86box/rdisk.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <QStandardItemModel>
|
|
||||||
|
|
||||||
#include "qt_models_common.hpp"
|
#include "qt_models_common.hpp"
|
||||||
#include "qt_harddrive_common.hpp"
|
#include "qt_harddrive_common.hpp"
|
||||||
#include "qt_settings_bus_tracking.hpp"
|
#include "qt_settings_bus_tracking.hpp"
|
||||||
@@ -47,17 +45,17 @@ rdiskDriveTypeName(int i)
|
|||||||
rdisk_drive_types[i].revision);
|
rdisk_drive_types[i].revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
SettingsOtherRemovable::setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
switch (bus) {
|
switch (bus) {
|
||||||
case MO_BUS_DISABLED:
|
case MO_BUS_DISABLED:
|
||||||
icon = QIcon(":/settings/qt/icons/mo_disabled.ico");
|
icon = mo_disabled_icon;
|
||||||
break;
|
break;
|
||||||
case MO_BUS_ATAPI:
|
case MO_BUS_ATAPI:
|
||||||
case MO_BUS_SCSI:
|
case MO_BUS_SCSI:
|
||||||
icon = QIcon(":/settings/qt/icons/mo.ico");
|
icon = mo_icon;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -71,17 +69,17 @@ setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t
|
|||||||
model->setData(i, icon, Qt::DecorationRole);
|
model->setData(i, icon, Qt::DecorationRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
setRDiskBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
SettingsOtherRemovable::setRDiskBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t channel)
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
switch (bus) {
|
switch (bus) {
|
||||||
case RDISK_BUS_DISABLED:
|
case RDISK_BUS_DISABLED:
|
||||||
icon = QIcon(":/settings/qt/icons/rdisk_disabled.ico");
|
icon = rdisk_disabled_icon;
|
||||||
break;
|
break;
|
||||||
case RDISK_BUS_ATAPI:
|
case RDISK_BUS_ATAPI:
|
||||||
case RDISK_BUS_SCSI:
|
case RDISK_BUS_SCSI:
|
||||||
icon = QIcon(":/settings/qt/icons/rdisk.ico");
|
icon = rdisk_icon;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -123,6 +121,9 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
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());
|
Harddrives::populateRemovableBuses(ui->comboBoxMOBus->model());
|
||||||
ui->comboBoxMOBus->model()->removeRows(3, ui->comboBoxMOBus->model()->rowCount() - 3);
|
ui->comboBoxMOBus->model()->removeRows(3, ui->comboBoxMOBus->model()->rowCount() - 3);
|
||||||
auto *model = ui->comboBoxMOType->model();
|
auto *model = ui->comboBoxMOType->model();
|
||||||
@@ -147,6 +148,9 @@ SettingsOtherRemovable::SettingsOtherRemovable(QWidget *parent)
|
|||||||
connect(ui->tableViewMO->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &SettingsOtherRemovable::onMORowChanged);
|
connect(ui->tableViewMO->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &SettingsOtherRemovable::onMORowChanged);
|
||||||
ui->tableViewMO->setCurrentIndex(model->index(0, 0));
|
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());
|
Harddrives::populateRemovableBuses(ui->comboBoxRDiskBus->model());
|
||||||
if ((ui->comboBoxRDiskBus->model()->rowCount() - 3) > 0)
|
if ((ui->comboBoxRDiskBus->model()->rowCount() - 3) > 0)
|
||||||
ui->comboBoxRDiskBus->model()->removeRows(3, ui->comboBoxRDiskBus->model()->rowCount() - 3);
|
ui->comboBoxRDiskBus->model()->removeRows(3, ui->comboBoxRDiskBus->model()->rowCount() - 3);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define QT_SETTINGSOTHERREMOVABLE_HPP
|
#define QT_SETTINGSOTHERREMOVABLE_HPP
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QStandardItemModel>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class SettingsOtherRemovable;
|
class SettingsOtherRemovable;
|
||||||
@@ -37,8 +38,15 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsOtherRemovable *ui;
|
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_MO();
|
||||||
void enableCurrentlySelectedChannel_RDisk();
|
void enableCurrentlySelectedChannel_RDisk();
|
||||||
|
|
||||||
|
QIcon mo_disabled_icon;
|
||||||
|
QIcon mo_icon;
|
||||||
|
QIcon rdisk_disabled_icon;
|
||||||
|
QIcon rdisk_icon;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QT_SETTINGSOTHERREMOVABLE_HPP
|
#endif // QT_SETTINGSOTHERREMOVABLE_HPP
|
||||||
|
|||||||
Reference in New Issue
Block a user