diff --git a/ModernKeePass/Actions/ClipboardAction.cs b/ModernKeePass/Actions/ClipboardAction.cs new file mode 100644 index 0000000..5eceb9e --- /dev/null +++ b/ModernKeePass/Actions/ClipboardAction.cs @@ -0,0 +1,26 @@ +using Windows.ApplicationModel.DataTransfer; +using Windows.UI.Xaml; +using Microsoft.Xaml.Interactivity; + +namespace ModernKeePass.Actions +{ + public class ClipboardAction : DependencyObject, IAction + { + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + public static readonly DependencyProperty TextProperty = + DependencyProperty.Register("Text", typeof(string), typeof(ClipboardAction), new PropertyMetadata(string.Empty)); + + public object Execute(object sender, object parameter) + { + var dataPackage = new DataPackage { RequestedOperation = DataPackageOperation.Copy }; + dataPackage.SetText(Text); + Clipboard.SetContent(dataPackage); + return null; + } + } +} diff --git a/ModernKeePass/Common/ToastNotificationHelper.cs b/ModernKeePass/Common/ToastNotificationHelper.cs index d81eb73..2da2b4e 100644 --- a/ModernKeePass/Common/ToastNotificationHelper.cs +++ b/ModernKeePass/Common/ToastNotificationHelper.cs @@ -2,7 +2,6 @@ using Windows.Data.Json; using Windows.Data.Xml.Dom; using Windows.UI.Notifications; -using Windows.UI.Xaml; using ModernKeePass.Interfaces; using ModernKeePass.ViewModels; @@ -12,7 +11,6 @@ namespace ModernKeePass.Common { public static void ShowMovedToast(IPwEntity entity, string action, string text) { - var app = (App)Application.Current; var entityType = entity is GroupVm ? "Group" : "Entry"; var notificationXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02); var toastElements = notificationXml.GetElementsByTagName("text"); diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml index fe25eee..0132d17 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml @@ -8,8 +8,6 @@ xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:actions="using:ModernKeePass.Actions" xmlns:converters="using:ModernKeePass.Converters" - xmlns:local="using:ModernKeePass.Controls" - xmlns:viewModels="using:ModernKeePass.ViewModels" mc:Ignorable="d" d:DesignHeight="120" d:DesignWidth="550" > @@ -18,13 +16,7 @@ - - @@ -36,7 +28,7 @@ - + @@ -45,8 +37,8 @@ diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs index 00e1c37..29079aa 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml.cs @@ -1,17 +1,24 @@ using System; +using System.ComponentModel; using Windows.Storage.Pickers; using Windows.System; using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Input; using ModernKeePass.Common; using ModernKeePass.Events; +using ModernKeePassLib.Cryptography; // Pour en savoir plus sur le modèle d'élément Contrôle utilisateur, consultez la page http://go.microsoft.com/fwlink/?LinkId=234236 namespace ModernKeePass.Controls { - public sealed partial class OpenDatabaseUserControl + public sealed partial class OpenDatabaseUserControl: INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + public double PasswordComplexityIndicator { get; private set; } + public bool CreateNew { get { return (bool)GetValue(CreateNewProperty); } @@ -26,7 +33,7 @@ namespace ModernKeePass.Controls public string Password { - get { return (string)GetValue(PasswordProperty); } + get { return (string) GetValue(PasswordProperty); } set { SetValue(PasswordProperty, value); } } public static readonly DependencyProperty PasswordProperty = @@ -35,7 +42,12 @@ namespace ModernKeePass.Controls typeof(string), typeof(OpenDatabaseUserControl), new PropertyMetadata(string.Empty, (o, args) => { })); - + + private void NotifyPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + public OpenDatabaseUserControl() { InitializeComponent(); @@ -88,5 +100,12 @@ namespace ModernKeePass.Controls app.Database.KeyFile = file; StatusTextBlock.Text = $"Key file: {file.Name}"; } + + private void PasswordBox_OnPasswordChanged(object sender, RoutedEventArgs e) + { + var passwordBox = sender as PasswordBox; + PasswordComplexityIndicator = QualityEstimation.EstimatePasswordBits(passwordBox?.Password.ToCharArray()); + NotifyPropertyChanged("PasswordComplexityIndicator"); + } } } diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj index 958e32b..d0c367c 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -108,6 +108,7 @@ true + App.xaml @@ -161,7 +162,6 @@ WelcomePage.xaml - diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml b/ModernKeePass/Pages/EntryDetailPage.xaml index 12146f5..c445d87 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml +++ b/ModernKeePass/Pages/EntryDetailPage.xaml @@ -428,10 +428,22 @@ - + + + + + + + - + + + + + + + diff --git a/ModernKeePass/Pages/EntryDetailPage.xaml.cs b/ModernKeePass/Pages/EntryDetailPage.xaml.cs index 82e97b4..95892a3 100644 --- a/ModernKeePass/Pages/EntryDetailPage.xaml.cs +++ b/ModernKeePass/Pages/EntryDetailPage.xaml.cs @@ -1,4 +1,5 @@ using System; +using Windows.ApplicationModel.DataTransfer; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; @@ -101,6 +102,5 @@ namespace ModernKeePass.Pages // TODO: Show some error } } - } } diff --git a/ModernKeePass/ViewModels/Controls/OpenDatabaseUserControlVM.cs b/ModernKeePass/ViewModels/Controls/OpenDatabaseUserControlVM.cs deleted file mode 100644 index 6d7a96f..0000000 --- a/ModernKeePass/ViewModels/Controls/OpenDatabaseUserControlVM.cs +++ /dev/null @@ -1,22 +0,0 @@ -using ModernKeePass.Common; -using ModernKeePassLib.Cryptography; - -namespace ModernKeePass.ViewModels -{ - public class OpenDatabaseUserControlVm: NotifyPropertyChangedBase - { - private string _password; - - public string Password - { - get { return _password; } - set - { - _password = value; - OnPropertyChanged("PasswordComplexityIndicator"); - } - } - - public double PasswordComplexityIndicator => QualityEstimation.EstimatePasswordBits(Password.ToCharArray()); - } -}