Menu visibility changes
authorPanagiotis Kanavos <pkanavos@gmail.com>
Thu, 15 Mar 2012 16:41:16 +0000 (18:41 +0200)
committerPanagiotis Kanavos <pkanavos@gmail.com>
Thu, 15 Mar 2012 16:41:16 +0000 (18:41 +0200)
Status view toggling

trunk/Pithos.Client.WPF/Properties/AssemblyInfo.cs
trunk/Pithos.Client.WPF/Shell/MiniStatusViewModel.cs
trunk/Pithos.Client.WPF/Shell/ShellView.xaml
trunk/Pithos.Client.WPF/Shell/ShellViewModel.cs

index 64f3f13..0774900 100644 (file)
@@ -93,5 +93,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.7.20309.0")]
-[assembly: AssemblyFileVersionAttribute("0.7.20309.0")]
+[assembly: AssemblyVersion("0.7.20310.0")]
+[assembly: AssemblyFileVersionAttribute("0.7.20310.0")]
index 2cb06af..715c273 100644 (file)
@@ -8,7 +8,7 @@ using Caliburn.Micro;
 
 namespace Pithos.Client.WPF.Shell
 {
-    [Export(typeof(MiniStatusViewModel))]
+    [Export(typeof(MiniStatusViewModel)),PartCreationPolicy(CreationPolicy.Shared)]    
     public class MiniStatusViewModel:Screen
     {
         public override string DisplayName
index 46b1ec6..d235d10 100644 (file)
@@ -69,9 +69,9 @@
                             </DataTemplate>
                         </MenuItem.ItemTemplate>
                     </MenuItem>
-                    <MenuItem Header="Sync Now" x:Name="SynchNow" cal:Message.Attach="SynchNow"/>
-                    <Separator  />                    
-                    <MenuItem Header="Usage" x:Name="Usages" ItemsSource="{Binding Accounts}">
+                    <MenuItem Header="Sync Now" x:Name="SynchNow" cal:Message.Attach="SynchNow" Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}" />
+                    <Separator  Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}"/>
+                    <MenuItem Header="Usage" x:Name="Usages" ItemsSource="{Binding Accounts}" Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}" >
                         <MenuItem.ItemTemplate>
                             <DataTemplate>
                                 <StackPanel Orientation="Horizontal">
@@ -84,8 +84,8 @@
                     </MenuItem>
                     <Separator  />
                     <MenuItem  x:Name="StatusMessage" Header="{Binding Path=StatusMessage, Converter={StaticResource SingleConverter}}" MaxWidth="200" />
-                    <Separator  />
-                    <MenuItem  Header="{Binding PauseSyncCaption}" x:Name="ToggleSynching" cal:Message.Attach="ToggleSynching"  />
+                    <Separator  Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}"/>
+                    <MenuItem  Header="{Binding PauseSyncCaption}" x:Name="ToggleSynching" cal:Message.Attach="ToggleSynching"  Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}"/>
                     <Separator  />
                     <MenuItem  Header="Preferences ..." x:Name="ShowPreferences" cal:Message.Attach="ShowPreferences"  />
                     <Separator  />
                         </MenuItem.Icon>
                     </MenuItem>
                     <MenuItem  Header="Check For Upgrade" x:Name="CheckForUpgrade" cal:Message.Attach="CheckForUpgrade"/>
-                    <MenuItem  Header="Show Status Window" x:Name="ShowMiniStatus" cal:Message.Attach="ShowMiniStatus"/>
+                    <MenuItem  Header="{Binding MiniStatusCaption}" x:Name="ShowMiniStatus" cal:Message.Attach="ShowMiniStatus"/>
                     <MenuItem x:Name="GoToSiteRootMenu"  cal:Message.Attach="[Event MouseLeftButtonUp]=[Action GoToSite()]"
                               cal:Action.TargetWithoutContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem, AncestorLevel=1}, Path=DataContext}" >
                         <MenuItem.HeaderTemplate>
index fc9b53f..175ce13 100644 (file)
@@ -127,7 +127,21 @@ namespace Pithos.Client.WPF {
 
            private readonly PollAgent _pollAgent;
 
-               ///<summary>
+
+           private MiniStatusViewModel _miniStatus;
+
+           [Import]
+        public MiniStatusViewModel MiniStatus
+           {
+               get { return _miniStatus; }
+               set
+               {
+                   _miniStatus = value;
+                   _miniStatus.Shell = this;
+               }
+           }
+
+           ///<summary>
                /// The Shell depends on MEF to provide implementations for windowManager, events, the status checker service and the settings
                ///</summary>
                ///<remarks>
@@ -436,11 +450,27 @@ namespace Pithos.Client.WPF {
                    Process.Start(uri);
                }
 
-        public void ShowMiniStatus()
+           private bool _statusVisible;
+
+           public string MiniStatusCaption
+           {
+               get
+               {
+                   return  _statusVisible ? "Hide Status Window" : "Show Status Window";
+               }
+           }
+
+           public void ShowMiniStatus()
         {
-            var model=IoC.Get<MiniStatusViewModel>();
-            model.Shell = this;
-            _windowManager.ShowWindow(model);
+            if (!_statusVisible)
+                _windowManager.ShowWindow(MiniStatus);
+            else
+            {
+                MiniStatus.TryClose();
+            }
+            _statusVisible=!_statusVisible;
+
+               NotifyOfPropertyChange(()=>MiniStatusCaption);
         }
 
            /// <summary>