Modified the progress notifications to display for all progress events
[pithos-ms-client] / trunk / Pithos.Client.WPF / SelectiveSynch / SelectiveSynchViewModel.cs
index 2b29e0c..654f6cc 100644 (file)
@@ -86,7 +86,7 @@ namespace Pithos.Client.WPF.SelectiveSynch
             NotifyOfPropertyChange(() => Checks);\r
         }\r
 \r
-        public SelectiveSynchViewModel(/*PithosMonitor monitor,*/ IEventAggregator events, AccountSettings account, string apiKey)\r
+        public SelectiveSynchViewModel(/*PithosMonitor monitor,*/ IEventAggregator events, AccountSettings account, string apiKey,bool forSelectiveActivation)\r
         {\r
             Account = account;\r
             AccountName = account.AccountName;\r
@@ -95,10 +95,10 @@ namespace Pithos.Client.WPF.SelectiveSynch
             _events = events;\r
             _apiKey = apiKey;\r
             //IsEnabled = account.SelectiveSyncEnabled;\r
-            TaskEx.Run(LoadRootNode);\r
+            TaskEx.Run(()=>LoadRootNode(forSelectiveActivation));\r
         }\r
 \r
-        private void LoadRootNode()\r
+        private void LoadRootNode(bool forSelectiveActivation)\r
         {            \r
             //TODO: Check this\r
             var client = new CloudFilesClient(AccountName,_apiKey){AuthenticationUrl=Account.ServerUrl,UsePithos=true};\r
@@ -163,7 +163,7 @@ namespace Pithos.Client.WPF.SelectiveSynch
                                        RootNodes.Add(othersNode);\r
                                    });\r
 \r
-            SetInitialSelections(Account);\r
+            SetInitialSelections(Account,forSelectiveActivation);\r
             \r
             IsBusy = false;\r
         }\r
@@ -211,7 +211,7 @@ namespace Pithos.Client.WPF.SelectiveSynch
             }\r
         }\r
 \r
-        private void SetInitialSelections(AccountSettings account)\r
+        private void SetInitialSelections(AccountSettings account,bool forSelectiveActivation)\r
         {\r
             var selections = account.SelectiveFolders;\r
 \r
@@ -239,11 +239,18 @@ namespace Pithos.Client.WPF.SelectiveSynch
             //var shouldBeChecked = allNodes.Except(selects).ToList();\r
             \r
             //WARNING: Using IsChecked marks the item as ADDED\r
-            selects.Apply(record=>record.IsExplicitlyChecked=true);\r
+            selects.Apply(record => record.IsExplicitlyChecked = !forSelectiveActivation);\r
+\r
+            //If any of the root nodes has at least one selected child, set it to gray\r
+            var selectedRoots = from DirectoryRecord rootRecord in RootNodes\r
+                                from DirectoryRecord record in rootRecord\r
+                                where record.IsChecked==true\r
+                                select rootRecord;\r
+            selectedRoots.Apply(record => record.IsExplicitlyChecked = !forSelectiveActivation);\r
 \r
             //shouldBeChecked.Apply(record => record.IsChecked = true);\r
-            \r
-            \r
+\r
+\r
 \r
         }\r
 \r