refactor: InputFilter::EFilterStatus => InputFilter::FilterStatus enum class

This commit is contained in:
sithlord48 2025-07-08 14:25:41 -04:00 committed by Chris Rizzitello
parent e37cea2d6b
commit 7fd9070a80
3 changed files with 31 additions and 27 deletions

View file

@ -66,22 +66,23 @@ std::string InputFilter::KeystrokeCondition::format() const
return deskflow::string::sprintf("keystroke(%s)", deskflow::KeyMap::formatKey(m_key, m_mask).c_str()); return deskflow::string::sprintf("keystroke(%s)", deskflow::KeyMap::formatKey(m_key, m_mask).c_str());
} }
InputFilter::EFilterStatus InputFilter::KeystrokeCondition::match(const Event &event) InputFilter::FilterStatus InputFilter::KeystrokeCondition::match(const Event &event)
{ {
EFilterStatus status; using enum FilterStatus;
FilterStatus status;
// check for hotkey events // check for hotkey events
if (EventTypes type = event.getType(); type == EventTypes::PrimaryScreenHotkeyDown) { if (EventTypes type = event.getType(); type == EventTypes::PrimaryScreenHotkeyDown) {
status = kActivate; status = Activate;
} else if (type == EventTypes::PrimaryScreenHotkeyUp) { } else if (type == EventTypes::PrimaryScreenHotkeyUp) {
status = kDeactivate; status = Deactivate;
} else { } else {
return kNoMatch; return NoMatch;
} }
// check if it's our hotkey // check if it's our hotkey
if (const auto *kinfo = static_cast<IPlatformScreen::HotKeyInfo *>(event.getData()); kinfo->m_id != m_id) { if (const auto *kinfo = static_cast<IPlatformScreen::HotKeyInfo *>(event.getData()); kinfo->m_id != m_id) {
return kNoMatch; return NoMatch;
} }
return status; return status;
@ -138,27 +139,28 @@ std::string InputFilter::MouseButtonCondition::format() const
return deskflow::string::sprintf("mousebutton(%s%d)", key.c_str(), m_button); return deskflow::string::sprintf("mousebutton(%s%d)", key.c_str(), m_button);
} }
InputFilter::EFilterStatus InputFilter::MouseButtonCondition::match(const Event &event) InputFilter::FilterStatus InputFilter::MouseButtonCondition::match(const Event &event)
{ {
static const KeyModifierMask s_ignoreMask = static const KeyModifierMask s_ignoreMask =
KeyModifierAltGr | KeyModifierCapsLock | KeyModifierNumLock | KeyModifierScrollLock; KeyModifierAltGr | KeyModifierCapsLock | KeyModifierNumLock | KeyModifierScrollLock;
EFilterStatus status; FilterStatus status;
using enum FilterStatus;
// check for hotkey events // check for hotkey events
if (EventTypes type = event.getType(); type == EventTypes::PrimaryScreenButtonDown) { if (EventTypes type = event.getType(); type == EventTypes::PrimaryScreenButtonDown) {
status = kActivate; status = Activate;
} else if (type == EventTypes::PrimaryScreenButtonUp) { } else if (type == EventTypes::PrimaryScreenButtonUp) {
status = kDeactivate; status = Deactivate;
} else { } else {
return kNoMatch; return NoMatch;
} }
// check if it's the right button and modifiers. ignore modifiers // check if it's the right button and modifiers. ignore modifiers
// that cannot be combined with a mouse button. // that cannot be combined with a mouse button.
if (const auto *minfo = static_cast<IPlatformScreen::ButtonInfo *>(event.getData()); if (const auto *minfo = static_cast<IPlatformScreen::ButtonInfo *>(event.getData());
minfo->m_button != m_button || (minfo->m_mask & ~s_ignoreMask) != m_mask) { minfo->m_button != m_button || (minfo->m_mask & ~s_ignoreMask) != m_mask) {
return kNoMatch; return NoMatch;
} }
return status; return status;
@ -181,16 +183,16 @@ std::string InputFilter::ScreenConnectedCondition::format() const
return deskflow::string::sprintf("connect(%s)", m_screen.c_str()); return deskflow::string::sprintf("connect(%s)", m_screen.c_str());
} }
InputFilter::EFilterStatus InputFilter::ScreenConnectedCondition::match(const Event &event) InputFilter::FilterStatus InputFilter::ScreenConnectedCondition::match(const Event &event)
{ {
if (event.getType() == EventTypes::ServerConnected) { if (event.getType() == EventTypes::ServerConnected) {
const auto *info = static_cast<Server::ScreenConnectedInfo *>(event.getData()); const auto *info = static_cast<Server::ScreenConnectedInfo *>(event.getData());
if (m_screen == info->m_screen || m_screen.empty()) { if (m_screen == info->m_screen || m_screen.empty()) {
return kActivate; return FilterStatus::Activate;
} }
} }
return kNoMatch; return FilterStatus::NoMatch;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
@ -649,16 +651,17 @@ bool InputFilter::Rule::handleEvent(const Event &event)
// match // match
const ActionList *actions; const ActionList *actions;
switch (m_condition->match(event)) { switch (m_condition->match(event)) {
using enum FilterStatus;
default: default:
// not handled // not handled
return false; return false;
case kActivate: case Activate:
actions = &m_activateActions; actions = &m_activateActions;
LOG((CLOG_DEBUG1 "activate actions")); LOG((CLOG_DEBUG1 "activate actions"));
break; break;
case kDeactivate: case Deactivate:
actions = &m_deactivateActions; actions = &m_deactivateActions;
LOG((CLOG_DEBUG1 "deactivate actions")); LOG((CLOG_DEBUG1 "deactivate actions"));
break; break;

View file

@ -26,11 +26,11 @@ public:
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Input Filter Condition Classes // Input Filter Condition Classes
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
enum EFilterStatus enum class FilterStatus
{ {
kNoMatch, NoMatch,
kActivate, Activate,
kDeactivate Deactivate
}; };
class Condition class Condition
@ -42,7 +42,7 @@ public:
virtual Condition *clone() const = 0; virtual Condition *clone() const = 0;
virtual std::string format() const = 0; virtual std::string format() const = 0;
virtual EFilterStatus match(const Event &) = 0; virtual FilterStatus match(const Event &) = 0;
virtual void enablePrimary(PrimaryClient *); virtual void enablePrimary(PrimaryClient *);
virtual void disablePrimary(PrimaryClient *); virtual void disablePrimary(PrimaryClient *);
@ -62,7 +62,7 @@ public:
// Condition overrides // Condition overrides
Condition *clone() const override; Condition *clone() const override;
std::string format() const override; std::string format() const override;
EFilterStatus match(const Event &) override; FilterStatus match(const Event &) override;
void enablePrimary(PrimaryClient *) override; void enablePrimary(PrimaryClient *) override;
void disablePrimary(PrimaryClient *) override; void disablePrimary(PrimaryClient *) override;
@ -87,7 +87,7 @@ public:
// Condition overrides // Condition overrides
Condition *clone() const override; Condition *clone() const override;
std::string format() const override; std::string format() const override;
EFilterStatus match(const Event &) override; FilterStatus match(const Event &) override;
private: private:
ButtonID m_button; ButtonID m_button;
@ -105,7 +105,7 @@ public:
// Condition overrides // Condition overrides
Condition *clone() const override; Condition *clone() const override;
std::string format() const override; std::string format() const override;
EFilterStatus match(const Event &) override; FilterStatus match(const Event &) override;
private: private:
std::string m_screen; std::string m_screen;

View file

@ -21,9 +21,10 @@ public:
return ""; return "";
} }
InputFilter::EFilterStatus match(const Event &ev) override InputFilter::FilterStatus match(const Event &ev) override
{ {
return ev.getType() == EventTypes::System ? InputFilter::kActivate : InputFilter::kNoMatch; return ev.getType() == EventTypes::System ? InputFilter::FilterStatus::Activate
: InputFilter::FilterStatus::NoMatch;
} }
}; };