ITC81DB_V8/ITC81DB/Controls/CenterEquipment/ControlCenterEquipUpdate.cs

449 lines
21 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.IO;
using System.Text;
using System.Windows.Forms;
using SmartX;
using ITC81DB.Forms;
using ITC81DB.DialogForms;
using ITC81DB_ImageDll;
namespace ITC81DB.Controls
{
public partial class ControlCenterEquipUpdate : UserControl
{
#region Field
private FormMenu m_ParentForm;
private DataStore.Step3 UpdateStep;
private int Check;
private string USBPath = "";
private string UpdateFilePath = "";
private string OldFilePath = "";
private string RemoveFolderPath = "";
private List<string> DllName = new List<string>();
private List<long> LongOldDllFileLastWriteTime = new List<long>();
private List<long> LongNewDllFileLastWriteTime = new List<long>();
#endregion
#region Constructor
public ControlCenterEquipUpdate(FormMenu parent)
{
InitializeComponent();
this.ParentForm = parent;
this.InitializeDesign();
this.DefaultSetting();
}
#endregion
#region Property
public FormMenu ParentForm
{
get { return this.m_ParentForm; }
private set { this.m_ParentForm = value; }
}
#endregion
#region Method
public void InitializeDesign()
{
Class1 images = new Class1();
if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
{
this.buttonUpdate.Text = "Update";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
{
this.buttonUpdate.Text = "更新";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
{
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
{
this.buttonUpdate.Text = "Обновить";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
{
this.buttonUpdate.Text = "Aktualisierung";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
{
this.buttonUpdate.Text = "Actualizar";
}
else
{
this.buttonUpdate.Text = "Update";
}
}
private void DefaultSetting()
{
this.UpdateStep = DataStore.Step3.Step1;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
this.labelDisplayVer.Text = FormMain.DisplayVersion;
}
private DataStore.UpdateCheck CheckError()
{
DataStore.UpdateCheck ret = DataStore.UpdateCheck.Fail;
FileInfo[] newFiles;
if (Directory.Exists("Hard Disk\\") == true)
this.USBPath = "Hard Disk\\";
else if (Directory.Exists("하드 디스크\\") == true)
this.USBPath = "하드 디스크\\";
else
this.USBPath = "하드 디스크\\";
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
DirectoryInfo info = new DirectoryInfo(this.USBPath);
DirectoryInfo dirFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
// USB 장착 유무 확인
if (info.Exists == true)
{
// USB에 UpdateFiles 유무 확인
if (dirFolderUpdateFiles.Exists == true)
{
newFiles = dirFolderUpdateFiles.GetFiles();
if (newFiles.Length == 0)
{
ret = DataStore.UpdateCheck.NotFile;
}
else
{
ret = DataStore.UpdateCheck.Success;
}
}
else
{
ret = DataStore.UpdateCheck.NotUpdateFolder;
}
}
else
{
ret = DataStore.UpdateCheck.NotUsbMomery;
}
return ret;
}
#region V3 이후 LCD 프로그램 업데이트 시 DB파일 자동 Conversion 기능 추가
//private void ProgramUpdate()
//{
// // SD Card\\PreVersionBackup 폴더 생성
// DirectoryInfo dirPreVersionFolder = new DirectoryInfo(this.ParentForm.ParentForm.PathPreVersionFolder);
// if (dirPreVersionFolder.Exists == true)
// // PreVersion 폴더 -> Remove 폴더
// Helper.MoveToRemoveFolder(this.ParentForm.ParentForm.PathPreVersionFolder);
// else
// dirPreVersionFolder.Create();
// this.progressBarUpdate.Value += 20;
// // 현재 시스템 폴더 1 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathSDCardSystemFile1Folder, this.ParentForm.ParentForm.PathPreVersionSystemFile1Folder);
// this.progressBarUpdate.Value += 20;
// // 현재 시스템 폴더 2 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathSDCardSystemFile2Folder, this.ParentForm.ParentForm.PathPreVersionSystemFile2Folder);
// this.progressBarUpdate.Value += 20;
// // 현재 Run 폴더 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathLaunchRunFolder, this.ParentForm.ParentForm.PathPreVersionRunFolder);
// this.progressBarUpdate.Value += 20;
// // USB - UpdateFiles 폴더 -> 현재 Run 폴더
// this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
// Helper.CopyToFolder(this.UpdateFilePath, this.ParentForm.ParentForm.PathLaunchRunFolder);
// this.progressBarUpdate.Value += 100;
// this.ParentForm.Enabled = false;
// this.UpdateStep = DataStore.Step3.Step3;
// this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
//}
#endregion
private void ProgramUpdate()
{
FileInfo[] newFiles;
DirectoryInfo directoryFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
if (directoryFolderUpdateFiles.Exists == false)
directoryFolderUpdateFiles.Create();
this.Check = 0;
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
this.OldFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
if (this.OldFilePath.StartsWith("\\F") == true)
this.RemoveFolderPath = "Flash Disk\\RemoveFile\\";
else
this.RemoveFolderPath = "SD Card\\RemoveFile\\";
newFiles = directoryFolderUpdateFiles.GetFiles();
this.progressBarUpdate.Value += 20;
this.TreatmentRemoveOldFile();
this.progressBarUpdate.Value += 20;
this.TreatmentCopyNewFile(newFiles);
this.progressBarUpdate.Value += 100;
this.ParentForm.Enabled = false;
this.UpdateStep = DataStore.Step3.Step3;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
}
private void TreatmentRemoveOldFile()
{
bool removeFolderCheck = false;
FileInfo[] oldFiles;
FileInfo[] removeFiles;
DirectoryInfo directoryFolderRun = new DirectoryInfo(this.OldFilePath);
DirectoryInfo directoryFolderRemove = new DirectoryInfo(this.RemoveFolderPath);
removeFolderCheck = directoryFolderRemove.Exists;
oldFiles = directoryFolderRun.GetFiles();
if (removeFolderCheck == false)
directoryFolderRemove.Create();
//else
//{
// removeFiles = directoryFolderRemove.GetFiles();
// foreach (FileInfo file in removeFiles)
// file.Delete();
//}
foreach (FileInfo subFile in oldFiles)
subFile.MoveTo(RemoveFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
}
private void TreatmentCopyNewFile(FileInfo[] newFile)
{
// 새 파일 복사
foreach (FileInfo subFile in newFile)
subFile.CopyTo(this.OldFilePath + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
}
private void UpdateLabelStatus(DataStore.Step3 step, DataStore.LanguageID language)
{
switch (step)
{
case DataStore.Step3.Step1:
#region Step1
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "USB를 본체에 삽입 하십시오";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "삽입 후 하단 'Update'버튼을 눌러주십시오";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Please insert usb into the device";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Press the bottom button after inserting";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "请点击下端的按钮更新按钮";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "USB nicht vom Gerät trennen";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Drücken Sie nach dem USB-Anschluss die untere Taste";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Пожалуйста, вставьте USB в устройство";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Нажмите нижнюю кнопку после вставки";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Por favor, inserte USB en el dispositivo";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Presione el botón inferior después de insertar";
break;
default:
break;
}
#endregion
break;
case DataStore.Step3.Step2:
#region Step2
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "업데이트 중...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "USB를 본체에서 분리하지 마십시오";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Updating...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Do not remove the USB from the device";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "更新中...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "请勿断开USB";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Aktualisierung….";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "USB nicht vom Gerät trennen";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Обновление...";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Не отключайте USB";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Actualizando....";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "No desconecte el USB del cuerpo.";
break;
default:
break;
}
#endregion
break;
case DataStore.Step3.Step3:
#region Step3
this.labelMessage2.ForeColor = Color.Red;
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "프로그램 업데이트 완료";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "전원을 끄고 다시 켜주세요";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Program update complete";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Reset the system";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "系统更新完成";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "关掉电源,然后在打开电源";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Programmaktualisierung abgeschlossen";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Mit dem Hauptschalter aus- und einschalten";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Обновление программы завершено";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Выключите питание и затем включите питание";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Actualización del programa completa";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Apague la alimentación y luego encienda la alimentación.";
break;
default:
break;
}
#endregion
break;
default:
break;
}
this.Refresh();
}
private void ProgramUpdateCheck(DialogResult result)
{
DataStore.UpdateCheck check = DataStore.UpdateCheck.Fail;
if (result == DialogResult.Yes)
{
check = this.CheckError();
if (check == DataStore.UpdateCheck.Success)
{
this.buttonUpdate.Enabled = false;
this.UpdateStep = DataStore.Step3.Step2;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
this.ProgramUpdate();
}
else if (check == DataStore.UpdateCheck.NotUsbMomery)
{
DialogFormMessage message = new DialogFormMessage(5, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
else if (check == DataStore.UpdateCheck.NotUpdateFolder)
{
DialogFormMessage message = new DialogFormMessage(9, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
else if (check == DataStore.UpdateCheck.NotFile)
{
DialogFormMessage message = new DialogFormMessage(7, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
}
}
public void DisplayRefresh(SystemStatus status)
{
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.EquipUpdate;
this.ParentForm.ParentForm.SetDisplayMode(DataStore.DisplayMode.Menu);
this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus);
this.DefaultSetting();
}
#endregion
#region Event Handler
private void buttonUpdate_Click(object sender, EventArgs e)
{
DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 3);
DialogResult dr = myDlg.ShowDialog();
myDlg.Close();
this.Refresh();
this.ProgramUpdateCheck(dr);
}
#endregion
}
}