Mercurial > octave
changeset 27193:01e73e1664ff
move news reader widget to separate file
* news-reader.h, news-reader.cc: New files, extracted from
main-window.h and main-window.cc.
* libgui/src/module.mk: Update.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 21 Jun 2019 10:10:54 -0500 |
parents | 8779c631d55f |
children | f0f3e6856947 |
files | libgui/src/main-window.cc libgui/src/main-window.h libgui/src/module.mk libgui/src/news-reader.cc libgui/src/news-reader.h |
diffstat | 5 files changed, 217 insertions(+), 140 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc Wed Jun 19 21:32:22 2019 -0500 +++ b/libgui/src/main-window.cc Fri Jun 21 10:10:54 2019 -0500 @@ -56,6 +56,7 @@ # include "file-editor.h" #endif #include "main-window.h" +#include "news-reader.h" #include "settings-dialog.h" #include "shortcut-manager.h" #include "welcome-wizard.h" @@ -2700,116 +2701,6 @@ return list; } - void news_reader::process (void) - { - QString html_text; - - if (m_connect_to_web) - { - // Run this part in a separate thread so Octave can continue to - // run while we wait for the page to load. Then emit the signal - // to display it when we have the page contents. - - QString url = m_base_url + '/' + m_page; - std::ostringstream buf; - url_transfer octave_dot_org (url.toStdString (), buf); - - if (octave_dot_org.is_valid ()) - { - Array<std::string> param; - octave_dot_org.http_get (param); - - if (octave_dot_org.good ()) - html_text = QString::fromStdString (buf.str ()); - } - - if (html_text.contains ("this-is-the-gnu-octave-community-news-page")) - { - if (m_serial >= 0) - { - QSettings *settings = resource_manager::get_settings (); - - if (settings) - { - settings->setValue ("news/last_time_checked", - QDateTime::currentDateTime ()); - - settings->sync (); - } - - QString tag ("community-news-page-serial="); - - int b = html_text.indexOf (tag); - - if (b) - { - b += tag.length (); - - int e = html_text.indexOf ("\n", b); - - QString tmp = html_text.mid (b, e-b); - - int curr_page_serial = tmp.toInt (); - - if (curr_page_serial > m_serial) - { - if (settings) - { - settings->setValue ("news/last_news_item", - curr_page_serial); - - settings->sync (); - } - } - else - return; - } - else - return; - } - } - else - html_text = QString - (tr ("<html>\n" - "<body>\n" - "<p>\n" - "Octave's community news source seems to be unavailable.\n" - "</p>\n" - "<p>\n" - "For the latest news, please check\n" - "<a href=\"https://octave.org/community-news.html\">https://octave.org/community-news.html</a>\n" - "when you have a connection to the web (link opens in an external browser).\n" - "</p>\n" - "<p>\n" - "<small><em>— The Octave Developers, ") + OCTAVE_RELEASE_DATE + "</em></small>\n" - "</p>\n" - "</body>\n" - "</html>\n"); - } - else - html_text = QString - (tr ("<html>\n" - "<body>\n" - "<p>\n" - "Connecting to the web to display the latest Octave Community news has been disabled.\n" - "</p>\n" - "<p>\n" - "For the latest news, please check\n" - "<a href=\"https://octave.org/community-news.html\">https://octave.org/community-news.html</a>\n" - "when you have a connection to the web (link opens in an external browser)\n" - "or enable web connections for news in Octave's network settings dialog.\n" - "</p>\n" - "<p>\n" - "<small><em>— The Octave Developers, ") + OCTAVE_RELEASE_DATE + "</em></small>\n" - "</p>\n" - "</body>\n" - "</html>\n"); - - emit display_news_signal (html_text); - - emit finished (); - } - //! Reimplements QApplication::notify. /*! Octave's own exceptions are caugh and rethrown in the interpreter thread.*/
--- a/libgui/src/main-window.h Wed Jun 19 21:32:22 2019 -0500 +++ b/libgui/src/main-window.h Fri Jun 21 10:10:54 2019 -0500 @@ -467,36 +467,6 @@ QString m_file_encoding; }; - class news_reader : public QObject - { - Q_OBJECT - - public: - - news_reader (const QString& base_url, const QString& page, - int serial = -1, bool connect_to_web = false) - : QObject (), m_base_url (base_url), m_page (page), m_serial (serial), - m_connect_to_web (connect_to_web) - { } - - public slots: - - void process (void); - - signals: - - void display_news_signal (const QString& news); - - void finished (void); - - private: - - QString m_base_url; - QString m_page; - int m_serial; - bool m_connect_to_web; - }; - class octave_qapplication : public QApplication { public:
--- a/libgui/src/module.mk Wed Jun 19 21:32:22 2019 -0500 +++ b/libgui/src/module.mk Fri Jun 21 10:10:54 2019 -0500 @@ -139,6 +139,7 @@ %reldir%/moc-files-dock-widget.cc \ %reldir%/moc-history-dock-widget.cc \ %reldir%/moc-main-window.cc \ + %reldir%/moc-news-reader.cc \ %reldir%/moc-octave-cmd.cc \ %reldir%/moc-octave-qt-link.cc \ %reldir%/moc-settings-dialog.cc \ @@ -195,6 +196,7 @@ %reldir%/m-editor/octave-txt-lexer.h \ %reldir%/m-editor/marker.h \ %reldir%/main-window.h \ + %reldir%/news-reader.h \ %reldir%/octave-gui.h \ %reldir%/octave-cmd.h \ %reldir%/octave-qt-link.h \ @@ -227,6 +229,7 @@ %reldir%/m-editor/octave-txt-lexer.cc \ %reldir%/m-editor/marker.cc \ %reldir%/main-window.cc \ + %reldir%/news-reader.cc \ %reldir%/octave-cmd.cc \ %reldir%/octave-dock-widget.cc \ %reldir%/octave-gui.cc \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgui/src/news-reader.cc Fri Jun 21 10:10:54 2019 -0500 @@ -0,0 +1,150 @@ +/* + +Copyright (C) 2013-2019 John W. Eaton +Copyright (C) 2011-2019 Jacob Dawid + +This file is part of Octave. + +Octave is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Octave is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +<https://www.gnu.org/licenses/>. + +*/ + +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + +#include <string> + +#include <QDateTime> +#include <QString> + +#include "news-reader.h" +#include "resource-manager.h" + +#include "url-transfer.h" +#include "version.h" + +namespace octave +{ + void news_reader::process (void) + { + QString html_text; + + if (m_connect_to_web) + { + // Run this part in a separate thread so Octave can continue to + // run while we wait for the page to load. Then emit the signal + // to display it when we have the page contents. + + QString url = m_base_url + '/' + m_page; + std::ostringstream buf; + url_transfer octave_dot_org (url.toStdString (), buf); + + if (octave_dot_org.is_valid ()) + { + Array<std::string> param; + octave_dot_org.http_get (param); + + if (octave_dot_org.good ()) + html_text = QString::fromStdString (buf.str ()); + } + + if (html_text.contains ("this-is-the-gnu-octave-community-news-page")) + { + if (m_serial >= 0) + { + QSettings *settings = resource_manager::get_settings (); + + if (settings) + { + settings->setValue ("news/last_time_checked", + QDateTime::currentDateTime ()); + + settings->sync (); + } + + QString tag ("community-news-page-serial="); + + int b = html_text.indexOf (tag); + + if (b) + { + b += tag.length (); + + int e = html_text.indexOf ("\n", b); + + QString tmp = html_text.mid (b, e-b); + + int curr_page_serial = tmp.toInt (); + + if (curr_page_serial > m_serial) + { + if (settings) + { + settings->setValue ("news/last_news_item", + curr_page_serial); + + settings->sync (); + } + } + else + return; + } + else + return; + } + } + else + html_text = QString + (tr ("<html>\n" + "<body>\n" + "<p>\n" + "Octave's community news source seems to be unavailable.\n" + "</p>\n" + "<p>\n" + "For the latest news, please check\n" + "<a href=\"https://octave.org/community-news.html\">https://octave.org/community-news.html</a>\n" + "when you have a connection to the web (link opens in an external browser).\n" + "</p>\n" + "<p>\n" + "<small><em>— The Octave Developers, ") + OCTAVE_RELEASE_DATE + "</em></small>\n" + "</p>\n" + "</body>\n" + "</html>\n"); + } + else + html_text = QString + (tr ("<html>\n" + "<body>\n" + "<p>\n" + "Connecting to the web to display the latest Octave Community news has been disabled.\n" + "</p>\n" + "<p>\n" + "For the latest news, please check\n" + "<a href=\"https://octave.org/community-news.html\">https://octave.org/community-news.html</a>\n" + "when you have a connection to the web (link opens in an external browser)\n" + "or enable web connections for news in Octave's network settings dialog.\n" + "</p>\n" + "<p>\n" + "<small><em>— The Octave Developers, ") + OCTAVE_RELEASE_DATE + "</em></small>\n" + "</p>\n" + "</body>\n" + "</html>\n"); + + emit display_news_signal (html_text); + + emit finished (); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgui/src/news-reader.h Fri Jun 21 10:10:54 2019 -0500 @@ -0,0 +1,63 @@ +/* + +Copyright (C) 2013-2019 John W. Eaton +Copyright (C) 2011-2019 Jacob Dawid + +This file is part of Octave. + +Octave is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Octave is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +<https://www.gnu.org/licenses/>. + +*/ + +#if ! defined (octave_news_reader_h) +#define octave_news_reader_h 1 + +#include <QObject> +#include <QString> + +namespace octave +{ + class news_reader : public QObject + { + Q_OBJECT + + public: + + news_reader (const QString& base_url, const QString& page, + int serial = -1, bool connect_to_web = false) + : QObject (), m_base_url (base_url), m_page (page), m_serial (serial), + m_connect_to_web (connect_to_web) + { } + + public slots: + + void process (void); + + signals: + + void display_news_signal (const QString& news); + + void finished (void); + + private: + + QString m_base_url; + QString m_page; + int m_serial; + bool m_connect_to_web; + }; +} + +#endif