diff options
Diffstat (limited to 'src/timedate.h')
| -rw-r--r-- | src/timedate.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/timedate.h b/src/timedate.h new file mode 100644 index 0000000..82336de --- /dev/null +++ b/src/timedate.h @@ -0,0 +1,70 @@ +/* + * 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/>. + * + */ +#pragma once + +#include <dbus/dbus.h> +#include <glibmm.h> +#include <giomm.h> + +#define BUS_NAME "org.freedesktop.timedate1" + +namespace dlackware::timedate +{ + constexpr const char *bus_path = "/org/freedesktop/timedate1"; + constexpr const char *zoneinfo_database = "/usr/share/zoneinfo"; + constexpr const char *introspection_xml = "/usr/share/dbus-1/interfaces/org.freedesktop.timedate1.xml"; + + constexpr const gint32 usec_per_sec = 1000000ULL; + constexpr const gint32 nsec_per_usec = 1000ULL; + + // Returns the system time zone. + Glib::ustring timezone(); + + // Returns if the hardware clock is set to local time or not + bool local_rtc(); + + // Returns if NTP is enabled + bool ntp(); + + // Returns the timezones available on the system. + std::vector<Glib::ustring> list_timezones(); + + // Sets the system time zone to the one passed by the argument + // Throws std::filesystem::filesystem_error. + void set_timezone(const Glib::ustring& zone, bool user_interaction); + + // Sets NTP + // Throws std::filesystem::filesystem_error. + void set_ntp(bool use_ntp, bool user_interaction); + + // Changes the date/time + // Takes the amount of seconds since UNIX epoche and + // Throws std::system_error. + void set_time(gint64 seconds_since_epoch, bool relative, bool user_interaction); + + class timedate1 + { + const Gio::DBus::InterfaceVTable interface_vtable; + + public: + timedate1(); + + void on_bus_acquired(const Glib::RefPtr<Gio::DBus::Connection>& connection, const Glib::ustring& name); + void on_name_lost(const Glib::RefPtr<Gio::DBus::Connection>& connection, const Glib::ustring& name); + }; +} |
