[feat] support auto-start on boot

This commit is contained in:
dijunkun
2025-11-18 13:50:15 +08:00
parent 18f4973d0a
commit 1a64c1afef
11 changed files with 2190 additions and 1721 deletions

View File

@@ -1,5 +1,8 @@
#include "config_center.h"
#include "autostart.h"
#include "rd_log.h"
namespace crossdesk {
ConfigCenter::ConfigCenter(const std::string& config_path,
@@ -48,7 +51,8 @@ int ConfigCenter::Load() {
ini_.GetValue(section_, "cert_file_path", cert_file_path_.c_str());
enable_self_hosted_ =
ini_.GetBoolValue(section_, "enable_self_hosted", enable_self_hosted_);
enable_autostart_ =
ini_.GetBoolValue(section_, "enable_autostart", enable_autostart_);
enable_minimize_to_tray_ = ini_.GetBoolValue(
section_, "enable_minimize_to_tray", enable_minimize_to_tray_);
@@ -71,6 +75,7 @@ int ConfigCenter::Save() {
static_cast<long>(signal_server_port_));
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
ini_.SetBoolValue(section_, "enable_self_hosted", enable_self_hosted_);
ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_);
ini_.SetBoolValue(section_, "enable_minimize_to_tray",
enable_minimize_to_tray_);
@@ -221,6 +226,29 @@ int ConfigCenter::SetMinimizeToTray(bool enable_minimize_to_tray) {
return 0;
}
int ConfigCenter::SetAutostart(bool enable_autostart) {
enable_autostart_ = enable_autostart;
bool success = false;
if (enable_autostart) {
success = EnableAutostart("CrossDesk");
} else {
success = DisableAutostart("CrossDesk");
}
ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_);
SI_Error rc = ini_.SaveFile(config_path_.c_str());
if (rc < 0) {
return -1;
}
if (!success) {
LOG_ERROR("SetAutostart failed");
return -1;
}
return 0;
}
// getters
ConfigCenter::LANGUAGE ConfigCenter::GetLanguage() const { return language_; }
@@ -274,4 +302,6 @@ std::string ConfigCenter::GetDefaultCertFilePath() const {
bool ConfigCenter::IsSelfHosted() const { return enable_self_hosted_; }
bool ConfigCenter::IsMinimizeToTray() const { return enable_minimize_to_tray_; }
bool ConfigCenter::IsEnableAutostart() const { return enable_autostart_; }
} // namespace crossdesk