From aa83f23848af4a1d35df6dfb9a63c961f48cbaf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Sun, 12 Jan 2014 17:47:59 +0100 Subject: [PATCH] [RSSWidget] Ability to mark feeds already added --- src/lib/rss/rsswidget.cpp | 32 ++++++++++++++++++++++++++++++-- src/lib/rss/rsswidget.h | 1 + 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/lib/rss/rsswidget.cpp b/src/lib/rss/rsswidget.cpp index bc606c5a5..84d8479e5 100644 --- a/src/lib/rss/rsswidget.cpp +++ b/src/lib/rss/rsswidget.cpp @@ -26,6 +26,7 @@ #include #include #include +#include RSSWidget::RSSWidget(WebView* view, QWidget* parent) : LocationBarPopup(parent) @@ -58,10 +59,18 @@ RSSWidget::RSSWidget(WebView* view, QWidget* parent) button->setIcon(QIcon(":icons/other/feed.png")); button->setStyleSheet("text-align:left"); button->setText(title); - button->setToolTip(url.toString()); button->setProperty("rss-url", url); button->setProperty("rss-title", title); - button->setFlat(true); // setFlat( rss.exists ? true : false ); + + if (!isRssFeedAlreadyStored(url)) { + button->setFlat(true); + button->setToolTip(url.toString()); + } + else { + button->setFlat(false); + button->setEnabled(false); + button->setToolTip(tr("You already have this feed.")); + } int pos = i % cols > 0 ? (i % cols) * 2 : 0; @@ -101,6 +110,25 @@ void RSSWidget::addRss() } } +bool RSSWidget::isRssFeedAlreadyStored(const QUrl &url) +{ + QUrl rurl = url; + + if (url.isRelative()) { + rurl = m_view->page()->mainFrame()->baseUrl().resolved(url); + } + + if (rurl.isEmpty()) { + return false; + } + QSqlQuery query; + query.prepare("SELECT id FROM rss WHERE address=?"); + query.addBindValue(rurl); + query.exec(); + + return query.next(); +} + RSSWidget::~RSSWidget() { delete ui; diff --git a/src/lib/rss/rsswidget.h b/src/lib/rss/rsswidget.h index ba06e8a99..de177847b 100644 --- a/src/lib/rss/rsswidget.h +++ b/src/lib/rss/rsswidget.h @@ -42,6 +42,7 @@ private slots: void addRss(); private: + bool isRssFeedAlreadyStored(const QUrl &url); Ui::RSSWidget* ui; WebView* m_view; };