From a8a44b618a1c0db19fbcb1bd30b967248cd9e607 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 12 Mar 2026 15:30:17 +0100 Subject: [PATCH 1/3] fix(integration): use icon instead of Image for file actions list. It fixes dark/light theme detection and overall look. Signed-off-by: Camila Ayres --- src/gui/integration/FileActionsWindow.qml | 114 ++++++++-------------- src/gui/integration/fileactionsmodel.cpp | 4 +- 2 files changed, 44 insertions(+), 74 deletions(-) diff --git a/src/gui/integration/FileActionsWindow.qml b/src/gui/integration/FileActionsWindow.qml index 19e01f242f3e4..3239318010e6e 100644 --- a/src/gui/integration/FileActionsWindow.qml +++ b/src/gui/integration/FileActionsWindow.qml @@ -129,7 +129,48 @@ ApplicationWindow { spacing: Style.trayHorizontalMargin Layout.fillWidth: true Layout.fillHeight: true - delegate: fileActionsDelegate + delegate: ItemDelegate { + id: fileActionsDelegate + + required property string name + required property int index + required property string actionIcon + + Layout.fillWidth: true + height: implicitHeight + width: parent.width + implicitHeight: Style.activityListButtonHeight + padding: Style.standardSpacing + + text: name + font.pixelSize: Style.defaultFontPtSize + Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + icon { + source: actionIcon + color: palette.windowText + width: Style.minimumActivityItemHeight + height: Style.minimumActivityItemHeight + Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom + } + + background: Rectangle { + color: "transparent" + radius: root.windowRadius + border.width: fileActionsDelegate.hovered ? Style.trayWindowBorderWidth : 0 + border.color: palette.dark + anchors.margins: Style.standardSpacing + height: parent.height + width: parent.width + } + + MouseArea { + id: fileActionMouseArea + anchors.fill: parent + anchors.margins: Style.standardSpacing + cursorShape: Qt.PointingHandCursor + onClicked: fileActionModel.createRequest(index) + } + } } Button { @@ -191,75 +232,4 @@ ApplicationWindow { } } } - - Component { - id: fileActionsDelegate - - RowLayout { - id: fileAction - Layout.fillWidth: true - height: implicitHeight - width: parent.width - - required property string name - required property int index - required property string icon - - Button { - id: fileActionButton - flat: true - Layout.fillWidth: true - implicitHeight: Style.activityListButtonHeight - - padding: Style.standardSpacing - - contentItem: Row { - id: fileActionsContent - anchors.fill: parent - anchors.topMargin: Style.standardSpacing - anchors.rightMargin: Style.standardSpacing - anchors.bottomMargin: Style.standardSpacing - anchors.leftMargin: Style.extraSmallSpacing - spacing: Style.standardSpacing - Layout.fillWidth: true - - Image { - source: fileAction.icon + palette.windowText - width: Style.minimumActivityItemHeight - height: Style.minimumActivityItemHeight - fillMode: Image.PreserveAspectFit - Layout.preferredWidth: Style.minimumActivityItemHeight - Layout.preferredHeight: Style.minimumActivityItemHeight - anchors.verticalCenter: parent.verticalCenter - } - - EnforcedPlainTextLabel { - text: fileAction.name - color: palette.text - font.pixelSize: Style.defaultFontPtSize - verticalAlignment: Text.AlignVCenter - anchors.verticalCenter: parent.verticalCenter - } - } - - background: Rectangle { - color: "transparent" - radius: root.windowRadius - border.width: fileActionButton.hovered ? Style.trayWindowBorderWidth : 0 - border.color: palette.dark - anchors.margins: Style.standardSpacing - height: parent.height - width: parent.width - } - - MouseArea { - id: fileActionMouseArea - anchors.fill: parent - anchors.margins: Style.standardSpacing - cursorShape: Qt.PointingHandCursor - onClicked: fileActionModel.createRequest(fileAction.index) - } - } - } - } } diff --git a/src/gui/integration/fileactionsmodel.cpp b/src/gui/integration/fileactionsmodel.cpp index de94e182949b8..8abb3b3c80e9a 100644 --- a/src/gui/integration/fileactionsmodel.cpp +++ b/src/gui/integration/fileactionsmodel.cpp @@ -59,7 +59,7 @@ int FileActionsModel::rowCount(const QModelIndex &parent) const QHash FileActionsModel::roleNames() const { auto roles = QAbstractListModel::roleNames(); - roles[FileActionIconRole] = "icon"; + roles[FileActionIconRole] = "actionIcon"; roles[FileActionNameRole] = "name"; roles[FileActionUrlRole] = "url"; roles[FileActionMethodRole] = "method"; @@ -325,7 +325,7 @@ QString FileActionsModel::parseIcon(const QString &icon) const return QStringLiteral("image://svgimage-custom-color/convert_to_text.svg/"); } - return _accountUrl + icon; + return QStringLiteral("image://tray-image-provider/") + _accountUrl + icon; } void FileActionsModel::createRequest(const int row) From 530556e0d34e9dac9e4ca0df07b4a4c985106ac6 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 12 Mar 2026 15:35:23 +0100 Subject: [PATCH 2/3] feat(integration): close window when user clicks on response text to open browser. Signed-off-by: Camila Ayres --- src/gui/integration/FileActionsWindow.qml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/integration/FileActionsWindow.qml b/src/gui/integration/FileActionsWindow.qml index 3239318010e6e..66913032c969d 100644 --- a/src/gui/integration/FileActionsWindow.qml +++ b/src/gui/integration/FileActionsWindow.qml @@ -227,7 +227,10 @@ ApplicationWindow { id: responseArea anchors.fill: parent cursorShape: Qt.PointingHandCursor - onClicked: Qt.openUrlExternally(fileActionModel.responseUrl) + onClicked: { + Qt.openUrlExternally(fileActionModel.responseUrl) + root.close() + } } } } From 2116ce5c53d891e8aedcf3b8ab45de496ccf4671 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 12 Mar 2026 15:53:43 +0100 Subject: [PATCH 3/3] refactor(integration): remove MouseArea from ItemDelegate. ItemDelegate supports onClicked directly. Signed-off-by: Camila Ayres --- src/gui/integration/FileActionsWindow.qml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/gui/integration/FileActionsWindow.qml b/src/gui/integration/FileActionsWindow.qml index 66913032c969d..c90981cafe371 100644 --- a/src/gui/integration/FileActionsWindow.qml +++ b/src/gui/integration/FileActionsWindow.qml @@ -163,13 +163,7 @@ ApplicationWindow { width: parent.width } - MouseArea { - id: fileActionMouseArea - anchors.fill: parent - anchors.margins: Style.standardSpacing - cursorShape: Qt.PointingHandCursor - onClicked: fileActionModel.createRequest(index) - } + onClicked: fileActionModel.createRequest(index) } }