xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tb="clr-namespace:Hardcodet.Wpf.TaskbarNotification;assembly=Hardcodet.Wpf.TaskbarNotification"
xmlns:cal="http://www.caliburnproject.org"
- x:Name="TheView"
- >
+ x:Name="TheView" WindowStartupLocation="CenterScreen" WindowStyle="None"
+ Width="700" Height="200" SizeToContent="Width">
+ <Window.Background>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
+ <GradientStop Color="#4085A5" Offset="0"/>
+ <GradientStop Color="#D7E8F0" Offset="1"/>
+ </LinearGradientBrush>
+ </Window.Background>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../PithosStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
+ <BooleanToVisibilityConverter x:Key="BooleanToVisible" />
</ResourceDictionary>
</Window.Resources>
<Grid>
>
<tb:TaskbarIcon.ContextMenu>
<ContextMenu x:Name="TaskbarMenu" >
- <MenuItem Header="Open PITHOS Folder" x:Name="OpenPithosFolder" ItemsSource="{Binding Accounts}" >
+ <MenuItem Header="{Binding OpenFolderCaption}" IsEnabled="{Binding HasAccounts}" x:Name="OpenPithosFolder" ItemsSource="{Binding Accounts}" >
<MenuItem.ItemTemplate>
<DataTemplate>
- <TextBlock x:Name="AccountLink" Text="{Binding Path=UserName}" cal:Message.Attach="[Event MouseLeftButtonUp]=[Action OpenPithosFolder($dataContext)]"
+ <TextBlock x:Name="AccountLink" Text="{Binding Path=UserName}" cal:Message.Attach="[Event MouseLeftButtonUp]=[Action OpenPithosFolder($dataContext)]"
cal:Action.TargetWithoutContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem, AncestorLevel=2}, Path=DataContext}" />
</DataTemplate>
- </MenuItem.ItemTemplate>
- </MenuItem>
- <MenuItem Header="Go to Account Site" x:Name="GoToSiteMenu" ItemsSource="{Binding Accounts}" >
+ </MenuItem.ItemTemplate>
+ <MenuItem.Icon>
+ <Image Source="/Pithos.Client.WPF;component/Images/Folder.ico" />
+ </MenuItem.Icon>
+ </MenuItem>
+ <MenuItem Header="Go to Account Site" x:Name="GoToSiteMenu" ItemsSource="{Binding Accounts}" Visibility="{Binding Path=HasAccounts, Converter={StaticResource BooleanToVisible}}" >
<MenuItem.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="AccountLink" Text="{Binding Path=UserName}" cal:Message.Attach="[Event MouseLeftButtonUp]=[Action GoToSite($dataContext)]"
cal:Action.TargetWithoutContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem, AncestorLevel=2}, Path=DataContext}" />
</DataTemplate>
</MenuItem.ItemTemplate>
+ <MenuItem.Icon>
+ <Image Source="/Pithos.Client.WPF;component/Images/Web.ico" />
+ </MenuItem.Icon>
</MenuItem>
<MenuItem Header="Recently Changed Files" x:Name="RecentFiles" ItemsSource="{Binding RecentFiles}">
<Separator />
<MenuItem Header="Preferences ..." x:Name="ShowPreferences" cal:Message.Attach="ShowPreferences" />
<Separator />
- <MenuItem Header="Send Feedback " x:Name="SendFeedback" cal:Message.Attach="SendFeedback" />
- <MenuItem Header="About Pithos" x:Name="AboutPithos" cal:Message.Attach="AboutPithos" />
+ <MenuItem Header="Send Feedback" x:Name="SendFeedback" cal:Message.Attach="SendFeedback">
+ <MenuItem.Icon>
+ <Image Source="/Pithos.Client.WPF;component/Images/Feedback.ico" />
+ </MenuItem.Icon>
+ </MenuItem>
+ <MenuItem Header="About Pithos" x:Name="AboutPithos" cal:Message.Attach="AboutPithos">
+ <MenuItem.Icon>
+ <Image Source="/Pithos.Client.WPF;component/Images/About.ico" />
+ </MenuItem.Icon>
+ </MenuItem>
+ <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>
+ <DataTemplate>
+ <TextBlock x:Name="SiteLink" Text="Go To Pithos Site" cal:Message.Attach="[Event MouseLeftButtonUp]=[Action GoToSite()]"
+ cal:Action.TargetWithoutContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=MenuItem, AncestorLevel=1}, Path=DataContext}" />
+ </DataTemplate>
+ </MenuItem.HeaderTemplate>
+ <MenuItem.Icon>
+ <Image Source="/Pithos.Client.WPF;component/Images/Web.ico" />
+ </MenuItem.Icon>
+ </MenuItem>
<Separator />
<MenuItem Header="Exit" Name="ExitPithos" cal:Message.Attach="ExitPithos" />
</ContextMenu>
</tb:TaskbarIcon.ContextMenu>
</tb:TaskbarIcon>
- <Image Source="/Pithos.Client.WPF;component/Images/logo.png"/>
+ <Image Margin="0,0,10,5" Source="/Pithos.Client.WPF;component/Images/logo.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="None"/>
</Grid>
</Window>
StatusMessage = "In Synch";
+ _accounts.CollectionChanged += (sender, e) =>
+ {
+ NotifyOfPropertyChange(() => OpenFolderCaption);
+ NotifyOfPropertyChange(() => HasAccounts);
+ };
+
}
catch (Exception exc)
{
}
}
+
protected override void OnActivate()
{
base.OnActivate();
protected override void OnViewLoaded(object view)
{
- var window = (Window)view;
- window.Hide();
UpdateStatus();
+ var window = (Window)view;
+ TaskEx.Delay(1000).ContinueWith(t => Execute.OnUIThread(window.Hide));
base.OnViewLoaded(view);
}
}
}
- private ObservableConcurrentCollection<AccountInfo> _accounts = new ObservableConcurrentCollection<AccountInfo>();
+ private readonly ObservableConcurrentCollection<AccountInfo> _accounts = new ObservableConcurrentCollection<AccountInfo>();
public ObservableConcurrentCollection<AccountInfo> Accounts
{
get { return _accounts; }
}
+ public bool HasAccounts
+ {
+ get { return _accounts.Count > 0; }
+ }
+
- private string _pauseSyncCaption="Pause Syncing";
+ public string OpenFolderCaption
+ {
+ get
+ {
+ return (_accounts.Count == 0)
+ ? "No Accounts Defined"
+ : "Open Pithos Folder";
+ }
+ }
+
+ private string _pauseSyncCaption="Pause Synching";
public string PauseSyncCaption
{
get { return _pauseSyncCaption; }
}
- private string _statusIcon="../Images/Tray.ico";
+ private string _statusIcon="../Images/Pithos.ico";
public string StatusIcon
{
get { return _statusIcon; }
set
{
- _statusIcon = value;
+ //_statusIcon = value;
NotifyOfPropertyChange(() => StatusIcon);
}
}
}
+ public void GoToSite()
+ {
+ var site = Properties.Settings.Default.PithosSite;
+ Process.Start(site);
+ }
+
public void GoToSite(AccountInfo account)
{
var site = String.Format("{0}/ui/?token={1}&user={2}",
if (String.IsNullOrWhiteSpace(accountName))
return;
+ var accountInfo=_accounts.FirstOrDefault(account => account.UserName == accountName);
+ _accounts.TryRemove(accountInfo);
+
PithosMonitor monitor;
if (Monitors.TryGetValue(accountName, out monitor))
{