summaryrefslogtreecommitdiff
path: root/src/slack-timedate.h
blob: 7154336ced54db9eaf6122f888c5488111e5cf8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
 * Copyright (C) 2013-2024  Eugen Wissner <belka@caraus.de>
 * 
 * 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 3 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, see <http://www.gnu.org/licenses/>.
 *
 */

#include <dbus/dbus.h>
#include <glibmm.h>
#include <gio/gio.h>

#define BUS_NAME "org.freedesktop.timedate1"
#define BUS_PATH "/org/freedesktop/timedate1"
#define BUS_INTERFACE "org.freedesktop.timedate1"

#define INTROSPECTION_XML DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
	"<node>\n" \
	" <interface name=\"org.freedesktop.timedate1\">\n"             \
	"  <property name=\"Timezone\" type=\"s\" access=\"read\"/>\n"  \
	"  <property name=\"LocalRTC\" type=\"b\" access=\"read\"/>\n"  \
	"  <property name=\"NTP\" type=\"b\" access=\"read\"/>\n"       \
	"  <method name=\"SetTime\">\n"                                 \
	"   <arg name=\"usec_utc\" type=\"x\" direction=\"in\"/>\n"     \
	"   <arg name=\"relative\" type=\"b\" direction=\"in\"/>\n"     \
	"   <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
	"  </method>\n"                                                 \
	"  <method name=\"SetTimezone\">\n"                             \
	"   <arg name=\"timezone\" type=\"s\" direction=\"in\"/>\n"     \
	"   <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
	"  </method>\n"                                                 \
	"  <method name=\"SetLocalRTC\">\n"                             \
	"   <arg name=\"local_rtc\" type=\"b\" direction=\"in\"/>\n"    \
	"   <arg name=\"fix_system\" type=\"b\" direction=\"in\"/>\n"   \
	"   <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
	"  </method>\n"                                                 \
	"  <method name=\"SetNTP\">\n"                                  \
	"   <arg name=\"use_ntp\" type=\"b\" direction=\"in\"/>\n"      \
	"   <arg name=\"user_interaction\" type=\"b\" direction=\"in\"/>\n" \
	"  </method>\n"                                                 \
	" </interface>\n"												\
	"</node>\n"

#define DEFAULT_EXIT_SEC 300

constexpr gint32 USEC_PER_SEC = 1000000ULL;
constexpr gint32 NSEC_PER_USEC = 1000ULL;

// Returns the system time zone
gchar *slack_get_timezone ();

// Sets the system time zone to the one passed by the argument
// Returns true on success, false otherwise
gboolean slack_set_timezone (gchar *);

// Changes the date/time
// Takes the amount of seconds since UNIX epoche and 
// Returns true on success, false otherwise
gboolean slack_set_time(gint64 seconds_since_epoch, gboolean relative);

// Returns if the hardware clock is set to local time or not
gboolean slack_get_is_localtime ();

// Returns if NTP is enabled
gboolean slack_get_ntp ();

// Sets NTP
gboolean slack_set_ntp (gboolean);