settings: make right-clicking config file button copy path (#2112)

This commit is contained in:
end-4
2025-10-28 22:48:08 +01:00
parent 44da20ed4a
commit 97b3f7ec55
3 changed files with 63 additions and 9 deletions
@@ -7,6 +7,7 @@ Rectangle {
id: root
property alias materialIcon: icon.text
property alias text: noticeText.text
default property alias data: buttonRow.data
radius: Appearance.rounding.normal
color: Appearance.colors.colPrimaryContainer
@@ -28,13 +29,23 @@ Rectangle {
color: Appearance.colors.colOnPrimaryContainer
}
StyledText {
id: noticeText
ColumnLayout {
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
text: "Notice message"
color: Appearance.colors.colOnPrimaryContainer
wrapMode: Text.WordWrap
spacing: 4
StyledText {
id: noticeText
Layout.fillWidth: true
text: "Notice message"
color: Appearance.colors.colOnPrimaryContainer
wrapMode: Text.WordWrap
}
RowLayout {
id: buttonRow
visible: children.length > 0
Layout.fillWidth: true
}
}
}
}
@@ -332,5 +332,33 @@ ContentPage {
NoticeBox {
Layout.fillWidth: true
text: Translation.tr('Not all options are available in this app. You should also check the config file by hitting the "Config file" button on the topleft corner or opening %1 manually.').arg(Directories.shellConfigPath)
Item {
Layout.fillWidth: true
}
RippleButtonWithIcon {
id: copyPathButton
property bool justCopied: false
Layout.fillWidth: false
buttonRadius: Appearance.rounding.small
materialIcon: justCopied ? "check" : "content_copy"
mainText: justCopied ? Translation.tr("Path copied") : Translation.tr("Copy path")
onClicked: {
copyPathButton.justCopied = true
Quickshell.clipboardText = FileUtils.trimFileProtocol(`${Directories.config}/illogical-impulse/config.json`);
revertTextTimer.restart();
}
colBackground: ColorUtils.transparentize(Appearance.colors.colPrimaryContainer)
colBackgroundHover: Appearance.colors.colPrimaryContainerHover
colRipple: Appearance.colors.colPrimaryContainerActive
Timer {
id: revertTextTimer
interval: 1500
onTriggered: {
copyPathButton.justCopied = false
}
}
}
}
}
+18 -3
View File
@@ -10,6 +10,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Window
import Quickshell
import qs.services
import qs.modules.common
import qs.modules.common.widgets
@@ -169,15 +170,29 @@ ApplicationWindow {
FloatingActionButton {
id: fab
iconText: "edit"
buttonText: Translation.tr("Config file")
property bool justCopied: false
iconText: justCopied ? "check" : "edit"
buttonText: justCopied ? Translation.tr("Path copied") : Translation.tr("Config file")
expanded: navRail.expanded
downAction: () => {
Qt.openUrlExternally(`${Directories.config}/illogical-impulse/config.json`);
}
altAction: () => {
Quickshell.clipboardText = CF.FileUtils.trimFileProtocol(`${Directories.config}/illogical-impulse/config.json`);
fab.justCopied = true;
revertTextTimer.restart()
}
Timer {
id: revertTextTimer
interval: 1500
onTriggered: {
fab.justCopied = false;
}
}
StyledToolTip {
text: Translation.tr("Open the shell config file.\nIf the button doesn't work or doesn't open in your favorite editor,\nyou can manually open ~/.config/illogical-impulse/config.json")
text: Translation.tr("Open the shell config file\nAlternatively right-click to copy path")
}
}