You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/tdecore/tdehw/hwlibdaemons/tdedbus/hardwarecontrolService.cpp

140 lines
3.7 KiB
C++

/*
*
* HardwareControl DBus Service implementation
*
* Copyright (C) 2020 Emanoil Kotsev <deloptes@gmail.com>
*
*
* This file is part of tdecore/tdehw.
*
* hardwarecontrol 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.
*
* hardwarecontrol 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 tdelibs; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
// TQt includes
#include <tqdbusobjectpath.h>
#include "hardwarecontrolService.h"
#include "interfaces/introspectableInterface.h"
#include "interfaces/propertiesInterface.h"
#include "DeviceServiceBase.h"
#include "BrightnessService.h"
#include "CPUGovernorService.h"
#include "InputEventsService.h"
#include "PowerService.h"
#include "PropertiesService.h"
/*!
* Implementing node services for /org/trinitydesktop/hardwarecontrol
*/
#define DBUS_HWCTRL_SERVICE_PATH "/org/trinitydesktop/hardwarecontrol"
#define REGISTER_PORTAL(klass) \
m_interfaces.insert(klass::interface(), new klass(m_connection));
#define DESTROY_PORTAL(klass) \
delete m_interfaces[klass::interface()];
#define ADDCHILD(x) addChildNode(TQString(x));
#define REGISTER_OBJECT(x) registerObject(m_connection,TQString(x));
#define ADDNODE(x,y) \
ADDCHILD(x) \
REGISTER_OBJECT(y)
/*
* Root Node
*/
RootNodeService::RootNodeService(TQT_DBusConnection &connection )
: DBusBaseNode(), m_connection(connection)
{
ADDNODE("org","/")
}
RootNodeService::~RootNodeService(){
}
TQT_DBusObjectBase* RootNodeService::createInterface(const TQString& interfaceName)
{
return (TQT_DBusObjectBase*) m_interfaces[interfaceName];
}
/*
* Org Node
*/
OrgNodeService::OrgNodeService(TQT_DBusConnection &connection )
: DBusBaseNode(), m_connection(connection)
{
ADDNODE("trinitydesktop","/org")
}
OrgNodeService::~OrgNodeService(){
}
TQT_DBusObjectBase* OrgNodeService::createInterface(const TQString& interfaceName)
{
return (TQT_DBusObjectBase*) m_interfaces[interfaceName];
}
/*
* TrinityDesktop Node
*/
TrinityDesktopNodeService::TrinityDesktopNodeService(TQT_DBusConnection &connection )
: DBusBaseNode(), m_connection(connection)
{
ADDNODE("hardwarecontrol","/org/trinitydesktop")
}
TrinityDesktopNodeService::~TrinityDesktopNodeService(){
DESTROY_PORTAL(PropertiesService);
DESTROY_PORTAL(BrightnessService);
DESTROY_PORTAL(CPUGovernorService);
DESTROY_PORTAL(InputEventsService);
DESTROY_PORTAL(PowerService);
}
TQT_DBusObjectBase* TrinityDesktopNodeService::createInterface(const TQString& interfaceName)
{
return (TQT_DBusObjectBase*) m_interfaces[interfaceName];
}
/*
* HardwareControl Node
*/
HardwareControlNodeService::HardwareControlNodeService(TQT_DBusConnection &conn)
: org::trinitydesktop::hardwarecontrolNode(),
m_connection(conn)
{
m_interfaces.insert("org.freedesktop.DBus.Introspectable", this);
REGISTER_PORTAL(PropertiesService);
REGISTER_PORTAL(BrightnessService);
REGISTER_PORTAL(CPUGovernorService);
REGISTER_PORTAL(InputEventsService);
REGISTER_PORTAL(PowerService);
REGISTER_OBJECT(DBUS_HWCTRL_SERVICE_PATH)
}
HardwareControlNodeService::~HardwareControlNodeService(){
}
TQT_DBusObjectBase* HardwareControlNodeService::createInterface(const TQString& interfaceName)
{
return (TQT_DBusObjectBase*) m_interfaces[interfaceName];
}