Implement adding new custom push rules

This commit is contained in:
miruka 2021-02-23 08:12:38 -04:00
parent 5b296ed6be
commit f466fe9f08
5 changed files with 52 additions and 13 deletions

View File

@ -3,7 +3,6 @@
- combo box custom item
- explain pattern
- fix spinbox buttons
- way to add new rule
- quick room & sender rule changes
- config & keybind for global rule disabling
- quick settings

View File

@ -1822,8 +1822,8 @@ class MatrixClient(nio.AsyncClient):
if None not in key:
old = self.models[self.user_id, "pushrules"].get(key)
kind_change = old_kind is not None and old_kind != kind
rule_id_change = old_rule_id is not None and old_rule_id != rule_id
kind_change = old and old_kind and old_kind != kind
rule_id_change = old and old_rule_id and old_rule_id != rule_id
explicit_move = move_before_rule_id or move_after_rule_id
if old and not kind_change and not explicit_move:
@ -1841,7 +1841,7 @@ class MatrixClient(nio.AsyncClient):
rule_id = rule_id,
before = move_before_rule_id,
after = move_after_rule_id,
actions = actions,
actions = actions or [],
conditions = conditions,
pattern = pattern,
)

View File

@ -68,16 +68,50 @@ HListView {
}
section.property: "kind"
section.delegate: HLabel {
section.delegate: HRowLayout {
width: root.width
padding: theme.spacing
font.pixelSize: theme.fontSize.big
text:
section === "override" ? qsTr("High priority general rules") :
section === "content" ? qsTr("Message content rules") :
section === "room" ? qsTr("Room rules") :
section === "sender" ? qsTr("Sender rules") :
qsTr("Low priority general rules")
HLabel {
padding: theme.spacing
font.pixelSize: theme.fontSize.big
text:
section === "override" ? qsTr("High priority general rules") :
section === "content" ? qsTr("Message content rules") :
section === "room" ? qsTr("Room rules") :
section === "sender" ? qsTr("Sender rules") :
qsTr("Low priority general rules")
Layout.fillWidth: true
}
PositiveButton {
readonly property var newRule: ({
id: '[section, ""]',
kind: section,
rule_id: "",
order: 0,
default: false,
enabled: true,
conditions: "[]",
pattern: "",
actions: "[]",
notify: false,
highlight: false,
bubble: false,
sound: false,
urgency_hint: false,
})
backgroundColor: "transparent"
icon.name: "pushrule-add"
iconItem.small: true
Layout.fillHeight: true
Layout.fillWidth: false
onClicked: window.makePopup(
"Popups/PushRuleSettingsPopup/PushRuleSettingsPopup.qml",
{userId: root.userId, rule: newRule, ruleExists: false},
)
}
}
delegate: NotificationRuleDelegate {

View File

@ -15,6 +15,7 @@ HFlickableColumnPopup {
property string userId
// A rule item from ModelStore.get(userId, "pushrules")
property var rule
property bool ruleExists: true
readonly property bool generalChecked:
overrideRadio.checked || underrideRadio.checked
@ -184,6 +185,7 @@ HFlickableColumnPopup {
)
readonly property bool isCurrent:
root.ruleExists &&
model.length &&
currentIndex === currentPosition &&
root.rule.kind === root.checkedKind
@ -226,6 +228,7 @@ HFlickableColumnPopup {
label.textFormat: HLabel.StyledText
text:
root.ruleExists &&
model.index === positionCombo.currentPosition &&
root.rule.kind === root.checkedKind ?
qsTr("Current") :

View File

@ -0,0 +1,3 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="m24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z"/>
</svg>

After

Width:  |  Height:  |  Size: 150 B