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.
139 lines
4.8 KiB
139 lines
4.8 KiB
/* |
|
SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> |
|
|
|
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL |
|
*/ |
|
|
|
import QtQuick 2.9 |
|
import QtQml.Models 2.2 |
|
import QtQuick.Layouts 1.1 |
|
import QtQuick.Controls 2.3 as QtControls |
|
|
|
import org.kde.kirigami 2.7 as Kirigami |
|
import org.kde.kcm 1.3 as KCM |
|
|
|
import org.kde.notificationmanager 1.0 as NotificationManager |
|
|
|
import org.kde.private.kcms.notifications 1.0 as Private |
|
|
|
ColumnLayout { |
|
id: configColumn |
|
|
|
property var rootIndex |
|
property var behaviorSettings: rootIndex ? kcm.behaviorSettings(rootIndex) : null |
|
|
|
readonly property string otherAppsId: "@other" |
|
|
|
readonly property string appDisplayName: rootIndex ? kcm.sourcesModel.data(rootIndex, Qt.DisplayRole) || "" : "" |
|
readonly property string appIconName: rootIndex ? kcm.sourcesModel.data(rootIndex, Qt.DecorationRole) || "" : "" |
|
readonly property string desktopEntry: rootIndex ? kcm.sourcesModel.data(rootIndex, Private.SourcesModel.DesktopEntryRole) || "" : "" |
|
readonly property string notifyRcName: rootIndex ? kcm.sourcesModel.data(rootIndex, Private.SourcesModel.NotifyRcNameRole) || "" : "" |
|
|
|
readonly property bool isOtherApp: configColumn.desktopEntry === configColumn.otherAppsId |
|
|
|
function configureEvents(eventId) { |
|
kcm.configureEvents(configColumn.notifyRcName, eventId, this) |
|
} |
|
|
|
spacing: Kirigami.Units.smallSpacing |
|
|
|
Kirigami.FormLayout { |
|
id: form |
|
|
|
RowLayout { |
|
Kirigami.FormData.isSection: true |
|
spacing: Kirigami.Units.smallSpacing |
|
|
|
Kirigami.Icon { |
|
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium |
|
Layout.preferredHeight: Kirigami.Units.iconSizes.smallMedium |
|
source: configColumn.appIconName |
|
} |
|
|
|
Kirigami.Heading { |
|
level: 2 |
|
text: configColumn.appDisplayName |
|
elide: Text.ElideRight |
|
textFormat: Text.PlainText |
|
} |
|
} |
|
|
|
QtControls.CheckBox { |
|
id: showPopupsCheck |
|
text: i18n("Show popups") |
|
checked: !!behaviorSettings && behaviorSettings.showPopups |
|
onClicked: behaviorSettings.showPopups = checked |
|
|
|
KCM.SettingStateBinding { |
|
configObject: behaviorSettings |
|
settingName: "ShowPopups" |
|
} |
|
} |
|
|
|
RowLayout { // just for indentation |
|
QtControls.CheckBox { |
|
Layout.leftMargin: mirrored ? 0 : indicator.width |
|
Layout.rightMargin: mirrored ? indicator.width : 0 |
|
text: i18n("Show in do not disturb mode") |
|
checked: !!behaviorSettings && behaviorSettings.showPopupsInDndMode |
|
onClicked: behaviorSettings.showPopupsInDndMode = checked |
|
|
|
KCM.SettingStateBinding { |
|
configObject: behaviorSettings |
|
settingName: "ShowPopupsInDndMode" |
|
extraEnabledConditions: showPopupsCheck.checked |
|
} |
|
} |
|
} |
|
|
|
QtControls.CheckBox { |
|
text: i18n("Show in history") |
|
checked: !!behaviorSettings && behaviorSettings.showInHistory |
|
onClicked: behaviorSettings.showInHistory = checked |
|
|
|
KCM.SettingStateBinding { |
|
configObject: behaviorSettings |
|
settingName: "ShowInHistory" |
|
} |
|
} |
|
|
|
QtControls.CheckBox { |
|
text: i18n("Show notification badges") |
|
checked: !!behaviorSettings && behaviorSettings.showBadges |
|
onClicked: behaviorSettings.showBadges = checked |
|
|
|
KCM.SettingStateBinding { |
|
configObject: behaviorSettings |
|
settingName: "ShowBadges" |
|
extraEnabledConditions: !!configColumn.desktopEntry && configColumn.desktopEntry !== configColumn.otherAppsId |
|
} |
|
} |
|
|
|
Kirigami.Separator { |
|
Kirigami.FormData.isSection: true |
|
visible: configureEventsButton.visible || noEventsLabel.visible |
|
} |
|
|
|
QtControls.Button { |
|
id: configureEventsButton |
|
text: i18n("Configure Events…") |
|
icon.name: "preferences-desktop-notification" |
|
visible: !!configColumn.notifyRcName |
|
onClicked: configColumn.configureEvents() |
|
} |
|
} |
|
|
|
QtControls.Label { |
|
id: noEventsLabel |
|
Layout.alignment: Qt.AlignHCenter |
|
Layout.preferredWidth: form.implicitWidth |
|
text: i18n("This application does not support configuring notifications on a per-event basis."); |
|
wrapMode: Text.WordWrap |
|
visible: !configColumn.notifyRcName && !configColumn.isOtherApp |
|
} |
|
|
|
// compact layout |
|
Item { |
|
Layout.fillHeight: true |
|
} |
|
}
|
|
|