diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 469379a..c626a41 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,8 @@ find_package(PkgConfig) pkg_check_modules(GDBUS REQUIRED gio-2.0 dbus-1 glibmm-2.4 giomm-2.4) -add_executable(slack-timedate - slack-timedate.cpp slack-timedate.h +add_executable(slack-timedate main.cpp + timedate.cpp timedate.h ) target_include_directories(slack-timedate PRIVATE ${GDBUS_INCLUDE_DIRS}) target_link_libraries(slack-timedate ${GDBUS_LIBRARIES}) diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..bd6c0c0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2013-2024 Eugen Wissner + * + * 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 . + * + */ +#include "timedate.h" + +bool timeout_callback(Glib::RefPtr loop2quit) +{ + loop2quit->quit(); + return false; +} + +constexpr unsigned int default_exit_sec = 300; + +int main(int argc, char **argv) +{ + Gio::init(); + auto timedate1 = std::make_unique(); + + guint owner_id = Gio::DBus::own_name(Gio::DBus::BUS_TYPE_SYSTEM, BUS_NAME, + std::bind(&dlackware::timedate::timedate1::on_bus_acquired, timedate1.get(), + std::placeholders::_1, std::placeholders::_2), + Gio::DBus::SlotNameAcquired(), + std::bind(&dlackware::timedate::timedate1::on_name_lost, timedate1.get(), + std::placeholders::_1, std::placeholders::_2), + Gio::DBus::BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | Gio::DBus::BUS_NAME_OWNER_FLAGS_REPLACE); + + Glib::RefPtr loop = Glib::MainLoop::create(false); + + Glib::signal_timeout().connect_seconds(sigc::bind(&timeout_callback, loop), default_exit_sec); + loop->run(); + + Gio::DBus::unown_name(owner_id); + + return EXIT_SUCCESS; +} diff --git a/src/slack-timedate.cpp b/src/timedate.cpp similarity index 89% rename from src/slack-timedate.cpp rename to src/timedate.cpp index 7b4c194..a320384 100644 --- a/src/slack-timedate.cpp +++ b/src/timedate.cpp @@ -15,17 +15,12 @@ * along with this program. If not, see . * */ - #include #include #include -#include -#include -#include -#include -#include +#include -#include "slack-timedate.h" +#include "timedate.h" static void slack_method_call(const Glib::RefPtr& connection, const Glib::ustring& sender, const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, @@ -123,35 +118,6 @@ static void slack_get_property(Glib::VariantBase& result, const Glib::RefPtr loop2quit) -{ - loop2quit->quit(); - return false; -} - -int main(int argc, char **argv) -{ - Gio::init(); - auto timedate1 = std::make_unique(); - - guint owner_id = Gio::DBus::own_name(Gio::DBus::BUS_TYPE_SYSTEM, BUS_NAME, - std::bind(&dlackware::timedate::timedate1::on_bus_acquired, timedate1.get(), - std::placeholders::_1, std::placeholders::_2), - Gio::DBus::SlotNameAcquired(), - std::bind(&dlackware::timedate::timedate1::on_name_lost, timedate1.get(), - std::placeholders::_1, std::placeholders::_2), - Gio::DBus::BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | Gio::DBus::BUS_NAME_OWNER_FLAGS_REPLACE); - - Glib::RefPtr loop = Glib::MainLoop::create(false); - - Glib::signal_timeout().connect_seconds(sigc::bind(&timeout_callback, loop), DEFAULT_EXIT_SEC); - loop->run(); - - Gio::DBus::unown_name(owner_id); - - return EXIT_SUCCESS; -} - namespace dlackware::timedate { timedate1::timedate1() @@ -181,7 +147,7 @@ namespace dlackware::timedate } try { - guint registration_id = connection->register_object(BUS_PATH, + guint registration_id = connection->register_object(bus_path, introspection_data->lookup_interface(), this->interface_vtable); } catch (Glib::Error& slack_err) diff --git a/src/slack-timedate.h b/src/timedate.h similarity index 95% rename from src/slack-timedate.h rename to src/timedate.h index 2dd4223..82336de 100644 --- a/src/slack-timedate.h +++ b/src/timedate.h @@ -15,19 +15,17 @@ * along with this program. If not, see . * */ +#pragma once #include #include #include -#include #define BUS_NAME "org.freedesktop.timedate1" -#define BUS_PATH "/org/freedesktop/timedate1" - -#define DEFAULT_EXIT_SEC 300 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";