Implement adding new custom push rules
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -68,8 +68,10 @@ HListView {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    section.property: "kind"
 | 
			
		||||
    section.delegate: HLabel {
 | 
			
		||||
    section.delegate: HRowLayout {
 | 
			
		||||
        width: root.width
 | 
			
		||||
 | 
			
		||||
        HLabel {
 | 
			
		||||
            padding: theme.spacing
 | 
			
		||||
            font.pixelSize: theme.fontSize.big
 | 
			
		||||
            text:
 | 
			
		||||
@@ -78,6 +80,38 @@ HListView {
 | 
			
		||||
                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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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") :
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								src/icons/thin/pushrule-add.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/icons/thin/pushrule-add.svg
									
									
									
									
									
										Normal 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  | 
		Reference in New Issue
	
	Block a user