|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2006 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the task filter configuration dialog. |
|
8 """ |
|
9 |
|
10 from PyQt6.QtWidgets import QDialog |
|
11 |
|
12 from .Task import TaskType, TaskPriority |
|
13 |
|
14 from .Ui_TaskFilterConfigDialog import Ui_TaskFilterConfigDialog |
|
15 |
|
16 |
|
17 class TaskFilterConfigDialog(QDialog, Ui_TaskFilterConfigDialog): |
|
18 """ |
|
19 Class implementing the task filter configuration dialog. |
|
20 """ |
|
21 def __init__(self, taskFilter, parent=None): |
|
22 """ |
|
23 Constructor |
|
24 |
|
25 @param taskFilter the task filter object to be configured |
|
26 @param parent the parent widget (QWidget) |
|
27 """ |
|
28 super().__init__(parent) |
|
29 self.setupUi(self) |
|
30 |
|
31 self.typeCombo.addItem("", TaskType.NONE) |
|
32 self.typeCombo.addItem(self.tr("Bugfix"), TaskType.FIXME) |
|
33 self.typeCombo.addItem(self.tr("Warning"), TaskType.WARNING) |
|
34 self.typeCombo.addItem(self.tr("ToDo"), TaskType.TODO) |
|
35 self.typeCombo.addItem(self.tr("Note"), TaskType.NOTE) |
|
36 self.typeCombo.addItem(self.tr("Test"), TaskType.TEST) |
|
37 self.typeCombo.addItem(self.tr("Documentation"), TaskType.DOCU) |
|
38 |
|
39 if ( |
|
40 taskFilter.summaryFilter is None or |
|
41 not taskFilter.summaryFilter.pattern |
|
42 ): |
|
43 self.summaryGroup.setChecked(False) |
|
44 self.summaryEdit.clear() |
|
45 else: |
|
46 self.summaryGroup.setChecked(True) |
|
47 self.summaryEdit.setText(taskFilter.summaryFilter.pattern) |
|
48 |
|
49 if not taskFilter.filenameFilter: |
|
50 self.filenameGroup.setChecked(False) |
|
51 self.filenameEdit.clear() |
|
52 else: |
|
53 self.filenameGroup.setChecked(True) |
|
54 self.filenameEdit.setText(taskFilter.filenameFilter) |
|
55 |
|
56 if taskFilter.typeFilter == TaskType.NONE: |
|
57 self.typeGroup.setChecked(False) |
|
58 self.typeCombo.setCurrentIndex(0) |
|
59 else: |
|
60 self.typeGroup.setChecked(True) |
|
61 self.typeCombo.setCurrentIndex( |
|
62 self.typeCombo.findData(taskFilter.typeFilter)) |
|
63 |
|
64 if taskFilter.scopeFilter is None: |
|
65 self.scopeGroup.setChecked(False) |
|
66 self.globalRadioButton.setChecked(True) |
|
67 else: |
|
68 self.scopeGroup.setChecked(True) |
|
69 if taskFilter.scopeFilter: |
|
70 self.projectRadioButton.setChecked(True) |
|
71 else: |
|
72 self.globalRadioButton.setChecked(True) |
|
73 |
|
74 if taskFilter.statusFilter is None: |
|
75 self.statusGroup.setChecked(False) |
|
76 self.uncompletedRadioButton.setChecked(True) |
|
77 else: |
|
78 self.statusGroup.setChecked(True) |
|
79 if taskFilter.statusFilter: |
|
80 self.completedRadioButton.setChecked(True) |
|
81 else: |
|
82 self.uncompletedRadioButton.setChecked(True) |
|
83 |
|
84 if taskFilter.prioritiesFilter is None: |
|
85 self.priorityGroup.setChecked(False) |
|
86 self.priorityHighCheckBox.setChecked(False) |
|
87 self.priorityNormalCheckBox.setChecked(False) |
|
88 self.priorityLowCheckBox.setChecked(False) |
|
89 else: |
|
90 self.priorityGroup.setChecked(True) |
|
91 self.priorityHighCheckBox.setChecked( |
|
92 TaskPriority.HIGH in taskFilter.prioritiesFilter) |
|
93 self.priorityNormalCheckBox.setChecked( |
|
94 TaskPriority.NORMAL in taskFilter.prioritiesFilter) |
|
95 self.priorityLowCheckBox.setChecked( |
|
96 TaskPriority.LOW in taskFilter.prioritiesFilter) |
|
97 |
|
98 msh = self.minimumSizeHint() |
|
99 self.resize(max(self.width(), msh.width()), msh.height()) |
|
100 |
|
101 def configureTaskFilter(self, taskFilter): |
|
102 """ |
|
103 Public method to set the parameters of the task filter object. |
|
104 |
|
105 @param taskFilter the task filter object to be configured |
|
106 """ |
|
107 if self.summaryGroup.isChecked(): |
|
108 taskFilter.setSummaryFilter(self.summaryEdit.text()) |
|
109 else: |
|
110 taskFilter.setSummaryFilter(None) |
|
111 |
|
112 if self.filenameGroup.isChecked(): |
|
113 taskFilter.setFileNameFilter(self.filenameEdit.text()) |
|
114 else: |
|
115 taskFilter.setFileNameFilter("") |
|
116 |
|
117 if self.typeGroup.isChecked(): |
|
118 taskFilter.setTypeFilter( |
|
119 TaskType( |
|
120 self.typeCombo.itemData(self.typeCombo.currentIndex()) |
|
121 ) |
|
122 ) |
|
123 else: |
|
124 taskFilter.setTypeFilter(TaskType.NONE) |
|
125 |
|
126 if self.scopeGroup.isChecked(): |
|
127 if self.projectRadioButton.isChecked(): |
|
128 taskFilter.setScopeFilter(True) |
|
129 else: |
|
130 taskFilter.setScopeFilter(False) |
|
131 else: |
|
132 taskFilter.setScopeFilter(None) |
|
133 |
|
134 if self.statusGroup.isChecked(): |
|
135 if self.completedRadioButton.isChecked(): |
|
136 taskFilter.setStatusFilter(True) |
|
137 else: |
|
138 taskFilter.setStatusFilter(False) |
|
139 else: |
|
140 taskFilter.setStatusFilter(None) |
|
141 |
|
142 if self.priorityGroup.isChecked(): |
|
143 priorities = [] |
|
144 if self.priorityHighCheckBox.isChecked(): |
|
145 priorities.append(TaskPriority.HIGH) |
|
146 if self.priorityNormalCheckBox.isChecked(): |
|
147 priorities.append(TaskPriority.NORMAL) |
|
148 if self.priorityLowCheckBox.isChecked(): |
|
149 priorities.append(TaskPriority.LOW) |
|
150 taskFilter.setPrioritiesFilter(priorities) |
|
151 else: |
|
152 taskFilter.setPrioritiesFilter(None) |