view MainWindow.py @ 31:5bb57caa8f66

display a feed's entries sorted by their update date
author Dirk Olmes <dirk@xanthippe.ping.de>
date Fri, 30 Apr 2010 06:01:54 +0200
parents bdd1296a4b8c
children f371d02fa09d
line wrap: on
line source


from AddFeed import AddFeed
from DisplayModel import DisplayModel
from Feed import Feed
from FeedEntry import FeedEntry
from PyQt4 import QtGui
from PyQt4.QtCore import QUrl
from PyQt4.QtGui import QFont
from Ui_MainWindow import Ui_MainWindow
import FeedUpdater

class MainWindow(QtGui.QMainWindow):
    def __init__(self, session=None):
        QtGui.QWidget.__init__(self, None)
        self.session = session
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.updateFeedList()
        self.initFeedEntryList()
        
    def updateFeedList(self):        
        self.allFeeds = Feed.all(self.session)
        feedModel = DisplayModel(self, self.allFeeds, Feed.userPresentableString)
        self.ui.feedList.setModel(feedModel)
        self.ui.feedList.update()

    def initFeedEntryList(self):
        pass
#        self.ui.feedEntryList.setItemDelegate()
        #        self.ui.feedList.setItemDelegate(CustomItemDelegate(self))

    def feedSelected(self, index):
        self.selectedFeed = self.allFeeds[index.row()]
        sortedEntries = self.selectedFeed.entriesSortedByUpdateDate()
        model = DisplayModel(self, sortedEntries, FeedEntry.userPresentableString)
        self.ui.feedEntryList.setModel(model)
        self.ui.feedEntryList.update()
        
    def feedEntrySelected(self, index):
        row = index.row()
        entry = self.selectedFeed.entries[row]
        baseUrl = QUrl(entry.link) # TODO this is the wrong base url, figure out the correct one
        self.ui.webView.setHtml(entry.summary, baseUrl)
    
    def addFeed(self):
        addFeed = AddFeed(self.session)
        success = addFeed.exec_()
        if success:
            url = addFeed.getUrl()
            FeedUpdater.createNewFeed(url, self.session)
            # TODO get status from feedUpdater and display in status area of the main window
            self.updateFeedList()

class CustomItemDelegate(QtGui.QStyledItemDelegate):
    def __init__(self, parent):
        print("init")
        QtGui.QStyledItemDelegate.__init__(self, parent)
    
    def paint(self, painter, style, index):
        style.font.setWeight(QFont.Bold)
        QtGui.QStyledItemDelegate.paint(self, painter, style, index)