view FeedSettings.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 bca9341dc67f
children a2552f1e450e
line wrap: on
line source


from PyQt4 import QtGui
from Ui_FeedSettings import Ui_FeedSettings

class FeedSettings(QtGui.QDialog):
    """
    Copy all feed properties into the GUI on initialization. Collect all changes
    in a separate dict that's passed into the backend along with the feed to modify.
    """
    def __init__(self, backend):
        QtGui.QWidget.__init__(self, None)
        self.backend = backend
        self.feed = backend.selectedFeed
        self.changes = {}
        self.ui = Ui_FeedSettings()
        self.ui.setupUi(self)
        self.initUi()

    def initUi(self):
        self.ui.feedTitle.setText(self.feed.title)
        self.ui.updateInterval.setText(str(self.feed.update_interval))
        self.ui.autoLoadArticle.setChecked(self.feed.auto_load_entry_link)
        self.ui.alwaysOpenInBrowser.setChecked(self.feed.always_open_in_browser)

    def editingTitleFinished(self):
        title = str(self.ui.feedTitle.text())
        self.changes["title"] = title

    def editingUpdateIntervalFinished(self):
        updateInterval = int(str(self.ui.updateInterval.text()))
        self.changes["update_interval"] = updateInterval

    def autoLoadArticleChanged(self, change):
        if change:
            self.changes["auto_load_entry_link"] = True
        else:
            self.changes["auto_load_entry_link"] = False

    def alwaysOpenInExternalBrowser(self, change):
        if change:
            self.changes["always_open_in_browser"] = True
        else:
            self.changes["always_open_in_browser"] = False

    def accept(self):
        self.backend.updateFeed(self.feed, self.changes)
        QtGui.QDialog.accept(self)