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="MouseKeyHook" Version="5.7.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="Ookii.Dialogs.Wpf" Version="5.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
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"
|
||||
xmlns:local="clr-namespace:EscribePassword" mc:Ignorable="d" Title="MainWindow" Height="450" Width="300"
|
||||
AllowsTransparency="True" WindowStyle="None" MouseDown="Window_MouseDown" Topmost="True">
|
||||
xmlns:local="clr-namespace:EscribePassword" mc:Ignorable="d" Title="MainWindow"
|
||||
AllowsTransparency="True" WindowStyle="None" MouseDown="Window_MouseDown" Topmost="True" Width="400" Height="500">
|
||||
<Window.DataContext>
|
||||
<local:MView />
|
||||
</Window.DataContext>
|
||||
|
@ -12,14 +12,16 @@
|
|||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<DataGrid Grid.Row="0" ItemsSource="{Binding Passwords}" SelectedItem="{Binding SelectedPassword}"
|
||||
AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" SelectionMode="Single">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}" Width="Auto" />
|
||||
<DataGridTextColumn Header="Usuario" Binding="{Binding Usuario}" Width="*" />
|
||||
<DataGridTextColumn Header="Contraseña" Binding="{Binding Password}" Width="*" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<DataGrid Grid.Row="0" ItemsSource="{Binding Passwords}" SelectedItem="{Binding SelectedPassword}"
|
||||
AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" SelectionMode="Single"
|
||||
MouseRightButtonUp="DataGrid_MouseRightButtonUp">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}" Width="Auto" />
|
||||
<DataGridTextColumn Header="Usuario" Binding="{Binding Usuario}" Width="*" />
|
||||
<DataGridTextColumn Header="Contraseña" Binding="{Binding Password}" Width="*" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<StackPanel Grid.Row="1" Orientation="Vertical">
|
||||
<StackPanel Orientation="Horizontal" Margin="1,1,1,1" HorizontalAlignment="Center">
|
||||
<ToolBarTray>
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Text.Json;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using Application = System.Windows.Application;
|
||||
using System.Windows.Input;
|
||||
using MouseButton = System.Windows.Input.MouseButton;
|
||||
using Gma.System.MouseKeyHook;
|
||||
using MouseEventArgs = System.Windows.Forms.MouseEventArgs;
|
||||
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Controls;
|
||||
using Clipboard = System.Windows.Clipboard;
|
||||
|
||||
namespace EscribePassword
|
||||
{
|
||||
|
@ -30,6 +29,40 @@ namespace EscribePassword
|
|||
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)
|
||||
{
|
||||
((App)Application.Current).SetInitialWindowPosition();
|
||||
|
@ -107,19 +140,25 @@ namespace EscribePassword
|
|||
[ObservableProperty]
|
||||
private Passwords selectedPassword;
|
||||
|
||||
Stopwatch timeSteps = new Stopwatch();
|
||||
|
||||
public void OnWheel(object sender, MouseWheelEventArgs e)
|
||||
{
|
||||
if (Passwords.Count == 0) return;
|
||||
|
||||
var index = Passwords.IndexOf(SelectedPassword);
|
||||
var max = Passwords.Count;
|
||||
if (e.Delta > 0)
|
||||
index++;
|
||||
else index--;
|
||||
if (index < 0) index = max-1;
|
||||
if (index >= max) index = 0;
|
||||
if (timeSteps.ElapsedMilliseconds > 200)
|
||||
{
|
||||
var index = Passwords.IndexOf(SelectedPassword);
|
||||
var max = Passwords.Count;
|
||||
if (e.Delta < 0)
|
||||
index++;
|
||||
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)
|
||||
|
@ -136,6 +175,8 @@ namespace EscribePassword
|
|||
top_passwords = new ObservableCollection<Passwords>();
|
||||
passwords = new ObservableCollection<Passwords>(EstadoPersistente.Instance.Passwords);
|
||||
SelectedPassword = passwords.FirstOrDefault();
|
||||
|
||||
timeSteps.Start();
|
||||
}
|
||||
|
||||
private void OnApplicationExit(object sender, ExitEventArgs e)
|
||||
|
|
Loading…
Reference in New Issue