[chronojump] At start do not dowload news, just news date. News dowloaded on button press.
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] At start do not dowload news, just news date. News dowloaded on button press.
- Date: Tue, 19 Jan 2021 11:05:26 +0000 (UTC)
commit e8fe09fac8995a874302ab023d1cf9f7f57d6aee
Author: Xavier de Blas <xaviblas gmail com>
Date: Tue Jan 19 12:04:24 2021 +0100
At start do not dowload news, just news date. News dowloaded on button press.
diagrams/processes/news.dia | Bin 4123 -> 4128 bytes
src/gui/app1/chronojump.cs | 31 ++++++++++++++-----------------
src/gui/app1/menu.cs | 28 ++++++++++++++++++++--------
src/gui/app1/news.cs | 15 ++++++++++-----
4 files changed, 44 insertions(+), 30 deletions(-)
---
diff --git a/diagrams/processes/news.dia b/diagrams/processes/news.dia
index 2df81309..e0f29d0b 100644
Binary files a/diagrams/processes/news.dia and b/diagrams/processes/news.dia differ
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index 6162adf3..48b030f9 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -715,7 +715,6 @@ public partial class ChronoJumpWindow
{
LogB.Information("Ping thread will start");
- newsAtDB_l = SqliteNews.Select(false, -1, 10);
pingThread = new Thread (new ThreadStart (pingAndNewsAtStart));
GLib.Idle.Add (new GLib.IdleHandler (pulsePingAndNewsGTK));
pingThread.Start();
@@ -6787,25 +6786,22 @@ LogB.Debug("mc finished 5");
{
if(! pingThread.IsAlive)
{
- // 1) Insert if needed
- if(newsAtServer_l != null && News.InsertOrUpdateIfNeeded (newsAtDB_l, newsAtServer_l))
+ // 1) highlight news iccons if there are new news
+ //if there is no network serverNewsDatetime will be empty, so do not highligh new
products
+ //highligh if server news date is not empty and server news date is different than
client news date
+ if(preferences.serverNewsDatetime != "" &&
+ preferences.serverNewsDatetime != preferences.clientNewsDatetime)
{
Pixbuf pixbuf = new Pixbuf (null, Util.GetImagePath(false) +
"image_store_has_new_products.png");
image_menu_news.Pixbuf = pixbuf;
image_menu_news1.Pixbuf = pixbuf;
}
- // 2) update newsAtDB_l
- newsAtDB_l = SqliteNews.Select(false, -1, 10);
+ // 2) make news buttons sensitive
+ button_menu_news.Sensitive = true;
+ button_menu_news1.Sensitive = true;
- // 3) if there are news (locally is not 0), make it sensitive
- if(newsAtDB_l.Count > 0)
- {
- button_menu_news.Sensitive = true;
- button_menu_news1.Sensitive = true;
- }
-
- // 4) end this pulse
+ // 3) end this pulse
LogB.Information("pulsePingAndNews ending here");
LogB.ThreadEnded();
return false;
@@ -6822,7 +6818,7 @@ LogB.Debug("mc finished 5");
{
jsPing = new Json();
if(pingDo())
- getNews();
+ getNewsDatetime();
}
private bool pingDo()
@@ -6839,10 +6835,11 @@ LogB.Debug("mc finished 5");
}
- private void getNews()
+ private void getNewsDatetime()
{
- LogB.Information("getNews()");
- newsAtServer_l = jsPing.GetNews(newsAtDB_l); //send the local list to know if images have to
be re-downloaded on a version update
+ LogB.Information("getNewsDatetime()");
+ if(jsPing.GetNewsDatetime())
+ preferences.serverNewsDatetime = jsPing.ResultMessage;
}
private void on_preferences_debug_mode_start (object o, EventArgs args) {
diff --git a/src/gui/app1/menu.cs b/src/gui/app1/menu.cs
index 9c03c60a..25704143 100644
--- a/src/gui/app1/menu.cs
+++ b/src/gui/app1/menu.cs
@@ -309,18 +309,30 @@ public partial class ChronoJumpWindow
private void on_button_menu_news_clicked (object o, EventArgs args)
{
- /*
- * this will not happen because button will be unresponsive
- if(newsAtDB_l.Count == 0)
- return;
- */
+ // 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);
- //news print debug
+ //debug stuff
foreach(News news in newsAtDB_l)
LogB.Information(news.ToString());
- news_setup(0); //setup radios: language and arrows
- news_fill(true); //fill the widget
+ // 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
diff --git a/src/gui/app1/news.cs b/src/gui/app1/news.cs
index 3a9aaebe..bef5fb6b 100644
--- a/src/gui/app1/news.cs
+++ b/src/gui/app1/news.cs
@@ -44,7 +44,7 @@ public partial class ChronoJumpWindow
Pixbuf image_news_pixbuf;
private int currentNewsPos;
- private void news_setup(int currentPos)
+ private void news_setup_gui(int currentPos)
{
currentNewsPos = currentPos;
@@ -89,7 +89,7 @@ public partial class ChronoJumpWindow
currentNewsPos --;
newsNewerOlderUpdateWidgets();
- news_fill (true);
+ news_fill_gui (true);
}
private void on_button_news_older_clicked (object o, EventArgs args)
{
@@ -99,14 +99,19 @@ public partial class ChronoJumpWindow
currentNewsPos ++;
newsNewerOlderUpdateWidgets();
- news_fill (true);
+ news_fill_gui (true);
}
// <----------------- end of newer, older management ----------
- private void news_fill (bool textAndVideo)
+ private void news_fill_gui (bool textAndVideo)
{
+ //LogB.Information(string.Format("newsAtDB_l: {0}, newsAtDB_l.Count: {1}, currentNewsPos:
{2}",
+ // newsAtDB_l, newsAtDB_l.Count, currentNewsPos));
+ //just a precaution
+ if(newsAtDB_l == null || currentNewsPos >= newsAtDB_l.Count)
+ return;
News news = newsAtDB_l[currentNewsPos];
@@ -164,7 +169,7 @@ public partial class ChronoJumpWindow
Sqlite.Close();
// 2) rewrite the labels
- news_fill (false);
+ news_fill_gui (false);
}
private void on_button_new_open_browser_clicked (object o, EventArgs args)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]