from cgi import escape
from re import sub
-class FeedWrapper(QtCore.QObject):
- def __init__(self, key):
- QtCore.QObject.__init__(self)
- self._key = key
- def _name(self):
- return listing.getFeedTitle(self._key)
- def _unread(self):
- return listing.getFeedNumberOfUnreadItems(self._key)
- def _updatedDate(self):
- return listing.getFeedUpdateTime(self._key)
- def _icon(self):
- return listing.getFavicon(self._key)
- def _feedid(self):
- return self._key
- def _updating(self):
- return false
-
- changed = QtCore.Signal()
-
- title = QtCore.Property(unicode, _name, notify=changed)
- feedid = QtCore.Property(unicode, _feedid, notify=changed)
- unread = QtCore.Property(unicode, _unread, notify=changed)
- updatedDate= QtCore.Property(unicode, _updatedDate, notify=changed)
- icon = QtCore.Property(unicode, _icon, notify=changed)
- updating = QtCore.Property(unicode, _icon, notify=changed)
-
-class FeedsModel(QtCore.QAbstractListModel):
- COLUMNS = ('feed', )
- _category = None
-
- def __init__(self):
- QtCore.QAbstractListModel.__init__(self)
- self._feeds = listing.getListOfFeeds(self._category)
- self.setRoleNames(dict(enumerate(FeedsModel.COLUMNS)))
-
- def rowCount(self, parent=QtCore.QModelIndex()):
- return len(self._feeds)
-
- def data(self, index, role):
- if index.isValid() and role == FeedsModel.COLUMNS.index('feed'):
- print self._feeds[index.row()]
- return FeedWrapper(self._feeds[index.row()])
- return None
-
-class ArticleWrapper(QtCore.QObject):
- def __init__(self, feed, articleid):
- QtCore.QObject.__init__(self)
- self._feed = feed
- self._articleid = articleid
- def _name(self):
- return self.fix_title(self._feed.getTitle(self._articleid))
- def _unread(self):
- return str(self._feed.isEntryRead(self._articleid))
- def _getarticleid(self):
- return self._articleid
- def _updatedDate(self):
- return self._feed.getDateStamp(self._articleid)
- def _path(self):
- return self._feed.getContentLink(self._articleid)
-
- changed = QtCore.Signal()
-
- title = QtCore.Property(unicode, _name, notify=changed)
- articleid = QtCore.Property(unicode, _getarticleid, notify=changed)
- unread = QtCore.Property(unicode, _unread, notify=changed)
- updatedDate= QtCore.Property(unicode, _updatedDate, notify=changed)
- path = QtCore.Property(unicode, _path, notify=changed)
-
-class ArticlesModel(QtCore.QAbstractListModel):
- COLUMNS = ('article', )
- _articles = []
- _key = None
- _feed = None
-
- def __init__(self,):
- QtCore.QAbstractListModel.__init__(self)
- self.setRoleNames(dict(enumerate(ArticlesModel.COLUMNS)))
-
- def updateModel(self, key):
- self._key = key
- self._feed = listing.getFeed(self._key)
- self._articles = self._feed.getIds()
-
- def rowCount(self, parent=QtCore.QModelIndex()):
- print "art " + str(len(self._articles))
- return len(self._articles)
-
- def data(self, index, role):
- print "data" + str(index) + " " + str(role)
- if index.isValid() and role == ArticlesModel.COLUMNS.index('article'):
- return ArticleWrapper(self._articles[index.row()])
- return None
-
class Controller(QtCore.QObject):
def __init__(self, listing):
@QtCore.Slot(str, result=str)
def getFeedsXml(self, catid):
+ print self._handler.generateFeedsXml(catid)
return self._handler.generateFeedsXml(catid)
@QtCore.Slot(str,result=str)
@QtCore.Slot(str)
def updateFeed(self, key):
- print 'updating feed ', key
listing.updateFeed(key)
@QtCore.Slot()
app = QtGui.QApplication(sys.argv)
view = QtDeclarative.QDeclarativeView()
- global articlesModel
- feedsModel = FeedsModel()
- articlesModel = ArticlesModel()
-
controller = Controller(listing)
rc = view.rootContext()
rc.setContextProperty('controller', controller)
- rc.setContextProperty('feedsModel', feedsModel)
- rc.setContextProperty('articlesModel', articlesModel)
# Comment the two lines below if you don't want to use OpenGL for QML rendering or if it is not supported
- glw = QtOpenGL.QGLWidget()
- view.setViewport(glw)
+ #glw = QtOpenGL.QGLWidget()
+ #view.setViewport(glw)
if os.path.exists('/usr/share/feedingit/qml'):
+ glw = QtOpenGL.QGLWidget()
+ view.setViewport(glw)
view.setSource('/usr/share/feedingit/qml/main.qml')
+ view.showFullScreen()
else:
- #view.setSource(os.path.join('qml','main.qml'))
- view.setSource(os.path.join('qml','FeedingIt.qml'))
+ view.setSource(os.path.join('qml','main.qml'))
+ view.show()
+ #view.setSource(os.path.join('qml','FeedingIt.qml'))
#view.showFullScreen()
- view.show()
+ #view.show()
sys.exit(app.exec_())
if __name__ == "__main__":