From 67578d022fa5b54241be012e83c9aeef524464f0 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Tue, 1 Aug 2023 14:58:09 +0200 Subject: [PATCH] Extract TrackingTextReader from CsvIndexer. --- Code/CsvIndexer.cs | 36 ++++-------------------------------- Code/TrackingTextReader.cs | 37 +++++++++++++++++++++++++++++++++++++ CsvView.csproj | 1 + UI/FrmCsvViewer.cs | 24 ++++++++++++------------ 4 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 Code/TrackingTextReader.cs diff --git a/Code/CsvIndexer.cs b/Code/CsvIndexer.cs index 9606e39..7ee21bd 100644 --- a/Code/CsvIndexer.cs +++ b/Code/CsvIndexer.cs @@ -51,38 +51,11 @@ namespace CsvView.Code } } - private class TrackingTextReader : TextReader - { - private readonly TextReader _baseReader; - private int _position; - - public TrackingTextReader(TextReader baseReader) - { - _baseReader = baseReader; - } - - public override int Read() - { - _position++; - return _baseReader.Read(); - } - - public override int Peek() - { - return _baseReader.Peek(); - } - - public int Position - { - get { return _position; } - } - } - public void GenerateIndex(string file) { _insideString = false; _index.Clear(); - FileStream stream = new FileStream(file, FileMode.Open); + using (FileStream stream = new FileStream(file, FileMode.Open)) using (StreamReader streamReader = new StreamReader(stream, Encoding.Default, true, 4096)) using (TrackingTextReader reader = new TrackingTextReader(streamReader)) { @@ -100,9 +73,8 @@ namespace CsvView.Code } } } - stream.Close(); } - + private void Index_SaveFile(string indexFile) { if (File.Exists(indexFile)) @@ -123,7 +95,7 @@ namespace CsvView.Code private static List Index_LoadFile(string indexFile) { - var tempIndex = new List(); + List tempIndex = new List(); Stream streamIn = File.Open(indexFile, FileMode.Open); using (BinaryReader binReader = new BinaryReader(streamIn)) @@ -142,7 +114,7 @@ namespace CsvView.Code public void LoadIndexOfFile(string file) { DateTime dtFile = File.GetCreationTime(file); - string indexFile = file + ".idx"; + string indexFile = $"{file}.idx"; if (File.Exists(indexFile) && File.GetCreationTime(indexFile) > dtFile) { _index = Index_LoadFile(indexFile); diff --git a/Code/TrackingTextReader.cs b/Code/TrackingTextReader.cs new file mode 100644 index 0000000..79b76fa --- /dev/null +++ b/Code/TrackingTextReader.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; + +namespace CsvView.Code +{ + public class TrackingTextReader : TextReader + { + private readonly TextReader _baseReader; + private int _position; + + public TrackingTextReader(TextReader baseReader) + { + _baseReader = baseReader; + } + + public override int Read() + { + _position++; + return _baseReader.Read(); + } + + public override int Read(char[] buffer, int index, int count) + { + throw new NotImplementedException("Read buffered method on TrackingTextReader"); + } + + public override int Peek() + { + return _baseReader.Peek(); + } + + public int Position + { + get { return _position; } + } + } +} diff --git a/CsvView.csproj b/CsvView.csproj index 68ffbb0..d582b55 100644 --- a/CsvView.csproj +++ b/CsvView.csproj @@ -66,6 +66,7 @@ + Component diff --git a/UI/FrmCsvViewer.cs b/UI/FrmCsvViewer.cs index a09b059..77c3cb6 100644 --- a/UI/FrmCsvViewer.cs +++ b/UI/FrmCsvViewer.cs @@ -51,7 +51,7 @@ namespace CsvView.UI _loadedFile = fileName; txtPath.Text = fileName; - var csvIndexer = new CsvIndexer(); + CsvIndexer csvIndexer = new CsvIndexer(); csvIndexer.LoadIndexOfFile(_loadedFile); _index = csvIndexer.Index; _totalRegs = _index.Count - 1; @@ -108,16 +108,16 @@ namespace CsvView.UI List currentData = Index_LoadReg((int)currentReg); int y = 0; - const int TexboxPadding = 5; - const int PaddingLeft = 0; - const int PaddingRight = 0; - const int PaddingBetween = 10; - const int LineHeight = 15; + const int textBoxPadding = 5; + const int paddingLeft = 0; + const int paddingRight = 0; + const int paddingBetween = 10; + const int lineHeight = 15; for (int i = 0; i < currentData.Count; i++) { - TextBox txtValue = RenderValue(currentData[i], y, TexboxPadding, PaddingLeft, PaddingRight, LineHeight); + TextBox txtValue = RenderValue(currentData[i], y, textBoxPadding, paddingLeft, paddingRight, lineHeight); pnlData.Controls.Add(txtValue); - y += txtValue.Height + PaddingBetween; + y += txtValue.Height + paddingBetween; } pnlData.Height = y; @@ -125,17 +125,17 @@ namespace CsvView.UI _rendering = false; } - private TextBox RenderValue(string value, int y, int TexboxPadding, int PaddingLeft, int PaddingRight, int LineHeight) + private TextBox RenderValue(string value, int y, int textBoxPadding, int paddingLeft, int paddingRight, int lineHeight) { string[] valueLines = value.Split('\n'); CTextBox txtValue = new CTextBox() { Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right), - Width = pnlData.Width - (PaddingLeft + PaddingRight), - Height = (valueLines.Length * LineHeight) + TexboxPadding, + Width = pnlData.Width - (paddingLeft + paddingRight), + Height = (valueLines.Length * lineHeight) + textBoxPadding, Multiline = (valueLines.Length > 1), Top = y, - Left = PaddingLeft, + Left = paddingLeft, ReadOnly = true, }; for (int j = 0; j < valueLines.Length; j++)