abolish "Edit Mode" in favor of allowing channel, system and alert widgets to be moved with the right mouse button so long as "Lock Widgets" isn't enabled;

pull/1/head
Bryan Biedenkapp 11 months ago
parent 24ab27f94e
commit 0c045ebf6e

@ -2,9 +2,6 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="55" Width="105"
MouseLeftButtonDown="AlertTone_MouseLeftButtonDown"
MouseMove="AlertTone_MouseMove"
MouseRightButtonDown="AlertTone_MouseRightButtonDown"
DataContext="{Binding RelativeSource={RelativeSource Self}}" Background="#FF848484">
<UserControl.Effect>
<DropShadowEffect ShadowDepth="1" BlurRadius="16" Color="#FF686767" Opacity="0.3" />

@ -47,11 +47,6 @@ namespace dvmconsole.Controls
/// </summary>
public string AlertFilePath { get; set; }
/// <summary>
///
/// </summary>
public bool IsEditMode { get; set; }
/*
** Events
*/
@ -71,10 +66,6 @@ namespace dvmconsole.Controls
InitializeComponent();
AlertFilePath = alertFilePath;
AlertFileName = System.IO.Path.GetFileNameWithoutExtension(alertFilePath);
this.MouseLeftButtonDown += AlertTone_MouseLeftButtonDown;
this.MouseMove += AlertTone_MouseMove;
this.MouseRightButtonDown += AlertTone_MouseRightButtonDown;
}
/// <summary>
@ -86,61 +77,5 @@ namespace dvmconsole.Controls
{
OnAlertTone.Invoke(this);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AlertTone_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (!IsEditMode) return;
startPoint = e.GetPosition(this);
isDragging = true;
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AlertTone_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging && IsEditMode)
{
var parentCanvas = VisualTreeHelper.GetParent(this) as Canvas;
if (parentCanvas != null)
{
Point mousePos = e.GetPosition(parentCanvas);
double newLeft = mousePos.X - startPoint.X;
double newTop = mousePos.Y - startPoint.Y;
Canvas.SetLeft(this, Math.Max(0, newLeft));
Canvas.SetTop(this, Math.Max(0, newTop));
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AlertTone_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
if (!IsEditMode || !isDragging) return;
isDragging = false;
var parentCanvas = VisualTreeHelper.GetParent(this) as Canvas;
if (parentCanvas != null)
{
double x = Canvas.GetLeft(this);
double y = Canvas.GetTop(this);
}
ReleaseMouseCapture();
}
} // public partial class AlertTone : UserControl
} // namespace dvmconsole.Controls

@ -227,11 +227,6 @@ namespace dvmconsole.Controls
/// </summary>
public string VoiceChannel { get; set; }
/// <summary>
/// Flag indicating whether or not edit mode is enabled.
/// </summary>
public bool IsEditMode { get; set; }
/// <summary>
/// Flag indicating whether or not this channel is selected.
/// </summary>
@ -442,9 +437,6 @@ namespace dvmconsole.Controls
/// </summary>
private void UpdatePTTColor()
{
if (IsEditMode)
return;
if (PttState)
PttButton.Background = RED_GRADIENT;
else
@ -456,9 +448,6 @@ namespace dvmconsole.Controls
/// </summary>
private void UpdatePageColor()
{
if (IsEditMode)
return;
if (PageState)
PageSelectButton.Background = ORANGE_GRADIENT;
else
@ -467,9 +456,6 @@ namespace dvmconsole.Controls
private void UpdateHoldColor()
{
if (IsEditMode)
return;
if (HoldState)
ChannelMarkerBtn.Background = ORANGE_GRADIENT;
else
@ -508,9 +494,6 @@ namespace dvmconsole.Controls
/// <param name="e"></param>
private void ChannelBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (IsEditMode)
return;
IsSelected = !IsSelected;
ControlBorder.Background = IsSelected ? BLUE_GRADIENT : DARK_GRAY_GRADIENT;

@ -46,6 +46,7 @@
<MenuItem Header="_Reset Settings" Click="ResetSettings_Click" />
<Separator />
<MenuItem Header="_Select Widgets to Display" Click="SelectWidgets_Click" />
<Separator />
<MenuItem Header="Alerts">
<MenuItem Header="Add Alert Tone" Click="AddAlertTone_Click" />
</MenuItem>
@ -55,7 +56,7 @@
<Separator />
<MenuItem Header="_Dark Mode" IsCheckable="True" Checked="ToggleDarkMode_Click" Unchecked="ToggleDarkMode_Click" x:Name="menuDarkMode" />
<Separator />
<MenuItem Header="_Enable Edit Mode" IsCheckable="True" Checked="ToggleEditMode_Click" Unchecked="ToggleEditMode_Click" x:Name="menuEditMode" />
<MenuItem Header="_Lock Widgets" IsCheckable="True" Checked="ToggleLockWidgets_Click" Unchecked="ToggleLockWidgets_Click" x:Name="menuToggleLockWidgets" />
<MenuItem Header="_Fit Channel Display to Window Size" Click="ResizeCanvasToWindow_Click" x:Name="menuFitToWindow" />
</MenuItem>
</Menu>

@ -37,6 +37,7 @@ using fnecore.P25;
using fnecore.P25.LC.TSBK;
using fnecore.P25.KMM;
using System;
using System.Windows.Media;
namespace dvmconsole
{
@ -69,8 +70,6 @@ namespace dvmconsole
private const string URI_RESOURCE_PATH = "pack://application:,,,/dvmconsole;component";
private bool isEditMode = false;
private bool globalPttState = false;
private const int GridSize = 5;
@ -275,8 +274,9 @@ namespace dvmconsole
Canvas.SetTop(systemStatusBox, offsetY);
}
systemStatusBox.MouseLeftButtonDown += SystemStatusBox_MouseLeftButtonDown;
systemStatusBox.MouseLeftButtonUp += SystemStatusBox_MouseLeftButtonUp;
// widget placement
systemStatusBox.MouseRightButtonDown += SystemStatusBox_MouseRightButtonDown;
systemStatusBox.MouseRightButtonUp += SystemStatusBox_MouseRightButtonUp;
systemStatusBox.MouseMove += SystemStatusBox_MouseMove;
channelsCanvas.Children.Add(systemStatusBox);
@ -365,9 +365,11 @@ namespace dvmconsole
channelBox.PageButtonClicked += ChannelBox_PageButtonClicked;
channelBox.HoldChannelButtonClicked += ChannelBox_HoldChannelButtonClicked;
channelBox.MouseLeftButtonDown += ChannelBox_MouseLeftButtonDown;
channelBox.MouseLeftButtonUp += ChannelBox_MouseLeftButtonUp;
// widget placement
channelBox.MouseRightButtonDown += ChannelBox_MouseRightButtonDown;
channelBox.MouseRightButtonUp += ChannelBox_MouseRightButtonUp;
channelBox.MouseMove += ChannelBox_MouseMove;
channelsCanvas.Children.Add(channelBox);
offsetX += 225;
@ -387,9 +389,15 @@ namespace dvmconsole
// iterate through the alert tones and begin building alert tone widges
foreach (var alertPath in settingsManager.AlertToneFilePaths)
{
AlertTone alertTone = new AlertTone(alertPath) { IsEditMode = isEditMode };
AlertTone alertTone = new AlertTone(alertPath);
alertTone.OnAlertTone += SendAlertTone;
// widget placement
alertTone.MouseRightButtonDown += AlertTone_MouseRightButtonDown;
alertTone.MouseRightButtonUp += AlertTone_MouseRightButtonUp;
alertTone.MouseMove += AlertTone_MouseMove;
if (settingsManager.AlertTonePositions.TryGetValue(alertPath, out var position))
{
Canvas.SetLeft(alertTone, position.X);
@ -401,8 +409,6 @@ namespace dvmconsole
Canvas.SetTop(alertTone, 20);
}
alertTone.MouseRightButtonUp += AlertTone_MouseRightButtonUp;
channelsCanvas.Children.Add(alertTone);
}
}
@ -425,9 +431,11 @@ namespace dvmconsole
playbackChannelBox.PageButtonClicked += ChannelBox_PageButtonClicked;
playbackChannelBox.HoldChannelButtonClicked += ChannelBox_HoldChannelButtonClicked;
playbackChannelBox.MouseLeftButtonDown += ChannelBox_MouseLeftButtonDown;
playbackChannelBox.MouseLeftButtonUp += ChannelBox_MouseLeftButtonUp;
// widget placement
playbackChannelBox.MouseRightButtonDown += ChannelBox_MouseRightButtonDown;
playbackChannelBox.MouseRightButtonUp += ChannelBox_MouseRightButtonUp;
playbackChannelBox.MouseMove += ChannelBox_MouseMove;
channelsCanvas.Children.Add(playbackChannelBox);
Cursor = Cursors.Arrow;
@ -608,21 +616,6 @@ namespace dvmconsole
}
}
/// <summary>
///
/// </summary>
private void UpdateEditModeForWidgets()
{
foreach (var child in channelsCanvas.Children)
{
if (child is AlertTone alertTone)
alertTone.IsEditMode = isEditMode;
if (child is ChannelBox channelBox)
channelBox.IsEditMode = isEditMode;
}
}
/// <summary>
///
/// </summary>
@ -811,6 +804,7 @@ namespace dvmconsole
const double heightOffset = 115;
// set PTT toggle mode (this must be done before channel widgets are defined)
menuToggleLockWidgets.IsChecked = settingsManager.LockWidgets;
menuTogglePTTMode.IsChecked = settingsManager.TogglePTTMode;
if (!string.IsNullOrEmpty(settingsManager.LastCodeplugPath) && File.Exists(settingsManager.LastCodeplugPath))
@ -1161,10 +1155,15 @@ namespace dvmconsole
if (openFileDialog.ShowDialog() == true)
{
string alertFilePath = openFileDialog.FileName;
var alertTone = new AlertTone(alertFilePath) { IsEditMode = isEditMode };
var alertTone = new AlertTone(alertFilePath);
alertTone.OnAlertTone += SendAlertTone;
// widget placement
alertTone.MouseRightButtonDown += AlertTone_MouseRightButtonDown;
alertTone.MouseRightButtonUp += AlertTone_MouseRightButtonUp;
alertTone.MouseMove += AlertTone_MouseMove;
if (settingsManager.AlertTonePositions.TryGetValue(alertFilePath, out var position))
{
Canvas.SetLeft(alertTone, position.X);
@ -1176,8 +1175,6 @@ namespace dvmconsole
Canvas.SetTop(alertTone, 20);
}
alertTone.MouseRightButtonUp += AlertTone_MouseRightButtonUp;
channelsCanvas.Children.Add(alertTone);
settingsManager.UpdateAlertTonePaths(alertFilePath);
}
@ -1226,12 +1223,12 @@ namespace dvmconsole
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToggleEditMode_Click(object sender, RoutedEventArgs e)
private void ToggleLockWidgets_Click(object sender, RoutedEventArgs e)
{
isEditMode = !isEditMode;
var menuItem = (MenuItem)sender;
menuItem.Header = isEditMode ? "Disable Edit Mode" : "Enable Edit Mode";
UpdateEditModeForWidgets();
if (!windowLoaded)
return;
settingsManager.LockWidgets = !settingsManager.LockWidgets;
}
/// <summary>
@ -1398,9 +1395,10 @@ namespace dvmconsole
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChannelBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
private void ChannelBox_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
if (!isEditMode || !(sender is UIElement element)) return;
if (settingsManager.LockWidgets || !(sender is UIElement element))
return;
draggedElement = element;
startPoint = e.GetPosition(channelsCanvas);
@ -1418,9 +1416,9 @@ namespace dvmconsole
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChannelBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
private void ChannelBox_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
if (!isEditMode || !isDragging || draggedElement == null)
if (settingsManager.LockWidgets || !isDragging || draggedElement == null)
return;
Cursor = Cursors.Arrow;
@ -1437,7 +1435,7 @@ namespace dvmconsole
/// <param name="e"></param>
private void ChannelBox_MouseMove(object sender, MouseEventArgs e)
{
if (!isEditMode || !isDragging || draggedElement == null)
if (settingsManager.LockWidgets || !isDragging || draggedElement == null)
return;
Point currentPosition = e.GetPosition(channelsCanvas);
@ -1464,16 +1462,16 @@ namespace dvmconsole
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SystemStatusBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) => ChannelBox_MouseLeftButtonDown(sender, e);
private void SystemStatusBox_MouseRightButtonDown(object sender, MouseButtonEventArgs e) => ChannelBox_MouseRightButtonDown(sender, e);
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SystemStatusBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
private void SystemStatusBox_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
if (!isEditMode)
if (settingsManager.LockWidgets)
return;
if (sender is SystemStatusBox systemStatusBox)
@ -1482,7 +1480,7 @@ namespace dvmconsole
double y = Canvas.GetTop(systemStatusBox);
settingsManager.SystemStatusPositions[systemStatusBox.SystemName] = new ChannelPosition { X = x, Y = y };
ChannelBox_MouseLeftButtonUp(sender, e);
ChannelBox_MouseRightButtonUp(sender, e);
}
}
@ -1493,6 +1491,13 @@ namespace dvmconsole
/// <param name="e"></param>
private void SystemStatusBox_MouseMove(object sender, MouseEventArgs e) => ChannelBox_MouseMove(sender, e);
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AlertTone_MouseRightButtonDown(object sender, MouseButtonEventArgs e) => ChannelBox_MouseRightButtonDown(sender, e);
/// <summary>
///
/// </summary>
@ -1500,16 +1505,26 @@ namespace dvmconsole
/// <param name="e"></param>
private void AlertTone_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
if (!isEditMode) return;
if (settingsManager.LockWidgets)
return;
if (sender is AlertTone alertTone)
{
double x = Canvas.GetLeft(alertTone);
double y = Canvas.GetTop(alertTone);
settingsManager.UpdateAlertTonePosition(alertTone.AlertFilePath, x, y);
settingsManager.UpdateAlertTonePosition(alertTone.AlertFileName, x, y);
ChannelBox_MouseRightButtonUp(sender, e);
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AlertTone_MouseMove(object sender, MouseEventArgs e) => ChannelBox_MouseMove(sender, e);
/** WPF Ribbon Controls */
/// <summary>

@ -83,6 +83,11 @@ namespace dvmconsole
/// </summary>
public bool TogglePTTMode { get; set; } = true;
/// <summary>
/// Flag indicating channel and other widgets are locked in place.
/// </summary>
public bool LockWidgets { get; set; } = true;
/// <summary>
/// Flag indicating window maximized state.
/// </summary>
@ -145,6 +150,7 @@ namespace dvmconsole
AlertTonePositions = loadedSettings.AlertTonePositions ?? new Dictionary<string, ChannelPosition>();
ChannelOutputDevices = loadedSettings.ChannelOutputDevices ?? new Dictionary<string, int>();
TogglePTTMode = loadedSettings.TogglePTTMode;
LockWidgets = loadedSettings.LockWidgets;
Maximized = loadedSettings.Maximized;
DarkMode = loadedSettings.DarkMode;
WindowWidth = loadedSettings.WindowWidth;

Loading…
Cancel
Save

Powered by TurnKey Linux.