[smuxi/experiments/tag_messages: 38/41] Frontend-GNOME: rewrite MainWindow.UpdateProgressBar() (refs: #826)



commit 961d2961ff6ebb6656bd6c296ec65a649eac75bf
Author: Mirco Bauer <meebey meebey net>
Date:   Tue Feb 23 15:08:20 2016 +0100

    Frontend-GNOME: rewrite MainWindow.UpdateProgressBar() (refs: #826)
    
    Keeping a list of synced chats is overkill when chats contain an IsSynced
    property making it trivial and less error prone to count the synced chats from
    that existing list.

 src/Frontend-GNOME/ChatViewManager.cs      |    8 +-------
 src/Frontend-GNOME/MainWindow.cs           |   13 ++++---------
 src/Frontend-GNOME/Views/Chats/ChatView.cs |   14 +++++++-------
 3 files changed, 12 insertions(+), 23 deletions(-)
---
diff --git a/src/Frontend-GNOME/ChatViewManager.cs b/src/Frontend-GNOME/ChatViewManager.cs
index 9ea4f65..46f1c7c 100644
--- a/src/Frontend-GNOME/ChatViewManager.cs
+++ b/src/Frontend-GNOME/ChatViewManager.cs
@@ -1,7 +1,7 @@
 /*
  * Smuxi - Smart MUltipleXed Irc
  *
- * Copyright (c) 2005-2013 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2013, 2015-2016 Mirco Bauer <meebey meebey net>
  *
  * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
  *
@@ -38,7 +38,6 @@ namespace Smuxi.Frontend.Gnome
         private static readonly log4net.ILog f_Logger = 
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 #endif
         private List<ChatView> f_Chats = new List<ChatView>();
-        public  IList<ChatView> SyncedChats { get; private set; }
         private Notebook       f_Notebook;
         ChatTreeView TreeView { get; set; }
         private UserConfig     f_Config;
@@ -110,7 +109,6 @@ namespace Smuxi.Frontend.Gnome
             f_Notebook = notebook;
             TreeView = treeView;
             TreeView.Selection.Changed += OnTreeViewSelectionChanged;
-            SyncedChats = new List<ChatView>();
             SyncManager = new ChatViewSyncManager();
             SyncManager.ChatAdded += OnChatAdded;
             SyncManager.ChatSynced += OnChatSynced;
@@ -143,7 +141,6 @@ namespace Smuxi.Frontend.Gnome
             TreeView.Remove(chatView);
             f_Chats.Remove(chatView);
             SyncManager.Remove(chat);
-            SyncedChats.Remove(chatView);
 
             if (ChatRemoved != null) {
                 ChatRemoved(this, new ChatViewManagerChatRemovedEventArgs(chatView));
@@ -175,7 +172,6 @@ namespace Smuxi.Frontend.Gnome
                 return;
             }
 
-            SyncedChats.Remove(chatView);
             chatView.Disable();
         }
 
@@ -228,7 +224,6 @@ namespace Smuxi.Frontend.Gnome
             }
 
             f_Config = null;
-            SyncedChats.Clear();
             SyncManager.Clear();
         }
 
@@ -360,7 +355,6 @@ namespace Smuxi.Frontend.Gnome
 
                 chatView.ScrollToEnd();
 
-                SyncedChats.Add(chatView);
                 if (ChatSynced != null) {
                     ChatSynced(this, new ChatViewManagerChatSyncedEventArgs(chatView));
                 }
diff --git a/src/Frontend-GNOME/MainWindow.cs b/src/Frontend-GNOME/MainWindow.cs
index f706f3a..9b2faae 100644
--- a/src/Frontend-GNOME/MainWindow.cs
+++ b/src/Frontend-GNOME/MainWindow.cs
@@ -1,7 +1,7 @@
 /*
  * Smuxi - Smart MUltipleXed Irc
  *
- * Copyright (c) 2005-2014 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2016 Mirco Bauer <meebey meebey net>
  *
  * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
  *
@@ -645,15 +645,10 @@ namespace Smuxi.Frontend.Gnome
 
         public void UpdateProgressBar()
         {
-            var totalChatCount = ChatViewManager.Chats.Count;
-            var syncedChatCount =  ChatViewManager.SyncedChats.Count;
+            var chats = ChatViewManager.Chats;
+            var totalChatCount = chats.Count;
+            var syncedChatCount = chats.Select(x => x.IsSynced).Count();
             var fraction = (double) syncedChatCount / totalChatCount;
-            // clamp value to avoid Gtk-CRITICAL assert failed messages
-            if (fraction < 0) {
-                fraction = 0;
-            } else if (fraction > 1) {
-                fraction = 1;
-            }
             if (totalChatCount == 0) {
                 // x / 0d -> Infinity
                 fraction = 0;
diff --git a/src/Frontend-GNOME/Views/Chats/ChatView.cs b/src/Frontend-GNOME/Views/Chats/ChatView.cs
index 1c24da6..25c8de2 100644
--- a/src/Frontend-GNOME/Views/Chats/ChatView.cs
+++ b/src/Frontend-GNOME/Views/Chats/ChatView.cs
@@ -1,7 +1,7 @@
 /*
  * Smuxi - Smart MUltipleXed Irc
  *
- * Copyright (c) 2005-2015 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2016 Mirco Bauer <meebey meebey net>
  *
  * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
  *
@@ -44,7 +44,7 @@ namespace Smuxi.Frontend.Gnome
         private   bool               _HasActivity;
         public    int                ActivityCount { get; private set; }
         private   bool               _HasEvent;
-        private   bool               _IsSynced;
+        public bool IsSynced { get; private set; }
         private   Gtk.TextMark       _EndMark;
         private   Gtk.Menu           _TabMenu;
         private   Gtk.Label          _TabLabel;
@@ -497,7 +497,7 @@ namespace Smuxi.Frontend.Gnome
         {
             Trace.Call();
 
-            _IsSynced = false;
+            IsSynced = false;
         }
         
         public virtual void Sync()
@@ -587,7 +587,7 @@ namespace Smuxi.Frontend.Gnome
             OnStatusChanged(EventArgs.Empty);
 
             SyncedMessages = null;
-            _IsSynced = true;
+            IsSynced = true;
         }
         
         public virtual void UpdateLastSeenMessage()
@@ -732,7 +732,7 @@ namespace Smuxi.Frontend.Gnome
             var signalCounter = false;
             if (!IsActive) {
                 // the chat isn't active, thus we need to signal the event/msg counter
-                if (_IsSynced) {
+                if (IsSynced) {
                     signalCounter = true;
                 } else {
                     // we are still syncing and since Smuxi 0.13 we know what msg
@@ -763,7 +763,7 @@ namespace Smuxi.Frontend.Gnome
         
         protected virtual void OnMessageTextViewMessageHighlighted(object sender, 
MessageTextViewMessageHighlightedEventArgs e)
         {
-            if (_IsSynced) {
+            if (IsSynced) {
                 bool isActiveChat = IsActive;
 
                 if (Frontend.UseLowBandwidthMode && !isActiveChat) {
@@ -819,7 +819,7 @@ namespace Smuxi.Frontend.Gnome
                 // elsewhere) and the chat is was already synced, as during sync we
                 // would get insane from all beeping caused by the old highlights
                 if (!Frontend.MainWindow.HasToplevelFocus &&
-                    _IsSynced &&
+                    IsSynced &&
                     Frontend.UserConfig["Sound/BeepOnHighlight"] != null &&
                     (bool) Frontend.UserConfig["Sound/BeepOnHighlight"]) {
 #if LOG4NET


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