Status bar: update the empty/full icon states even when status bar icons updating is disabled.
This commit is contained in:
@@ -61,6 +61,8 @@ extern uint64_t tsc;
|
|||||||
|
|
||||||
extern MainWindow *main_window;
|
extern MainWindow *main_window;
|
||||||
|
|
||||||
|
static bool sbar_initialized = false;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct PixmapSetActive {
|
struct PixmapSetActive {
|
||||||
QPixmap normal;
|
QPixmap normal;
|
||||||
@@ -380,6 +382,31 @@ hdd_count(int bus)
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MachineStatus::refreshEmptyIcons()
|
||||||
|
{
|
||||||
|
/* Check if icons are initialized. */
|
||||||
|
if (!sbar_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < FDD_NUM; ++i)
|
||||||
|
d->fdd[i].setEmpty(machine_status.fdd[i].empty);
|
||||||
|
for (size_t i = 0; i < CDROM_NUM; ++i)
|
||||||
|
d->cdrom[i].setEmpty(machine_status.cdrom[i].empty);
|
||||||
|
for (size_t i = 0; i < ZIP_NUM; i++)
|
||||||
|
d->zip[i].setEmpty(machine_status.zip[i].empty);
|
||||||
|
for (size_t i = 0; i < MO_NUM; i++)
|
||||||
|
d->mo[i].setEmpty(machine_status.mo[i].empty);
|
||||||
|
|
||||||
|
d->cassette.setEmpty(machine_status.cassette.empty);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < NET_CARD_MAX; i++)
|
||||||
|
d->net[i].setEmpty(machine_status.net[i].empty);
|
||||||
|
|
||||||
|
for (int i = 0; i < 2; ++i)
|
||||||
|
d->cartridge[i].setEmpty(machine_status.cartridge[i].empty);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MachineStatus::refreshIcons()
|
MachineStatus::refreshIcons()
|
||||||
{
|
{
|
||||||
@@ -387,48 +414,32 @@ MachineStatus::refreshIcons()
|
|||||||
if (!update_icons)
|
if (!update_icons)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (size_t i = 0; i < FDD_NUM; ++i) {
|
for (size_t i = 0; i < FDD_NUM; ++i)
|
||||||
d->fdd[i].setActive(machine_status.fdd[i].active);
|
d->fdd[i].setActive(machine_status.fdd[i].active);
|
||||||
d->fdd[i].setEmpty(machine_status.fdd[i].empty);
|
|
||||||
}
|
|
||||||
for (size_t i = 0; i < CDROM_NUM; ++i) {
|
for (size_t i = 0; i < CDROM_NUM; ++i) {
|
||||||
d->cdrom[i].setActive(machine_status.cdrom[i].active);
|
d->cdrom[i].setActive(machine_status.cdrom[i].active);
|
||||||
if (machine_status.cdrom[i].active)
|
if (machine_status.cdrom[i].active)
|
||||||
ui_sb_update_icon(SB_CDROM | i, 0);
|
ui_sb_update_icon(SB_CDROM | i, 0);
|
||||||
|
|
||||||
d->cdrom[i].setEmpty(machine_status.cdrom[i].empty);
|
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < ZIP_NUM; i++) {
|
for (size_t i = 0; i < ZIP_NUM; i++) {
|
||||||
d->zip[i].setActive(machine_status.zip[i].active);
|
d->zip[i].setActive(machine_status.zip[i].active);
|
||||||
if (machine_status.zip[i].active)
|
if (machine_status.zip[i].active)
|
||||||
ui_sb_update_icon(SB_ZIP | i, 0);
|
ui_sb_update_icon(SB_ZIP | i, 0);
|
||||||
|
|
||||||
d->zip[i].setEmpty(machine_status.zip[i].empty);
|
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < MO_NUM; i++) {
|
for (size_t i = 0; i < MO_NUM; i++) {
|
||||||
d->mo[i].setActive(machine_status.mo[i].active);
|
d->mo[i].setActive(machine_status.mo[i].active);
|
||||||
if (machine_status.mo[i].active)
|
if (machine_status.mo[i].active)
|
||||||
ui_sb_update_icon(SB_MO | i, 0);
|
ui_sb_update_icon(SB_MO | i, 0);
|
||||||
|
|
||||||
d->mo[i].setEmpty(machine_status.mo[i].empty);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d->cassette.setEmpty(machine_status.cassette.empty);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < HDD_BUS_USB; i++) {
|
for (size_t i = 0; i < HDD_BUS_USB; i++) {
|
||||||
d->hdds[i].setActive(machine_status.hdd[i].active);
|
d->hdds[i].setActive(machine_status.hdd[i].active);
|
||||||
if (machine_status.hdd[i].active)
|
if (machine_status.hdd[i].active)
|
||||||
ui_sb_update_icon(SB_HDD | i, 0);
|
ui_sb_update_icon(SB_HDD | i, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < NET_CARD_MAX; i++) {
|
for (size_t i = 0; i < NET_CARD_MAX; i++)
|
||||||
d->net[i].setActive(machine_status.net[i].active);
|
d->net[i].setActive(machine_status.net[i].active);
|
||||||
d->net[i].setEmpty(machine_status.net[i].empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i) {
|
|
||||||
d->cartridge[i].setEmpty(machine_status.cartridge[i].empty);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -664,6 +675,10 @@ MachineStatus::refresh(QStatusBar *sbar)
|
|||||||
sbar->addWidget(d->sound.get());
|
sbar->addWidget(d->sound.get());
|
||||||
d->text = std::make_unique<QLabel>();
|
d->text = std::make_unique<QLabel>();
|
||||||
sbar->addWidget(d->text.get());
|
sbar->addWidget(d->text.get());
|
||||||
|
|
||||||
|
sbar_initialized = true;
|
||||||
|
|
||||||
|
refreshEmptyIcons();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -719,4 +734,6 @@ MachineStatus::updateTip(int tag)
|
|||||||
case SB_TEXT:
|
case SB_TEXT:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshEmptyIcons();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ public slots:
|
|||||||
void refresh(QStatusBar *sbar);
|
void refresh(QStatusBar *sbar);
|
||||||
void message(const QString &msg);
|
void message(const QString &msg);
|
||||||
void updateTip(int tag);
|
void updateTip(int tag);
|
||||||
|
void refreshEmptyIcons();
|
||||||
void refreshIcons();
|
void refreshIcons();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1904,6 +1904,13 @@ MainWindow::updateUiPauseState()
|
|||||||
ui->actionPause->setToolTip(tooltip_text);
|
ui->actionPause->setToolTip(tooltip_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::updateStatusEmptyIcons()
|
||||||
|
{
|
||||||
|
if (status != nullptr)
|
||||||
|
status->refreshEmptyIcons();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MainWindow::on_actionPreferences_triggered()
|
MainWindow::on_actionPreferences_triggered()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ public slots:
|
|||||||
void togglePause();
|
void togglePause();
|
||||||
void initRendererMonitorSlot(int monitor_index);
|
void initRendererMonitorSlot(int monitor_index);
|
||||||
void destroyRendererMonitorSlot(int monitor_index);
|
void destroyRendererMonitorSlot(int monitor_index);
|
||||||
|
void updateStatusEmptyIcons();
|
||||||
void updateUiPauseState();
|
void updateUiPauseState();
|
||||||
private slots:
|
private slots:
|
||||||
void on_actionFullscreen_triggered();
|
void on_actionFullscreen_triggered();
|
||||||
|
|||||||
@@ -256,6 +256,9 @@ ui_sb_update_icon_state(int tag, int state)
|
|||||||
case SB_TEXT:
|
case SB_TEXT:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (main_window != nullptr)
|
||||||
|
main_window->updateStatusEmptyIcons();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user