mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-03 15:40:18 -04:00
Added ability to change Entries background and foreground colors
This commit is contained in:
@@ -20,7 +20,8 @@ namespace ModernKeePass.Converters
|
|||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, string language)
|
public object ConvertBack(object value, Type targetType, object parameter, string language)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
var brush = value as SolidColorBrush;
|
||||||
|
return brush == null ? new Color() : Color.FromArgb(brush.Color.A, brush.Color.R, brush.Color.G, brush.Color.B);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -170,6 +170,9 @@
|
|||||||
<Compile Include="Views\UserControls\BreadCrumbUserControl.xaml.cs">
|
<Compile Include="Views\UserControls\BreadCrumbUserControl.xaml.cs">
|
||||||
<DependentUpon>BreadCrumbUserControl.xaml</DependentUpon>
|
<DependentUpon>BreadCrumbUserControl.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Views\UserControls\ColorPickerUserControl.xaml.cs">
|
||||||
|
<DependentUpon>ColorPickerUserControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Views\UserControls\CompositeKeyUserControl.xaml.cs">
|
<Compile Include="Views\UserControls\CompositeKeyUserControl.xaml.cs">
|
||||||
<DependentUpon>CompositeKeyUserControl.xaml</DependentUpon>
|
<DependentUpon>CompositeKeyUserControl.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -267,6 +270,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Views\UserControls\ColorPickerUserControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="Views\UserControls\CompositeKeyUserControl.xaml">
|
<Page Include="Views\UserControls\CompositeKeyUserControl.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
@@ -396,4 +396,10 @@
|
|||||||
<data name="ToastCopyUrl.Message" xml:space="preserve">
|
<data name="ToastCopyUrl.Message" xml:space="preserve">
|
||||||
<value>URL successfully copied!</value>
|
<value>URL successfully copied!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="EntryBackgroundColor.Text" xml:space="preserve">
|
||||||
|
<value>Background color</value>
|
||||||
|
</data>
|
||||||
|
<data name="EntryForegroundColor.Text" xml:space="preserve">
|
||||||
|
<value>Foreground color</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@@ -396,4 +396,10 @@
|
|||||||
<data name="ToastCopyUrl.Message" xml:space="preserve">
|
<data name="ToastCopyUrl.Message" xml:space="preserve">
|
||||||
<value>URL copié avec succès !</value>
|
<value>URL copié avec succès !</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="EntryBackgroundColor.Text" xml:space="preserve">
|
||||||
|
<value>Couleur d'arrière plan</value>
|
||||||
|
</data>
|
||||||
|
<data name="EntryForegroundColor.Text" xml:space="preserve">
|
||||||
|
<value>Couleur du texte</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using ModernKeePass.Common;
|
using ModernKeePass.Common;
|
||||||
using ModernKeePass.Interfaces;
|
using ModernKeePass.Interfaces;
|
||||||
@@ -16,8 +17,6 @@ namespace ModernKeePass.ViewModels
|
|||||||
{
|
{
|
||||||
public GroupVm ParentGroup { get; private set; }
|
public GroupVm ParentGroup { get; private set; }
|
||||||
public GroupVm PreviousGroup { get; private set; }
|
public GroupVm PreviousGroup { get; private set; }
|
||||||
public System.Drawing.Color? BackgroundColor => _pwEntry?.BackgroundColor;
|
|
||||||
public System.Drawing.Color? ForegroundColor => _pwEntry?.ForegroundColor;
|
|
||||||
public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
|
public bool IsRevealPasswordEnabled => !string.IsNullOrEmpty(Password);
|
||||||
public bool HasExpired => HasExpirationDate && _pwEntry.ExpiryTime < DateTime.Now;
|
public bool HasExpired => HasExpirationDate && _pwEntry.ExpiryTime < DateTime.Now;
|
||||||
public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password?.ToCharArray());
|
public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password?.ToCharArray());
|
||||||
@@ -160,6 +159,24 @@ namespace ModernKeePass.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Color? BackgroundColor
|
||||||
|
{
|
||||||
|
get { return _pwEntry?.BackgroundColor; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != null) _pwEntry.BackgroundColor = (Color) value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Color? ForegroundColor
|
||||||
|
{
|
||||||
|
get { return _pwEntry?.ForegroundColor; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != null) _pwEntry.ForegroundColor = (Color)value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ICommand SaveCommand { get; }
|
public ICommand SaveCommand { get; }
|
||||||
public ICommand GeneratePasswordCommand { get; }
|
public ICommand GeneratePasswordCommand { get; }
|
||||||
public ICommand UndoDeleteCommand { get; }
|
public ICommand UndoDeleteCommand { get; }
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
<converters:ProgressBarLegalValuesConverter x:Key="ProgressBarLegalValuesConverter" />
|
<converters:ProgressBarLegalValuesConverter x:Key="ProgressBarLegalValuesConverter" />
|
||||||
<converters:DoubleToSolidColorBrushConverter x:Key="DoubleToForegroungBrushComplexityConverter" />
|
<converters:DoubleToSolidColorBrushConverter x:Key="DoubleToForegroungBrushComplexityConverter" />
|
||||||
<converters:NullToBooleanConverter x:Key="NullToBooleanConverter" />
|
<converters:NullToBooleanConverter x:Key="NullToBooleanConverter" />
|
||||||
|
<converters:ColorToBrushConverter x:Key="ColorToBrushConverter" />
|
||||||
<Style TargetType="PasswordBox" x:Name="PasswordBoxWithButtonStyle">
|
<Style TargetType="PasswordBox" x:Name="PasswordBoxWithButtonStyle">
|
||||||
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
|
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
|
||||||
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
|
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
|
||||||
@@ -371,9 +372,9 @@
|
|||||||
</Setter>
|
</Setter>
|
||||||
</Style>
|
</Style>
|
||||||
</Page.Resources>
|
</Page.Resources>
|
||||||
<!--<Page.DataContext>
|
<Page.DataContext>
|
||||||
<viewModels:EntryVm />
|
<viewModels:EntryVm />
|
||||||
</Page.DataContext>-->
|
</Page.DataContext>
|
||||||
<Page.BottomAppBar>
|
<Page.BottomAppBar>
|
||||||
<CommandBar x:Name="CommandBar" VerticalAlignment="Center">
|
<CommandBar x:Name="CommandBar" VerticalAlignment="Center">
|
||||||
<CommandBar.SecondaryCommands>
|
<CommandBar.SecondaryCommands>
|
||||||
@@ -489,8 +490,23 @@
|
|||||||
</SymbolIcon>
|
</SymbolIcon>
|
||||||
<StackPanel Grid.Column="1" x:Name="ExpirationDatePanel" Orientation="Horizontal" Visibility="{Binding HasExpirationDate, Converter={StaticResource BooleanToVisibilityConverter}}">
|
<StackPanel Grid.Column="1" x:Name="ExpirationDatePanel" Orientation="Horizontal" Visibility="{Binding HasExpirationDate, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||||
<DatePicker Margin="0,0,20,0" Date="{Binding ExpiryDate, Mode=TwoWay}" Style="{StaticResource MainColorDatePicker}" />
|
<DatePicker Margin="0,0,20,0" Date="{Binding ExpiryDate, Mode=TwoWay}" Style="{StaticResource MainColorDatePicker}" />
|
||||||
<TimePicker Time="{Binding ExpiryTime, Mode=TwoWay}"/>
|
<TimePicker Time="{Binding ExpiryTime, Mode=TwoWay}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Grid Visibility="{Binding IsEditMode, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="250" />
|
||||||
|
<ColumnDefinition Width="250" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock x:Uid="EntryBackgroundColor" Grid.Column="0" Grid.Row="0" />
|
||||||
|
<userControls:ColorPickerUserControl Grid.Column="0" Grid.Row="1" SelectedColor="{Binding BackgroundColor, Converter={StaticResource ColorToBrushConverter}, Mode=TwoWay}" />
|
||||||
|
<TextBlock x:Uid="EntryForegroundColor" Grid.Column="1" Grid.Row="0" />
|
||||||
|
<userControls:ColorPickerUserControl Grid.Column="1" Grid.Row="1" SelectedColor="{Binding ForegroundColor, Converter={StaticResource ColorToBrushConverter}, Mode=TwoWay}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@@ -149,9 +149,9 @@
|
|||||||
</Border>
|
</Border>
|
||||||
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,10,0,0" >
|
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,10,0,0" >
|
||||||
<TextBlock x:Name="NameTextBlock" Text="{Binding Name}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Foreground="{Binding ForegroundColor, ConverterParameter={StaticResource TextBoxForegroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}"/>
|
<TextBlock x:Name="NameTextBlock" Text="{Binding Name}" 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 UserName}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" />
|
<TextBlock Text="{Binding UserName}" Style="{StaticResource BodyTextBlockStyle}" Foreground="{Binding ForegroundColor, ConverterParameter={StaticResource TextBoxForegroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}" MaxHeight="60" />
|
||||||
<TextBlock Text="{Binding Url}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60" />
|
<TextBlock Text="{Binding Url}" Style="{StaticResource BodyTextBlockStyle}" Foreground="{Binding ForegroundColor, ConverterParameter={StaticResource TextBoxForegroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}" MaxHeight="60" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Button Grid.Column="2" Style="{StaticResource NoBorderButtonStyle}" Background="{Binding BackgroundColor, ConverterParameter={StaticResource AppBarBackgroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}" VerticalAlignment="Bottom">
|
<Button Grid.Column="2" Style="{StaticResource NoBorderButtonStyle}" Background="{Binding BackgroundColor, ConverterParameter={StaticResource AppBarBackgroundThemeBrush}, Converter={StaticResource ColorToBrushConverter}}" VerticalAlignment="Bottom">
|
||||||
<SymbolIcon Symbol="More" />
|
<SymbolIcon Symbol="More" />
|
||||||
|
18
ModernKeePass/Views/UserControls/ColorPickerUserControl.xaml
Normal file
18
ModernKeePass/Views/UserControls/ColorPickerUserControl.xaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<UserControl x:Name="UserControl"
|
||||||
|
x:Class="ModernKeePass.Views.UserControls.ColorPickerUserControl"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d">
|
||||||
|
<ComboBox x:Name="ComboBox" ItemsSource="{Binding Colors, ElementName=UserControl}" SelectionChanged="Selector_OnSelectionChanged">
|
||||||
|
<ComboBox.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<StackPanel Orientation="Horizontal" Margin="0,0,10,0">
|
||||||
|
<TextBlock Width="100" Text="{Binding ColorName}" Margin="0,0,10,0" />
|
||||||
|
<Rectangle Width="100" Fill="{Binding ColorBrush}" />
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
|
</ComboBox.ItemTemplate>
|
||||||
|
</ComboBox>
|
||||||
|
</UserControl>
|
@@ -0,0 +1,62 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using Windows.UI.Xaml;
|
||||||
|
using Windows.UI.Xaml.Controls;
|
||||||
|
using Windows.UI.Xaml.Media;
|
||||||
|
|
||||||
|
// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
|
||||||
|
|
||||||
|
namespace ModernKeePass.Views.UserControls
|
||||||
|
{
|
||||||
|
public sealed partial class ColorPickerUserControl
|
||||||
|
{
|
||||||
|
public struct Color
|
||||||
|
{
|
||||||
|
public string ColorName { get; set; }
|
||||||
|
public SolidColorBrush ColorBrush { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Color> Colors { get; }
|
||||||
|
|
||||||
|
public SolidColorBrush SelectedColor
|
||||||
|
{
|
||||||
|
get { return (SolidColorBrush)GetValue(SelectedColorProperty); }
|
||||||
|
set { SetValue(SelectedColorProperty, value); }
|
||||||
|
}
|
||||||
|
public static readonly DependencyProperty SelectedColorProperty =
|
||||||
|
DependencyProperty.Register(
|
||||||
|
"SelectedColor",
|
||||||
|
typeof(SolidColorBrush),
|
||||||
|
typeof(ColorPickerUserControl),
|
||||||
|
new PropertyMetadata(new SolidColorBrush(), (o, args) => { }));
|
||||||
|
|
||||||
|
public ColorPickerUserControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Colors = new List<Color>();
|
||||||
|
var type = typeof(Windows.UI.Colors);
|
||||||
|
var properties = type.GetRuntimeProperties().ToArray();
|
||||||
|
foreach (var propertyInfo in properties)
|
||||||
|
{
|
||||||
|
Colors.Add(new Color
|
||||||
|
{
|
||||||
|
ColorName = propertyInfo.Name,
|
||||||
|
ColorBrush = new SolidColorBrush((Windows.UI.Color)propertyInfo.GetValue(null, null))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
ComboBox.Loaded += ComboBox_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
ComboBox.SelectedItem = Colors.Find(c => c.ColorBrush.Color.Equals(SelectedColor.Color));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
var selectedItem = ComboBox.SelectedItem as Color? ?? new Color();
|
||||||
|
SelectedColor = selectedItem.ColorBrush;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,6 @@
|
|||||||
Entry history feature added
|
Entry history feature added
|
||||||
App now uses Windows theme color as its base color
|
App now uses Windows theme color as its base color
|
||||||
|
You can now change entries background and foreground colors
|
||||||
Design improvements
|
Design improvements
|
||||||
Bug corrections
|
Bug corrections
|
||||||
KeePassLib version bump to 2.39.1
|
KeePassLib version bump to 2.39.1
|
@@ -1,5 +1,6 @@
|
|||||||
Ajout de la fonctionnalite d'historique des entrees
|
Ajout de la fonctionnalite d'historique des entrees
|
||||||
L'application utilise la couleur de theme de Windows en tant que couleur principale
|
L'application utilise la couleur de theme de Windows en tant que couleur principale
|
||||||
|
Il est desormais possible de changer la couleur de fond et de texte des entrees
|
||||||
Ameliorations de design
|
Ameliorations de design
|
||||||
Corrections de bugs
|
Corrections de bugs
|
||||||
Version de la KeePassLib passe a 2.39.1
|
Version de la KeePassLib passe a 2.39.1
|
Reference in New Issue
Block a user