Mixing ForkAwesome icons too much with the regular icon theme doesn't look
good (depending on the theme) so let's prefer ForkAwesome icons within the
tray widget which already uses ForkAwesome in some places like certain
buttons and models. This makes it also look more in-line with Syncthing's
web UI. For context menus and dialogs let's prefer system icons because
there are hardly any ForkAwesome icons used/required so far and it is maybe
nicer to be in-line with the system here.
It fits better than "view-barcode" from the icon theme. This also tests
using ForkAwesome icons via the custom icon engine. Unfortunately this
does not seem to work within the Plasmoid so far.
* FontAwesome uses a propritary build system so let's move to its fork
ForkAwesome similar to Syncthing
* See https://github.com/syncthing/syncthing/pull/5237
* Bundle the font file instead of having the SVGs directly within
Syncthing Tray's own repository
If there's a configured and local Syncthing connection and we're on a
non-UNIX platform which doesn't support SIGTERM (basically Windows) it
makes sense to use the REST-API instead. That's likely better than just
terminating the process forcefully.
This doesn't cover the stop button within the launcher settings yet because
from this context is isn't clear which connection is relevant as there can
be multiple tray icons/widgets but only one settings page.
This gets a little bit too small and with "Consider window frame size
within centerWidgetAvoidingOverflow()" in qtutilities it shouldn't be
required anymore.
So far the backend libraries' include paths were relative within this
repository. This means the header files could not be used at their
installed location.
This change replaces them with "<>" includes to fix that problem and adds
a new include directory so building everything at once still works.
With this change it should be easier to actually split some parts into
another repository if this one would become too big.
* Use the name as sorting criteria and fall back to the ID if there's no
name
* Use new SyncthingSortFilterDirectoryModel also for Plasmoid's filtering
* See https://github.com/Martchus/syncthingtray/issues/75
* Support triggering actions via the context menu in the regular tray like
it is already possible in the Plasmoid
* Support copying via the context menu in the Plasmoid like it is already
possible in the regular tray
* Reduce repetition of coding patterns using templates
* See https://github.com/Martchus/syncthingtray/issues/59
* QCoreApplication::aboutToQuit() does not work reliably but terminating
only at the end of the session is a common use-case for the tray
application. So workaround the problem by saving the settings
immediately.
* The plasmoid already does this anyways.
Map context menu coordinates to top-level widget if the top-level
widget is a QMenu. Otherwise the context menu is not displayed at
the right position. Not sure why this workaround is required.
The check for QMenu is required. Otherwise the "windowed" mode
enabled via --windowed CLI argument would not work anymore. In
this mode the top-level window is a regular window.
Adding the window flags Qt::Sheet or Qt::Dialog to the QMenu
would help as well but that prevents closing the menu (see
https://github.com/Martchus/syncthingtray/issues/41).
This is useful because sometimes the background color of the system
tray is dark but the overall system UI still uses a light theme.
For the Plasmoid this should never be the case, though. Hence the
extra settings are not available there.
* Take the time the launcher is active into account (in the same
way as it is done for the systemd service)
* Fix case when systemd service would be relevant but configured
to consider the launcher status
* Rely not only on the FolderErrors event
* Request pull errors when opening the dialog
* Use "pullErrors" from FolderSummary
* Move code for directory error dialog into
its own class
This should fix that sometimes obsolete errors
were still displayed or actually present errors
missing.
Add new SyncthingLauncher class which lauches Syncthing
under the hood via external SyncthingProcess or using
libsyncthing.
Note: Launching via libsyncthing is still experimental.