init
This commit is contained in:
commit
87872cb4fa
7 changed files with 756 additions and 0 deletions
218
contents/ui/config.qml
Normal file
218
contents/ui/config.qml
Normal file
|
@ -0,0 +1,218 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2016 Weng Xuetian <wengxt@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls 2.8 as QQC2
|
||||
import QtQuick.Layouts 1.15
|
||||
|
||||
import org.kde.kquickcontrols 2.0 as KQC2
|
||||
import org.kde.kirigami 2.20 as Kirigami
|
||||
|
||||
import org.kde.plasma.wallpapers.potd 1.0
|
||||
|
||||
Kirigami.FormLayout {
|
||||
id: root
|
||||
twinFormLayouts: parentLayout
|
||||
|
||||
property string cfg_Provider
|
||||
property int cfg_FillMode
|
||||
property alias cfg_Color: colorButton.color
|
||||
property int cfg_UpdateOverMeteredConnection
|
||||
property alias formLayout: root
|
||||
|
||||
readonly property size screenSize: Qt.size(Screen.width, Screen.height)
|
||||
|
||||
PotdBackend {
|
||||
id: backend
|
||||
identifier: cfg_Provider
|
||||
arguments: {
|
||||
if (identifier === "bing") {
|
||||
// Bing supports 1366/1920/UHD resolutions
|
||||
const w = screenSize.width * Screen.devicePixelRatio > 1920 ? 3840 : 1920;
|
||||
const h = screenSize.height * Screen.devicePixelRatio > 1080 ? 2160 : 1080;
|
||||
return [w, h];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
updateOverMeteredConnection: cfg_UpdateOverMeteredConnection
|
||||
}
|
||||
|
||||
onCfg_FillModeChanged: {
|
||||
resizeComboBox.setMethod()
|
||||
}
|
||||
|
||||
QQC2.ComboBox {
|
||||
id: resizeComboBox
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label:listbox", "Positioning:")
|
||||
model: [
|
||||
{
|
||||
'label': i18ndc("plasma_wallpaper_org.kde.potd", "@item:inlistbox", "Scaled and cropped"),
|
||||
'fillMode': Image.PreserveAspectCrop
|
||||
},
|
||||
{
|
||||
'label': i18ndc("plasma_wallpaper_org.kde.potd", "@item:inlistbox", "Scaled"),
|
||||
'fillMode': Image.Stretch
|
||||
},
|
||||
{
|
||||
'label': i18ndc("plasma_wallpaper_org.kde.potd", "@item:inlistbox", "Scaled, keep proportions"),
|
||||
'fillMode': Image.PreserveAspectFit
|
||||
},
|
||||
{
|
||||
'label': i18ndc("plasma_wallpaper_org.kde.potd", "@item:inlistbox", "Centered"),
|
||||
'fillMode': Image.Pad
|
||||
},
|
||||
{
|
||||
'label': i18ndc("plasma_wallpaper_org.kde.potd", "@item:inlistbox", "Tiled"),
|
||||
'fillMode': Image.Tile
|
||||
}
|
||||
]
|
||||
|
||||
textRole: "label"
|
||||
onActivated: cfg_FillMode = model[currentIndex]["fillMode"]
|
||||
Component.onCompleted: setMethod();
|
||||
|
||||
function setMethod() {
|
||||
for (var i = 0; i < model.length; i++) {
|
||||
if (model[i]["fillMode"] === cfg_FillMode) {
|
||||
resizeComboBox.currentIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
KQC2.ColorButton {
|
||||
id: colorButton
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label:chooser", "Background color:")
|
||||
dialogTitle: i18ndc("plasma_wallpaper_org.kde.potd", "@title:window", "Select Background Color")
|
||||
}
|
||||
|
||||
Row {
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label:listbox", "Provider:")
|
||||
|
||||
QQC2.ComboBox {
|
||||
id: providerComboBox
|
||||
model: PotdProviderModel { }
|
||||
currentIndex: model.indexOf(cfg_Provider)
|
||||
textRole: "display"
|
||||
valueRole: "id"
|
||||
onCurrentValueChanged: {
|
||||
if (currentIndex < 0) {
|
||||
return;
|
||||
}
|
||||
cfg_Provider = currentValue;
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.ContextualHelpButton {
|
||||
anchors.verticalCenter: providerComboBox.verticalCenter
|
||||
visible: providerComboBox.model.isNSFW(providerComboBox.currentIndex)
|
||||
toolTipText: i18ndc("plasma_wallpaper_org.kde.potd", "@info:tooltip", "This wallpaper provider does not filter out images that may be sensitive or objectionable. Use caution if these images will be displayed in public.")
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.CheckBox {
|
||||
id: updateOverMeteredConnectionCheckBox
|
||||
|
||||
checked: cfg_UpdateOverMeteredConnection === 1
|
||||
visible: backend.networkInformationAvailable
|
||||
text: i18ndc("plasma_wallpaper_org.kde.potd", "@option:check", "Update when using metered network connection")
|
||||
|
||||
onToggled: {
|
||||
cfg_UpdateOverMeteredConnection = checked ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.Separator {
|
||||
id: previewSeparator
|
||||
Kirigami.FormData.isSection: true
|
||||
visible: wallpaperPreview.visible
|
||||
}
|
||||
|
||||
WallpaperPreview {
|
||||
id: wallpaperPreview
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label", "Today's picture:")
|
||||
backgroundColor: cfg_Color
|
||||
visible: !!cfg_Provider // provider is not empty
|
||||
}
|
||||
|
||||
Item {
|
||||
width: wallpaperPreview.implicitWidth
|
||||
height: wallpaperPreview.shadowOffset
|
||||
}
|
||||
|
||||
Item {
|
||||
Kirigami.FormData.isSection: false
|
||||
}
|
||||
|
||||
Kirigami.SelectableLabel {
|
||||
id: titleLabel
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label", "Title:")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: wallpaperPreview.implicitWidth * 1.5
|
||||
visible: wallpaperPreview.visible && backend.title.length > 0
|
||||
font.bold: true
|
||||
text: backend.title
|
||||
Accessible.name: titleLabel.Kirigami.FormData.label
|
||||
}
|
||||
|
||||
Item {
|
||||
Kirigami.FormData.isSection: false
|
||||
}
|
||||
|
||||
Kirigami.SelectableLabel {
|
||||
id: authorLabel
|
||||
Kirigami.FormData.label: i18ndc("plasma_wallpaper_org.kde.potd", "@label", "Author:")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: wallpaperPreview.implicitWidth * 1.5
|
||||
visible: wallpaperPreview.visible && backend.author.length > 0
|
||||
text: backend.author
|
||||
Accessible.name: authorLabel.Kirigami.FormData.label
|
||||
}
|
||||
|
||||
Kirigami.InlineMessage {
|
||||
id: saveMessage
|
||||
|
||||
Kirigami.FormData.isSection: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
showCloseButton: true
|
||||
|
||||
actions: [
|
||||
Kirigami.Action {
|
||||
icon.name: "document-open-folder"
|
||||
text: i18ndc("plasma_wallpaper_org.kde.potd", "@action:button", "Open Containing Folder")
|
||||
visible: backend.saveStatus === PotdBackend.Successful
|
||||
onTriggered: Qt.openUrlExternally(backend.savedFolder)
|
||||
|
||||
Accessible.description: i18ndc("plasma_wallpaper_org.kde.potd", "@info:whatsthis for a button", "Open the destination folder where the wallpaper image was saved.")
|
||||
}
|
||||
]
|
||||
|
||||
onLinkActivated: Qt.openUrlExternally(backend.savedUrl)
|
||||
|
||||
Connections {
|
||||
target: backend
|
||||
|
||||
function onSaveStatusChanged() {
|
||||
switch (backend.saveStatus) {
|
||||
case PotdBackend.Successful:
|
||||
saveMessage.text = backend.saveStatusMessage;
|
||||
saveMessage.type = Kirigami.MessageType.Positive;
|
||||
break;
|
||||
case PotdBackend.Failed:
|
||||
saveMessage.text = backend.saveStatusMessage;
|
||||
saveMessage.type = Kirigami.MessageType.Error;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
saveMessage.visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue