Merge lp:~mandel/ubuntuone-windows-installer/split_objects_definition into lp:ubuntuone-windows-installer/beta

Proposed by Manuel de la Peña
Status: Merged
Merged at revision: 50
Proposed branch: lp:~mandel/ubuntuone-windows-installer/split_objects_definition
Merge into: lp:ubuntuone-windows-installer/beta
Prerequisite: lp:~mandel/ubuntuone-windows-installer/add_update_view
Diff against target: 497 lines (+285/-17)
13 files modified
src/Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views.csproj (+3/-0)
src/Canonical.UbuntuOne.Client.Views/objects.xml (+15/-0)
src/Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common.csproj (+3/-0)
src/Canonical.UbuntuOne.Common/Update/IUpdater.cs (+0/-5)
src/Canonical.UbuntuOne.Common/objects.xml (+38/-0)
src/UbuntuOneClient.Tests/ConfigurationFixture.cs (+126/-0)
src/UbuntuOneClient.Tests/ProgramFixture.cs (+10/-8)
src/UbuntuOneClient.Tests/Properties/AssemblyInfo.cs (+3/-0)
src/UbuntuOneClient.Tests/SetupClass.cs (+44/-0)
src/UbuntuOneClient.Tests/UbuntuOneClient.Tests.csproj (+22/-0)
src/UbuntuOneClient/App.config (+18/-0)
src/UbuntuOneClient/Program.cs (+1/-0)
src/UbuntuOneClient/objects.xml (+2/-4)
To merge this branch: bzr merge lp:~mandel/ubuntuone-windows-installer/split_objects_definition
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Tim Cole (community) Approve
Review via email: mp+31518@code.launchpad.net

Description of the change

This branch provides the split of the object definitions for the IoC in different assemblies so that we can easily keep track of them and add inject different ones according to the assembly.

To post a comment you must log in.
Revision history for this message
Tim Cole (tcole) wrote :

Seems to have merge conflicts.

review: Needs Fixing
71. By Manuel de la Peña

Merge with trunk.

Revision history for this message
Manuel de la Peña (mandel) wrote :

Conflicts have been fixed.

Revision history for this message
Tim Cole (tcole) wrote :

Looks okay, I think... I wonder if there isn't a less verbose/more automatic way to handle the localized strings though. Metaprogramming?

review: Approve
Revision history for this message
Manuel de la Peña (mandel) wrote :

> Looks okay, I think... I wonder if there isn't a less verbose/more automatic
> way to handle the localized strings though. Metaprogramming?
Interesting though, which part did you find verbose?

72. By Manuel de la Peña

Merge with parent

Revision history for this message
John Lenton (chipaca) :
review: Approve
73. By Manuel de la Peña

Merge with parent.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views.csproj'
2--- src/Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views.csproj 2010-08-05 19:29:41 +0000
3+++ src/Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views.csproj 2010-08-05 19:29:42 +0000
4@@ -213,6 +213,9 @@
5 <Name>Canonical.UbuntuOne.Common</Name>
6 </ProjectReference>
7 </ItemGroup>
8+ <ItemGroup>
9+ <EmbeddedResource Include="objects.xml" />
10+ </ItemGroup>
11 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
12 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
13 Other similar extension points exist, see Microsoft.Common.targets.
14
15=== added file 'src/Canonical.UbuntuOne.Client.Views/objects.xml'
16--- src/Canonical.UbuntuOne.Client.Views/objects.xml 1970-01-01 00:00:00 +0000
17+++ src/Canonical.UbuntuOne.Client.Views/objects.xml 2010-08-05 19:29:42 +0000
18@@ -0,0 +1,15 @@
19+<?xml version="1.0" encoding="utf-8" ?>
20+<objects xmlns="http://www.springframework.net">
21+ <!-- Regsiter the different objects that are available in the assembly -->
22+ <object id="DownloadingView"
23+ type="Canonical.UbuntuOne.Client.Views.Update.DownloadingView, Canonical.UbuntuOne.Client.Views" />
24+
25+ <object id="UpdatingView"
26+ type="Canonical.UbuntuOne.Client.Views.Update.UpdatingView, Canonical.UbuntuOne.Client.Views" />
27+
28+ <object id="UbuntuOneNotifyIcon"
29+ type="Canonical.UbuntuOne.Client.Views.UbuntuOneNotifyIcon, Canonical.UbuntuOne.Client.Views" />
30+
31+ <object id="MessageBox"
32+ type="Canonical.UbuntuOne.Client.Views.UbuntuOneMessageBox, Canonical.UbuntuOne.Client.Views" />
33+</objects>
34\ No newline at end of file
35
36=== modified file 'src/Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common.csproj'
37--- src/Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common.csproj 2010-08-05 19:29:41 +0000
38+++ src/Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common.csproj 2010-08-05 19:29:42 +0000
39@@ -161,5 +161,8 @@
40 <SubType>Designer</SubType>
41 </EmbeddedResource>
42 </ItemGroup>
43+ <ItemGroup>
44+ <EmbeddedResource Include="objects.xml" />
45+ </ItemGroup>
46 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
47 </Project>
48\ No newline at end of file
49
50=== modified file 'src/Canonical.UbuntuOne.Common/Update/IUpdater.cs'
51--- src/Canonical.UbuntuOne.Common/Update/IUpdater.cs 2010-08-05 19:29:41 +0000
52+++ src/Canonical.UbuntuOne.Common/Update/IUpdater.cs 2010-08-05 19:29:42 +0000
53@@ -35,11 +35,6 @@
54 string RSSFeed { get; set; }
55
56 /// <summary>
57- /// Gets and sets the view that will be used to ask for confirmation when an update exists.
58- /// </summary>
59- IDownloadingPresenter DownloadingPresenter { get; set; }
60-
61- /// <summary>
62 /// Returns if the are updates present for the application.
63 /// </summary>
64 /// <returns>A flag indicating if updates are available.</returns>
65
66=== added file 'src/Canonical.UbuntuOne.Common/objects.xml'
67--- src/Canonical.UbuntuOne.Common/objects.xml 1970-01-01 00:00:00 +0000
68+++ src/Canonical.UbuntuOne.Common/objects.xml 2010-08-05 19:29:42 +0000
69@@ -0,0 +1,38 @@
70+<?xml version="1.0" encoding="utf-8" ?>
71+<objects xmlns="http://www.springframework.net">
72+
73+ <!-- ######################################################################################## -->
74+ <!-- General Objects -->
75+ <!-- ######################################################################################## -->
76+
77+ <object id="Authentication"
78+ type="Canonical.UbuntuOne.Common.SyncDaemonAuthentication, Canonical.UbuntuOne.Common"
79+ autowire="autodetect"/>
80+
81+ <object id="ProcessManager"
82+ type="Canonical.UbuntuOne.Common.ProcessManager, Canonical.UbuntuOne.Common"
83+ autowire="autodetect"/>
84+
85+ <!-- ######################################################################################## -->
86+ <!-- Updater objects -->
87+ <!-- ######################################################################################## -->
88+
89+ <object id="DownloadingPresenter"
90+ type="Canonical.UbuntuOne.Common.Update.DownloadingPresenter, Canonical.UbuntuOne.Common"
91+ autowire="autodetect"/>
92+
93+ <object id="UpdatingPresenter"
94+ type="Canonical.UbuntuOne.Common.Update.UpdatingPresenter, Canonical.UbuntuOne.Common"
95+ autowire="autodetect"/>
96+
97+ <object id="Updater"
98+ type="Canonical.UbuntuOne.Common.Update.Updater, Canonical.UbuntuOne.Common"
99+ autowire="autodetect">
100+ <property name="RSSFeed"
101+ value="http://path/to/rss.feed"/> <!-- Provide a way to set this through config ????-->
102+ </object>
103+
104+
105+
106+</objects>
107+
108\ No newline at end of file
109
110=== added directory 'src/UbuntuOneClient.Tests/Config'
111=== added file 'src/UbuntuOneClient.Tests/ConfigurationFixture.cs'
112--- src/UbuntuOneClient.Tests/ConfigurationFixture.cs 1970-01-01 00:00:00 +0000
113+++ src/UbuntuOneClient.Tests/ConfigurationFixture.cs 2010-08-05 19:29:42 +0000
114@@ -0,0 +1,126 @@
115+/**
116+ * Copyright 2010 Canonical Ltd.
117+ *
118+ * This file is part of UbuntuOne on Windows.
119+ *
120+ * UbuntuOne on Windows is free software: you can redistribute it and/or modify
121+ * it under the terms of the GNU Lesser General Public License version
122+ * as published by the Free Software Foundation.
123+ *
124+ * Ubuntu One on Windows is distributed in the hope that it will be useful,
125+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
126+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
127+ * GNU Lesser General Public License for more details.
128+ *
129+ * You should have received a copy of the GNU Lesser General Public License
130+ * along with UbuntuOne for Windows. If not, see <http://www.gnu.org/licenses/>.
131+ *
132+ * Authors: Manuel de la Peña <manuel.delapena@canonical.com>
133+ */
134+using Canonical.UbuntuOne.Common.Container;
135+using Canonical.UbuntuOne.Common.Update;
136+using NUnit.Framework;
137+
138+namespace UbuntuOneClient.Tests
139+{
140+ /// <summary>
141+ /// Intergation test class that test that the configuration of the client app has been correctly done.
142+ /// </summary>
143+ [TestFixture]
144+ public class ConfigurationFixture
145+ {
146+ #region Tests
147+
148+ [Test]
149+ public void ProgramIsNotNullTest()
150+ {
151+ Assert.IsNotNull(ObjectsContainer.GetImplementationOf<Program>());
152+ }
153+
154+ [Test]
155+ public void UpdaterIsNotNull()
156+ {
157+ var program = ObjectsContainer.GetImplementationOf<Program>();
158+ Assert.IsNotNull(program.Updater);
159+ }
160+
161+ [Test]
162+ public void NotifyIconIsNotNull()
163+ {
164+ var program = ObjectsContainer.GetImplementationOf<Program>();
165+ Assert.IsNotNull(program.NotifyIcon);
166+ }
167+
168+ [Test]
169+ public void ApplicationIsNotNull()
170+ {
171+ var program = ObjectsContainer.GetImplementationOf<Program>();
172+ Assert.IsNotNull(program.Application);
173+ }
174+
175+ [Test]
176+ public void DownloadingPresenterIsNotNull()
177+ {
178+ var program = ObjectsContainer.GetImplementationOf<Program>();
179+ var updater = program.Updater as Updater;
180+ if(updater != null)
181+ {
182+ Assert.IsNotNull(updater.DownloadingPresenter);
183+ }
184+ else
185+ {
186+ Assert.Inconclusive("The integration test cannot be ran because the expected inject type was {0}", typeof(Updater));
187+ }
188+ }
189+
190+ [Test]
191+ public void DownloadingPresenterHasView()
192+ {
193+ var program = ObjectsContainer.GetImplementationOf<Program>();
194+ var updater = program.Updater as Updater;
195+ if (updater != null)
196+ {
197+ var presenter = updater.DownloadingPresenter;
198+ Assert.IsNotNull(presenter.View);
199+ }
200+ else
201+ {
202+ Assert.Inconclusive("The integration test cannot be ran because the expected inject type was {0}", typeof(Updater));
203+ }
204+ }
205+
206+ [Test]
207+ public void UpdatingPresenterIsNotNull()
208+ {
209+ var program = ObjectsContainer.GetImplementationOf<Program>();
210+ var updater = program.Updater as Updater;
211+ if (updater != null)
212+ {
213+ Assert.IsNotNull(updater.UpdatingPresenter);
214+ }
215+ else
216+ {
217+ Assert.Inconclusive("The integration test cannot be ran because the expected inject type was {0}", typeof(Updater));
218+ }
219+ }
220+
221+ [Test]
222+ public void UpdatingPresetnerHasView()
223+ {
224+ var program = ObjectsContainer.GetImplementationOf<Program>();
225+ var updater = program.Updater as Updater;
226+ if (updater != null)
227+ {
228+ var presenter = updater.UpdatingPresenter;
229+ Assert.IsNotNull(presenter.View);
230+ }
231+ else
232+ {
233+ Assert.Inconclusive("The integration test cannot be ran because the expected inject type was {0}", typeof(Updater));
234+ }
235+ }
236+
237+
238+ #endregion
239+ }
240+}
241
242=== modified file 'src/UbuntuOneClient.Tests/ProgramFixture.cs'
243--- src/UbuntuOneClient.Tests/ProgramFixture.cs 2010-08-05 19:29:41 +0000
244+++ src/UbuntuOneClient.Tests/ProgramFixture.cs 2010-08-05 19:29:42 +0000
245@@ -17,6 +17,7 @@
246 *
247 * Authors: Manuel de la Peña <manuel.delapena@canonical.com>
248 */
249+using System;
250 using System.Windows;
251 using Canonical.UbuntuOne.Client.Notification;
252 using Canonical.UbuntuOne.Common.Update;
253@@ -52,7 +53,7 @@
254 _app = _mocks.StrictMock<IApplication>();
255 _program = new Program
256 {
257- NotifyIcon = _notifyIcon,
258+ NotifyIcon = _notifyIcon,
259 Updater = _updater,
260 Application = _app
261 };
262@@ -72,11 +73,11 @@
263 [Test]
264 public void StartApplicationNoUpdates()
265 {
266- using(_mocks.Record())
267+ using (_mocks.Record())
268 {
269 // expect the application shutdown mode to change
270 _app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
271-
272+
273 // expect that we are calling the run with the correct window
274 Expect.Call(() => _app.Run(_notifyIcon))
275 .Repeat.Once();
276@@ -86,7 +87,7 @@
277 Expect.Call(_updater.UpdatesArePresent())
278 .Return(false);
279 }
280- using(_mocks.Playback())
281+ using (_mocks.Playback())
282 {
283 _program.StartApplication();
284 }
285@@ -109,9 +110,10 @@
286 Expect.Call(_updater.UpdatesArePresent())
287 .Return(true);
288
289- Expect.Call(() => _updater.PerformUpdate());
290+ Expect.Call(() => _updater.PerformUpdate())
291+ .Repeat.Any();
292 }
293- using(_mocks.Playback())
294+ using (_mocks.Playback())
295 {
296 _program.StartApplication();
297 }
298@@ -120,7 +122,7 @@
299 [Test]
300 public void StartApplicationWithCheckUpdatesExceptionTest()
301 {
302- using(_mocks.Record())
303+ using (_mocks.Record())
304 {
305 _app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
306
307@@ -133,7 +135,7 @@
308 .Throw(new SelfUpdateException());
309
310 }
311- using(_mocks.Playback())
312+ using (_mocks.Playback())
313 {
314 _program.StartApplication();
315 }
316
317=== modified file 'src/UbuntuOneClient.Tests/Properties/AssemblyInfo.cs'
318--- src/UbuntuOneClient.Tests/Properties/AssemblyInfo.cs 2010-07-28 11:01:32 +0000
319+++ src/UbuntuOneClient.Tests/Properties/AssemblyInfo.cs 2010-08-05 19:29:42 +0000
320@@ -1,6 +1,7 @@
321 using System.Reflection;
322 using System.Runtime.CompilerServices;
323 using System.Runtime.InteropServices;
324+using NUnit.Framework;
325
326 // General Information about an assembly is controlled through the following
327 // set of attributes. Change these attribute values to modify the information
328@@ -34,3 +35,5 @@
329 // [assembly: AssemblyVersion("1.0.*")]
330 [assembly: AssemblyVersion("1.0.0.0")]
331 [assembly: AssemblyFileVersion("1.0.0.0")]
332+// Tell NUNi to run tests in STA
333+[assembly: RequiresSTA]
334
335=== added file 'src/UbuntuOneClient.Tests/SetupClass.cs'
336--- src/UbuntuOneClient.Tests/SetupClass.cs 1970-01-01 00:00:00 +0000
337+++ src/UbuntuOneClient.Tests/SetupClass.cs 2010-08-05 19:29:42 +0000
338@@ -0,0 +1,44 @@
339+/**
340+ * Copyright 2010 Canonical Ltd.
341+ *
342+ * This file is part of UbuntuOne on Windows.
343+ *
344+ * UbuntuOne on Windows is free software: you can redistribute it and/or modify
345+ * it under the terms of the GNU Lesser General Public License version
346+ * as published by the Free Software Foundation.
347+ *
348+ * Ubuntu One on Windows is distributed in the hope that it will be useful,
349+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
350+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
351+ * GNU Lesser General Public License for more details.
352+ *
353+ * You should have received a copy of the GNU Lesser General Public License
354+ * along with UbuntuOne for Windows. If not, see <http://www.gnu.org/licenses/>.
355+ *
356+ * Authors: Manuel de la Peña <manuel.delapena@canonical.com>
357+ */
358+using System;
359+using Canonical.UbuntuOne.Common.Container;
360+using NUnit.Framework;
361+
362+namespace UbuntuOneClient.Tests
363+{
364+ /// <summary>
365+ /// Set up class ran before any test.
366+ /// </summary>
367+ [SetUpFixture]
368+ public class SetupClass
369+ {
370+ [SetUp]
371+ public void Setup()
372+ {
373+ ObjectsContainer.Initialize(new SpringContainer());
374+ }
375+
376+ [TearDown]
377+ public void TearDown()
378+ {
379+ ObjectsContainer.Clear();
380+ }
381+ }
382+}
383
384=== modified file 'src/UbuntuOneClient.Tests/UbuntuOneClient.Tests.csproj'
385--- src/UbuntuOneClient.Tests/UbuntuOneClient.Tests.csproj 2010-07-28 11:01:32 +0000
386+++ src/UbuntuOneClient.Tests/UbuntuOneClient.Tests.csproj 2010-08-05 19:29:42 +0000
387@@ -31,6 +31,14 @@
388 <WarningLevel>4</WarningLevel>
389 </PropertyGroup>
390 <ItemGroup>
391+ <Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
392+ <SpecificVersion>False</SpecificVersion>
393+ <HintPath>..\..\lib\Spring.Net\Common.Logging.Log4Net.dll</HintPath>
394+ </Reference>
395+ <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
396+ <SpecificVersion>False</SpecificVersion>
397+ <HintPath>..\..\lib\log4net\log4net.dll</HintPath>
398+ </Reference>
399 <Reference Include="nunit.framework, Version=2.5.5.10112, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
400 <SpecificVersion>False</SpecificVersion>
401 <HintPath>..\..\lib\Nunit\nunit.framework.dll</HintPath>
402@@ -59,10 +67,16 @@
403 </Reference>
404 </ItemGroup>
405 <ItemGroup>
406+ <Compile Include="ConfigurationFixture.cs" />
407 <Compile Include="ProgramFixture.cs" />
408 <Compile Include="Properties\AssemblyInfo.cs" />
409+ <Compile Include="SetupClass.cs" />
410 </ItemGroup>
411 <ItemGroup>
412+ <ProjectReference Include="..\Canonical.UbuntuOne.Client.Views\Canonical.UbuntuOne.Client.Views.csproj">
413+ <Project>{1F0E3DAF-F22F-4B0C-8039-118B082DA237}</Project>
414+ <Name>Canonical.UbuntuOne.Client.Views</Name>
415+ </ProjectReference>
416 <ProjectReference Include="..\Canonical.UbuntuOne.Client\Canonical.UbuntuOne.Client.csproj">
417 <Project>{7467483A-D6D5-4362-8DF4-57A7254EB569}</Project>
418 <Name>Canonical.UbuntuOne.Client</Name>
419@@ -76,6 +90,14 @@
420 <Name>UbuntuOneClient</Name>
421 </ProjectReference>
422 </ItemGroup>
423+ <ItemGroup>
424+ <None Include="..\UbuntuOneClient\App.config">
425+ <Link>App.config</Link>
426+ </None>
427+ <None Include="..\UbuntuOneClient\Config\log4net.config">
428+ <Link>Config\log4net.config</Link>
429+ </None>
430+ </ItemGroup>
431 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
432 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
433 Other similar extension points exist, see Microsoft.Common.targets.
434
435=== modified file 'src/UbuntuOneClient/App.config'
436--- src/UbuntuOneClient/App.config 2010-07-28 07:47:45 +0000
437+++ src/UbuntuOneClient/App.config 2010-08-05 19:29:42 +0000
438@@ -14,9 +14,27 @@
439 type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
440 </sectionGroup>
441 </configSections>
442+
443+ <!-- logging configuration -->
444+ <common>
445+ <logging>
446+ <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
447+ <!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
448+ <!-- otherwise BasicConfigurer.Configure is used -->
449+ <!-- log4net configuration file is specified with key configFile-->
450+ <arg key="configType"
451+ value="FILE" />
452+ <arg key="configFile"
453+ value="~/Config/log4net.config" />
454+ </factoryAdapter>
455+ </logging>
456+ </common>
457+
458 <spring>
459 <context>
460 <resource uri="assembly://UbuntuOneClient/UbuntuOneClient/objects.xml" />
461+ <resource uri="assembly://Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views/objects.xml" />
462+ <resource uri="assembly://Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common/objects.xml" />
463 </context>
464
465 </spring>
466
467=== modified file 'src/UbuntuOneClient/Program.cs'
468--- src/UbuntuOneClient/Program.cs 2010-07-28 14:35:45 +0000
469+++ src/UbuntuOneClient/Program.cs 2010-08-05 19:29:42 +0000
470@@ -38,6 +38,7 @@
471 private INotificationIconView _notifyIcon;
472 private readonly object _notifyIconLock = new object();
473 private Thread _updatesThread;
474+
475 #region DI Properties for testability
476
477 /// <summary>
478
479=== modified file 'src/UbuntuOneClient/objects.xml'
480--- src/UbuntuOneClient/objects.xml 2010-07-28 14:35:45 +0000
481+++ src/UbuntuOneClient/objects.xml 2010-08-05 19:29:42 +0000
482@@ -2,13 +2,11 @@
483 <objects xmlns="http://www.springframework.net">
484 <!-- Define window that will be used as the start point of the app -->
485 <object id="Updater"
486- type="Canonical.UbuntuOne.Common.Update.Updater, Canonical.UbuntuOne.Common" >
487+ type="Canonical.UbuntuOne.Common.Update.Updater, Canonical.UbuntuOne.Common"
488+ autowire="autodetect">
489 <property name="RSSFeed"
490 value="http://path/to/rss.feed"/>
491 </object>
492-
493- <object id="UbuntuOneNotifyIcon"
494- type="Canonical.UbuntuOne.Client.Views.UbuntuOneNotifyIcon, Canonical.UbuntuOne.Client.Views" />
495
496 <object id="Application"
497 type="UbuntuOneClient.ApplicationWrapper, UbuntuOneClient" />

Subscribers

People subscribed via source and target branches

to all changes: