+class DepartureModel(QAbstractListModel):
+ LINE_ROLE = Qt.UserRole + 1
+ DIRECTION_ROLE = Qt.UserRole + 2
+ STATION_ROLE = Qt.UserRole + 3
+ TIME_ROLE = Qt.UserRole + 4
+ LOWFLOOR_ROLE = Qt.UserRole + 5
+
+ def __init__(self, parent=None):
+ super(DepartureModel, self).__init__(parent)
+ self._data = []
+
+ self.keys = {}
+ self.keys[DepartureModel.LINE_ROLE] = 'line'
+ self.keys[DepartureModel.DIRECTION_ROLE] = 'direction'
+ self.keys[DepartureModel.STATION_ROLE] = 'station'
+ self.keys[DepartureModel.TIME_ROLE] = 'time'
+ self.keys[DepartureModel.LOWFLOOR_ROLE] = 'lowfloor'
+ self.setRoleNames(self.keys)
+
+ def rowCount(self, index):
+ return len(self._data)
+
+ def data(self, index, role):
+ if not index.isValid():
+ return None
+
+ if index.row() > len(self._data):
+ return None
+
+ departure = self._data[index.row()]
+
+ if self.keys.has_key(role):
+ return departure[self.keys[role]]
+ else:
+ return None
+
+ def setDepartures(self, dep):
+ self.beginResetModel()
+ self._data = dep
+ self.endResetModel()
+