[tasque/transition: 62/213] Begin work on RtmBackend transition



commit 2171f316ba9da9fc8d6da6822ccdaacce051faef
Author: Antonius Riha <antoniusriha gmail com>
Date:   Thu Jun 21 14:52:54 2012 +0200

    Begin work on RtmBackend transition

 src/tasque/Backends/Dummy/DummyBackend.cs |    2 -
 src/tasque/Backends/Rtm/RtmBackend.cs     |   47 +++++++++-------------------
 src/tasque/TreeViewModelImplementor.cs    |   18 +++++++++--
 src/tasque/tasque.csproj                  |   11 ++++---
 4 files changed, 36 insertions(+), 42 deletions(-)
---
diff --git a/src/tasque/Backends/Dummy/DummyBackend.cs b/src/tasque/Backends/Dummy/DummyBackend.cs
index ac62241..49e0fbe 100644
--- a/src/tasque/Backends/Dummy/DummyBackend.cs
+++ b/src/tasque/Backends/Dummy/DummyBackend.cs
@@ -19,7 +19,6 @@ namespace Tasque.Backends.Dummy
 		/// Key   = Task ID
 		/// Value = Gtk.TreeIter in taskStore
 		/// </summary>
-		private Dictionary<int, Gtk.TreeIter> taskIters;
 		private int newTaskId;
 		private bool initialized;
 		private bool configured = true;
@@ -39,7 +38,6 @@ namespace Tasque.Backends.Dummy
 		{
 			initialized = false;
 			newTaskId = 0;
-			taskIters = new Dictionary<int, Gtk.TreeIter> (); 
 			Tasks = new ObservableCollection<ITask> ();
 			
 			categoryListStore = new Gtk.ListStore (typeof(ICategory));
diff --git a/src/tasque/Backends/Rtm/RtmBackend.cs b/src/tasque/Backends/Rtm/RtmBackend.cs
index 8348d2e..670ba16 100644
--- a/src/tasque/Backends/Rtm/RtmBackend.cs
+++ b/src/tasque/Backends/Rtm/RtmBackend.cs
@@ -10,6 +10,8 @@ using Tasque.Backends;
 using RtmNet;
 using System.Threading;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
 
 namespace Tasque.Backends.RtmBackend
 {
@@ -17,8 +19,6 @@ namespace Tasque.Backends.RtmBackend
 	{
 		private const string apiKey = "b29f7517b6584035d07df3170b80c430";
 		private const string sharedSecret = "93eb5f83628b2066";
-		private Gtk.TreeStore taskStore;
-		private Gtk.TreeModelSort sortedTasksModel;
 
 		private Gtk.ListStore categoryListStore;
 		private Gtk.TreeModelSort sortedCategoriesModel;
@@ -31,8 +31,7 @@ namespace Tasque.Backends.RtmBackend
 		private string frob;
 		private Auth rtmAuth;
 		private string timeline;
-		
-		private Dictionary<string, Gtk.TreeIter> taskIters;
+
 		private object taskLock;
 
 		private Dictionary<string, RtmCategory> categories;
@@ -49,7 +48,6 @@ namespace Tasque.Backends.RtmBackend
 			initialized = false;
 			configured = false;
 
-			taskIters = new Dictionary<string, Gtk.TreeIter> ();
 			taskLock = new Object();
 			
 			categories = new Dictionary<string, RtmCategory> ();
@@ -58,11 +56,7 @@ namespace Tasque.Backends.RtmBackend
 			// *************************************
 			// Data Model Set up
 			// *************************************
-			taskStore = new Gtk.TreeStore (typeof (ITask));
-
-			sortedTasksModel = new Gtk.TreeModelSort (taskStore);
-			sortedTasksModel.SetSortFunc (0, new Gtk.TreeIterCompareFunc (CompareTasksSortFunc));
-			sortedTasksModel.SetSortColumnId (0, Gtk.SortType.Ascending);
+			Tasks = new ObservableCollection<ITask>();
 
 			categoryListStore = new Gtk.ListStore (typeof (ICategory));
 
@@ -92,11 +86,13 @@ namespace Tasque.Backends.RtmBackend
 		/// <value>
 		/// All the tasks including ITaskDivider items.
 		/// </value>
-		public Gtk.TreeModel SortedTasks
+		public IEnumerable<ITask> SortedTasks
 		{
-			get { return sortedTasksModel; }
+			get { return Tasks.OrderBy (t => t, Comparer<ITask>.Default); }
 		}
 
+		public ObservableCollection<ITask> Tasks { get; private set; }
+
 		/// <value>
 		/// This returns all the task lists (categories) that exist.
 		/// </value>
@@ -177,7 +173,7 @@ namespace Tasque.Backends.RtmBackend
 						Gtk.Application.Invoke ( delegate {
 							if(taskIters.ContainsKey(rtmTask.ID)) {
 								Gtk.TreeIter iter = taskIters[rtmTask.ID];
-								taskStore.Remove(ref iter);
+								Tasks.Remove(ref iter);
 								taskIters.Remove(rtmTask.ID);
 							}
 						});
@@ -429,7 +425,7 @@ namespace Tasque.Backends.RtmBackend
 				Gtk.Application.Invoke ( delegate {
 					if(taskIters.ContainsKey(task.ID)) {
 						iter = taskIters[task.ID];
-						taskStore.SetValue (iter, 0, task);
+						Tasks.SetValue (iter, 0, task);
 					}
 				});
 			}		
@@ -445,11 +441,11 @@ namespace Tasque.Backends.RtmBackend
 					Gtk.Application.Invoke ( delegate {
 						if(taskIters.ContainsKey(rtmTask.ID)) {
 							Gtk.TreeIter iter = taskIters[rtmTask.ID];
-							taskStore.SetValue (iter, 0, rtmTask);
+							Tasks.SetValue (iter, 0, rtmTask);
 						} else {
-							Gtk.TreeIter iter = taskStore.AppendNode();
+							Gtk.TreeIter iter = Tasks.AppendNode();
 							taskIters.Add(rtmTask.ID, iter);
-							taskStore.SetValue (iter, 0, rtmTask);
+							Tasks.SetValue (iter, 0, rtmTask);
 						}
 					});
 				}
@@ -518,19 +514,6 @@ namespace Tasque.Backends.RtmBackend
 #endregion // Public Methods
 
 #region Private Methods
-		static int CompareTasksSortFunc (Gtk.TreeModel model,
-				Gtk.TreeIter a,
-				Gtk.TreeIter b)
-		{
-			ITask taskA = model.GetValue (a, 0) as ITask;
-			ITask taskB = model.GetValue (b, 0) as ITask;
-
-			if (taskA == null || taskB == null)
-				return 0;
-
-			return (taskA.CompareTo (taskB));
-		}
-
 		static int CompareCategorySortFunc (Gtk.TreeModel model,
 											Gtk.TreeIter a,
 											Gtk.TreeIter b)
@@ -622,11 +605,11 @@ namespace Tasque.Backends.RtmBackend
 										if(taskIters.ContainsKey(rtmTask.ID)) {
 											iter = taskIters[rtmTask.ID];
 										} else {
-											iter = taskStore.AppendNode ();
+											iter = Tasks.AppendNode ();
 											taskIters.Add(rtmTask.ID, iter);
 										}
 
-										taskStore.SetValue (iter, 0, rtmTask);
+										Tasks.SetValue (iter, 0, rtmTask);
 									});
 								}
 							}
diff --git a/src/tasque/TreeViewModelImplementor.cs b/src/tasque/TreeViewModelImplementor.cs
index 490b296..39ee96b 100644
--- a/src/tasque/TreeViewModelImplementor.cs
+++ b/src/tasque/TreeViewModelImplementor.cs
@@ -30,15 +30,27 @@ using System.Runtime.InteropServices;
 using GLib;
 using Gtk;
 using System.Linq;
+using System.Collections.Specialized;
 
 namespace Tasque
 {
 	public class TreeViewModelImplementor<T> : GLib.Object, TreeModelImplementor where T : class
 	{
-		public TreeViewModelImplementor (IEnumerable<T> collection)
+		public static TreeViewModelImplementor<T> CreateImplementor<TItems> (TItems items)
+			where TItems : IEnumerable<T>, INotifyCollectionChanged
 		{
+			if (items == null)
+				throw new ArgumentNullException ("collection");
+
+
+		}
+
+		public TreeViewModelImplementor (IEnumerable<T> items)
+		{
+
+
 			stamp = new Random ().Next (int.MinValue, int.MaxValue);
-			items = collection;
+			this.items = items;
 //			adapter = new TreeModelAdapter (this);
 			gcHandles = new List<GCHandle> ();
 		}
@@ -59,7 +71,7 @@ namespace Tasque
 			base.Dispose ();
 		}
 
-		public GLib.GType GetColumnType (int index_)
+		public GType GetColumnType (int index)
 		{
 			return (GType)typeof(T);
 		}
diff --git a/src/tasque/tasque.csproj b/src/tasque/tasque.csproj
index f57f57f..1ec9c9e 100644
--- a/src/tasque/tasque.csproj
+++ b/src/tasque/tasque.csproj
@@ -159,6 +159,7 @@
     </Reference>
     <Reference Include="notify-sharp, Version=0.4.0.0, Culture=neutral, PublicKeyToken=2df29c54e245917a">
       <Private>False</Private>
+      <Package>notify-sharp</Package>
     </Reference>
     <Reference Include="NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099">
       <Private>False</Private>
@@ -187,16 +188,16 @@
     <None Include="Backends\Hiveminder\service\Hiveminder.cs" />
     <None Include="Backends\Hiveminder\service\HiveminderException.cs" />
     <None Include="Backends\Hiveminder\service\Task.cs" />
-    <None Include="Backends\Rtm\RtmBackend.cs" />
-    <None Include="Backends\Rtm\RtmCategory.cs" />
-    <None Include="Backends\Rtm\RtmNote.cs" />
-    <None Include="Backends\Rtm\RtmPreferencesWidget.cs" />
-    <None Include="Backends\Rtm\RtmTask.cs" />
     <None Include="Backends\Sqlite\Database.cs" />
     <None Include="Backends\Sqlite\SqliteBackend.cs" />
     <None Include="Backends\Sqlite\SqliteCategory.cs" />
     <None Include="Backends\Sqlite\SqliteNote.cs" />
     <None Include="Backends\Sqlite\SqliteTask.cs" />
+    <None Include="Backends\Rtm\RtmBackend.cs" />
+    <None Include="Backends\Rtm\RtmCategory.cs" />
+    <None Include="Backends\Rtm\RtmNote.cs" />
+    <None Include="Backends\Rtm\RtmPreferencesWidget.cs" />
+    <None Include="Backends\Rtm\RtmTask.cs" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />



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