refractor favicon

This commit is contained in:
end-4
2025-05-27 20:09:46 +02:00
parent 5402893c16
commit 7bd910bb44
4 changed files with 77 additions and 44 deletions
@@ -16,13 +16,6 @@ RippleButton {
property string displayText
property string url
property string downloadUserAgent: ConfigOptions.networking.userAgent
property string faviconDownloadPath
property string domainName: url.includes("vertexaisearch") ? displayText : StringUtils.getBaseUrl(url)
property string faviconUrl: `https://www.google.com/s2/favicons?domain=${domainName}&sz=32`
property string fileName: `${domainName}.ico`
property string faviconFilePath: `${faviconDownloadPath}/${fileName}`
property real faviconSize: 20
implicitHeight: 30
leftPadding: (implicitHeight - faviconSize) / 2
@@ -32,19 +25,6 @@ RippleButton {
colBackgroundHover: Appearance.colors.colSurfaceContainerHighestHover
colRipple: Appearance.colors.colSurfaceContainerHighestActive
Process {
id: faviconDownloadProcess
running: false
command: ["bash", "-c", `[ -f ${faviconFilePath} ] || curl -s '${root.faviconUrl}' -o '${faviconFilePath}' -L -H 'User-Agent: ${downloadUserAgent}'`]
onExited: (exitCode, exitStatus) => {
root.faviconUrl = root.faviconFilePath
}
}
Component.onCompleted: {
faviconDownloadProcess.running = true
}
PointingHandInteraction {}
onClicked: {
if (url) {
@@ -53,27 +33,25 @@ RippleButton {
}
}
contentItem: RowLayout {
spacing: 5
IconImage {
id: iconImage
source: Qt.resolvedUrl(root.faviconUrl)
implicitSize: root.faviconSize
layer.enabled: true
layer.effect: OpacityMask {
maskSource: Rectangle {
width: iconImage.implicitSize
height: iconImage.implicitSize
radius: Appearance.rounding.full
}
contentItem: Item {
anchors.centerIn: parent
implicitWidth: rowLayout.implicitWidth
implicitHeight: rowLayout.implicitHeight
RowLayout {
id: rowLayout
anchors.fill: parent
spacing: 5
Favicon {
Layout.alignment: Qt.AlignVCenter
url: root.url
size: root.faviconSize
}
StyledText {
id: text
horizontalAlignment: Text.AlignHCenter
text: displayText
color: Appearance.m3colors.m3onSurface
}
}
StyledText {
id: text
horizontalAlignment: Text.AlignHCenter
text: displayText
color: Appearance.m3colors.m3onSurface
}
}
}