diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs index 1d84ebb..c79d2c2 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs @@ -64,6 +64,10 @@ this.labelTitleBuzzerONTime = new SmartX.SmartLabel(); this.comboBoxLanguage = new System.Windows.Forms.ComboBox(); this.labelTitleLanguage = new SmartX.SmartLabel(); + this.smartLabel2 = new SmartX.SmartLabel(); + this.labelFileCount1 = new SmartX.SmartLabel(); + this.buttonBackupDataList = new SmartX.SmartButton(); + this.listBoxDataList = new System.Windows.Forms.ListBox(); this.smartGroupBox1.SuspendLayout(); this.smartGroupBox2.SuspendLayout(); this.SuspendLayout(); @@ -73,6 +77,10 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.smartLabel2); + this.smartGroupBox1.Controls.Add(this.labelFileCount1); + this.smartGroupBox1.Controls.Add(this.buttonBackupDataList); + this.smartGroupBox1.Controls.Add(this.listBoxDataList); this.smartGroupBox1.Controls.Add(this.labelTitleCommunicationLog); this.smartGroupBox1.Controls.Add(this.buttonCommunicationLog); this.smartGroupBox1.Controls.Add(this.labelTitleExternalInput); @@ -124,9 +132,9 @@ this.labelTitleCommunicationLog.ForeColor = System.Drawing.Color.White; this.labelTitleCommunicationLog.InitVisible = true; this.labelTitleCommunicationLog.LineSpacing = 0F; - this.labelTitleCommunicationLog.Location = new System.Drawing.Point(473, 429); + this.labelTitleCommunicationLog.Location = new System.Drawing.Point(389, 254); this.labelTitleCommunicationLog.Name = "labelTitleCommunicationLog"; - this.labelTitleCommunicationLog.Size = new System.Drawing.Size(100, 30); + this.labelTitleCommunicationLog.Size = new System.Drawing.Size(219, 28); this.labelTitleCommunicationLog.TabIndex = 194; this.labelTitleCommunicationLog.Text = "통신로그"; this.labelTitleCommunicationLog.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -145,7 +153,7 @@ this.buttonCommunicationLog.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonCommunicationLog.DownImage"))); this.buttonCommunicationLog.GroupID = 0; this.buttonCommunicationLog.InitVisible = true; - this.buttonCommunicationLog.Location = new System.Drawing.Point(579, 429); + this.buttonCommunicationLog.Location = new System.Drawing.Point(614, 254); this.buttonCommunicationLog.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonCommunicationLog.Name = "buttonCommunicationLog"; this.buttonCommunicationLog.NestedClickEventPrevent = false; @@ -210,7 +218,7 @@ this.buttonCapture.DownImage = null; this.buttonCapture.GroupID = 0; this.buttonCapture.InitVisible = true; - this.buttonCapture.Location = new System.Drawing.Point(579, 395); + this.buttonCapture.Location = new System.Drawing.Point(389, 288); this.buttonCapture.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonCapture.Name = "buttonCapture"; this.buttonCapture.NestedClickEventPrevent = false; @@ -547,7 +555,7 @@ this.labelTitleLogin.ForeColor = System.Drawing.Color.White; this.labelTitleLogin.InitVisible = true; this.labelTitleLogin.LineSpacing = 0F; - this.labelTitleLogin.Location = new System.Drawing.Point(343, 295); + this.labelTitleLogin.Location = new System.Drawing.Point(15, 392); this.labelTitleLogin.Name = "labelTitleLogin"; this.labelTitleLogin.Size = new System.Drawing.Size(230, 28); this.labelTitleLogin.TabIndex = 135; @@ -568,7 +576,7 @@ this.buttonLogin.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLogin.DownImage"))); this.buttonLogin.GroupID = 0; this.buttonLogin.InitVisible = true; - this.buttonLogin.Location = new System.Drawing.Point(579, 295); + this.buttonLogin.Location = new System.Drawing.Point(251, 392); this.buttonLogin.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonLogin.Name = "buttonLogin"; this.buttonLogin.NestedClickEventPrevent = false; @@ -598,7 +606,7 @@ this.labelEquipmentID.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelEquipmentID.InitVisible = true; this.labelEquipmentID.LineSpacing = 0F; - this.labelEquipmentID.Location = new System.Drawing.Point(251, 261); + this.labelEquipmentID.Location = new System.Drawing.Point(251, 254); this.labelEquipmentID.Name = "labelEquipmentID"; this.labelEquipmentID.Size = new System.Drawing.Size(80, 28); this.labelEquipmentID.TabIndex = 133; @@ -618,7 +626,7 @@ this.labelTitleEquipmentID.ForeColor = System.Drawing.Color.White; this.labelTitleEquipmentID.InitVisible = true; this.labelTitleEquipmentID.LineSpacing = 0F; - this.labelTitleEquipmentID.Location = new System.Drawing.Point(15, 261); + this.labelTitleEquipmentID.Location = new System.Drawing.Point(15, 254); this.labelTitleEquipmentID.Name = "labelTitleEquipmentID"; this.labelTitleEquipmentID.Size = new System.Drawing.Size(230, 28); this.labelTitleEquipmentID.TabIndex = 132; @@ -638,7 +646,7 @@ this.labelChattering.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelChattering.InitVisible = true; this.labelChattering.LineSpacing = 0F; - this.labelChattering.Location = new System.Drawing.Point(251, 329); + this.labelChattering.Location = new System.Drawing.Point(251, 322); this.labelChattering.Name = "labelChattering"; this.labelChattering.Size = new System.Drawing.Size(80, 28); this.labelChattering.TabIndex = 129; @@ -659,7 +667,7 @@ this.labelRelayOnTime.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelRelayOnTime.InitVisible = true; this.labelRelayOnTime.LineSpacing = 0F; - this.labelRelayOnTime.Location = new System.Drawing.Point(251, 363); + this.labelRelayOnTime.Location = new System.Drawing.Point(251, 356); this.labelRelayOnTime.Name = "labelRelayOnTime"; this.labelRelayOnTime.Size = new System.Drawing.Size(80, 28); this.labelRelayOnTime.TabIndex = 130; @@ -680,7 +688,7 @@ this.labelBuzzerOnTime.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelBuzzerOnTime.InitVisible = true; this.labelBuzzerOnTime.LineSpacing = 0F; - this.labelBuzzerOnTime.Location = new System.Drawing.Point(251, 295); + this.labelBuzzerOnTime.Location = new System.Drawing.Point(251, 288); this.labelBuzzerOnTime.Name = "labelBuzzerOnTime"; this.labelBuzzerOnTime.Size = new System.Drawing.Size(80, 28); this.labelBuzzerOnTime.TabIndex = 131; @@ -700,7 +708,7 @@ this.labelTitleChattering.ForeColor = System.Drawing.Color.White; this.labelTitleChattering.InitVisible = true; this.labelTitleChattering.LineSpacing = 0F; - this.labelTitleChattering.Location = new System.Drawing.Point(15, 329); + this.labelTitleChattering.Location = new System.Drawing.Point(15, 322); this.labelTitleChattering.Name = "labelTitleChattering"; this.labelTitleChattering.Size = new System.Drawing.Size(230, 28); this.labelTitleChattering.TabIndex = 127; @@ -719,7 +727,7 @@ this.labelTitleRelayRunTime.ForeColor = System.Drawing.Color.White; this.labelTitleRelayRunTime.InitVisible = true; this.labelTitleRelayRunTime.LineSpacing = 0F; - this.labelTitleRelayRunTime.Location = new System.Drawing.Point(15, 363); + this.labelTitleRelayRunTime.Location = new System.Drawing.Point(15, 356); this.labelTitleRelayRunTime.Name = "labelTitleRelayRunTime"; this.labelTitleRelayRunTime.Size = new System.Drawing.Size(230, 28); this.labelTitleRelayRunTime.TabIndex = 126; @@ -738,7 +746,7 @@ this.labelTitleBuzzerONTime.ForeColor = System.Drawing.Color.White; this.labelTitleBuzzerONTime.InitVisible = true; this.labelTitleBuzzerONTime.LineSpacing = 0F; - this.labelTitleBuzzerONTime.Location = new System.Drawing.Point(15, 295); + this.labelTitleBuzzerONTime.Location = new System.Drawing.Point(15, 288); this.labelTitleBuzzerONTime.Name = "labelTitleBuzzerONTime"; this.labelTitleBuzzerONTime.Size = new System.Drawing.Size(230, 28); this.labelTitleBuzzerONTime.TabIndex = 128; @@ -750,7 +758,7 @@ // comboBoxLanguage // this.comboBoxLanguage.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); - this.comboBoxLanguage.Location = new System.Drawing.Point(579, 261); + this.comboBoxLanguage.Location = new System.Drawing.Point(251, 426); this.comboBoxLanguage.Name = "comboBoxLanguage"; this.comboBoxLanguage.Size = new System.Drawing.Size(120, 28); this.comboBoxLanguage.TabIndex = 120; @@ -766,7 +774,7 @@ this.labelTitleLanguage.ForeColor = System.Drawing.Color.White; this.labelTitleLanguage.InitVisible = true; this.labelTitleLanguage.LineSpacing = 0F; - this.labelTitleLanguage.Location = new System.Drawing.Point(343, 261); + this.labelTitleLanguage.Location = new System.Drawing.Point(15, 426); this.labelTitleLanguage.Name = "labelTitleLanguage"; this.labelTitleLanguage.Size = new System.Drawing.Size(230, 28); this.labelTitleLanguage.TabIndex = 117; @@ -775,6 +783,84 @@ this.labelTitleLanguage.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleLanguage.Wordwrap = false; // + // smartLabel2 + // + this.smartLabel2.BackPictureBox1 = null; + this.smartLabel2.BackPictureBox2 = this.smartGroupBox1; + this.smartLabel2.BorderColor = System.Drawing.Color.Black; + this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel2.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.smartLabel2.ForeColor = System.Drawing.Color.White; + this.smartLabel2.InitVisible = true; + this.smartLabel2.LineSpacing = 0F; + this.smartLabel2.Location = new System.Drawing.Point(573, 288); + this.smartLabel2.Name = "smartLabel2"; + this.smartLabel2.Size = new System.Drawing.Size(35, 28); + this.smartLabel2.TabIndex = 244; + this.smartLabel2.Text = "ea"; + this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel2.Wordwrap = false; + // + // labelFileCount1 + // + this.labelFileCount1.BackPictureBox1 = null; + this.labelFileCount1.BackPictureBox2 = this.smartGroupBox1; + this.labelFileCount1.BorderColor = System.Drawing.Color.Black; + this.labelFileCount1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelFileCount1.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelFileCount1.ForeColor = System.Drawing.Color.White; + this.labelFileCount1.InitVisible = true; + this.labelFileCount1.LineSpacing = 0F; + this.labelFileCount1.Location = new System.Drawing.Point(475, 288); + this.labelFileCount1.Name = "labelFileCount1"; + this.labelFileCount1.Size = new System.Drawing.Size(92, 28); + this.labelFileCount1.TabIndex = 243; + this.labelFileCount1.Text = "0"; + this.labelFileCount1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelFileCount1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelFileCount1.Wordwrap = false; + // + // buttonBackupDataList + // + this.buttonBackupDataList.BackPictureBox = null; + this.buttonBackupDataList.BackPictureBox1 = null; + this.buttonBackupDataList.BackPictureBox2 = null; + this.buttonBackupDataList.ButtonColor = System.Drawing.Color.Gray; + this.buttonBackupDataList.ButtonImageAutoSize = true; + this.buttonBackupDataList.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonBackupDataList.DisableImage = null; + this.buttonBackupDataList.DownImage = null; + this.buttonBackupDataList.GroupID = 0; + this.buttonBackupDataList.InitVisible = true; + this.buttonBackupDataList.Location = new System.Drawing.Point(614, 288); + this.buttonBackupDataList.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonBackupDataList.Name = "buttonBackupDataList"; + this.buttonBackupDataList.NestedClickEventPrevent = false; + this.buttonBackupDataList.OutlinePixel = 1; + this.buttonBackupDataList.RepeatInterval = 200; + this.buttonBackupDataList.RepeatIntervalAccelerate = null; + this.buttonBackupDataList.SafeInterval = 200; + this.buttonBackupDataList.Size = new System.Drawing.Size(80, 28); + this.buttonBackupDataList.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonBackupDataList.TabIndex = 242; + this.buttonBackupDataList.Text = "Backup"; + this.buttonBackupDataList.TextColor = System.Drawing.Color.Black; + this.buttonBackupDataList.TextDownColor = System.Drawing.Color.White; + this.buttonBackupDataList.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonBackupDataList.TextLocation = new System.Drawing.Point(0, 0); + this.buttonBackupDataList.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonBackupDataList.UpImage = null; + this.buttonBackupDataList.Click += new System.EventHandler(this.buttonBackupDataList_Click); + // + // listBoxDataList + // + this.listBoxDataList.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Regular); + this.listBoxDataList.Location = new System.Drawing.Point(389, 322); + this.listBoxDataList.Name = "listBoxDataList"; + this.listBoxDataList.Size = new System.Drawing.Size(305, 122); + this.listBoxDataList.TabIndex = 241; + // // ControlCenterEquipFunctionSetting // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -825,5 +911,9 @@ private SmartX.SmartLabel labelTitleExternalInput; private SmartX.SmartLabel labelTitleCommunicationLog; private SmartX.SmartButton buttonCommunicationLog; + private SmartX.SmartLabel smartLabel2; + private SmartX.SmartLabel labelFileCount1; + private SmartX.SmartButton buttonBackupDataList; + private System.Windows.Forms.ListBox listBoxDataList; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs index ea28fbf..c3771d6 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs @@ -16,6 +16,7 @@ using ITC81DB_2H_ImageDll; using System.Threading; using ITC81DB_2H.Datastore; using ITC81DB_0H.Part11_UserManager; +using System.IO; namespace ITC81DB_0H.Controls { @@ -23,6 +24,7 @@ namespace ITC81DB_0H.Controls { #region Field private FormMenu m_ParentForm; + private int FileIndex; #endregion #region Constructor @@ -492,8 +494,54 @@ namespace ITC81DB_0H.Controls //this.comboBoxLanguage.Items.Add("中文"); //this.comboBoxLanguage.Items.Add("русский"); this.comboBoxLanguage.SelectedIndexChanged += new EventHandler(this.comboBoxLanguage_SelectedIndexChanged); + + this.FileIndex = 0; } + private void FileCopy(FileInfo file, string fileName) + { + try + { + if (this.FileIndex == 0) + { + file.CopyTo(fileName); + this.FileIndex = 0; + } + else + { + file.CopyTo(fileName.Insert(fileName.Length - 4, "_" + this.FileIndex.ToString())); + this.FileIndex = 0; + } + } + catch + { + this.FileIndex++; + this.FileCopy(file, fileName); + } + } + + private void UpdateListBox() + { + bool directoryCheck = false; + DirectoryInfo dir = new DirectoryInfo(this.ParentForm.ParentForm.PathDataLogFolder); + + directoryCheck = dir.Exists; + // 폴더 체크 + if (directoryCheck == false) + dir.Create(); + + FileInfo[] files = dir.GetFiles(); + + this.listBoxDataList.Items.Clear(); + + foreach (FileInfo file in files) + { + if (file.Name.EndsWith(".txt") == true || file.Name.EndsWith(".jpg") == true) + this.listBoxDataList.Items.Add(file.Name); + } + + this.labelFileCount1.Text = this.listBoxDataList.Items.Count.ToString(); + } public void DisplayHiddenMenu(bool bValue) { this.buttonCapture.Visible = bValue; @@ -607,6 +655,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SetDisplayMode(Define.E_DisplayMode.Menu); this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus); + this.UpdateListBox(); this.UpdateParameterDisplay(this.ParentForm.ParentForm.SystemConfig1, this.ParentForm.ParentForm.SystemConfig2, this.ParentForm.ParentForm.CurrentSystemParameter1); this.UpdateDisplayUser(status.CurrentUser); @@ -990,11 +1039,10 @@ namespace ITC81DB_0H.Controls private void buttonCapture_Click(object sender, EventArgs e) { string filePath = ""; - Bitmap bitMap = new Bitmap(800, 480); + Bitmap bitMap = new Bitmap(800, 600); bitMap = IntechGraphics.CopyFromScreen(); - filePath = string.Format("{0}{1}_EquipmentSetting.jpg", - this.ParentForm.ParentForm.PathDataBackupFolder, this.ParentForm.ParentForm.SystemConfig1.SerialNumber); + filePath = string.Format("{0}\\{1}_EquipmentSetting.jpg", this.ParentForm.ParentForm.PathDataLogFolder, DateTime.Now.ToString("yyyyMMdd")); bitMap.Save(filePath, ImageFormat.Jpeg); } @@ -1012,6 +1060,101 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.IsCommunicationLogOpen = false; } } + + private void buttonBackupDataList_Click(object sender, EventArgs e) + { + int count = 0; + bool directoryCheck = false; + string filePath = ""; + DirectoryInfo dir = new DirectoryInfo(this.ParentForm.ParentForm.PathDataLogFolder); + directoryCheck = dir.Exists; + // 폴더 체크 + if (directoryCheck == false) + dir.Create(); + + FileInfo[] checkFiles = dir.GetFiles(); + + if (this.ParentForm.ParentForm.IsCommunicationLogOpen == true) + this.ParentForm.ParentForm.smartFileCommunicationLog.Close(); + //this.ParentForm.ParentForm.smartFileCheckLog.Close(); + //this.ParentForm.ParentForm.IsErrorLogOpen = false; + + count = this.listBoxDataList.Items.Count; + if (count == 0 && checkFiles.Length == 0) + { + DialogFormMessage msg = new DialogFormMessage(4, this.ParentForm.ParentForm.SystemConfig1.Language); + msg.ShowDialog(); + return; + } + + SmartSplash splash = new SmartSplash(); + splash.CenterPosition = true; + splash.AnimationInterval = 200; + splash.LoadingImagePathname = "SmartLoading4"; + splash.Start(); + + try + { + DirectoryInfo dinfo = new DirectoryInfo("하드 디스크\\"); + dinfo.GetDirectories(); + } + catch + { + splash.Finish(); + + DialogFormMessage msg = new DialogFormMessage(5, this.ParentForm.ParentForm.SystemConfig1.Language); + msg.ShowDialog(); + return; + } + + try + { + filePath = "하드 디스크\\"; + + FileInfo[] files = dir.GetFiles(); + + foreach (FileInfo file in files) + { + if (file.Name.Contains("Exception") == false) + { + if (file.Name.EndsWith(".txt") == true || file.Name.EndsWith(".jpg") == true) + { + this.FileCopy(file, filePath + file.Name); + + this.listBoxDataList.Items.Remove(file.Name); + file.Delete(); + } + //else if (file.Name.Contains("Checklog") == true) + //{ + // this.FileCopy(file, filePath + file.Name); + + // file.Delete(); + //} + } + } + this.labelFileCount1.Text = this.listBoxDataList.Items.Count.ToString(); + + // CheckLog + //this.ParentForm.ParentForm.smartFileCheckLog.Open(); + //this.ParentForm.ParentForm.IsErrorLogOpen = true; + + splash.Finish(); + + DialogFormMessage msg = new DialogFormMessage(count.ToString(), this.ParentForm.ParentForm.SystemConfig1.Language); + msg.ShowDialog(); + + if (this.ParentForm.ParentForm.IsCommunicationLogOpen == true) + this.ParentForm.ParentForm.smartFileCommunicationLog.Open(); + } + catch + { + splash.Finish(); + + DialogFormMessage msg = new DialogFormMessage(6, this.ParentForm.ParentForm.SystemConfig1.Language); + msg.ShowDialog(); + return; + } + } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs index 4830c18..65bf099 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs @@ -30,6 +30,8 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterEquipUser)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.buttonResetPW = new SmartX.SmartButton(); + this.listBoxUserList = new System.Windows.Forms.ListBox(); this.comboBoxAccessRight = new System.Windows.Forms.ComboBox(); this.labelAccessRightAdmin = new SmartX.SmartLabel(); this.smartSeparatorLine2 = new SmartX.SmartSeparatorLine(); @@ -45,20 +47,18 @@ this.labelAutomaticLogoutTime = new SmartX.SmartLabel(); this.labelTitleAutomaticLogoutTime = new SmartX.SmartLabel(); this.labelExpiryDateOfPassword2 = new SmartX.SmartLabel(); - this.smartLabel8 = new SmartX.SmartLabel(); + this.labelTitleDayPassword = new SmartX.SmartLabel(); this.labelExpiryDateOfPassword = new SmartX.SmartLabel(); this.labelTitleExpiryDateOfPassword = new SmartX.SmartLabel(); this.labelExpiryDateOfAccount2 = new SmartX.SmartLabel(); - this.smartLabel3 = new SmartX.SmartLabel(); + this.labelTitleDayAccount = new SmartX.SmartLabel(); this.labelExpiryDateOfAccount = new SmartX.SmartLabel(); this.labelTitleExpiryDateOfAccount = new SmartX.SmartLabel(); - this.buttonPasswordEdit = new SmartX.SmartButton(); this.buttonIDEdit = new SmartX.SmartButton(); this.labelTitleID = new SmartX.SmartLabel(); this.textBoxPassword = new System.Windows.Forms.TextBox(); this.textBoxID = new System.Windows.Forms.TextBox(); this.buttonGroupEditor = new SmartX.SmartButton(); - this.listBoxUserList = new System.Windows.Forms.ListBox(); this.smartGroupBox1.SuspendLayout(); this.SuspendLayout(); // @@ -67,6 +67,7 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.Black; this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.buttonResetPW); this.smartGroupBox1.Controls.Add(this.listBoxUserList); this.smartGroupBox1.Controls.Add(this.comboBoxAccessRight); this.smartGroupBox1.Controls.Add(this.labelAccessRightAdmin); @@ -83,14 +84,13 @@ this.smartGroupBox1.Controls.Add(this.labelAutomaticLogoutTime); this.smartGroupBox1.Controls.Add(this.labelTitleAutomaticLogoutTime); this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfPassword2); - this.smartGroupBox1.Controls.Add(this.smartLabel8); + this.smartGroupBox1.Controls.Add(this.labelTitleDayPassword); this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfPassword); this.smartGroupBox1.Controls.Add(this.labelTitleExpiryDateOfPassword); this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfAccount2); - this.smartGroupBox1.Controls.Add(this.smartLabel3); + this.smartGroupBox1.Controls.Add(this.labelTitleDayAccount); this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfAccount); this.smartGroupBox1.Controls.Add(this.labelTitleExpiryDateOfAccount); - this.smartGroupBox1.Controls.Add(this.buttonPasswordEdit); this.smartGroupBox1.Controls.Add(this.buttonIDEdit); this.smartGroupBox1.Controls.Add(this.labelTitleID); this.smartGroupBox1.Controls.Add(this.textBoxPassword); @@ -110,6 +110,49 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // buttonResetPW + // + this.buttonResetPW.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonResetPW.BackPictureBox = null; + this.buttonResetPW.BackPictureBox1 = null; + this.buttonResetPW.BackPictureBox2 = null; + this.buttonResetPW.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonResetPW.ButtonImageAutoSize = true; + this.buttonResetPW.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonResetPW.DisableImage = null; + this.buttonResetPW.DownImage = null; + this.buttonResetPW.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold); + this.buttonResetPW.GroupID = 0; + this.buttonResetPW.InitVisible = true; + this.buttonResetPW.Location = new System.Drawing.Point(646, 46); + this.buttonResetPW.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonResetPW.Name = "buttonResetPW"; + this.buttonResetPW.NestedClickEventPrevent = false; + this.buttonResetPW.OutlinePixel = 1; + this.buttonResetPW.RepeatInterval = 200; + this.buttonResetPW.RepeatIntervalAccelerate = null; + this.buttonResetPW.SafeInterval = 200; + this.buttonResetPW.Size = new System.Drawing.Size(50, 26); + this.buttonResetPW.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonResetPW.TabIndex = 212; + this.buttonResetPW.Text = "Reset"; + this.buttonResetPW.TextColor = System.Drawing.Color.White; + this.buttonResetPW.TextDownColor = System.Drawing.Color.White; + this.buttonResetPW.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonResetPW.TextLocation = new System.Drawing.Point(0, 0); + this.buttonResetPW.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonResetPW.UpImage = null; + this.buttonResetPW.Click += new System.EventHandler(this.buttonResetPW_Click); + // + // listBoxUserList + // + this.listBoxUserList.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold); + this.listBoxUserList.Location = new System.Drawing.Point(14, 12); + this.listBoxUserList.Name = "listBoxUserList"; + this.listBoxUserList.Size = new System.Drawing.Size(243, 370); + this.listBoxUserList.TabIndex = 211; + this.listBoxUserList.SelectedIndexChanged += new System.EventHandler(this.listBoxUserList_SelectedIndexChanged); + // // comboBoxAccessRight // this.comboBoxAccessRight.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Regular); @@ -448,26 +491,26 @@ this.labelExpiryDateOfPassword2.Wordwrap = false; this.labelExpiryDateOfPassword2.Click += new System.EventHandler(this.labelExpiryDateOfPassword2_Click); // - // smartLabel8 + // labelTitleDayPassword // - this.smartLabel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.smartLabel8.BackPictureBox = null; - this.smartLabel8.BackPictureBox1 = null; - this.smartLabel8.BackPictureBox2 = null; - this.smartLabel8.BorderColor = System.Drawing.Color.White; - this.smartLabel8.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel8.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.smartLabel8.ForeColor = System.Drawing.Color.White; - this.smartLabel8.InitVisible = true; - this.smartLabel8.LineSpacing = 0F; - this.smartLabel8.Location = new System.Drawing.Point(454, 172); - this.smartLabel8.Name = "smartLabel8"; - this.smartLabel8.Size = new System.Drawing.Size(90, 26); - this.smartLabel8.TabIndex = 181; - this.smartLabel8.Text = "day(Max:90)"; - this.smartLabel8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.smartLabel8.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.smartLabel8.Wordwrap = false; + this.labelTitleDayPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDayPassword.BackPictureBox = null; + this.labelTitleDayPassword.BackPictureBox1 = null; + this.labelTitleDayPassword.BackPictureBox2 = null; + this.labelTitleDayPassword.BorderColor = System.Drawing.Color.White; + this.labelTitleDayPassword.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDayPassword.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDayPassword.ForeColor = System.Drawing.Color.White; + this.labelTitleDayPassword.InitVisible = true; + this.labelTitleDayPassword.LineSpacing = 0F; + this.labelTitleDayPassword.Location = new System.Drawing.Point(454, 172); + this.labelTitleDayPassword.Name = "labelTitleDayPassword"; + this.labelTitleDayPassword.Size = new System.Drawing.Size(90, 26); + this.labelTitleDayPassword.TabIndex = 181; + this.labelTitleDayPassword.Text = "day(Max:90)"; + this.labelTitleDayPassword.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDayPassword.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDayPassword.Wordwrap = false; // // labelExpiryDateOfPassword // @@ -534,26 +577,26 @@ this.labelExpiryDateOfAccount2.Wordwrap = false; this.labelExpiryDateOfAccount2.Click += new System.EventHandler(this.labelExpiryDateOfAccount2_Click); // - // smartLabel3 + // labelTitleDayAccount // - this.smartLabel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.smartLabel3.BackPictureBox = null; - this.smartLabel3.BackPictureBox1 = null; - this.smartLabel3.BackPictureBox2 = null; - this.smartLabel3.BorderColor = System.Drawing.Color.White; - this.smartLabel3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.smartLabel3.ForeColor = System.Drawing.Color.White; - this.smartLabel3.InitVisible = true; - this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(454, 140); - this.smartLabel3.Name = "smartLabel3"; - this.smartLabel3.Size = new System.Drawing.Size(90, 26); - this.smartLabel3.TabIndex = 177; - this.smartLabel3.Text = "day(Max:180)"; - this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.smartLabel3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.smartLabel3.Wordwrap = false; + this.labelTitleDayAccount.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDayAccount.BackPictureBox = null; + this.labelTitleDayAccount.BackPictureBox1 = null; + this.labelTitleDayAccount.BackPictureBox2 = null; + this.labelTitleDayAccount.BorderColor = System.Drawing.Color.White; + this.labelTitleDayAccount.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDayAccount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDayAccount.ForeColor = System.Drawing.Color.White; + this.labelTitleDayAccount.InitVisible = true; + this.labelTitleDayAccount.LineSpacing = 0F; + this.labelTitleDayAccount.Location = new System.Drawing.Point(454, 140); + this.labelTitleDayAccount.Name = "labelTitleDayAccount"; + this.labelTitleDayAccount.Size = new System.Drawing.Size(90, 26); + this.labelTitleDayAccount.TabIndex = 177; + this.labelTitleDayAccount.Text = "day(Max:180)"; + this.labelTitleDayAccount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDayAccount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDayAccount.Wordwrap = false; // // labelExpiryDateOfAccount // @@ -598,40 +641,6 @@ this.labelTitleExpiryDateOfAccount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleExpiryDateOfAccount.Wordwrap = false; // - // buttonPasswordEdit - // - this.buttonPasswordEdit.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonPasswordEdit.BackPictureBox = null; - this.buttonPasswordEdit.BackPictureBox1 = null; - this.buttonPasswordEdit.BackPictureBox2 = null; - this.buttonPasswordEdit.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonPasswordEdit.ButtonImageAutoSize = true; - this.buttonPasswordEdit.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonPasswordEdit.DisableImage = null; - this.buttonPasswordEdit.DownImage = null; - this.buttonPasswordEdit.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold); - this.buttonPasswordEdit.GroupID = 0; - this.buttonPasswordEdit.InitVisible = true; - this.buttonPasswordEdit.Location = new System.Drawing.Point(646, 45); - this.buttonPasswordEdit.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonPasswordEdit.Name = "buttonPasswordEdit"; - this.buttonPasswordEdit.NestedClickEventPrevent = false; - this.buttonPasswordEdit.OutlinePixel = 1; - this.buttonPasswordEdit.RepeatInterval = 200; - this.buttonPasswordEdit.RepeatIntervalAccelerate = null; - this.buttonPasswordEdit.SafeInterval = 200; - this.buttonPasswordEdit.Size = new System.Drawing.Size(50, 26); - this.buttonPasswordEdit.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonPasswordEdit.TabIndex = 174; - this.buttonPasswordEdit.Text = "Edit"; - this.buttonPasswordEdit.TextColor = System.Drawing.Color.White; - this.buttonPasswordEdit.TextDownColor = System.Drawing.Color.White; - this.buttonPasswordEdit.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonPasswordEdit.TextLocation = new System.Drawing.Point(0, 0); - this.buttonPasswordEdit.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonPasswordEdit.UpImage = null; - this.buttonPasswordEdit.Click += new System.EventHandler(this.buttonPasswordEdit_Click); - // // buttonIDEdit // this.buttonIDEdit.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); @@ -747,15 +756,6 @@ this.buttonGroupEditor.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonGroupEditor.UpImage"))); this.buttonGroupEditor.Click += new System.EventHandler(this.buttonGroupEditor_Click); // - // listBoxUserList - // - this.listBoxUserList.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold); - this.listBoxUserList.Location = new System.Drawing.Point(14, 12); - this.listBoxUserList.Name = "listBoxUserList"; - this.listBoxUserList.Size = new System.Drawing.Size(243, 370); - this.listBoxUserList.TabIndex = 211; - this.listBoxUserList.SelectedIndexChanged += new System.EventHandler(this.listBoxUserList_SelectedIndexChanged); - // // ControlCenterEquipUser // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -777,18 +777,17 @@ public SmartX.SmartLabel labelTitleID; private SmartX.SmartButton buttonIDEdit; private SmartX.SmartKeyboard smartKeyboard; - private SmartX.SmartButton buttonPasswordEdit; public SmartX.SmartLabel labelTitleAccessRight; private SmartX.SmartButton buttonDelete; public SmartX.SmartLabel smartLabel11; public SmartX.SmartLabel labelAutomaticLogoutTime; public SmartX.SmartLabel labelTitleAutomaticLogoutTime; public SmartX.SmartLabel labelExpiryDateOfPassword2; - public SmartX.SmartLabel smartLabel8; + public SmartX.SmartLabel labelTitleDayPassword; public SmartX.SmartLabel labelExpiryDateOfPassword; public SmartX.SmartLabel labelTitleExpiryDateOfPassword; public SmartX.SmartLabel labelExpiryDateOfAccount2; - public SmartX.SmartLabel smartLabel3; + public SmartX.SmartLabel labelTitleDayAccount; public SmartX.SmartLabel labelExpiryDateOfAccount; public SmartX.SmartLabel labelTitleExpiryDateOfAccount; private SmartX.SmartButton buttonSave; @@ -800,5 +799,6 @@ private SmartX.SmartSeparatorLine smartSeparatorLine1; public SmartX.SmartLabel labelAccessRightAdmin; public System.Windows.Forms.ListBox listBoxUserList; + private SmartX.SmartButton buttonResetPW; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs index 63ac89a..cdd3426 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs @@ -119,7 +119,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleID.Text = "ID"; this.labelTitlePassword.Text = "비밀번호"; - + this.labelTitleExpiryDateOfAccount.Text = "만료일(ID)"; this.labelTitleExpiryDateOfPassword.Text = "만료일(PW)"; @@ -182,8 +182,8 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Visible = true; this.labelAutomaticLogoutTime.Visible = true; - this.smartLabel3.Visible = true; - this.smartLabel8.Visible = true; + this.labelTitleDayAccount.Visible = true; + this.labelTitleDayPassword.Visible = true; this.smartLabel11.Visible = true; this.labelAutoLogoutWarning.Visible = true; @@ -201,8 +201,8 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Visible = false; this.labelAutomaticLogoutTime.Visible = false; - this.smartLabel3.Visible = false; - this.smartLabel8.Visible = false; + this.labelTitleDayAccount.Visible = false; + this.labelTitleDayPassword.Visible = false; this.smartLabel11.Visible = false; this.labelAutoLogoutWarning.Visible = false; @@ -243,8 +243,10 @@ namespace ITC81DB_0H.Controls } private void SetEnablePassword(bool value) { + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == false && this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + value = true; + this.textBoxPassword.Enabled = value; - this.buttonPasswordEdit.Enabled = value; if (value == true) this.textBoxPassword.BackColor = Color.White; @@ -285,7 +287,6 @@ namespace ITC81DB_0H.Controls this.smartKeyboard.Hide(); this.SetEnableControl(true); - this.SetEnablePassword(true); } private void UserNew() @@ -464,9 +465,18 @@ namespace ITC81DB_0H.Controls #endregion } + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == false && this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + { + this.buttonResetPW.Text = "Edit"; + } + else + { + if (this.buttonResetPW.Text != "Reset") + this.buttonResetPW.Text = "Reset"; + } this.buttonSave.Visible = false; } - } + } private void UpdateInitializeUserDisplay(SystemConfigurationItem2 system) { @@ -475,7 +485,16 @@ namespace ITC81DB_0H.Controls this.IsNew = true; this.textBoxID.Text = ""; - this.textBoxPassword.Text = ""; + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == false && this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + { + this.textBoxPassword.Text = ""; + this.SetTextBoxPasswordChar(false); + } + else + { + this.textBoxPassword.Text = this.SelectedUserItem.ResetPW; + this.SetTextBoxPasswordChar(true); + } this.labelExpiryDateOfAccount.Text = "180"; this.labelExpiryDateOfPassword.Text = "90"; this.labelExpiryDateOfAccount2.Text = "-"; @@ -490,15 +509,23 @@ namespace ITC81DB_0H.Controls this.KeyboardClose(); this.SetEnableID(true); - - this.SetTextBoxPasswordChar(this.PasswordChar); + this.SetEnablePassword(false); this.buttonDelete.Visible = false; this.buttonSave.Visible = false; + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == false && this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + { + this.buttonResetPW.Text = "Edit"; + } + else + { + if (this.buttonResetPW.Text != "Reset") + this.buttonResetPW.Text = "Reset"; + } this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged); this.listBoxUserList.SelectedIndex = -1; - this.listBoxUserList.SelectedIndexChanged += new EventHandler(this.listBoxUserList_SelectedIndexChanged); + this.listBoxUserList.SelectedIndexChanged += new EventHandler(this.listBoxUserList_SelectedIndexChanged); } private void UpdateCurrentUserItem(UserManager.UserMgr_user_list_t item) { @@ -610,7 +637,6 @@ namespace ITC81DB_0H.Controls private void UpdateSelectUserDisplay(UserItem item) { this.SetEnableID(false); - this.SetEnablePassword(true); this.SetEnableControl(true); this.textBoxID.Text = item.ID; @@ -728,6 +754,14 @@ namespace ITC81DB_0H.Controls } } + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + { + if (this.textBoxPassword.Text == this.SelectedUserItem.ResetPW) + this.SetTextBoxPasswordChar(true); + else + this.SetTextBoxPasswordChar(false); + } + //this.cbAdministrator.Visible = true; //this.cbAdministrator.Checked = item.IsAdmin; } @@ -799,7 +833,6 @@ namespace ITC81DB_0H.Controls this.listBoxUserList.SelectedIndex = this.listBoxUserList.Items.Count - 1; this.SetEnableID(false); - this.SetEnablePassword(false); this.SetEnableOnlyPart11Value(false); this.labelAutomaticLogoutTime.Enabled = false; @@ -1039,14 +1072,19 @@ namespace ITC81DB_0H.Controls int index = this.listBoxUserList.SelectedIndex; this.IsNew = false; - this.SetEnablePassword(true); - this.SetTextBoxPasswordChar(this.PasswordChar); + this.SetEnablePassword(false); this.labelAutomaticLogoutTime.Enabled = true; this.buttonSave.Visible = false; + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + this.buttonResetPW.Text = "Reset"; if (index == 0) { UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index].ToString()); + this.SetEnablePassword(true); + + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + this.buttonResetPW.Text = "Edit"; } else if (index < 0) { @@ -1061,7 +1099,6 @@ namespace ITC81DB_0H.Controls this.SetEnableID(false); this.SetEnableControl(true); - this.SetEnablePassword(true); UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index].ToString()); } @@ -1095,8 +1132,8 @@ namespace ITC81DB_0H.Controls { e.Handled = true; - this.textBoxID.Text = this.BeforeID; this.ParentForm.Enabled = true; + this.textBoxID.Text = this.BeforeID; this.KeyboardClose(); } else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' @@ -1111,7 +1148,7 @@ namespace ITC81DB_0H.Controls { e.Handled = true; - if(this.PasswordChar == false) + if (this.PasswordChar == false) this.SetTextBoxPasswordChar(this.PasswordChar); this.KeyboardClose(); @@ -1213,7 +1250,6 @@ namespace ITC81DB_0H.Controls this.listBoxUserList.Enabled = false; this.SetEnableControl(false); - this.SetEnablePassword(false); } private void buttonPasswordEdit_Click(object sender, EventArgs e) { @@ -1234,6 +1270,60 @@ namespace ITC81DB_0H.Controls this.SetEnableControl(false); this.SetEnableID(false); } + private void buttonResetPW_Click(object sender, EventArgs e) + { + if (this.buttonResetPW.Text == "Edit") + { + if (this.listBoxUserList.SelectedIndex == 0 + && this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < 9) + return; + + this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; + this.smartKeyboard.Location = new Point(3, 74); + this.smartKeyboard.Size = new Size(704, 276); + this.smartKeyboard.Hide(); + + this.BeforePassword = this.textBoxPassword.Text; + + this.smartKeyboard.TargetInputObject = this.textBoxPassword; + this.smartKeyboard.Show(); + + this.SetTextBoxPasswordChar(true); + this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0); + + this.listBoxUserList.Enabled = false; + this.SetEnableControl(false); + this.SetEnableID(false); + } + else + { + int ret = 0; + string id = "", pw = ""; + + if (this.listBoxUserList.Items.Count <= 1) + return; + + if (this.listBoxUserList.SelectedIndex <= 0) + return; + + // 메시지 + // 비밀번호를 초기화 하시겠습니까? + DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 29); + if (dlg.ShowDialog() == DialogResult.Yes) + { + id = this.SelectedUserItem.ID; + pw = this.SelectedUserItem.ResetPW; + + ret = UserManager.UserManager_UserResetPWDirect(id, pw); + + if (ret == 0) + { + this.SetTextBoxPasswordChar(true); + this.textBoxPassword.Text = pw; + } + } + } + } private void labelExpiryDateOfAccount_Click(object sender, EventArgs e) { DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelExpiryDateOfAccount.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); @@ -1292,36 +1382,36 @@ namespace ITC81DB_0H.Controls } private void labelAutomaticLogoutTime_Click(object sender, EventArgs e) { - DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelAutomaticLogoutTime.Text, 2, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelAutomaticLogoutTime.Text, 2, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); - if (myKeyPad.ShowDialog() == DialogResult.OK) - { - if (myKeyPad.IntValue < 0) - { - // 입력범위를 확인하세요 - DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); - myMsg.ShowDialog(); - } - else if (myKeyPad.IntValue > 90) - { - this.labelAutomaticLogoutTime.Text = "90"; - } - else - { - this.labelAutomaticLogoutTime.Text = myKeyPad.StringValue; - } + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.IntValue < 0) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else if (myKeyPad.IntValue > 90) + { + this.labelAutomaticLogoutTime.Text = "90"; + } + else + { + this.labelAutomaticLogoutTime.Text = myKeyPad.StringValue; + } - this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout = myKeyPad.IntValue; + this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout = myKeyPad.IntValue; - if (this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout == 1) - this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 30; - else - this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 60; + if (this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout == 1) + this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 30; + else + this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 60; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - UserManager.UserManager_AutoLogoutSetTimeout(this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout, this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime); - } + UserManager.UserManager_AutoLogoutSetTimeout(this.ParentForm.ParentForm.SystemConfig2.UserAutomaticLogout, this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime); + } } private void labelExpiryDateOfAccount2_Click(object sender, EventArgs e) { diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs index f8c2c31..8042b43 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs @@ -107,7 +107,7 @@ this.labelTitleHelp.LineSpacing = 0F; this.labelTitleHelp.Location = new System.Drawing.Point(18, 311); this.labelTitleHelp.Name = "labelTitleHelp"; - this.labelTitleHelp.Size = new System.Drawing.Size(82, 30); + this.labelTitleHelp.Size = new System.Drawing.Size(104, 30); this.labelTitleHelp.TabIndex = 196; this.labelTitleHelp.Text = "도움말"; this.labelTitleHelp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -124,9 +124,9 @@ this.smartLabel8.ForeColor = System.Drawing.Color.White; this.smartLabel8.InitVisible = true; this.smartLabel8.LineSpacing = 0F; - this.smartLabel8.Location = new System.Drawing.Point(633, 151); + this.smartLabel8.Location = new System.Drawing.Point(655, 151); this.smartLabel8.Name = "smartLabel8"; - this.smartLabel8.Size = new System.Drawing.Size(56, 26); + this.smartLabel8.Size = new System.Drawing.Size(34, 26); this.smartLabel8.TabIndex = 195; this.smartLabel8.Text = "ea"; this.smartLabel8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -143,9 +143,9 @@ this.smartLabel7.ForeColor = System.Drawing.Color.White; this.smartLabel7.InitVisible = true; this.smartLabel7.LineSpacing = 0F; - this.smartLabel7.Location = new System.Drawing.Point(633, 113); + this.smartLabel7.Location = new System.Drawing.Point(655, 113); this.smartLabel7.Name = "smartLabel7"; - this.smartLabel7.Size = new System.Drawing.Size(56, 26); + this.smartLabel7.Size = new System.Drawing.Size(34, 26); this.smartLabel7.TabIndex = 194; this.smartLabel7.Text = "sec"; this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -164,9 +164,9 @@ this.labelZeroZoneCount.ForeColor = System.Drawing.Color.White; this.labelZeroZoneCount.InitVisible = true; this.labelZeroZoneCount.LineSpacing = 0F; - this.labelZeroZoneCount.Location = new System.Drawing.Point(477, 151); + this.labelZeroZoneCount.Location = new System.Drawing.Point(513, 151); this.labelZeroZoneCount.Name = "labelZeroZoneCount"; - this.labelZeroZoneCount.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCount.Size = new System.Drawing.Size(136, 30); this.labelZeroZoneCount.TabIndex = 193; this.labelZeroZoneCount.Text = "100"; this.labelZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -186,7 +186,7 @@ this.labelTitleZeroZoneCount.LineSpacing = 0F; this.labelTitleZeroZoneCount.Location = new System.Drawing.Point(363, 151); this.labelTitleZeroZoneCount.Name = "labelTitleZeroZoneCount"; - this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(138, 30); this.labelTitleZeroZoneCount.TabIndex = 192; this.labelTitleZeroZoneCount.Text = "영점실행개수"; this.labelTitleZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -205,7 +205,7 @@ this.labelTitleZeroZoneCycle.LineSpacing = 0F; this.labelTitleZeroZoneCycle.Location = new System.Drawing.Point(363, 113); this.labelTitleZeroZoneCycle.Name = "labelTitleZeroZoneCycle"; - this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(138, 30); this.labelTitleZeroZoneCycle.TabIndex = 191; this.labelTitleZeroZoneCycle.Text = "영점실행주기"; this.labelTitleZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -224,7 +224,7 @@ this.labelTitleOutputPort.LineSpacing = 0F; this.labelTitleOutputPort.Location = new System.Drawing.Point(363, 49); this.labelTitleOutputPort.Name = "labelTitleOutputPort"; - this.labelTitleOutputPort.Size = new System.Drawing.Size(104, 30); + this.labelTitleOutputPort.Size = new System.Drawing.Size(138, 30); this.labelTitleOutputPort.TabIndex = 190; this.labelTitleOutputPort.Text = "출력Port"; this.labelTitleOutputPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -262,9 +262,9 @@ this.labelZeroZoneCycle.ForeColor = System.Drawing.Color.White; this.labelZeroZoneCycle.InitVisible = true; this.labelZeroZoneCycle.LineSpacing = 0F; - this.labelZeroZoneCycle.Location = new System.Drawing.Point(477, 113); + this.labelZeroZoneCycle.Location = new System.Drawing.Point(513, 113); this.labelZeroZoneCycle.Name = "labelZeroZoneCycle"; - this.labelZeroZoneCycle.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCycle.Size = new System.Drawing.Size(136, 30); this.labelZeroZoneCycle.TabIndex = 187; this.labelZeroZoneCycle.Text = "100"; this.labelZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -311,9 +311,9 @@ this.panel1.Controls.Add(this.radioButtonPortNone); this.panel1.Controls.Add(this.radioButtonPort56); this.panel1.Controls.Add(this.radioButtonPort78); - this.panel1.Location = new System.Drawing.Point(477, 18); + this.panel1.Location = new System.Drawing.Point(507, 17); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(212, 89); + this.panel1.Size = new System.Drawing.Size(182, 89); // // radioButtonPortNone // @@ -336,7 +336,7 @@ this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black; this.radioButtonPortNone.RadioSymbolSize = 14; this.radioButtonPortNone.Shadow = false; - this.radioButtonPortNone.Size = new System.Drawing.Size(200, 23); + this.radioButtonPortNone.Size = new System.Drawing.Size(176, 23); this.radioButtonPortNone.TabIndex = 138; this.radioButtonPortNone.Text = "None"; this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; @@ -363,7 +363,7 @@ this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black; this.radioButtonPort56.RadioSymbolSize = 14; this.radioButtonPort56.Shadow = false; - this.radioButtonPort56.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort56.Size = new System.Drawing.Size(176, 23); this.radioButtonPort56.TabIndex = 139; this.radioButtonPort56.Text = "Output Port 5,6"; this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; @@ -390,7 +390,7 @@ this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black; this.radioButtonPort78.RadioSymbolSize = 14; this.radioButtonPort78.Shadow = false; - this.radioButtonPort78.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort78.Size = new System.Drawing.Size(176, 23); this.radioButtonPort78.TabIndex = 140; this.radioButtonPort78.Text = "Output Port 7,8"; this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; @@ -406,9 +406,9 @@ this.labelHelp5.ForeColor = System.Drawing.Color.White; this.labelHelp5.InitVisible = true; this.labelHelp5.LineSpacing = 0F; - this.labelHelp5.Location = new System.Drawing.Point(103, 431); + this.labelHelp5.Location = new System.Drawing.Point(122, 432); this.labelHelp5.Name = "labelHelp5"; - this.labelHelp5.Size = new System.Drawing.Size(585, 15); + this.labelHelp5.Size = new System.Drawing.Size(566, 14); this.labelHelp5.TabIndex = 145; this.labelHelp5.Text = "5. \'지연시간2\'만큼 지난 후, 다시 A상태로 돌아온다."; this.labelHelp5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -425,9 +425,9 @@ this.labelHelp4.ForeColor = System.Drawing.Color.White; this.labelHelp4.InitVisible = true; this.labelHelp4.LineSpacing = 0F; - this.labelHelp4.Location = new System.Drawing.Point(103, 410); + this.labelHelp4.Location = new System.Drawing.Point(122, 411); this.labelHelp4.Name = "labelHelp4"; - this.labelHelp4.Size = new System.Drawing.Size(585, 15); + this.labelHelp4.Size = new System.Drawing.Size(566, 14); this.labelHelp4.TabIndex = 144; this.labelHelp4.Text = "4. D : Dispenser1이 올라옴과 동시에 Dispenser2가 내려간다."; this.labelHelp4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -444,9 +444,9 @@ this.labelHelp3.ForeColor = System.Drawing.Color.White; this.labelHelp3.InitVisible = true; this.labelHelp3.LineSpacing = 0F; - this.labelHelp3.Location = new System.Drawing.Point(103, 389); + this.labelHelp3.Location = new System.Drawing.Point(122, 390); this.labelHelp3.Name = "labelHelp3"; - this.labelHelp3.Size = new System.Drawing.Size(585, 15); + this.labelHelp3.Size = new System.Drawing.Size(566, 14); this.labelHelp3.TabIndex = 143; this.labelHelp3.Text = "3. C : \'지연시간1\'만큼 지난 후, Dispenser1이 올라온다."; this.labelHelp3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -463,9 +463,9 @@ this.labelHelp2.ForeColor = System.Drawing.Color.White; this.labelHelp2.InitVisible = true; this.labelHelp2.LineSpacing = 0F; - this.labelHelp2.Location = new System.Drawing.Point(103, 368); + this.labelHelp2.Location = new System.Drawing.Point(122, 369); this.labelHelp2.Name = "labelHelp2"; - this.labelHelp2.Size = new System.Drawing.Size(585, 15); + this.labelHelp2.Size = new System.Drawing.Size(566, 14); this.labelHelp2.TabIndex = 142; this.labelHelp2.Text = "2. B : 피계량물이 Dispenser 센서 범위 안에 진입한다."; this.labelHelp2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -482,9 +482,9 @@ this.labelHelp1.ForeColor = System.Drawing.Color.White; this.labelHelp1.InitVisible = true; this.labelHelp1.LineSpacing = 0F; - this.labelHelp1.Location = new System.Drawing.Point(103, 347); + this.labelHelp1.Location = new System.Drawing.Point(122, 348); this.labelHelp1.Name = "labelHelp1"; - this.labelHelp1.Size = new System.Drawing.Size(585, 15); + this.labelHelp1.Size = new System.Drawing.Size(566, 14); this.labelHelp1.TabIndex = 141; this.labelHelp1.Text = "1. A : 피계량물이 진입한다."; this.labelHelp1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs index b5bbe4d..5727456 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs @@ -47,10 +47,13 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.English) { + this.labelTitleSetting.Text = "Settings"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Delay 1 time"; this.labelTitleDelayTime2.Text = "Delay 2 time"; + this.labelTitleHelp.Text = "Help"; + this.radioButtonPortNone.Text = "None"; this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; @@ -67,10 +70,13 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { + this.labelTitleSetting.Text = "设置"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "延迟1时间"; this.labelTitleDelayTime2.Text = "延迟2时间"; + this.labelTitleHelp.Text = "帮助"; + this.radioButtonPortNone.Text = "不使用"; this.radioButtonPort56.Text = "输出 5, 6"; this.radioButtonPort78.Text = "输出 7, 8"; @@ -90,10 +96,13 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) { + this.labelTitleSetting.Text = "Настройки"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Время задержки 1"; this.labelTitleDelayTime2.Text = "Время задержки 2"; + this.labelTitleHelp.Text = "Помощь"; + this.radioButtonPortNone.Text = "Нет"; this.radioButtonPort56.Text = "Порт выхода 5, 6"; this.radioButtonPort78.Text = "Порт выхода 7, 8"; @@ -110,10 +119,13 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { + this.labelTitleSetting.Text = "Einstellungen"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Vezögerung 1"; this.labelTitleDelayTime2.Text = "Vezögerung 2"; + this.labelTitleHelp.Text = "Helfen"; + this.radioButtonPortNone.Text = "Keiner"; this.radioButtonPort56.Text = "Ausgangsport 5, 6"; this.radioButtonPort78.Text = "Ausgangsport 7, 8"; @@ -130,10 +142,13 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) { + this.labelTitleSetting.Text = "Ajustes"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); this.labelTitleDelayTime1.Text = "1 Tiempo de retardo"; this.labelTitleDelayTime2.Text = "2 Tiempo de retardo"; + this.labelTitleHelp.Text = "Ayuda"; + this.radioButtonPortNone.Text = "Ninguna"; this.radioButtonPort56.Text = "Puerto de salida 5, 6"; this.radioButtonPort78.Text = "Puerto de salida 7, 8"; @@ -150,10 +165,13 @@ namespace ITC81DB_0H.Controls } else { + this.labelTitleSetting.Text = "품목 별 설정"; this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "지연시간 1"; this.labelTitleDelayTime2.Text = "지연시간 2"; + this.labelTitleHelp.Text = "도움말"; + this.radioButtonPortNone.Text = "None"; this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx index 51d29b0..42bee1d 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx @@ -416,447 +416,447 @@ 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 - t2/v2k/dEIzDhx4L+MvXYFxcXCw95pRWekIEG00b8E/Tpk0lJSXFtZ+6IRiHDz0W8JevwVjvU9xu4qJK - T4hgo2kD/rnyyivtPd7d+qkbgnH40GMBf/kajPXFW4zlorswoWkD/rnsssvsvd7d+qkbgnH40GMBf/ke - jJ2/j+CjaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 - t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 - t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 - t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 - t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 - t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 - 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0KYqiKO/l1k9r4sxJBOMkQzAG/OUlGNNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj - w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D - BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWlaVMURVHey62f1sSZkwjGSYZgDPjLSzCmx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG - SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG - SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG - SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG - SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG - SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP - PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+Dchi8p - GG/YsEEeGVdc6QkRbDRtwD+XXXaZrFu3zrWfuqHHhg89FvCP1x6b4NyGLykY64s/NXlRpSdEsNG0Af9c - eeWVUlRU5NpP3dBjw4ceC/jHa49NcG7DlxSMi4uLpcec0kpPiGCjaQP+adq0qaSkpLj2Uzf02PChxwL+ - 8dpjE5zb8CUF4969e8uUhWWVnhDBRtMG/NOrVy9p3769az91Q48NH3os4B+vPTbBuQ1fUjD+xS9+IevX - r5dXZi6t9KQILpo24I9rr71WSkpK5JprrnHtp27oseFDjwX8cTE9NsG5DV9SMFYff/yxzCgp5wKRkKBp - Aw3v8ssvlwEDBkirVq1c+2hN6LHhQo8FGt6l9Fjl3IYvORiruXPnytj81fLQmHPPhWCiaQMN60/+5E+k - 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 - EmGKCm8lgrETyzV6pQEqsXyT9Yhi1EqXo3O7VclcVf8WCBaCccRRFEVRFBWcchurERwE44ijKIqiKCo4 - 5TZWIzgIxhFHURRFUVRwym2sRnAQjCOOoiiKoqjglNtYjeAgGEccRVEURVHBKbexGsFBMI44iqIoiqKC - U25jNYKDYBxxFEVRFEUFp9zGagQHwTjiKIqiKIoKTrmN1QgOgnHEURRFURQVnHIbqxEcBOOIoyiKoigq - OOU2ViM4CMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYA - AACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAA - DIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCM - AQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAA - ABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAg - GAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgA - AAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACA - QTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIx - AAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAA - AINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgE - YwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMA - AAAGwRgAAAAwfA3Gq1atkiuuuMJ1wgAAAICGctlll8m6detcM2tNnFn4koJxbm6u/PznP3edOAAAAKCh - XHnllVJUVOSaWWvizMKXFIxHjRolTZs2dZ04AAAAoKFoJk1JSXHNrDVxZuFLCsbt2rWTXr16uU4cAAAA - 0FA0k7Zv3941s9bEmYUvKRhfffXVUlxcLNdee63rBAIAAAD1TbNoSUmJXHPNNa6ZtSbOLHxJwVi1atVK - BgwYIJdffrnrhAIAAAD1RTOoZlHNpG5Z9UKcWfiSg7H66KOPpEePHvKnf/qnrhMMAAAA1LU/+ZM/sRlU - s6hbRq0NZxauk2B81VVXSc+ePWXgwIFy3XXXuU44AAAAUFcaNWpks6dmUM2ibhm1NpxZuE6CccITTzwh - eXl59uRnvTLwZz/7mfzkJz9xnRkAAACgtjRTarbUjKlZUzPnxZ4+4eTMwnUajJVekKd3q9DbZRQWFtob - LeunkAAAAAAXSzOlZkvNmJo1NXO6ZVGvnFm4zoMxAAAAEBbOLEwwBgAAQNJyZmGCMQAAAJKWMwsTjAEA - AJC0nFmYYAwAAICk5czCBGMAAAAkLWcWJhgDAAAgaTmzMMEYAAAAScuZhQnGAAAASFrOLEwwBgAAQNJy - ZmGCMQAAAJKWMwsTjAEAAJC0nFm4UjAGAAAAkhXBGAAAADAIxgAAAMDohfL/Ayer/Ught5jUAAAAAElF - TkSuQmCC + 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 + HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz + uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b + HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz + uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b + HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz + uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b + HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz + u4koGG/ZskWemVBU4QkR22iUQPRcd911smnTJtd+6oYei0jQ7+E3XntsiHO7iSgY64u/NG1ZhSdEbKNR + AtFz4403SmFhoWs/dUOPRSTo9/Abrz02xLndRBSMi4qKpNfCkgpPiNhGowSip0mTJpKUlOTaT93QYxEJ + +j38xmuPDXFuNxEF4759+8qMpaUVnhCxjUYJRE+fPn2kXbt2rv3UDT0WkaDfw2+89tgQ53YTUTD+5S9/ + KZs3b5Y3566s8KSIXTRKIDpuvfVWKS4ulltuucW1n7qhxyIS9Hv4STg9NsS53UQUjNUXX3whc4rLuEAk + TtAogfp3/fXXy6BBg6Rly5aufbQ69FiEi34Pv4ikxyrndhNxMFaLFi2S8Xnr5clxV54LsYlGCdSvP/uz + P5NevXrJ559/7to/a4Iei3DQ7+EHtdFjndtNrQTjm2++WdLS0mRucZm8zVt+MY1GCdSfBg0ayODBg6V3 + 795y0003ufbPmqDHIhz0eyS62uqxzu2mVoJxyB//+Ed7eyG9WKTnwhJpO3WZPMURjphCowTqzk9+8hP5 + +c9/bq+M1otAcnNzw35rzw09Fl7Q75Fo6qrHOrebWg3GSi8W0Sup9QTo8vJyu2ECgB9oaC0oKLC3C2rb + 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 + 75x/5zw5f1//Xt/v1QsLa3gybB2WLr8Us0xqut6mFMyV6V+/KElm52a4me+xD14n075sJcn5c1wfX1ne + ssV2W6ntumTWxdJNy8181KyXLMmeare30Y/9Dxlttr1RxpjmfyeL0ydIsvmZ6+846OtkFsyRw0di+9M6 + d3232czPtJr3JbN8p/Rodnn56gGI2cPflBTTb9we76SvUbIuN/jKtV8bNq+Q1NypxjSzzk61/dxtOpQu + wzlzB8mksR/K5HE9rbnzh9i/hdvj3WzYUhJ85dopt7Ea3hGMEZZ4qUM/7JW3P39Gnn71N560ePmf5JkO + vw546dfydMf/4/q4ypqbxw1Mek8uXIjsPGe32vXdFnnyJX0N99eu7KnXfisfPPO38vmT/0M+e+r/sZ57 + 5Z+luctj3Txl5mVeytjgq0entu4slfZv3S3Pd/mDvNDlVlctuzaw7P93aSDPd/pPad7ml8b/tl9btP+N + +XnDy49x+72QNt1ul5LcxXJiY7m9YO7ohiDz/8c2bLBC3zu2Mfj/wZ+FHn/5MZf/vVEOrV0tw/u9Lq1f + b1jh9dTlaa/wtYF0f+Fm+eTxn8nHj/21fGS+vtzhN/JCpel1Tn/l5+n4XmP54eiB4F8yejVgzHt2XXJb + x9w82elfpHurf5BRj/w3Gd70Bhn98H+TN1v+gzz52r+4Pt5Jt78nOvyzfL+v+osrw6kTp45J5x6P2Ndw + e203z5rt7aOn/0Y+D25/vVr8jbTw8rd46Z8lPXdmcApis/qOfNvT3+QJs3zff+7vLy9f/frqizeb5ftb + 18c76et0ePueOumvp388Ke/8UceKms+L9tKnHGraW5XOyzt/fDb46rVTbmM1vCMYIyzxUnvMANn5w6bS + 6bNG0nfW4570cXD7uVO/2U/IV1OayYvv/od8NbiLnD1X+5+CtH33Rnm07a/lvUH3yoC5T7pOR2UDZjwq + Ax3cHlNZv9mP23l5ygzqs5eMDL56dGpVab48YcJBt2/ukJ4jG0uP4Q9c04fGB8OMofcHvho9ht9f8XH2 + e1e+6nO/8fUd8uTL/ywr1mQFX732SnfQWr9+u7zc8w8Vp2FYpemq9LMPzTyEXP5+5cdd/nfgMb3MvLz2 + SUNpZtaVPft3BacgevXF4M7ybJd/sduI2/pWmW5vg2Y0k1FTH5aRhn7Vf19rOxww70l5s89d0uzFX8l3 + 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 + KbexGt4RjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEA + AACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAY + BGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgD + AAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAA + MAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEw + BgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAA + AGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACD + YAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMA + AADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAA + BsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjG + AAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAA + AAyCMQAAAGBENRivW7dObrjhBtcJAwAAAOrLddddJ5s2bXLNrNVxZuGIgnFOTo784he/cJ04AAAAoL7c + eOONUlhY6JpZq+PMwhEF4zFjxkiTJk1cJw4AAACoL5pJk5KSXDNrdZxZOKJg3LZtW+nTp4/rxAEAAAD1 + RTNpu3btXDNrdZxZOKJgfPPNN0tRUZHceuutrhMIAAAA1DXNosXFxXLLLbe4ZtbqOLNwRMFYtWzZUgYN + GiTXX3+964QCAAAAdUUzqGZRzaRuWfVanFk44mCsPv/8c+nVq5f8+Z//uesEAwAAALXtz/7sz2wG1Szq + llFrwpmFayUY33TTTdK7d28ZPHiwNGzY0HXCAQAAgNrSoEEDmz01g2oWdcuoNeHMwrUSjENeeOEFyc3N + tSc/65WBP//5z+UnP/mJ68wAAAAANaWZUrOlZkzNmpo5wz19wsmZhWs1GCu9IE/vVqG3yygoKLA3WtZP + IQEAAADCpZlSs6VmTM2amjndsqhXzixc68EYAAAAiBfOLEwwBgAAgG85szDBGAAAAL7lzMIEYwAAAPiW + MwsTjAEAAOBbzixMMAYAAIBvObMwwRgAAAC+5czCBGMAAAD4ljMLE4wBAADgW84sTDAGAACAbzmzMMEY + AAAAvuXMwgRjAAAA+JYzC1cIxgAAAIBfEYwBAAAAg2AMAAAAjF0q/z/QA9QdBapfvAAAAABJRU5ErkJg + gg== diff --git a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs index ab3553f..bb66ca3 100644 --- a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs +++ b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs @@ -59,6 +59,74 @@ namespace ITC81DB_0H.DialogForms #endregion #region Method + private string ReturnUserStatus(int num) + { + string ret = ""; + + switch (num) + { + case 1: + ret = "ID_Not found"; + break; + case 2: + ret = "ID_Duplication"; + break; + case 3: + ret = "ID_Too short"; + break; + case 4: + ret = "ID_Too long"; + break; + case 5: + ret = "ID_Consecutive or duplicate char"; + break; + case 6: + ret = "ID_Invalid char"; + break; + case 7: + ret = "ID_Lock"; + break; + case 8: + ret = "PW_Duplicate prev PW"; + break; + case 9: + ret = "PW_Too short"; + break; + case 10: + ret = "PW_Too long"; + break; + case 11: + ret = "PW_Consecutive or duplicate char"; + break; + case 12: + ret = "PW_Invalid char"; + break; + case 13: + ret = "PW_Not include char"; + break; + case 14: + ret = "PW_Incorrect"; + break; + case 15: + ret = "PW_Lock"; + break; + case 16: + ret = "PW_Over expire period"; + break; + case 17: + ret = "ID_Over expire period"; + break; + case 18: + ret = "Auto logout"; + break; + default: + ret = ""; + break; + } + + return ret; + } + private void InitializeDesignForLogin() { Class1 images = new Class1(); @@ -228,6 +296,8 @@ namespace ITC81DB_0H.DialogForms if (this.textBoxID.Text == "") { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : ID blank"); + // ID : 6~20자 입력 하세요 DialogFormMessage myMsg = new DialogFormMessage(null, 3, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); @@ -236,12 +306,26 @@ namespace ITC81DB_0H.DialogForms } if (this.textBoxPassword.Text == "") { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : PW blank"); + // PASSWORD : 6~20자 입력 하세요 DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); return; } + + if (this.textBoxID.Text == "admin00" && this.textBoxPassword.Text == "admin20090810") + { + DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.SystemConfig1.Language, 29); + if (dlg.ShowDialog() == DialogResult.Yes) + { + this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text; + this.DialogResult = DialogResult.Abort; + this.Close(); + } + return; + } UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.textBoxPassword.Text, ref userInfo); @@ -283,11 +367,15 @@ namespace ITC81DB_0H.DialogForms this.ParentForm.CurrentSystemStatus.CurrentUser.IsFirstPassword = userInfo.fFirstPW; #endregion + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Success"); + this.DialogResult = DialogResult.OK; this.Close(); } else if (userInfo.fFirstPW == 1) { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "First login"); + // 최초 로그인 시 비밀번호 변경 this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text; this.DialogResult = DialogResult.Abort; @@ -301,10 +389,14 @@ namespace ITC81DB_0H.DialogForms // 비밀번호 만료 시 if (userInfo.status == 15) { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Password expiration"); + this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text; this.DialogResult = DialogResult.Abort; this.Close(); } + else + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : " + this.ReturnUserStatus(userInfo.status)); } } private void ChangePassword() @@ -315,6 +407,8 @@ namespace ITC81DB_0H.DialogForms if (this.textBoxID.Text == "") { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : TextBox1 blank"); + // New Password : 6~20자 입력 하세요 DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); @@ -323,6 +417,8 @@ namespace ITC81DB_0H.DialogForms } if (this.textBoxPassword.Text == "") { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : TextBox2 blank"); + // New Password Confirmation : 6~20자 입력 하세요 DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); @@ -331,6 +427,8 @@ namespace ITC81DB_0H.DialogForms } if (this.textBoxID.Text.Equals(this.textBoxPassword.Text) == false) { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : Diffrent char"); + // 비밀번호를 확인하세요 DialogFormMessage myMsg = new DialogFormMessage(null, 14, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); @@ -398,17 +496,23 @@ namespace ITC81DB_0H.DialogForms this.ParentForm.CurrentSystemStatus.CurrentUser.IsFirstPassword = userInfo.fFirstPW; #endregion + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Success"); + this.DialogResult = DialogResult.OK; this.Close(); } else { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : " + this.ReturnUserStatus(ret)); + DialogFormMessage myMsg = new DialogFormMessage(null, ret, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); } } else { + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Failure change password"); + // 비밀번호 변경 실패 시 메시지?? DialogFormMessage myMsg = new DialogFormMessage(null, ret, this.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); diff --git a/ITC81DB_0H/DialogForms/DialogFormYesNo.cs b/ITC81DB_0H/DialogForms/DialogFormYesNo.cs index 1d7dcd3..6e5264f 100644 --- a/ITC81DB_0H/DialogForms/DialogFormYesNo.cs +++ b/ITC81DB_0H/DialogForms/DialogFormYesNo.cs @@ -147,6 +147,11 @@ namespace ITC81DB_0H.DialogForms this.labelMessage1.Text = "파일을 삭제하시겠습니까?"; this.labelMessage2.Text = ""; break; + case 29: + this.labelErrorCode.Text = "Login"; + this.labelMessage1.Text = "비밀번호를 초기화 하시겠습니까?"; + this.labelMessage2.Text = ""; + break; default: break; } @@ -272,6 +277,11 @@ namespace ITC81DB_0H.DialogForms this.labelMessage1.Text = "Are you sure you want to delete the file?"; this.labelMessage2.Text = ""; break; + case 29: + this.labelErrorCode.Text = "Login"; + this.labelMessage1.Text = "Do you want to reset your password?"; + this.labelMessage2.Text = ""; + break; default: break; } @@ -397,6 +407,11 @@ namespace ITC81DB_0H.DialogForms this.labelMessage1.Text = "您确定要删除该文件吗?"; this.labelMessage2.Text = ""; break; + case 29: + this.labelErrorCode.Text = "登录"; + this.labelMessage1.Text = "您想重置密码吗?"; + this.labelMessage2.Text = ""; + break; default: break; } @@ -526,6 +541,11 @@ namespace ITC81DB_0H.DialogForms this.labelMessage1.Text = "Вы уверены, что хотите удалить файл?"; this.labelMessage2.Text = ""; break; + case 29: + this.labelErrorCode.Text = "Логин"; + this.labelMessage1.Text = "Вы хотите сбросить свой пароль?"; + this.labelMessage2.Text = ""; + break; default: break; } @@ -653,6 +673,11 @@ namespace ITC81DB_0H.DialogForms this.labelMessage1.Text = "Möchten Sie die Datei wirklich löschen?"; this.labelMessage2.Text = ""; break; + case 29: + this.labelErrorCode.Text = "Einloggen"; + this.labelMessage1.Text = "Möchten Sie Ihr Passwort zurücksetzen?"; + this.labelMessage2.Text = ""; + break; default: break; } diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index 65d2ffd..e6a5d3e 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -24,8 +24,8 @@ namespace ITC81DB_0H.Forms public partial class FormMain : Form { #region Field - public static string DisplayVersion = "3.1.1"; - public static string ReleaseDate = "2023.9.12"; + public static string DisplayVersion = "3.1.2"; + public static string ReleaseDate = "2023.10.31"; private SmartSplash SmartSplashProgramLoad; public bool IsCommunicationLogOpen; @@ -108,6 +108,7 @@ namespace ITC81DB_0H.Forms private string m_PathDataHistoryFolder; // History 폴더 private string m_PathDataInspectionFolder; // Inspection 폴더 private string m_PathDataOthersFolder; // Others 폴더 + private string m_PathDataLogFolder; // Log 폴더 private string m_PathEncryptionFolder; private string m_PathHeaderFolder; private static string m_PathBinFolder; @@ -312,6 +313,11 @@ namespace ITC81DB_0H.Forms get { return this.m_PathDataOthersFolder; } private set { this.m_PathDataOthersFolder = value; } } + public string PathDataLogFolder + { + get { return this.m_PathDataLogFolder; } + private set { this.m_PathDataLogFolder = value; } + } public string PathEncryptionFolder { get { return this.m_PathEncryptionFolder; } @@ -352,32 +358,6 @@ namespace ITC81DB_0H.Forms #endregion #region Method - public static void Exception(Exception ex) - { - try - { - string fileName = "SD Card\\Data\\Others\\" + string.Format("{0:yyyyMMdd_HHmmss}_Exception.txt", DateTime.Now); - FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate); - StreamWriter sw = new StreamWriter(fs); - - sw.Write(ex.ToString()); - - sw.Close(); - fs.Close(); - } - catch - { - string fileName = "Flash Disk\\" + string.Format("{0:yyyyMMdd_HHmmss}_Exception.txt", DateTime.Now); - FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate); - StreamWriter sw = new StreamWriter(fs); - - sw.Write(ex.ToString()); - - sw.Close(); - fs.Close(); - } - } - private void DefaultSetting1() { this.IsCommunicationLogOpen = false; @@ -448,6 +428,7 @@ namespace ITC81DB_0H.Forms this.PathDataHistoryFolder = this.PathDataFolder + "History\\"; this.PathDataInspectionFolder = this.PathDataFolder + "Inspection\\"; this.PathDataOthersFolder = this.PathDataFolder + "Others\\"; + this.PathDataLogFolder = this.PathDataOthersFolder + "Log\\"; this.PathEncryptionFolder = this.PathLaunchFolder + "Encryption\\"; this.PathHeaderFolder = this.PathLaunchFolder + "Header\\"; PathBinFolder = this.PathLaunchFolder + "Bin\\"; @@ -651,6 +632,31 @@ namespace ITC81DB_0H.Forms this.smartForm.AddChildForm(this.ChildFormMenu); } + public static void Exception(Exception ex) + { + try + { + string fileName = "SD Card\\Data\\Others\\Log\\" + string.Format("{0:yyyyMMdd_HHmmss}_Exception.txt", DateTime.Now); + FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate); + StreamWriter sw = new StreamWriter(fs); + + sw.Write(ex.ToString()); + + sw.Close(); + fs.Close(); + } + catch + { + string fileName = "Flash Disk\\" + string.Format("{0:yyyyMMdd_HHmmss}_Exception.txt", DateTime.Now); + FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate); + StreamWriter sw = new StreamWriter(fs); + + sw.Write(ex.ToString()); + + sw.Close(); + fs.Close(); + } + } public void OnExternalInputBuzzerSignal(bool bValue, bool flagValue) { if (bValue == true) @@ -1574,7 +1580,7 @@ namespace ITC81DB_0H.Forms } #region Test 용 통신 로그 - fullPath = this.PathDataOthersFolder + "Communicationlog.txt"; + fullPath = this.PathDataLogFolder + string.Format("{0:yyMMdd}_ITC81DB_0H_", dt) + "Communicationlog.txt"; this.smartFileCommunicationLog.FilePathName = fullPath; //this.smartFileCommunicationLog.Open(); //this.IsCommunicationLogOpen = true; diff --git a/ITC81DB_0H/Forms/FormMainDisplay.cs b/ITC81DB_0H/Forms/FormMainDisplay.cs index 574367c..2a3eb35 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.cs +++ b/ITC81DB_0H/Forms/FormMainDisplay.cs @@ -684,6 +684,7 @@ namespace ITC81DB_0H.Forms { this.buttonProductNo.Enabled = true; this.labelProductName.Enabled = true; + this.buttonMenu.Enabled = true; } this.MainBarGraph.UpdateEquipmentStatusDisplay(status); @@ -939,8 +940,6 @@ namespace ITC81DB_0H.Forms this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); this.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); - this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, ""); - switch (this.CurrentDisplay) { case Define.E_MainDisplayStore.SubMenu: diff --git a/ITC81DB_0H/Part11_UserManager/UserItem.cs b/ITC81DB_0H/Part11_UserManager/UserItem.cs index 1541462..2242811 100644 --- a/ITC81DB_0H/Part11_UserManager/UserItem.cs +++ b/ITC81DB_0H/Part11_UserManager/UserItem.cs @@ -17,6 +17,7 @@ namespace ITC81DB_0H.Part11_UserManager private string m_ID; private string m_Password; + private string m_ResetPW; private int m_ExpireId; private int m_ExpirePassword; @@ -62,6 +63,11 @@ namespace ITC81DB_0H.Part11_UserManager get { return this.m_Password; } set { this.m_Password = value; } } + public string ResetPW + { + get { return this.m_ResetPW; } + private set { this.m_ResetPW = value; } + } public int ExpireId { @@ -137,7 +143,8 @@ namespace ITC81DB_0H.Part11_UserManager this.IsUpdate = false; this.ID = ""; - this.Password = ""; + this.Password = "Password12!"; + this.ResetPW = "Password12!"; this.ExpireId = 0; this.ExpirePassword = 0; diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs index 45d31be..e15d314 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs @@ -133,6 +133,9 @@ namespace ITC81DB_0H.Part11_UserManager [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern int DLL_UserMgr_UserModifyID(IntPtr user_org_id, IntPtr user_new_id); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern int DLL_UserMgr_UserResetPWDirect(IntPtr user_id, IntPtr user_pw); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern int DLL_UserMgr_UserModifyOthers(IntPtr user_id, int fadmin, int expire_pw, int expire_account, int active_level); diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.cs b/ITC81DB_0H/Part11_UserManager/UserManager.cs index 4b45e20..ee02ff6 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.cs @@ -147,6 +147,17 @@ namespace ITC81DB_0H.Part11_UserManager return ret; } + public static int UserManager_UserResetPWDirect(String sID, String sNewPW) + { + int ret = 0; + + IntPtr pID = Marshal.StringToBSTR(sID.ToString()); + IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString()); + + ret = DLL_UserMgr_UserResetPWDirect(pID, pPW); + + return ret; + } public static void UserManager_UserModifyID(String sID, String sNewID) { diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt index f48756e..f7d972c 100644 --- a/ITC81DB_0H/Version.txt +++ b/ITC81DB_0H/Version.txt @@ -12,6 +12,16 @@ ⺻ м 跮 */ +@ Ver 3.1.2 by CJY + - 2023.10.31 + - Ver 3.1.1 Modify + - 漭 ȭ ȵǾ ִ κ + - α , ϸ ޴ư Ȱȭ ȵǴ + - ŷα α ޴ κ ߰ + - α α + - йȣ ¹ư ߰(admin йȣ , ¹ư x) + - admin00 α , admin20090810 Էϸ admin ʱȭ + @ Ver 3.1.1 by CJY - 2023.9.12 - Ver 3.1.0 Modify diff --git a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe index 0a9e7f9..b93a41d 100644 Binary files a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe differ diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe index 0a9e7f9..b93a41d 100644 Binary files a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe differ