Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed InternetTest/InternetTest/Assets/DarkTheme.png
Binary file not shown.
Binary file removed InternetTest/InternetTest/Assets/LightTheme.png
Binary file not shown.
Binary file removed InternetTest/InternetTest/Assets/SystemTheme.png
Binary file not shown.
2 changes: 1 addition & 1 deletion InternetTest/InternetTest/Helpers/Context.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ namespace InternetTest.Helpers;

public static class Context
{
public static string Version => "9.0.0.2508";
public static string Version => "9.0.1.2508";

#if PORTABLE
public static string DefaultStoragePath => $@"{FileSys.CurrentDirectory}\InternetTest Pro\";
Expand Down
16 changes: 10 additions & 6 deletions InternetTest/InternetTest/Helpers/NetworkHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,22 @@ public static Network GetCurrentNetwork()

public static int GetCurrentSpeed()
{
NetworkInterface[] adapters = [.. NetworkInterface.GetAllNetworkInterfaces().OrderByDescending(x => x.GetIPStatistics().BytesReceived)];
foreach (NetworkInterface adapter in adapters)
try
{
if (adapter.OperationalStatus == OperationalStatus.Up && adapter.NetworkInterfaceType != NetworkInterfaceType.Loopback)
NetworkInterface[] adapters = [.. NetworkInterface.GetAllNetworkInterfaces().OrderByDescending(x => x.GetIPStatistics().BytesReceived)];
foreach (NetworkInterface adapter in adapters)
{
long speed = adapter.Speed;
if (speed > 0)
if (adapter.OperationalStatus == OperationalStatus.Up && adapter.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
return (int)(speed / 1_000_000); // Convert to Mbps
long speed = adapter.Speed;
if (speed > 0)
{
return (int)(speed / 1_000_000); // Convert to Mbps
}
}
}
}
catch { }
return 0; // No active network found or speed is zero
}
}
2 changes: 1 addition & 1 deletion InternetTest/InternetTest/Helpers/ThemeHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public static void ChangeTheme(Theme theme)
Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(dictionary);

MicaWPFServiceUtility.ThemeService.ChangeTheme((WindowsTheme)theme);
MicaWPFServiceUtility.ThemeService.ChangeTheme(isDark ? WindowsTheme.Dark : WindowsTheme.Light);
}

public static bool IsSystemThemeDark()
Expand Down
14 changes: 1 addition & 13 deletions InternetTest/InternetTest/InternetTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,12 @@
<UseWPF>true</UseWPF>
<ApplicationIcon>InternetTest.ico</ApplicationIcon>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Version>9.0.0.2508</Version>
<Version>9.0.1.2508</Version>
</PropertyGroup>

<ItemGroup>
<None Remove="Assets\DarkTheme.png" />
<None Remove="Assets\InternetTest.png" />
<None Remove="Assets\InternetTestD.png" />
<None Remove="Assets\LightTheme.png" />
<None Remove="Assets\SystemTheme.png" />
<None Remove="Fonts\FluentSystemIcons-Filled.ttf" />
<None Remove="Fonts\FluentSystemIcons-Regular.ttf" />
<None Remove="Fonts\Hauora-ExtraBold.ttf" />
Expand All @@ -43,21 +40,12 @@
</ItemGroup>

<ItemGroup>
<Resource Include="Assets\DarkTheme.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\InternetTest.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\InternetTestD.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\LightTheme.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\SystemTheme.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
<Resource Include="Fonts\FluentSystemIcons-Filled.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Resource>
Expand Down
14 changes: 13 additions & 1 deletion InternetTest/InternetTest/Models/Ip.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,19 @@ public static async Task<Ip> GetIp(string ip)
}
catch
{
return new();
return new()
{
Isp = Properties.Resources.Unknown,
City = Properties.Resources.Unknown,
Country = Properties.Resources.Unknown,
Lat = 0,
Lon = 0,
RegionName = Properties.Resources.Unknown,
Status = Properties.Resources.Failed,
Timezone = Properties.Resources.Unknown,
Zip = Properties.Resources.Unknown,
Query = ip
};
}
}

Expand Down
2 changes: 1 addition & 1 deletion InternetTest/InternetTest/Models/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public Settings()
MapProvider = MapProvider.OpenStreetMap;
DefaultPage = AppPages.Home;
ShowNotficationWhenUpdateAvailable = true;
CheckUpdateOnStart = true;
CheckUpdateOnStart = false;
UseHttps = true;
IsFirstRun = true;
TestSite = "https://leocorporation.dev";
Expand Down
84 changes: 57 additions & 27 deletions InternetTest/InternetTest/ViewModels/HomePageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,35 +125,14 @@ public HomePageViewModel(Settings settings, ActivityHistory history, MainViewMod
_settings = settings;
_mainViewModel = mainViewModel;

// Get status
LoadStatusCard();

// Get WiFi information
string? ssid = NetworkHelper.GetCurrentWifiSSID();
int signalQuality = ssid != null ? NetworkHelper.GetCurrentNetwork().SignalQuality : 0;
WiFiName = ssid ?? (connected ? Properties.Resources.Ethernet : Properties.Resources.NotConnectedS);
WiFiIcon = ssid != null ? GetWiFiIcon(signalQuality) : (connected ? "\uF35A" : "\uFB69");
WiFiStrengthText = $"{Properties.Resources.SignalQuality} - {(ssid != null ? signalQuality : 100)}%";

// Get IP address
LoadWiFiInfo();
LoadIpAddress();

// Network speed
Speed = $"~{NetworkHelper.GetCurrentSpeed()} Mbps";

// Load connection details
var networkInterface = NetworkInterface.GetAllNetworkInterfaces()
.Where(x => x.OperationalStatus == OperationalStatus.Up)
.OrderByDescending(x => x.GetIPStatistics().BytesReceived)
.FirstOrDefault();
if (networkInterface != null)
{
var ipProps = WindowsIpConfig.FromNetworkInterface(networkInterface);
Speed = connected ? $"~{NetworkHelper.GetCurrentSpeed()} Mbps" : Properties.Resources.Unknown;

LocalIp = ipProps?.IPv4Address ?? Properties.Resources.Unknown;
Gateway = ipProps?.IPv4Gateway ?? Properties.Resources.Unknown;
Dns = string.Join("\n", networkInterface.GetIPProperties().DnsAddresses.Select(x => x.ToString().Replace("%16", ""))) ?? Properties.Resources.Unknown;
}
LoadConnectionDetails();

// Load history
History = new(history.Activity.OrderByDescending(x => x.Date).Select(x => new HistoryItemViewModel(x)));
Expand Down Expand Up @@ -183,9 +162,35 @@ internal async void LoadStatusCard()
return;
}

connected = await Internet.IsAvailableAsync(_settings.TestSite);
StatusText = connected ? Properties.Resources.ConnectedS : Properties.Resources.NotConnectedS;
StatusColor = connected ? ThemeHelper.GetSolidColorBrush("Green") : ThemeHelper.GetSolidColorBrush("Red");
try
{
connected = await Internet.IsAvailableAsync(_settings.TestSite);
StatusText = connected ? Properties.Resources.ConnectedS : Properties.Resources.NotConnectedS;
StatusColor = connected ? ThemeHelper.GetSolidColorBrush("Green") : ThemeHelper.GetSolidColorBrush("Red");
}
catch
{
connected = false;
StatusText = connected ? Properties.Resources.ConnectedS : Properties.Resources.NotConnectedS;
StatusColor = connected ? ThemeHelper.GetSolidColorBrush("Green") : ThemeHelper.GetSolidColorBrush("Red");
}
}

private void LoadWiFiInfo()
{
try
{
string? ssid = NetworkHelper.GetCurrentWifiSSID();
int signalQuality = ssid != null ? NetworkHelper.GetCurrentNetwork().SignalQuality : 0;
WiFiName = ssid ?? (connected ? Properties.Resources.Ethernet : Properties.Resources.NotConnectedS);
WiFiIcon = ssid != null ? GetWiFiIcon(signalQuality) : (connected ? "\uF35A" : "\uFB69");
WiFiStrengthText = $"{Properties.Resources.SignalQuality} - {(ssid != null ? signalQuality : 100)}%";
}
catch
{
WiFiName = connected ? Properties.Resources.Ethernet : Properties.Resources.NotConnectedS;
WiFiStrengthText = Properties.Resources.Unknown;
}
}

private static string GetWiFiIcon(int signalQuality) => signalQuality switch
Expand All @@ -196,6 +201,31 @@ internal async void LoadStatusCard()
_ => "\uF8B3"
};

private void LoadConnectionDetails()
{
try
{
var networkInterface = NetworkInterface.GetAllNetworkInterfaces()
.Where(x => x.OperationalStatus == OperationalStatus.Up)
.OrderByDescending(x => x.GetIPStatistics().BytesReceived)
.FirstOrDefault();
if (networkInterface != null)
{
var ipProps = WindowsIpConfig.FromNetworkInterface(networkInterface);

LocalIp = ipProps?.IPv4Address ?? Properties.Resources.Unknown;
Gateway = ipProps?.IPv4Gateway ?? Properties.Resources.Unknown;
Dns = string.Join("\n", networkInterface.GetIPProperties().DnsAddresses.Select(x => x.ToString().Replace("%16", ""))) ?? Properties.Resources.Unknown;
}
}
catch
{
LocalIp = Properties.Resources.Unknown;
Gateway = Properties.Resources.Unknown;
Dns = Properties.Resources.Unknown;
}
}

void ISensitiveViewModel.ToggleConfidentialMode(bool confidentialMode)
{
ConfidentialMode = confidentialMode;
Expand Down
46 changes: 24 additions & 22 deletions InternetTest/InternetTest/ViewModels/MainViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

namespace InternetTest.ViewModels;



public class MainViewModel : ViewModelBase
{
private SidebarViewModel _sidebarViewModel;
Expand Down Expand Up @@ -164,31 +162,35 @@ public void Pin(object? obj)

private async void CheckUpdates()
{
if (!Settings.CheckUpdateOnStart) return;
if (!await Internet.IsAvailableAsync()) return;
var lastVersion = await Update.GetLastVersionAsync(Context.UpdateVersionUrl);
if (!Update.IsAvailable(Context.Version, lastVersion)) return;

var notify = new TaskbarIcon()
{
Icon = System.Drawing.Icon.ExtractAssociatedIcon(AppDomain.CurrentDomain.BaseDirectory + @"\InternetTest.exe"),
ToolTipText = "InternetTest",
};
notify.TrayBalloonTipClosed += (s, e) => { notify.Dispose(); };
notify.TrayBalloonTipClicked += (s, e) =>
try
{
if (!Settings.CheckUpdateOnStart) return;
if (!await Internet.IsAvailableAsync()) return;
var lastVersion = await Update.GetLastVersionAsync(Context.UpdateVersionUrl);
if (!Update.IsAvailable(Context.Version, lastVersion)) return;

var notify = new TaskbarIcon()
{
Icon = System.Drawing.Icon.ExtractAssociatedIcon(AppDomain.CurrentDomain.BaseDirectory + @"\InternetTest.exe"),
ToolTipText = "InternetTest",
};
notify.TrayBalloonTipClosed += (s, e) => { notify.Dispose(); };
notify.TrayBalloonTipClicked += (s, e) =>
{
#if PORTABLE
MessageBox.Show(Properties.Resources.PortableNoAutoUpdates, $"{Properties.Resources.InstallVersion} {lastVersion}", MessageBoxButton.OK, MessageBoxImage.Information);
return;
#else
if (MessageBox.Show(Properties.Resources.InstallConfirmMsg, $"{Properties.Resources.InstallVersion} {lastVersion}", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes)
{
Sys.ExecuteAsAdmin(Directory.GetCurrentDirectory() + @"\Xalyus Updater.exe"); // Start the updater
Application.Current.Shutdown(); // Close
}
if (MessageBox.Show(Properties.Resources.InstallConfirmMsg, $"{Properties.Resources.InstallVersion} {lastVersion}", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes)
{
Sys.ExecuteAsAdmin(Directory.GetCurrentDirectory() + @"\Xalyus Updater.exe"); // Start the updater
Application.Current.Shutdown(); // Close
}
#endif
notify.Dispose();
};
notify.ShowBalloonTip(Properties.Resources.Updates, Properties.Resources.AvailableUpdates, BalloonIcon.Info);
notify.Dispose();
};
notify.ShowBalloonTip(Properties.Resources.Updates, Properties.Resources.AvailableUpdates, BalloonIcon.Info);
}
catch { }
}
}
Loading