From 2b528edce044642edcd388b851f52012b7e09e38 Mon Sep 17 00:00:00 2001 From: Zhang Xianwei Date: Thu, 18 Oct 2018 17:09:38 +0800 Subject: rfkill: Add RFKill support plugin on Linux systems from https://github.com/GNOME/gnome-settings-daemon/commit/444af32e343a79ca3db0f957bf73687a0f0df9ec Signed-off-by: Zhang Xianwei --- mate-settings-daemon/Makefile.am | 2 + mate-settings-daemon/mate-settings-bus.c | 77 ++++++++++++++++++++++++++++++++ mate-settings-daemon/mate-settings-bus.h | 33 ++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 mate-settings-daemon/mate-settings-bus.c create mode 100644 mate-settings-daemon/mate-settings-bus.h (limited to 'mate-settings-daemon') diff --git a/mate-settings-daemon/Makefile.am b/mate-settings-daemon/Makefile.am index 91e4c78..ed0f1b1 100644 --- a/mate-settings-daemon/Makefile.am +++ b/mate-settings-daemon/Makefile.am @@ -59,6 +59,8 @@ api_DATA = \ mate_settings_daemon_SOURCES = \ main.c \ + mate-settings-bus.c \ + mate-settings-bus.h \ mate-settings-manager.c \ mate-settings-manager.h \ mate-settings-plugin.c \ diff --git a/mate-settings-daemon/mate-settings-bus.c b/mate-settings-daemon/mate-settings-bus.c new file mode 100644 index 0000000..806ca04 --- /dev/null +++ b/mate-settings-daemon/mate-settings-bus.c @@ -0,0 +1,77 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2006-2011 Richard Hughes + * + * Licensed under the GNU General Public License Version 2 + * + * 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 "config.h" + +#include +#include +#include +#include +#include + +#include "mate-settings-bus.h" + +char * +mate_settings_get_chassis_type (void) +{ + char *ret = NULL; + GError *error = NULL; + GVariant *inner; + GVariant *variant = NULL; + GDBusConnection *connection; + + connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, + NULL, + &error); + if (connection == NULL) { + g_warning ("system bus not available: %s", error->message); + g_error_free (error); + goto out; + } + + variant = g_dbus_connection_call_sync (connection, + "org.freedesktop.hostname1", + "/org/freedesktop/hostname1", + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + "org.freedesktop.hostname1", + "Chassis"), + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (variant == NULL) { + g_debug ("Failed to get property '%s': %s", "Chassis", error->message); + g_error_free (error); + goto out; + } + + g_variant_get (variant, "(v)", &inner); + ret = g_variant_dup_string (inner, NULL); + g_debug ("Get property '%s': %s", "Chassis", ret); + g_variant_unref (inner); +out: + g_clear_object (&connection); + g_clear_pointer (&variant, g_variant_unref); + return ret; +} diff --git a/mate-settings-daemon/mate-settings-bus.h b/mate-settings-daemon/mate-settings-bus.h new file mode 100644 index 0000000..e97f08d --- /dev/null +++ b/mate-settings-daemon/mate-settings-bus.h @@ -0,0 +1,33 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2010-2011 Richard Hughes + * + * Licensed under the GNU General Public License Version 2 + * + * 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 __MATE_SETTINGS_BUS_H +#define __MATE_SETTINGS_BUS_H + +#include + +G_BEGIN_DECLS + +char * mate_settings_get_chassis_type (void); + +G_END_DECLS + +#endif /* __MATE_SETTINGS_BUS_H */ -- cgit v1.2.1