blam r628 - trunk/src
- From: cmartin svn gnome org
- To: svn-commits-list gnome org
- Subject: blam r628 - trunk/src
- Date: Sun, 7 Sep 2008 10:43:14 +0000 (UTC)
Author: cmartin
Date: Sun Sep 7 10:43:14 2008
New Revision: 628
URL: http://svn.gnome.org/viewvc/blam?rev=628&view=rev
Log:
Implement the IChannel interface for ChannelList.
This interface allows us to work much more easily with
channel groups by creating a backend-unaway interface to
channels and groups.
The transformation is probably not complete yet.
Modified:
trunk/src/Application.cs
trunk/src/Channel.cs
trunk/src/ChannelCollection.cs
trunk/src/ChannelGroup.cs
trunk/src/ChannelList.cs
trunk/src/Delegates.cs
trunk/src/Dialogs.cs
trunk/src/ItemList.cs
trunk/src/Opml.cs
Modified: trunk/src/Application.cs
==============================================================================
--- trunk/src/Application.cs (original)
+++ trunk/src/Application.cs Sun Sep 7 10:43:14 2008
@@ -179,7 +179,7 @@
"mainWindow", null);
gladeXML.Autoconnect(this);
- channelList = new ChannelList(mCollection.Channels);
+ channelList = new ChannelList(mCollection.Channels, mCollection.Groups);
((Container)channelListSw).Child = channelList;
channelList.ChannelSelectedEvent += ChannelSelected;
@@ -353,7 +353,7 @@
//Gnome.Url.Show(itemView.Widget.LinkMessage);
}
- private void ChannelSelected(Channel channel)
+ private void ChannelSelected(IChannel channel)
{
if (channel == null) {
SensitizeChannelMenuItems(false);
@@ -406,7 +406,7 @@
public void MenuChannelActivated (object obj, EventArgs args)
{
- Channel channel = channelList.GetSelected ();
+ IChannel channel = channelList.GetSelected ();
bool sensitive = true;
if (channel == null) {
@@ -597,10 +597,10 @@
addChannelDialog.Show ();
}
- public void EditChannelActivated (Channel channel)
+ public void EditChannelActivated (IChannel channel)
{
if (channel != null) {
- channelDialog.Show (channel);
+ channelDialog.Show (channel as Channel);
}
}
@@ -609,7 +609,7 @@
EditChannelActivated (channelList.GetSelected ());
}
- public void MarkChannelAsReadActivated (Channel channel)
+ public void MarkChannelAsReadActivated (IChannel channel)
{
if (channel.MarkAsRead ()) {
CCollection.Update (channel);
@@ -628,7 +628,7 @@
}
}
- public void RemoveChannelActivated(Channel channel)
+ public void RemoveChannelActivated(IChannel channel)
{
if (channel != null) {
RemoveChannelDialog.Show (mainWindow, mCollection, channel);
@@ -637,12 +637,12 @@
public void RemoveChannelActivated(object obj, EventArgs args)
{
- Channel channel = channelList.GetSelected ();
+ IChannel channel = channelList.GetSelected ();
RemoveChannelActivated(channel);
}
- public void RefreshChannelActivated(Channel channel)
+ public void RefreshChannelActivated(IChannel channel)
{
if (channel != null) {
mCollection.Refresh (channel);
@@ -651,7 +651,7 @@
public void RefreshChannelActivated(object obj, EventArgs args)
{
- Channel channel = channelList.GetSelected ();
+ IChannel channel = channelList.GetSelected ();
RefreshChannelActivated(channel);
}
@@ -688,24 +688,24 @@
}
}
- private void ChannelAddedCb (Channel channel)
+ private void ChannelAddedCb (IChannel channel)
{
channelList.Add (channel);
}
- private void ChannelUpdatedCb (Channel channel)
+ private void ChannelUpdatedCb (IChannel channel)
{
channelList.Updated (channel);
UpdateTotalNumberOfUnread ();
}
- private void ChannelRemovedCb (Channel channel)
+ private void ChannelRemovedCb (IChannel channel)
{
channelList.Remove (channel);
UpdateTotalNumberOfUnread ();
}
- private void ChannelRefreshStartedCb (Channel channel)
+ private void ChannelRefreshStartedCb (IChannel channel)
{
uint contextId = statusbar.GetContextId("update-status");
string statusString;
@@ -715,7 +715,7 @@
statusbar.Push (contextId, statusString);
}
- private void ChannelRefreshFinishedCb (Channel channel)
+ private void ChannelRefreshFinishedCb (IChannel channel)
{
uint contextId = statusbar.GetContextId("update-status");
Modified: trunk/src/Channel.cs
==============================================================================
--- trunk/src/Channel.cs (original)
+++ trunk/src/Channel.cs Sun Sep 7 10:43:14 2008
@@ -13,9 +13,19 @@
namespace Imendio.Blam {
- public class Channel {
- [XmlAttribute] public string Name = "";
- [XmlAttribute] public string Url = "";
+ public interface IChannel
+ {
+ int NrOfItems {get; }
+ int NrOfUnreadItems {get; }
+ string Name {get; set; }
+ string Url {get; set; }
+ ArrayList Items {get; set; }
+ bool MarkAsRead();
+ }
+
+ public class Channel : IChannel {
+ [XmlAttribute("Name")] public string Int_Name = "";
+ [XmlAttribute("Url")] public string Int_Url = "";
// Used when updating the feed
[XmlAttribute] public string LastModified = "";
@@ -28,6 +38,24 @@
[XmlAttribute] public string http_username = "";
[XmlAttribute] public string http_password = "";
+ public string Name {
+ get {
+ return Int_Name;
+ }
+ set {
+ Int_Name = value;
+ }
+ }
+
+ public string Url {
+ get {
+ return Int_Url;
+ }
+ set {
+ Int_Url = value;
+ }
+ }
+
public int NrOfItems {
get {
return mItems.Count;
Modified: trunk/src/ChannelCollection.cs
==============================================================================
--- trunk/src/ChannelCollection.cs (original)
+++ trunk/src/ChannelCollection.cs Sun Sep 7 10:43:14 2008
@@ -146,7 +146,7 @@
}
}
- public void Add (Channel channel)
+ public void Add (IChannel channel)
{
// Not the most efficient way of doing things :)
foreach (Channel ch in mChannels) {
@@ -166,7 +166,7 @@
MarkAsDirty(true);
}
- public void Update (Channel channel)
+ public void Update (IChannel channel)
{
MarkAsDirty (true);
@@ -175,7 +175,7 @@
}
}
- public void Remove (Channel channel)
+ public void Remove (IChannel channel)
{
mChannels.Remove (channel);
@@ -186,7 +186,7 @@
MarkAsDirty(true);
}
- public void Refresh (Channel channel)
+ public void Refresh (IChannel channel)
{
mQueue.Enqueue (channel);
EmitChannelRefreshStarted (channel);
@@ -197,7 +197,7 @@
thread.Start ();
}
- private void QueueChannelRefresh (Channel channel)
+ private void QueueChannelRefresh (IChannel channel)
{
mQueue.Enqueue (channel);
EmitChannelRefreshStarted (channel);
@@ -281,7 +281,7 @@
mRunningList.Remove (Thread.CurrentThread);
}
- private void EmitChannelRefreshStarted (Channel channel)
+ private void EmitChannelRefreshStarted (IChannel channel)
{
if (ChannelRefreshStarted != null) {
ChannelRefreshStarted (channel);
Modified: trunk/src/ChannelGroup.cs
==============================================================================
--- trunk/src/ChannelGroup.cs (original)
+++ trunk/src/ChannelGroup.cs Sun Sep 7 10:43:14 2008
@@ -11,10 +11,25 @@
namespace Imendio.Blam
{
[XmlType("group")]
- public class ChannelGroup
+ public class ChannelGroup : IChannel
{
- [XmlAttribute] public string Name = null;
+ [XmlAttribute("Name")] public string Int_Name = null;
+ [XmlAttribute("Url")] public string Int_Url = null;
[XmlElement("Channel", typeof(Channel))] public ArrayList Channels;
+ private ArrayList dummy;
+
+ public ArrayList Items {
+ get { /* FIXME: Cache this value. */
+ ArrayList tmp = new ArrayList();
+ foreach(Channel chan in Channels){
+ tmp.AddRange(chan.Items);
+ }
+ return tmp;
+ }
+ set {
+ dummy = value;
+ }
+ }
public int NrOfUnreadItems {
get {
@@ -37,5 +52,32 @@
return n;
}
}
+ public string Name {
+ get {
+ return Int_Name;
+ }
+ set {
+ Int_Name = value;
+ }
+ }
+
+ public string Url {
+ get {
+ return Int_Url;
+ }
+ set {
+ Int_Url = value;
+ }
+ }
+
+ public bool MarkAsRead()
+ {
+ bool ret = false;
+
+ foreach(Channel chan in Channels){
+ ret = chan.MarkAsRead();
+ }
+ return ret; /* FIXME: We shoudl probably do this some other way. */
+ }
}
}
Modified: trunk/src/ChannelList.cs
==============================================================================
--- trunk/src/ChannelList.cs (original)
+++ trunk/src/ChannelList.cs Sun Sep 7 10:43:14 2008
@@ -33,10 +33,11 @@
private TreeViewColumn nameColumn;
private IEnumerator channelEnumerator;
+ private IEnumerator groupEnumerator;
- private Channel LastChannel = null;
+ private IChannel LastChannel = null;
- public ChannelList(IList channels)
+ public ChannelList(IList channels, IList groups)
{
TreeViewColumn col;
CellRenderer cell;
@@ -67,12 +68,12 @@
selectionChangedHandler = new EventHandler(SelectionChanged);
this.Selection.Changed += selectionChangedHandler;
- this.Model = new ListStore (typeof(Channel));
+ this.Model = new TreeStore (typeof(Channel));
this.HeadersVisible = false;
// Sort the list
- (Model as ListStore).DefaultSortFunc = ChannelSort;
- ((ListStore)this.Model).SetSortColumnId (-1, SortType.Ascending);
+ (Model as TreeStore).DefaultSortFunc = ChannelSort;
+ (this.Model as TreeStore).SetSortColumnId (-1, SortType.Ascending);
// Right click popup
this.popupMenu = new ChannelMenu();
@@ -82,32 +83,49 @@
this.popupMenu.RefreshSelected += RefreshChannelCb;
channelEnumerator = channels.GetEnumerator();
+ groupEnumerator = groups.GetEnumerator();
GLib.Idle.Add(new GLib.IdleHandler(IdleAdd));
}
private void ForceResort()
{
- (Model as ListStore).SetSortColumnId(-1, SortType.Descending);
- (Model as ListStore).SetSortColumnId(-1, SortType.Ascending);
+ (Model as TreeStore).SetSortColumnId(-1, SortType.Descending);
+ (Model as TreeStore).SetSortColumnId(-1, SortType.Ascending);
}
private bool IdleAdd()
{
while (channelEnumerator.MoveNext ()) {
- Channel channel = (Channel)channelEnumerator.Current;
+ System.Console.WriteLine("before");
+ IChannel channel = channelEnumerator.Current as IChannel;
Add(channel);
+ System.Console.WriteLine("after");
+ }
+
+ while(groupEnumerator.MoveNext()){
+ IChannel group = groupEnumerator.Current as IChannel;
+ AddGroup(group);
}
return false;
}
- public void Add (Channel channel)
+ public void Add (IChannel channel)
+ {
+ (this.Model as TreeStore).AppendValues(channel);
+ }
+
+ public void AddGroup(IChannel channel)
{
- ((ListStore)this.Model).AppendValues(channel);
+ TreeIter iter = (this.Model as TreeStore).AppendValues(channel);
+ ChannelGroup group = channel as ChannelGroup;
+
+ foreach(IChannel chan in group.Channels)
+ (this.Model as TreeStore).AppendValues(iter, chan);
}
- public Channel GetSelected ()
+ public IChannel GetSelected ()
{
TreeModel model;
TreeIter iter;
@@ -116,10 +134,10 @@
return null;
}
- return(Channel)model.GetValue(iter, 0);
+ return(IChannel)model.GetValue(iter, 0);
}
- public void Updated (Channel channel)
+ public void Updated (IChannel channel)
{
TreeIter iter = FindChannel (channel);
@@ -131,7 +149,7 @@
}
- public void Remove (Channel channel)
+ public void Remove (IChannel channel)
{
TreeIter iter = FindChannel(channel);
bool valid;
@@ -158,7 +176,7 @@
TreeIter iter;
if (this.Selection.GetSelected(out model, out iter)) {
- Channel channel = (Channel)model.GetValue(iter, 0);
+ IChannel channel = (IChannel)model.GetValue(iter, 0);
if (channel.NrOfUnreadItems > 0) {
return true;
}
@@ -221,8 +239,8 @@
private int ChannelSort(TreeModel model, TreeIter ia, TreeIter ib)
{
- Channel a = Model.GetValue(ia, 0) as Channel;
- Channel b = Model.GetValue(ib, 0) as Channel;
+ IChannel a = Model.GetValue(ia, 0) as IChannel;
+ IChannel b = Model.GetValue(ib, 0) as IChannel;
return a.Name.CompareTo(b.Name);
}
@@ -261,14 +279,14 @@
TreeSelection selection = (TreeSelection)obj;
TreeIter iter;
TreeModel model;
- Channel channel;
+ IChannel channel;
if (!selection.GetSelected(out model, out iter)) {
EmitChannelSelected(null);
return;
}
- channel = (Channel)model.GetValue(iter, 0);
+ channel = model.GetValue(iter, 0) as IChannel;
if (channel != null) {
EmitChannelSelected(channel);
}
@@ -276,7 +294,7 @@
private void NamesCellDataFunc(TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
- Channel channel = model.GetValue(iter, 0) as Channel;
+ IChannel channel = model.GetValue(iter, 0) as IChannel;
int weight = (int)Pango.Weight.Normal;
(cell as CellRendererText).Text = channel.Name;
@@ -293,7 +311,7 @@
TreeModel model,
TreeIter iter)
{
- Channel channel = (Channel)model.GetValue(iter, 0);
+ IChannel channel = model.GetValue(iter, 0) as IChannel;
int weight = (int)Pango.Weight.Normal;
((CellRendererText)cell).Text = channel.NrOfUnreadItems + "/" + channel.NrOfItems;
@@ -305,7 +323,7 @@
((CellRendererText)cell).Weight = weight;
}
- private void EmitChannelSelected(Channel channel)
+ private void EmitChannelSelected(IChannel channel)
{
if(LastChannel != null){
foreach(Item item in LastChannel.Items){
@@ -321,7 +339,7 @@
}
// Used by ChannelUpdated
- private Channel findChannel;
+ private IChannel findChannel;
private TreeIter foundIter;
private bool ForeachFindChannel(TreeModel model,
TreePath path,
@@ -336,7 +354,7 @@
return false;
}
- private TreeIter FindChannel(Channel channel)
+ private TreeIter FindChannel(IChannel channel)
{
findChannel = channel;
foundIter = TreeIter.Zero;
@@ -346,7 +364,7 @@
return foundIter;
}
- private void EmitEditChannelEvent(Channel channel)
+ private void EmitEditChannelEvent(IChannel channel)
{
if (EditChannelEvent != null) {
EditChannelEvent(channel);
Modified: trunk/src/Delegates.cs
==============================================================================
--- trunk/src/Delegates.cs (original)
+++ trunk/src/Delegates.cs Sun Sep 7 10:43:14 2008
@@ -7,7 +7,7 @@
namespace Imendio.Blam {
public delegate void BlamEventHandler ();
- public delegate void ChannelEventHandler (Channel channel);
+ public delegate void ChannelEventHandler (IChannel channel);
public delegate void ActionFinishedHandler (string status);
public delegate void StringUpdatedHandler (string str);
}
Modified: trunk/src/Dialogs.cs
==============================================================================
--- trunk/src/Dialogs.cs (original)
+++ trunk/src/Dialogs.cs Sun Sep 7 10:43:14 2008
@@ -147,7 +147,7 @@
removeChannelDialog.IconName = "blam";
}
- public static void Show (Gtk.Window parent, ChannelCollection collection, Channel channel)
+ public static void Show (Gtk.Window parent, ChannelCollection collection, IChannel channel)
{
if (removeDialog == null) {
removeDialog = new RemoveChannelDialog (parent, collection);
Modified: trunk/src/ItemList.cs
==============================================================================
--- trunk/src/ItemList.cs (original)
+++ trunk/src/ItemList.cs Sun Sep 7 10:43:14 2008
@@ -28,8 +28,8 @@
private Item lastItem;
private uint lastTimeout;
- private Channel channel;
- public Channel CurrentChannel {
+ private IChannel channel;
+ public IChannel CurrentChannel {
get {
return channel;
}
Modified: trunk/src/Opml.cs
==============================================================================
--- trunk/src/Opml.cs (original)
+++ trunk/src/Opml.cs Sun Sep 7 10:43:14 2008
@@ -112,7 +112,7 @@
private int nrChannels;
- private void ChannelReadCb (Channel channel)
+ private void ChannelReadCb (IChannel channel)
{
++nrChannels;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]