view DisplayModel.py @ 155:a05719a6175e

move common functionality into an abstract backend class, have both backends inherit from it. Implement enough of the couchdb backend that reading feeds (and marking feed entries as read) is possible
author Dirk Olmes <dirk@xanthippe.ping.de>
date Sat, 27 Aug 2011 08:52:03 +0200
parents c5a427d46703
children bb3c851b18b1
line wrap: on
line source


from PyQt4.QtCore import QAbstractListModel, QModelIndex, QVariant, Qt

class DisplayModel(QAbstractListModel):
    def __init__(self, parent=None, list=None, displayAttribute=None, **args):
        QAbstractListModel.__init__(self, parent, *args)
        self.list = list
        self.displayAttribute = displayAttribute

    def rowCount(self, parent=QModelIndex()):
        return len(self.list)

    def data(self, index, role):
        if index.isValid() and role == Qt.DisplayRole:
            row = index.row()
            item = self.list[row]
            displayString = self._stringToDisplay(item)
            return QVariant(displayString)
        else:
            return QVariant()

    def _stringToDisplay(self, item):
        if hasattr(item, self.displayAttribute):
            return getattr(item, self.displayAttribute)
        else:
            return "invalid display attribute: " + self.displayAttribute