New e-d-s backend which indexes all local addressbooks and calendars.
[beagle.git] / beagled / EvolutionDataServerQueryable / EdsSource.cs
blob56b9f303f4ee8f7c72b3642fbf42e336115cb459
1 //
2 // EdsSource.cs
3 //
4 // Copyright (C) 2005 Novell, Inc.
5 //
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a
9 // copy of this software and associated documentation files (the "Software"),
10 // to deal in the Software without restriction, including without limitation
11 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 // and/or sell copies of the Software, and to permit persons to whom the
13 // Software is furnished to do so, subject to the following conditions:
15 // The above copyright notice and this permission notice shall be included in
16 // all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 // DEALINGS IN THE SOFTWARE.
27 using System;
29 using Beagle.Util;
31 using Evolution;
33 namespace Beagle.Daemon.EvolutionDataServerQueryable {
35 public delegate void IndexSourceHandler (Evolution.Source src);
37 public class EdsSource {
39 SourceList source_list;
41 public IndexSourceHandler IndexSourceAll;
42 public IndexSourceHandler IndexSourceChanges;
43 public IndexSourceHandler RemoveSource;
45 public EdsSource (string gconf_key)
47 this.source_list = new SourceList (gconf_key);
49 if (this.source_list == null) {
50 // FIXME: We may want to watch for the creation
51 // of the sources GConf key
52 Logger.Log.Info ("No sources found at {0}", gconf_key);
53 return;
56 this.source_list.GroupAdded += OnGroupAdded;
57 this.source_list.GroupRemoved += OnGroupRemoved;
60 public void Index ()
62 if (this.source_list == null)
63 return;
65 foreach (SourceGroup group in this.source_list.Groups)
66 IndexSourceGroup (group);
69 private void IndexSourceGroup (SourceGroup group)
71 group.SourceAdded += OnSourceAdded;
72 group.SourceRemoved += OnSourceRemoved;
74 foreach (Evolution.Source src in group.Sources)
75 this.IndexSourceChanges (src);
78 private void RemoveSourceGroup (SourceGroup group)
80 foreach (Evolution.Source src in group.Sources)
81 this.RemoveSource (src);
84 private void OnGroupAdded (object o, GroupAddedArgs args)
86 IndexSourceGroup (args.Group);
89 private void OnGroupRemoved (object o, GroupRemovedArgs args)
91 RemoveSourceGroup (args.Group);
94 private void OnSourceAdded (object o, SourceAddedArgs args)
96 this.IndexSourceAll (args.Source);
99 private void OnSourceRemoved (object o, SourceRemovedArgs args)
101 this.RemoveSource (args.Source);