diff --git a/ModernKeePass/BundleArtifacts/neutral.txt b/ModernKeePass/BundleArtifacts/neutral.txt index 82df278..2ca89dd 100644 --- a/ModernKeePass/BundleArtifacts/neutral.txt +++ b/ModernKeePass/BundleArtifacts/neutral.txt @@ -1,4 +1,4 @@ -MainPackage=C:\Users\bg45\source\repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.6_AnyCPU.appx -SymbolPackage=C:\Users\bg45\source\repos\ModernKeePass\ModernKeePass\AppPackages\ModernKeePass_1.1.0.6_Test\ModernKeePass_1.1.0.6_AnyCPU.appxsym -ResourcePack=C:\Users\bg45\source\repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.6_scale-140.appx -ResourcePack=C:\Users\bg45\source\repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.6_scale-180.appx +MainPackage=C:\Users\GBE\Source\Repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.10_AnyCPU.appx +SymbolPackage=C:\Users\GBE\Source\Repos\ModernKeePass\ModernKeePass\AppPackages\ModernKeePass_1.1.0.10_Test\ModernKeePass_1.1.0.10_AnyCPU.appxsym +ResourcePack=C:\Users\GBE\Source\Repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.10_scale-140.appx +ResourcePack=C:\Users\GBE\Source\Repos\ModernKeePass\ModernKeePass\bin\Release\ModernKeePass_1.1.0.10_scale-180.appx diff --git a/ModernKeePass/Common/NotifyPropertyChangedBase.cs b/ModernKeePass/Common/NotifyPropertyChangedBase.cs new file mode 100644 index 0000000..53751dd --- /dev/null +++ b/ModernKeePass/Common/NotifyPropertyChangedBase.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.CompilerServices; + +namespace ModernKeePass.Common +{ + public class NotifyPropertyChangedBase : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + protected void OnPropertyChanged([CallerMemberName] string propertyName = "") + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + protected bool SetProperty(ref T property, T value, [CallerMemberName] string propertyName = "") + { + if (EqualityComparer.Default.Equals(property, value)) + { + return false; + } + + property = value; + OnPropertyChanged(propertyName); + return true; + } + } +} diff --git a/ModernKeePass/Common/ObservableDictionary.cs b/ModernKeePass/Common/ObservableDictionary.cs index 429c553..48dab88 100644 --- a/ModernKeePass/Common/ObservableDictionary.cs +++ b/ModernKeePass/Common/ObservableDictionary.cs @@ -46,6 +46,14 @@ namespace ModernKeePass.Common this.Add(item.Key, item.Value); } + public void AddRange(IEnumerable> values) + { + foreach (var value in values) + { + Add(value); + } + } + public bool Remove(string key) { if (this._dictionary.Remove(key)) diff --git a/ModernKeePass/Controls/FirstItemDataTemplateSelector.cs b/ModernKeePass/Controls/FirstItemDataTemplateSelector.cs new file mode 100644 index 0000000..7501176 --- /dev/null +++ b/ModernKeePass/Controls/FirstItemDataTemplateSelector.cs @@ -0,0 +1,18 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace ModernKeePass.Controls +{ + public class FirstItemDataTemplateSelector: DataTemplateSelector + { + public DataTemplate FirstItem { get; set; } + public DataTemplate OtherItem { get; set; } + + protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) + { + var itemsControl = ItemsControl.ItemsControlFromItemContainer(container); + var returnTemplate = itemsControl.IndexFromContainer(container) == 0 ? FirstItem : OtherItem; + return returnTemplate; + } + } +} \ No newline at end of file diff --git a/ModernKeePass/Converters/BooleanToVisibilityConverter.cs b/ModernKeePass/Converters/BooleanToVisibilityConverter.cs new file mode 100644 index 0000000..787bbd1 --- /dev/null +++ b/ModernKeePass/Converters/BooleanToVisibilityConverter.cs @@ -0,0 +1,28 @@ +using System; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Data; + +namespace ModernKeePass.Converters +{ + public class BooleanToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + var boolean = value is bool ? (bool) value : false; + return boolean ? Visibility.Visible : Visibility.Collapsed; + } + + // 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 true; + case Visibility.Collapsed: return false; + default: + throw new ArgumentOutOfRangeException(); + } + } + } +} diff --git a/ModernKeePass/Converters/ColorToBrushConverter.cs b/ModernKeePass/Converters/ColorToBrushConverter.cs new file mode 100644 index 0000000..ab46561 --- /dev/null +++ b/ModernKeePass/Converters/ColorToBrushConverter.cs @@ -0,0 +1,26 @@ +using System; +using System.Drawing; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Media; + +namespace ModernKeePass.Converters +{ + public class ColorToBrushConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + var color = value is Color ? (Color?) value : Color.Empty; + if (color == Color.Empty && parameter is SolidColorBrush) return (SolidColorBrush) parameter; + return new SolidColorBrush(Windows.UI.Color.FromArgb( + color.Value.A, + color.Value.R, + color.Value.G, + color.Value.B)); + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/ModernKeePass/Converters/PluralizationConverter.cs b/ModernKeePass/Converters/PluralizationConverter.cs index 2a36655..e870363 100644 --- a/ModernKeePass/Converters/PluralizationConverter.cs +++ b/ModernKeePass/Converters/PluralizationConverter.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using Windows.UI.Xaml.Data; namespace ModernKeePass.Converters diff --git a/ModernKeePass/MainPage.xaml b/ModernKeePass/MainPage.xaml index 095320e..e325fbf 100644 --- a/ModernKeePass/MainPage.xaml +++ b/ModernKeePass/MainPage.xaml @@ -14,7 +14,8 @@ + Source="{Binding MainMenuItems}" + IsSourceGrouped="True" /> diff --git a/ModernKeePass/MainPage.xaml.cs b/ModernKeePass/MainPage.xaml.cs index 0ca7eb2..9908d5b 100644 --- a/ModernKeePass/MainPage.xaml.cs +++ b/ModernKeePass/MainPage.xaml.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using System.Linq; +using Windows.Storage.AccessCache; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; @@ -32,11 +33,23 @@ namespace ModernKeePass }; var app = (App)Application.Current; if (app.Database != null && app.Database.IsOpen) - mainMenuItems.Add(new MainMenuItemVm { Title = app.Database.Name, PageType = typeof(GroupDetailPage), Destination = Frame, Parameter = app.Database.RootGroup, Group = 1, SymbolIcon = Symbol.ProtectedDocument}); - + mainMenuItems.Add(new MainMenuItemVm + { + Title = app.Database.Name, + PageType = typeof(GroupDetailPage), + Destination = Frame, + Parameter = app.Database.RootGroup, + Group = 1, + SymbolIcon = Symbol.ProtectedDocument + }); var mainVm = DataContext as MainVm; mainVm.MainMenuItems = from item in mainMenuItems group item by item.Group into grp orderby grp.Key select grp; - mainVm.NotifyPropertyChanged("MainMenuItems"); + /*if (app.Database == null || !app.Database.IsOpen) + { + var mru = StorageApplicationPermissions.MostRecentlyUsedList; + if (mru.Entries.Count > 0) MenuListView.SelectedIndex = 3; + }*/ + //mainVm.NotifyPropertyChanged("MainMenuItems"); } private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) diff --git a/ModernKeePass/ModernKeePass.csproj b/ModernKeePass/ModernKeePass.csproj index 7ca524a..390e322 100644 --- a/ModernKeePass/ModernKeePass.csproj +++ b/ModernKeePass/ModernKeePass.csproj @@ -112,13 +112,17 @@ + + OpenDatabaseUserControl.xaml + + diff --git a/ModernKeePass/Package.appxmanifest b/ModernKeePass/Package.appxmanifest index 7f9f269..78d89d7 100644 --- a/ModernKeePass/Package.appxmanifest +++ b/ModernKeePass/Package.appxmanifest @@ -1,6 +1,6 @@  - + ModernKeePass wismna diff --git a/ModernKeePass/Pages/GroupDetailPage.xaml b/ModernKeePass/Pages/GroupDetailPage.xaml index 3c74c2c..00e08b8 100644 --- a/ModernKeePass/Pages/GroupDetailPage.xaml +++ b/ModernKeePass/Pages/GroupDetailPage.xaml @@ -5,16 +5,56 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:viewModels="using:ModernKeePass.ViewModels" xmlns:converters="using:ModernKeePass.Converters" + xmlns:local="using:ModernKeePass.Controls" x:Name="PageRoot" x:Class="ModernKeePass.Pages.GroupDetailPage" mc:Ignorable="d" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + - + - + @@ -117,14 +147,16 @@ IsSynchronizedWithCurrentItem="False" > - + - @@ -132,17 +164,31 @@ -