From c71aa5fea8253ee64476cd50c525a8077cfedcb5 Mon Sep 17 00:00:00 2001 From: Tongg Date: Tue, 24 Dec 2024 11:33:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E9=A1=B5=E3=80=81?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=A1=A8=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Language/zh_CN.xaml | 10 ++ LoginWindow.xaml | 146 ++++++++++++++++++++++++++++ LoginWindow.xaml.cs | 31 ++++++ MainWindow.xaml.cs | 6 +- Model/Helper/RegistryHelper.cs | 81 +++++++++++++++ Resource/Images/UIResource/08-2.png | Bin 0 -> 1611 bytes Resource/Images/UIResource/08-3.png | Bin 0 -> 1509 bytes Resource/Images/UIResource/08-4.png | Bin 0 -> 1761 bytes Resource/Images/UIResource/08-5.jpg | Bin 0 -> 1789 bytes SparkClient.csproj | 8 ++ 10 files changed, 280 insertions(+), 2 deletions(-) create mode 100644 LoginWindow.xaml create mode 100644 LoginWindow.xaml.cs create mode 100644 Model/Helper/RegistryHelper.cs create mode 100644 Resource/Images/UIResource/08-2.png create mode 100644 Resource/Images/UIResource/08-3.png create mode 100644 Resource/Images/UIResource/08-4.png create mode 100644 Resource/Images/UIResource/08-5.jpg diff --git a/Language/zh_CN.xaml b/Language/zh_CN.xaml index 42ce5e4..7c58419 100644 --- a/Language/zh_CN.xaml +++ b/Language/zh_CN.xaml @@ -162,4 +162,14 @@ 保存成功 保存失败 选择路径 + + + 星辉钻石检测系统 + 账号 + 密码 + 记住密码 + 登 录 + 退 出 系 统 + 如果忘记密码,请联系我们 + \ No newline at end of file diff --git a/LoginWindow.xaml b/LoginWindow.xaml new file mode 100644 index 0000000..8bc5b38 --- /dev/null +++ b/LoginWindow.xaml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LoginWindow.xaml.cs b/LoginWindow.xaml.cs new file mode 100644 index 0000000..fe20ed1 --- /dev/null +++ b/LoginWindow.xaml.cs @@ -0,0 +1,31 @@ +using System.Windows; +using System.Windows.Input; + +namespace SparkClient; + +public partial class LoginWindow : Window +{ + public LoginWindow() + { + InitializeComponent(); + WindowStartupLocation = WindowStartupLocation.CenterScreen; + } + private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + if (e.ButtonState == MouseButtonState.Pressed) + { + this.DragMove(); + } + } + + private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + AccountTextBox.Text = string.Empty; + } + + private void CloseButton_OnClick(object sender, RoutedEventArgs e) + { + this.Close(); + Environment.Exit(0); + } +} \ No newline at end of file diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index a356a83..43de02f 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -13,6 +13,7 @@ using SparkClient.Model.Helper; using SparkClient.ViewModel; using SparkClient.ViewModel.BaseWindow; using SparkClient.Views.BaseWindow; +using MessageBox = SparkClient.Views.Dialog.MessageBox; using Window = System.Windows.Window; namespace SparkClient; @@ -138,9 +139,10 @@ public partial class MainWindow var message = MultilingualHelper.getString("ExitAsk"); var title = MultilingualHelper.getString("ExitAskTitle"); - MessageBoxResult result = HandyControl.Controls.MessageBox.Show( message, title, MessageBoxButton.YesNo, MessageBoxImage.Question ); + // MessageBoxResult result = HandyControl.Controls.MessageBox.Show( message, title, MessageBoxButton.YesNo, MessageBoxImage.Question ); + MessageBoxResult result = new MessageBox().ShowAsk(message); - if (result == MessageBoxResult.Yes) + if (result == MessageBoxResult.OK) { DataBaseHelper.CloseConnection(); // this.Close(); diff --git a/Model/Helper/RegistryHelper.cs b/Model/Helper/RegistryHelper.cs new file mode 100644 index 0000000..116231a --- /dev/null +++ b/Model/Helper/RegistryHelper.cs @@ -0,0 +1,81 @@ +using Microsoft.Win32; + +namespace SparkClient.Model.Helper; + +public static class RegistryHelper +{ + private const string BaseRegistryKey = @"SOFTWARE\Dayu\Spark"; + /// + /// 向注册表写入字符串类型值 + /// + /// 存储的键名 + /// 要写入的字符串值 + public static void WriteString(string keyName, string value) + { + using (var key = Registry.CurrentUser.CreateSubKey(BaseRegistryKey)) + { + key?.SetValue(keyName, value, RegistryValueKind.String); + } + } + + /// + /// 从注册表读取字符串类型值 + /// + /// 存储的键名 + /// 读取到的字符串值,若不存在则返回 null + public static string ReadString(string keyName) + { + using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey)) + { + if (key == null) return null; + return key.GetValue(keyName) as string; + } + } + + /// + /// 向注册表写入布尔类型值(以 0/1 方式) + /// + public static void WriteBool(string keyName, bool value) + { + using (var key = Registry.CurrentUser.CreateSubKey(BaseRegistryKey)) + { + key?.SetValue(keyName, value ? 1 : 0, RegistryValueKind.DWord); + } + } + + /// + /// 从注册表读取布尔类型值(从 0/1 转换) + /// + public static bool ReadBool(string keyName, bool defaultValue = false) + { + using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey)) + { + if (key == null) return defaultValue; + object regValue = key.GetValue(keyName); + if (regValue == null) return defaultValue; + + int intVal; + if (int.TryParse(regValue.ToString(), out intVal)) + { + return intVal != 0; // 1->true, 0->false + } + return defaultValue; + } + } + + /// + /// 删除某个键值 + /// + /// 要删除的键名 + public static void DeleteKey(string keyName) + { + using (var key = Registry.CurrentUser.OpenSubKey(BaseRegistryKey, writable: true)) + { + if (key != null) + { + key.DeleteValue(keyName, throwOnMissingValue: false); + } + } + } + +} \ No newline at end of file diff --git a/Resource/Images/UIResource/08-2.png b/Resource/Images/UIResource/08-2.png new file mode 100644 index 0000000000000000000000000000000000000000..29f59f3406fc6988c0d79c90ccfaf96df18db2ef GIT binary patch literal 1611 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 literal 0 HcmV?d00001 diff --git a/Resource/Images/UIResource/08-5.jpg b/Resource/Images/UIResource/08-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1345d0b95012f5b07455d017f06a3839b9a798bf GIT binary patch literal 1789 zcma)63rrJt82?|3r4R)=QG85u6dho=UhjH++|BZk(hL8?P*WW?;tUGn|E@B4kP z|M&gXS;59> z7{P&hX%~uVv?!RH;&stXDd&N0+$!E_RzEs+LJjk*SzVyd(q_5Rxf1@hDv`^rT9n6B zl`~)km-IUj?9&}Dgd_at<;XxBmsac&Chzb{GWy9%$$ibur zLl~_VhmEAhW@HQm!`R6r7}w$isx_jR0l{!eM^ah>9wxOEP-N{?j>S40PCA*@!*x|w zR%$AB8bMrzVkAkTS{%i3M6y8KKBtHFB2IT)(1V3@Ga~Qu@PZQ#c%*GYxyP)Qk{znT z;mXPyaXeLgTa@lTL)uU<~>h3$NAb zbcBvD&dVT87?xorwK~FTBK5e=V$fqcOAwpsbbDwg!v$mWQtV-@;e}W#UF2wwAm#}| zS#S`tO9YSLE)iTXPG~SVp@4U?LZv$~a7RNWTR4%g;8?3DIN-r1Q~VeS7)b+35(XP$ zA{iRNSb{)k4(AX?kKr~gP3TFJRQwR0eXe;!b1F%sB3!{-D5HU)3DU?RdV@4QoQbd@ zBx9rz9cy9@HiE!O&aOtK6w$!kJU2%{ku;nEc4RT6!^moJPHCS+X>t4mAYyPG0DDqe zP{@A`)B@=LlWdgaBQy+`L6D@C{t?ChW&9_BN(m-`>2gQ~WGYCmg8XMd*OU_0 zSHXBWB!!l%Kni$RooHELSvkG+ol6cg`3=q}?5*^vn$~US5|wq;`Ss0T_guX@%~QMldgrvr+v3H^ zMcWifkHUy;;*!lR2V_WdtY*)w#*n6v%i|hkGTXk~l1aTahm3`t=x2uey9>`3`7+~) zrh65>>udY+PxGctiVX|e>>WNu^PbH$AAUo<{&tirJ~6ekyLe4x@ss-G#~`*0sC8#<37^>6)v1? z71-T{pD!a%rS_cezbb31>rXpn(Y`zX`^2KCSMuvmK027t)*Vy4{pON)wkB + + + + + + + +