File indexing completed on 2024-04-28 05:36:15
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Dario Freddi <drf@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "powerdevilaction.h" 0008 0009 #include "powerdevil_debug.h" 0010 #include "powerdevilcore.h" 0011 0012 #include <QDebug> 0013 0014 namespace PowerDevil 0015 { 0016 0017 Action::Action(QObject *parent) 0018 : QObject(parent) 0019 { 0020 m_core = qobject_cast<PowerDevil::Core *>(parent); 0021 } 0022 0023 Action::~Action() 0024 { 0025 } 0026 0027 void Action::registerIdleTimeout(std::chrono::milliseconds timeout) 0028 { 0029 m_registeredIdleTimeouts.append(timeout); 0030 m_core->registerActionTimeout(this, timeout); 0031 } 0032 0033 void Action::unregisterIdleTimeouts() 0034 { 0035 // Remove all registered idle timeouts, if any 0036 m_core->unregisterActionTimeouts(this); 0037 m_registeredIdleTimeouts.clear(); 0038 } 0039 0040 void Action::unloadAction() 0041 { 0042 unregisterIdleTimeouts(); 0043 } 0044 0045 bool Action::isSupported() 0046 { 0047 return true; 0048 } 0049 0050 Core *Action::core() const 0051 { 0052 return m_core; 0053 } 0054 0055 void Action::trigger(const QVariantMap &args) 0056 { 0057 if (args.contains(QStringLiteral("Explicit")) && args[QStringLiteral("Explicit")].toBool()) { 0058 // The action was explicitly triggered by the user, hence any policy check is bypassed. 0059 triggerImpl(args); 0060 } else { 0061 // The action was taken automatically: let's check if we have the rights to do that 0062 PolicyAgent::RequiredPolicies unsatisfiablePolicies = PolicyAgent::instance()->requirePolicyCheck(m_requiredPolicies); 0063 if (unsatisfiablePolicies == PolicyAgent::None) { 0064 // Ok, let's trigger the action 0065 triggerImpl(args); 0066 } else { 0067 // TODO: Notify somehow? 0068 qCWarning(POWERDEVIL) << "Unsatisfied policies, the action has been aborted"; 0069 } 0070 } 0071 } 0072 0073 void Action::setRequiredPolicies(PolicyAgent::RequiredPolicies requiredPolicies) 0074 { 0075 m_requiredPolicies = requiredPolicies; 0076 } 0077 0078 void Action::onIdleTimeout(std::chrono::milliseconds /*timeout*/) 0079 { 0080 } 0081 0082 void Action::onWakeupFromIdle() 0083 { 0084 } 0085 0086 void Action::onProfileLoad(const QString & /*previousProfile*/, const QString & /*newProfile*/) 0087 { 0088 } 0089 0090 void Action::onProfileUnload() 0091 { 0092 } 0093 0094 } // namespace PowerDevil 0095 0096 #include "moc_powerdevilaction.cpp"