mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 01:25:33 -07:00
Add CD audio play/pause indicators to icons
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
@@ -6,6 +6,10 @@ QIcon
|
||||
getIndicatorIcon(IconIndicator indicator)
|
||||
{
|
||||
switch (indicator) {
|
||||
case Play:
|
||||
return QIcon(":/menuicons/qt/icons/run.ico");
|
||||
case Pause:
|
||||
return QIcon(":/menuicons/qt/icons/pause.ico");
|
||||
case Active:
|
||||
return QIcon(":/settings/qt/icons/active.ico");
|
||||
case WriteActive:
|
||||
@@ -36,13 +40,18 @@ getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode,
|
||||
return iconPixmap;
|
||||
|
||||
auto painter = QPainter(&iconPixmap);
|
||||
auto indicatorPixmap = getIndicatorIcon((indicator == ReadWriteActive || indicator == WriteProtectedActive) ? Active : indicator).pixmap(size);
|
||||
auto indicatorPixmap = getIndicatorIcon((indicator == ReadWriteActive || indicator == WriteProtectedActive
|
||||
|| indicator == PlayActive || indicator == PauseActive)? Active : indicator)
|
||||
.pixmap((indicator == Play || indicator == Pause) ? size / 2. : size);
|
||||
|
||||
if (indicator == WriteProtectedBrowse)
|
||||
indicatorPixmap = getIndicatorIcon(WriteProtected).pixmap(size);
|
||||
|
||||
painter.drawPixmap(0, 0, indicatorPixmap);
|
||||
if ((indicator == ReadWriteActive) || (indicator == WriteProtectedActive)) {
|
||||
painter.drawPixmap(0, (indicator == Play || indicator == Pause) ? (size.height() / 2) : 0, indicatorPixmap);
|
||||
if (indicator == PlayActive || indicator == PauseActive) {
|
||||
auto playPauseIndicatorPixmap = getIndicatorIcon(indicator == PlayActive ? Play : Pause).pixmap(size / 2.);
|
||||
painter.drawPixmap(0, size.height() / 2, playPauseIndicatorPixmap);
|
||||
} else if ((indicator == ReadWriteActive) || (indicator == WriteProtectedActive)) {
|
||||
auto writeIndicatorPixmap = getIndicatorIcon(indicator == WriteProtectedActive ? WriteProtected : WriteActive).pixmap(size);
|
||||
painter.drawPixmap(0, 0, writeIndicatorPixmap);
|
||||
} else if (indicator == WriteProtectedBrowse) {
|
||||
|
||||
@@ -16,7 +16,11 @@ enum IconIndicator {
|
||||
Browse,
|
||||
WriteProtectedBrowse,
|
||||
Export,
|
||||
Eject
|
||||
Eject,
|
||||
Play,
|
||||
Pause,
|
||||
PlayActive,
|
||||
PauseActive
|
||||
};
|
||||
|
||||
QPixmap getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode, IconIndicator indicator);
|
||||
|
||||
@@ -83,6 +83,10 @@ struct PixmapSetEmpty {
|
||||
struct PixmapSetEmptyActive {
|
||||
QPixmap normal;
|
||||
QPixmap active;
|
||||
QPixmap play;
|
||||
QPixmap pause;
|
||||
QPixmap play_active;
|
||||
QPixmap pause_active;
|
||||
QPixmap empty;
|
||||
QPixmap empty_active;
|
||||
QPixmap write_active;
|
||||
@@ -169,6 +173,26 @@ struct StateEmptyActive {
|
||||
bool active = false;
|
||||
bool write_active = false;
|
||||
bool wp = false;
|
||||
bool play = false;
|
||||
bool pause = false;
|
||||
|
||||
void setPlay(bool b)
|
||||
{
|
||||
if (!label || b == play)
|
||||
return;
|
||||
|
||||
play = b;
|
||||
refresh();
|
||||
}
|
||||
|
||||
void setPause(bool b)
|
||||
{
|
||||
if (!label || b == pause)
|
||||
return;
|
||||
|
||||
pause = b;
|
||||
refresh();
|
||||
}
|
||||
|
||||
void setActive(bool b)
|
||||
{
|
||||
@@ -212,10 +236,12 @@ struct StateEmptyActive {
|
||||
else
|
||||
label->setPixmap(write_active ? pixmaps->empty_write_active : (active ? pixmaps->empty_active : pixmaps->empty));
|
||||
} else {
|
||||
if (wp)
|
||||
if (wp && !(play || pause))
|
||||
label->setPixmap(active ? pixmaps->wp_active : pixmaps->wp);
|
||||
else if (active && write_active)
|
||||
else if (active && write_active && !wp)
|
||||
label->setPixmap(pixmaps->read_write_active);
|
||||
else if ((play || pause) && !write_active)
|
||||
label->setPixmap(play ? (active ? pixmaps->play_active : pixmaps->play) : (active ? pixmaps->pause_active : pixmaps->pause));
|
||||
else
|
||||
label->setPixmap(write_active ? pixmaps->write_active : (active ? pixmaps->active : pixmaps->normal));
|
||||
}
|
||||
@@ -252,6 +278,10 @@ void
|
||||
PixmapSetEmptyActive::load(const QIcon &icon)
|
||||
{
|
||||
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||
play = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Play);
|
||||
pause = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Pause);
|
||||
play_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, PlayActive);
|
||||
pause_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, PauseActive);
|
||||
wp = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, WriteProtected);
|
||||
wp_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, WriteProtectedActive);
|
||||
active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active);
|
||||
@@ -504,8 +534,11 @@ MachineStatus::refreshIcons()
|
||||
d->fdd[i].setWriteActive(machine_status.fdd[i].write_active);
|
||||
}
|
||||
for (size_t i = 0; i < CDROM_NUM; ++i) {
|
||||
auto status = cdrom_get_current_status(&cdrom[i]);
|
||||
d->cdrom[i].setActive(machine_status.cdrom[i].active);
|
||||
d->cdrom[i].setWriteActive(machine_status.cdrom[i].write_active);
|
||||
d->cdrom[i].setPlay(status == 0x11);
|
||||
d->cdrom[i].setPause((!cdrom[i].is_chinon) ? (status == 0x12) : (status == 0x15));
|
||||
if (machine_status.cdrom[i].active) {
|
||||
ui_sb_update_icon(SB_CDROM | i, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user