blam r679 - trunk/src



Author: cmartin
Date: Tue Mar 10 01:39:26 2009
New Revision: 679
URL: http://svn.gnome.org/viewvc/blam?rev=679&view=rev

Log:
Make channel-in-group automagically get shown in the channel list.

Overload ChannelCollection's Add() to show add the channel inside the group of the
TreeView.

Modified:
   trunk/src/Application.cs
   trunk/src/ChannelCollection.cs
   trunk/src/ChannelGroup.cs
   trunk/src/ChannelList.cs
   trunk/src/Delegates.cs

Modified: trunk/src/Application.cs
==============================================================================
--- trunk/src/Application.cs	(original)
+++ trunk/src/Application.cs	Tue Mar 10 01:39:26 2009
@@ -164,6 +164,7 @@
 
             mCollection.ChannelUpdated         += ChannelUpdatedCb;
             mCollection.ChannelAdded           += ChannelAddedCb;
+			mCollection.ChannelGroupAdded      += ChannelGroupAddedCb;
             mCollection.ChannelRemoved         += ChannelRemovedCb;
             mCollection.ChannelRefreshStarted  += ChannelRefreshStartedCb;
             mCollection.ChannelRefreshFinished += ChannelRefreshFinishedCb;
@@ -683,6 +684,11 @@
             channelList.Add (channel);
         }
 
+		private void ChannelGroupAddedCb(IChannel group, IChannel chan)
+		{
+			channelList.AddToGroup(group, chan);
+		}
+
         private void ChannelUpdatedCb (IChannel channel)
         {
             channelList.Updated (channel);

Modified: trunk/src/ChannelCollection.cs
==============================================================================
--- trunk/src/ChannelCollection.cs	(original)
+++ trunk/src/ChannelCollection.cs	Tue Mar 10 01:39:26 2009
@@ -18,6 +18,7 @@
     public class ChannelCollection {
 
 	public event ChannelEventHandler ChannelAdded;
+	public event ChannelGroupEventHandler ChannelGroupAdded;
 	public event ChannelEventHandler ChannelUpdated;
 	public event ChannelEventHandler ChannelRemoved;
 	
@@ -166,6 +167,18 @@
         MarkAsDirty(true);
 	}
 
+	public void Add(ChannelGroup group, IChannel channel)
+	{
+		group.Add(channel);
+		Refresh(channel);
+
+		if(ChannelGroupAdded != null){
+			ChannelGroupAdded(group, channel);
+		}
+
+		MarkAsDirty(true);
+	}
+
 	public void Update (IChannel channel)
 	{
 	    MarkAsDirty (true);

Modified: trunk/src/ChannelGroup.cs
==============================================================================
--- trunk/src/ChannelGroup.cs	(original)
+++ trunk/src/ChannelGroup.cs	Tue Mar 10 01:39:26 2009
@@ -92,6 +92,14 @@
 
 		public void Add(IChannel chan)
 		{
+			foreach(Channel ch in Channels){
+				if(ch.Url == chan.Url)
+					return;
+			}
+
+			if(chan.Name == null)
+				chan.Name = chan.Url;
+
 			Channels.Add(chan);
 		}
 

Modified: trunk/src/ChannelList.cs
==============================================================================
--- trunk/src/ChannelList.cs	(original)
+++ trunk/src/ChannelList.cs	Tue Mar 10 01:39:26 2009
@@ -150,9 +150,7 @@
 				}
 
 				Blam.Application.TheApp.CCollection.Remove(src);
-				(dst as ChannelGroup).Add(src);
-				src.Iter = (Model as TreeStore).AppendValues(dst.Iter, src);
-				Model.EmitRowChanged(path, iter);
+				Blam.Application.TheApp.CCollection.Add(dst as ChannelGroup, src);
 			}
 		}
 
@@ -176,6 +174,11 @@
             channel.Iter = (this.Model as TreeStore).AppendValues(channel);
         }
 
+		public void AddToGroup(IChannel group, IChannel channel)
+		{
+			channel.Iter = (Model as TreeStore).AppendValues(group.Iter, channel);
+		}
+
         public void AddGroup(IChannel channel)
         {
             TreeIter iter = (this.Model as TreeStore).AppendValues(channel);

Modified: trunk/src/Delegates.cs
==============================================================================
--- trunk/src/Delegates.cs	(original)
+++ trunk/src/Delegates.cs	Tue Mar 10 01:39:26 2009
@@ -8,6 +8,7 @@
 namespace Imendio.Blam {
     public delegate void BlamEventHandler      ();
     public delegate void ChannelEventHandler   (IChannel channel);
+    public delegate void ChannelGroupEventHandler (IChannel group, IChannel channel);
     public delegate void ActionFinishedHandler (string  status);
     public delegate void StringUpdatedHandler  (string  str);
 }



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