Use indicator overlays for status bar icons
@@ -194,6 +194,9 @@ add_library(ui STATIC
|
|||||||
qt_openglshaderconfig.hpp
|
qt_openglshaderconfig.hpp
|
||||||
qt_openglshaderconfig.cpp
|
qt_openglshaderconfig.cpp
|
||||||
qt_openglshaderconfig.ui
|
qt_openglshaderconfig.ui
|
||||||
|
|
||||||
|
qt_iconindicators.hpp
|
||||||
|
qt_iconindicators.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(RTMIDI)
|
if(RTMIDI)
|
||||||
|
|||||||
BIN
src/qt/icons/active.ico
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
BIN
src/qt/icons/disabled.ico
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
33
src/qt/qt_iconindicators.cpp
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#include <QSize>
|
||||||
|
#include <QPainter>
|
||||||
|
#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;
|
||||||
|
}
|
||||||
15
src/qt/qt_iconindicators.hpp
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef QT_ICONINDICATORS_HPP
|
||||||
|
# define QT_INDICATORS_HPP
|
||||||
|
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QIcon>
|
||||||
|
|
||||||
|
enum IconIndicator {
|
||||||
|
None,
|
||||||
|
Active,
|
||||||
|
Disabled,
|
||||||
|
};
|
||||||
|
|
||||||
|
QPixmap getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode, IconIndicator indicator);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -54,6 +54,7 @@ extern "C" {
|
|||||||
#include "qt_mainwindow.hpp"
|
#include "qt_mainwindow.hpp"
|
||||||
#include "qt_soundgain.hpp"
|
#include "qt_soundgain.hpp"
|
||||||
#include "qt_progsettings.hpp"
|
#include "qt_progsettings.hpp"
|
||||||
|
#include "qt_iconindicators.hpp"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
@@ -65,19 +66,24 @@ namespace {
|
|||||||
struct PixmapSetActive {
|
struct PixmapSetActive {
|
||||||
QPixmap normal;
|
QPixmap normal;
|
||||||
QPixmap active;
|
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 {
|
struct PixmapSetEmpty {
|
||||||
QPixmap normal;
|
QPixmap normal;
|
||||||
QPixmap empty;
|
QPixmap empty;
|
||||||
void load(const QString &basePath);
|
void load(const QIcon &icon);
|
||||||
};
|
};
|
||||||
struct PixmapSetEmptyActive {
|
struct PixmapSetEmptyActive {
|
||||||
QPixmap normal;
|
QPixmap normal;
|
||||||
QPixmap active;
|
QPixmap active;
|
||||||
QPixmap empty;
|
QPixmap empty;
|
||||||
QPixmap empty_active;
|
QPixmap empty_active;
|
||||||
void load(QString basePath);
|
void load(const QIcon &icon);
|
||||||
};
|
};
|
||||||
struct Pixmaps {
|
struct Pixmaps {
|
||||||
PixmapSetEmpty cartridge;
|
PixmapSetEmpty cartridge;
|
||||||
@@ -90,7 +96,7 @@ struct Pixmaps {
|
|||||||
PixmapSetEmptyActive mo;
|
PixmapSetEmptyActive mo;
|
||||||
PixmapSetActive hd;
|
PixmapSetActive hd;
|
||||||
PixmapSetEmptyActive net;
|
PixmapSetEmptyActive net;
|
||||||
QPixmap sound, soundMuted;
|
PixmapSetDisabled sound;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StateActive {
|
struct StateActive {
|
||||||
@@ -170,30 +176,35 @@ struct StateEmptyActive {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static QSize pixmap_size(16, 16);
|
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
|
void
|
||||||
PixmapSetEmpty::load(const QString &basePath)
|
PixmapSetEmpty::load(const QIcon &icon)
|
||||||
{
|
{
|
||||||
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
|
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||||
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
|
empty = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, None);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PixmapSetActive::load(const QString &basePath)
|
PixmapSetActive::load(const QIcon &icon)
|
||||||
{
|
{
|
||||||
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
|
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||||
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
|
active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PixmapSetEmptyActive::load(QString basePath)
|
PixmapSetDisabled::load(const QIcon &icon)
|
||||||
{
|
{
|
||||||
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
|
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||||
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
|
disabled = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, Disabled);
|
||||||
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
|
}
|
||||||
empty_active = QIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size);
|
|
||||||
|
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)
|
States(QObject *parent)
|
||||||
{
|
{
|
||||||
pixmaps.cartridge.load(":/settings/qt/icons/cartridge%1.ico");
|
pixmaps.cartridge.load(QIcon(":/settings/qt/icons/cartridge.ico"));
|
||||||
pixmaps.cassette.load(":/settings/qt/icons/cassette%1.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.normal = QIcon(":/settings/qt/icons/floppy_disabled.ico").pixmap(pixmap_size);
|
||||||
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
|
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
|
||||||
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
|
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
|
||||||
pixmaps.floppy_disabled.empty_active = 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_525.load(QIcon(":/settings/qt/icons/floppy_525.ico"));
|
||||||
pixmaps.floppy_35.load(":/settings/qt/icons/floppy_35%1.ico");
|
pixmaps.floppy_35.load(QIcon(":/settings/qt/icons/floppy_35.ico"));
|
||||||
pixmaps.cdrom.load(":/settings/qt/icons/cdrom%1.ico");
|
pixmaps.cdrom.load(QIcon(":/settings/qt/icons/cdrom.ico"));
|
||||||
pixmaps.zip.load(":/settings/qt/icons/zip%1.ico");
|
pixmaps.zip.load(QIcon(":/settings/qt/icons/zip.ico"));
|
||||||
pixmaps.mo.load(":/settings/qt/icons/mo%1.ico");
|
pixmaps.mo.load(QIcon(":/settings/qt/icons/mo.ico"));
|
||||||
pixmaps.hd.load(":/settings/qt/icons/hard_disk%1.ico");
|
pixmaps.hd.load(QIcon(":/settings/qt/icons/hard_disk.ico"));
|
||||||
pixmaps.net.load(":/settings/qt/icons/network%1.ico");
|
pixmaps.net.load(QIcon(":/settings/qt/icons/network.ico"));
|
||||||
pixmaps.sound = QIcon(":/settings/qt/icons/sound.ico").pixmap(pixmap_size);
|
pixmaps.sound.load(QIcon(":/settings/qt/icons/sound.ico"));
|
||||||
pixmaps.soundMuted = QIcon(":/settings/qt/icons/sound_mute.ico").pixmap(pixmap_size);
|
|
||||||
|
|
||||||
cartridge[0].pixmaps = &pixmaps.cartridge;
|
cartridge[0].pixmaps = &pixmaps.cartridge;
|
||||||
cartridge[1].pixmaps = &pixmaps.cartridge;
|
cartridge[1].pixmaps = &pixmaps.cartridge;
|
||||||
@@ -510,7 +520,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
|||||||
sound_muted ^= 1;
|
sound_muted ^= 1;
|
||||||
config_save();
|
config_save();
|
||||||
if (d->sound)
|
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"));
|
muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute"));
|
||||||
});
|
});
|
||||||
@@ -694,7 +704,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
|||||||
}
|
}
|
||||||
|
|
||||||
d->sound = std::make_unique<ClickableLabel>();
|
d->sound = std::make_unique<ClickableLabel>();
|
||||||
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)
|
if (muteUnmuteAction)
|
||||||
muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute"));
|
muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute"));
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,9 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/settings">
|
<qresource prefix="/settings">
|
||||||
<file>qt/icons/cartridge.ico</file>
|
<file>qt/icons/cartridge.ico</file>
|
||||||
<file>qt/icons/cartridge_empty.ico</file>
|
|
||||||
<file>qt/icons/cassette.ico</file>
|
<file>qt/icons/cassette.ico</file>
|
||||||
<file>qt/icons/cassette_active.ico</file>
|
|
||||||
<file>qt/icons/cassette_empty.ico</file>
|
|
||||||
<file>qt/icons/cassette_empty_active.ico</file>
|
|
||||||
<file>qt/icons/cdrom.ico</file>
|
<file>qt/icons/cdrom.ico</file>
|
||||||
<file>qt/icons/cdrom_active.ico</file>
|
|
||||||
<file>qt/icons/cdrom_disabled.ico</file>
|
<file>qt/icons/cdrom_disabled.ico</file>
|
||||||
<file>qt/icons/cdrom_empty.ico</file>
|
|
||||||
<file>qt/icons/cdrom_empty_active.ico</file>
|
|
||||||
<file>qt/icons/cdrom_mute.ico</file>
|
<file>qt/icons/cdrom_mute.ico</file>
|
||||||
<file>qt/icons/cdrom_unmute.ico</file>
|
<file>qt/icons/cdrom_unmute.ico</file>
|
||||||
<file>qt/icons/cdrom_image.ico</file>
|
<file>qt/icons/cdrom_image.ico</file>
|
||||||
@@ -18,38 +11,24 @@
|
|||||||
<file>qt/icons/cdrom_host.ico</file>
|
<file>qt/icons/cdrom_host.ico</file>
|
||||||
<file>qt/icons/display.ico</file>
|
<file>qt/icons/display.ico</file>
|
||||||
<file>qt/icons/floppy_35.ico</file>
|
<file>qt/icons/floppy_35.ico</file>
|
||||||
<file>qt/icons/floppy_35_active.ico</file>
|
|
||||||
<file>qt/icons/floppy_35_empty.ico</file>
|
|
||||||
<file>qt/icons/floppy_35_empty_active.ico</file>
|
|
||||||
<file>qt/icons/floppy_525.ico</file>
|
<file>qt/icons/floppy_525.ico</file>
|
||||||
<file>qt/icons/floppy_525_active.ico</file>
|
|
||||||
<file>qt/icons/floppy_525_empty.ico</file>
|
|
||||||
<file>qt/icons/floppy_525_empty_active.ico</file>
|
|
||||||
<file>qt/icons/floppy_and_cdrom_drives.ico</file>
|
<file>qt/icons/floppy_and_cdrom_drives.ico</file>
|
||||||
<file>qt/icons/floppy_disabled.ico</file>
|
<file>qt/icons/floppy_disabled.ico</file>
|
||||||
<file>qt/icons/hard_disk.ico</file>
|
<file>qt/icons/hard_disk.ico</file>
|
||||||
<file>qt/icons/hard_disk_active.ico</file>
|
|
||||||
<file>qt/icons/input_devices.ico</file>
|
<file>qt/icons/input_devices.ico</file>
|
||||||
<file>qt/icons/machine.ico</file>
|
<file>qt/icons/machine.ico</file>
|
||||||
<file>qt/icons/mo.ico</file>
|
<file>qt/icons/mo.ico</file>
|
||||||
<file>qt/icons/mo_active.ico</file>
|
|
||||||
<file>qt/icons/mo_disabled.ico</file>
|
<file>qt/icons/mo_disabled.ico</file>
|
||||||
<file>qt/icons/mo_empty.ico</file>
|
|
||||||
<file>qt/icons/mo_empty_active.ico</file>
|
|
||||||
<file>qt/icons/network.ico</file>
|
<file>qt/icons/network.ico</file>
|
||||||
<file>qt/icons/network_active.ico</file>
|
|
||||||
<file>qt/icons/network_empty.ico</file>
|
|
||||||
<file>qt/icons/other_peripherals.ico</file>
|
<file>qt/icons/other_peripherals.ico</file>
|
||||||
<file>qt/icons/other_removable_devices.ico</file>
|
<file>qt/icons/other_removable_devices.ico</file>
|
||||||
<file>qt/icons/ports.ico</file>
|
<file>qt/icons/ports.ico</file>
|
||||||
<file>qt/icons/sound.ico</file>
|
<file>qt/icons/sound.ico</file>
|
||||||
<file>qt/icons/sound_mute.ico</file>
|
|
||||||
<file>qt/icons/storage_controllers.ico</file>
|
<file>qt/icons/storage_controllers.ico</file>
|
||||||
<file>qt/icons/zip.ico</file>
|
<file>qt/icons/zip.ico</file>
|
||||||
<file>qt/icons/zip_active.ico</file>
|
|
||||||
<file>qt/icons/zip_disabled.ico</file>
|
<file>qt/icons/zip_disabled.ico</file>
|
||||||
<file>qt/icons/zip_empty.ico</file>
|
<file>qt/icons/active.ico</file>
|
||||||
<file>qt/icons/zip_empty_active.ico</file>
|
<file>qt/icons/disabled.ico</file>
|
||||||
<file>qt/icons/86Box-gray.ico</file>
|
<file>qt/icons/86Box-gray.ico</file>
|
||||||
<file>qt/icons/86Box-green.ico</file>
|
<file>qt/icons/86Box-green.ico</file>
|
||||||
<file>qt/icons/86Box-red.ico</file>
|
<file>qt/icons/86Box-red.ico</file>
|
||||||
|
|||||||