from qt import * from StatusBarDialog import StatusBarDialog from AlertListViewItem import AlertListViewItem from AlertDetailDialog import AlertDetailDialog class AlertListView(QListView): def __init__(self, parent, interface): QListView.__init__(self, parent) for name in "Classification", "Source", "Target", "Sensor", "Time": self.addColumn(name) self.setResizeMode(QListView.AllColumns) self.setAllColumnsShowFocus(True) #self.setItemMargin(5) self.items = [ ] self.interface = interface self.filterValue = None self.filterCol = None self.connect(self, SIGNAL("doubleClicked(QListViewItem *)"), self.itemSelected) def setFilter(self, filterValue, filterCol): self.filterValue = filterValue self.filterCol = filterCol return self.applyFilter() def applyFilter(self): count = 0 for item in self.items: count += item.applyFilter(self.filterValue, self.filterCol) return count def deleteItems(self): for item in self.items: self.takeItem(item) self.items = [ ] def itemSelected(self, item): alert = self.interface.db.getAlert(item.analyzerid, item.alertIdent) alertDetail = AlertDetailDialog(self, alert) alertDetail.show() def updateAlerts(self, alertIdentList): self.deleteItems() alertCount = len(alertIdentList) status = StatusBarDialog(self, title="Fetching alerts", message="Retrieving alert ident list", cancelText="stop", steps=alertCount) alertListView = [ ] fetched = 0 for analyzerid, ident in alertIdentList: alertListView.append(self.interface.db.getAlert(analyzerid, ident)) fetched += 1 self.interface.app.processEvents() status.update("alert %d/%d fetched" % (fetched, alertCount)) if status.wasCancelled(): status.reject() break shown = 0 prev = None alertListView.reverse() for alert in alertListView: item = AlertListViewItem(self, prev) prev = item self.items.append(item) item.setAlert(alert) shown += item.applyFilter(self.filterValue, self.filterCol) return (fetched, shown)