diff --git a/CMakeLists.txt b/CMakeLists.txt index f1c258832..3f05cfdc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,6 +188,7 @@ set(APP_SOURCES src/gui/tabwidget.cpp src/gui/tabbar.cpp src/gui/tabcontent.cpp + src/gui/cornerbutton.cpp # CORE sources. src/core/debugging.cpp @@ -230,6 +231,7 @@ set(APP_HEADERS src/gui/tabwidget.h src/gui/tabbar.h src/gui/tabcontent.h + src/gui/cornerbutton.h # CORE headers. src/core/settings.h @@ -306,7 +308,7 @@ include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/src ) -# Setup compilation. +# Setup compilation for Qt 5. if(${USE_QT_5}) if(WIN32) add_executable(${EXE_NAME} WIN32 @@ -335,6 +337,7 @@ if(${USE_QT_5}) WebKit WebKitWidgets ) +# Setup compilation for Qt 4. else(${USE_QT_5}) add_executable(${EXE_NAME} WIN32 ${APP_SOURCES} @@ -415,13 +418,13 @@ add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) if(${USE_QT_5}) add_custom_target(lupdate ${Qt5Core_QMAKE_EXECUTABLE} -project -o ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro - COMMAND ${Qt5_LUPDATE_EXECUTABLE} -ts ${APP_TRANSLATIONS_WO_QT} -pro ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro + COMMAND ${Qt5_LUPDATE_EXECUTABLE} -no-obsolete -ts ${APP_TRANSLATIONS_WO_QT} -pro ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) else(${USE_QT_5}) add_custom_target(lupdate ${QT_QMAKE_EXECUTABLE} -project -o ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro - COMMAND ${QT_LUPDATE_EXECUTABLE} -ts ${APP_TRANSLATIONS_WO_QT} -pro ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro + COMMAND ${QT_LUPDATE_EXECUTABLE} -no-obsolete -ts ${APP_TRANSLATIONS_WO_QT} -pro ${CMAKE_CURRENT_BINARY_DIR}/${APP_LOW_NAME}.pro WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) endif(${USE_QT_5}) diff --git a/localization/rssguard_cs.ts b/localization/rssguard_cs.ts index 6f762a5b5..090da7b76 100644 --- a/localization/rssguard_cs.ts +++ b/localization/rssguard_cs.ts @@ -43,6 +43,34 @@ Image Obrázek + + Open link in new tab + Otevřít odkaz v novém panelu + + + Open this hyperlink in new tab + Otevřít tento odkaz v novém panelu + + + Follow link + Přejít + + + Open the hyperlink in this tab + Otevřít tento odkaz v tomto panelu + + + Open image in new tab + Otevřít obrázek v novém panelu + + + Open this image in this tab + Otevřít tento obrázek v novém panelu + + + Hyperlink + Hypertextový odkaz + FormAbout @@ -99,12 +127,16 @@ <b>%8</b><br><b>Verze:</b> %1 (OS při sestavování %2 verze CMake %3)<br><b>Revize:</b> %4<br><b>Datum sestavení:</b> %5<br><b>Qt:</b> %6 (při kompilaci %7)<br> - <body>Authors and contributors:<ul><li>Martin Rotter (<a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail.com</a>) (author of RSS Guard)</li><li>snakebite & tiheum (authors of KFaenza/Faenza icon theme)</li><li>Digia Plc (author of QtSingleApplication component)</li><li>Artem Galichkin (<a href="mailto://doomer3d@gmail.com">doomer3d@gmail.com</a>) (author of original QKeySequenceWidget component)</li></ul></body> - + Thanks to page is available only in English language. + Poděkování je k dispozici pouze v anglickém jazyce. - <body>RSS Guard is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~website</li></ul>You can obtain source code for RSS Guard from its website.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> - <body>RSS Guard je (velmi) jednoduchá čtečka kanálů.<br><br>Tento software je šířen pod licencí GNU General Public, verze 3.<br><br>Kontakty:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~webová stránka</li></ul>Zdrojové kódy aplikace RSS Guard lze získat na její webové stránce.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> + Authors information not found. + Informace o autorech nebyly nalezeny. + + + <body>RSS Guard is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~website</li></ul>You can obtain source code for RSS Guard from its website.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> + <body>RSS Guard je (velmi) jednoduchá čtečka kanálů.<br><br>Tento software je šířen pod podmínkami licence GNU General Public License, verze 3.<br><br>Kontakty:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~web</li></ul>Zdrojový kód pro RSS Guard lze získat z jeho webu.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> @@ -149,18 +181,6 @@ &Fullscreen mode &Režime celé obrazovky - - Feeds - Kanály - - - Browser your feeds and messages - Procházej své kanály a zprávy - - - Web browser - Webový prohlížeč - FormSettings @@ -312,102 +332,112 @@ Http - - Language of Qonverter was changed. Note that changes will take effect on next Qonverter start. - Jazyk - Do you want to restart now? - + Chcete restartovat nyní? Language changed - + Jazyk změněn Problem with RSS Guard restart - + Problém s restartem (not supported on this platform) - + (na této platformě nepodporováno) Tray area && notifications - + Notifikační oblast Disable - + Zakázat Enable - + Povolit Tabs - + Panely Close tabs with - + Zavírat panely pomocí Left mouse button double-click - + Levého tlačítka myši Middle mouse button single-click - + Prostředního tlačítka myši Open new tabs with left mouse button double-click on tab bar - + Otevírat nové panely poklepáním na panelový pruh Enable mouse gestures - + Povolit gesta myši - Mouse gestures work with right mouse button. Possible gestures are: + Web browser & proxy + Webový prohlížeč & proxy + + + Language of RSS Guard was changed. Note that changes will take effect on next Qonverter start. + Jazyk RSS Guardu byl změnen. Změn se projeví až po restartu aplikace. + + + RSS Guard couldn't be restarted, please restart it manually for changes to take effect. + RSS Guard nemohl být restartován, prosím restartuje jej ručně. + + + Disable (Tray icon is not available.) + Zakázat (Notifikační ikona není k dispozici.) + + + Mouse gestures work with middle mouse button. Possible gestures are: <ul> <li>previous web page (drag mouse left)</li> <li>next web page (drag mouse right)</li> <li>reload current web page (drag mouse up)</li> <li>open new web browser tab (drag mouse down)</li> </ul> - + Gesta myši funguji s prostředním tlačítkem myši. Gesta jsou: +<ul> +<li>zpět (táhnout myší vlevo)</li> +<li>vpřed (táhnout myší vpravo)</li> +<li>obnovit (táhnout myší nahoru)</li> +<li>otevřít nový panel (táhnout myší dolů)</li> +</ul> - Web browser & proxy - + Queue new tabs (with hyperlinks) after the active tab + Zařadit nově otevíraný panel za ten aktuální - Language of RSS Guard was changed. Note that changes will take effect on next Qonverter start. - - - - RSS Guard couldn't be restarted, please restart it manually for changes to take effect. - - - - Disable (Tray icon is not available.) - + no icon theme + žádné téma ikon FormWelcome Welcome - + Vítejte Welcome to RSS Guard - + Vítá Vás RSS Guard - <html><head/><body><p>RSS Guard is a (very) easy feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> - + <html><head/><body><p>RSS Guard is a (very) easy-to-use feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> + <html><head/><body><p>RSS Guard je (velmi) jednoduchá čtečka kanálů. Podporuje všechny rozšířené formáty, včetně RSS, ATOM a RDF.</p><p>Ujistěte se, že projdete všechny funkce této aplikace. Pokud chcete nahlásit chybu nebo chcete v programu mít novou vlastnost, pak vyplňte <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">hlášení o chybě</span></a>.</p><p>RSS Guard může být přeložen do libovolného jazyka. Kontaktujte <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">autora</span></a> v případě zájmu o překlad.</p><p><br/></p></body></html> @@ -438,22 +468,37 @@ rotter.martinos@gmail.com + + TabWidget + + Feeds + Kanály + + + Browse your feeds and messages + Procházet kanály a zprávy + + + Web browser + Webový prohlížeč + + TrayIconMenu Close opened modal dialogs first. - + Nejdříve ukončete otevřené modální dialogy. WebBrowser Navigation panel - + Navigační panel Back - + Zpět Go back @@ -461,7 +506,7 @@ Forward - Zpět + Vpřed Go forward @@ -477,11 +522,11 @@ Stop - + Zastavit Stop web page loading - + Zastavit načítání aktuální webové stránky diff --git a/localization/rssguard_en.ts b/localization/rssguard_en.ts index 1a4028c24..1d527b282 100644 --- a/localization/rssguard_en.ts +++ b/localization/rssguard_en.ts @@ -43,6 +43,34 @@ Image + + Open link in new tab + + + + Open this hyperlink in new tab + + + + Follow link + + + + Open the hyperlink in this tab + + + + Open image in new tab + + + + Open this image in this tab + + + + Hyperlink + + FormAbout @@ -99,11 +127,15 @@ - <body>Authors and contributors:<ul><li>Martin Rotter (<a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail.com</a>) (author of RSS Guard)</li><li>snakebite & tiheum (authors of KFaenza/Faenza icon theme)</li><li>Digia Plc (author of QtSingleApplication component)</li><li>Artem Galichkin (<a href="mailto://doomer3d@gmail.com">doomer3d@gmail.com</a>) (author of original QKeySequenceWidget component)</li></ul></body> + Thanks to page is available only in English language. - <body>RSS Guard is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~website</li></ul>You can obtain source code for RSS Guard from its website.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> + Authors information not found. + + + + <body>RSS Guard is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://rotter.martinos@gmail.com">rotter.martinos@gmail</a> ~email</li><li><a href="http://www.rssguard.sf.net">www.rssguard.sf.net</a> ~website</li></ul>You can obtain source code for RSS Guard from its website.<br><br><br>Copyright © 2011-%1 Martin Rotter</body> @@ -149,18 +181,6 @@ &Fullscreen mode - - Feeds - - - - Browser your feeds and messages - - - - Web browser - - FormSettings @@ -364,16 +384,6 @@ Enable mouse gestures - - Mouse gestures work with right mouse button. Possible gestures are: -<ul> -<li>previous web page (drag mouse left)</li> -<li>next web page (drag mouse right)</li> -<li>reload current web page (drag mouse up)</li> -<li>open new web browser tab (drag mouse down)</li> -</ul> - - Web browser & proxy @@ -390,6 +400,24 @@ Disable (Tray icon is not available.) + + Mouse gestures work with middle mouse button. Possible gestures are: +<ul> +<li>previous web page (drag mouse left)</li> +<li>next web page (drag mouse right)</li> +<li>reload current web page (drag mouse up)</li> +<li>open new web browser tab (drag mouse down)</li> +</ul> + + + + Queue new tabs (with hyperlinks) after the active tab + + + + no icon theme + + FormWelcome @@ -402,7 +430,7 @@ - <html><head/><body><p>RSS Guard is a (very) easy feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> + <html><head/><body><p>RSS Guard is a (very) easy-to-use feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> @@ -434,6 +462,21 @@ rotter.martinos@gmail.com + + TabWidget + + Feeds + + + + Browse your feeds and messages + + + + Web browser + + + TrayIconMenu diff --git a/src/gui/cornerbutton.cpp b/src/gui/cornerbutton.cpp new file mode 100644 index 000000000..87a666eac --- /dev/null +++ b/src/gui/cornerbutton.cpp @@ -0,0 +1,10 @@ +#include "gui/cornerbutton.h" + + +CornerButton::CornerButton(QWidget *parent) : QPushButton(parent) { + setToolTip(tr("Open new tab")); +} + +CornerButton::~CornerButton() { + qDebug("Destroying CornerButton instance."); +} diff --git a/src/gui/cornerbutton.h b/src/gui/cornerbutton.h new file mode 100644 index 000000000..0447178d3 --- /dev/null +++ b/src/gui/cornerbutton.h @@ -0,0 +1,19 @@ +#ifndef CORNERBUTTON_H +#define CORNERBUTTON_H + +#include + + +class CornerButton : public QPushButton { + Q_OBJECT + + public: + explicit CornerButton(QWidget *parent = 0); + virtual ~CornerButton(); + + signals: + + public slots: +}; + +#endif // CORNERBUTTON_H diff --git a/src/gui/formwelcome.ui b/src/gui/formwelcome.ui index 5a81a84e6..4c401f0ed 100644 --- a/src/gui/formwelcome.ui +++ b/src/gui/formwelcome.ui @@ -80,7 +80,7 @@ - <html><head/><body><p>RSS Guard is a (very) easy feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> + <html><head/><body><p>RSS Guard is a (very) easy-to-use feed reader. It supports all major feed formats, including RSS, ATOM and RDF.</p><p>Make sure you explore all available features. If you find a bug or if you want to propose new feature, then create new <a href="https://sourceforge.net/p/rssguard/tickets"><span style=" text-decoration: underline; color:#0000ff;">issue report</span></a>.</p><p>RSS Guard can be translated to any language. Contact its <a href="mailto:rotter.martinos@gmail.com"><span style=" text-decoration: underline; color:#0000ff;">author</span></a> in case of your interest.</p><p><br/></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter diff --git a/src/gui/tabbar.h b/src/gui/tabbar.h index 2cc8938c3..b7df755e7 100644 --- a/src/gui/tabbar.h +++ b/src/gui/tabbar.h @@ -29,8 +29,7 @@ class TabBar : public QTabBar { signals: // Emmited if empty space on tab bar is double clicked. - void emptySpaceDoubleClicked(); - + void emptySpaceDoubleClicked(); }; #endif // TABBAR_H diff --git a/src/gui/tabwidget.cpp b/src/gui/tabwidget.cpp index 4f3ceed8f..c766c91c4 100644 --- a/src/gui/tabwidget.cpp +++ b/src/gui/tabwidget.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "core/defs.h" #include "core/settings.h" @@ -7,10 +8,12 @@ #include "gui/tabbar.h" #include "gui/iconthemefactory.h" #include "gui/webbrowser.h" +#include "gui/cornerbutton.h" TabWidget::TabWidget(QWidget *parent) : QTabWidget(parent) { setTabBar(new TabBar(this)); + setupCornerButton(); createConnections(); } @@ -18,7 +21,15 @@ TabWidget::~TabWidget() { qDebug("Destroying TabWidget instance."); } +void TabWidget::setupCornerButton() { + m_cornerButton = new CornerButton(this); + m_cornerButton->setFlat(true); + m_cornerButton->setIcon(IconThemeFactory::getInstance()->fromTheme("list-add")); + setCornerWidget(m_cornerButton); +} + void TabWidget::createConnections() { + connect(m_cornerButton, SIGNAL(clicked()), this, SLOT(addEmptyBrowser())); connect(tabBar(), SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); connect(tabBar(), SIGNAL(emptySpaceDoubleClicked()), this, SLOT(addEmptyBrowser())); @@ -60,6 +71,9 @@ void TabWidget::setupIcons() { } } } + + // Setup corner button icon. + m_cornerButton->setIcon(IconThemeFactory::getInstance()->fromTheme("list-add")); } void TabWidget::closeTab(int index) { diff --git a/src/gui/tabwidget.h b/src/gui/tabwidget.h index 90c160982..d7d1a01fc 100644 --- a/src/gui/tabwidget.h +++ b/src/gui/tabwidget.h @@ -8,6 +8,8 @@ #include "gui/tabcontent.h" +class CornerButton; + class TabWidget : public QTabWidget { Q_OBJECT @@ -41,6 +43,9 @@ class TabWidget : public QTabWidget { protected: // Creates necesary connections. void createConnections(); + + // Sets up properties of custom corner button. + void setupCornerButton(); public slots: // Closes tab with given index and deletes contained widget. @@ -57,6 +62,9 @@ class TabWidget : public QTabWidget { int addBrowser(bool move_after_current, bool make_active, const QUrl &initial_url = QUrl()); + + private: + CornerButton *m_cornerButton; }; #endif // TABWIDGET_H