view FeedEntryTableModel.py @ 181:1ab48428e2f9

sort the feed entries
author dirk
date Sat, 10 Sep 2011 09:05:14 +0200
parents a16c4e2b2c55
children bb3c851b18b1
line wrap: on
line source


from PyQt4.QtCore import QAbstractTableModel, QVariant, Qt

class TableModel(QAbstractTableModel):
    '''
    This is the abstract super class for table models in Python. It deals with the Qt specifics so
    that subclasses only need to care about implementing the functionality
    '''
    def __init__(self, *args):
        QAbstractTableModel.__init__(self, None, *args)

    def headerData(self, section, orientation, role):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            value = self.headerDataForColumn(section)
            return QVariant(value)
        else:
            return QVariant()

    def data(self, index, role):
        if not index.isValid():
            return QVariant()
        elif role != Qt.DisplayRole:
            return QVariant()
        else:
            value = self.dataForRowAndColumn(index.row(), index.column())
            return QVariant(value)


class FeedEntryTableModel(TableModel):
    def __init__(self, feedEntries, *args):
        TableModel.__init__(self, *args)
        self.feedEntries = feedEntries

    def rowCount(self, parent):
        return len(self.feedEntries)

    def columnCount(self, parent):
        return 2

    def dataForRowAndColumn(self, row, column):
        feedEntry = self.feedEntries[row]
        if column == 0:
            return feedEntry.title
        else:
            return str(feedEntry.updated)

    def headerDataForColumn(self, column):
        if column == 0:
            return "Title"
        else:
            return "Date"