├── .github └── FUNDING.yml ├── .gitignore ├── .travis.yml ├── 3rdparty ├── ganalytics │ ├── ganalytics.h │ └── ganalytics.pri ├── qftp │ ├── qftp.cpp │ ├── qftp.h │ ├── qftp.pri │ ├── qurlinfo.cpp │ └── qurlinfo.h ├── qtsingleapplication │ ├── qtlocalpeer.cpp │ ├── qtlocalpeer.h │ ├── qtlockedfile.cpp │ ├── qtlockedfile.h │ ├── qtlockedfile_unix.cpp │ ├── qtlockedfile_win.cpp │ ├── qtsingleapplication.cpp │ ├── qtsingleapplication.h │ ├── qtsingleapplication.pri │ ├── qtsinglecoreapplication.cpp │ └── qtsinglecoreapplication.h ├── qupzilla │ ├── qupzilla.pri │ ├── qzregexp.cpp │ └── qzregexp.h ├── sqlite.pri ├── sqlite │ ├── sqlite3.c │ └── sqlite3.h └── sqlitex │ ├── sqlcachedresult.cpp │ ├── sqlcachedresult.h │ ├── sqlitedriver.cpp │ ├── sqlitedriver.h │ ├── sqliteextension.cpp │ └── sqliteextension.h ├── AUTHORS ├── CHANGELOG ├── COPYING ├── HISTORY_EN ├── HISTORY_RU ├── INSTALL ├── Info.plist ├── QuiteRSS.doxygen ├── QuiteRSS.ico ├── QuiteRSS.pro ├── QuiteRSS.qrc ├── QuiteRSSApp.rc ├── QuiteRSS_os2.ico ├── README.md ├── appveyor.yml ├── buildbots └── travis-ci │ ├── 01-before_install.sh │ └── 02-script.sh ├── data ├── bundle_version ├── ca-bundle.crt └── ca-bundle.qrc ├── html ├── adblockPage.html ├── audioplayer.html ├── news.html ├── news_rtl.html ├── newspaper_description.html ├── newspaper_description_rtl.html ├── newspaper_head.html └── videoplayer.html ├── images ├── 128x128 │ └── quiterss.png ├── 16x16 │ └── quiterss.png ├── 256x256 │ └── quiterss.png ├── 32x32 │ └── quiterss.png ├── 48x48 │ └── quiterss.png ├── 64x64 │ └── quiterss.png ├── ImportFeeds.png ├── adblock-disabled.png ├── adblock.png ├── adblock_big.png ├── add.png ├── add_t.png ├── arrow_down.png ├── arrow_left.png ├── arrow_right.png ├── arrow_turn_left.png ├── arrow_up.png ├── back_page.png ├── backup.png ├── bulletNew.png ├── bulletRead.png ├── bulletUnread.png ├── bullet_down.png ├── bullet_error.png ├── bullet_toggle_minus.png ├── bullet_toggle_plus.png ├── bullet_update.png ├── cleanup.png ├── close.png ├── close_hover.png ├── column.png ├── control_play.png ├── delete.png ├── delete_t.png ├── download.png ├── editClear.png ├── email.png ├── exportFeeds.png ├── feedDefault.png ├── filter.png ├── filterOff.png ├── find.png ├── findFeed.png ├── find_in_browser_s.png ├── find_in_news.png ├── find_in_news_s.png ├── flags │ ├── flag_arab.png │ ├── flag_brazil.png │ ├── flag_bulgaria.png │ ├── flag_china.png │ ├── flag_czech.png │ ├── flag_finland.png │ ├── flag_france.png │ ├── flag_galicia.png │ ├── flag_germany.png │ ├── flag_great_britain.png │ ├── flag_greece.png │ ├── flag_hungary.png │ ├── flag_india.png │ ├── flag_iran.png │ ├── flag_italy.png │ ├── flag_japan.png │ ├── flag_lithuania.png │ ├── flag_netherlands.png │ ├── flag_poland.png │ ├── flag_portugal.png │ ├── flag_romania.png │ ├── flag_russia.png │ ├── flag_serbian.png │ ├── flag_slovakia.png │ ├── flag_south_korea.png │ ├── flag_spain.png │ ├── flag_sweden.png │ ├── flag_taiwan.png │ ├── flag_tajikistan.png │ ├── flag_turkey.png │ ├── flag_ukraine.png │ └── flag_vietnam.png ├── flash.png ├── flashstart.png ├── folder.png ├── folder_add.png ├── folder_delete.png ├── folder_star.png ├── folder_unread.png ├── forward_page.png ├── fullScreen.png ├── house.png ├── imagesOff.png ├── imagesOn.png ├── label_gray.png ├── label_green.png ├── label_orange.png ├── label_purple.png ├── label_red.png ├── label_yellow.png ├── layout_classic.png ├── layout_newspaper.png ├── list_clear.png ├── loading.gif ├── loading_dark.gif ├── logo.png ├── logo_text.png ├── markRead.png ├── markReadAll.png ├── menu.png ├── noicon.png ├── options.png ├── page_copy.png ├── panel_hide.png ├── panel_show.png ├── preferencesFeed.png ├── printer.png ├── quiterss128_NewNews.png ├── readSection.png ├── save_as.png ├── share.png ├── share │ ├── blogger.png │ ├── evernote.png │ ├── facebook.png │ ├── hackernews.png │ ├── instapaper.png │ ├── linkedin.png │ ├── livejournal.png │ ├── pocket.png │ ├── printfriendly.png │ ├── reddit.ico │ ├── telegram.png │ ├── twitter.png │ ├── viber.png │ ├── vk.png │ └── whatsapp.png ├── sortIndicatorA.png ├── sortIndicatorD.png ├── splashScreen.png ├── starOff.png ├── starOn.png ├── starSection.png ├── tab_go.png ├── trash.png ├── triangleL.png ├── triangleR.png ├── triangleT.png ├── updateAllFeeds.png ├── updateFeed.png ├── update_page.png ├── warning.png ├── world.png ├── world_go.png ├── zoom.png ├── zoom_in.png └── zoom_out.png ├── lang ├── lang.pri ├── quiterss_ar.ts ├── quiterss_bg.ts ├── quiterss_cs.ts ├── quiterss_de.qph ├── quiterss_de.ts ├── quiterss_el_GR.ts ├── quiterss_en.ts ├── quiterss_es.ts ├── quiterss_fa.ts ├── quiterss_fi.ts ├── quiterss_fr.ts ├── quiterss_gl.ts ├── quiterss_hi.ts ├── quiterss_hu.qph ├── quiterss_hu.ts ├── quiterss_it.ts ├── quiterss_ja.ts ├── quiterss_ko.ts ├── quiterss_lt.ts ├── quiterss_nl.ts ├── quiterss_pl.ts ├── quiterss_pt_BR.ts ├── quiterss_pt_PT.ts ├── quiterss_ro_RO.ts ├── quiterss_ru.qph ├── quiterss_ru.ts ├── quiterss_sk.ts ├── quiterss_sr.ts ├── quiterss_sv.ts ├── quiterss_tg_TJ.ts ├── quiterss_tr.ts ├── quiterss_uk.ts ├── quiterss_vi.ts ├── quiterss_zh_CN.ts ├── quiterss_zh_TW.ts └── tsupdate.bat ├── quiterss.appdata.xml ├── quiterss.desktop ├── quiterss.icns ├── quiterss_os2.rc ├── sound └── notification.wav ├── src ├── VersionNo.h ├── aboutdialog.cpp ├── aboutdialog.h ├── adblock │ ├── adblockaddsubscriptiondialog.cpp │ ├── adblockaddsubscriptiondialog.h │ ├── adblockaddsubscriptiondialog.ui │ ├── adblockblockednetworkreply.cpp │ ├── adblockblockednetworkreply.h │ ├── adblockdialog.cpp │ ├── adblockdialog.h │ ├── adblockdialog.ui │ ├── adblockicon.cpp │ ├── adblockicon.h │ ├── adblockmanager.cpp │ ├── adblockmanager.h │ ├── adblockmatcher.cpp │ ├── adblockmatcher.h │ ├── adblockrule.cpp │ ├── adblockrule.h │ ├── adblocksearchtree.cpp │ ├── adblocksearchtree.h │ ├── adblocksubscription.cpp │ ├── adblocksubscription.h │ ├── adblocktreewidget.cpp │ ├── adblocktreewidget.h │ ├── followredirectreply.cpp │ └── followredirectreply.h ├── addfeedwizard.cpp ├── addfeedwizard.h ├── addfolderdialog.cpp ├── addfolderdialog.h ├── application │ ├── logfile.cpp │ ├── logfile.h │ ├── mainapplication.cpp │ ├── mainapplication.h │ ├── mainwindow.cpp │ ├── mainwindow.h │ ├── settings.cpp │ ├── settings.h │ ├── splashscreen.cpp │ └── splashscreen.h ├── categoriestreewidget.cpp ├── categoriestreewidget.h ├── cleanupwizard.cpp ├── cleanupwizard.h ├── common │ ├── common.cpp │ ├── common.h │ ├── delegatewithoutfocus.cpp │ ├── delegatewithoutfocus.h │ ├── dialog.cpp │ ├── dialog.h │ ├── lineedit.cpp │ ├── lineedit.h │ ├── toolbutton.cpp │ └── toolbutton.h ├── customizetoolbardialog.cpp ├── customizetoolbardialog.h ├── database │ ├── database.cpp │ └── database.h ├── downloads │ ├── downloaditem.cpp │ ├── downloaditem.h │ ├── downloadmanager.cpp │ └── downloadmanager.h ├── faviconobject.cpp ├── faviconobject.h ├── feedpropertiesdialog.cpp ├── feedpropertiesdialog.h ├── feedsview │ ├── feedsmodel.cpp │ ├── feedsmodel.h │ ├── feedsproxymodel.cpp │ ├── feedsproxymodel.h │ ├── feedsview.cpp │ └── feedsview.h ├── findfeed.cpp ├── findfeed.h ├── findtext.cpp ├── findtext.h ├── labeldialog.cpp ├── labeldialog.h ├── main │ ├── globals.cpp │ ├── globals.h │ └── main.cpp ├── network │ ├── authenticationdialog.cpp │ ├── authenticationdialog.h │ ├── cabundleupdater.cpp │ ├── cabundleupdater.h │ ├── cookiejar.cpp │ ├── cookiejar.h │ ├── networkmanager.cpp │ ├── networkmanager.h │ ├── networkmanagerproxy.cpp │ ├── networkmanagerproxy.h │ ├── sslerrordialog.cpp │ └── sslerrordialog.h ├── newsfilters │ ├── filterrulesdialog.cpp │ ├── filterrulesdialog.h │ ├── itemaction.cpp │ ├── itemaction.h │ ├── itemcondition.cpp │ ├── itemcondition.h │ ├── newsfiltersdialog.cpp │ └── newsfiltersdialog.h ├── newstabwidget.cpp ├── newstabwidget.h ├── newsview │ ├── newsheader.cpp │ ├── newsheader.h │ ├── newsmodel.cpp │ ├── newsmodel.h │ ├── newsview.cpp │ └── newsview.h ├── notifications │ ├── notificationsfeeditem.cpp │ ├── notificationsfeeditem.h │ ├── notificationsnewsitem.cpp │ ├── notificationsnewsitem.h │ ├── notificationswidget.cpp │ └── notificationswidget.h ├── optionsdialog.cpp ├── optionsdialog.h ├── parseobject.cpp ├── parseobject.h ├── plugins │ ├── clicktoflash.cpp │ ├── clicktoflash.h │ ├── webpluginfactory.cpp │ └── webpluginfactory.h ├── requestfeed.cpp ├── requestfeed.h ├── syncrss │ ├── googlereader.cpp │ └── googlereader.h ├── tabbar.cpp ├── tabbar.h ├── updateappdialog.cpp ├── updateappdialog.h ├── updatefeeds.cpp ├── updatefeeds.h └── webview │ ├── locationbar.cpp │ ├── locationbar.h │ ├── rssdetectionwidget.cpp │ ├── rssdetectionwidget.h │ ├── webpage.cpp │ ├── webpage.h │ ├── webview.cpp │ └── webview.h └── style ├── Rstyle_v1.2.css ├── dark.qss ├── gray.qss ├── green.qss ├── news.css ├── orange.qss ├── pink.qss ├── purple.qss ├── system.qss ├── system2.qss └── web_dark.css /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://quiterss.org/en/donations 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.user 2 | *.bak 3 | *.orig 4 | _build 5 | .directory 6 | debug 7 | release 8 | Makefile* 9 | src/VersionRev.h 10 | QuiteRSS.pro.user* 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | language: cpp 3 | compiler: 4 | - gcc 5 | - clang 6 | env: 7 | - CONFIG=release QT=4 8 | - CONFIG=debug QT=4 9 | - CONFIG=release QT=5 10 | - CONFIG=debug QT=5 11 | before_install: buildbots/travis-ci/01-before_install.sh 12 | script: buildbots/travis-ci/02-script.sh 13 | -------------------------------------------------------------------------------- /3rdparty/ganalytics/ganalytics.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/ganalytics.h 4 | -------------------------------------------------------------------------------- /3rdparty/qftp/qftp.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/qftp.h $$PWD/qurlinfo.h 4 | SOURCES += $$PWD/qftp.cpp $$PWD/qurlinfo.cpp 5 | -------------------------------------------------------------------------------- /3rdparty/qtsingleapplication/qtlocalpeer.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the Qt Solutions component. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QTLOCALPEER_H 42 | #define QTLOCALPEER_H 43 | 44 | #include 45 | #include 46 | #include 47 | 48 | #include "qtlockedfile.h" 49 | 50 | class QtLocalPeer : public QObject 51 | { 52 | Q_OBJECT 53 | 54 | public: 55 | QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); 56 | bool isClient(); 57 | bool sendMessage(const QString &message, int timeout); 58 | QString applicationId() const 59 | { return id; } 60 | 61 | Q_SIGNALS: 62 | void messageReceived(const QString &message); 63 | 64 | protected Q_SLOTS: 65 | void receiveConnection(); 66 | 67 | protected: 68 | QString id; 69 | QString socketName; 70 | QLocalServer* server; 71 | QtLP_Private::QtLockedFile lockFile; 72 | 73 | private: 74 | static const char* ack; 75 | }; 76 | 77 | #endif // QTLOCALPEER_H 78 | -------------------------------------------------------------------------------- /3rdparty/qtsingleapplication/qtsingleapplication.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | DEPENDPATH += $$PWD 3 | QT *= network 4 | greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets 5 | 6 | qtsingleapplication-uselib:!qtsingleapplication-buildlib { 7 | LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME 8 | } else { 9 | SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp 10 | HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h 11 | } 12 | 13 | os2|win32 { 14 | contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT 15 | else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT 16 | } 17 | -------------------------------------------------------------------------------- /3rdparty/qtsingleapplication/qtsinglecoreapplication.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the Qt Solutions component. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QTSINGLECOREAPPLICATION_H 42 | #define QTSINGLECOREAPPLICATION_H 43 | 44 | #include 45 | 46 | class QtLocalPeer; 47 | 48 | class QtSingleCoreApplication : public QCoreApplication 49 | { 50 | Q_OBJECT 51 | 52 | public: 53 | QtSingleCoreApplication(int &argc, char **argv); 54 | QtSingleCoreApplication(const QString &id, int &argc, char **argv); 55 | 56 | bool isRunning(); 57 | QString id() const; 58 | 59 | public Q_SLOTS: 60 | bool sendMessage(const QString &message, int timeout = 5000); 61 | 62 | 63 | Q_SIGNALS: 64 | void messageReceived(const QString &message); 65 | 66 | 67 | private: 68 | QtLocalPeer* peer; 69 | }; 70 | 71 | #endif // QTSINGLECOREAPPLICATION_H 72 | -------------------------------------------------------------------------------- /3rdparty/qupzilla/qupzilla.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/qzregexp.h 4 | SOURCES += $$PWD/qzregexp.cpp 5 | -------------------------------------------------------------------------------- /3rdparty/qupzilla/qzregexp.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QupZilla - WebKit based browser 3 | * Copyright (C) 2013-2014 David Rosca 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "qzregexp.h" 19 | 20 | #if (QT_VERSION >= 0x050000) 21 | QzRegExp::QzRegExp() 22 | : QRegularExpression(QString(), QRegularExpression::DotMatchesEverythingOption) 23 | , m_matchedLength(-1) 24 | { 25 | } 26 | 27 | QzRegExp::QzRegExp(const QString &pattern, Qt::CaseSensitivity cs) 28 | : QRegularExpression(pattern, QRegularExpression::DotMatchesEverythingOption) 29 | , m_matchedLength(-1) 30 | { 31 | if (cs == Qt::CaseInsensitive) { 32 | setPatternOptions(patternOptions() | QRegularExpression::CaseInsensitiveOption); 33 | } 34 | } 35 | 36 | QzRegExp::QzRegExp(const QzRegExp &re) 37 | : QRegularExpression(re) 38 | , m_matchedLength(-1) 39 | { 40 | } 41 | 42 | void QzRegExp::setMinimal(bool minimal) 43 | { 44 | QRegularExpression::PatternOptions opt; 45 | 46 | if (minimal) { 47 | opt = patternOptions() | QRegularExpression::InvertedGreedinessOption; 48 | } 49 | else { 50 | opt = patternOptions() & ~QRegularExpression::InvertedGreedinessOption; 51 | } 52 | 53 | setPatternOptions(opt); 54 | } 55 | 56 | int QzRegExp::indexIn(const QString &str, int offset) const 57 | { 58 | QzRegExp* that = const_cast(this); 59 | QRegularExpressionMatch m = match(str, offset); 60 | 61 | if (!m.hasMatch()) { 62 | that->m_matchedLength = -1; 63 | that->m_capturedTexts.clear(); 64 | return -1; 65 | } 66 | 67 | that->m_matchedLength = m.capturedLength(); 68 | that->m_capturedTexts = m.capturedTexts(); 69 | return m.capturedStart(); 70 | } 71 | 72 | int QzRegExp::matchedLength() const 73 | { 74 | return m_matchedLength; 75 | } 76 | 77 | QString QzRegExp::cap(int nth) const 78 | { 79 | if (!(nth >= 0 && m_capturedTexts.count() > nth)) { 80 | return QString(); 81 | } 82 | 83 | return m_capturedTexts.at(nth); 84 | } 85 | #endif // (QT_VERSION >= 0x050000) 86 | 87 | -------------------------------------------------------------------------------- /3rdparty/qupzilla/qzregexp.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QupZilla - WebKit based browser 3 | * Copyright (C) 2013-2014 David Rosca 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef QZREGEXP_H 19 | #define QZREGEXP_H 20 | 21 | #include // Needed for QT_VERSION 22 | 23 | #if (QT_VERSION < 0x050000) 24 | // Qt 4 - use QRegExp directly 25 | #include 26 | #define QzRegExp QRegExp 27 | #else // Qt 5 28 | #include 29 | #include 30 | 31 | class QzRegExp : public QRegularExpression 32 | { 33 | public: 34 | QzRegExp(); 35 | QzRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive); 36 | QzRegExp(const QzRegExp &re); 37 | 38 | void setMinimal(bool minimal); 39 | int indexIn(const QString &str, int offset = 0) const; 40 | int matchedLength() const; 41 | QString cap(int nth = 0) const; 42 | 43 | private: 44 | QStringList m_capturedTexts; 45 | int m_matchedLength; 46 | 47 | }; 48 | #endif // Qt 5 49 | 50 | #endif // QZREGEXP_H 51 | -------------------------------------------------------------------------------- /3rdparty/sqlite.pri: -------------------------------------------------------------------------------- 1 | #DEFINES += SQLITEDRIVER_DEBUG 2 | #DEFINES += SQLITEDRIVER_EXPORT 3 | 4 | INCLUDEPATH += $$PWD \ 5 | $$PWD/sqlitex 6 | 7 | os2|win32|mac { 8 | CONFIG(release, debug|release):DEFINES *= NDEBUG 9 | DEFINES += SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE 10 | 11 | HEADERS += $$PWD/sqlite/sqlite3.h 12 | SOURCES += $$PWD/sqlite/sqlite3.c 13 | 14 | INCLUDEPATH += $$PWD/sqlite 15 | } else { 16 | CONFIG += link_pkgconfig 17 | PKGCONFIG += sqlite3 18 | } 19 | 20 | HEADERS += $$PWD/sqlitex/sqlcachedresult.h \ 21 | $$PWD/sqlitex/sqlitedriver.h \ 22 | $$PWD/sqlitex/sqliteextension.h 23 | 24 | SOURCES += $$PWD/sqlitex/sqlcachedresult.cpp \ 25 | $$PWD/sqlitex/sqlitedriver.cpp \ 26 | $$PWD/sqlitex/sqliteextension.cpp 27 | -------------------------------------------------------------------------------- /3rdparty/sqlitex/sqlcachedresult.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * Extensible SQLite driver for Qt4/Qt5 3 | * Copyright (C) 2011-2012 Michał Męciński 4 | * Copyright (C) 2011-2021 QuiteRSS Team 5 | * 6 | * This library is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License version 2.1 8 | * as published by the Free Software Foundation. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this library. If not, see . 17 | * 18 | * This library is based on the QtSql module of the Qt Toolkit 19 | * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). 20 | **************************************************************************/ 21 | 22 | #ifndef SQLCACHEDRESULT_H 23 | #define SQLCACHEDRESULT_H 24 | 25 | #include 26 | 27 | class QVariant; 28 | template class QVector; 29 | 30 | class SqlCachedResultPrivate; 31 | 32 | class SqlCachedResult: public QSqlResult 33 | { 34 | public: 35 | virtual ~SqlCachedResult(); 36 | 37 | typedef QVector ValueCache; 38 | 39 | protected: 40 | SqlCachedResult(const QSqlDriver * db); 41 | 42 | void init(int colCount); 43 | void cleanup(); 44 | void clearValues(); 45 | 46 | virtual bool gotoNext(ValueCache &values, int index) = 0; 47 | 48 | QVariant data(int i); 49 | bool isNull(int i); 50 | bool fetch(int i); 51 | bool fetchNext(); 52 | bool fetchPrevious(); 53 | bool fetchFirst(); 54 | bool fetchLast(); 55 | 56 | int colCount() const; 57 | ValueCache &cache(); 58 | 59 | #ifdef HAVE_QT5 60 | void detachFromResultSet(); 61 | void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); 62 | #endif 63 | void virtual_hook(int id, void *data); 64 | 65 | private: 66 | bool cacheNext(); 67 | SqlCachedResultPrivate *d; 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /3rdparty/sqlitex/sqliteextension.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * Extensible SQLite driver for Qt4/Qt5 3 | * Copyright (C) 2011-2012 Michał Męciński 4 | * Copyright (C) 2011-2021 QuiteRSS Team 5 | * 6 | * This library is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License version 2.1 8 | * as published by the Free Software Foundation. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public License 16 | * along with this library. If not, see . 17 | * 18 | * This library is based on the QtSql module of the Qt Toolkit 19 | * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). 20 | **************************************************************************/ 21 | 22 | #ifndef SQLITEEXTENSION_H 23 | #define SQLITEEXTENSION_H 24 | 25 | struct sqlite3; 26 | 27 | /** 28 | * Install UNICODE support collation and functions for SQLite. 29 | * @param db The SQLite database handle. 30 | */ 31 | void installSQLiteExtension( sqlite3* db ); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Build depends: 2 | GCC or Clang compiler 3 | SQLite version 3.30.1 or newer 4 | Qt version 4.7.* or 4.8.* or 5.4.* 5 | Required Qt development tools: 6 | qmake 7 | lrelease 8 | Required Qt libraries: 9 | QtCore 10 | QtGui 11 | QtNetwork 12 | QtSql compiled with sqlite support 13 | QtWebKit 14 | QtXml 15 | 16 | Linux Mint 20 (others?): 17 | 18 | sudo apt install qt5-default qttools5-dev-tools qttools5-dev libsqlite3-dev 19 | sudo apt-get install qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 libqt5webkit5-dev 20 | 21 | 22 | Instructions for Linux and other UNIX-like systems: 23 | mkdir _build && cd _build 24 | qmake CONFIG+=release PREFIX=/usr ../QuiteRSS.pro 25 | make -j3 26 | make install 27 | 28 | Instead of -j3 make option you can use -j. 29 | For making debug build use CONFIG+=debug instead of CONFIG+=release. 30 | By default qmake uses gcc, for using clang you need to alter qmake command: 31 | qmake QMAKE_CC=clang QMAKE_CXX=clang++ QMAKE_LINK=clang++ QMAKE_LINK_C=clang CONFIG+=release PREFIX=/usr ../QuiteRSS.pro 32 | 33 | For building with system qtsingleapplication add SYSTEMQTSA=1 to qmake command. 34 | For building without phonon add DISABLE_PHONON=1 to qmake command. 35 | 36 | Instruction for Windows: 37 | Visual Studio: 38 | qmake CONFIG-=debug_and_release CONFIG-=debug -tp vc -platform win32-msvc2013 39 | 40 | Due to a qmake bug, you will need to manually edit the generated .vcxproj and .filters file, to fix error messages on opening VS2013. 41 | 42 | To do this, identify the duplicate set of items based on the error message (all within the same item group), 43 | and delete from the starting tag, to the closing tag. 44 | 45 | 46 | Instructions for Mac OS: 47 | cd /path/to/build 48 | qmake -recursive -spec macx-g++ CONFIG+=release CONFIG+=x86_64 /path/to/quiterss/QuiteRSS.pro 49 | make -j3 50 | make install 51 | cd /path/to/build/release/target 52 | macdeployqt quiterss.app/ -dmg 53 | 54 | Instead of -j3 make option you can use -j. 55 | -------------------------------------------------------------------------------- /Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIconFile 8 | @ICON@ 9 | CFBundlePackageType 10 | APPL 11 | CFBundleGetInfoString 12 | @EXECUTABLE@ (C) 2011-2021 QuiteRSS Team 13 | CFBundleSignature 14 | @TYPEINFO@ 15 | CFBundleExecutable 16 | @EXECUTABLE@ 17 | CFBundleIdentifier 18 | org.quiterss.QuiteRSS 19 | CFBundleName 20 | @EXECUTABLE@ 21 | CFBundleDisplayName 22 | @EXECUTABLE@ 23 | CFBundleShortVersionString 24 | 0.19.4 25 | NSHumanReadableCopyright 26 | (C) 2011-2021 QuiteRSS Team 27 | NSPrincipalClass 28 | NSApplication 29 | NSHighResolutionCapable 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /QuiteRSS.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/QuiteRSS.ico -------------------------------------------------------------------------------- /QuiteRSSApp.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/QuiteRSSApp.rc -------------------------------------------------------------------------------- /QuiteRSS_os2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/QuiteRSS_os2.ico -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/QuiteRSS/quiterss.svg?branch=master)](https://travis-ci.org/QuiteRSS/quiterss) 2 | [![Build status](https://ci.appveyor.com/api/projects/status/5lr4m5jxf2ad4f5r/branch/master?svg=true)](https://ci.appveyor.com/project/Funcy-dcm/quiterss/branch/master) 3 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/ed6473aef4dd4c5aba8cf1dbbc8c6383)](https://www.codacy.com/app/Funcy-dcm/quiterss?utm_source=github.com&utm_medium=referral&utm_content=QuiteRSS/quiterss&utm_campaign=badger) 4 | 5 | Copyright (C) 2011-2021 QuiteRSS Team 6 | 7 | QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader written on Qt/C++ 8 | 9 | Idea: Quite fast and comfortable to user 10 | 11 | Links: 12 | * Website: https://quiterss.org 13 | * Git repository: https://github.com/QuiteRSS/quiterss 14 | * Issue tracker: https://github.com/QuiteRSS/quiterss/issues 15 | * Translations: https://www.transifex.com/projects/p/quiterss/ 16 | -------------------------------------------------------------------------------- /buildbots/travis-ci/01-before_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -x 3 | 4 | if [ "${QT}" = '4' ] 5 | then 6 | _qt_deps='libqt4-dev qt4-dev-tools libqtcore4 libqtgui4 libqt4-sql-sqlite libqtwebkit-dev libphonon-dev' 7 | else 8 | _qt_deps='qtbase5-dev qtbase5-dev-tools qttools5-dev-tools libqt5webkit5-dev qtmultimedia5-dev' 9 | fi 10 | 11 | # Remove not used sources: 12 | sudo ls -la /etc/apt/sources.list.d/ 13 | sudo rm -f /etc/apt/sources.list.d/couchdb-ppa-source.list 14 | sudo rm -f /etc/apt/sources.list.d/mongodb.list 15 | sudo rm -f /etc/apt/sources.list.d/pgdg-source.list 16 | sudo rm -f /etc/apt/sources.list.d/rabbitmq-source.list 17 | sudo rm -f /etc/apt/sources.list.d/rwky-redis-source.list 18 | sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list 19 | sudo rm -f /etc/apt/sources.list.d/ubuntugis-stable-source.list 20 | sudo rm -f /etc/apt/sources.list.d/webupd8team-java-ppa-source.list 21 | sudo ls -la /etc/apt/sources.list.d/ 22 | 23 | # This is an ugly hack for partial updating of build environment from 24 | # Ubuntu 12.04 (Precise Pangolin) to Ubuntu 14.04 (Trusty Tahr): 25 | sudo sed -i 's/precise/trusty/g' /etc/apt/sources.list && 26 | sudo apt-get update -qq && 27 | sudo apt-get install -qq gdb libsqlite3-dev ${_qt_deps} && 28 | echo 'Updated' 29 | -------------------------------------------------------------------------------- /buildbots/travis-ci/02-script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -x 3 | 4 | # Defaults from Debian 8 with 'export DEB_BUILD_MAINT_OPTIONS="hardening=+all"': 5 | #export CFLAGS="-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security" 6 | #export CXXFLAGS="-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security" 7 | #export CPPFLAGS="-D_FORTIFY_SOURCE=2" 8 | #export LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now" 9 | 10 | # Debian adds CPPFLAGS to both QMAKE_CFLAGS and QMAKE_CXXFLAGS 11 | 12 | # -fstack-protector-strong needs gcc-4.9 13 | export CFLAGS='-pipe -g -O2 -fPIE -fstack-protector -Wformat -Werror=format-security' 14 | export CXXFLAGS="${CFLAGS}" 15 | export CPPFLAGS='-D_FORTIFY_SOURCE=2' 16 | export LDFLAGS='-fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--hash-style=gnu -Wl,--as-needed' 17 | 18 | mkdir _build && 19 | cd _build && 20 | /usr/lib/x86_64-linux-gnu/qt"${QT}"/bin/qmake \ 21 | QMAKE_CC=$CC \ 22 | QMAKE_CXX=$CXX \ 23 | QMAKE_CFLAGS="${CFLAGS} ${CPPFLAGS}" \ 24 | QMAKE_CFLAGS_RELEASE= \ 25 | QMAKE_CFLAGS_DEBUG= \ 26 | QMAKE_CXXFLAGS="${CXXFLAGS} ${CPPFLAGS}" \ 27 | QMAKE_CXXFLAGS_RELEASE= \ 28 | QMAKE_CXXFLAGS_DEBUG= \ 29 | QMAKE_LFLAGS="${LDFLAGS}" \ 30 | QMAKE_LFLAGS_RELEASE= \ 31 | QMAKE_LFLAGS_DEBUG= \ 32 | CONFIG+=$CONFIG \ 33 | PREFIX=/usr \ 34 | ../QuiteRSS.pro && 35 | make -j2 && 36 | sudo make install && 37 | objdump -p /usr/bin/quiterss|grep NEEDED|sort && 38 | du -sc /usr/bin/quiterss /usr/share/quiterss/* 39 | -------------------------------------------------------------------------------- /data/bundle_version: -------------------------------------------------------------------------------- 1 | 8 -------------------------------------------------------------------------------- /data/ca-bundle.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | bundle_version 4 | ca-bundle.crt 5 | 6 | 7 | -------------------------------------------------------------------------------- /html/adblockPage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | %TITLE% 4 | 5 | 11 | 12 | 13 |
14 | 15 |

AdBlock

16 | %RULE% 17 |
18 | 19 | -------------------------------------------------------------------------------- /html/audioplayer.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /html/news.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | news_descriptions 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
%2%3
%4
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
%5
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /html/news_rtl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | news_descriptions 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
%3%2
%4
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
%5
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /html/newspaper_description.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
%3
6 |
%4
%5
%6
%7
%9
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
%8

30 |
31 | -------------------------------------------------------------------------------- /html/newspaper_description_rtl.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
%6
%5 7 |
%4
%3
8 |
%7
%9
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
%8
31 |
32 | -------------------------------------------------------------------------------- /html/newspaper_head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | news_descriptions 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /html/videoplayer.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /images/128x128/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/128x128/quiterss.png -------------------------------------------------------------------------------- /images/16x16/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/16x16/quiterss.png -------------------------------------------------------------------------------- /images/256x256/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/256x256/quiterss.png -------------------------------------------------------------------------------- /images/32x32/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/32x32/quiterss.png -------------------------------------------------------------------------------- /images/48x48/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/48x48/quiterss.png -------------------------------------------------------------------------------- /images/64x64/quiterss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/64x64/quiterss.png -------------------------------------------------------------------------------- /images/ImportFeeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/ImportFeeds.png -------------------------------------------------------------------------------- /images/adblock-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/adblock-disabled.png -------------------------------------------------------------------------------- /images/adblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/adblock.png -------------------------------------------------------------------------------- /images/adblock_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/adblock_big.png -------------------------------------------------------------------------------- /images/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/add.png -------------------------------------------------------------------------------- /images/add_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/add_t.png -------------------------------------------------------------------------------- /images/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/arrow_down.png -------------------------------------------------------------------------------- /images/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/arrow_left.png -------------------------------------------------------------------------------- /images/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/arrow_right.png -------------------------------------------------------------------------------- /images/arrow_turn_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/arrow_turn_left.png -------------------------------------------------------------------------------- /images/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/arrow_up.png -------------------------------------------------------------------------------- /images/back_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/back_page.png -------------------------------------------------------------------------------- /images/backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/backup.png -------------------------------------------------------------------------------- /images/bulletNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bulletNew.png -------------------------------------------------------------------------------- /images/bulletRead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bulletRead.png -------------------------------------------------------------------------------- /images/bulletUnread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bulletUnread.png -------------------------------------------------------------------------------- /images/bullet_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bullet_down.png -------------------------------------------------------------------------------- /images/bullet_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bullet_error.png -------------------------------------------------------------------------------- /images/bullet_toggle_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bullet_toggle_minus.png -------------------------------------------------------------------------------- /images/bullet_toggle_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bullet_toggle_plus.png -------------------------------------------------------------------------------- /images/bullet_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/bullet_update.png -------------------------------------------------------------------------------- /images/cleanup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/cleanup.png -------------------------------------------------------------------------------- /images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/close.png -------------------------------------------------------------------------------- /images/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/close_hover.png -------------------------------------------------------------------------------- /images/column.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/column.png -------------------------------------------------------------------------------- /images/control_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/control_play.png -------------------------------------------------------------------------------- /images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/delete.png -------------------------------------------------------------------------------- /images/delete_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/delete_t.png -------------------------------------------------------------------------------- /images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/download.png -------------------------------------------------------------------------------- /images/editClear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/editClear.png -------------------------------------------------------------------------------- /images/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/email.png -------------------------------------------------------------------------------- /images/exportFeeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/exportFeeds.png -------------------------------------------------------------------------------- /images/feedDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/feedDefault.png -------------------------------------------------------------------------------- /images/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/filter.png -------------------------------------------------------------------------------- /images/filterOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/filterOff.png -------------------------------------------------------------------------------- /images/find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/find.png -------------------------------------------------------------------------------- /images/findFeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/findFeed.png -------------------------------------------------------------------------------- /images/find_in_browser_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/find_in_browser_s.png -------------------------------------------------------------------------------- /images/find_in_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/find_in_news.png -------------------------------------------------------------------------------- /images/find_in_news_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/find_in_news_s.png -------------------------------------------------------------------------------- /images/flags/flag_arab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_arab.png -------------------------------------------------------------------------------- /images/flags/flag_brazil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_brazil.png -------------------------------------------------------------------------------- /images/flags/flag_bulgaria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_bulgaria.png -------------------------------------------------------------------------------- /images/flags/flag_china.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_china.png -------------------------------------------------------------------------------- /images/flags/flag_czech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_czech.png -------------------------------------------------------------------------------- /images/flags/flag_finland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_finland.png -------------------------------------------------------------------------------- /images/flags/flag_france.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_france.png -------------------------------------------------------------------------------- /images/flags/flag_galicia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_galicia.png -------------------------------------------------------------------------------- /images/flags/flag_germany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_germany.png -------------------------------------------------------------------------------- /images/flags/flag_great_britain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_great_britain.png -------------------------------------------------------------------------------- /images/flags/flag_greece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_greece.png -------------------------------------------------------------------------------- /images/flags/flag_hungary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_hungary.png -------------------------------------------------------------------------------- /images/flags/flag_india.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_india.png -------------------------------------------------------------------------------- /images/flags/flag_iran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_iran.png -------------------------------------------------------------------------------- /images/flags/flag_italy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_italy.png -------------------------------------------------------------------------------- /images/flags/flag_japan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_japan.png -------------------------------------------------------------------------------- /images/flags/flag_lithuania.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_lithuania.png -------------------------------------------------------------------------------- /images/flags/flag_netherlands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_netherlands.png -------------------------------------------------------------------------------- /images/flags/flag_poland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_poland.png -------------------------------------------------------------------------------- /images/flags/flag_portugal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_portugal.png -------------------------------------------------------------------------------- /images/flags/flag_romania.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_romania.png -------------------------------------------------------------------------------- /images/flags/flag_russia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_russia.png -------------------------------------------------------------------------------- /images/flags/flag_serbian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_serbian.png -------------------------------------------------------------------------------- /images/flags/flag_slovakia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_slovakia.png -------------------------------------------------------------------------------- /images/flags/flag_south_korea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_south_korea.png -------------------------------------------------------------------------------- /images/flags/flag_spain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_spain.png -------------------------------------------------------------------------------- /images/flags/flag_sweden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_sweden.png -------------------------------------------------------------------------------- /images/flags/flag_taiwan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_taiwan.png -------------------------------------------------------------------------------- /images/flags/flag_tajikistan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_tajikistan.png -------------------------------------------------------------------------------- /images/flags/flag_turkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_turkey.png -------------------------------------------------------------------------------- /images/flags/flag_ukraine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_ukraine.png -------------------------------------------------------------------------------- /images/flags/flag_vietnam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flags/flag_vietnam.png -------------------------------------------------------------------------------- /images/flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flash.png -------------------------------------------------------------------------------- /images/flashstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/flashstart.png -------------------------------------------------------------------------------- /images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/folder.png -------------------------------------------------------------------------------- /images/folder_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/folder_add.png -------------------------------------------------------------------------------- /images/folder_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/folder_delete.png -------------------------------------------------------------------------------- /images/folder_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/folder_star.png -------------------------------------------------------------------------------- /images/folder_unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/folder_unread.png -------------------------------------------------------------------------------- /images/forward_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/forward_page.png -------------------------------------------------------------------------------- /images/fullScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/fullScreen.png -------------------------------------------------------------------------------- /images/house.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/house.png -------------------------------------------------------------------------------- /images/imagesOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/imagesOff.png -------------------------------------------------------------------------------- /images/imagesOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/imagesOn.png -------------------------------------------------------------------------------- /images/label_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_gray.png -------------------------------------------------------------------------------- /images/label_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_green.png -------------------------------------------------------------------------------- /images/label_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_orange.png -------------------------------------------------------------------------------- /images/label_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_purple.png -------------------------------------------------------------------------------- /images/label_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_red.png -------------------------------------------------------------------------------- /images/label_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/label_yellow.png -------------------------------------------------------------------------------- /images/layout_classic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/layout_classic.png -------------------------------------------------------------------------------- /images/layout_newspaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/layout_newspaper.png -------------------------------------------------------------------------------- /images/list_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/list_clear.png -------------------------------------------------------------------------------- /images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/loading.gif -------------------------------------------------------------------------------- /images/loading_dark.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/loading_dark.gif -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/logo.png -------------------------------------------------------------------------------- /images/logo_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/logo_text.png -------------------------------------------------------------------------------- /images/markRead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/markRead.png -------------------------------------------------------------------------------- /images/markReadAll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/markReadAll.png -------------------------------------------------------------------------------- /images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/menu.png -------------------------------------------------------------------------------- /images/noicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/noicon.png -------------------------------------------------------------------------------- /images/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/options.png -------------------------------------------------------------------------------- /images/page_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/page_copy.png -------------------------------------------------------------------------------- /images/panel_hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/panel_hide.png -------------------------------------------------------------------------------- /images/panel_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/panel_show.png -------------------------------------------------------------------------------- /images/preferencesFeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/preferencesFeed.png -------------------------------------------------------------------------------- /images/printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/printer.png -------------------------------------------------------------------------------- /images/quiterss128_NewNews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/quiterss128_NewNews.png -------------------------------------------------------------------------------- /images/readSection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/readSection.png -------------------------------------------------------------------------------- /images/save_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/save_as.png -------------------------------------------------------------------------------- /images/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share.png -------------------------------------------------------------------------------- /images/share/blogger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/blogger.png -------------------------------------------------------------------------------- /images/share/evernote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/evernote.png -------------------------------------------------------------------------------- /images/share/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/facebook.png -------------------------------------------------------------------------------- /images/share/hackernews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/hackernews.png -------------------------------------------------------------------------------- /images/share/instapaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/instapaper.png -------------------------------------------------------------------------------- /images/share/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/linkedin.png -------------------------------------------------------------------------------- /images/share/livejournal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/livejournal.png -------------------------------------------------------------------------------- /images/share/pocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/pocket.png -------------------------------------------------------------------------------- /images/share/printfriendly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/printfriendly.png -------------------------------------------------------------------------------- /images/share/reddit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/reddit.ico -------------------------------------------------------------------------------- /images/share/telegram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/telegram.png -------------------------------------------------------------------------------- /images/share/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/twitter.png -------------------------------------------------------------------------------- /images/share/viber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/viber.png -------------------------------------------------------------------------------- /images/share/vk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/vk.png -------------------------------------------------------------------------------- /images/share/whatsapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/share/whatsapp.png -------------------------------------------------------------------------------- /images/sortIndicatorA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/sortIndicatorA.png -------------------------------------------------------------------------------- /images/sortIndicatorD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/sortIndicatorD.png -------------------------------------------------------------------------------- /images/splashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/splashScreen.png -------------------------------------------------------------------------------- /images/starOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/starOff.png -------------------------------------------------------------------------------- /images/starOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/starOn.png -------------------------------------------------------------------------------- /images/starSection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/starSection.png -------------------------------------------------------------------------------- /images/tab_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/tab_go.png -------------------------------------------------------------------------------- /images/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/trash.png -------------------------------------------------------------------------------- /images/triangleL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/triangleL.png -------------------------------------------------------------------------------- /images/triangleR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/triangleR.png -------------------------------------------------------------------------------- /images/triangleT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/triangleT.png -------------------------------------------------------------------------------- /images/updateAllFeeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/updateAllFeeds.png -------------------------------------------------------------------------------- /images/updateFeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/updateFeed.png -------------------------------------------------------------------------------- /images/update_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/update_page.png -------------------------------------------------------------------------------- /images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/warning.png -------------------------------------------------------------------------------- /images/world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/world.png -------------------------------------------------------------------------------- /images/world_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/world_go.png -------------------------------------------------------------------------------- /images/zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/zoom.png -------------------------------------------------------------------------------- /images/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/zoom_in.png -------------------------------------------------------------------------------- /images/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/images/zoom_out.png -------------------------------------------------------------------------------- /lang/lang.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | DEPENDPATH += $$PWD 3 | 4 | TRANSLATIONS += lang/quiterss_de.ts lang/quiterss_ru.ts \ 5 | lang/quiterss_es.ts lang/quiterss_fr.ts lang/quiterss_hu.ts \ 6 | lang/quiterss_sv.ts lang/quiterss_sr.ts lang/quiterss_nl.ts \ 7 | lang/quiterss_fa.ts lang/quiterss_it.ts lang/quiterss_zh_CN.ts \ 8 | lang/quiterss_uk.ts lang/quiterss_cs.ts lang/quiterss_pl.ts \ 9 | lang/quiterss_ja.ts lang/quiterss_ko.ts lang/quiterss_pt_BR.ts \ 10 | lang/quiterss_lt.ts lang/quiterss_zh_TW.ts lang/quiterss_el_GR.ts \ 11 | lang/quiterss_tr.ts lang/quiterss_ar.ts lang/quiterss_sk.ts \ 12 | lang/quiterss_tg_TJ.ts lang/quiterss_pt_PT.ts lang/quiterss_vi.ts \ 13 | lang/quiterss_ro_RO.ts lang/quiterss_fi.ts lang/quiterss_gl.ts \ 14 | lang/quiterss_bg.ts lang/quiterss_hi.ts 15 | 16 | isEmpty(QMAKE_LRELEASE) { 17 | Q_OS_WIN:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe 18 | else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease 19 | } 20 | 21 | updateqm.input = TRANSLATIONS 22 | updateqm.output = $$DESTDIR/lang/${QMAKE_FILE_BASE}.qm 23 | updateqm.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm $$DESTDIR/lang/${QMAKE_FILE_BASE}.qm 24 | updateqm.CONFIG += no_link target_predeps 25 | QMAKE_EXTRA_COMPILERS += updateqm 26 | -------------------------------------------------------------------------------- /lang/tsupdate.bat: -------------------------------------------------------------------------------- 1 | set PATH=C:\Qt\5.13.2\msvc2017\bin;C:\Qt\Tools\QtCreator\bin;%PATH% 2 | lupdate .. -no-obsolete -ts quiterss_en.ts 3 | -------------------------------------------------------------------------------- /quiterss.appdata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | org.quiterss.quiterss 5 | CC0-1.0 6 | GPL-3.0+ 7 | QuiteRSS 8 | Free news reader 9 | 10 |

11 | QuiteRSS is an easy to use application designed to help you keep track of the latest news on your RSS feeds. It is quite fast and comfortable to user. 12 |

13 |

14 | The program allows you to add as many RSS feed links as you want. You can update the feeds manually. 15 |

16 |
17 | 18 | 19 | https://github.com/QuiteRSS/tools/raw/master/screenshots/screenshots01.png 20 | 21 | 22 | https://github.com/QuiteRSS/tools/raw/master/screenshots/screenshots02.png 23 | 24 | 25 | https://github.com/QuiteRSS/tools/raw/master/screenshots/screenshots07.png 26 | 27 | 28 | quiterss.desktop 29 | https://quiterss.org 30 | quiterssteam@gmail.com 31 |
32 | -------------------------------------------------------------------------------- /quiterss.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=QuiteRSS 3 | Exec=quiterss 4 | Icon=quiterss 5 | Type=Application 6 | GenericName=RSS/Atom feed reader 7 | GenericName[pt]=Leitor de fontes RSS/Atom 8 | GenericName[ru]=Клиент RSS/Atom 9 | Comment=QuiteRSS is a RSS/Atom feed reader written in C++/Qt 10 | Comment[pt]=O Quite RSS é um leitor de fontes RSS/Atom desenvolvido em C++/Qt 11 | Comment[ru]=QuiteRSS — клиент RSS/Atom, написанный на C++/Qt 12 | Terminal=false 13 | Categories=Qt;Network;News; 14 | MimeType=application/rss+xml;application/atom+xml;application/rdf+xml; 15 | X-DBUS-StartupType=none 16 | -------------------------------------------------------------------------------- /quiterss.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/quiterss.icns -------------------------------------------------------------------------------- /quiterss_os2.rc: -------------------------------------------------------------------------------- 1 | ICON 1 DISCARDABLE "QuiteRSS_os2.ico" 2 | -------------------------------------------------------------------------------- /sound/notification.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuiteRSS/quiterss/a672609940a49776eb097abe99fa2a5b39578872/sound/notification.wav -------------------------------------------------------------------------------- /src/VersionNo.h: -------------------------------------------------------------------------------- 1 | #include "VersionRev.h" 2 | 3 | #define STRDATE "21.04.2020\0" 4 | #define STRPRODUCTVER "0.19.4\0" 5 | 6 | #define VERSION 0,19,4 7 | #define PRODUCTVER VERSION,0 8 | #define FILEVER VERSION,VCS_REVISION 9 | 10 | #define _STRFILE_BUILD(n) #n 11 | #define STRFILE_BUILD(n) _STRFILE_BUILD(n) 12 | #define STRFILEVER_FULL STRPRODUCTVER "." STRFILE_BUILD(VCS_REVISION) "\0" 13 | -------------------------------------------------------------------------------- /src/aboutdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef ABOUTDIALOG_H 19 | #define ABOUTDIALOG_H 20 | 21 | #include "dialog.h" 22 | 23 | class AboutDialog : public Dialog 24 | { 25 | Q_OBJECT 26 | public: 27 | explicit AboutDialog(const QString &lang, QWidget *parent = 0); 28 | 29 | }; 30 | 31 | #endif // ABOUTDIALOG_H 32 | -------------------------------------------------------------------------------- /src/adblock/adblockaddsubscriptiondialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKADDSUBSCRIPTIONDIALOG_H 36 | #define ADBLOCKADDSUBSCRIPTIONDIALOG_H 37 | 38 | #include 39 | #include 40 | 41 | namespace Ui 42 | { 43 | class AdBlockAddSubscriptionDialog; 44 | } 45 | 46 | class AdBlockAddSubscriptionDialog : public QDialog 47 | { 48 | Q_OBJECT 49 | 50 | public: 51 | explicit AdBlockAddSubscriptionDialog(QWidget* parent = 0); 52 | ~AdBlockAddSubscriptionDialog(); 53 | 54 | QString title() const; 55 | QString url() const; 56 | 57 | private slots: 58 | void indexChanged(int index); 59 | 60 | private: 61 | Ui::AdBlockAddSubscriptionDialog* ui; 62 | 63 | struct Subscription { 64 | QString title; 65 | QString url; 66 | 67 | Subscription() {} 68 | 69 | Subscription(const QString &t, const QString &u) { 70 | title = t; 71 | url = u; 72 | } 73 | }; 74 | 75 | QVector m_knownSubscriptions; 76 | }; 77 | 78 | #endif // ADBLOCKADDSUBSCRIPTIONDIALOG_H 79 | -------------------------------------------------------------------------------- /src/adblock/adblockaddsubscriptiondialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | AdBlockAddSubscriptionDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 557 10 | 162 11 | 12 | 13 | 14 | Add Subscription 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Title: 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | Address: 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Qt::Horizontal 44 | 45 | 46 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 47 | 48 | 49 | 50 | 51 | 52 | 53 | Add new subscription to AdBlock: 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | buttonBox 63 | accepted() 64 | AdBlockAddSubscriptionDialog 65 | accept() 66 | 67 | 68 | 248 69 | 254 70 | 71 | 72 | 157 73 | 274 74 | 75 | 76 | 77 | 78 | buttonBox 79 | rejected() 80 | AdBlockAddSubscriptionDialog 81 | reject() 82 | 83 | 84 | 316 85 | 260 86 | 87 | 88 | 286 89 | 274 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /src/adblock/adblockdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKDIALOG_H 36 | #define ADBLOCKDIALOG_H 37 | 38 | #include 39 | 40 | #include "ui_adblockdialog.h" 41 | 42 | class AdBlockSubscription; 43 | class AdBlockTreeWidget; 44 | class AdBlockManager; 45 | class AdBlockRule; 46 | 47 | class AdBlockDialog : public QDialog, public Ui_AdBlockDialog 48 | { 49 | Q_OBJECT 50 | 51 | public: 52 | explicit AdBlockDialog(QWidget* parent = 0); 53 | 54 | void showRule(const AdBlockRule* rule) const; 55 | 56 | private slots: 57 | void addRule(); 58 | void removeRule(); 59 | 60 | void addSubscription(); 61 | void removeSubscription(); 62 | 63 | void currentChanged(int index); 64 | void filterString(const QString &string); 65 | void enableAdBlock(bool state); 66 | 67 | void aboutToShowMenu(); 68 | void learnAboutRules(); 69 | 70 | void loadSubscriptions(); 71 | void load(); 72 | 73 | private: 74 | void closeEvent(QCloseEvent* ev); 75 | 76 | AdBlockManager* m_manager; 77 | AdBlockTreeWidget* m_currentTreeWidget; 78 | AdBlockSubscription* m_currentSubscription; 79 | 80 | QAction* m_actionAddRule; 81 | QAction* m_actionRemoveRule; 82 | QAction* m_actionAddSubscription; 83 | QAction* m_actionRemoveSubscription; 84 | 85 | bool m_loaded; 86 | bool m_useLimitedEasyList; 87 | }; 88 | 89 | #endif // ADBLOCKDIALOG_H 90 | 91 | -------------------------------------------------------------------------------- /src/adblock/adblockicon.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKICON_H 36 | #define ADBLOCKICON_H 37 | 38 | #include 39 | 40 | #include "adblockrule.h" 41 | 42 | class QMenu; 43 | class QUrl; 44 | class MainWindow; 45 | 46 | class AdBlockIcon : public QToolButton 47 | { 48 | Q_OBJECT 49 | public: 50 | explicit AdBlockIcon(MainWindow *window, QWidget *parent = 0); 51 | ~AdBlockIcon(); 52 | 53 | void retranslateStrings(); 54 | void popupBlocked(const QString &ruleString, const QUrl &url); 55 | QAction* menuAction(); 56 | 57 | signals: 58 | void clicked(QPoint); 59 | 60 | public slots: 61 | void setEnabled(bool enabled); 62 | void createMenu(QMenu* menu = 0); 63 | 64 | private slots: 65 | void showMenu(const QPoint &pos); 66 | void toggleCustomFilter(); 67 | 68 | void animateIcon(); 69 | void stopAnimation(); 70 | 71 | private: 72 | void mouseReleaseEvent(QMouseEvent* event); 73 | 74 | MainWindow *m_window; 75 | QAction* m_menuAction; 76 | 77 | QVector > m_blockedPopups; 78 | QTimer* m_flashTimer; 79 | 80 | int m_timerTicks; 81 | bool m_enabled; 82 | }; 83 | 84 | #endif // ADBLOCKICON_H 85 | -------------------------------------------------------------------------------- /src/adblock/adblockmatcher.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKMATCHER_H 36 | #define ADBLOCKMATCHER_H 37 | 38 | #include 39 | #include 40 | #include 41 | 42 | #include "adblocksearchtree.h" 43 | 44 | class AdBlockManager; 45 | class AdBlockRule; 46 | 47 | class AdBlockMatcher : public QObject 48 | { 49 | Q_OBJECT 50 | 51 | public: 52 | explicit AdBlockMatcher(AdBlockManager* manager); 53 | ~AdBlockMatcher(); 54 | 55 | const AdBlockRule* match(const QNetworkRequest &request, const QString &urlDomain, const QString &urlString) const; 56 | 57 | bool adBlockDisabledForUrl(const QUrl &url) const; 58 | bool elemHideDisabledForUrl(const QUrl &url) const; 59 | 60 | QString elementHidingRules() const; 61 | QString elementHidingRulesForDomain(const QString &domain) const; 62 | 63 | public slots: 64 | void update(); 65 | void clear(); 66 | 67 | private slots: 68 | void enabledChanged(bool enabled); 69 | 70 | private: 71 | AdBlockManager* m_manager; 72 | 73 | QVector m_createdRules; 74 | QVector m_networkExceptionRules; 75 | QVector m_networkBlockRules; 76 | QVector m_domainRestrictedCssRules; 77 | QVector m_documentRules; 78 | QVector m_elemhideRules; 79 | 80 | QString m_elementHidingRules; 81 | AdBlockSearchTree m_networkBlockTree; 82 | AdBlockSearchTree m_networkExceptionTree; 83 | }; 84 | 85 | #endif // ADBLOCKMATCHER_H 86 | -------------------------------------------------------------------------------- /src/adblock/adblocksearchtree.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2013-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKSEARCHTREE_H 36 | #define ADBLOCKSEARCHTREE_H 37 | 38 | #include 39 | #include 40 | 41 | class QNetworkRequest; 42 | 43 | class AdBlockRule; 44 | 45 | class AdBlockSearchTree 46 | { 47 | public: 48 | explicit AdBlockSearchTree(); 49 | ~AdBlockSearchTree(); 50 | 51 | void clear(); 52 | 53 | bool add(const AdBlockRule* rule); 54 | const AdBlockRule* find(const QNetworkRequest &request, const QString &domain, const QString &urlString) const; 55 | 56 | private: 57 | struct Node { 58 | QChar c; 59 | const AdBlockRule* rule; 60 | QHash children; 61 | 62 | Node() : c(0) , rule(0) { } 63 | }; 64 | 65 | const AdBlockRule* prefixSearch(const QNetworkRequest &request, const QString &domain, 66 | const QString &urlString, const QChar* string, int len) const; 67 | 68 | void deleteNode(Node* node); 69 | 70 | Node* m_root; 71 | }; 72 | 73 | #endif // ADBLOCKSEARCHTREE_H 74 | -------------------------------------------------------------------------------- /src/adblock/adblocktreewidget.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef ADBLOCKTREEWIDGET_H 36 | #define ADBLOCKTREEWIDGET_H 37 | 38 | #include 39 | 40 | class AdBlockSubscription; 41 | class AdBlockRule; 42 | 43 | class AdBlockTreeWidget : public QTreeWidget 44 | { 45 | Q_OBJECT 46 | public: 47 | explicit AdBlockTreeWidget(AdBlockSubscription* subscription, QWidget* parent = 0); 48 | 49 | AdBlockSubscription* subscription() const; 50 | 51 | void showRule(const AdBlockRule* rule); 52 | void refresh(); 53 | 54 | public slots: 55 | void addRule(); 56 | void removeRule(); 57 | void filterString(const QString &string); 58 | void clear(); 59 | 60 | private slots: 61 | void contextMenuRequested(const QPoint &pos); 62 | void itemChanged(QTreeWidgetItem* item); 63 | void copyFilter(); 64 | 65 | void subscriptionUpdated(); 66 | void subscriptionError(const QString &message); 67 | 68 | private: 69 | void adjustItemFeatures(QTreeWidgetItem* item, const AdBlockRule* rule); 70 | void keyPressEvent(QKeyEvent* event); 71 | void addTopLevelItem(QTreeWidgetItem* item); 72 | QList allItems(); 73 | void iterateAllItems(QTreeWidgetItem* parent); 74 | 75 | AdBlockSubscription* m_subscription; 76 | QTreeWidgetItem* m_topItem; 77 | 78 | QString m_ruleToBeSelected; 79 | bool m_itemChangingBlock; 80 | 81 | bool m_refreshAllItemsNeeded; 82 | QList m_allTreeItems; 83 | 84 | }; 85 | 86 | #endif // ADBLOCKTREEWIDGET_H 87 | -------------------------------------------------------------------------------- /src/adblock/followredirectreply.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | 36 | #ifndef FOLLOWREDIRECTREPLY_H 37 | #define FOLLOWREDIRECTREPLY_H 38 | 39 | #include 40 | #include 41 | 42 | class QNetworkAccessManager; 43 | class QNetworkReply; 44 | class QUrl; 45 | 46 | class FollowRedirectReply : public QObject 47 | { 48 | Q_OBJECT 49 | public: 50 | explicit FollowRedirectReply(const QUrl &url, QNetworkAccessManager* manager); 51 | ~FollowRedirectReply(); 52 | 53 | QNetworkReply* reply() const; 54 | QUrl originalUrl() const; 55 | QUrl url() const; 56 | 57 | QNetworkReply::NetworkError error() const; 58 | QByteArray readAll(); 59 | 60 | signals: 61 | void finished(); 62 | 63 | private slots: 64 | void replyFinished(); 65 | 66 | private: 67 | QNetworkAccessManager* m_manager; 68 | QNetworkReply* m_reply; 69 | int m_redirectCount; 70 | 71 | }; 72 | 73 | #endif // FOLLOWREDIRECTREPLY_H 74 | -------------------------------------------------------------------------------- /src/addfeedwizard.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef ADDFEEDDIALOG_H 19 | #define ADDFEEDDIALOG_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #include 26 | #endif 27 | #include 28 | 29 | #include "lineedit.h" 30 | #include "updatefeeds.h" 31 | 32 | class AddFeedWizard : public QWizard 33 | { 34 | Q_OBJECT 35 | public: 36 | explicit AddFeedWizard(QWidget *parent, int curFolderId); 37 | ~AddFeedWizard(); 38 | 39 | void setUrlFeed(const QString &feedUrl); 40 | 41 | LineEdit *nameFeedEdit_; 42 | LineEdit *urlFeedEdit_; 43 | QString htmlUrlString_; 44 | QString feedUrlString_; 45 | int feedId_; 46 | int feedParentId_; 47 | int newCount_; 48 | 49 | public slots: 50 | void getUrlDone(int result, int feedId, QString feedUrlStr, 51 | QString error, QByteArray data, 52 | QDateTime dtReply, QString codecName); 53 | void slotUpdateFeed(int feedId, bool, int newCount, QString); 54 | 55 | signals: 56 | void xmlReadyParse(QByteArray data, int feedId, 57 | QDateTime dtReply, QString codecName); 58 | void signalRequestUrl(int feedId, QString urlString, 59 | QDateTime date, QString userInfo); 60 | 61 | protected: 62 | virtual bool validateCurrentPage(); 63 | virtual void done(int result); 64 | void changeEvent(QEvent *event); 65 | 66 | private slots: 67 | void urlFeedEditChanged(const QString&); 68 | void nameFeedEditChanged(const QString&); 69 | void backButtonClicked(); 70 | void nextButtonClicked(); 71 | void finishButtonClicked(); 72 | void slotCurrentIdChanged(int); 73 | void titleFeedAsNameStateChanged(int); 74 | void slotProgressBarUpdate(); 75 | void newFolder(); 76 | 77 | private: 78 | void addFeed(); 79 | void deleteFeed(); 80 | void showProgressBar(); 81 | void finish(); 82 | 83 | UpdateFeeds *updateFeeds_; 84 | QWizardPage *createUrlFeedPage(); 85 | QWizardPage *createNameFeedPage(); 86 | QCheckBox *titleFeedAsName_; 87 | QGroupBox *authentication_; 88 | LineEdit *user_; 89 | LineEdit *pass_; 90 | QLabel *textWarning; 91 | QWidget *warningWidget_; 92 | QProgressBar *progressBar_; 93 | bool selectedPage; 94 | bool finishOn; 95 | QTreeWidget *foldersTree_; 96 | int curFolderId_; 97 | 98 | }; 99 | 100 | #endif // ADDFEEDDIALOG_H 101 | -------------------------------------------------------------------------------- /src/addfolderdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef ADDFOLDERDIALOG_H 19 | #define ADDFOLDERDIALOG_H 20 | 21 | #include 22 | 23 | #include "dialog.h" 24 | #include "lineedit.h" 25 | 26 | class AddFolderDialog : public Dialog 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | explicit AddFolderDialog(QWidget *parent, int curFolderId = 0); 32 | 33 | LineEdit *nameFeedEdit_; 34 | QTreeWidget *foldersTree_; 35 | 36 | private slots: 37 | void nameFeedEditChanged(const QString&); 38 | 39 | }; 40 | 41 | #endif // ADDFOLDERDIALOG_H 42 | -------------------------------------------------------------------------------- /src/application/logfile.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef LOGFILE_H 19 | #define LOGFILE_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | const size_t maxLogFileSize = 1 * 1024 * 1024; //1 MB 28 | 29 | class LogFile 30 | { 31 | public: 32 | #ifdef HAVE_QT5 33 | static void msgHandler(QtMsgType type, const QMessageLogContext &, const QString &msg); 34 | #else 35 | static void msgHandler(QtMsgType type, const char *msg); 36 | #endif 37 | 38 | private: 39 | explicit LogFile(); 40 | 41 | }; 42 | 43 | #endif // LOGFILE_H 44 | -------------------------------------------------------------------------------- /src/application/settings.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "settings.h" 19 | 20 | #include 21 | 22 | QSettings *Settings::settings_ = 0; 23 | 24 | Settings::Settings() 25 | { 26 | if (!settings_->group().isEmpty()) 27 | settings_->endGroup(); 28 | } 29 | 30 | Settings::~Settings() 31 | { 32 | if (!settings_->group().isEmpty()) 33 | settings_->endGroup(); 34 | } 35 | 36 | void Settings::createSettings(const QString &fileName) 37 | { 38 | if (!fileName.isEmpty()) { 39 | settings_ = new QSettings(fileName, QSettings::IniFormat); 40 | } else { 41 | settings_ = new QSettings(QSettings::IniFormat, 42 | QSettings::UserScope, 43 | QCoreApplication::organizationName(), 44 | QCoreApplication::applicationName()); 45 | } 46 | } 47 | 48 | QSettings* Settings::getSettings() 49 | { 50 | return settings_; 51 | } 52 | 53 | void Settings::syncSettings() 54 | { 55 | settings_->sync(); 56 | } 57 | 58 | QString Settings::fileName() 59 | { 60 | return settings_->fileName(); 61 | } 62 | 63 | void Settings::beginGroup(const QString &prefix) 64 | { 65 | settings_->beginGroup(prefix); 66 | } 67 | 68 | void Settings::endGroup() 69 | { 70 | settings_->endGroup(); 71 | } 72 | 73 | void Settings::setValue(const QString &key, const QVariant &defaultValue) 74 | { 75 | settings_->setValue(key, defaultValue); 76 | } 77 | 78 | QVariant Settings::value(const QString &key, const QVariant &defaultValue) 79 | { 80 | return settings_->value(key, defaultValue); 81 | } 82 | 83 | bool Settings::contains(const QString &key) 84 | { 85 | return settings_->contains(key); 86 | } 87 | -------------------------------------------------------------------------------- /src/application/settings.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef SETTINGS_H 19 | #define SETTINGS_H 20 | 21 | #include 22 | #include 23 | 24 | class Settings 25 | { 26 | public: 27 | explicit Settings(); 28 | ~Settings(); 29 | 30 | static void createSettings(const QString &fileName = QString()); 31 | static QSettings* getSettings(); 32 | static void syncSettings(); 33 | QString fileName(); 34 | 35 | void beginGroup(const QString &prefix); 36 | void endGroup(); 37 | 38 | void setValue(const QString &key, const QVariant &defaultValue = QVariant()); 39 | QVariant value(const QString &key, const QVariant &defaultValue = QVariant()); 40 | bool contains(const QString &key); 41 | 42 | private: 43 | static QSettings* settings_; 44 | 45 | }; 46 | 47 | #endif // SETTINGS_H 48 | -------------------------------------------------------------------------------- /src/application/splashscreen.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "splashscreen.h" 19 | #include "VersionNo.h" 20 | 21 | SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags flag) 22 | : QSplashScreen(pixmap, flag) 23 | { 24 | setFixedSize(pixmap.width(), pixmap.height()); 25 | setContentsMargins(5, 0, 5, 0); 26 | setEnabled(false); 27 | showMessage("Prepare loading... " % 28 | QString("%1").arg(STRPRODUCTVER), 29 | Qt::AlignRight | Qt::AlignTop, Qt::darkGray); 30 | setAttribute(Qt::WA_DeleteOnClose); 31 | 32 | QFont font = this->font(); 33 | font.setPixelSize(12); 34 | setFont(font); 35 | 36 | splashProgress_.setObjectName("splashProgress"); 37 | splashProgress_.setTextVisible(false); 38 | splashProgress_.setFixedHeight(10); 39 | splashProgress_.setMaximum(100); 40 | splashProgress_.setValue(10); 41 | 42 | QVBoxLayout *layout = new QVBoxLayout(); 43 | layout->addStretch(1); 44 | layout->addWidget(&splashProgress_); 45 | setLayout(layout); 46 | } 47 | 48 | void SplashScreen::setProgress(int value) 49 | { 50 | qApp->processEvents(); 51 | splashProgress_.setValue(value); 52 | showMessage("Loading: " % QString::number(value) % "% " % 53 | QString("%1").arg(STRPRODUCTVER), 54 | Qt::AlignRight | Qt::AlignTop, Qt::darkGray); 55 | } 56 | -------------------------------------------------------------------------------- /src/application/splashscreen.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef SPLASHSCREEN_H 19 | #define SPLASHSCREEN_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class SplashScreen : public QSplashScreen 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit SplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flag = 0); 32 | 33 | void setProgress(int value); 34 | 35 | private: 36 | QProgressBar splashProgress_; 37 | 38 | }; 39 | 40 | #endif // SPLASHSCREEN_H 41 | -------------------------------------------------------------------------------- /src/categoriestreewidget.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef CATEGORIESTREEWIDGET_H 19 | #define CATEGORIESTREEWIDGET_H 20 | 21 | #include 22 | #ifdef HAVE_QT5 23 | #include 24 | #else 25 | #include 26 | #endif 27 | 28 | class CategoriesTreeWidget : public QTreeWidget 29 | { 30 | Q_OBJECT 31 | public: 32 | explicit CategoriesTreeWidget(QWidget *parent = 0); 33 | 34 | enum Items {UnreadItem, StarredItem, DeletedItem, LabelsItem}; 35 | enum LabelRole {ImageRole = Qt::UserRole+1, NumRole, colorBgRole, colorTextRole}; 36 | 37 | QList getLabelListItems() const { 38 | QList items; 39 | for (int i = 0; i < topLevelItem(LabelsItem)->childCount(); ++i) { 40 | items.append(topLevelItem(LabelsItem)->child(i)); 41 | } 42 | return items; 43 | } 44 | QTreeWidgetItem* getLabelItem(int id) const { 45 | for (int i = 0; i < topLevelItem(LabelsItem)->childCount(); ++i) { 46 | QTreeWidgetItem *item = topLevelItem(LabelsItem)->child(i); 47 | if (item->text(2).toInt() == id) 48 | return item; 49 | } 50 | return 0; 51 | } 52 | int labelsCount() const { 53 | return topLevelItem(LabelsItem)->childCount(); 54 | } 55 | 56 | signals: 57 | void signalMiddleClicked(); 58 | void signalClearDeleted(); 59 | void signalMarkRead(QTreeWidgetItem *item); 60 | // void pressKeyUp(); 61 | // void pressKeyDown(); 62 | 63 | protected: 64 | virtual void mousePressEvent(QMouseEvent*); 65 | // virtual void keyPressEvent(QKeyEvent*); 66 | 67 | private slots: 68 | void showContextMenuCategory(const QPoint &pos); 69 | void openCategoryNewTab(); 70 | 71 | void slotMarkRead(); 72 | 73 | private: 74 | QTreeWidgetItem *itemClicked_; 75 | 76 | }; 77 | 78 | #endif // CATEGORIESTREEWIDGET_H 79 | -------------------------------------------------------------------------------- /src/cleanupwizard.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef CLEANUPWIZARD_H 19 | #define CLEANUPWIZARD_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class CleanUpWizard : public QWizard 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit CleanUpWizard(QWidget *parent); 32 | ~CleanUpWizard(); 33 | 34 | signals: 35 | void signalStartCleanUp(bool isShutdown, QStringList feedsIdList, 36 | QList foldersIdList); 37 | 38 | public slots: 39 | void finishCleanUp(int countDeleted); 40 | 41 | protected: 42 | virtual void closeEvent(QCloseEvent*); 43 | virtual bool validateCurrentPage(); 44 | 45 | private slots: 46 | void currentIdChanged(int); 47 | void finishButtonClicked(); 48 | void feedItemChanged(QTreeWidgetItem *item, int column); 49 | void setCheckStateItem(QTreeWidgetItem *item, Qt::CheckState state); 50 | 51 | private: 52 | QWizardPage *createChooseFeedsPage(); 53 | QWizardPage *createCleanUpOptionsPage(); 54 | 55 | bool selectedPage_; 56 | bool itemNotChecked_; 57 | QTreeWidget *feedsTree_; 58 | QCheckBox *dayCleanUpOn_; 59 | QSpinBox *maxDayCleanUp_; 60 | QCheckBox *newsCleanUpOn_; 61 | QSpinBox *maxNewsCleanUp_; 62 | QCheckBox *readCleanUp_; 63 | QCheckBox *neverUnreadCleanUp_; 64 | QCheckBox *neverStarCleanUp_; 65 | QCheckBox *neverLabelCleanUp_; 66 | QCheckBox *cleanUpDeleted_; 67 | QCheckBox *fullCleanUp_; 68 | QProgressBar *progressBar_; 69 | 70 | }; 71 | 72 | #endif // CLEANUPWIZARD_H 73 | -------------------------------------------------------------------------------- /src/common/common.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef COMMON_H 19 | #define COMMON_H 20 | 21 | #include 22 | #include 23 | 24 | #define TRACKING_ID "UA-99877778-1" 25 | 26 | #define ADBLOCK_EASYLIST_URL "https://easylist-downloads.adblockplus.org/easylist.txt" 27 | 28 | #ifndef Q_UNLIKELY 29 | #define Q_UNLIKELY(x) x 30 | #endif 31 | 32 | #ifndef QSL 33 | #if QT_VERSION >= 0x050000 34 | #define QSL(x) QStringLiteral(x) 35 | #else 36 | #define QSL(x) QLatin1String(x) 37 | #endif 38 | #endif 39 | 40 | #ifndef QL1S 41 | #define QL1S(x) QLatin1String(x) 42 | #endif 43 | 44 | #ifndef QL1C 45 | #define QL1C(x) QLatin1Char(x) 46 | #endif 47 | 48 | namespace Common 49 | { 50 | #if defined(Q_OS_WIN) || defined(Q_OS_OS2) 51 | static const QString Qz_RAWVCS = "https://raw.githubusercontent.com/QupZilla/qupzilla/v1.8"; 52 | #endif 53 | 54 | bool removePath(const QString &path); 55 | bool matchDomain(const QString &pattern, const QString &domain); 56 | QString filterCharsFromFilename(const QString &name); 57 | QString ensureUniqueFilename(const QString &name, const QString &appendFormat = QString("(%1)")); 58 | void createFileBackup(const QString &oldFilename, const QString &oldVersion); 59 | 60 | QString readAllFileContents(const QString &filename); 61 | QByteArray readAllFileByteContents(const QString &filename); 62 | 63 | void sleep(int ms); 64 | 65 | QString operatingSystem(); 66 | QString cpuArchitecture(); 67 | QString operatingSystemLong(); 68 | } 69 | 70 | #endif // COMMON_H 71 | -------------------------------------------------------------------------------- /src/common/delegatewithoutfocus.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "delegatewithoutfocus.h" 19 | 20 | DelegateWithoutFocus::DelegateWithoutFocus(QObject *parent) 21 | :QStyledItemDelegate(parent) 22 | { 23 | } 24 | 25 | void DelegateWithoutFocus::paint(QPainter *painter, 26 | const QStyleOptionViewItem &option, 27 | const QModelIndex &index) const 28 | { 29 | #if QT_VERSION >= 0x050000 30 | QStyleOptionViewItem opt = option; 31 | #else 32 | QStyleOptionViewItemV4 opt = option; 33 | #endif 34 | opt.state &= ~QStyle::State_HasFocus; 35 | QStyledItemDelegate::paint(painter,opt,index); 36 | } 37 | -------------------------------------------------------------------------------- /src/common/delegatewithoutfocus.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef DELEGATEWITHOUTFOCUS_H 19 | #define DELEGATEWITHOUTFOCUS_H 20 | 21 | #include 22 | 23 | class DelegateWithoutFocus: public QStyledItemDelegate 24 | { 25 | void paint(QPainter *painter, const QStyleOptionViewItem &option, 26 | const QModelIndex &index) const; 27 | 28 | public: 29 | DelegateWithoutFocus(QObject *parent); 30 | 31 | }; 32 | 33 | #endif // DELEGATEWITHOUTFOCUS_H 34 | -------------------------------------------------------------------------------- /src/common/dialog.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "dialog.h" 19 | 20 | Dialog::Dialog(QWidget *parent, Qt::WindowFlags flag) 21 | : QDialog(parent, flag) 22 | { 23 | pageLayout = new QVBoxLayout(); 24 | pageLayout->setContentsMargins(10, 10, 10, 5); 25 | pageLayout->setSpacing(5); 26 | 27 | buttonBox = new QDialogButtonBox(); 28 | 29 | buttonsLayout = new QHBoxLayout(); 30 | buttonsLayout->setMargin(10); 31 | buttonsLayout->addWidget(buttonBox); 32 | 33 | QFrame *line = new QFrame(); 34 | line->setFrameStyle(QFrame::HLine | QFrame::Sunken); 35 | 36 | mainLayout = new QVBoxLayout(); 37 | mainLayout->setMargin(0); 38 | mainLayout->setSpacing(0); 39 | mainLayout->addLayout(pageLayout, 1); 40 | mainLayout->addWidget(line); 41 | mainLayout->addLayout(buttonsLayout); 42 | setLayout(mainLayout); 43 | 44 | connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); 45 | } 46 | -------------------------------------------------------------------------------- /src/common/dialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef DIALOG_H 19 | #define DIALOG_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class Dialog : public QDialog 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit Dialog(QWidget *parent, Qt::WindowFlags flag = 0); 32 | 33 | QVBoxLayout *mainLayout; 34 | QVBoxLayout *pageLayout; 35 | QHBoxLayout *buttonsLayout; 36 | 37 | QDialogButtonBox *buttonBox; 38 | 39 | }; 40 | 41 | #endif // DIALOG_H 42 | -------------------------------------------------------------------------------- /src/common/lineedit.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /**************************************************************************** 19 | ** 20 | ** Copyright (c) 2007 Trolltech ASA 21 | ** 22 | ** Use, modification and distribution is allowed without limitation, 23 | ** warranty, liability or support of any kind. 24 | ** 25 | ****************************************************************************/ 26 | #ifndef LINEEDIT_H 27 | #define LINEEDIT_H 28 | 29 | #include 30 | #include 31 | 32 | class QToolButton; 33 | 34 | class LineEdit : public QLineEdit 35 | { 36 | Q_OBJECT 37 | public: 38 | LineEdit(QWidget *parent = 0, const QString &text = ""); 39 | QLabel *textLabel_; 40 | 41 | signals: 42 | void signalClear(); 43 | 44 | protected: 45 | void resizeEvent(QResizeEvent *); 46 | void focusInEvent(QFocusEvent *event); 47 | void focusOutEvent(QFocusEvent *event); 48 | 49 | private slots: 50 | void updateClearButton(const QString &text); 51 | void slotClear(); 52 | 53 | private: 54 | QToolButton *clearButton; 55 | 56 | }; 57 | 58 | #endif // LIENEDIT_H 59 | 60 | -------------------------------------------------------------------------------- /src/common/toolbutton.cpp: -------------------------------------------------------------------------------- 1 | #include "toolbutton.h" 2 | 3 | #ifdef Q_OS_MAC 4 | ToolButton::ToolButton(QWidget *parent) 5 | : QPushButton(parent) 6 | , autoRise_(false) 7 | , buttonFixedSize_(18, 18) 8 | { 9 | } 10 | 11 | void ToolButton::setIconSize(const QSize &size) 12 | { 13 | QPushButton::setIconSize(size); 14 | buttonFixedSize_ = QSize(size.width() + 2, size.height() + 2); 15 | } 16 | 17 | void ToolButton::setAutoRaise(bool enable) 18 | { 19 | autoRise_ = enable; 20 | setFlat(enable); 21 | if (enable) { 22 | setFixedSize(buttonFixedSize_); 23 | } 24 | } 25 | 26 | bool ToolButton::autoRaise() const 27 | { 28 | return autoRise_; 29 | } 30 | #else 31 | ToolButton::ToolButton(QWidget *parent) 32 | : QToolButton(parent) 33 | { 34 | } 35 | #endif 36 | -------------------------------------------------------------------------------- /src/common/toolbutton.h: -------------------------------------------------------------------------------- 1 | #ifndef TOOLBUTTON_H 2 | #define TOOLBUTTON_H 3 | 4 | #include 5 | #include 6 | 7 | #ifdef Q_OS_MAC 8 | class ToolButton : public QPushButton 9 | { 10 | Q_OBJECT 11 | public: 12 | explicit ToolButton(QWidget *parent = 0); 13 | 14 | void setIconSize(const QSize &size); 15 | 16 | void setAutoRaise(bool enable); 17 | bool autoRaise() const; 18 | 19 | private: 20 | bool autoRise_; 21 | QSize buttonFixedSize_; 22 | 23 | }; 24 | #else 25 | class ToolButton : public QToolButton 26 | { 27 | Q_OBJECT 28 | public: 29 | explicit ToolButton(QWidget *parent = 0); 30 | 31 | }; 32 | #endif 33 | 34 | #endif // TOOLBUTTON_H 35 | -------------------------------------------------------------------------------- /src/customizetoolbardialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef CUSTOMIZETOOLBARDIALOG_H 19 | #define CUSTOMIZETOOLBARDIALOG_H 20 | 21 | #include "dialog.h" 22 | 23 | class CustomizeToolbarDialog : public Dialog 24 | { 25 | Q_OBJECT 26 | public: 27 | explicit CustomizeToolbarDialog(QWidget *parent, QToolBar *toolbar); 28 | 29 | private slots: 30 | void acceptDialog(); 31 | void closeDialog(); 32 | 33 | void showMenuAddButton(); 34 | void addShortcut(QAction *action); 35 | void removeShortcut(); 36 | void moveUpShortcut(); 37 | void moveDownShortcut(); 38 | void defaultShortcut(); 39 | 40 | void slotCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *); 41 | 42 | private: 43 | QToolBar *toolbar_; 44 | QTreeWidget *shortcutTree_; 45 | 46 | QComboBox *styleBox_; 47 | QComboBox *iconBox_; 48 | 49 | QMenu *addButtonMenu_; 50 | 51 | QPushButton *addButton_; 52 | QPushButton *removeButton_; 53 | QPushButton *moveUpButton_; 54 | QPushButton *moveDownButton_; 55 | 56 | }; 57 | 58 | #endif // CUSTOMIZETOOLBARDIALOG_H 59 | -------------------------------------------------------------------------------- /src/database/database.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef DATABASE_H 19 | #define DATABASE_H 20 | 21 | #include 22 | #include 23 | 24 | class Database : public QObject 25 | { 26 | Q_OBJECT 27 | public: 28 | static int version(); 29 | static void initialization(); 30 | static QSqlDatabase connection(const QString &connectionName = QString()); 31 | static void sqliteDBMemFile(QSqlDatabase &db, bool save = true); 32 | static void setVacuum(); 33 | 34 | private: 35 | static void setPragma(QSqlDatabase &db); 36 | static void createTables(QSqlDatabase &db); 37 | static void prepareDatabase(); 38 | static void createLabels(QSqlDatabase &db); 39 | static void addColumnsToFeedsTables(QSqlDatabase &db); 40 | 41 | static QStringList tablesList() { 42 | QStringList tables; 43 | tables << "feeds" << "news" << "feeds_ex" 44 | << "news_ex" << "filters" << "filterConditions" 45 | << "filterActions" << "filters_ex" << "labels" 46 | << "passwords" << "info"; 47 | return tables; 48 | } 49 | 50 | }; 51 | 52 | #endif // DATABASE_H 53 | -------------------------------------------------------------------------------- /src/downloads/downloadmanager.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef DOWNLOADMANAGER_H 19 | #define DOWNLOADMANAGER_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | class DownloadItem; 29 | 30 | class DownloadManager : public QWidget 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit DownloadManager(QWidget *parent = 0); 36 | ~DownloadManager(); 37 | 38 | void download(const QNetworkRequest &request); 39 | void handleUnsupportedContent(QNetworkReply *reply, bool askDownloadLocation); 40 | void startExternalApp(const QString &executable, const QUrl &url); 41 | void retranslateStrings(); 42 | 43 | public slots: 44 | void ftpAuthentication(const QUrl &url, QAuthenticator *auth); 45 | 46 | signals: 47 | void signalItemCreated(QListWidgetItem* item, DownloadItem* downItem); 48 | void signalShowDownloads(bool activate); 49 | void signalUpdateInfo(const QString &text); 50 | 51 | private slots: 52 | QString getFileName(QNetworkReply* reply); 53 | void itemCreated(QListWidgetItem* item, DownloadItem* downItem); 54 | void clearList(); 55 | void deleteItem(DownloadItem* item); 56 | void updateInfo(); 57 | 58 | private: 59 | QListWidget *listWidget_; 60 | QAction *listClaerAct_; 61 | QTimer updateInfoTimer_; 62 | 63 | }; 64 | 65 | #endif // DOWNLOADMANAGER_H 66 | -------------------------------------------------------------------------------- /src/faviconobject.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef FAVICONOBJECT_H 19 | #define FAVICONOBJECT_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #include "networkmanager.h" 28 | 29 | class FaviconObject : public QObject 30 | { 31 | Q_OBJECT 32 | 33 | public: 34 | explicit FaviconObject(QObject *parent = 0); 35 | 36 | void disconnectObjects(); 37 | 38 | public slots: 39 | void requestUrl(QString urlString, QString feedUrl); 40 | void slotGet(const QUrl &getUrl, const QString &feedUrl, const int &count); 41 | 42 | signals: 43 | void startTimer(); 44 | void signalGet(const QUrl &getUrl, const QString &feedUrl, const int &count); 45 | void signalIconRecived(QString feedUrl, QByteArray byteArray, QString format); 46 | 47 | private slots: 48 | void getQueuedUrl(); 49 | void finished(QNetworkReply *reply); 50 | void slotRequestTimeout(); 51 | 52 | private: 53 | NetworkManager *networkManager_; 54 | 55 | QQueue urlsQueue_; 56 | QQueue feedsQueue_; 57 | 58 | QTimer *timeout_; 59 | QTimer *getUrlTimer_; 60 | QList currentUrls_; 61 | QList currentFeeds_; 62 | QList currentCntRequests_; 63 | QList currentTime_; 64 | QList requestUrl_; 65 | QList networkReply_; 66 | QList hostList_; 67 | 68 | }; 69 | 70 | #endif // FAVICONOBJECT_H 71 | -------------------------------------------------------------------------------- /src/feedsview/feedsproxymodel.h: -------------------------------------------------------------------------------- 1 | #ifndef FEEDSPROXYMODEL_H 2 | #define FEEDSPROXYMODEL_H 3 | 4 | #include 5 | 6 | class FeedsProxyModel : public QSortFilterProxyModel 7 | { 8 | Q_OBJECT 9 | public: 10 | FeedsProxyModel(QObject *parent = 0); 11 | ~FeedsProxyModel(); 12 | 13 | void reset(); 14 | void setFilter(const QString &filterAct, const QList &idList, 15 | const QString &findAct, const QString &findText); 16 | QModelIndex mapFromSource(const QModelIndex & sourceIndex) const; 17 | QModelIndex mapFromSource(int id) const; 18 | QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const; 19 | QModelIndex index(int row, const QString &fieldName, const QModelIndex & parent = QModelIndex()) const; 20 | 21 | private: 22 | bool filterAcceptsRow(int source_row, const QModelIndex &sourceParent) const; 23 | bool acceptFolder(const QModelIndex &indexFolder) const; 24 | QString filterAct_; 25 | QList idList_; 26 | QString findAct_; 27 | QString findText_; 28 | 29 | }; 30 | 31 | #endif // FEEDSPROXYMODEL_H 32 | -------------------------------------------------------------------------------- /src/findfeed.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef FINDFEED_H 19 | #define FINDFEED_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class FindFeed : public QLineEdit 28 | { 29 | Q_OBJECT 30 | public: 31 | FindFeed(QWidget *parent = 0); 32 | void retranslateStrings(); 33 | 34 | QActionGroup *findGroup_; 35 | 36 | signals: 37 | void signalClear(); 38 | void signalSelectFind(); 39 | void signalVisible(bool); 40 | 41 | protected: 42 | void keyPressEvent(QKeyEvent *event); 43 | void resizeEvent(QResizeEvent *); 44 | void focusInEvent(QFocusEvent *event); 45 | void focusOutEvent(QFocusEvent *event); 46 | 47 | private slots: 48 | void updateClearButton(const QString &text); 49 | void slotClear(); 50 | void slotMenuFind(); 51 | void slotSelectFind(QAction *act); 52 | 53 | private: 54 | QMenu *findMenu_; 55 | QAction *findNameAct_; 56 | QAction *findLinkAct_; 57 | 58 | QLabel *findLabel_; 59 | QToolButton *findButton_; 60 | QToolButton *clearButton_; 61 | 62 | }; 63 | 64 | #endif // FINDFEED_H 65 | -------------------------------------------------------------------------------- /src/findtext.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef FINDTEXT_H 19 | #define FINDTEXT_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class FindTextContent : public QLineEdit 28 | { 29 | Q_OBJECT 30 | public: 31 | FindTextContent(QWidget *parent = 0); 32 | void retranslateStrings(); 33 | 34 | QActionGroup *findGroup_; 35 | 36 | signals: 37 | void signalClear(); 38 | void signalSelectFind(); 39 | void signalVisible(bool); 40 | 41 | protected: 42 | void keyPressEvent(QKeyEvent *event); 43 | void resizeEvent(QResizeEvent *); 44 | void focusInEvent(QFocusEvent *event); 45 | void focusOutEvent(QFocusEvent *event); 46 | 47 | private slots: 48 | void updateClearButton(const QString &text); 49 | void slotClear(); 50 | void slotMenuFind(); 51 | void slotSelectFind(QAction *act); 52 | 53 | private: 54 | QMenu *findMenu_; 55 | QAction *findInNewsAct_; 56 | QAction *findTitleAct_; 57 | QAction *findAuthorAct_; 58 | QAction *findCategoryAct_; 59 | QAction *findContentAct_; 60 | QAction *findLinkAct_; 61 | QAction *findInBrowserAct_; 62 | 63 | QLabel *findLabel_; 64 | QToolButton *findButton_; 65 | QToolButton *clearButton_; 66 | 67 | }; 68 | 69 | #endif // FINDTEXT_H 70 | -------------------------------------------------------------------------------- /src/labeldialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NEWSLABELDIALOG_H 19 | #define NEWSLABELDIALOG_H 20 | 21 | #include "dialog.h" 22 | #include "lineedit.h" 23 | 24 | class LabelDialog : public Dialog 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit LabelDialog(QWidget *parent); 29 | 30 | void loadData(); 31 | 32 | LineEdit *nameEdit_; 33 | QIcon icon_; 34 | QString colorTextStr_; 35 | QString colorBgStr_; 36 | 37 | private slots: 38 | void nameEditChanged(const QString&); 39 | void selectIcon(QAction *action); 40 | void loadIcon(); 41 | void defaultColorText(); 42 | void selectColorText(); 43 | void defaultColorBg(); 44 | void selectColorBg(); 45 | 46 | private: 47 | QToolButton *iconButton_; 48 | QToolButton *colorTextButton_; 49 | QToolButton *colorBgButton_; 50 | 51 | }; 52 | 53 | #endif // NEWSLABELDIALOG_H 54 | -------------------------------------------------------------------------------- /src/main/globals.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef GLOBALS_H 19 | #define GLOBALS_H 20 | 21 | #include 22 | 23 | class Globals 24 | { 25 | public: 26 | Globals(); 27 | 28 | void init(); 29 | 30 | QString userAgent() const { return userAgent_; } 31 | 32 | // public on purpose 33 | const bool logFileOutput_; 34 | bool noDebugOutput_; 35 | bool isInit_; 36 | bool isPortable_; 37 | QString resourcesDir_; 38 | QString dataDir_; 39 | QString cacheDir_; 40 | QString soundNotifyDir_; 41 | 42 | private: 43 | QString userAgent_; 44 | 45 | }; 46 | 47 | extern Globals globals; 48 | 49 | #endif // GLOBALS_H 50 | -------------------------------------------------------------------------------- /src/main/main.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "globals.h" 19 | #include "mainapplication.h" 20 | #include "logfile.h" 21 | #if defined(Q_OS_WIN) 22 | #include 23 | #endif 24 | 25 | int main(int argc, char **argv) 26 | { 27 | if (globals.logFileOutput_) { 28 | #if defined(HAVE_QT5) 29 | qInstallMessageHandler(LogFile::msgHandler); 30 | #else 31 | qInstallMsgHandler(LogFile::msgHandler); 32 | #endif 33 | } 34 | 35 | #if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0) 36 | 37 | #elif QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) 38 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 39 | #elif QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) 40 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 41 | qputenv("QT_DEVICE_PIXEL_RATIO", "auto"); 42 | #endif 43 | 44 | MainApplication app(argc, argv); 45 | 46 | if (app.isClosing()) 47 | return 0; 48 | 49 | return app.exec(); 50 | } 51 | -------------------------------------------------------------------------------- /src/network/authenticationdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef AUTHENTICATIONDIALOG_H 19 | #define AUTHENTICATIONDIALOG_H 20 | 21 | #include 22 | #include 23 | 24 | #include "dialog.h" 25 | #include "lineedit.h" 26 | 27 | class AuthenticationDialog : public Dialog 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | explicit AuthenticationDialog(const QUrl &url, 33 | QAuthenticator *auth, 34 | QWidget *parent = 0); 35 | QCheckBox* save_; 36 | 37 | private slots: 38 | void acceptDialog(); 39 | 40 | private: 41 | QAuthenticator *auth_; 42 | 43 | QString server_; 44 | LineEdit *user_; 45 | LineEdit *pass_; 46 | 47 | }; 48 | 49 | #endif // AUTHENTICATIONDIALOG_H 50 | -------------------------------------------------------------------------------- /src/network/cabundleupdater.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef CABUNDLEUPDATER_H 36 | #define CABUNDLEUPDATER_H 37 | 38 | #include 39 | 40 | class QNetworkReply; 41 | 42 | class NetworkManager; 43 | 44 | class CaBundleUpdater : public QObject 45 | { 46 | Q_OBJECT 47 | public: 48 | explicit CaBundleUpdater(NetworkManager* manager, QObject* parent = 0); 49 | 50 | signals: 51 | 52 | public slots: 53 | 54 | private slots: 55 | void start(); 56 | void replyFinished(); 57 | 58 | private: 59 | enum Progress { Start, CheckLastUpdate, LoadBundle }; 60 | 61 | NetworkManager* m_manager; 62 | Progress m_progress; 63 | QNetworkReply* m_reply; 64 | 65 | QString m_bundleVersionFileName; 66 | QString m_bundleFileName; 67 | QString m_lastUpdateFileName; 68 | 69 | int m_latestBundleVersion; 70 | }; 71 | 72 | #endif // CABUNDLEUPDATER_H 73 | -------------------------------------------------------------------------------- /src/network/cookiejar.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef COOKIEJAR_H 19 | #define COOKIEJAR_H 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | enum UseCookies { 26 | BlockCookies, 27 | SaveCookies, 28 | DeleteCookiesOnClose 29 | }; 30 | 31 | class CookieJar : public QNetworkCookieJar 32 | { 33 | Q_OBJECT 34 | public: 35 | explicit CookieJar(QObject *parent); 36 | 37 | bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); 38 | 39 | QList getAllCookies(); 40 | void setAllCookies(const QList &cookieList); 41 | 42 | void saveCookies(); 43 | void loadCookies(); 44 | 45 | UseCookies useCookies() const; 46 | void setUseCookies(UseCookies value); 47 | 48 | public slots: 49 | void clearCookies(); 50 | 51 | private: 52 | UseCookies useCookies_; 53 | 54 | }; 55 | 56 | #endif // COOKIEJAR_H 57 | -------------------------------------------------------------------------------- /src/network/networkmanager.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NETWORKMANAGER_H 19 | #define NETWORKMANAGER_H 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | class AdBlockManager; 26 | 27 | class NetworkManager : public QNetworkAccessManager 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit NetworkManager(bool isThread, QObject *parent = 0); 32 | ~NetworkManager(); 33 | 34 | QNetworkReply *createRequest(QNetworkAccessManager::Operation op, 35 | const QNetworkRequest &request, 36 | QIODevice *outgoingData); 37 | 38 | void loadSettings(); 39 | void loadCertificates(); 40 | 41 | private slots: 42 | void slotAuthentication(QNetworkReply *reply, QAuthenticator *auth); 43 | void slotProxyAuthentication(const QNetworkProxy &proxy, QAuthenticator *auth); 44 | void slotSslError(QNetworkReply *reply, QList errors); 45 | 46 | private: 47 | void addRejectedCerts(const QList &certs); 48 | bool containsRejectedCerts(const QList &certs); 49 | void addLocalCertificate(const QSslCertificate &cert); 50 | void removeLocalCertificate(const QSslCertificate &cert); 51 | 52 | QStringList certPaths_; 53 | QList caCerts_; 54 | QList localCerts_; 55 | QList tempAllowedCerts_; 56 | bool ignoreAllWarnings_; 57 | QList rejectedSslCerts_; 58 | 59 | AdBlockManager *adblockManager_; 60 | 61 | }; 62 | 63 | #endif // NETWORKMANAGER_H 64 | -------------------------------------------------------------------------------- /src/network/networkmanagerproxy.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | /* ============================================================ 19 | * QupZilla - WebKit based browser 20 | * Copyright (C) 2010-2014 David Rosca 21 | * 22 | * This program is free software: you can redistribute it and/or modify 23 | * it under the terms of the GNU General Public License as published by 24 | * the Free Software Foundation, either version 3 of the License, or 25 | * (at your option) any later version. 26 | * 27 | * This program is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 30 | * GNU General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU General Public License 33 | * along with this program. If not, see . 34 | * ============================================================ */ 35 | #ifndef NETWORKMANAGERPROXY_H 36 | #define NETWORKMANAGERPROXY_H 37 | 38 | #include 39 | 40 | #include "networkmanager.h" 41 | 42 | class WebPage; 43 | 44 | class NetworkManagerProxy : public QNetworkAccessManager 45 | { 46 | Q_OBJECT 47 | public: 48 | explicit NetworkManagerProxy(WebPage* page, QObject* parent = 0); 49 | 50 | QNetworkReply* createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice* outgoingData); 51 | 52 | void disconnectObjects(); 53 | 54 | private slots: 55 | void slotSslError(QNetworkReply *reply, QList errors); 56 | 57 | private: 58 | WebPage* page_; 59 | 60 | }; 61 | 62 | #endif // NETWORKMANAGERPROXY_H 63 | -------------------------------------------------------------------------------- /src/network/sslerrordialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef SSLERRORDIALOG_H 19 | #define SSLERRORDIALOG_H 20 | 21 | #include "dialog.h" 22 | 23 | #include 24 | 25 | class SslErrorDialog : public Dialog 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | enum Result { Yes, No, OnlyForThisSession }; 31 | 32 | explicit SslErrorDialog(QWidget* parent = 0); 33 | ~SslErrorDialog(); 34 | 35 | void setText(const QString &text); 36 | Result result(); 37 | 38 | static QString certificateItemText(const QSslCertificate &cert); 39 | static QString clearCertSpecialSymbols(const QString &string); 40 | static QString clearCertSpecialSymbols(const QStringList &stringList); 41 | 42 | private slots: 43 | void buttonClicked(QAbstractButton* button); 44 | 45 | private: 46 | QLabel *errorLabel_; 47 | Result result_; 48 | 49 | }; 50 | 51 | #endif // SSLERRORDIALOG_H 52 | -------------------------------------------------------------------------------- /src/newsfilters/filterrulesdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef FILTERRULES_H 19 | #define FILTERRULES_H 20 | 21 | #include "dialog.h" 22 | #include "itemcondition.h" 23 | #include "itemaction.h" 24 | 25 | class FilterRulesDialog : public Dialog 26 | { 27 | Q_OBJECT 28 | public: 29 | explicit FilterRulesDialog(QWidget *parent, int filterId, int feedId = -1); 30 | 31 | LineEdit *filterName_; 32 | int filterId_; 33 | bool itemNotChecked_; 34 | 35 | private slots: 36 | void feedItemChanged(QTreeWidgetItem *item, int column); 37 | void setCheckStateItem(QTreeWidgetItem *item, Qt::CheckState state); 38 | void closeDialog(); 39 | void acceptDialog(); 40 | 41 | void filterNameChanged(const QString &text); 42 | 43 | ItemCondition *addCondition(); 44 | void deleteCondition(ItemCondition *item); 45 | 46 | ItemAction *addAction(); 47 | void deleteAction(ItemAction *item); 48 | 49 | void selectMatch(int index); 50 | 51 | private: 52 | void setData(); 53 | 54 | QTreeWidget *feedsTree_; 55 | 56 | QComboBox *matchComboBox_; 57 | 58 | QScrollArea *conditionScrollArea_; 59 | QVBoxLayout *conditionLayout_; 60 | QWidget *conditionWidget_; 61 | 62 | QScrollArea *actionsScrollArea_; 63 | QVBoxLayout *actionsLayout_; 64 | QWidget *actionsWidget_; 65 | 66 | QLabel *textWarning_; 67 | QWidget *warningWidget_; 68 | 69 | }; 70 | 71 | #endif // FILTERRULES_H 72 | -------------------------------------------------------------------------------- /src/newsfilters/itemaction.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef ITEMACTION_H 19 | #define ITEMACTION_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | #include "lineedit.h" 28 | #include "toolbutton.h" 29 | 30 | class ItemAction : public QWidget 31 | { 32 | Q_OBJECT 33 | public: 34 | explicit ItemAction(QWidget * parent = 0); 35 | 36 | QComboBox *comboBox1_; 37 | QComboBox *comboBox2_; 38 | QWidget *soundWidget_; 39 | QLineEdit *soundPathEdit_; 40 | ToolButton *selectionSound_; 41 | ToolButton *playSound_; 42 | ToolButton *colorButton_; 43 | 44 | ToolButton *addButton_; 45 | 46 | signals: 47 | void signalDeleteAction(ItemAction *item); 48 | void signalPlaySound(const QString &soundPath); 49 | 50 | private slots: 51 | void deleteFilterAction(); 52 | void currentIndexChanged(int index); 53 | void selectionSound(); 54 | void slotPlaySound(); 55 | void selectColorText(); 56 | 57 | private: 58 | ToolButton *deleteButton_; 59 | 60 | }; 61 | 62 | #endif // ITEMACTION_H 63 | -------------------------------------------------------------------------------- /src/newsfilters/itemcondition.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef ITEMCONDITION_H 19 | #define ITEMCONDITION_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | #include "lineedit.h" 28 | #include "toolbutton.h" 29 | 30 | class ItemCondition : public QWidget 31 | { 32 | Q_OBJECT 33 | public: 34 | explicit ItemCondition(QWidget * parent = 0); 35 | 36 | QComboBox *comboBox1_; 37 | QComboBox *comboBox2_; 38 | QComboBox *comboBox3_; 39 | LineEdit *lineEdit_; 40 | 41 | ToolButton *addButton_; 42 | 43 | signals: 44 | void signalDeleteCondition(ItemCondition *item); 45 | 46 | private slots: 47 | void deleteFilterRules(); 48 | void currentIndexChanged(const QString &str); 49 | 50 | private: 51 | ToolButton *deleteButton_; 52 | 53 | }; 54 | 55 | #endif // ITEMCONDITION_H 56 | -------------------------------------------------------------------------------- /src/newsfilters/newsfiltersdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NEWSFILTERSDIALOG_H 19 | #define NEWSFILTERSDIALOG_H 20 | 21 | #include 22 | 23 | #include "dialog.h" 24 | 25 | class NewsFiltersDialog : public Dialog 26 | { 27 | Q_OBJECT 28 | public: 29 | explicit NewsFiltersDialog(QWidget *parent); 30 | QTreeWidget *filtersTree_; 31 | 32 | private slots: 33 | void closeDialog(); 34 | void newFilter(); 35 | void editFilter(); 36 | void deleteFilter(); 37 | 38 | void moveUpFilter(); 39 | void moveDownFilter(); 40 | 41 | void slotCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *); 42 | void slotItemChanged(QTreeWidgetItem *item,int column); 43 | 44 | void applyFilter(); 45 | 46 | private: 47 | QPushButton *editButton_; 48 | QPushButton *deleteButton_; 49 | QPushButton *moveUpButton_; 50 | QPushButton *moveDownButton_; 51 | QPushButton *runFilterButton_; 52 | 53 | }; 54 | 55 | #endif // NEWSFILTERSDIALOG_H 56 | -------------------------------------------------------------------------------- /src/newsview/newsheader.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NEWSHEADER_H 19 | #define NEWSHEADER_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | #include "newsmodel.h" 29 | 30 | class NewsTabWidget; 31 | 32 | class NewsHeader : public QHeaderView 33 | { 34 | Q_OBJECT 35 | 36 | public: 37 | NewsHeader(NewsModel *model, QWidget *parent); 38 | 39 | void init(); 40 | void retranslateStrings(); 41 | void setColumns(const QModelIndex &indexFeed = QModelIndex()); 42 | void saveStateColumns(NewsTabWidget *newsTabWidget); 43 | 44 | QMenu *viewMenu_; 45 | 46 | protected: 47 | bool eventFilter(QObject *, QEvent *); 48 | virtual void mousePressEvent(QMouseEvent*); 49 | virtual void mouseMoveEvent(QMouseEvent*); 50 | virtual void mouseDoubleClickEvent(QMouseEvent*); 51 | 52 | private slots: 53 | void slotButtonColumnView(); 54 | void slotColumnVisible(QAction*); 55 | void slotSectionMoved(int, int, int); 56 | 57 | private: 58 | void createMenu(); 59 | 60 | /** 61 | * @brief Adjust width for all columns 62 | * @param newWidth Widget's width for adjustment 63 | */ 64 | void adjustAllColumnsWidths(int newWidth); 65 | QString columnsList(); 66 | 67 | NewsModel *model_; 68 | QActionGroup *columnVisibleActGroup_; 69 | QPushButton *buttonColumnView_; 70 | bool move_; 71 | int idxCol_; 72 | int posX_; 73 | 74 | }; 75 | 76 | #endif // NEWSHEADER_H 77 | -------------------------------------------------------------------------------- /src/newsview/newsmodel.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NEWSMODEL_H 19 | #define NEWSMODEL_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | class NewsModel : public QSqlTableModel 29 | { 30 | Q_OBJECT 31 | public: 32 | NewsModel(QObject *parent, QTreeView *view); 33 | virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; 34 | virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; 35 | virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); 36 | virtual void sort(int column, Qt::SortOrder order); 37 | virtual QModelIndexList match( 38 | const QModelIndex &start, int role, const QVariant &value, int hits = 1, 39 | Qt::MatchFlags flags = 40 | Qt::MatchFlags(Qt::MatchExactly|Qt::MatchWrap) 41 | ) const; 42 | QVariant dataField(int row, const QString &fieldName) const; 43 | void setFilter(const QString &filter); 44 | bool select(); 45 | 46 | QString formatDate_; 47 | QString formatTime_; 48 | bool simplifiedDateTime_; 49 | QString textColor_; 50 | QString newNewsTextColor_; 51 | QString unreadNewsTextColor_; 52 | QString focusedNewsTextColor_; 53 | QString focusedNewsBGColor_; 54 | 55 | signals: 56 | void signalSort(int column, int order); 57 | 58 | private: 59 | QTreeView *view_; 60 | 61 | }; 62 | 63 | #endif // NEWSMODEL_H 64 | -------------------------------------------------------------------------------- /src/newsview/newsview.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NEWSVIEW_H 19 | #define NEWSVIEW_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | #include "newsmodel.h" 28 | 29 | class NewsView : public QTreeView 30 | { 31 | Q_OBJECT 32 | public: 33 | NewsView(QWidget * parent = 0); 34 | 35 | signals: 36 | void signalSetItemRead(QModelIndex index, int read); 37 | void signalSetItemStar(QModelIndex index, int starred); 38 | void signalDoubleClicked(QModelIndex index); 39 | void signalMiddleClicked(QModelIndex index); 40 | void signaNewslLabelClicked(QModelIndex index); 41 | void pressKeyUp(const QModelIndex &index); 42 | void pressKeyDown(const QModelIndex &index); 43 | void pressKeyHome(const QModelIndex &index); 44 | void pressKeyEnd(const QModelIndex &index); 45 | void pressKeyPageUp(const QModelIndex &index); 46 | void pressKeyPageDown(const QModelIndex &index); 47 | 48 | protected: 49 | virtual void mousePressEvent(QMouseEvent*); 50 | virtual void mouseMoveEvent(QMouseEvent*); 51 | virtual void mouseDoubleClickEvent(QMouseEvent*); 52 | virtual void keyPressEvent(QKeyEvent*); 53 | 54 | private: 55 | QModelIndex indexClicked_; 56 | 57 | }; 58 | 59 | #endif // NEWSVIEW_H 60 | -------------------------------------------------------------------------------- /src/notifications/notificationsfeeditem.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #include "notificationsfeeditem.h" 19 | 20 | FeedItem::FeedItem(int width, QWidget * parent) 21 | : QWidget(parent) 22 | { 23 | iconLabel_ = new QLabel(this); 24 | titleLabel_ = new QLabel(this); 25 | titleLabel_->setFixedWidth(width + 21*1); 26 | 27 | QWidget *mainWidget = new QWidget(this); 28 | mainWidget->setObjectName("feedItemNotification"); 29 | QHBoxLayout *layout = new QHBoxLayout(mainWidget); 30 | layout->setMargin(4); 31 | layout->setSpacing(5); 32 | layout->addWidget(iconLabel_); 33 | layout->addWidget(titleLabel_); 34 | layout->addStretch(); 35 | 36 | QHBoxLayout *mainLayout = new QHBoxLayout(); 37 | mainLayout->setMargin(0); 38 | mainLayout->addWidget(mainWidget); 39 | setLayout(mainLayout); 40 | } 41 | 42 | FeedItem::~FeedItem() 43 | { 44 | 45 | } 46 | 47 | void FeedItem::setIcon(const QPixmap &icon) 48 | { 49 | iconLabel_->setPixmap(icon); 50 | } 51 | 52 | void FeedItem::setTitle(const QString &text, int cntNews) 53 | { 54 | #if QT_VERSION >= QT_VERSION_CHECK(5,11,0) 55 | const int wight = titleLabel_->fontMetrics().horizontalAdvance(QString(" (%1)").arg(cntNews)); 56 | #else 57 | const int wight = titleLabel_->fontMetrics().width(QString(" (%1)").arg(cntNews)); 58 | #endif 59 | QString titleStr = titleLabel_->fontMetrics().elidedText( 60 | text, Qt::ElideRight, titleLabel_->sizeHint().width() - wight); 61 | titleLabel_->setText(QString("%1 (%2)").arg(titleStr).arg(cntNews)); 62 | } 63 | 64 | void FeedItem::setFontTitle(const QFont &font) 65 | { 66 | titleLabel_->setFont(font); 67 | } 68 | 69 | void FeedItem::setColorText(const QColor &color) 70 | { 71 | titleLabel_->setStyleSheet(QString("QLabel {color: %1;}").arg(color.name())); 72 | } 73 | -------------------------------------------------------------------------------- /src/notifications/notificationsfeeditem.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NOTIFICATIONSFEEDITEM_H 19 | #define NOTIFICATIONSFEEDITEM_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class FeedItem : public QWidget 28 | { 29 | Q_OBJECT 30 | public: 31 | FeedItem(int width, QWidget * parent = 0); 32 | ~FeedItem(); 33 | 34 | void setIcon(const QPixmap &icon); 35 | void setTitle(const QString &text, int cntNews); 36 | void setFontTitle(const QFont &font); 37 | void setColorText(const QColor &color); 38 | 39 | private: 40 | QLabel *iconLabel_; 41 | QLabel *titleLabel_; 42 | 43 | }; 44 | 45 | #endif // NOTIFICATIONSFEEDITEM_H 46 | -------------------------------------------------------------------------------- /src/notifications/notificationsnewsitem.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NOTIFICATIONSNEWSITEM_H 19 | #define NOTIFICATIONSNEWSITEM_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | #include "toolbutton.h" 29 | 30 | class NewsItem : public QWidget 31 | { 32 | Q_OBJECT 33 | public: 34 | NewsItem(int idFeed, int idNews, int width, QWidget * parent = 0); 35 | ~NewsItem(); 36 | 37 | void setText(const QString &text); 38 | void setFontText(const QFont & font); 39 | void setColorText(const QString &color, const QString &linkColor); 40 | 41 | QLabel *iconLabel_; 42 | ToolButton *readButton_; 43 | ToolButton *openExternalBrowserButton_; 44 | ToolButton *deleteButton_; 45 | 46 | signals: 47 | void signalOpenExternalBrowser(const QUrl &url); 48 | void signalMarkRead(int feedId, int newsId, int read); 49 | void signalTitleClicked(int feedId, int newsId); 50 | void signalDeleteNews(int feedId, int newsId); 51 | 52 | protected: 53 | bool eventFilter(QObject *obj, QEvent *event); 54 | 55 | private slots: 56 | void openExternalBrowser(); 57 | void markRead(); 58 | void deleteNews(); 59 | 60 | private: 61 | int feedId_; 62 | int newsId_; 63 | bool read_; 64 | 65 | QLabel *textLabel_; 66 | 67 | }; 68 | 69 | #endif // NOTIFICATIONSNEWSITEM_H 70 | -------------------------------------------------------------------------------- /src/notifications/notificationswidget.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef NOTIFICATIONSWIDGET_H 19 | #define NOTIFICATIONSWIDGET_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | #include "toolbutton.h" 29 | 30 | class NotificationWidget : public QWidget 31 | { 32 | Q_OBJECT 33 | public: 34 | NotificationWidget(QList idFeedList, 35 | QList cntNewNewsList, 36 | QList idColorList, 37 | QStringList colorList, 38 | QWidget *parentWidget, 39 | QWidget *parent = 0); 40 | ~NotificationWidget(); 41 | 42 | QList idFeedList() { return idFeedList_; } 43 | QList idNewsList() { return idNewsList_; } 44 | 45 | signals: 46 | void signalShow(); 47 | void signalClose(); 48 | void signalOpenNews(int feedId, int newsId); 49 | void signalOpenExternalBrowser(const QUrl &url); 50 | void signalMarkRead(int feedId, int newsId, int read); 51 | void signalDeleteNews(int feedId, int newsId); 52 | void signalMarkAllRead(); 53 | 54 | protected: 55 | void showEvent(QShowEvent*); 56 | bool eventFilter(QObject *obj, QEvent *event); 57 | void enterEvent(QEvent*); 58 | void leaveEvent(QEvent*); 59 | 60 | private slots: 61 | void nextPage(); 62 | void previousPage(); 63 | void slotMarkRead(int feedId, int newsId, int read); 64 | void slotDeleteNews(int feedId, int newsId); 65 | void slotOpenNew(int feedId, int newsId); 66 | void slotMarkAllRead(); 67 | 68 | private: 69 | void addPage(bool next = true); 70 | 71 | QLabel *iconTitle_; 72 | QLabel *textTitle_; 73 | QToolButton *closeButton_; 74 | QStackedWidget *stackedWidget_; 75 | QVBoxLayout *pageLayout_; 76 | QLabel *numPage_; 77 | ToolButton *prevButton_; 78 | ToolButton *nextButton_; 79 | 80 | QList idFeedList_; 81 | QList idNewsList_; 82 | QTimer *showTimer_; 83 | int timeShowNews_; 84 | int screen_; 85 | int position_; 86 | int transparency_; 87 | int cntAllNews_; 88 | int cntReadNews_; 89 | bool closeNotify_; 90 | 91 | }; 92 | 93 | #endif // NOTIFICATIONSWIDGET_H 94 | -------------------------------------------------------------------------------- /src/plugins/webpluginfactory.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef WEB_PLUGIN_FACTORY_H 19 | #define WEB_PLUGIN_FACTORY_H 20 | 21 | #include 22 | 23 | class WebPage; 24 | 25 | class WebPluginFactory : public QWebPluginFactory 26 | { 27 | public: 28 | WebPluginFactory(WebPage *page); 29 | 30 | virtual QObject *create(const QString &mimeType, const QUrl &url, 31 | const QStringList &argumentNames, 32 | const QStringList &argumentValues) const; 33 | QList plugins() const; 34 | 35 | private: 36 | WebPage *page_; 37 | 38 | }; 39 | #endif // WEB_PLUGIN_FACTORY_H 40 | -------------------------------------------------------------------------------- /src/requestfeed.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef REQUESTFEED_H 19 | #define REQUESTFEED_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | #include "networkmanager.h" 29 | 30 | class RequestFeed : public QObject 31 | { 32 | Q_OBJECT 33 | public: 34 | explicit RequestFeed(int timeoutRequest, int numberRequests, 35 | int numberRepeats, QObject *parent = 0); 36 | ~RequestFeed(); 37 | 38 | void disconnectObjects(); 39 | 40 | public slots: 41 | void requestUrl(int id, QString urlString, QDateTime date, QString userInfo = ""); 42 | void stopRequest(); 43 | void slotHead(const QUrl &getUrl, const int &id, const QString &feedUrl, 44 | const QDateTime &date, const int &count); 45 | void slotGet(const QUrl &getUrl, const int &id, const QString &feedUrl, 46 | const QDateTime &date, const int &count); 47 | 48 | signals: 49 | void getUrlDone(int result, int feedId, QString feedUrl = "", 50 | QString error = "", QByteArray data = NULL, 51 | QDateTime dtReply = QDateTime(), QString codecName = ""); 52 | void signalHead(const QUrl &getUrl, const int &id, const QString &feedUrl, 53 | const QDateTime &date, const int &count = 0); 54 | void signalGet(const QUrl &getUrl, const int &id, const QString &feedUrl, 55 | const QDateTime &date, const int &count = 0); 56 | void setStatusFeed(int feedId, QString status); 57 | 58 | private slots: 59 | void getQueuedUrl(); 60 | void finished(QNetworkReply *reply); 61 | void slotRequestTimeout(); 62 | 63 | private: 64 | NetworkManager *networkManager_; 65 | 66 | int timeoutRequest_; 67 | int numberRequests_; 68 | int numberRepeats_; 69 | QTimer *timeout_; 70 | QTimer *getUrlTimer_; 71 | 72 | QQueue idsQueue_; 73 | QQueue feedsQueue_; 74 | QQueue dateQueue_; 75 | QQueue userInfo_; 76 | 77 | QList currentUrls_; 78 | QList currentIds_; 79 | QList currentFeeds_; 80 | QList currentDates_; 81 | QList currentCount_; 82 | QList currentHead_; 83 | QList currentTime_; 84 | QList requestUrl_; 85 | QList networkReply_; 86 | QList hostList_; 87 | 88 | }; 89 | 90 | #endif // REQUESTFEED_H 91 | -------------------------------------------------------------------------------- /src/syncrss/googlereader.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2013 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef GOOGLEREADER_H 19 | #define GOOGLEREADER_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | #include 27 | 28 | #define ADDFEED "subscribe" 29 | #define REMOVEFEED "unsubscribe" 30 | #define RENAMEFEED "edit" 31 | 32 | class GoogleReader : public QObject 33 | { 34 | Q_OBJECT 35 | public: 36 | explicit GoogleReader(const QString &email, const QString &passwd, QObject *parent = 0); 37 | 38 | void editFeed(const QString &urlFeed, const QString &action, const QString &name = ""); 39 | void requestFeedsList(); 40 | void requestUnreadCount(); 41 | void requestFeed(const QString &urlFeed, int ot = 0); 42 | void editItem(const QString &urlFeed, const QString &itemId, const QString &action); 43 | 44 | QString email_; 45 | QString passwd_; 46 | 47 | signals: 48 | void signalReplySidAuth(bool ok); 49 | void signalReplyToken(bool ok); 50 | void signalReplyHttpPost(bool ok); 51 | 52 | private slots: 53 | void replySidAuth(QNetworkReply *reply); 54 | void requestToken(); 55 | void replyToken(QNetworkReply *reply); 56 | void replyHttpPost(QNetworkReply *reply); 57 | void replyFeedsList(QNetworkReply *reply); 58 | void replyUnreadCount(QNetworkReply *reply); 59 | void replyFeed(QNetworkReply *reply); 60 | 61 | private: 62 | void requestSidAuth(); 63 | void sendHttpPost(QUrl url, QUrl params); 64 | void sendHttpGet(QUrl url, QNetworkAccessManager *manager); 65 | 66 | QTimer *sessionTimer_; 67 | 68 | QNetworkAccessManager managerAuth_; 69 | QNetworkAccessManager managerToken_; 70 | QNetworkAccessManager managerHttpPost_; 71 | QNetworkAccessManager managerFeedsList_; 72 | QNetworkAccessManager managerUnreadCount_; 73 | QNetworkAccessManager managerFeed_; 74 | 75 | QString sid_; 76 | QString auth_; 77 | QString token_; 78 | QUrl requestUrl_; 79 | QUrl postArgs_; 80 | 81 | }; 82 | 83 | #endif // GOOGLEREADER_H 84 | -------------------------------------------------------------------------------- /src/tabbar.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef TABBAR_H 19 | #define TABBAR_H 20 | 21 | #ifdef HAVE_QT5 22 | #include 23 | #else 24 | #include 25 | #endif 26 | 27 | class TabBar : public QTabBar 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit TabBar(QWidget *parent = 0); 32 | 33 | enum CloseTabsState { 34 | CloseTabIdle = 0, 35 | CloseTabCurrentIndex, 36 | CloseTabOtherIndex 37 | }; 38 | 39 | CloseTabsState closingTabState_; 40 | 41 | public slots: 42 | void slotCloseTab(); 43 | void slotCloseOtherTabs(); 44 | void slotCloseAllTab(); 45 | void slotNextTab(); 46 | void slotPrevTab(); 47 | 48 | signals: 49 | void closeTab(int index); 50 | 51 | protected: 52 | bool eventFilter(QObject *obj, QEvent *ev); 53 | 54 | private slots: 55 | void showContextMenuTabBar(const QPoint &pos); 56 | 57 | private: 58 | int indexClickedTab_; 59 | bool tabFixed_; 60 | 61 | }; 62 | 63 | #endif // TABBAR_H 64 | -------------------------------------------------------------------------------- /src/updateappdialog.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef UPDATEAPPDIALOG_H 19 | #define UPDATEAPPDIALOG_H 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include "dialog.h" 26 | #include "networkmanagerproxy.h" 27 | 28 | class UpdateAppDialog : public Dialog 29 | { 30 | Q_OBJECT 31 | public: 32 | explicit UpdateAppDialog(const QString &lang, QWidget *parent, bool show = true); 33 | ~UpdateAppDialog(); 34 | 35 | void disconnectObjects(); 36 | 37 | signals: 38 | void signalNewVersion(const QString &newVersion = QString()); 39 | 40 | private slots: 41 | void closeDialog(); 42 | void finishUpdatesChecking(); 43 | void slotFinishHistoryReply(); 44 | void updaterRun(); 45 | void renderStatistics(); 46 | 47 | private: 48 | QString lang_; 49 | bool showDialog_; 50 | 51 | QWebPage *page_; 52 | NetworkManagerProxy *networkManagerProxy_; 53 | QNetworkReply *reply_; 54 | QNetworkReply *historyReply_; 55 | 56 | QLabel *infoLabel; 57 | QTextBrowser *history_; 58 | 59 | QPushButton *installButton_; 60 | QCheckBox *remindAboutVersion_; 61 | 62 | }; 63 | 64 | #endif // UPDATEAPPDIALOG_H 65 | -------------------------------------------------------------------------------- /src/webview/locationbar.cpp: -------------------------------------------------------------------------------- 1 | /* ============================================================================= 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * =========================================================================== */ 18 | #include "locationbar.h" 19 | #include "rssdetectionwidget.h" 20 | 21 | #include 22 | #include 23 | 24 | LocationBar::LocationBar(WebView *view, QWidget *parent) 25 | : QLineEdit(parent) 26 | , view_(view) 27 | , focus_(false) 28 | { 29 | setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 30 | setStyleSheet("QLineEdit {margin-bottom: 1px; padding: 0px 3px 0px 3px;}"); 31 | 32 | QHBoxLayout *mainLayout = new QHBoxLayout(this); 33 | mainLayout->setContentsMargins(0, 0, 0, 0); 34 | mainLayout->setSpacing(0); 35 | 36 | rightWidget_ = new QWidget(this); 37 | rightWidget_->resize(0, 0); 38 | QHBoxLayout *rightLayout = new QHBoxLayout(rightWidget_); 39 | rightLayout->setContentsMargins(0, 0, 2, 0); 40 | 41 | rssButton_ = new QToolButton(this); 42 | rssButton_->setToolTip("RSS"); 43 | rssButton_->setFocusPolicy(Qt::NoFocus); 44 | rssButton_->setCursor(Qt::ArrowCursor); 45 | rssButton_->setFocusPolicy(Qt::ClickFocus); 46 | rssButton_->setStyleSheet("QToolButton { border: none; padding: 0px; }"); 47 | QPixmap pixmap(":/images/feed"); 48 | rssButton_->setIcon(QIcon(pixmap)); 49 | rightLayout->addWidget(rssButton_, 0, Qt::AlignVCenter | Qt::AlignRight); 50 | 51 | mainLayout->addStretch(1); 52 | mainLayout->addWidget(rightWidget_, 0, Qt::AlignVCenter | Qt::AlignRight); 53 | 54 | rssButton_->hide(); 55 | 56 | connect(rssButton_, SIGNAL(clicked()), this, SLOT(rssIconClicked())); 57 | } 58 | 59 | void LocationBar::mouseReleaseEvent(QMouseEvent *event) 60 | { 61 | if (focus_) { 62 | selectAll(); 63 | focus_ = false; 64 | } 65 | QLineEdit::mouseReleaseEvent(event); 66 | } 67 | 68 | void LocationBar::focusInEvent(QFocusEvent *event) 69 | { 70 | focus_ = true; 71 | QLineEdit::focusInEvent(event); 72 | } 73 | 74 | void LocationBar::updateTextMargins() 75 | { 76 | int left = 0; 77 | int right = rightWidget_->sizeHint().width(); 78 | int top = 0; 79 | int bottom = 0; 80 | setTextMargins(left, top, right, bottom); 81 | } 82 | 83 | void LocationBar::showRssIcon(bool show) 84 | { 85 | rssButton_->setVisible(show); 86 | 87 | updateTextMargins(); 88 | } 89 | 90 | void LocationBar::rssIconClicked() 91 | { 92 | RSSDetectionWidget *rssWidget = new RSSDetectionWidget(view_, parentWidget()); 93 | rssWidget->showAt(parentWidget()); 94 | } 95 | -------------------------------------------------------------------------------- /src/webview/locationbar.h: -------------------------------------------------------------------------------- 1 | /* ============================================================================= 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * =========================================================================== */ 18 | #ifndef LOCATIONBAR_H 19 | #define LOCATIONBAR_H 20 | 21 | #include 22 | #include 23 | 24 | class WebView; 25 | 26 | class LocationBar : public QLineEdit 27 | { 28 | Q_OBJECT 29 | public: 30 | LocationBar(WebView *view, QWidget *parent = 0); 31 | 32 | public slots: 33 | void updateTextMargins(); 34 | void showRssIcon(bool show); 35 | 36 | private slots: 37 | void rssIconClicked(); 38 | 39 | private: 40 | void mouseReleaseEvent(QMouseEvent*); 41 | void focusInEvent(QFocusEvent *event); 42 | 43 | WebView *view_; 44 | bool focus_; 45 | QWidget *rightWidget_; 46 | QToolButton *rssButton_; 47 | 48 | }; 49 | 50 | #endif // LOCATIONBAR_H 51 | -------------------------------------------------------------------------------- /src/webview/rssdetectionwidget.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * Copyright (C) 2010-2013 David Rosca 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * ============================================================ */ 19 | #ifndef RSSDETECTIONWIDGET_H 20 | #define RSSDETECTIONWIDGET_H 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | class WebView; 27 | 28 | class RSSDetectionWidget : public QFrame 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit RSSDetectionWidget(WebView* view, QWidget* parent = 0); 34 | ~RSSDetectionWidget(); 35 | 36 | void showAt(QWidget* parent); 37 | 38 | private slots: 39 | void addRss(); 40 | 41 | private: 42 | WebView* view_; 43 | QGridLayout* gridLayout_; 44 | 45 | }; 46 | 47 | #endif // RSSDETECTIONWIDGET_H 48 | -------------------------------------------------------------------------------- /src/webview/webpage.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef WEBPAGE_H 19 | #define WEBPAGE_H 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | class NetworkManagerProxy; 26 | class AdBlockRule; 27 | 28 | class WebPage : public QWebPage 29 | { 30 | Q_OBJECT 31 | public: 32 | struct AdBlockedEntry { 33 | const AdBlockRule* rule; 34 | QUrl url; 35 | 36 | bool operator==(const AdBlockedEntry &other) const { 37 | return (this->rule == other.rule && this->url == other.url); 38 | } 39 | }; 40 | 41 | explicit WebPage(QObject *parent); 42 | ~WebPage(); 43 | 44 | void disconnectObjects(); 45 | 46 | bool acceptNavigationRequest(QWebFrame *frame, 47 | const QNetworkRequest &request, 48 | NavigationType type); 49 | void populateNetworkRequest(QNetworkRequest &request); 50 | 51 | void scheduleAdjustPage(); 52 | bool isLoading() const; 53 | 54 | static bool isPointerSafeToUse(WebPage* page); 55 | void addAdBlockRule(const AdBlockRule* rule, const QUrl &url); 56 | QVector adBlockedEntries() const; 57 | 58 | void addRejectedCerts(const QList &certs); 59 | bool containsRejectedCerts(const QList &certs); 60 | 61 | protected slots: 62 | QWebPage *createWindow(WebWindowType type); 63 | void handleUnsupportedContent(QNetworkReply* reply); 64 | 65 | private slots: 66 | void progress(int prog); 67 | void finished(); 68 | void downloadRequested(const QNetworkRequest &request); 69 | void cleanBlockedObjects(); 70 | void urlChanged(const QUrl &url); 71 | #if QT_VERSION >= 0x050905 72 | void slotFullScreenRequested(QWebFullScreenRequest fullScreenRequest); 73 | #endif 74 | 75 | private: 76 | NetworkManagerProxy *networkManagerProxy_; 77 | 78 | QWebPage::NavigationType lastRequestType_; 79 | QUrl lastRequestUrl_; 80 | 81 | bool adjustingScheduled_; 82 | static QList livingPages_; 83 | QVector adBlockedEntries_; 84 | 85 | int loadProgress_; 86 | 87 | }; 88 | 89 | #endif // WEBPAGE_H 90 | -------------------------------------------------------------------------------- /src/webview/webview.h: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader 3 | * Copyright (C) 2011-2021 QuiteRSS Team 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * ============================================================ */ 18 | #ifndef WEBVIEW_H 19 | #define WEBVIEW_H 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #define LEFT_BUTTON 0 28 | #define MIDDLE_BUTTON 1 29 | #define MIDDLE_BUTTON_MOD 2 30 | #define LEFT_BUTTON_CTRL 3 31 | #define LEFT_BUTTON_SHIFT 4 32 | #define LEFT_BUTTON_ALT 5 33 | 34 | class WebView : public QWebView 35 | { 36 | Q_OBJECT 37 | public: 38 | explicit WebView(QWidget *parent); 39 | 40 | void disconnectObjects(); 41 | 42 | int buttonClick_; 43 | 44 | bool isLoading() { return isLoading_; } 45 | bool hasRss() { return hasRss_; } 46 | 47 | signals: 48 | void showContextMenu(const QPoint &); 49 | void signalGoHome(); 50 | void rssChanged(bool); 51 | 52 | protected: 53 | virtual void mousePressEvent(QMouseEvent*); 54 | virtual void mouseReleaseEvent(QMouseEvent*); 55 | virtual void wheelEvent(QWheelEvent*); 56 | void mouseMoveEvent(QMouseEvent* event); 57 | 58 | private slots: 59 | void slotLoadStarted(); 60 | void slotLoadProgress(int value); 61 | void slotLoadFinished(); 62 | void checkRss(); 63 | 64 | private: 65 | bool isLoading_; 66 | bool rssChecked_; 67 | bool hasRss_; 68 | int posX_; 69 | QPoint dragStartPos_; 70 | 71 | }; 72 | 73 | #endif // WEBVIEW_H 74 | -------------------------------------------------------------------------------- /style/news.css: -------------------------------------------------------------------------------- 1 | /* News Style */ 2 | 3 | /*Do not delete!*/ 4 | /* %1 - newsTextFontFamily */ 5 | /* %2 - newsTextFontSize */ 6 | /* %3 - newsTitleFontFamily */ 7 | /* %4 - newsTitleFontSize */ 8 | /* %5 - 0 */ 9 | /* %6 - color separator */ 10 | /* %7 - news background */ 11 | /* %8 - title background */ 12 | /* %9 - link color */ 13 | /* %10 - title color */ 14 | /* %11 - date color */ 15 | /* %12 - author color */ 16 | /* %13 - text color */ 17 | /* %14 - text-align */ 18 | /* %15 - direction: ltr or rtl */ 19 | /* %16 - "date" text-align */ 20 | 21 | body { 22 | overflow: auto; 23 | margin: 0; 24 | font-family: %1; 25 | font-size: %2pt; 26 | background: %7; 27 | } 28 | 29 | td { 30 | font-family: %1; 31 | font-size: %2pt; 32 | } 33 | 34 | img:not(.quiterss-img) { 35 | display: block; 36 | max-width: 100%; 37 | height: auto; 38 | } 39 | 40 | div { 41 | display: block; 42 | } 43 | 44 | a { 45 | color: %9; 46 | text-decoration: none; 47 | } 48 | 49 | .read-action { 50 | float: %14; 51 | width: 16px; 52 | margin-%16: 5px; 53 | } 54 | 55 | .feed-icon, .star-action, .labels-menu, .share-menu, .open-browser { 56 | float: %14; 57 | margin-%16: 10px; 58 | } 59 | 60 | .delete-action { 61 | float: %16; 62 | } 63 | 64 | .title { 65 | color: %10; 66 | font-family: %3; 67 | font-size: %4pt; 68 | text-align: %14; 69 | direction: %15; 70 | vertical-align: top; 71 | } 72 | .title a.unread { 73 | font-weight: bold; 74 | } 75 | 76 | .title a.read { 77 | font-weight: normal; 78 | } 79 | 80 | .date { 81 | color: %11; 82 | text-align: %16; 83 | vertical-align: top; 84 | white-space: nowrap; 85 | } 86 | 87 | .author { 88 | color: %12; 89 | text-align: %14; 90 | direction: %15; 91 | vertical-align: top; 92 | } 93 | 94 | a.enclosure { 95 | color: %12; 96 | } 97 | .enclosureImg { 98 | max-width: 100%; 99 | } 100 | 101 | .labels td { 102 | color: %12; 103 | text-align: %14; 104 | direction: %15; 105 | vertical-align: top; 106 | } 107 | 108 | .titleTable { 109 | background: %8; 110 | border-top: 0px solid %6; 111 | border-bottom: 1px solid %6; 112 | text-align: %14; 113 | width: 100%; 114 | padding: 5px; 115 | position: -webkit-sticky; 116 | top: 0; 117 | } 118 | 119 | .newsTable { 120 | border-top: 0px solid %6; 121 | border-bottom: 0px solid %6; 122 | text-align: %14; 123 | direction: %15; 124 | width: 100%; 125 | padding: 5px; 126 | color: %13; 127 | } 128 | 129 | /* Prevent content 'div's from changing table width */ 130 | .newsTable td div[style] { 131 | width: 100% !important; 132 | } 133 | -------------------------------------------------------------------------------- /style/system.qss: -------------------------------------------------------------------------------- 1 | /* QuiteRSS System Style */ 2 | 3 | #tabBar_ QTabWidget::tab-bar { 4 | bottom: -1px; 5 | } 6 | 7 | #tabBarWidget { 8 | border-bottom: 1px solid gray; 9 | } 10 | 11 | #feedsView_::item, #newsView_::item, #newsCategoriesTree_::item { 12 | min-height: 20px; 13 | } 14 | 15 | QToolBar { 16 | border-style: none; 17 | } 18 | 19 | QHeaderView::down-arrow { 20 | subcontrol-origin: padding; 21 | subcontrol-position: center top; 22 | image: url(:/images/images/sortIndicatorD.png); 23 | } 24 | 25 | QHeaderView::up-arrow { 26 | subcontrol-origin: padding; 27 | subcontrol-position: center top; 28 | image: url(:/images/images/sortIndicatorA.png); 29 | } 30 | 31 | #webViewProgress_ { 32 | border: 1px solid #D5D5D5; 33 | border-left: none; 34 | border-right: none; 35 | border-bottom: none; 36 | text-align: center; 37 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, 38 | stop:0 #f9f9f9, 39 | stop:0.4 #f1f1f1, 40 | stop:0.6 #e9e9e9, 41 | stop:1 #f1f1f1); 42 | } 43 | 44 | #webViewProgress_::chunk { 45 | background: qlineargradient(x1:0, y1:0, x2:0, y2:1, 46 | stop:0 #f1f1f1, 47 | stop:0.4 #d9d9d9, 48 | stop:0.6 #d1d1d1, 49 | stop:1 #d9d9d9); 50 | width: 10px; 51 | } 52 | 53 | #contentLabel_ { 54 | background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1, 55 | stop:0 #B8B8B8, 56 | stop:0.5 #989898, 57 | stop:0.9 #B8B8B8); 58 | color: #FFFFFF; 59 | } 60 | 61 | #categoriesTree { 62 | padding: 1px; 63 | } 64 | 65 | #categoriesTree::item, #fontTree::item, 66 | #languageFileList_::item, #filtersTree::item, 67 | #shortcutTree::item, #labelsTree_::item, 68 | #colorsTree_::item { 69 | min-height: 20px; 70 | } 71 | 72 | #foldersTree_::item, #feedsTreeFR::item, #feedsTreeNotify_::item { 73 | min-height: 18px; 74 | } 75 | 76 | QStatusBar #progressBar_{ 77 | margin-right: 5px; 78 | } 79 | 80 | QMainWindow::separator { 81 | border: none; 82 | } 83 | 84 | #infoWidgetFR, #actionsWidgetFR { 85 | background: white; 86 | } 87 | 88 | #notificationWidget { 89 | border: 1px solid #c0c0c0; 90 | border-radius: 8px; 91 | } 92 | 93 | #titleNotification { 94 | border-bottom: 1px solid #e0e0e0; 95 | border-top-left-radius: 8px; 96 | border-top-right-radius: 8px; 97 | } 98 | 99 | #bottomNotification { 100 | border-top: 1px solid #e0e0e0; 101 | border-bottom-left-radius: 8px; 102 | border-bottom-right-radius: 8px; 103 | } 104 | 105 | #feedItemNotification { 106 | border-bottom: 1px solid #c0c0c0; 107 | } 108 | 109 | #click2flash-frame { 110 | border: 1px solid #e4e4e4; 111 | background: #f4f4f4; 112 | } 113 | 114 | #click2flash-toolbutton { 115 | background: url(:/images/images/flash.png) no-repeat; 116 | background-position: center; 117 | border: none; 118 | } 119 | 120 | #click2flash-toolbutton:hover { 121 | background: url(:/images/images/flashstart.png) no-repeat; 122 | background-position: center; 123 | border:none; 124 | } 125 | 126 | #pushButtonNull { 127 | border: none; 128 | padding: 0px; 129 | } -------------------------------------------------------------------------------- /style/web_dark.css: -------------------------------------------------------------------------------- 1 | ::-webkit-scrollbar { 2 | background: none; 3 | border: none; 4 | margin: 0px; 5 | padding: 0px; 6 | } 7 | 8 | ::-webkit-scrollbar:vertical { 9 | width: 10px; 10 | } 11 | 12 | ::-webkit-scrollbar:horizontal { 13 | height: 10px; 14 | } 15 | 16 | ::-webkit-scrollbar-track { 17 | background: #3a393a; 18 | } 19 | 20 | ::-webkit-scrollbar-thumb:vertical { 21 | background: #555555; 22 | min-height: 20px; 23 | } 24 | 25 | ::-webkit-scrollbar-thumb:horizontal { 26 | background: #555555; 27 | min-width: 20px; 28 | } 29 | --------------------------------------------------------------------------------