parent
3bb92a0b24
commit
883d87779a
@ -0,0 +1,99 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Controls.Primitives; |
||||||
|
|
||||||
|
namespace smx_config |
||||||
|
{ |
||||||
|
public class SensorSelectionButton: ToggleButton |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
// A control with one button for each of four sensors: |
||||||
|
class SensorSelector: Control |
||||||
|
{ |
||||||
|
// The panel we're editing (0-8). |
||||||
|
public static readonly DependencyProperty PanelProperty = DependencyProperty.RegisterAttached("Panel", |
||||||
|
typeof(int), typeof(SensorSelector), new FrameworkPropertyMetadata(0)); |
||||||
|
|
||||||
|
public int Panel { |
||||||
|
get { return (int) this.GetValue(PanelProperty); } |
||||||
|
set { this.SetValue(PanelProperty, value); } |
||||||
|
} |
||||||
|
|
||||||
|
ToggleButton[] SensorSelectionButtons = new ToggleButton[4]; |
||||||
|
public override void OnApplyTemplate() |
||||||
|
{ |
||||||
|
base.OnApplyTemplate(); |
||||||
|
|
||||||
|
for(int sensor = 0; sensor < 4; ++sensor) |
||||||
|
{ |
||||||
|
int ThisSensor = sensor; // bind |
||||||
|
SensorSelectionButtons[sensor] = GetTemplateChild("Sensor" + sensor) as ToggleButton; |
||||||
|
SensorSelectionButtons[sensor].Click += delegate(object sender, RoutedEventArgs e) |
||||||
|
{ |
||||||
|
ClickedSensorButton(ThisSensor); |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
// These settings are stored in the application settings, not on the pad. However, |
||||||
|
// we treat changes to this as config changes, so we can use the same OnConfigChange |
||||||
|
// method for updating. |
||||||
|
OnConfigChange onConfigChange; |
||||||
|
onConfigChange = new OnConfigChange(this, delegate(LoadFromConfigDelegateArgs args) { |
||||||
|
LoadUIFromConfig(args); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void ClickedSensorButton(int sensor) |
||||||
|
{ |
||||||
|
// Toggle the clicked sensor. |
||||||
|
Console.WriteLine("Clicked sensor " + sensor); |
||||||
|
List<ThresholdSettings.PanelAndSensor> auxSensors = ThresholdSettings.GetAuxSensors(); |
||||||
|
bool enabled = !IsSensorEnabled(auxSensors, sensor); |
||||||
|
|
||||||
|
if(enabled) |
||||||
|
auxSensors.Add(new ThresholdSettings.PanelAndSensor(Panel, sensor)); |
||||||
|
else |
||||||
|
auxSensors.Remove(new ThresholdSettings.PanelAndSensor(Panel, sensor)); |
||||||
|
ThresholdSettings.SetAuxSensors(auxSensors); |
||||||
|
|
||||||
|
CurrentSMXDevice.singleton.FireConfigurationChanged(this); |
||||||
|
} |
||||||
|
|
||||||
|
// Return true if the given sensor is marked as an aux sensor. |
||||||
|
bool IsSensorEnabled(List<ThresholdSettings.PanelAndSensor> auxSensors, int sensor) |
||||||
|
{ |
||||||
|
foreach(ThresholdSettings.PanelAndSensor panelAndSensor in auxSensors) |
||||||
|
{ |
||||||
|
if(panelAndSensor.panel == Panel && panelAndSensor.sensor == sensor) |
||||||
|
return true; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private void LoadUIFromConfig(LoadFromConfigDelegateArgs args) |
||||||
|
{ |
||||||
|
// Check the selected aux sensors. |
||||||
|
List<ThresholdSettings.PanelAndSensor> auxSensors = ThresholdSettings.GetAuxSensors(); |
||||||
|
for(int sensor = 0; sensor < 4; ++sensor) |
||||||
|
SensorSelectionButtons[sensor].IsChecked = IsSensorEnabled(auxSensors, sensor); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// This dialog sets which sensors are controlled by the auxilliary threshold. The actual |
||||||
|
// work is done by SensorSelector above. |
||||||
|
public partial class SetAuxSensors: Window |
||||||
|
{ |
||||||
|
public SetAuxSensors() |
||||||
|
{ |
||||||
|
InitializeComponent(); |
||||||
|
} |
||||||
|
|
||||||
|
private void OK_Click(object sender, RoutedEventArgs e) |
||||||
|
{ |
||||||
|
Close(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue