-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainWindow.xaml
133 lines (117 loc) · 6.85 KB
/
MainWindow.xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<Window x:Class="PC2MQTT.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tb="http://www.hardcodet.net/taskbar"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PC2MQTT"
mc:Ignorable="d"
Title="PC2MQTT" Height="580" Width="850"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesign.Brush.Foreground}"
Background="{DynamicResource MaterialDesign.Brush.Background}"
TextElement.FontWeight="Regular"
TextElement.FontSize="12"
FontFamily="{materialDesign:MaterialDesignFont}"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<!-- Additional row for the status bar -->
</Grid.RowDefinitions>
<!-- MQTT Settings Section -->
<GroupBox Grid.Row="0" Header="MQTT Settings" Margin="5">
<Grid Margin="5">
<!-- Define columns for the outer grid -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Define rows for the outer grid -->
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<!-- Row for the inner grid containing text boxes -->
<RowDefinition Height="Auto"/>
<!-- Row for the checkboxes -->
<RowDefinition Height="Auto"/>
<!-- Row for buttons -->
</Grid.RowDefinitions>
<!-- Inner grid for text boxes -->
<Grid Grid.Row="0" Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<!-- Ensure there is a row for each text field -->
</Grid.RowDefinitions>
<TextBlock Text="Host:" VerticalAlignment="Center"/>
<TextBox Grid.Row="0" Grid.Column="1" Margin="5" x:Name="MqttAddress"/>
<TextBlock Grid.Row="1" Text="Port:" VerticalAlignment="Center"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="5" x:Name="MqttPort"/>
<TextBlock Grid.Row="2" Text="Username:" VerticalAlignment="Center"/>
<TextBox Grid.Row="2" Grid.Column="1" Margin="5" x:Name="MqttUserNameBox"/>
<TextBlock Grid.Row="3" Text="Password:" VerticalAlignment="Center"/>
<PasswordBox Grid.Row="3" Grid.Column="1" Margin="5" x:Name="MQTTPasswordBox" Style="{DynamicResource MaterialDesignFloatingHintRevealPasswordBox}"/>
<TextBlock Grid.Row="4" Text="Sensor Prefix:" VerticalAlignment="Center"/>
<TextBox Grid.Row="4" Grid.Column="1" Margin="5" x:Name="SensorPrefixBox"/>
</Grid>
<!-- Checkboxes -->
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="5" HorizontalAlignment="Left">
<CheckBox Margin="5,0" Content="Use TLS" x:Name="UseTLS"/>
<CheckBox Margin="5,0" Content="Use WebSockets" x:Name="Websockets"/>
<CheckBox Margin="5,0" Content="Ignore Certificate Errors" x:Name="IgnoreCert"/>
<CheckBox Margin="5,0" Content="Run at Windows Boot" x:Name="RunAtWindowsBootCheckBox"/>
<CheckBox Margin="5,0" Content="Run Minimised" x:Name="RunMinimisedCheckBox"/>
<CheckBox Margin="5,0" Content="Confirm Power Actions?" x:Name="SafePowerCheckBox" />
</StackPanel>
<!-- Buttons -->
<Grid Grid.Row="2" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Click="SaveSettings_Click" Content="Save Settings" Margin="5" x:Name="SaveSettingsButton"/>
<Button Grid.Column="1" Click="ToggleThemeButton_Click" Content="Toggle Theme" Margin="5" x:Name="ToggelThemeButton"/>
<Button Grid.Column="2" Click="LogsButton_Click" Content="Show Logs" Margin="5" x:Name="LogsButton"/>
<Button Grid.Column="3" Click="AboutMenuItem_Click" Content="About" Margin="5" x:Name="AboutButton"/>
</Grid>
</Grid>
</GroupBox>
<!-- PC Metrics Section -->
<GroupBox Grid.Row="1" Header="PC Metrics" Margin="5">
<StackPanel Margin="5">
<TextBlock Text="CPU Usage:"/>
<Grid>
<ProgressBar Height="20" Value="{Binding CpuUsage}" Margin="5" Name="CpuProgressBar"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{Binding CpuUsage, StringFormat={}{0:F2}%}" />
</Grid>
<TextBlock Text="RAM Usage:"/>
<Grid>
<ProgressBar Height="20" Value="{Binding UsedMemoryPercentage}" Margin="5" Name="MemoryProgressBar" Maximum="100"/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding UsedMemoryPercentage, StringFormat={}{0:F2}%}" />
</Grid>
<!-- Add additional metrics as needed -->
</StackPanel>
</GroupBox>
<!-- Status Section -->
<StatusBar Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5">
<StatusBarItem>
<TextBlock x:Name="MQTTConnectionStatus" Text="Initialising"/>
</StatusBarItem>
</StatusBar>
<tb:TaskbarIcon x:Name="MyNotifyIcon" TrayMouseDoubleClick="MyNotifyIcon_Click" Visibility="Visible"/>
</Grid>
</Window>