Add a stub method to query the time zones
All checks were successful
Build / build (push) Successful in 15s

This commit is contained in:
Eugen Wissner 2024-05-24 23:01:16 +02:00
parent 0eccfe3ef3
commit ed136d3b9a
Signed by: belka
GPG Key ID: A27FDC1E8EE902C0
4 changed files with 47 additions and 11 deletions

View File

@ -33,6 +33,16 @@ for KDE.
Then running `dbus-monitor --system` as root can be used to see the
communication between the control center and this service.
Messages to the D-Bus service can also be sent with `dbus-send`. For example
to get the list of time zones:
```sh
dbus-send --system --print-reply --type=method_call \
--dest=org.freedesktop.timedate1 \
/org/freedesktop/timedate1 \
org.freedesktop.timedate1.ListTimezones
```
## Dependencies
- glib

View File

@ -23,5 +23,8 @@
<arg name="use_ntp" type="b" direction="in"/>
<arg name="user_interaction" type="b" direction="in"/>
</method>
<method name="ListTimezones">
<arg name="timezones" type="as" direction="out"/>
</method>
</interface>
</node>

View File

@ -33,18 +33,25 @@ static void slack_method_call (GDBusConnection *connection, const gchar *sender,
gint64 usec_utc;
// Set time zone
if (g_strcmp0 (method_name, "SetTimezone") == 0) {
if (g_strcmp0(method_name, "SetTimezone") == 0)
{
g_variant_get (parameters, "(&sb)", &timezone, &user_interaction);
if (slack_set_timezone (timezone)) g_dbus_method_invocation_return_value (invocation,
NULL);
else g_dbus_method_invocation_return_error (invocation,
if (slack_set_timezone(timezone))
{
g_dbus_method_invocation_return_value (invocation, NULL);
}
else
{
g_dbus_method_invocation_return_error (invocation,
G_IO_ERROR,
G_IO_ERROR_FAILED,
"Write operation failed");
}
g_free (timezone);
} else if (g_strcmp0 (method_name, "SetTime") == 0) {
}
else if (g_strcmp0(method_name, "SetTime") == 0)
{
g_variant_get (parameters, "(xbb)", &usec_utc, &relative, &user_interaction);
// Set time
@ -58,18 +65,31 @@ static void slack_method_call (GDBusConnection *connection, const gchar *sender,
g_dbus_method_invocation_return_error(invocation, G_IO_ERROR, G_IO_ERROR_FAILED,
"Failed to set system clock");
}
} else if (g_strcmp0 (method_name, "SetNTP") == 0) {
}
else if (g_strcmp0(method_name, "SetNTP") == 0)
{
g_variant_get (parameters, "(bb)", &use_ntp, &user_interaction);
// Enable NTP
if (slack_set_ntp (use_ntp)) g_dbus_method_invocation_return_value (invocation,
NULL);
else g_dbus_method_invocation_return_error (invocation,
if (slack_set_ntp (use_ntp))
{
g_dbus_method_invocation_return_value (invocation, NULL);
}
else
{
g_dbus_method_invocation_return_error (invocation,
G_IO_ERROR,
G_IO_ERROR_FAILED,
"Error enabling NTP");
}
}
return;
else if (g_strcmp0(method_name, "ListTimezones") == 0)
{
auto return_value = Glib::Variant<std::vector<Glib::ustring>>::create({});
auto return_tuple = Glib::Variant<std::vector<Glib::ustring>>::create_tuple({ return_value });
g_dbus_method_invocation_return_value(invocation, return_tuple.gobj());
}
}
static GVariant *slack_get_property (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *prop_name, GError **slack_err, gpointer user_data) {

View File

@ -48,6 +48,9 @@
" <arg name=\"use_ntp\" type=\"b\" direction=\"in\"/>\n" \
" <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
" </method>\n" \
" <method name=\"ListTimezones\">\n" \
" <arg name=\"timezones\" type=\"as\" direction=\"out\"/>\n" \
" </method>" \
" </interface>\n" \
"</node>\n"