Groups left collapsed menu now has a tooltip

Groups design changes: border now only around icon
Entry password reveal checkbox now works with XAML and converters
This commit is contained in:
2017-10-06 17:57:36 +02:00
committed by BONNEVILLE Geoffroy
parent f22ca4c46f
commit 3d033417ad
10 changed files with 83 additions and 51 deletions

View File

@@ -2,7 +2,7 @@
x:Class="ModernKeePass.App" x:Class="ModernKeePass.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
RequestedTheme="Dark"> RequestedTheme="Light">
<Application.Resources> <Application.Resources>
<Style TargetType="ToggleButton" x:Name="HamburgerToggleButton"> <Style TargetType="ToggleButton" x:Name="HamburgerToggleButton">
<Setter Property="Template"> <Setter Property="Template">

View File

@@ -0,0 +1,28 @@
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace ModernKeePass.Converters
{
public class InverseBooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boolean = value is bool ? (bool)value : false;
return boolean ? Visibility.Collapsed : Visibility.Visible;
}
// No need to implement this
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var visibility = value is Visibility ? (Visibility)value : Visibility.Visible;
switch (visibility)
{
case Visibility.Visible: return false;
case Visibility.Collapsed: return true;
default:
throw new ArgumentOutOfRangeException();
}
}
}
}

View File

@@ -26,7 +26,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<controls:ListViewWithDisable Grid.Column="0" <controls:ListViewWithDisable Grid.Column="0"
x:Name="MenuListView" x:Name="MenuListView"
RequestedTheme="Light" RequestedTheme="Dark"
SelectionChanged="ListView_SelectionChanged" SelectionChanged="ListView_SelectionChanged"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
ItemsSource="{Binding Source={StaticResource MenuItemsSource}}" ItemsSource="{Binding Source={StaticResource MenuItemsSource}}"
@@ -45,6 +45,7 @@
<ListView.ItemContainerStyle> <ListView.ItemContainerStyle>
<Style TargetType="ListViewItem"> <Style TargetType="ListViewItem">
<Setter Property="Padding" Value="20,5,0,0" /> <Setter Property="Padding" Value="20,5,0,0" />
<Setter Property="Margin" Value="0" />
</Style> </Style>
</ListView.ItemContainerStyle> </ListView.ItemContainerStyle>
<ListView.GroupStyle> <ListView.GroupStyle>

View File

@@ -33,7 +33,7 @@ namespace ModernKeePass.Mappings
case PwIcon.Configuration: return Symbol.Setting; case PwIcon.Configuration: return Symbol.Setting;
case PwIcon.ClipboardReady: return Symbol.Paste; case PwIcon.ClipboardReady: return Symbol.Paste;
case PwIcon.PaperNew: return Symbol.Page2; case PwIcon.PaperNew: return Symbol.Page2;
//case PwIcon.Screen: return Symbol.Document; case PwIcon.Screen: return Symbol.GoToStart;
case PwIcon.EnergyCareful: return Symbol.FourBars; case PwIcon.EnergyCareful: return Symbol.FourBars;
case PwIcon.Disk: return Symbol.Save; case PwIcon.Disk: return Symbol.Save;
//case PwIcon.Drive: return Symbol.; //case PwIcon.Drive: return Symbol.;

View File

@@ -123,6 +123,7 @@
</Compile> </Compile>
<Compile Include="Converters\BooleanToVisibilityConverter.cs" /> <Compile Include="Converters\BooleanToVisibilityConverter.cs" />
<Compile Include="Converters\ColorToBrushConverter.cs" /> <Compile Include="Converters\ColorToBrushConverter.cs" />
<Compile Include="Converters\InverseBooleanToVisibilityConverter.cs" />
<Compile Include="Converters\PluralizationConverter.cs" /> <Compile Include="Converters\PluralizationConverter.cs" />
<Compile Include="Interfaces\IIsEnabled.cs" /> <Compile Include="Interfaces\IIsEnabled.cs" />
<Compile Include="MainPage.xaml.cs"> <Compile Include="MainPage.xaml.cs">

View File

@@ -6,14 +6,20 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ViewModels="using:ModernKeePass.ViewModels" xmlns:ViewModels="using:ModernKeePass.ViewModels"
xmlns:Converters="using:ModernKeePass.Converters"
x:Name="pageRoot" x:Name="pageRoot"
x:Class="ModernKeePass.Pages.EntryDetailPage" x:Class="ModernKeePass.Pages.EntryDetailPage"
mc:Ignorable="d"> mc:Ignorable="d">
<Page.Resources>
<Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
<Converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter"/>
</Page.Resources>
<Page.DataContext> <Page.DataContext>
<ViewModels:EntryVm/> <ViewModels:EntryVm/>
</Page.DataContext> </Page.DataContext>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.ChildrenTransitions> <Grid.ChildrenTransitions>
<TransitionCollection> <TransitionCollection>
@@ -34,9 +40,9 @@
<TextBlock x:Name="userTextBlock" TextWrapping="Wrap" Text="User name or login" FontSize="18"/> <TextBlock x:Name="userTextBlock" TextWrapping="Wrap" Text="User name or login" FontSize="18"/>
<TextBox x:Name="userTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding UserName, Mode=TwoWay}" Width="350" /> <TextBox x:Name="userTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding UserName, Mode=TwoWay}" Width="350" />
<TextBlock x:Name="passwordTextBlock" TextWrapping="Wrap" Text="Password" FontSize="18"/> <TextBlock x:Name="passwordTextBlock" TextWrapping="Wrap" Text="Password" FontSize="18"/>
<PasswordBox x:Name="passwordBox" HorizontalAlignment="Left" Password="{Binding Password, Mode=TwoWay}" Width="350" IsPasswordRevealButtonEnabled="True" /> <PasswordBox x:Name="passwordBox" HorizontalAlignment="Left" Password="{Binding Password, Mode=TwoWay}" Width="350" IsPasswordRevealButtonEnabled="True" Visibility="{Binding IsRevealPassword, Converter={StaticResource InverseBooleanToVisibilityConverter}}" />
<TextBox x:Name="passwordTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Password, Mode=TwoWay}" Width="350" Visibility="Collapsed"/> <TextBox x:Name="passwordTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Password, Mode=TwoWay}" Width="350" Visibility="{Binding IsRevealPassword, Converter={StaticResource BooleanToVisibilityConverter}}" />
<CheckBox x:Name="checkBox" HorizontalAlignment="Left" Margin="-3,0,0,0" Content="Show password" Checked="checkBox_Checked" Unchecked="checkBox_Unchecked" /> <CheckBox x:Name="checkBox" HorizontalAlignment="Left" Margin="-3,0,0,0" Content="Show password" IsChecked="{Binding IsRevealPassword, Mode=TwoWay}"/>
<TextBlock x:Name="urlTextBlock" TextWrapping="Wrap" Text="URL" FontSize="18"/> <TextBlock x:Name="urlTextBlock" TextWrapping="Wrap" Text="URL" FontSize="18"/>
<TextBox x:Name="urlTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Url, Mode=TwoWay}" Width="350" MaxLength="256" /> <TextBox x:Name="urlTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Url, Mode=TwoWay}" Width="350" MaxLength="256" />
<TextBlock x:Name="notesTextBlock" TextWrapping="Wrap" Text="Notes" FontSize="18"/> <TextBlock x:Name="notesTextBlock" TextWrapping="Wrap" Text="Notes" FontSize="18"/>
@@ -65,7 +71,7 @@
TextWrapping="NoWrap" TextWrapping="NoWrap"
VerticalAlignment="Center" VerticalAlignment="Center"
Margin="0,0,30,0"/> Margin="0,0,30,0"/>
<CommandBar Grid.Column="2" Margin="0,40,0,0" Background="Transparent" IsOpen="True"> <CommandBar Grid.Column="2" Background="Transparent" IsOpen="True" VerticalAlignment="Center" Margin="0,20,0,0">
<AppBarToggleButton Icon="Edit" Label="Edit" IsChecked="{Binding IsEditMode, Mode=TwoWay}" /> <AppBarToggleButton Icon="Edit" Label="Edit" IsChecked="{Binding IsEditMode, Mode=TwoWay}" />
<AppBarButton Icon="Delete" Label="Delete" Click="AppBarButton_Click" /> <AppBarButton Icon="Delete" Label="Delete" Click="AppBarButton_Click" />
</CommandBar> </CommandBar>

View File

@@ -69,19 +69,7 @@ namespace ModernKeePass.Pages
} }
#endregion #endregion
private void checkBox_Checked(object sender, RoutedEventArgs e)
{
passwordBox.Visibility = Visibility.Collapsed;
passwordTextBox.Visibility = Visibility.Visible;
}
private void checkBox_Unchecked(object sender, RoutedEventArgs e)
{
passwordBox.Visibility = Visibility.Visible;
passwordTextBox.Visibility = Visibility.Collapsed;
}
private void AppBarButton_Click(object sender, RoutedEventArgs e) private void AppBarButton_Click(object sender, RoutedEventArgs e)
{ {
var entry = DataContext as EntryVm; var entry = DataContext as EntryVm;

View File

@@ -54,31 +54,39 @@
<Border <Border
BorderThickness="2" BorderThickness="2"
BorderBrush="{StaticResource SystemColor}" BorderBrush="{StaticResource SystemColor}"
Background="{StaticResource HubSectionHeaderPressedForegroundThemeBrush}" Background="{StaticResource HubSectionHeaderPressedForegroundThemeBrush}">
Margin="0,10,0,0" >
<Grid Height="110" Width="480"> <Grid Height="110" Width="480">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<SymbolIcon Grid.Column="0" Symbol="{Binding IconSymbol}" Width="100" Height="100" /> <SymbolIcon Grid.Column="0" Symbol="{Binding IconSymbol}" Width="100" Height="100" RenderTransformOrigin="0.5,0.5" >
<SymbolIcon.RenderTransform>
<CompositeTransform ScaleX="2" TranslateX="0" TranslateY="0" ScaleY="2"/>
</SymbolIcon.RenderTransform>
</SymbolIcon>
<TextBlock Grid.Column="1" Text="{Binding Title}" FontWeight="Bold" Style="{ThemeResource TitleTextBlockStyle}" TextWrapping="NoWrap" VerticalAlignment="Center" Margin="13,0,0,5"/> <TextBlock Grid.Column="1" Text="{Binding Title}" FontWeight="Bold" Style="{ThemeResource TitleTextBlockStyle}" TextWrapping="NoWrap" VerticalAlignment="Center" Margin="13,0,0,5"/>
</Grid> </Grid>
</Border> </Border>
</DataTemplate> </DataTemplate>
<DataTemplate x:Name="GroupOtherItem"> <DataTemplate x:Name="GroupOtherItem">
<Border <Grid Height="110" Width="480" >
BorderThickness="2" <Grid.ColumnDefinitions>
BorderBrush="{StaticResource SystemColor}" <ColumnDefinition Width="Auto"/>
Background="{Binding BackgroundColor, ConverterParameter={StaticResource Transparent}, Converter={StaticResource ColorToBrushConverter}}" <ColumnDefinition Width="*"/>
Margin="0,10,0,0" > </Grid.ColumnDefinitions>
<Grid Height="110" Width="480" > <Border
<Grid.ColumnDefinitions> Grid.Column="0"
<ColumnDefinition Width="Auto"/> BorderThickness="2"
<ColumnDefinition Width="*"/> BorderBrush="{StaticResource SystemColor}"
</Grid.ColumnDefinitions> Background="{Binding BackgroundColor, ConverterParameter={StaticResource Transparent}, Converter={StaticResource ColorToBrushConverter}}">
<SymbolIcon Grid.Column="0" Symbol="{Binding IconSymbol}" Width="100" Height="100" /> <SymbolIcon Symbol="{Binding IconSymbol}" Width="100" Height="100" RenderTransformOrigin="0.5,0.5" >
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0" > <SymbolIcon.RenderTransform>
<CompositeTransform ScaleX="2" TranslateX="0" TranslateY="0" ScaleY="2"/>
</SymbolIcon.RenderTransform>
</SymbolIcon>
</Border>
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,10,0,0" >
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="{Binding ForegroundColor, ConverterParameter={StaticResource TextBoxForegroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}"/> <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="{Binding ForegroundColor, ConverterParameter={StaticResource TextBoxForegroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}"/>
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" TextWrapping="NoWrap"/> <TextBlock Style="{StaticResource CaptionTextBlockStyle}" TextWrapping="NoWrap"/>
<!--<TextBlock Text="{Binding EntryCount, ConverterParameter=entry\,entries, Converter={StaticResource PluralizationConverter}}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" /> <!--<TextBlock Text="{Binding EntryCount, ConverterParameter=entry\,entries, Converter={StaticResource PluralizationConverter}}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" />
@@ -87,7 +95,6 @@
<TextBlock Text="{Binding Url}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" /> <TextBlock Text="{Binding Url}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</Border>
</DataTemplate> </DataTemplate>
</GridView.Resources> </GridView.Resources>
<GridView.ItemsSource> <GridView.ItemsSource>
@@ -113,15 +120,16 @@
IsSwipeEnabled="false" IsSwipeEnabled="false"
IsSynchronizedWithCurrentItem="False" IsSynchronizedWithCurrentItem="False"
DataContext="{Binding DataContext, ElementName=PageRoot}" DataContext="{Binding DataContext, ElementName=PageRoot}"
RequestedTheme="Light" RequestedTheme="Dark"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
Foreground="{ThemeResource DefaultTextForegroundThemeBrush}"> Foreground="{ThemeResource DefaultTextForegroundThemeBrush}">
<ListView.Resources> <ListView.Resources>
<DataTemplate x:Name="Collapsed"> <DataTemplate x:Name="Collapsed">
<SymbolIcon Symbol="{Binding IconSymbol}" /> <SymbolIcon Symbol="{Binding IconSymbol}">
<ToolTipService.ToolTip> <ToolTipService.ToolTip>
<ToolTip Content="{Binding Name}" /> <ToolTip Content="{Binding Name}" />
</ToolTipService.ToolTip> </ToolTipService.ToolTip>
</SymbolIcon>
</DataTemplate> </DataTemplate>
<DataTemplate x:Name="Expanded"> <DataTemplate x:Name="Expanded">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
@@ -136,9 +144,6 @@
</ListView.ItemsSource> </ListView.ItemsSource>
<ListView.ItemContainerStyle> <ListView.ItemContainerStyle>
<Style TargetType="ListViewItem"> <Style TargetType="ListViewItem">
<!--<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0"/>
<Setter Property="BorderThickness" Value="0"/>-->
<Setter Property="VerticalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="20,0,0,0"/> <Setter Property="Padding" Value="20,0,0,0"/>
<Setter Property="Margin" Value="0"/> <Setter Property="Margin" Value="0"/>
@@ -201,11 +206,7 @@
TextWrapping="NoWrap" TextWrapping="NoWrap"
VerticalAlignment="Center" VerticalAlignment="Center"
Margin="0,0,30,0"/> Margin="0,0,30,0"/>
<CommandBar <CommandBar Grid.Column="2" Background="Transparent" IsOpen="True" VerticalAlignment="Center" Margin="0,20,0,0">
Grid.Column="2"
Margin="0,40,0,0"
Background="Transparent"
IsOpen="True">
<AppBarToggleButton Icon="Edit" Label="Edit" IsChecked="{Binding IsEditMode, Mode=TwoWay}" /> <AppBarToggleButton Icon="Edit" Label="Edit" IsChecked="{Binding IsEditMode, Mode=TwoWay}" />
<AppBarButton Icon="Delete" Label="Delete" IsEnabled="{Binding IsNotRoot}" Click="AppBarButton_Click" /> <AppBarButton Icon="Delete" Label="Delete" IsEnabled="{Binding IsNotRoot}" Click="AppBarButton_Click" />
</CommandBar> </CommandBar>

View File

@@ -25,7 +25,7 @@
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"> SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel> <StackPanel Margin="10,0,10,0">
<TextBlock Text="{Binding Name}" Width="350" Padding="5" /> <TextBlock Text="{Binding Name}" Width="350" Padding="5" />
<local:OpenDatabaseUserControl Visibility="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}" ValidationChecked="PasswordUserControl_PasswordChecked" /> <local:OpenDatabaseUserControl Visibility="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}" ValidationChecked="PasswordUserControl_PasswordChecked" />
</StackPanel> </StackPanel>

View File

@@ -61,7 +61,14 @@ namespace ModernKeePass.ViewModels
set { SetProperty(ref _isEditMode, value); } set { SetProperty(ref _isEditMode, value); }
} }
public bool IsRevealPassword
{
get { return _isRevealPassword; }
set { SetProperty(ref _isRevealPassword, value); }
}
private bool _isEditMode; private bool _isEditMode;
private bool _isRevealPassword;
public EntryVm() { } public EntryVm() { }
public EntryVm(PwEntry entry, GroupVm parent) public EntryVm(PwEntry entry, GroupVm parent)