[tasque/transition: 62/213] Begin work on RtmBackend transition
- From: Antonius Riha <antoniusri src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tasque/transition: 62/213] Begin work on RtmBackend transition
- Date: Wed, 29 Aug 2012 18:39:14 +0000 (UTC)
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]