Add message filtering by priority and subject, with CRITICAL always visible

- Implement MessagesProxyModel for client-side filtering
- Add priority filter buttons (LOW 0-3, NORMAL 4-8, HIGH 9, CRITICAL 10 always shown)
- Add subject filter menu with checkable actions for message titles
- Add Remove Filters button to reset all filters
- Restore priority 10 persistent notification setting in options
- Fix settings dialog errors and update UI layouts
- Ensure CRITICAL priority messages cannot be filtered out but can toggle persistent pop-ups
This commit is contained in:
kdusek
2025-12-01 18:02:05 +01:00
parent 09f85c5902
commit 4c3b6925e5
11 changed files with 422 additions and 221 deletions

View File

@@ -88,10 +88,107 @@
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QListView" name="listView_messages">
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="filtersLayout">
<item>
<widget class="QLabel" name="label_priority">
<property name="text">
<string>Priority:</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_low">
<property name="text">
<string>LOW</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_normal">
<property name="text">
<string>NORMAL</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_high">
<property name="text">
<string>HIGH</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_critical">
<property name="text">
<string>CRITICAL</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_subject">
<property name="text">
<string>Subject:</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_subject">
<property name="text">
<string>Subject</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_remove_filters">
<property name="text">
<string>Remove Filters</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QListView" name="listView_messages">
<property name="autoScroll">
<bool>true</bool>
</property>