17#include "buttonappearancewatcher.h"
19#include <QAbstractButton>
22#include "platformhandler.h"
24ButtonAppearanceWatcher::ButtonAppearanceWatcher(
IconResource normalIconResource,
28 mNormalIconResource(normalIconResource),
29 mHoverIconResource(hoverIconResource)
32bool ButtonAppearanceWatcher::eventFilter(
QObject* watched,
QEvent* event)
40 AppearanceEventType apType = determineAppearanceEvent(
event);
42 if (shouldUpdateResource(
event, apType)) {
44 res = mNormalIconResource;
47 res = mHoverIconResource;
50 res = mNormalIconResource;
52 mOldAppearanceType = apType;
54 bool isDarkmode = PlatformHandler::isDarkMode();
55 button->
setIcon(res.iconForMode(isDarkmode));
62AppearanceEventType ButtonAppearanceWatcher::determineAppearanceEvent(
QEvent *event)
const
65 bool isDarkmode = PlatformHandler::isDarkMode();
67 return AppearanceEventType::DARK_APPEARANCE;
69 return AppearanceEventType::LIGHT_APPEARANCE;
72 return AppearanceEventType::ICON_ACTIVE;
74 return AppearanceEventType::ICON_NORMAL;
77 return AppearanceEventType::NONE;
80bool ButtonAppearanceWatcher::shouldUpdateResource(
QEvent* event, AppearanceEventType appearanceType)
const
82 if (appearanceType == mOldAppearanceType) {
return false; }
84 return determineAppearanceEvent(
event) != AppearanceEventType::NONE;
virtual bool event(QEvent *e)