[chronojump] News get with a thread



commit d282959329677a5214b0e5e2964d96e3c06ba75f
Author: Xavier de Blas <xaviblas gmail com>
Date:   Wed Jan 20 11:46:20 2021 +0100

    News get with a thread

 glade/app1.glade     | 426 +++++++++++++++++++++++++++++++++------------------
 src/gui/app1/menu.cs |  35 +----
 src/gui/app1/news.cs |  85 +++++++++-
 3 files changed, 365 insertions(+), 181 deletions(-)
---
diff --git a/glade/app1.glade b/glade/app1.glade
index 8c9b12d3..b1250df7 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -23604,6 +23604,12 @@ Concentric</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -36768,6 +36774,12 @@ then click this button.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -42637,138 +42649,234 @@ then click this button.</property>
                                         <property name="can_focus">False</property>
                                         <property name="border_width">4</property>
                                         <child>
-                                          <widget class="GtkAlignment" id="alignment67">
+                                          <widget class="GtkNotebook" id="notebook_news">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="bottom_padding">2</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="show_tabs">False</property>
+                                            <property name="show_border">False</property>
                                             <child>
-                                              <widget class="GtkHBox" id="hbox453">
+                                              <widget class="GtkHBox" id="hbox78">
                                                 <property name="visible">True</property>
                                                 <property name="can_focus">False</property>
                                                 <child>
-                                                  <widget class="GtkHBox" id="hbox447">
+                                                  <widget class="GtkVBox" id="vbox243">
                                                     <property name="visible">True</property>
                                                     <property name="can_focus">False</property>
-                                                    <property name="spacing">6</property>
                                                     <child>
-                                                      <widget class="GtkImage" id="image_news_blue">
+                                                      <widget class="GtkFrame" id="frame28">
                                                         <property name="visible">True</property>
                                                         <property name="can_focus">False</property>
-                                                        <property name="stock">gtk-missing-image</property>
+                                                        <property name="label_xalign">0</property>
+                                                        <property name="label_yalign">1</property>
+                                                        <property name="shadow_type">in</property>
+                                                        <child>
+                                                          <widget class="GtkViewport" id="viewport21">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="border_width">4</property>
+                                                            <child>
+                                                            <widget class="GtkVBox" id="vbox244">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="spacing">12</property>
+                                                            <child>
+                                                            <widget class="GtkLabel" id="label261">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="label" 
translatable="yes">Please, Wait!</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
+                                                            <widget class="GtkProgressBar" 
id="progressbar_news_get">
+                                                            <property name="height_request">25</property>
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">True</property>
+                                                            <property name="position">1</property>
+                                                            </packing>
+                                                            </child>
+                                                            </widget>
+                                                            </child>
+                                                          </widget>
+                                                        </child>
+                                                        <child>
+                                                          <placeholder/>
+                                                          <packing>
+                                                            <property name="type">label_item</property>
+                                                          </packing>
+                                                        </child>
                                                       </widget>
                                                       <packing>
-                                                        <property name="expand">False</property>
+                                                        <property name="expand">True</property>
                                                         <property name="fill">False</property>
                                                         <property name="position">0</property>
                                                       </packing>
                                                     </child>
-                                                    <child>
-                                                      <widget class="GtkImage" id="image_news_yellow">
-                                                        <property name="can_focus">False</property>
-                                                        <property name="stock">gtk-missing-image</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">1</property>
-                                                      </packing>
-                                                    </child>
-                                                    <child>
-                                                      <widget class="GtkLabel" id="label_news_frame">
-                                                        <property name="visible">True</property>
-                                                        <property name="can_focus">False</property>
-                                                        <property name="label" translatable="yes">Latest 
products</property>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">True</property>
-                                                        <property name="fill">True</property>
-                                                        <property name="position">2</property>
-                                                      </packing>
-                                                    </child>
                                                   </widget>
                                                   <packing>
-                                                    <property name="expand">False</property>
+                                                    <property name="expand">True</property>
                                                     <property name="fill">False</property>
                                                     <property name="position">0</property>
                                                   </packing>
                                                 </child>
+                                              </widget>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkLabel" id="label33">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <property name="label" translatable="yes">page 1</property>
+                                              </widget>
+                                              <packing>
+                                                <property name="tab_fill">False</property>
+                                                <property name="type">tab</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkVBox" id="vbox242">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
                                                 <child>
-                                                  <widget class="GtkHBox" id="hbox452">
+                                                  <widget class="GtkAlignment" id="alignment67">
                                                     <property name="visible">True</property>
                                                     <property name="can_focus">False</property>
-                                                    <property name="spacing">8</property>
-                                                    <child>
-                                                      <widget class="GtkRadioButton" 
id="radio_news_language_english">
-                                                        <property name="label" 
translatable="yes">English</property>
-                                                        <property name="visible">True</property>
-                                                        <property name="can_focus">True</property>
-                                                        <property name="receives_default">False</property>
-                                                        <property name="active">True</property>
-                                                        <property name="draw_indicator">False</property>
-                                                        <signal name="toggled" 
handler="on_radio_news_language_english_toggled" swapped="no"/>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">True</property>
-                                                        <property name="fill">True</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
+                                                    <property name="bottom_padding">2</property>
                                                     <child>
-                                                      <widget class="GtkRadioButton" 
id="radio_news_language_spanish">
-                                                        <property name="label" 
translatable="yes">Spanish</property>
+                                                      <widget class="GtkHBox" id="hbox453">
                                                         <property name="visible">True</property>
-                                                        <property name="can_focus">True</property>
-                                                        <property name="receives_default">False</property>
-                                                        <property name="draw_indicator">False</property>
-                                                        <property 
name="group">radio_news_language_english</property>
-                                                        <signal name="toggled" 
handler="on_radio_news_language_spanish_toggled" swapped="no"/>
+                                                        <property name="can_focus">False</property>
+                                                        <child>
+                                                          <widget class="GtkHBox" id="hbox447">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="spacing">6</property>
+                                                            <child>
+                                                            <widget class="GtkImage" id="image_news_blue">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property 
name="stock">gtk-missing-image</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
+                                                            <widget class="GtkImage" id="image_news_yellow">
+                                                            <property name="can_focus">False</property>
+                                                            <property 
name="stock">gtk-missing-image</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">1</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
+                                                            <widget class="GtkLabel" id="label_news_frame">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="label" translatable="yes">Latest 
products</property>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">True</property>
+                                                            <property name="position">2</property>
+                                                            </packing>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="GtkHBox" id="hbox452">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="spacing">8</property>
+                                                            <child>
+                                                            <widget class="GtkRadioButton" 
id="radio_news_language_english">
+                                                            <property name="label" 
translatable="yes">English</property>
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property 
name="receives_default">False</property>
+                                                            <property name="active">True</property>
+                                                            <property name="draw_indicator">False</property>
+                                                            <signal name="toggled" 
handler="on_radio_news_language_english_toggled" swapped="no"/>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">True</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
+                                                            <widget class="GtkRadioButton" 
id="radio_news_language_spanish">
+                                                            <property name="label" 
translatable="yes">Spanish</property>
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property 
name="receives_default">False</property>
+                                                            <property name="draw_indicator">False</property>
+                                                            <property 
name="group">radio_news_language_english</property>
+                                                            <signal name="toggled" 
handler="on_radio_news_language_spanish_toggled" swapped="no"/>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">True</property>
+                                                            <property name="position">1</property>
+                                                            </packing>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="pack_type">end</property>
+                                                            <property name="position">1</property>
+                                                          </packing>
+                                                        </child>
                                                       </widget>
-                                                      <packing>
-                                                        <property name="expand">True</property>
-                                                        <property name="fill">True</property>
-                                                        <property name="position">1</property>
-                                                      </packing>
                                                     </child>
                                                   </widget>
                                                   <packing>
                                                     <property name="expand">False</property>
                                                     <property name="fill">False</property>
-                                                    <property name="pack_type">end</property>
-                                                    <property name="position">1</property>
+                                                    <property name="position">0</property>
                                                   </packing>
                                                 </child>
-                                              </widget>
-                                            </child>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkFrame" id="frame27">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="label_xalign">0</property>
-                                            <property name="label_yalign">1</property>
-                                            <property name="shadow_type">in</property>
-                                            <child>
-                                              <widget class="GtkViewport" id="viewport16">
-                                                <property name="visible">True</property>
-                                                <property name="can_focus">False</property>
-                                                <property name="border_width">4</property>
                                                 <child>
-                                                  <widget class="GtkVBox" id="vbox148">
+                                                  <widget class="GtkFrame" id="frame27">
                                                     <property name="visible">True</property>
                                                     <property name="can_focus">False</property>
+                                                    <property name="label_xalign">0</property>
+                                                    <property name="label_yalign">1</property>
+                                                    <property name="shadow_type">in</property>
                                                     <child>
-                                                      <widget class="GtkAlignment" id="alignment55">
+                                                      <widget class="GtkViewport" id="viewport16">
                                                         <property name="visible">True</property>
                                                         <property name="can_focus">False</property>
-                                                        <property name="top_padding">2</property>
+                                                        <property name="border_width">4</property>
                                                         <child>
-                                                          <widget class="GtkHBox" id="hbox451">
+                                                          <widget class="GtkVBox" id="vbox148">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <child>
+                                                            <widget class="GtkAlignment" id="alignment55">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <property name="top_padding">2</property>
+                                                            <child>
+                                                            <widget class="GtkHBox" id="hbox451">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
                                                             <child>
@@ -42836,21 +42944,21 @@ then click this button.</property>
                                                             <property name="position">0</property>
                                                             </packing>
                                                             </child>
-                                                          </widget>
-                                                        </child>
-                                                      </widget>
-                                                      <packing>
-                                                        <property name="expand">False</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">0</property>
-                                                      </packing>
-                                                    </child>
-                                                    <child>
-                                                      <widget class="GtkHBox" id="hbox443">
-                                                        <property name="visible">True</property>
-                                                        <property name="can_focus">False</property>
-                                                        <child>
-                                                          <widget class="GtkVBox" id="vbox149">
+                                                            </widget>
+                                                            </child>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
+                                                            <widget class="GtkHBox" id="hbox443">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <child>
+                                                            <widget class="GtkVBox" id="vbox149">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
                                                             <child>
@@ -42979,64 +43087,73 @@ then click this button.</property>
                                                             <property name="position">1</property>
                                                             </packing>
                                                             </child>
-                                                          </widget>
-                                                          <packing>
+                                                            </widget>
+                                                            <packing>
                                                             <property name="expand">True</property>
                                                             <property name="fill">False</property>
                                                             <property name="position">0</property>
-                                                          </packing>
+                                                            </packing>
+                                                            </child>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">True</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">1</property>
+                                                            </packing>
+                                                            </child>
+                                                          </widget>
                                                         </child>
                                                       </widget>
+                                                    </child>
+                                                    <child>
+                                                      <placeholder/>
                                                       <packing>
-                                                        <property name="expand">True</property>
-                                                        <property name="fill">False</property>
-                                                        <property name="position">1</property>
+                                                        <property name="type">label_item</property>
                                                       </packing>
                                                     </child>
                                                   </widget>
+                                                  <packing>
+                                                    <property name="expand">True</property>
+                                                    <property name="fill">True</property>
+                                                    <property name="position">1</property>
+                                                  </packing>
                                                 </child>
-                                              </widget>
-                                            </child>
-                                            <child>
-                                              <placeholder/>
-                                              <packing>
-                                                <property name="type">label_item</property>
-                                              </packing>
-                                            </child>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">True</property>
-                                            <property name="fill">True</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkAlignment" id="alignment65">
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">False</property>
-                                            <property name="top_padding">4</property>
-                                            <child>
-                                              <widget class="GtkHButtonBox" id="hbuttonbox10">
-                                                <property name="visible">True</property>
-                                                <property name="can_focus">False</property>
                                                 <child>
-                                                  <widget class="GtkButton" id="button_news_close">
+                                                  <widget class="GtkAlignment" id="alignment65">
                                                     <property name="visible">True</property>
-                                                    <property name="can_focus">True</property>
-                                                    <property name="can_default">True</property>
-                                                    <property name="receives_default">False</property>
-                                                    <signal name="clicked" 
handler="on_button_news_close_clicked" swapped="no"/>
-                                                    <accelerator key="Escape" signal="clicked"/>
+                                                    <property name="can_focus">False</property>
+                                                    <property name="top_padding">4</property>
                                                     <child>
-                                                      <widget class="GtkEventBox" 
id="eventbox_button_news_close">
+                                                      <widget class="GtkHButtonBox" id="hbuttonbox10">
                                                         <property name="visible">True</property>
                                                         <property name="can_focus">False</property>
                                                         <child>
-                                                          <widget class="GtkLabel" id="label412">
+                                                          <widget class="GtkButton" id="button_news_close">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property name="can_default">True</property>
+                                                            <property 
name="receives_default">False</property>
+                                                            <signal name="clicked" 
handler="on_button_news_close_clicked" swapped="no"/>
+                                                            <accelerator key="Escape" signal="clicked"/>
+                                                            <child>
+                                                            <widget class="GtkEventBox" 
id="eventbox_button_news_close">
+                                                            <property name="visible">True</property>
+                                                            <property name="can_focus">False</property>
+                                                            <child>
+                                                            <widget class="GtkLabel" id="label412">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
                                                             <property name="label" 
translatable="yes">Close</property>
+                                                            </widget>
+                                                            </child>
+                                                            </widget>
+                                                            </child>
                                                           </widget>
+                                                          <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">0</property>
+                                                          </packing>
                                                         </child>
                                                       </widget>
                                                     </child>
@@ -43044,16 +43161,31 @@ then click this button.</property>
                                                   <packing>
                                                     <property name="expand">False</property>
                                                     <property name="fill">False</property>
-                                                    <property name="position">0</property>
+                                                    <property name="position">2</property>
                                                   </packing>
                                                 </child>
                                               </widget>
+                                              <packing>
+                                                <property name="position">1</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkLabel" id="label104">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <property name="label" translatable="yes">page 2</property>
+                                              </widget>
+                                              <packing>
+                                                <property name="position">1</property>
+                                                <property name="tab_fill">False</property>
+                                                <property name="type">tab</property>
+                                              </packing>
                                             </child>
                                           </widget>
                                           <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">2</property>
+                                            <property name="expand">True</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
                                           </packing>
                                         </child>
                                       </widget>
diff --git a/src/gui/app1/menu.cs b/src/gui/app1/menu.cs
index 25704143..55b919c3 100644
--- a/src/gui/app1/menu.cs
+++ b/src/gui/app1/menu.cs
@@ -15,7 +15,7 @@
  *  along with this program; if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Copyright (C) 2018-2020   Xavier de Blas <xaviblas gmail com> 
+ * Copyright (C) 2018-2021   Xavier de Blas <xaviblas gmail com>
  */
 
 //this file has methods of ChronoJumpWindow related to manage menu
@@ -300,7 +300,6 @@ public partial class ChronoJumpWindow
                app1s_notebook_sup_entered_from = notebook_sup.CurrentPage;
                notebook_sup.CurrentPage = Convert.ToInt32(notebook_sup_pages.HELP);
        }
-
        private void on_button_help_close_clicked (object o, EventArgs args)
        {
                menus_and_mode_sensitive(true);
@@ -309,38 +308,8 @@ public partial class ChronoJumpWindow
 
        private void on_button_menu_news_clicked (object o, EventArgs args)
        {
-               // 1) select the news locally
-               newsAtDB_l = SqliteNews.Select(false, -1, 10);
-
-               // 2) get the news on the server
-               if(preferences.serverNewsDatetime != "" && preferences.serverNewsDatetime != 
preferences.clientNewsDatetime)
-               {
-                       //TODO: start a thread here to allow news to download or be cancelled
-                       newsAtServer_l = jsPing.GetNews(newsAtDB_l); //send the local list to know if images 
have to be re-downloaded on a version update
-
-                       preferences.clientNewsDatetime = preferences.serverNewsDatetime;
-                       SqlitePreferences.Update(SqlitePreferences.ClientNewsDatetime, 
preferences.clientNewsDatetime, false);
-               }
-
-               // 3) insert/update on SQL if needed
-               if(newsAtServer_l != null && News.InsertOrUpdateIfNeeded (newsAtDB_l, newsAtServer_l))
-                       newsAtDB_l = SqliteNews.Select(false, -1, 10);
-
-               //debug stuff
-               foreach(News news in newsAtDB_l)
-                       LogB.Information(news.ToString());
-
-               // 4) fill the widgets
-               news_setup_gui(0); //setup radios: language and arrows
-               news_fill_gui(true); //fill the widget
-               alignment_news.Show(); // is hidden at beginning to allow being well shown when filled
-
-               //sensitivity and notebook management
-               menus_and_mode_sensitive(false);
-               app1s_notebook_sup_entered_from = notebook_sup.CurrentPage;
-               notebook_sup.CurrentPage = Convert.ToInt32(notebook_sup_pages.NEWS);
+               newsGetThreadPrepare();
        }
-
        private void on_button_news_close_clicked (object o, EventArgs args)
        {
                menus_and_mode_sensitive(true);
diff --git a/src/gui/app1/news.cs b/src/gui/app1/news.cs
index bef5fb6b..7d47f590 100644
--- a/src/gui/app1/news.cs
+++ b/src/gui/app1/news.cs
@@ -15,7 +15,7 @@
  *  along with this program; if not, write to the Free Software
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Copyright (C) 2020   Xavier de Blas <xaviblas gmail com>
+ * Copyright (C) 2021   Xavier de Blas <xaviblas gmail com>
  */
 
 using System;
@@ -23,9 +23,12 @@ using Gdk;  //pixbuf
 using Glade;
 using System.IO;
 using System.Collections.Generic; //List<T>
+using System.Threading;
 
 public partial class ChronoJumpWindow
 {
+       [Widget] Gtk.Notebook notebook_news;
+       [Widget] Gtk.ProgressBar progressbar_news_get;
        [Widget] Gtk.Image image_news_blue;
        [Widget] Gtk.Image image_news_yellow;
        [Widget] Gtk.Label label_news_frame;
@@ -44,6 +47,86 @@ public partial class ChronoJumpWindow
        Pixbuf image_news_pixbuf;
        private int currentNewsPos;
 
+
+       private void newsGetThreadPrepare()
+       {
+               // 1) select the news locally
+               newsAtDB_l = SqliteNews.Select(false, -1, 10);
+
+               // 2) prepare the GUI
+               alignment_news.Show(); // is hidden at beginning to allow being well shown when filled
+               menus_and_mode_sensitive(false);
+               app1s_notebook_sup_entered_from = notebook_sup.CurrentPage;
+               notebook_sup.CurrentPage = Convert.ToInt32(notebook_sup_pages.NEWS);
+
+               // 3) get the news on the server
+               if(preferences.serverNewsDatetime != "" && preferences.serverNewsDatetime != 
preferences.clientNewsDatetime)
+               {
+                       LogB.Information("newsGet thread will start");
+                       pingThread = new Thread (new ThreadStart (newsGet));
+                       GLib.Idle.Add (new GLib.IdleHandler (pulseNewsGetGTK));
+                       pingThread.Start();
+               } else {
+                       // 3b) or display old news
+                       newsDisplay();
+               }
+       }
+
+       //No GTK here
+       private void newsGet()
+       {
+               newsAtServer_l = jsPing.GetNews(newsAtDB_l); //send the local list to know if images have to 
be re-downloaded on a version update
+       }
+       private bool pulseNewsGetGTK ()
+       {
+               if(! pingThread.IsAlive)
+               {
+                       if(newsAtServer_l != null)
+                       {
+                               // 1) update clientNewsDatetime
+                               preferences.clientNewsDatetime = preferences.serverNewsDatetime;
+                               SqlitePreferences.Update(SqlitePreferences.ClientNewsDatetime, 
preferences.clientNewsDatetime, false);
+
+                               // 2) insert/update on SQL if needed
+                               News.InsertOrUpdateIfNeeded (newsAtDB_l, newsAtServer_l);
+                       }
+
+                       // 3) end this pulse
+                       LogB.Information("pulseNewsGetGTK ending here");
+                       LogB.ThreadEnded();
+
+                       if(newsAtServer_l != null)
+                               newsDisplay();
+
+                       return false;
+               }
+
+               notebook_news.Page = 0;
+               progressbar_news_get.Pulse();
+               Thread.Sleep (100);
+               //Log.Write(" (pulseNewsGetGTK:" + thread.ThreadState.ToString() + ") ");
+               return true;
+       }
+
+       private void newsDisplay()
+       {
+               // 1) select
+               newsAtDB_l = SqliteNews.Select(false, -1, 10);
+
+               /*
+               //debug stuff
+               foreach(News news in newsAtDB_l)
+                       LogB.Information(news.ToString());
+                       */
+
+               // 2) fill the widgets
+               news_setup_gui(0); //setup radios: language and arrows
+               news_fill_gui(true); //fill the widget
+
+               // 3) show the news tab
+               notebook_news.Page = 1;
+       }
+
        private void news_setup_gui(int currentPos)
        {
                currentNewsPos = currentPos;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]