Warning, /plasma/discover/kcm/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 import QtQuick 2.1
0008 import QtQuick.Layouts 1.1
0009 import QtQuick.Controls 2.3 as QQC2
0010 import org.kde.kirigami 2.14 as Kirigami
0011 import org.kde.kcmutils
0012 
0013 SimpleKCM {
0014     id: root
0015 
0016     ConfigModule.buttons: ConfigModule.Default | ConfigModule.Apply
0017 
0018     QQC2.ButtonGroup {
0019         id: autoUpdatesGroup
0020         onCheckedButtonChanged: {
0021             kcm.updatesSettings.useUnattendedUpdates = automaticallyRadio.checked
0022         }
0023     }
0024 
0025     QQC2.ButtonGroup {
0026         id: offlineUpdatesGroup
0027         onCheckedButtonChanged: {
0028             kcm.discoverSettings.useOfflineUpdates = offlineUpdatesOption.checked
0029         }
0030     }
0031 
0032     implicitWidth: Kirigami.Units.gridUnit * 38
0033     implicitHeight: Kirigami.Units.gridUnit * 35
0034 
0035 
0036     Kirigami.FormLayout {
0037         width: parent.width
0038 
0039         QQC2.RadioButton {
0040             Kirigami.FormData.label: i18n("Update software:")
0041             text: i18n("Manually")
0042 
0043             QQC2.ButtonGroup.group: autoUpdatesGroup
0044             checked: !kcm.updatesSettings.useUnattendedUpdates
0045         }
0046         RowLayout {
0047             spacing: Kirigami.Units.smallSpacing
0048 
0049             QQC2.RadioButton {
0050                 id: automaticallyRadio
0051                 text: i18n("Automatically")
0052 
0053                 QQC2.ButtonGroup.group: autoUpdatesGroup
0054                 checked: kcm.updatesSettings.useUnattendedUpdates
0055             }
0056 
0057             ContextualHelpButton {
0058                 toolTipText: xi18nc("@info", "Software updates will be downloaded automatically when they become available. Updates for applications will be installed immediately, while system updates will be installed the next time the computer is restarted.")
0059             }
0060         }
0061 
0062         SettingStateBinding {
0063             configObject: kcm.updatesSettings
0064             settingName: "useUnattendedUpdates"
0065             target: automaticallyRadio
0066         }
0067 
0068         QQC2.ComboBox {
0069             Kirigami.FormData.label: kcm.updatesSettings.useUnattendedUpdates ? i18nc("@title:group", "Update frequency:") : i18nc("@title:group", "Notification frequency:")
0070 
0071             readonly property var updatesFrequencyModel: [
0072                 i18nc("@item:inlistbox", "Daily"),
0073                 i18nc("@item:inlistbox", "Weekly"),
0074                 i18nc("@item:inlistbox", "Monthly"),
0075                 i18nc("@item:inlistbox", "Never")
0076             ]
0077 
0078             // Same as updatesFrequencyModel but without "Never"
0079             readonly property var unattendedUpdatesFrequencyModel: [
0080                 updatesFrequencyModel[0],
0081                 updatesFrequencyModel[1],
0082                 updatesFrequencyModel[2],
0083             ]
0084 
0085             model: kcm.updatesSettings.useUnattendedUpdates ? unattendedUpdatesFrequencyModel : updatesFrequencyModel
0086 
0087             readonly property var options: [
0088                 60 * 60 * 24,
0089                 60 * 60 * 24 * 7,
0090                 60 * 60 * 24 * 30,
0091                 -1
0092             ]
0093 
0094             currentIndex: {
0095                 let index = -1
0096                 for (const i in options) {
0097                     if (options[i] === kcm.updatesSettings.requiredNotificationInterval) {
0098                         index = i
0099                     }
0100                 }
0101                 return index
0102             }
0103             onActivated: index => {
0104                 kcm.updatesSettings.requiredNotificationInterval = options[index]
0105             }
0106             SettingStateProxy {
0107                 id: settingState
0108                 configObject: kcm.updatesSettings
0109                 settingName: "requiredNotificationInterval"
0110             }
0111         }
0112 
0113         Item {
0114             implicitHeight: Kirigami.Units.largeSpacing
0115         }
0116 
0117         ColumnLayout {
0118             spacing: 0
0119             Kirigami.FormData.label: i18n("Apply system updates:")
0120             Kirigami.FormData.buddyFor: offlineUpdatesOption
0121             visible: !kcm.isRpmOstree
0122             enabled: !kcm.discoverSettings.isUseOfflineUpdatesImmutable
0123 
0124             QQC2.RadioButton {
0125                 id: offlineUpdatesOption
0126                 text: i18nc("@option:radio part of the logical sentence 'Apply system updates after rebooting'", "After rebooting")
0127 
0128                 QQC2.ButtonGroup.group: offlineUpdatesGroup
0129                 checked: kcm.discoverSettings.useOfflineUpdates
0130             }
0131 
0132             QQC2.Label {
0133                 text: i18nc("@label The thing being recommended is to use the 'apply updates when rebooting' setting", "Recommended to maximize system stability")
0134                 leftPadding: offlineUpdatesOption.indicator.width
0135                 font: Kirigami.Theme.smallFont
0136             }
0137         }
0138 
0139         QQC2.RadioButton {
0140             text: i18nc("@option:radio part of the logical sentence 'Apply system updates immediately'", "Immediately")
0141 
0142             QQC2.ButtonGroup.group: offlineUpdatesGroup
0143             enabled: !kcm.discoverSettings.isUseOfflineUpdatesImmutable
0144             checked: !kcm.discoverSettings.useOfflineUpdates
0145         }
0146 
0147         SettingStateBinding {
0148             configObject: kcm.discoverSettings
0149             settingName: "useOfflineUpdates"
0150             target: offlineUpdatesOption
0151         }
0152     }
0153 }