mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-04 16:10:16 -04:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
588703ecd6 | ||
![]() |
223c9b641a | ||
![]() |
7db34d6517 |
@@ -31,6 +31,7 @@ namespace ModernKeePass
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Suspending += OnSuspending;
|
Suspending += OnSuspending;
|
||||||
UnhandledException += OnUnhandledException;
|
UnhandledException += OnUnhandledException;
|
||||||
|
Database = new DatabaseService();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Event Handlers
|
#region Event Handlers
|
||||||
@@ -122,7 +123,6 @@ namespace ModernKeePass
|
|||||||
}*/
|
}*/
|
||||||
// Ensure the current window is active
|
// Ensure the current window is active
|
||||||
Window.Current.Activate();
|
Window.Current.Activate();
|
||||||
Database = new DatabaseService();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
|
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
|
||||||
<Identity Name="wismna.ModernKeePass" Publisher="CN=0719A91A-C322-4EE0-A257-E60733EECF06" Version="1.10.0.31" />
|
<Identity Name="wismna.ModernKeePass" Publisher="CN=0719A91A-C322-4EE0-A257-E60733EECF06" Version="1.11.0.31" />
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>ModernKeePass</DisplayName>
|
<DisplayName>ModernKeePass</DisplayName>
|
||||||
<PublisherDisplayName>wismna</PublisherDisplayName>
|
<PublisherDisplayName>wismna</PublisherDisplayName>
|
||||||
|
@@ -24,6 +24,6 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.10.0.0")]
|
[assembly: AssemblyVersion("1.11.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.10.0.0")]
|
[assembly: AssemblyFileVersion("1.11.0.0")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
@@ -270,6 +270,9 @@
|
|||||||
<data name="RecentClear.Text" xml:space="preserve">
|
<data name="RecentClear.Text" xml:space="preserve">
|
||||||
<value>Clear all</value>
|
<value>Clear all</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ReorderEntriesLabel.Text" xml:space="preserve">
|
||||||
|
<value>Drag and drop entries to reorder them</value>
|
||||||
|
</data>
|
||||||
<data name="SaveAsButton.Content" xml:space="preserve">
|
<data name="SaveAsButton.Content" xml:space="preserve">
|
||||||
<value>Save as...</value>
|
<value>Save as...</value>
|
||||||
</data>
|
</data>
|
||||||
|
@@ -270,6 +270,9 @@
|
|||||||
<data name="RecentClear.Text" xml:space="preserve">
|
<data name="RecentClear.Text" xml:space="preserve">
|
||||||
<value>Supprimer tout</value>
|
<value>Supprimer tout</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ReorderEntriesLabel.Text" xml:space="preserve">
|
||||||
|
<value>Glissez-déposez les entrées pour les réorganiser</value>
|
||||||
|
</data>
|
||||||
<data name="SaveAsButton.Content" xml:space="preserve">
|
<data name="SaveAsButton.Content" xml:space="preserve">
|
||||||
<value>Sauvegarder sous...</value>
|
<value>Sauvegarder sous...</value>
|
||||||
</data>
|
</data>
|
||||||
|
@@ -5,7 +5,6 @@ using Windows.UI.Xaml;
|
|||||||
using Windows.UI.Xaml.Controls;
|
using Windows.UI.Xaml.Controls;
|
||||||
using ModernKeePass.Interfaces;
|
using ModernKeePass.Interfaces;
|
||||||
using ModernKeePass.Mappings;
|
using ModernKeePass.Mappings;
|
||||||
using ModernKeePass.Services;
|
|
||||||
using ModernKeePassLib;
|
using ModernKeePassLib;
|
||||||
using ModernKeePassLib.Cryptography.PasswordGenerator;
|
using ModernKeePassLib.Cryptography.PasswordGenerator;
|
||||||
using ModernKeePassLib.Security;
|
using ModernKeePassLib.Security;
|
||||||
@@ -116,6 +115,16 @@ namespace ModernKeePass.ViewModels
|
|||||||
NotifyPropertyChanged("IsEditMode");
|
NotifyPropertyChanged("IsEditMode");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsVisible
|
||||||
|
{
|
||||||
|
get { return _isVisible; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_isVisible = value;
|
||||||
|
NotifyPropertyChanged("IsVisible");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsRecycleOnDelete => _database.RecycleBinEnabled && !ParentGroup.IsSelected;
|
public bool IsRecycleOnDelete => _database.RecycleBinEnabled && !ParentGroup.IsSelected;
|
||||||
|
|
||||||
@@ -155,6 +164,7 @@ namespace ModernKeePass.ViewModels
|
|||||||
private bool _isEditMode;
|
private bool _isEditMode;
|
||||||
private bool _isRevealPassword;
|
private bool _isRevealPassword;
|
||||||
private double _passwordLength = 25;
|
private double _passwordLength = 25;
|
||||||
|
private bool _isVisible = true;
|
||||||
|
|
||||||
private void NotifyPropertyChanged(string propertyName)
|
private void NotifyPropertyChanged(string propertyName)
|
||||||
{
|
{
|
||||||
|
@@ -79,20 +79,7 @@ namespace ModernKeePass.ViewModels
|
|||||||
get { return _isMenuClosed; }
|
get { return _isMenuClosed; }
|
||||||
set { SetProperty(ref _isMenuClosed, value); }
|
set { SetProperty(ref _isMenuClosed, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Filter
|
|
||||||
{
|
|
||||||
get { return _filter; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
SetProperty(ref _filter, value);
|
|
||||||
OnPropertyChanged("EntriesFiltered");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ObservableCollection<EntryVm> EntriesFiltered =>
|
|
||||||
new ObservableCollection<EntryVm>(Entries.Where(e => e.Name.IndexOf(Filter, StringComparison.OrdinalIgnoreCase) >= 0));
|
|
||||||
|
|
||||||
public string Path
|
public string Path
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@@ -94,7 +94,7 @@
|
|||||||
Source="{Binding Groups}" />
|
Source="{Binding Groups}" />
|
||||||
<CollectionViewSource
|
<CollectionViewSource
|
||||||
x:Name="EntriesViewSource"
|
x:Name="EntriesViewSource"
|
||||||
Source="{Binding EntriesFiltered}" />
|
Source="{Binding Entries}" />
|
||||||
<CollectionViewSource
|
<CollectionViewSource
|
||||||
x:Name="EntriesZoomedOutViewSource"
|
x:Name="EntriesZoomedOutViewSource"
|
||||||
Source="{Binding EntriesZoomedOut}" IsSourceGrouped="True"/>
|
Source="{Binding EntriesZoomedOut}" IsSourceGrouped="True"/>
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
OtherItem="{StaticResource GroupOtherItem}" />
|
OtherItem="{StaticResource GroupOtherItem}" />
|
||||||
</ListView.ItemTemplateSelector>
|
</ListView.ItemTemplateSelector>
|
||||||
</ListView>
|
</ListView>
|
||||||
<!-- Horizontal scrolling grid -->
|
<TextBlock Grid.Column="1" x:Uid="ReorderEntriesLabel" Margin="20,20,0,0" Visibility="{Binding IsEditMode, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource BodyTextBlockStyle}" />
|
||||||
<HyperlinkButton Grid.Column="1" VerticalAlignment="Top" Margin="40,10,0,0" Click="CreateEntry_ButtonClick" Visibility="{Binding IsSelected, Converter={StaticResource InverseBooleanToVisibilityConverter}}" HorizontalAlignment="Right">
|
<HyperlinkButton Grid.Column="1" VerticalAlignment="Top" Margin="40,10,0,0" Click="CreateEntry_ButtonClick" Visibility="{Binding IsSelected, Converter={StaticResource InverseBooleanToVisibilityConverter}}" HorizontalAlignment="Right">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<SymbolIcon Symbol="Add"></SymbolIcon>
|
<SymbolIcon Symbol="Add"></SymbolIcon>
|
||||||
@@ -188,6 +188,7 @@
|
|||||||
</HyperlinkButton>
|
</HyperlinkButton>
|
||||||
<SemanticZoom Grid.Column="1" ViewChangeStarted="SemanticZoom_ViewChangeStarted" Margin="20,60,0,0">
|
<SemanticZoom Grid.Column="1" ViewChangeStarted="SemanticZoom_ViewChangeStarted" Margin="20,60,0,0">
|
||||||
<SemanticZoom.ZoomedInView>
|
<SemanticZoom.ZoomedInView>
|
||||||
|
<!-- Horizontal scrolling grid -->
|
||||||
<GridView
|
<GridView
|
||||||
x:Name="GridView"
|
x:Name="GridView"
|
||||||
AutomationProperties.AutomationId="ItemGridView"
|
AutomationProperties.AutomationId="ItemGridView"
|
||||||
@@ -336,15 +337,17 @@
|
|||||||
</TextBox>
|
</TextBox>
|
||||||
<TextBlock FontSize="12" Text="{Binding Path}" />
|
<TextBlock FontSize="12" Text="{Binding Path}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Button Grid.Column="2" x:Name="FilterButton" Style="{StaticResource NoBorderButtonStyle}" Height="50">
|
<Button Grid.Column="2" x:Name="SearchButton" Style="{StaticResource NoBorderButtonStyle}" Height="50">
|
||||||
<SymbolIcon Symbol="Filter" />
|
<SymbolIcon Symbol="Find" />
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
<Flyout>
|
<Flyout>
|
||||||
<controls:TextBoxWithButton x:Uid="GroupFilter" ButtonSymbol="" Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="18" VerticalContentAlignment="Center" Width="400" Style="{StaticResource TextBoxWithButtonStyle}" IsButtonEnabled="False" />
|
<!--<controls:TextBoxWithButton x:Uid="GroupFilter" ButtonSymbol="" Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="18" VerticalContentAlignment="Center" Width="400" Style="{StaticResource TextBoxWithButtonStyle}" IsButtonEnabled="False" />-->
|
||||||
|
<SearchBox x:Uid="GroupSearch" Width="350" Background="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" BorderThickness="0" FontSize="18" SuggestionsRequested="SearchBox_OnSuggestionsRequested" SearchHistoryEnabled="False" ResultSuggestionChosen="SearchBox_OnResultSuggestionChosen" VerticalContentAlignment="Center" />
|
||||||
</Flyout>
|
</Flyout>
|
||||||
</Button.Flyout>
|
</Button.Flyout>
|
||||||
</Button>
|
</Button>
|
||||||
<controls:TextBoxWithButton Grid.Column="2" x:Name="FilterBox" x:Uid="GroupFilter" ButtonSymbol="" Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="18" VerticalContentAlignment="Center" Width="400" Style="{StaticResource TextBoxWithButtonStyle}" IsButtonEnabled="False" />
|
<!--<controls:TextBoxWithButton Grid.Column="2" x:Name="FilterBox" x:Uid="GroupFilter" ButtonSymbol="" Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="18" VerticalContentAlignment="Center" Width="400" Style="{StaticResource TextBoxWithButtonStyle}" IsButtonEnabled="False" />-->
|
||||||
|
<SearchBox Grid.Column="2" x:Uid="GroupSearch" x:Name="SearchBox" Width="350" Background="{ThemeResource TextBoxDisabledBackgroundThemeBrush}" BorderThickness="0" FontSize="18" SuggestionsRequested="SearchBox_OnSuggestionsRequested" SearchHistoryEnabled="False" ResultSuggestionChosen="SearchBox_OnResultSuggestionChosen" VerticalContentAlignment="Center" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<VisualStateManager.VisualStateGroups>
|
<VisualStateManager.VisualStateGroups>
|
||||||
<VisualStateGroup x:Name="DragDropGroup">
|
<VisualStateGroup x:Name="DragDropGroup">
|
||||||
@@ -363,23 +366,23 @@
|
|||||||
</Storyboard>
|
</Storyboard>
|
||||||
</VisualState>
|
</VisualState>
|
||||||
</VisualStateGroup>
|
</VisualStateGroup>
|
||||||
<VisualStateGroup x:Name="FilterGroup">
|
<VisualStateGroup x:Name="SearchGroup">
|
||||||
<VisualState x:Name="Small">
|
<VisualState x:Name="Small">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FilterButton" Storyboard.TargetProperty="Visibility">
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SearchButton" Storyboard.TargetProperty="Visibility">
|
||||||
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
|
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
|
||||||
</ObjectAnimationUsingKeyFrames>
|
</ObjectAnimationUsingKeyFrames>
|
||||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FilterBox" Storyboard.TargetProperty="Visibility">
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SearchBox" Storyboard.TargetProperty="Visibility">
|
||||||
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
|
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
|
||||||
</ObjectAnimationUsingKeyFrames>
|
</ObjectAnimationUsingKeyFrames>
|
||||||
</Storyboard>
|
</Storyboard>
|
||||||
</VisualState>
|
</VisualState>
|
||||||
<VisualState x:Name="Large">
|
<VisualState x:Name="Large">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FilterButton" Storyboard.TargetProperty="Visibility">
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SearchButton" Storyboard.TargetProperty="Visibility">
|
||||||
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
|
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
|
||||||
</ObjectAnimationUsingKeyFrames>
|
</ObjectAnimationUsingKeyFrames>
|
||||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FilterBox" Storyboard.TargetProperty="Visibility">
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SearchBox" Storyboard.TargetProperty="Visibility">
|
||||||
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
|
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
|
||||||
</ObjectAnimationUsingKeyFrames>
|
</ObjectAnimationUsingKeyFrames>
|
||||||
</Storyboard>
|
</Storyboard>
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using Windows.ApplicationModel.DataTransfer;
|
using Windows.ApplicationModel.DataTransfer;
|
||||||
|
using Windows.Storage.Streams;
|
||||||
using Windows.UI.Xaml;
|
using Windows.UI.Xaml;
|
||||||
using Windows.UI.Xaml.Controls;
|
using Windows.UI.Xaml.Controls;
|
||||||
using Windows.UI.Xaml.Navigation;
|
using Windows.UI.Xaml.Navigation;
|
||||||
@@ -149,7 +151,24 @@ namespace ModernKeePass.Views
|
|||||||
e.Cancel = !Model.IsEditMode;
|
e.Cancel = !Model.IsEditMode;
|
||||||
e.Data.RequestedOperation = DataPackageOperation.Move;
|
e.Data.RequestedOperation = DataPackageOperation.Move;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SearchBox_OnSuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
|
||||||
|
{
|
||||||
|
var imageUri = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx://Assets/ModernKeePass-SmallLogo.scale-80.png"));
|
||||||
|
var results = Model.Entries.Where(e => e.Name.IndexOf(args.QueryText, StringComparison.OrdinalIgnoreCase) >= 0).Take(5);
|
||||||
|
foreach (var result in results)
|
||||||
|
{
|
||||||
|
args.Request.SearchSuggestionCollection.AppendResultSuggestion(result.Name, result.ParentGroup.Name, result.Id, imageUri, string.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SearchBox_OnResultSuggestionChosen(SearchBox sender, SearchBoxResultSuggestionChosenEventArgs args)
|
||||||
|
{
|
||||||
|
var entry = Model.Entries.FirstOrDefault(e => e.Id == args.Tag);
|
||||||
|
Frame.Navigate(typeof(EntryDetailPage), entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void GroupDetailPage_OnSizeChanged(object sender, SizeChangedEventArgs e)
|
private void GroupDetailPage_OnSizeChanged(object sender, SizeChangedEventArgs e)
|
||||||
{
|
{
|
||||||
VisualStateManager.GoToState(this, e.NewSize.Width < 700 ? "Small" : "Large", true);
|
VisualStateManager.GoToState(this, e.NewSize.Width < 700 ? "Small" : "Large", true);
|
||||||
|
@@ -1,11 +1,2 @@
|
|||||||
You can now reorder entries
|
Error when opening file from Explorer corrected
|
||||||
Entries and groups are sortable
|
Filter entries reverted to search entries because of regressions
|
||||||
New Home button that allows returning to the main menu from anywhere
|
|
||||||
Change default database creation settings
|
|
||||||
Settings is accessible from main menu
|
|
||||||
Clear Recent databases
|
|
||||||
New French translation
|
|
||||||
Better layout whith small screen size
|
|
||||||
Search becomes Filter
|
|
||||||
Design and usability improvements
|
|
||||||
Bugs correction
|
|
@@ -1,6 +1,6 @@
|
|||||||
En avez-vous assez d'essayer de retenir des quantit<EFBFBD>s de mots de passe ? Etes-vous soucieux que le fait d'utiliser le m<EFBFBD>me mot de passe partout vous rend vuln<EFBFBD>rable ?
|
En avez-vous assez d'essayer de retenir des quantités de mots de passe ? Etes-vous soucieux que le fait d'utiliser le même mot de passe partout vous rend vulnérable ?
|
||||||
ModernKeePass est un gestionnaire de mots de passe gratuit, libre, facile <EFBFBD> utiliser mais n<EFBFBD>anmoins s<>r, bas<EFBFBD> sur la technologie certifi<EFBFBD>e et r<>pandue KeePass 2.x et compatible avec celui-ci.
|
ModernKeePass est un gestionnaire de mots de passe gratuit, libre, facile à utiliser mais néanmoins s<>r, basé sur la technologie certifiée et répandue KeePass 2.x et compatible avec celui-ci.
|
||||||
Vous pouvez stocker ou g<EFBFBD>n<EFBFBD>rer vos mots de passe dans une base de donn<EFBFBD>es chiffr<EFBFBD>e, qui peut <EFBFBD>tre plac<EFBFBD>e n'importe o<> (ordinateur personel/tablette, cloud, cl<EFBFBD> USB...)
|
Vous pouvez stocker ou générer vos mots de passe dans une base de données chiffrée, qui peut être placée n'importe o<> (ordinateur personnel/tablette, cloud, clé USB...)
|
||||||
|
|
||||||
Bien que la s<EFBFBD>curit<EFBFBD> informatique soit tr<EFBFBD>s importante, cette application essaie de rester simple <EFBFBD> utiliser et <EFBFBD> comprendre. Vos suggestions sont les bienvenues !
|
Bien que la sécurité informatique soit très importante, cette application essaie de rester simple à utiliser et à comprendre. Vos suggestions sont les bienvenues !
|
||||||
Fonctionne sur Windows 10, 8.1 et RT.
|
Fonctionne sur Windows 10, 8.1 et RT.
|
@@ -1,11 +1,2 @@
|
|||||||
Vous pouvez d<>sormais r<>organiser vos entr<74>es
|
Correction d'un bug lors de l'ouverture d'un fichier par Explorer
|
||||||
Les entr<74>es et les groupes peuvent <20>tre tri<72>s
|
Rétablissement de la recherche d'entrées à la place du filtre à cause de régressions multiples
|
||||||
Nouveau bouton d'Accueil qui permet de retourner au menu principal
|
|
||||||
Changez les options de cr<63>ation des nouvelles bases de donn<6E>es
|
|
||||||
Les param<61>tres sont accessibles depuis le menu principal
|
|
||||||
Effacez les <20>l<EFBFBD>ments r<>cents
|
|
||||||
Traduction fran<61>aise
|
|
||||||
Meilleur rendu en petit <20>cran
|
|
||||||
La recherche devient Filtre
|
|
||||||
Am<EFBFBD>liorations de design et d'ergonomie
|
|
||||||
Corrections de bogues
|
|
Reference in New Issue
Block a user