diff --git a/main.lua b/main.lua index 5502876..52a9357 100644 --- a/main.lua +++ b/main.lua @@ -457,6 +457,34 @@ end function Syncthing:init() self.ui.menu:registerToMainMenu(self) + self.autostart = G_reader_settings:isTrue("syncthing_autostart") + self:registerEvents() +end + +--------------------------------------------------------------------------- +-- Autostart on network connect / disconnect +--------------------------------------------------------------------------- + +function Syncthing:registerEvents() + if self.autostart and self:hasBinary() then + self.onNetworkConnected = self._onNetworkConnected + self.onNetworkDisconnecting = self._onNetworkDisconnecting + else + self.onNetworkConnected = nil + self.onNetworkDisconnecting = nil + end +end + +function Syncthing:_onNetworkConnected() + logger.dbg("Syncthing: network connected, autostarting") + if not self:isRunning() then + self:start() + end +end + +function Syncthing:_onNetworkDisconnecting() + logger.dbg("Syncthing: network disconnecting, stopping") + self:stop() end function Syncthing:addToMainMenu(menu_items) @@ -488,6 +516,20 @@ function Syncthing:addToMainMenu(menu_items) end end, }, + -- Autostart toggle + { + text = _("Start automatically on WiFi"), + checked_func = function() return self.autostart end, + enabled_func = function() return self:hasBinary() end, + callback = function() + self.autostart = not self.autostart + G_reader_settings:saveSetting("syncthing_autostart", self.autostart) + self:registerEvents() + if self.autostart and NetworkMgr:isOnline() and not self:isRunning() then + self:startAndNotify() + end + end, + }, -- Connection info { text = _("Connection info"),