15 , m_deactivateAction(std::make_unique<QAction>())
16 , m_activateAction(std::make_unique<QAction>())
17 , m_toggleAction(std::make_unique<QAction>())
19 connect(m_activateAction.get(), &QAction::triggered,
this, [
this]() {
20 if (m_status == Status::Activating) {
21 if (m_partialActivationFactor > 0.5) {
30 connect(m_deactivateAction.get(), &QAction::triggered,
this, [
this]() {
31 if (m_status == Status::Deactivating) {
32 if (m_partialActivationFactor < 0.5) {
41 connect(m_toggleAction.get(), &QAction::triggered,
this, &EffectTogglableState::toggle);
44void EffectTogglableState::activate()
47 setPartialActivationFactor(1.0);
48 setStatus(Status::Active);
51void EffectTogglableState::setPartialActivationFactor(qreal factor)
53 if (m_partialActivationFactor != factor) {
54 m_partialActivationFactor = factor;
55 Q_EMIT partialActivationFactorChanged();
59void EffectTogglableState::deactivate()
62 setPartialActivationFactor(0.0);
63 setStatus(Status::Inactive);
66void EffectTogglableState::stop()
69 setPartialActivationFactor(0.0);
70 setStatus(Status::Stopped);
73bool EffectTogglableState::inProgress()
const
78void EffectTogglableState::setInProgress(
bool gesture)
80 if (m_inProgress != gesture) {
81 m_inProgress = gesture;
82 Q_EMIT inProgressChanged();
86void EffectTogglableState::setStatus(
Status status)
88 if (m_status != status) {
90 Q_EMIT statusChanged(status);
94void EffectTogglableState::partialActivate(qreal factor)
100 setStatus(Status::Activating);
102 setPartialActivationFactor(factor);
105void EffectTogglableState::partialDeactivate(qreal factor)
107 setStatus(Status::Deactivating);
109 setPartialActivationFactor(1.0 - factor);
112void EffectTogglableState::toggle()
114 if (m_status != Status::Active) {
119 Q_EMIT deactivated();
123void EffectTogglableState::setProgress(qreal progress)
125 if (m_status == Status::Stopped) {
130 case Status::Inactive:
131 case Status::Activating:
132 partialActivate(progress);
140void EffectTogglableState::setRegress(qreal regress)
142 if (m_status == Status::Stopped) {
148 case Status::Deactivating:
149 partialDeactivate(regress);
193 return [
this](qreal progress) {
200 return [
this](qreal progress) {
231 for (
const ElectricBorder &border : std::as_const(m_touchBorderActivate)) {
238 for (
const ElectricBorder &border : std::as_const(m_touchBorderActivate)) {
241 m_touchBorderActivate.clear();
243 for (
const int &border : touchActivateBorders) {
249 const int maxDelta = 500;
252 progress = std::min(1.0, std::abs(deltaProgress.y()) / maxDelta);
254 progress = std::min(1.0, std::abs(deltaProgress.x()) / maxDelta);
263#include "moc_effecttogglablestate.cpp"
Base class for all KWin effects.
void addTouchpadSwipeGesture(SwipeDirection dir, uint fingerCount)
void addTouchpadPinchGesture(PinchDirection dir, uint fingerCount)
void addTouchscreenSwipeGesture(SwipeDirection direction, uint fingerCount)
QAction * deactivateAction() const
void setRegress(qreal regress)
regress being the progress when on an active state
std::function< void(qreal progress)> regressCallback()
std::function< void(qreal progress)> progressCallback()
EffectTogglableState(Effect *parent)
QAction * activateAction() const
void setProgress(qreal progress)
~EffectTogglableTouchBorder()
void setBorders(const QList< int > &borders)
EffectTogglableTouchBorder(EffectTogglableState *state)
bool hasActiveFullScreenEffect
void unregisterTouchBorder(ElectricBorder border, QAction *action)
bool isScreenLocked() const
void registerTouchpadPinchShortcut(PinchDirection dir, uint fingerCount, QAction *onUp, std::function< void(qreal)> progressCallback={})
void registerTouchpadSwipeShortcut(SwipeDirection dir, uint fingerCount, QAction *onUp, std::function< void(qreal)> progressCallback={})
Registers a global touchpad swipe gesture shortcut with the provided action.
void registerTouchscreenSwipeShortcut(SwipeDirection direction, uint fingerCount, QAction *action, std::function< void(qreal)> progressCallback)
Registers a global touchscreen swipe gesture shortcut with the provided action.
void registerRealtimeTouchBorder(ElectricBorder border, QAction *action, TouchBorderCallback progressCallback)
Effect * activeFullScreenEffect() const
SwipeDirection
Directions for swipe gestures.