mirror of https://github.com/cutefishos/core
				
				
				
			PowerManager: add dim display feature
							parent
							
								
									04697c1c3f
								
							
						
					
					
						commit
						bc6c46a02f
					
				@ -0,0 +1,60 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "action.h"
 | 
			
		||||
#include "idlemanager.h"
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
class Action::Private
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    Private() {}
 | 
			
		||||
    ~Private() {}
 | 
			
		||||
 | 
			
		||||
    QVector< int > registeredIdleTimeouts;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Action::Action(QObject* parent)
 | 
			
		||||
        : QObject(parent)
 | 
			
		||||
        , d(new Private)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Action::~Action()
 | 
			
		||||
{
 | 
			
		||||
    delete d;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Action::registerIdleTimeout(int msec)
 | 
			
		||||
{
 | 
			
		||||
    d->registeredIdleTimeouts.append(msec);
 | 
			
		||||
    IdleManager::self()->registerActionTimeout(this, msec);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Action::isSupported()
 | 
			
		||||
{
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Action::setTimeout(int timeout)
 | 
			
		||||
{
 | 
			
		||||
    Q_UNUSED(timeout)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,89 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef POWERDEVIL_POWERDEVILACTION_H
 | 
			
		||||
#define POWERDEVIL_POWERDEVILACTION_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QVariantMap>
 | 
			
		||||
 | 
			
		||||
class IDleManager;
 | 
			
		||||
class Q_DECL_EXPORT Action : public QObject
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
    Q_DISABLE_COPY(Action)
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Default constructor
 | 
			
		||||
     */
 | 
			
		||||
    explicit Action(QObject *parent);
 | 
			
		||||
    /**
 | 
			
		||||
     * Default destructor
 | 
			
		||||
     */
 | 
			
		||||
    ~Action() override;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This function is meant to find out if this action is available on this system. Actions
 | 
			
		||||
     * CAN reimplement this function if they are dependent on specific hardware/software requirements.
 | 
			
		||||
     * By default, this function will always return true.
 | 
			
		||||
     *
 | 
			
		||||
     * Should this function return false, the core will delete and ignore the action right after creation.
 | 
			
		||||
     *
 | 
			
		||||
     * @returns Whether this action is supported or not by the current system
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool isSupported();
 | 
			
		||||
 | 
			
		||||
    virtual void setTimeout(int timeout);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers an idle timeout for this action. Call this function and not KIdleTime directly to take advantage
 | 
			
		||||
     * of Action's automated handling of idle timeouts. Also, please reimplement onIdleTimeout instead of listening
 | 
			
		||||
     * to KIdleTime's signals to catch idle timeout events.
 | 
			
		||||
     *
 | 
			
		||||
     * @param msec The idle timeout to be registered in milliseconds.
 | 
			
		||||
     */
 | 
			
		||||
    void registerIdleTimeout(int msec);
 | 
			
		||||
 | 
			
		||||
public Q_SLOTS:
 | 
			
		||||
    /**
 | 
			
		||||
     * This slot is triggered whenever an idle timeout registered with registerIdleTimeout is reached.
 | 
			
		||||
     *
 | 
			
		||||
     * @param msec The idle timeout reached in milliseconds
 | 
			
		||||
     */
 | 
			
		||||
    virtual void onIdleTimeout(int msec) = 0;
 | 
			
		||||
    /**
 | 
			
		||||
     * This slot is triggered whenever the PC wakes up from an Idle state. It is @b always called after a registered
 | 
			
		||||
     * idle timeout has been reached.
 | 
			
		||||
     */
 | 
			
		||||
    virtual void onWakeupFromIdle() = 0;
 | 
			
		||||
 | 
			
		||||
Q_SIGNALS:
 | 
			
		||||
    void actionTriggered(bool result, const QString &error = QString());
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    class Private;
 | 
			
		||||
    Private * const d;
 | 
			
		||||
 | 
			
		||||
    friend class IDleManager;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // POWERDEVIL_POWERDEVILACTION_H
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="com.cutefish.PowerManager">
 | 
			
		||||
    <method name="setDimDisplayTimeout">
 | 
			
		||||
        <arg name="value" type="i" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@ -0,0 +1,79 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2021 by Reion Wong <reion@cutefishos.com>               *
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "dimdisplayaction.h"
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
#include <QDBusPendingCall>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
DimDisplayAction::DimDisplayAction(QObject *parent)
 | 
			
		||||
    : Action(parent)
 | 
			
		||||
    , m_iface("com.cutefish.Settings",
 | 
			
		||||
              "/Brightness",
 | 
			
		||||
              "com.cutefish.Brightness", QDBusConnection::sessionBus())
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DimDisplayAction::onWakeupFromIdle()
 | 
			
		||||
{   
 | 
			
		||||
    if (!m_dimmed) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // An active inhibition may not let us restore the brightness.
 | 
			
		||||
    // We should wait a bit screen to wake-up from sleep
 | 
			
		||||
    QTimer::singleShot(0, this, [this]() {
 | 
			
		||||
        m_iface.asyncCall("setValue", QVariant::fromValue(m_oldScreenBrightness));
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    m_dimmed = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DimDisplayAction::onIdleTimeout(int msec)
 | 
			
		||||
{
 | 
			
		||||
    int sec = msec / 1000;
 | 
			
		||||
 | 
			
		||||
    if (m_iface.property("brightness").toInt() == 0)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    if (sec == m_dimOnIdleTime) {
 | 
			
		||||
        m_iface.asyncCall("setValue", QVariant::fromValue(0));
 | 
			
		||||
    } else if (sec == (m_dimOnIdleTime * 3 / 4)) {
 | 
			
		||||
        const int newBrightness = qRound(m_oldScreenBrightness / 8.0);
 | 
			
		||||
        m_iface.asyncCall("setValue", QVariant::fromValue(newBrightness));
 | 
			
		||||
    } else if (sec == (m_dimOnIdleTime * 1 / 2)) {
 | 
			
		||||
        m_oldScreenBrightness = m_iface.property("brightness").toInt();
 | 
			
		||||
 | 
			
		||||
        const int newBrightness = qRound(m_oldScreenBrightness / 2.0);
 | 
			
		||||
 | 
			
		||||
        m_iface.asyncCall("setValue", QVariant::fromValue(newBrightness));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m_dimmed = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DimDisplayAction::setTimeout(int timeout)
 | 
			
		||||
{
 | 
			
		||||
    m_dimOnIdleTime = timeout;
 | 
			
		||||
    registerIdleTimeout(m_dimOnIdleTime * 3 / 4);
 | 
			
		||||
    registerIdleTimeout(m_dimOnIdleTime / 2);
 | 
			
		||||
    registerIdleTimeout(m_dimOnIdleTime);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,45 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2021 by Reion Wong <reion@cutefishos.com>               *
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef DIMDISPLAYACTION_H
 | 
			
		||||
#define DIMDISPLAYACTION_H
 | 
			
		||||
 | 
			
		||||
#include "action.h"
 | 
			
		||||
#include <QDBusInterface>
 | 
			
		||||
 | 
			
		||||
class DimDisplayAction : public Action
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    explicit DimDisplayAction(QObject *parent = nullptr);
 | 
			
		||||
 | 
			
		||||
    void onWakeupFromIdle() override;
 | 
			
		||||
    void onIdleTimeout(int msec) override;
 | 
			
		||||
    void setTimeout(int timeout) override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QDBusInterface m_iface;
 | 
			
		||||
    int m_dimOnIdleTime = 0;
 | 
			
		||||
    int m_oldScreenBrightness = 0;
 | 
			
		||||
    bool m_dimmed = false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // DIMDISPLAYACTION_H
 | 
			
		||||
@ -0,0 +1,89 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2021 by Reion Wong <reion@cutefishos.com>               *
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "idlemanager.h"
 | 
			
		||||
 | 
			
		||||
#include <KIdleTime>
 | 
			
		||||
 | 
			
		||||
IdleManager *IdleManager::self()
 | 
			
		||||
{
 | 
			
		||||
    static IdleManager mgr;
 | 
			
		||||
    return &mgr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
IdleManager::IdleManager(QObject *parent)
 | 
			
		||||
    : QObject(parent)
 | 
			
		||||
{
 | 
			
		||||
    connect(KIdleTime::instance(), SIGNAL(timeoutReached(int,int)),
 | 
			
		||||
            this, SLOT(onKIdleTimeoutReached(int,int)));
 | 
			
		||||
    connect(KIdleTime::instance(), &KIdleTime::resumingFromIdle,
 | 
			
		||||
            this, &IdleManager::onResumingFromIdle);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IdleManager::registerActionTimeout(Action *action, int secs)
 | 
			
		||||
{
 | 
			
		||||
    int identifier = KIdleTime::instance()->addIdleTimeout(secs * 1000);
 | 
			
		||||
 | 
			
		||||
    QList<int> timeouts = m_registeredActionTimeouts[action];
 | 
			
		||||
    timeouts.append(identifier);
 | 
			
		||||
 | 
			
		||||
    m_registeredActionTimeouts[action] = timeouts;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IdleManager::unregisterActionTimeouts(Action *action)
 | 
			
		||||
{
 | 
			
		||||
    // Clear all timeouts from the action
 | 
			
		||||
    const QList< int > timeoutsToClean = m_registeredActionTimeouts[action];
 | 
			
		||||
 | 
			
		||||
    for (int id : timeoutsToClean) {
 | 
			
		||||
        KIdleTime::instance()->removeIdleTimeout(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m_registeredActionTimeouts.remove(action);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IdleManager::onKIdleTimeoutReached(int identifier, int timeout)
 | 
			
		||||
{
 | 
			
		||||
    for (auto i = m_registeredActionTimeouts.constBegin(), end = m_registeredActionTimeouts.constEnd(); i != end; ++i) {
 | 
			
		||||
        if (i.value().contains(identifier)) {
 | 
			
		||||
            i.key()->onIdleTimeout(timeout);
 | 
			
		||||
 | 
			
		||||
            // And it will need to be awaken
 | 
			
		||||
            m_pendingResumeFromIdleActions.insert(i.key());
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Catch the next resume event if some actions require it
 | 
			
		||||
    if (!m_pendingResumeFromIdleActions.isEmpty()) {
 | 
			
		||||
        KIdleTime::instance()->catchNextResumeEvent();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IdleManager::onResumingFromIdle()
 | 
			
		||||
{
 | 
			
		||||
    KIdleTime::instance()->simulateUserActivity();
 | 
			
		||||
    // Wake up the actions in which an idle action was triggered
 | 
			
		||||
    std::for_each(m_pendingResumeFromIdleActions.cbegin(), m_pendingResumeFromIdleActions.cend(),
 | 
			
		||||
        std::mem_fn(&Action::onWakeupFromIdle));
 | 
			
		||||
 | 
			
		||||
    m_pendingResumeFromIdleActions.clear();
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,52 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
 *   Copyright (C) 2021 by Reion Wong <reion@cutefishos.com>               *
 | 
			
		||||
 *   Copyright (C) 2010 by Dario Freddi <drf@kde.org>                      *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is free software; you can redistribute it and/or modify  *
 | 
			
		||||
 *   it under the terms of the GNU General Public License as published by  *
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   This program is distributed in the hope that it will be useful,       *
 | 
			
		||||
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
			
		||||
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
			
		||||
 *   GNU General Public License for more details.                          *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   You should have received a copy of the GNU General Public License     *
 | 
			
		||||
 *   along with this program; if not, write to the                         *
 | 
			
		||||
 *   Free Software Foundation, Inc.,                                       *
 | 
			
		||||
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef IDLEMANAGER_H
 | 
			
		||||
#define IDLEMANAGER_H
 | 
			
		||||
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QHash>
 | 
			
		||||
#include <QSet>
 | 
			
		||||
 | 
			
		||||
#include "action.h"
 | 
			
		||||
 | 
			
		||||
class IdleManager : public QObject
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static IdleManager *self();
 | 
			
		||||
    explicit IdleManager(QObject *parent = nullptr);
 | 
			
		||||
 | 
			
		||||
    void registerActionTimeout(Action *action, int secs);
 | 
			
		||||
    void unregisterActionTimeouts(Action *action);
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    void onKIdleTimeoutReached(int, int);
 | 
			
		||||
    void onResumingFromIdle();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    friend class Action;
 | 
			
		||||
 | 
			
		||||
    QHash<Action *, QList<int>> m_registeredActionTimeouts;
 | 
			
		||||
    QSet<Action *> m_pendingResumeFromIdleActions;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // IDLEMANAGER_H
 | 
			
		||||
@ -0,0 +1,41 @@
 | 
			
		||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ScreenSaver">
 | 
			
		||||
    <signal name="ActiveChanged">
 | 
			
		||||
      <arg type="b"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <method name="Lock">
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="SimulateUserActivity">
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetActive">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetActiveTime">
 | 
			
		||||
      <arg name="seconds" type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetSessionIdleTime">
 | 
			
		||||
      <arg name="seconds" type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="SetActive">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
      <arg name="e" type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Inhibit">
 | 
			
		||||
      <arg name="application_name" type="s" direction="in"/>
 | 
			
		||||
      <arg name="reason_for_inhibit" type="s" direction="in"/>
 | 
			
		||||
      <arg name="cookie" type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="UnInhibit">
 | 
			
		||||
      <arg name="cookie" type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Throttle">
 | 
			
		||||
      <arg name="application_name" type="s" direction="in"/>
 | 
			
		||||
      <arg name="reason_for_inhibit" type="s" direction="in"/>
 | 
			
		||||
      <arg name="cookie" type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="UnThrottle">
 | 
			
		||||
      <arg name="cookie" type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue