4 // Copyright (C) 2005 Novell, Inc.
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.
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
);
56 this.source_list
.GroupAdded
+= OnGroupAdded
;
57 this.source_list
.GroupRemoved
+= OnGroupRemoved
;
62 if (this.source_list
== null)
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
);