Agregada opcion de boton derecho para copiar al portapapeles.
This commit is contained in:
parent
7dbd993489
commit
ce5806257c
|
@ -26,6 +26,7 @@
|
||||||
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
||||||
<PackageReference Include="MouseKeyHook" Version="5.7.1" />
|
<PackageReference Include="MouseKeyHook" Version="5.7.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
<PackageReference Include="Ookii.Dialogs.Wpf" Version="5.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
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:local="clr-namespace:EscribePassword" mc:Ignorable="d" Title="MainWindow" Height="450" Width="300"
|
xmlns:local="clr-namespace:EscribePassword" mc:Ignorable="d" Title="MainWindow"
|
||||||
AllowsTransparency="True" WindowStyle="None" MouseDown="Window_MouseDown" Topmost="True">
|
AllowsTransparency="True" WindowStyle="None" MouseDown="Window_MouseDown" Topmost="True" Width="400" Height="500">
|
||||||
<Window.DataContext>
|
<Window.DataContext>
|
||||||
<local:MView />
|
<local:MView />
|
||||||
</Window.DataContext>
|
</Window.DataContext>
|
||||||
|
@ -12,14 +12,16 @@
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<DataGrid Grid.Row="0" ItemsSource="{Binding Passwords}" SelectedItem="{Binding SelectedPassword}"
|
<DataGrid Grid.Row="0" ItemsSource="{Binding Passwords}" SelectedItem="{Binding SelectedPassword}"
|
||||||
AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" SelectionMode="Single">
|
AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" SelectionMode="Single"
|
||||||
<DataGrid.Columns>
|
MouseRightButtonUp="DataGrid_MouseRightButtonUp">
|
||||||
<DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}" Width="Auto" />
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="Usuario" Binding="{Binding Usuario}" Width="*" />
|
<DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}" Width="Auto" />
|
||||||
<DataGridTextColumn Header="Contraseña" Binding="{Binding Password}" Width="*" />
|
<DataGridTextColumn Header="Usuario" Binding="{Binding Usuario}" Width="*" />
|
||||||
</DataGrid.Columns>
|
<DataGridTextColumn Header="Contraseña" Binding="{Binding Password}" Width="*" />
|
||||||
</DataGrid>
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
|
||||||
<StackPanel Grid.Row="1" Orientation="Vertical">
|
<StackPanel Grid.Row="1" Orientation="Vertical">
|
||||||
<StackPanel Orientation="Horizontal" Margin="1,1,1,1" HorizontalAlignment="Center">
|
<StackPanel Orientation="Horizontal" Margin="1,1,1,1" HorizontalAlignment="Center">
|
||||||
<ToolBarTray>
|
<ToolBarTray>
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Text.Json;
|
|
||||||
using System.IO;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using Application = System.Windows.Application;
|
using Application = System.Windows.Application;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using MouseButton = System.Windows.Input.MouseButton;
|
using MouseButton = System.Windows.Input.MouseButton;
|
||||||
using Gma.System.MouseKeyHook;
|
using Gma.System.MouseKeyHook;
|
||||||
using MouseEventArgs = System.Windows.Forms.MouseEventArgs;
|
using MouseEventArgs = System.Windows.Forms.MouseEventArgs;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using Clipboard = System.Windows.Clipboard;
|
||||||
|
|
||||||
namespace EscribePassword
|
namespace EscribePassword
|
||||||
{
|
{
|
||||||
|
@ -30,6 +29,40 @@ namespace EscribePassword
|
||||||
HookManager();
|
HookManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DataGrid_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is DataGrid dataGrid && dataGrid.CurrentCell.Item is Passwords selectedPassword)
|
||||||
|
{
|
||||||
|
var cellContent = (dataGrid.CurrentCell.Column.GetCellContent(selectedPassword) as TextBlock)?.Text;
|
||||||
|
if (!string.IsNullOrEmpty(cellContent))
|
||||||
|
{
|
||||||
|
Clipboard.SetText(cellContent);
|
||||||
|
|
||||||
|
// Mostrar notificación de que el valor fue copiado
|
||||||
|
ShowNotification("Valor copiado al portapapeles.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowNotification(string message)
|
||||||
|
{
|
||||||
|
NotifyIcon notifyIcon = new NotifyIcon();
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
notifyIcon.Icon = SystemIcons.Information;
|
||||||
|
notifyIcon.BalloonTipTitle = "Notificación";
|
||||||
|
notifyIcon.BalloonTipText = message;
|
||||||
|
notifyIcon.ShowBalloonTip(2000);
|
||||||
|
|
||||||
|
// Ocultar el icono después de 2 segundos
|
||||||
|
var timer = new System.Timers.Timer(2000);
|
||||||
|
timer.Elapsed += (s, e) =>
|
||||||
|
{
|
||||||
|
notifyIcon.Dispose();
|
||||||
|
timer.Dispose();
|
||||||
|
};
|
||||||
|
timer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
|
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
((App)Application.Current).SetInitialWindowPosition();
|
((App)Application.Current).SetInitialWindowPosition();
|
||||||
|
@ -107,19 +140,25 @@ namespace EscribePassword
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private Passwords selectedPassword;
|
private Passwords selectedPassword;
|
||||||
|
|
||||||
|
Stopwatch timeSteps = new Stopwatch();
|
||||||
|
|
||||||
public void OnWheel(object sender, MouseWheelEventArgs e)
|
public void OnWheel(object sender, MouseWheelEventArgs e)
|
||||||
{
|
{
|
||||||
if (Passwords.Count == 0) return;
|
if (Passwords.Count == 0) return;
|
||||||
|
|
||||||
var index = Passwords.IndexOf(SelectedPassword);
|
if (timeSteps.ElapsedMilliseconds > 200)
|
||||||
var max = Passwords.Count;
|
{
|
||||||
if (e.Delta > 0)
|
var index = Passwords.IndexOf(SelectedPassword);
|
||||||
index++;
|
var max = Passwords.Count;
|
||||||
else index--;
|
if (e.Delta < 0)
|
||||||
if (index < 0) index = max-1;
|
index++;
|
||||||
if (index >= max) index = 0;
|
else if (e.Delta > 0) index--;
|
||||||
|
if (index < 0) index = max - 1;
|
||||||
|
if (index >= max) index = 0;
|
||||||
|
|
||||||
SelectedPassword = Passwords[index];
|
SelectedPassword = Passwords[index];
|
||||||
|
timeSteps.Restart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
partial void OnSelectedPasswordChanged(Passwords value)
|
partial void OnSelectedPasswordChanged(Passwords value)
|
||||||
|
@ -136,6 +175,8 @@ namespace EscribePassword
|
||||||
top_passwords = new ObservableCollection<Passwords>();
|
top_passwords = new ObservableCollection<Passwords>();
|
||||||
passwords = new ObservableCollection<Passwords>(EstadoPersistente.Instance.Passwords);
|
passwords = new ObservableCollection<Passwords>(EstadoPersistente.Instance.Passwords);
|
||||||
SelectedPassword = passwords.FirstOrDefault();
|
SelectedPassword = passwords.FirstOrDefault();
|
||||||
|
|
||||||
|
timeSteps.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnApplicationExit(object sender, ExitEventArgs e)
|
private void OnApplicationExit(object sender, ExitEventArgs e)
|
||||||
|
|
Loading…
Reference in New Issue