|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing a dialog to add RSS feeds. |
|
8 """ |
|
9 |
|
10 from PyQt4.QtCore import QUrl |
|
11 from PyQt4.QtGui import QDialog, QPushButton, QLabel |
|
12 |
|
13 from E5Gui import E5MessageBox |
|
14 |
|
15 from .Ui_FeedsDialog import Ui_FeedsDialog |
|
16 |
|
17 import UI.PixmapCache |
|
18 |
|
19 import Helpviewer.HelpWindow |
|
20 |
|
21 |
|
22 class FeedsDialog(QDialog, Ui_FeedsDialog): |
|
23 """ |
|
24 Class documentation goes here. |
|
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 two strings) |
|
31 @param browser reference to the browser widget (HelpBrowser) |
|
32 @param parent reference to the parent widget (QWidget) |
|
33 """ |
|
34 super().__init__(parent) |
|
35 self.setupUi(self) |
|
36 |
|
37 self.iconLabel.setPixmap(UI.PixmapCache.getPixmap("rss48.png")) |
|
38 |
|
39 self.__browser = browser |
|
40 |
|
41 self.__availableFeeds = availableFeeds[:] |
|
42 for row in range(len(self.__availableFeeds)): |
|
43 feed = self.__availableFeeds[row] |
|
44 button = QPushButton(self) |
|
45 button.setText(self.trUtf8("Add")) |
|
46 button.feed = feed |
|
47 label = QLabel(self) |
|
48 label.setText(feed[0]) |
|
49 self.feedsLayout.addWidget(label, row, 0) |
|
50 self.feedsLayout.addWidget(button, row, 1) |
|
51 button.clicked[()].connect(self.__addFeed) |
|
52 |
|
53 def __addFeed(self): |
|
54 """ |
|
55 Private slot to add a RSS feed. |
|
56 """ |
|
57 button = self.sender() |
|
58 urlString = button.feed[1] |
|
59 url = QUrl(urlString) |
|
60 if not url.host(): |
|
61 if not urlString.startswith("/"): |
|
62 urlString = "/" + urlString |
|
63 urlString = self.__browser.url().host() + urlString |
|
64 tmpUrl = QUrl(urlString) |
|
65 if not tmpUrl.scheme(): |
|
66 urlString = "http://" + urlString |
|
67 tmpUrl = QUrl(urlString) |
|
68 if not tmpUrl.scheme() or not tmpUrl.host(): |
|
69 return |
|
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 feedsManager = Helpviewer.HelpWindow.HelpWindow.feedsManager() |
|
79 if feedsManager.addFeed(urlString, title, self.__browser.icon()): |
|
80 E5MessageBox.information(self, |
|
81 self.trUtf8("Add RSS Feed"), |
|
82 self.trUtf8("""The feed was added successfully.""")) |
|
83 else: |
|
84 E5MessageBox.warning(self, |
|
85 self.trUtf8("Add RSS Feed"), |
|
86 self.trUtf8("""The feed was already added before.""")) |
|
87 |
|
88 self.close() |