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>&mdash; 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>&mdash; 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>&mdash; 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>&mdash; 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