Modified the uploader to add new directories to Selected Folders if Selective Sync...
[pithos-ms-client] / trunk / Pithos.Client.WPF / AppBootstrapper.cs
index 9c58803..da0f2b8 100644 (file)
@@ -1,8 +1,51 @@
-using System.Windows;
+#region
+/* -----------------------------------------------------------------------
+ * <copyright file="AppBootstrapper.cs" company="GRNet">
+ * 
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer.
+ *
+ *   2. Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and
+ * documentation are those of the authors and should not be
+ * interpreted as representing official policies, either expressed
+ * or implied, of GRNET S.A.
+ * </copyright>
+ * -----------------------------------------------------------------------
+ */
+#endregion
+using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Navigation;
 using Caliburn.Micro;
 using Caliburn.Micro.Logging;
+using Microsoft.Windows.Controls;
+using Pithos.Client.WPF.Properties;
 using Pithos.Core;
 using Pithos.Network;
 using log4net.Appender;
@@ -22,48 +65,62 @@ namespace Pithos.Client.WPF
 
        public class AppBootstrapper : Bootstrapper<IShell>
        {
+
                CompositionContainer container;
 
-           public AppBootstrapper()
-           {
-            LogManager.GetLog = type => new log4netLogger(type);
-           }
+               public AppBootstrapper()
+               {
+                       LogManager.GetLog = type => new log4netLogger(type);
+                       UpgradeSettings();
+               }
+
+               private void UpgradeSettings()
+               {
+                       if (Settings.Default.MustUpgrade)
+                       {
+                               Settings.Default.Upgrade();
+                               Settings.Default.MustUpgrade = false;
+                               Settings.Default.Save();
+                       }
+               }
 
                /// <summary>
                /// By default, we are configured to use MEF
                /// </summary>
                protected override void Configure() {
-                   var catalog = new AggregateCatalog(
-                       AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()
-                       );
+                       var catalog = new AggregateCatalog(
+                               AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()
+                               );
 
-            Type[] types = { typeof(PithosMonitor), typeof(CloudFilesClient) };
-            foreach (var type in types)
-            {
-                catalog.Catalogs.Add(new AssemblyCatalog(type.Assembly));
-            }
+                       Type[] types = { typeof(PithosMonitor), typeof(CloudFilesClient) };
+                       foreach (var type in types)
+                       {
+                               catalog.Catalogs.Add(new AssemblyCatalog(type.Assembly));
+                       }
 
-                       container = new CompositionContainer(catalog);
+                       container = new CompositionContainer(catalog,true);
 
                        var batch = new CompositionBatch();
 
                        batch.AddExportedValue<IWindowManager>(new WindowManager());
                        batch.AddExportedValue<IEventAggregator>(new EventAggregator());
                        batch.AddExportedValue(container);
-                   batch.AddExportedValue(catalog);
+                       batch.AddExportedValue(catalog);
 
 
                        container.Compose(batch);
-
-            ConventionManager.AddElementConvention<MenuItem>(ItemsControl.ItemsSourceProperty, "DataContext", "Click");
+                   
+                       ConventionManager.AddElementConvention<MenuItem>(ItemsControl.ItemsSourceProperty, "DataContext", "Click");
+                       ConventionManager.AddElementConvention<IntegerUpDown>(IntegerUpDown.ValueProperty, "Value", "ValueChanged");
+                   ConventionManager.AddElementConvention<BusyIndicator>(BusyIndicator.IsBusyProperty, "IsBusy", "DataContextChanged");
                }
 
                protected override object GetInstance(Type serviceType, string key)
                {
                        string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key;
-                       var exports = container.GetExportedValues<object>(contract);
+                       var exports = container.GetExportedValues<object>(contract);            
 
-                       if (exports.Count() > 0)
+                       if (exports.Any())
                                return exports.First();
 
                        throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract));
@@ -79,4 +136,4 @@ namespace Pithos.Client.WPF
                        container.SatisfyImportsOnce(instance);
                }
        }
-}
+}
\ No newline at end of file