WebBrowser/Feeds/FeedsDialog.py

branch
QtWebEngine
changeset 4758
c973eef8fef1
parent 4631
5c1a96925da4
child 4761
9d077d20be75
equal deleted inserted replaced
4754:1ff6d0ecb2fd 4758:c973eef8fef1
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to add RSS feeds.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import QUrl
13 from PyQt5.QtWidgets import QDialog, QPushButton, QLabel
14
15 from E5Gui import E5MessageBox
16
17 from .Ui_FeedsDialog import Ui_FeedsDialog
18
19 import UI.PixmapCache
20
21
22 class FeedsDialog(QDialog, Ui_FeedsDialog):
23 """
24 Class implementing a dialog to add RSS feeds.
25 """
26 def __init__(self, availableFeeds, browser, parent=None):
27 """
28 Constructor
29
30 @param availableFeeds list of available RSS feeds (list of tuple of
31 two strings)
32 @param browser reference to the browser widget (WebBrowserView)
33 @param parent reference to the parent widget (QWidget)
34 """
35 super(FeedsDialog, self).__init__(parent)
36 self.setupUi(self)
37
38 self.iconLabel.setPixmap(UI.PixmapCache.getPixmap("rss48.png"))
39
40 self.__browser = browser
41
42 self.__availableFeeds = availableFeeds[:]
43 for row in range(len(self.__availableFeeds)):
44 feed = self.__availableFeeds[row]
45 button = QPushButton(self)
46 button.setText(self.tr("Add"))
47 button.feed = feed
48 label = QLabel(self)
49 label.setText(feed[0])
50 self.feedsLayout.addWidget(label, row, 0)
51 self.feedsLayout.addWidget(button, row, 1)
52 button.clicked.connect(self.__addFeed)
53
54 msh = self.minimumSizeHint()
55 self.resize(max(self.width(), msh.width()), msh.height())
56
57 def __addFeed(self):
58 """
59 Private slot to add a RSS feed.
60 """
61 button = self.sender()
62 urlString = button.feed[1]
63 url = QUrl(urlString)
64 if not url.host():
65 if not urlString.startswith("/"):
66 urlString = "/" + urlString
67 urlString = self.__browser.url().host() + urlString
68 tmpUrl = QUrl(urlString)
69 if not tmpUrl.scheme():
70 urlString = "http://" + urlString
71 tmpUrl = QUrl(urlString)
72 if not tmpUrl.scheme() or not tmpUrl.host():
73 return
74 if not url.isValid():
75 return
76
77 if button.feed[0]:
78 title = button.feed[0]
79 else:
80 title = self.__browser.url().host()
81
82 from WebBrowser.WebBrowserWindow import WebBrowserWindow
83 feedsManager = WebBrowserWindow.feedsManager()
84 if feedsManager.addFeed(urlString, title, self.__browser.icon()):
85 if WebBrowserWindow.notificationsEnabled():
86 WebBrowserWindow.showNotification(
87 UI.PixmapCache.getPixmap("rss48.png"),
88 self.tr("Add RSS Feed"),
89 self.tr("""The feed was added successfully."""))
90 else:
91 E5MessageBox.information(
92 self,
93 self.tr("Add RSS Feed"),
94 self.tr("""The feed was added successfully."""))
95 else:
96 E5MessageBox.warning(
97 self,
98 self.tr("Add RSS Feed"),
99 self.tr("""The feed was already added before."""))
100
101 self.close()

eric ide

mercurial