gui: ship the real icon set, wire toolbar/tray/window icon, rebase onto main

Adwaita-derived (GNOME Project, LGPL-3-or-CC-BY-SA), recoloured per light/dark
skin and laid out in IDM's toolbar positions per docs/03-gui-spec.md §1.
Licence and per-file provenance recorded in gui/resources/icons/LICENSE.

New IconTheme mirrors ThemeManager's colorSchemeChanged hook so a live
light/dark switch swaps every action's glyph, not just the QSS. Toolbar/menu
actions, the tray icon and the window icon all now use it instead of the
SP_ArrowDown placeholder. Install-path notes for PKG filed as R5 in
gui/docs/pkg-qa-requests-m1.md.

Also rebases lane/gui onto main (13 commits, no gui/ conflicts).

Verified: full build clean, all 13 gui ctest targets pass (including
gui_no_download_logic), unhappy-path DoD gate PASS against mockd
(--drop-connection).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-09-15 17:50:51 +04:00
co-authored by Claude Sonnet 5
parent facd851824
commit 9487202ea8
32 changed files with 322 additions and 9 deletions
+3
View File
@@ -27,6 +27,7 @@ class DownloadTableModel;
class CategoryPanel;
class TrayIcon;
class DropTargetWidget;
class IconTheme;
#ifdef VELOX_GUI_HAVE_DBUS
class GlobalShortcut;
#endif
@@ -69,6 +70,7 @@ class MainWindow : public QMainWindow {
void showAndRaise();
void onSettingsChanged(const QJsonObject &params);
void onUrlDropped(const QString &url);
void applyIcons();
private:
void buildActions();
@@ -107,6 +109,7 @@ class MainWindow : public QMainWindow {
QJsonArray categoriesCache_;
QJsonArray queuesCache_;
IconTheme *iconTheme_ = nullptr;
TrayIcon *trayIcon_ = nullptr;
DropTargetWidget *dropTarget_ = nullptr;
bool minimizeToTrayEnabled_ = false;