eric6/WebBrowser/Feeds/FeedsDialog.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 - 2019 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(lambda: self.__addFeed(button))
53
54 msh = self.minimumSizeHint()
55 self.resize(max(self.width(), msh.width()), msh.height())
56
57 def __addFeed(self, button):
58 """
59 Private slot to add a RSS feed.
60
61 @param button reference to the feed button
62 @type QPushButton
63 """
64 urlString = button.feed[1]
65 url = QUrl(urlString)
66 if url.isRelative():
67 url = self.__browser.url().resolved(url)
68 urlString = url.toDisplayString(QUrl.FullyDecoded)
69
70 if not url.isValid():
71 return
72
73 if button.feed[0]:
74 title = button.feed[0]
75 else:
76 title = self.__browser.url().host()
77
78 from WebBrowser.WebBrowserWindow import WebBrowserWindow
79 feedsManager = WebBrowserWindow.feedsManager()
80 if feedsManager.addFeed(urlString, title, self.__browser.icon()):
81 if WebBrowserWindow.notificationsEnabled():
82 WebBrowserWindow.showNotification(
83 UI.PixmapCache.getPixmap("rss48.png"),
84 self.tr("Add RSS Feed"),
85 self.tr("""The feed was added successfully."""))
86 else:
87 E5MessageBox.information(
88 self,
89 self.tr("Add RSS Feed"),
90 self.tr("""The feed was added successfully."""))
91 else:
92 E5MessageBox.warning(
93 self,
94 self.tr("Add RSS Feed"),
95 self.tr("""The feed was already added before."""))
96
97 self.close()

eric ide

mercurial