Redesign main core classes.

This commit is contained in:
Vladimir Golovnev (Glassez)
2015-04-19 18:17:47 +03:00
parent 60c0939e05
commit d16d1fdb3a
152 changed files with 11366 additions and 8967 deletions

View File

@@ -40,7 +40,7 @@
#include "core/preferences.h"
#include "rssmanager.h"
#include "rssfeed.h"
#include "iconprovider.h"
#include "guiiconprovider.h"
#include "autoexpandabledialog.h"
#include "core/fs_utils.h"
@@ -51,8 +51,8 @@ AutomatedRssDownloader::AutomatedRssDownloader(const QWeakPointer<RssManager>& m
{
ui->setupUi(this);
// Icons
ui->removeRuleBtn->setIcon(IconProvider::instance()->getIcon("list-remove"));
ui->addRuleBtn->setIcon(IconProvider::instance()->getIcon("list-add"));
ui->removeRuleBtn->setIcon(GuiIconProvider::instance()->getIcon("list-remove"));
ui->addRuleBtn->setIcon(GuiIconProvider::instance()->getIcon("list-add"));
// Ui Settings
ui->listRules->setSortingEnabled(true);
@@ -436,17 +436,17 @@ void AutomatedRssDownloader::displayRulesListMenu(const QPoint &pos)
{
Q_UNUSED(pos);
QMenu menu;
QAction *addAct = menu.addAction(IconProvider::instance()->getIcon("list-add"), tr("Add new rule..."));
QAction *addAct = menu.addAction(GuiIconProvider::instance()->getIcon("list-add"), tr("Add new rule..."));
QAction *delAct = 0;
QAction *renameAct = 0;
const QList<QListWidgetItem*> selection = ui->listRules->selectedItems();
if (!selection.isEmpty()) {
if (selection.count() == 1) {
delAct = menu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Delete rule"));
delAct = menu.addAction(GuiIconProvider::instance()->getIcon("list-remove"), tr("Delete rule"));
menu.addSeparator();
renameAct = menu.addAction(IconProvider::instance()->getIcon("edit-rename"), tr("Rename rule..."));
renameAct = menu.addAction(GuiIconProvider::instance()->getIcon("edit-rename"), tr("Rename rule..."));
} else {
delAct = menu.addAction(IconProvider::instance()->getIcon("list-remove"), tr("Delete selected rules"));
delAct = menu.addAction(GuiIconProvider::instance()->getIcon("list-remove"), tr("Delete selected rules"));
}
}
QAction *act = menu.exec(QCursor::pos());
@@ -557,7 +557,7 @@ void AutomatedRssDownloader::addFeedArticlesToTree(const RssFeedPtr& feed, const
QFont f = treeFeedItem->font(0);
f.setBold(true);
treeFeedItem->setFont(0, f);
treeFeedItem->setData(0, Qt::DecorationRole, IconProvider::instance()->getIcon("inode-directory"));
treeFeedItem->setData(0, Qt::DecorationRole, GuiIconProvider::instance()->getIcon("inode-directory"));
treeFeedItem->setData(0, Qt::UserRole, feed->url());
ui->treeMatchingArticles->addTopLevelItem(treeFeedItem);
}
@@ -606,7 +606,7 @@ void AutomatedRssDownloader::updateMustLineValidity()
ui->lbl_must_stat->setPixmap(QPixmap());
} else {
ui->lineContains->setStyleSheet("QLineEdit { color: #ff0000; }");
ui->lbl_must_stat->setPixmap(IconProvider::instance()->getIcon("task-attention").pixmap(16, 16));
ui->lbl_must_stat->setPixmap(GuiIconProvider::instance()->getIcon("task-attention").pixmap(16, 16));
}
}
@@ -631,7 +631,7 @@ void AutomatedRssDownloader::updateMustNotLineValidity()
ui->lbl_mustnot_stat->setPixmap(QPixmap());
} else {
ui->lineNotContains->setStyleSheet("QLineEdit { color: #ff0000; }");
ui->lbl_mustnot_stat->setPixmap(IconProvider::instance()->getIcon("task-attention").pixmap(16, 16));
ui->lbl_mustnot_stat->setPixmap(GuiIconProvider::instance()->getIcon("task-attention").pixmap(16, 16));
}
}

View File

@@ -30,7 +30,7 @@
#include "cookiesdlg.h"
#include "ui_cookiesdlg.h"
#include "iconprovider.h"
#include "guiiconprovider.h"
#include <QNetworkCookie>
@@ -42,8 +42,8 @@ CookiesDlg::CookiesDlg(QWidget *parent, const QList<QByteArray> &raw_cookies) :
{
ui->setupUi(this);
// Icons
ui->add_btn->setIcon(IconProvider::instance()->getIcon("list-add"));
ui->del_btn->setIcon(IconProvider::instance()->getIcon("list-remove"));
ui->add_btn->setIcon(GuiIconProvider::instance()->getIcon("list-add"));
ui->del_btn->setIcon(GuiIconProvider::instance()->getIcon("list-remove"));
ui->infos_lbl->setText(tr("Common keys for cookies are : '%1', '%2'.\nYou should get this information from your Web browser preferences.").arg("uid").arg("pass"));
foreach (const QByteArray &raw_cookie, raw_cookies) {

View File

@@ -31,7 +31,7 @@
#include "feedlistwidget.h"
#include "rssmanager.h"
#include "rssfeed.h"
#include "iconprovider.h"
#include "guiiconprovider.h"
FeedListWidget::FeedListWidget(QWidget *parent, const RssManagerPtr& rssmanager): QTreeWidget(parent), m_rssManager(rssmanager) {
setContextMenuPolicy(Qt::CustomContextMenu);
@@ -41,7 +41,7 @@ FeedListWidget::FeedListWidget(QWidget *parent, const RssManagerPtr& rssmanager)
headerItem()->setText(0, tr("RSS feeds"));
m_unreadStickyItem = new QTreeWidgetItem(this);
m_unreadStickyItem->setText(0, tr("Unread") + QString::fromUtf8(" (") + QString::number(rssmanager->unreadCount())+ QString(")"));
m_unreadStickyItem->setData(0,Qt::DecorationRole, IconProvider::instance()->getIcon("mail-folder-inbox"));
m_unreadStickyItem->setData(0,Qt::DecorationRole, GuiIconProvider::instance()->getIcon("mail-folder-inbox"));
itemAdded(m_unreadStickyItem, rssmanager);
connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), SLOT(updateCurrentFeed(QTreeWidgetItem*)));
setCurrentItem(m_unreadStickyItem);

View File

@@ -39,7 +39,8 @@
#include "rss_imp.h"
#include "feedlistwidget.h"
#include "qbtsession.h"
#include "core/bittorrent/session.h"
#include "core/net/downloadmanager.h"
#include "cookiesdlg.h"
#include "core/preferences.h"
#include "rsssettingsdlg.h"
@@ -49,8 +50,9 @@
#include "rssparser.h"
#include "rssfeed.h"
#include "automatedrssdownloader.h"
#include "iconprovider.h"
#include "guiiconprovider.h"
#include "autoexpandabledialog.h"
#include "addnewtorrentdialog.h"
namespace Article
{
@@ -140,6 +142,7 @@ void RSSImp::on_actionManage_cookies_triggered()
if (ok) {
qDebug() << "Settings cookies for host name: " << feed_hostname;
pref->setHostNameCookies(feed_hostname, raw_cookies);
Net::DownloadManager::instance()->setCookiesFromUrl(pref->getHostNameQNetworkCookies(feed_hostname), feed_hostname);
}
}
@@ -343,17 +346,10 @@ void RSSImp::downloadSelectedTorrents()
QString torrentLink = article->torrentUrl();
// Check if it is a magnet link
if (torrentLink.startsWith("magnet:", Qt::CaseInsensitive)) {
QBtSession::instance()->addMagnetInteractive(torrentLink);
}
else {
// Load possible cookies
QString feed_url = m_feedList->getItemID(m_feedList->selectedItems().first());
QString feed_hostname = QUrl::fromEncoded(feed_url.toUtf8()).host();
QList<QNetworkCookie> cookies = Preferences::instance()->getHostNameQNetworkCookies(feed_hostname);
qDebug("Loaded %d cookies for RSS item\n", cookies.size());
QBtSession::instance()->downloadFromUrl(torrentLink, cookies);
}
if (torrentLink.startsWith("magnet:", Qt::CaseInsensitive) && Preferences::instance()->useAdditionDialog())
AddNewTorrentDialog::show(torrentLink);
else
BitTorrent::Session::instance()->addTorrent(torrentLink);
}
}
@@ -700,22 +696,22 @@ RSSImp::RSSImp(QWidget *parent):
{
setupUi(this);
// Icons
actionCopy_feed_URL->setIcon(IconProvider::instance()->getIcon("edit-copy"));
actionDelete->setIcon(IconProvider::instance()->getIcon("edit-delete"));
actionDownload_torrent->setIcon(IconProvider::instance()->getIcon("download"));
actionManage_cookies->setIcon(IconProvider::instance()->getIcon("preferences-web-browser-cookies"));
actionMark_items_read->setIcon(IconProvider::instance()->getIcon("mail-mark-read"));
actionNew_folder->setIcon(IconProvider::instance()->getIcon("folder-new"));
actionNew_subscription->setIcon(IconProvider::instance()->getIcon("list-add"));
actionOpen_news_URL->setIcon(IconProvider::instance()->getIcon("application-x-mswinurl"));
actionRename->setIcon(IconProvider::instance()->getIcon("edit-rename"));
actionUpdate->setIcon(IconProvider::instance()->getIcon("view-refresh"));
actionUpdate_all_feeds->setIcon(IconProvider::instance()->getIcon("view-refresh"));
newFeedButton->setIcon(IconProvider::instance()->getIcon("list-add"));
markReadButton->setIcon(IconProvider::instance()->getIcon("mail-mark-read"));
updateAllButton->setIcon(IconProvider::instance()->getIcon("view-refresh"));
rssDownloaderBtn->setIcon(IconProvider::instance()->getIcon("download"));
settingsButton->setIcon(IconProvider::instance()->getIcon("preferences-system"));
actionCopy_feed_URL->setIcon(GuiIconProvider::instance()->getIcon("edit-copy"));
actionDelete->setIcon(GuiIconProvider::instance()->getIcon("edit-delete"));
actionDownload_torrent->setIcon(GuiIconProvider::instance()->getIcon("download"));
actionManage_cookies->setIcon(GuiIconProvider::instance()->getIcon("preferences-web-browser-cookies"));
actionMark_items_read->setIcon(GuiIconProvider::instance()->getIcon("mail-mark-read"));
actionNew_folder->setIcon(GuiIconProvider::instance()->getIcon("folder-new"));
actionNew_subscription->setIcon(GuiIconProvider::instance()->getIcon("list-add"));
actionOpen_news_URL->setIcon(GuiIconProvider::instance()->getIcon("application-x-mswinurl"));
actionRename->setIcon(GuiIconProvider::instance()->getIcon("edit-rename"));
actionUpdate->setIcon(GuiIconProvider::instance()->getIcon("view-refresh"));
actionUpdate_all_feeds->setIcon(GuiIconProvider::instance()->getIcon("view-refresh"));
newFeedButton->setIcon(GuiIconProvider::instance()->getIcon("list-add"));
markReadButton->setIcon(GuiIconProvider::instance()->getIcon("mail-mark-read"));
updateAllButton->setIcon(GuiIconProvider::instance()->getIcon("view-refresh"));
rssDownloaderBtn->setIcon(GuiIconProvider::instance()->getIcon("download"));
settingsButton->setIcon(GuiIconProvider::instance()->getIcon("preferences-system"));
m_feedList = new FeedListWidget(splitter_h, m_rssManager);
splitter_h->insertWidget(0, m_feedList);

View File

@@ -31,7 +31,7 @@
#include <QDebug>
#include "rssfeed.h"
#include "rssmanager.h"
#include "qbtsession.h"
#include "core/bittorrent/session.h"
#include "rssfolder.h"
#include "core/preferences.h"
#include "core/qinisettings.h"
@@ -39,7 +39,8 @@
#include "rssparser.h"
#include "core/misc.h"
#include "rssdownloadrulelist.h"
#include "core/downloadthread.h"
#include "core/net/downloadmanager.h"
#include "core/net/downloadhandler.h"
#include "core/fs_utils.h"
#include "core/logger.h"
@@ -60,15 +61,15 @@ RssFeed::RssFeed(RssManager* manager, RssFolder* parent, const QString& url):
{
qDebug() << Q_FUNC_INFO << m_url;
// Listen for new RSS downloads
connect(manager->rssDownloader(), SIGNAL(downloadFinished(QString,QString)), SLOT(handleFinishedDownload(QString,QString)));
connect(manager->rssDownloader(), SIGNAL(downloadFailure(QString,QString)), SLOT(handleDownloadFailure(QString,QString)));
connect(manager->rssParser(), SIGNAL(feedTitle(QString,QString)), SLOT(handleFeedTitle(QString,QString)));
connect(manager->rssParser(), SIGNAL(newArticle(QString,QVariantHash)), SLOT(handleNewArticle(QString,QVariantHash)));
connect(manager->rssParser(), SIGNAL(feedParsingFinished(QString,QString)), SLOT(handleFeedParsingFinished(QString,QString)));
// Download the RSS Feed icon
m_iconUrl = iconUrl();
manager->rssDownloader()->downloadUrl(m_iconUrl);
Net::DownloadHandler *handler = Net::DownloadManager::instance()->downloadUrl(iconUrl());
connect(handler, SIGNAL(downloadFinished(QString, QString)), this, SLOT(handleFinishedDownload(QString, QString)));
connect(handler, SIGNAL(downloadFailed(QString, QString)), this, SLOT(handleDownloadFailure(QString, QString)));
m_iconUrl = handler->url();
// Load old RSS articles
loadItemsFromDisk();
@@ -159,12 +160,6 @@ void RssFeed::addArticle(const RssArticlePtr& article) {
}
}
QList<QNetworkCookie> RssFeed::feedCookies() const
{
QString feed_hostname = QUrl::fromEncoded(m_url.toUtf8()).host();
return Preferences::instance()->getHostNameQNetworkCookies(feed_hostname);
}
bool RssFeed::refresh()
{
if (m_loading) {
@@ -173,7 +168,10 @@ bool RssFeed::refresh()
}
m_loading = true;
// Download the RSS again
m_manager->rssDownloader()->downloadUrl(m_url, feedCookies());
Net::DownloadHandler *handler = Net::DownloadManager::instance()->downloadUrl(m_url);
connect(handler, SIGNAL(downloadFinished(QString, QString)), this, SLOT(handleFinishedDownload(QString, QString)));
connect(handler, SIGNAL(downloadFailed(QString, QString)), this, SLOT(handleDownloadFailure(QString, QString)));
m_url = handler->url(); // sync URL encoding
return true;
}
@@ -307,7 +305,7 @@ QString RssFeed::iconUrl() const
}
// read and store the downloaded rss' informations
void RssFeed::handleFinishedDownload(const QString& url, const QString& filePath)
void RssFeed::handleFinishedDownload(const QString &url, const QString &filePath)
{
if (url == m_url) {
qDebug() << Q_FUNC_INFO << "Successfully downloaded RSS feed at" << url;
@@ -320,10 +318,9 @@ void RssFeed::handleFinishedDownload(const QString& url, const QString& filePath
}
}
void RssFeed::handleDownloadFailure(const QString& url, const QString& error)
void RssFeed::handleDownloadFailure(const QString &url, const QString &error)
{
if (url != m_url)
return;
if (url != m_url) return;
m_inErrorState = true;
m_loading = false;
@@ -369,12 +366,17 @@ void RssFeed::downloadArticleTorrentIfMatching(RssDownloadRuleList* rules, const
// Download the torrent
const QString& torrent_url = article->torrentUrl();
Logger::instance()->addMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(article->title()).arg(displayName()));
connect(QBtSession::instance(), SIGNAL(newDownloadedTorrentFromRss(QString)), article.data(), SLOT(handleTorrentDownloadSuccess(const QString&)), Qt::UniqueConnection);
connect(BitTorrent::Session::instance(), SIGNAL(downloadFromUrlFinished(QString)), article.data(), SLOT(handleTorrentDownloadSuccess(const QString&)), Qt::UniqueConnection);
connect(article.data(), SIGNAL(articleWasRead()), SLOT(handleArticleStateChanged()), Qt::UniqueConnection);
if (torrent_url.startsWith("magnet:", Qt::CaseInsensitive))
QBtSession::instance()->addMagnetSkipAddDlg(torrent_url, matching_rule->savePath(), matching_rule->label(), matching_rule->addPaused());
else
QBtSession::instance()->downloadUrlAndSkipDialog(torrent_url, matching_rule->savePath(), matching_rule->label(), feedCookies(), matching_rule->addPaused());
BitTorrent::AddTorrentParams params;
params.savePath = matching_rule->savePath();
params.label = matching_rule->label();
if (matching_rule->addPaused() == RssDownloadRule::ALWAYS_PAUSED)
params.addPaused = TriStateBool::True;
else if (matching_rule->addPaused() == RssDownloadRule::NEVER_PAUSED)
params.addPaused = TriStateBool::False;
BitTorrent::Session::instance()->addTorrent(torrent_url, params);
}
void RssFeed::recheckRssItemsForDownload()
@@ -426,7 +428,8 @@ void RssFeed::handleFeedParsingFinished(const QString& feedUrl, const QString& e
saveItemsToDisk();
}
void RssFeed::handleArticleStateChanged() {
void RssFeed::handleArticleStateChanged()
{
m_manager->forwardFeedInfosChanged(m_url, displayName(), m_unreadCount);
}

View File

@@ -81,8 +81,8 @@ public:
void recheckRssItemsForDownload();
private slots:
void handleFinishedDownload(const QString& url, const QString &file_path);
void handleDownloadFailure(const QString &url, const QString& error);
void handleFinishedDownload(const QString &url, const QString &filePath);
void handleDownloadFailure(const QString &url, const QString &error);
void handleFeedTitle(const QString& feedUrl, const QString& title);
void handleNewArticle(const QString& feedUrl, const QVariantHash& article);
void handleFeedParsingFinished(const QString& feedUrl, const QString& error);
@@ -93,7 +93,6 @@ private:
void loadItemsFromDisk();
void addArticle(const RssArticlePtr& article);
void downloadArticleTorrentIfMatching(RssDownloadRuleList* rules, const RssArticlePtr& article);
QList<QNetworkCookie> feedCookies() const;
private:
RssManager* m_manager;

View File

@@ -30,10 +30,10 @@
#include <QDebug>
#include "iconprovider.h"
#include "guiiconprovider.h"
#include "rssfolder.h"
#include "rssarticle.h"
#include "qbtsession.h"
#include "core/bittorrent/session.h"
#include "rssmanager.h"
#include "rssfeed.h"
@@ -233,7 +233,7 @@ QString RssFolder::id() const
QIcon RssFolder::icon() const
{
return IconProvider::instance()->getIcon("inode-directory");
return GuiIconProvider::instance()->getIcon("inode-directory");
}
bool RssFolder::hasChild(const QString &childId) {

View File

@@ -31,17 +31,15 @@
#include <QDebug>
#include "rssmanager.h"
#include "core/preferences.h"
#include "qbtsession.h"
#include "core/bittorrent/session.h"
#include "rssfeed.h"
#include "rssarticle.h"
#include "rssdownloadrulelist.h"
#include "rssparser.h"
#include "core/downloadthread.h"
static const int MSECS_PER_MIN = 60000;
RssManager::RssManager():
m_rssDownloader(new DownloadThread(this)),
m_downloadRules(new RssDownloadRuleList),
m_rssParser(new RssParser(this))
{
@@ -60,11 +58,6 @@ RssManager::~RssManager()
qDebug("RSSManager deleted");
}
DownloadThread* RssManager::rssDownloader() const
{
return m_rssDownloader;
}
RssParser* RssManager::rssParser() const
{
return m_rssParser;

View File

@@ -36,7 +36,6 @@
#include "rssfolder.h"
class DownloadThread;
class RssDownloadRuleList;
class RssParser;
@@ -50,7 +49,6 @@ public:
RssManager();
virtual ~RssManager();
DownloadThread* rssDownloader() const;
RssParser* rssParser() const;
RssDownloadRuleList* downloadRules() const;
@@ -71,7 +69,6 @@ signals:
private:
QTimer m_refreshTimer;
uint m_refreshInterval;
DownloadThread* m_rssDownloader;
RssDownloadRuleList* m_downloadRules;
RssParser* m_rssParser;
};

View File

@@ -29,8 +29,8 @@
*/
#include "rssparser.h"
#include "core/downloadthread.h"
#include "core/fs_utils.h"
#include <QDebug>
#include <QFile>
#include <QRegExp>