рефакторинг парметров

This commit is contained in:
klavirshik 2024-08-16 02:40:14 +02:00
parent 7676d47374
commit 4e70b4f7e7
6 changed files with 112 additions and 62 deletions

View File

@ -60,8 +60,8 @@ namespace Reseter2
treeView1.Nodes.AddRange(WordsList.ListNodes()); treeView1.Nodes.AddRange(WordsList.ListNodes());
treeView1.SelectedNode. //treeView1.SelectedNode.
//treeView1.MouseCaptureChanged.; //treeView1.MouseCaptureChanged.;
tabControl1.SelectedIndex = 1; tabControl1.SelectedIndex = 1;

View File

@ -184,9 +184,6 @@
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Resources\comp.png" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="reseter.ico" /> <Content Include="reseter.ico" />
</ItemGroup> </ItemGroup>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

View File

@ -1,4 +1,5 @@
using Reseter2.Words; using Reseter2.History;
using Reseter2.Words;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
@ -7,14 +8,15 @@ using System.Runtime.Serialization.Formatters.Binary;
using System.Security.Policy; using System.Security.Policy;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace Reseter2.Setting namespace Reseter2.Setting
{ {
[Serializable] [Serializable]
internal static class SGlobalSetting internal static class SGlobalSetting
{ {
public static SettingHistory settingHistory // public static SettingHistory settingHistory
public static SettingWords settingWords = new SettingWords(); public static SettingWords settingWords = new SettingWords();
public static void LoadSetting() public static void LoadSetting()
{ {
@ -66,9 +68,94 @@ namespace Reseter2.Setting
return (IComp)Clone((object)input); return (IComp)Clone((object)input);
} }
public static void Save() public static bool SaveClose(WordsCategory output, DialogResult ok = DialogResult.No)
{ {
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream Memory = new MemoryStream();
binaryFormatter.Serialize(Memory, output);
FileStream file = null;
Memory.Position = 0;
if (settingWords.HashCheck(Memory) )
{
if (ok == DialogResult.OK)
{
Memory.Close();
Memory.Dispose();
return Save(output);
}
else
{
DialogResult result = MessageBox.Show("Сохранить внесенные изменения?", "Сохранение измененний", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
switch (result)
{
case DialogResult.Yes:
try
{
file = new FileStream(settingWords.PathBase, FileMode.OpenOrCreate);
Memory.Position = 0;
Memory.CopyTo(file);
Memory.Close();
Memory.Dispose();
file.Close();
file.Dispose();
}
catch
{
Memory.Close();
Memory.Dispose();
file.Close();
file.Dispose();
return SaveCheck(output);
}
WordsList.MainCategory = output;
return true;
case DialogResult.No:
return true;
case DialogResult.Cancel:
return false;
}
}
}
return true;
}
public static bool Save(WordsCategory output)
{
return Save(settingWords.PathBase, output);
}
public static bool Save(string path, object output)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream file = null;
try
{
file = new FileStream(path, FileMode.OpenOrCreate);
binaryFormatter.Serialize(file, output);
file.Close();
file.Dispose();
return true;
}
catch
{
file.Close();
file.Dispose();
return SaveCheck(output);
}
}
public static bool SaveCheck(object output)
{
DialogResult result1 = MessageBox.Show("Файл занят другой программой.\nПовторить еще раз?", "Ошибка сохранения", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
switch (result1)
{
case (DialogResult.Retry):
return SaveCheck(output);
case (DialogResult.Abort):
return true;
}
return false;
} }

View File

@ -35,7 +35,12 @@ namespace Reseter2.Setting
hash = Hash.ComputeHash(memory); hash = Hash.ComputeHash(memory);
} }
public bool HashCheck(MemoryStream memory)
{
byte[] hashSave = Hash.ComputeHash(memory);
return !hash.SequenceEqual(hashSave);
}
} }
} }

View File

@ -49,7 +49,7 @@ namespace Reseter2.Words
InitializeComponent(); InitializeComponent();
cb_create.Items.Add("Категория"); cb_create.Items.Add("Категория");
cb_create.Items.Add("Компьютер"); cb_create.Items.Add("Компьютер");
cb_create.SelectedIndex = 0; cb_create.SelectedIndex = 1;
treeView1.ItemDrag += new ItemDragEventHandler(TreeView1_ItemDrag); treeView1.ItemDrag += new ItemDragEventHandler(TreeView1_ItemDrag);
treeView1.DragEnter += new DragEventHandler(TreeView1_DragEnter); treeView1.DragEnter += new DragEventHandler(TreeView1_DragEnter);
treeView1.DragOver += new DragEventHandler(TreeView1_DragOver); treeView1.DragOver += new DragEventHandler(TreeView1_DragOver);
@ -295,39 +295,16 @@ namespace Reseter2.Words
control.Visible = false; control.Visible = false;
control.Visible = true; control.Visible = true;
} }
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream Memory = new MemoryStream(); if (!SGlobalSetting.SaveClose(ChangeCategory, this.DialogResult))
binaryFormatter.Serialize(Memory, ChangeCategory);
Memory.Position = 0;
byte[] hashSave = Hash.ComputeHash(Memory);
if (!hash.SequenceEqual(hashSave))
{ {
DialogResult result = MessageBox.Show("Сохранить внесенные изменения?", "Сохранение измененний", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); e.Cancel = true;
switch (result)
{
case DialogResult.Yes:
FileStream file = new FileStream("base.dat", FileMode.OpenOrCreate);
Memory.Position = 0;
Memory.CopyTo(file);
Memory.Close();
Memory.Dispose();
file.Close();
file.Dispose();
WordsList.MainCategory = ChangeCategory;
this.DialogResult = DialogResult.OK;
break;
case DialogResult.No:
this.DialogResult = DialogResult.Abort;
break;
case DialogResult.Cancel:
e.Cancel = true;
break;
}
} }
else
{
WordsList.MainCategory = ChangeCategory;
}
} }
private void bt_deleteItem_Click(object sender, EventArgs e) private void bt_deleteItem_Click(object sender, EventArgs e)
@ -411,20 +388,9 @@ namespace Reseter2.Words
private void bt_saveClose_Click(object sender, EventArgs e) private void bt_saveClose_Click(object sender, EventArgs e)
{ {
if (control != null)
{
control.Visible = false;
control.Dispose();
}
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream file = new FileStream("base.dat", FileMode.OpenOrCreate);
binaryFormatter.Serialize(file, ChangeCategory);
file.Close();
file.Dispose();
WordsList.MainCategory = ChangeCategory;
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
this.Close();
} }
private void bt_save_Click(object sender, EventArgs e) private void bt_save_Click(object sender, EventArgs e)
@ -434,13 +400,8 @@ namespace Reseter2.Words
control.Visible = false; control.Visible = false;
control.Visible = true; control.Visible = true;
} }
BinaryFormatter binaryFormatter = new BinaryFormatter(); if(SGlobalSetting.Save(ChangeCategory)) WordsList.MainCategory = ChangeCategory;
FileStream file = new FileStream("base.dat", FileMode.OpenOrCreate); SGlobalSetting.Clone(WordsList.MainCategory);
binaryFormatter.Serialize(file, ChangeCategory);
file.Close();
file.Dispose();
WordsList.MainCategory = ChangeCategory;
} }
private void bt_close_Click(object sender, EventArgs e) private void bt_close_Click(object sender, EventArgs e)