You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 lines
4.1 KiB

/*
SPDX-FileCopyrightText: 2020 Mikhail Zolotukhin <zomial@protonmail.com>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
import QtQuick 2.7
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.0 as QtDialogs
import QtQuick.Controls 2.10 as QtControls
import org.kde.kirigami 2.10 as Kirigami
import org.kde.private.kcms.style 1.0 as Private
import org.kde.newstuff 1.91 as NewStuff
import org.kde.kcm 1.2 as KCM
Kirigami.Page {
id: gtkStylePage
title: i18n("GNOME/GTK Application Style")
ColumnLayout {
anchors.fill: parent
Kirigami.InlineMessage {
id: infoLabel
Layout.fillWidth: true
showCloseButton: true
visible: false
Connections {
target: kcm.gtkPage
function onShowErrorMessage(message) {
infoLabel.type = Kirigami.MessageType.Error;
infoLabel.text = message;
infoLabel.visible = true;
}
}
}
Kirigami.FormLayout {
wideMode: true
Row {
Kirigami.FormData.label: i18n("GTK theme:")
Flow {
spacing: Kirigami.Units.smallSpacing
QtControls.ComboBox {
id: gtkThemeCombo
model: kcm.gtkPage.gtkThemesModel
currentIndex: model.findThemeIndex(kcm.gtkPage.gtkThemeFromConfig())
onCurrentTextChanged: function() {
model.selectedTheme = currentText
gtkRemoveButton.enabled = model.selectedThemeRemovable()
}
onActivated: model.setSelectedThemeDirty()
textRole: "theme-name"
Connections {
target: kcm.gtkPage
function onSelectGtkThemeInCombobox(themeName) {
gtkThemeCombo.currentIndex = gtkThemeCombo.model.findThemeIndex(themeName)
}
}
}
QtControls.Button {
id: gtkRemoveButton
icon.name: "edit-delete"
onClicked: gtkThemeCombo.model.removeSelectedTheme()
}
QtControls.Button {
icon.name: "preview"
text: i18n("Preview…")
onClicked: kcm.gtkPage.showGtkPreview()
visible: kcm.gtkPage.gtkPreviewAvailable()
}
}
}
}
Item {
Layout.fillHeight: true
}
Kirigami.ActionToolBar {
flat: false
alignment: Qt.AlignRight
actions: [
Kirigami.Action {
text: i18n("Install from File…")
icon.name: "document-import"
onTriggered: fileDialogLoader.active = true
},
NewStuff.Action {
text: i18n("Get New GNOME/GTK Application Styles…")
configFile: "gtk_themes.knsrc"
onEntryEvent: function (entry, event) {
if (event == NewStuff.Entry.StatusChangedEvent) {
kcm.load();
}
}
}
]
}
}
Loader {
id: fileDialogLoader
active: false
sourceComponent: QtDialogs.FileDialog {
title: i18n("Select GTK Theme Archive")
folder: shortcuts.home
nameFilters: [ i18n("GTK Theme Archive (*.tar.xz *.tar.gz *.tar.bz2)") ]
Component.onCompleted: open()
onAccepted: {
kcm.gtkPage.installGtkThemeFromFile(fileUrls[0])
fileDialogLoader.active = false
}
onRejected: {
fileDialogLoader.active = false
}
}
}
}