23 @param parent reference to the parent object (QObject) |
23 @param parent reference to the parent object (QObject) |
24 """ |
24 """ |
25 QAbstractItemModel.__init__(self, parent) |
25 QAbstractItemModel.__init__(self, parent) |
26 |
26 |
27 self.__manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
27 self.__manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
28 self.connect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) |
28 self.__manager.rulesChanged.connect(self.__rulesChanged) |
29 |
29 |
30 def __rulesChanged(self): |
30 def __rulesChanged(self): |
31 """ |
31 """ |
32 Private slot to handle changes in rules. |
32 Private slot to handle changes in rules. |
33 """ |
33 """ |
228 """ |
228 """ |
229 if row < 0 or count <= 0 or row + count > self.rowCount(parent): |
229 if row < 0 or count <= 0 or row + count > self.rowCount(parent): |
230 return False |
230 return False |
231 |
231 |
232 if not parent.isValid(): |
232 if not parent.isValid(): |
233 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), |
233 self.__manager.rulesChanged.disconnect(self.__rulesChanged) |
234 self.__rulesChanged) |
|
235 self.beginRemoveRows(QModelIndex(), row, row + count - 1) |
234 self.beginRemoveRows(QModelIndex(), row, row + count - 1) |
236 for subscription in self.__manager.subscriptions()[row:row + count]: |
235 for subscription in self.__manager.subscriptions()[row:row + count]: |
237 self.__manager.removeSubscription(subscription) |
236 self.__manager.removeSubscription(subscription) |
238 self.endRemoveRows() |
237 self.endRemoveRows() |
239 self.connect(self.__manager, SIGNAL("rulesChanged()"), |
238 self.__manager.rulesChanged.connect(self.__rulesChanged) |
240 self.__rulesChanged) |
|
241 return True |
239 return True |
242 else: |
240 else: |
243 sub = self.subscription(parent) |
241 sub = self.subscription(parent) |
244 if sub is not None: |
242 if sub is not None: |
245 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), |
243 self.__manager.rulesChanged.disconnect(self.__rulesChanged) |
246 self.__rulesChanged) |
|
247 self.beginRemoveRows(parent, row, row + count - 1) |
244 self.beginRemoveRows(parent, row, row + count - 1) |
248 for i in reversed(list(range(row, row + count))): |
245 for i in reversed(list(range(row, row + count))): |
249 sub.removeRule(i) |
246 sub.removeRule(i) |
250 self.endRemoveRows() |
247 self.endRemoveRows() |
251 self.connect(self.__manager, SIGNAL("rulesChanged()"), |
248 self.__manager.rulesChanged.connect(self.__rulesChanged) |
252 self.__rulesChanged) |
|
253 return True |
249 return True |
254 |
250 |
255 return False |
251 return False |
256 |
252 |
257 def setData(self, index, value, role = Qt.EditRole): |
253 def setData(self, index, value, role = Qt.EditRole): |
267 index.model() != self or \ |
263 index.model() != self or \ |
268 index.column() != 0 or \ |
264 index.column() != 0 or \ |
269 (self.flags(index) & Qt.ItemIsEditable) == 0: |
265 (self.flags(index) & Qt.ItemIsEditable) == 0: |
270 return False |
266 return False |
271 |
267 |
272 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) |
268 self.__manager.rulesChanged.disconnect(self.__rulesChanged) |
273 changed = False |
269 changed = False |
274 |
270 |
275 if role in [Qt.EditRole, Qt.DisplayRole]: |
271 if role in [Qt.EditRole, Qt.DisplayRole]: |
276 if index.parent().isValid(): |
272 if index.parent().isValid(): |
277 sub = self.subscription(index.parent()) |
273 sub = self.subscription(index.parent()) |
278 if sub is not None: |
274 if sub is not None: |
279 r = self.rule(index) |
275 r = self.rule(index) |
280 r.setFilter(value) |
276 r.setFilter(value) |
281 sub.replaceRule(r, index.row()) |
277 sub.replaceRule(r, index.row()) |
282 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), |
278 self.dataChanged.emit(index, index) |
283 index, index) |
|
284 changed = True |
279 changed = True |
285 else: |
280 else: |
286 sub = self.subscription(index) |
281 sub = self.subscription(index) |
287 if sub is not None: |
282 if sub is not None: |
288 sub.setTitle(value) |
283 sub.setTitle(value) |
289 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), |
284 self.dataChanged.emit(index, index) |
290 index, index) |
|
291 changed = True |
285 changed = True |
292 |
286 |
293 elif role == Qt.CheckStateRole: |
287 elif role == Qt.CheckStateRole: |
294 if index.parent().isValid(): |
288 if index.parent().isValid(): |
295 sub = self.subscription(index.parent()) |
289 sub = self.subscription(index.parent()) |
296 if sub is not None: |
290 if sub is not None: |
297 r = self.rule(index) |
291 r = self.rule(index) |
298 r.setEnabled(value == Qt.Checked) |
292 r.setEnabled(value == Qt.Checked) |
299 sub.replaceRule(r, index.row()) |
293 sub.replaceRule(r, index.row()) |
300 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), |
294 self.dataChanged.emit(index, index) |
301 index, index) |
|
302 changed = True |
295 changed = True |
303 else: |
296 else: |
304 sub = self.subscription(index) |
297 sub = self.subscription(index) |
305 if sub is not None: |
298 if sub is not None: |
306 sub.setEnabled(value == Qt.Checked) |
299 sub.setEnabled(value == Qt.Checked) |
307 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), |
300 self.dataChanged.emit(index, index) |
308 index, index) |
|
309 changed = True |
301 changed = True |
310 |
302 |
311 self.connect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) |
303 self.__manager.rulesChanged.connect(self.__rulesChanged) |
312 return changed |
304 return changed |
313 |
305 |
314 def hasChildren(self, parent = QModelIndex()): |
306 def hasChildren(self, parent = QModelIndex()): |
315 """ |
307 """ |
316 Public method to check, if a parent node has some children. |
308 Public method to check, if a parent node has some children. |