diff --git a/osrepodbmgr.Core/AlgoEnum.cs b/osrepodbmgr.Core/AlgoEnum.cs index 5983feb..ae35797 100644 --- a/osrepodbmgr.Core/AlgoEnum.cs +++ b/osrepodbmgr.Core/AlgoEnum.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + namespace osrepodbmgr.Core { public enum AlgoEnum @@ -34,4 +35,4 @@ namespace osrepodbmgr.Core LZMA, LZip } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Checksum.cs b/osrepodbmgr.Core/Checksum.cs index 9576dfd..51e002e 100644 --- a/osrepodbmgr.Core/Checksum.cs +++ b/osrepodbmgr.Core/Checksum.cs @@ -29,6 +29,7 @@ // ---------------------------------------------------------------------------- // Copyright © 2011-2016 Natalia Portillo // ****************************************************************************/ + using System.Collections.Generic; using System.Threading; using DiscImageChef.Checksums; @@ -39,78 +40,78 @@ namespace osrepodbmgr.Core class Checksum { Adler32Context adler32ctx; - Crc16Context crc16ctx; - Crc32Context crc32ctx; - Crc64Context crc64ctx; - Md5Context md5ctx; - Ripemd160Context ripemd160ctx; - Sha1Context sha1ctx; - Sha256Context sha256ctx; - Sha384Context sha384ctx; - Sha512Context sha512ctx; - SpamSumContext ssctx; - - Thread adlerThread; - Thread crc16Thread; - Thread crc32Thread; - Thread crc64Thread; - Thread md5Thread; - Thread ripemd160Thread; - Thread sha1Thread; - Thread sha256Thread; - Thread sha384Thread; - Thread sha512Thread; - Thread spamsumThread; adlerPacket adlerPkt; - crc16Packet crc16Pkt; - crc32Packet crc32Pkt; - crc64Packet crc64Pkt; - md5Packet md5Pkt; - ripemd160Packet ripemd160Pkt; - sha1Packet sha1Pkt; - sha256Packet sha256Pkt; - sha384Packet sha384Pkt; - sha512Packet sha512Pkt; - spamsumPacket spamsumPkt; + + Thread adlerThread; + Crc16Context crc16ctx; + crc16Packet crc16Pkt; + Thread crc16Thread; + Crc32Context crc32ctx; + crc32Packet crc32Pkt; + Thread crc32Thread; + Crc64Context crc64ctx; + crc64Packet crc64Pkt; + Thread crc64Thread; + Md5Context md5ctx; + md5Packet md5Pkt; + Thread md5Thread; + Ripemd160Context ripemd160ctx; + ripemd160Packet ripemd160Pkt; + Thread ripemd160Thread; + Sha1Context sha1ctx; + sha1Packet sha1Pkt; + Thread sha1Thread; + Sha256Context sha256ctx; + sha256Packet sha256Pkt; + Thread sha256Thread; + Sha384Context sha384ctx; + sha384Packet sha384Pkt; + Thread sha384Thread; + Sha512Context sha512ctx; + sha512Packet sha512Pkt; + Thread sha512Thread; + spamsumPacket spamsumPkt; + Thread spamsumThread; + SpamSumContext ssctx; internal Checksum() { - adler32ctx = new Adler32Context(); - crc16ctx = new Crc16Context(); - crc32ctx = new Crc32Context(); - crc64ctx = new Crc64Context(); - md5ctx = new Md5Context(); + adler32ctx = new Adler32Context(); + crc16ctx = new Crc16Context(); + crc32ctx = new Crc32Context(); + crc64ctx = new Crc64Context(); + md5ctx = new Md5Context(); ripemd160ctx = new Ripemd160Context(); - sha1ctx = new Sha1Context(); - sha256ctx = new Sha256Context(); - sha384ctx = new Sha384Context(); - sha512ctx = new Sha512Context(); - ssctx = new SpamSumContext(); + sha1ctx = new Sha1Context(); + sha256ctx = new Sha256Context(); + sha384ctx = new Sha384Context(); + sha512ctx = new Sha512Context(); + ssctx = new SpamSumContext(); - adlerThread = new Thread(updateAdler); - crc16Thread = new Thread(updateCRC16); - crc32Thread = new Thread(updateCRC32); - crc64Thread = new Thread(updateCRC64); - md5Thread = new Thread(updateMD5); + adlerThread = new Thread(updateAdler); + crc16Thread = new Thread(updateCRC16); + crc32Thread = new Thread(updateCRC32); + crc64Thread = new Thread(updateCRC64); + md5Thread = new Thread(updateMD5); ripemd160Thread = new Thread(updateRIPEMD160); - sha1Thread = new Thread(updateSHA1); - sha256Thread = new Thread(updateSHA256); - sha384Thread = new Thread(updateSHA384); - sha512Thread = new Thread(updateSHA512); - spamsumThread = new Thread(updateSpamSum); + sha1Thread = new Thread(updateSHA1); + sha256Thread = new Thread(updateSHA256); + sha384Thread = new Thread(updateSHA384); + sha512Thread = new Thread(updateSHA512); + spamsumThread = new Thread(updateSpamSum); - adlerPkt = new adlerPacket(); - crc16Pkt = new crc16Packet(); - crc32Pkt = new crc32Packet(); - crc64Pkt = new crc64Packet(); - md5Pkt = new md5Packet(); + adlerPkt = new adlerPacket(); + crc16Pkt = new crc16Packet(); + crc32Pkt = new crc32Packet(); + crc64Pkt = new crc64Packet(); + md5Pkt = new md5Packet(); ripemd160Pkt = new ripemd160Packet(); - sha1Pkt = new sha1Packet(); - sha256Pkt = new sha256Packet(); - sha384Pkt = new sha384Packet(); - sha512Pkt = new sha512Packet(); - spamsumPkt = new spamsumPacket(); + sha1Pkt = new sha1Packet(); + sha256Pkt = new sha256Packet(); + sha384Pkt = new sha384Packet(); + sha512Pkt = new sha512Packet(); + spamsumPkt = new spamsumPacket(); adler32ctx.Init(); adlerPkt.context = adler32ctx; @@ -161,85 +162,58 @@ namespace osrepodbmgr.Core spamsumPkt.data = data; spamsumThread.Start(spamsumPkt); - while(adlerThread.IsAlive || crc16Thread.IsAlive || - crc32Thread.IsAlive || crc64Thread.IsAlive || - md5Thread.IsAlive || ripemd160Thread.IsAlive || - sha1Thread.IsAlive || sha256Thread.IsAlive || - sha384Thread.IsAlive || sha512Thread.IsAlive || - spamsumThread.IsAlive) - { - } + while(adlerThread.IsAlive || crc16Thread.IsAlive || crc32Thread.IsAlive || crc64Thread.IsAlive || + md5Thread.IsAlive || ripemd160Thread.IsAlive || sha1Thread.IsAlive || sha256Thread.IsAlive || + sha384Thread.IsAlive || sha512Thread.IsAlive || spamsumThread.IsAlive) { } - adlerThread = new Thread(updateAdler); - crc16Thread = new Thread(updateCRC16); - crc32Thread = new Thread(updateCRC32); - crc64Thread = new Thread(updateCRC64); - md5Thread = new Thread(updateMD5); + adlerThread = new Thread(updateAdler); + crc16Thread = new Thread(updateCRC16); + crc32Thread = new Thread(updateCRC32); + crc64Thread = new Thread(updateCRC64); + md5Thread = new Thread(updateMD5); ripemd160Thread = new Thread(updateRIPEMD160); - sha1Thread = new Thread(updateSHA1); - sha256Thread = new Thread(updateSHA256); - sha384Thread = new Thread(updateSHA384); - sha512Thread = new Thread(updateSHA512); - spamsumThread = new Thread(updateSpamSum); + sha1Thread = new Thread(updateSHA1); + sha256Thread = new Thread(updateSHA256); + sha384Thread = new Thread(updateSHA384); + sha512Thread = new Thread(updateSHA512); + spamsumThread = new Thread(updateSpamSum); } internal List End() { List chks = new List(); - ChecksumType chk = new ChecksumType(); - chk.type = ChecksumTypeType.adler32; - chk.Value = adler32ctx.End(); + ChecksumType chk = new ChecksumType {type = ChecksumTypeType.adler32, Value = adler32ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc16; - chk.Value = crc16ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc16, Value = crc16ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc32; - chk.Value = crc32ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc32, Value = crc32ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc64; - chk.Value = crc64ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc64, Value = crc64ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.md5; - chk.Value = md5ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.md5, Value = md5ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.ripemd160; - chk.Value = ripemd160ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.ripemd160, Value = ripemd160ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha1; - chk.Value = sha1ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha1, Value = sha1ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha256; - chk.Value = sha256ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha256, Value = sha256ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha384; - chk.Value = sha384ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha384, Value = sha384ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha512; - chk.Value = sha512ctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha512, Value = sha512ctx.End()}; chks.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.spamsum; - chk.Value = ssctx.End(); + chk = new ChecksumType {type = ChecksumTypeType.spamsum, Value = ssctx.End()}; chks.Add(chk); return chks; @@ -247,41 +221,41 @@ namespace osrepodbmgr.Core internal static List GetChecksums(byte[] data) { - Adler32Context adler32ctxData = new Adler32Context(); - Crc16Context crc16ctxData = new Crc16Context(); - Crc32Context crc32ctxData = new Crc32Context(); - Crc64Context crc64ctxData = new Crc64Context(); - Md5Context md5ctxData = new Md5Context(); + Adler32Context adler32ctxData = new Adler32Context(); + Crc16Context crc16ctxData = new Crc16Context(); + Crc32Context crc32ctxData = new Crc32Context(); + Crc64Context crc64ctxData = new Crc64Context(); + Md5Context md5ctxData = new Md5Context(); Ripemd160Context ripemd160ctxData = new Ripemd160Context(); - Sha1Context sha1ctxData = new Sha1Context(); - Sha256Context sha256ctxData = new Sha256Context(); - Sha384Context sha384ctxData = new Sha384Context(); - Sha512Context sha512ctxData = new Sha512Context(); - SpamSumContext ssctxData = new SpamSumContext(); + Sha1Context sha1ctxData = new Sha1Context(); + Sha256Context sha256ctxData = new Sha256Context(); + Sha384Context sha384ctxData = new Sha384Context(); + Sha512Context sha512ctxData = new Sha512Context(); + SpamSumContext ssctxData = new SpamSumContext(); - Thread adlerThreadData = new Thread(updateAdler); - Thread crc16ThreadData = new Thread(updateCRC16); - Thread crc32ThreadData = new Thread(updateCRC32); - Thread crc64ThreadData = new Thread(updateCRC64); - Thread md5ThreadData = new Thread(updateMD5); + Thread adlerThreadData = new Thread(updateAdler); + Thread crc16ThreadData = new Thread(updateCRC16); + Thread crc32ThreadData = new Thread(updateCRC32); + Thread crc64ThreadData = new Thread(updateCRC64); + Thread md5ThreadData = new Thread(updateMD5); Thread ripemd160ThreadData = new Thread(updateRIPEMD160); - Thread sha1ThreadData = new Thread(updateSHA1); - Thread sha256ThreadData = new Thread(updateSHA256); - Thread sha384ThreadData = new Thread(updateSHA384); - Thread sha512ThreadData = new Thread(updateSHA512); - Thread spamsumThreadData = new Thread(updateSpamSum); + Thread sha1ThreadData = new Thread(updateSHA1); + Thread sha256ThreadData = new Thread(updateSHA256); + Thread sha384ThreadData = new Thread(updateSHA384); + Thread sha512ThreadData = new Thread(updateSHA512); + Thread spamsumThreadData = new Thread(updateSpamSum); - adlerPacket adlerPktData = new adlerPacket(); - crc16Packet crc16PktData = new crc16Packet(); - crc32Packet crc32PktData = new crc32Packet(); - crc64Packet crc64PktData = new crc64Packet(); - md5Packet md5PktData = new md5Packet(); + adlerPacket adlerPktData = new adlerPacket(); + crc16Packet crc16PktData = new crc16Packet(); + crc32Packet crc32PktData = new crc32Packet(); + crc64Packet crc64PktData = new crc64Packet(); + md5Packet md5PktData = new md5Packet(); ripemd160Packet ripemd160PktData = new ripemd160Packet(); - sha1Packet sha1PktData = new sha1Packet(); - sha256Packet sha256PktData = new sha256Packet(); - sha384Packet sha384PktData = new sha384Packet(); - sha512Packet sha512PktData = new sha512Packet(); - spamsumPacket spamsumPktData = new spamsumPacket(); + sha1Packet sha1PktData = new sha1Packet(); + sha256Packet sha256PktData = new sha256Packet(); + sha384Packet sha384PktData = new sha384Packet(); + sha512Packet sha512PktData = new sha512Packet(); + spamsumPacket spamsumPktData = new spamsumPacket(); adler32ctxData.Init(); adlerPktData.context = adler32ctxData; @@ -329,142 +303,114 @@ namespace osrepodbmgr.Core spamsumPktData.data = data; spamsumThreadData.Start(spamsumPktData); - while(adlerThreadData.IsAlive || crc16ThreadData.IsAlive || - crc32ThreadData.IsAlive || crc64ThreadData.IsAlive || - md5ThreadData.IsAlive || ripemd160ThreadData.IsAlive || - sha1ThreadData.IsAlive || sha256ThreadData.IsAlive || - sha384ThreadData.IsAlive || sha512ThreadData.IsAlive || - spamsumThreadData.IsAlive) - { - } + while(adlerThreadData.IsAlive || crc16ThreadData.IsAlive || crc32ThreadData.IsAlive || + crc64ThreadData.IsAlive || md5ThreadData.IsAlive || ripemd160ThreadData.IsAlive || + sha1ThreadData.IsAlive || sha256ThreadData.IsAlive || sha384ThreadData.IsAlive || + sha512ThreadData.IsAlive || spamsumThreadData.IsAlive) { } List dataChecksums = new List(); - ChecksumType chk; - chk = new ChecksumType(); - chk.type = ChecksumTypeType.adler32; - chk.Value = adler32ctxData.End(); + ChecksumType chk = new ChecksumType {type = ChecksumTypeType.adler32, Value = adler32ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc16; - chk.Value = crc16ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc16, Value = crc16ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc32; - chk.Value = crc32ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc32, Value = crc32ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.crc64; - chk.Value = crc64ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.crc64, Value = crc64ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.md5; - chk.Value = md5ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.md5, Value = md5ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.ripemd160; - chk.Value = ripemd160ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.ripemd160, Value = ripemd160ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha1; - chk.Value = sha1ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha1, Value = sha1ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha256; - chk.Value = sha256ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha256, Value = sha256ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha384; - chk.Value = sha384ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha384, Value = sha384ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.sha512; - chk.Value = sha512ctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.sha512, Value = sha512ctxData.End()}; dataChecksums.Add(chk); - chk = new ChecksumType(); - chk.type = ChecksumTypeType.spamsum; - chk.Value = ssctxData.End(); + chk = new ChecksumType {type = ChecksumTypeType.spamsum, Value = ssctxData.End()}; dataChecksums.Add(chk); return dataChecksums; } #region Threading helpers - struct adlerPacket { public Adler32Context context; - public byte[] data; + public byte[] data; } struct crc16Packet { public Crc16Context context; - public byte[] data; + public byte[] data; } struct crc32Packet { public Crc32Context context; - public byte[] data; + public byte[] data; } struct crc64Packet { public Crc64Context context; - public byte[] data; + public byte[] data; } struct md5Packet { public Md5Context context; - public byte[] data; + public byte[] data; } struct ripemd160Packet { public Ripemd160Context context; - public byte[] data; + public byte[] data; } struct sha1Packet { public Sha1Context context; - public byte[] data; + public byte[] data; } struct sha256Packet { public Sha256Context context; - public byte[] data; + public byte[] data; } struct sha384Packet { public Sha384Context context; - public byte[] data; + public byte[] data; } struct sha512Packet { public Sha512Context context; - public byte[] data; + public byte[] data; } struct spamsumPacket { public SpamSumContext context; - public byte[] data; + public byte[] data; } static void updateAdler(object packet) @@ -521,8 +467,6 @@ namespace osrepodbmgr.Core { ((spamsumPacket)packet).context.Update(((spamsumPacket)packet).data); } - #endregion Threading helpers } -} - +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Context.cs b/osrepodbmgr.Core/Context.cs index 99d0b0d..81adf90 100644 --- a/osrepodbmgr.Core/Context.cs +++ b/osrepodbmgr.Core/Context.cs @@ -1,4 +1,4 @@ -// +// // Author: // Natalia Portillo claunia@claunia.com // @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System.Collections.Generic; using System.Diagnostics; using System.Threading; @@ -34,36 +35,36 @@ namespace osrepodbmgr.Core { public static class Context { - public static List files; - public static List folders; - public static List symlinks; - public static Dictionary hashes; - public static Dictionary foldersDict; - public static Dictionary symlinksDict; - public static string path; - public static DBEntry dbInfo; - public static bool unarUsable; - public static string tmpFolder; - public static long noFilesInArchive; - public static string archiveFormat; - public static Process unarProcess; - public static bool unzipWithUnAr; - public static string selectedFile; - public static OpticalDiscType workingDisc; - public static BlockMediaType workingDisk; - public static CICMMetadataType metadata; - public static bool userExtracting; - public static bool usableDotNetZip; - public static string clamdVersion; - public static bool virusTotalEnabled; - public delegate void UnarChangeStatusDelegate(); - public static event UnarChangeStatusDelegate UnarChangeStatus; + + public static List Files; + public static List Folders; + public static List Symlinks; + public static Dictionary Hashes; + public static Dictionary FoldersDict; + public static Dictionary SymlinksDict; + public static string Path; + public static DbEntry DbInfo; + public static bool UnarUsable; + public static string TmpFolder; + public static long NoFilesInArchive; + public static string ArchiveFormat; + public static Process UnarProcess; + public static bool UnzipWithUnAr; + public static string SelectedFile; + public static OpticalDiscType WorkingDisc; + public static BlockMediaType WorkingDisk; + public static CICMMetadataType Metadata; + public static bool UserExtracting; + public static bool UsableDotNetZip; + public static string ClamdVersion; + public static bool VirusTotalEnabled; + public static event UnarChangeStatusDelegate UnarChangeStatus; public static void CheckUnar() { Workers.FinishedWithText += CheckUnarFinished; - Workers.Failed += CheckUnarFailed; + Workers.Failed += CheckUnarFailed; Thread thdCheckUnar = new Thread(Workers.CheckUnar); thdCheckUnar.Start(); @@ -71,20 +72,18 @@ namespace osrepodbmgr.Core static void CheckUnarFinished(string text) { - unarUsable = true; - if(UnarChangeStatus != null) - UnarChangeStatus(); + UnarUsable = true; + UnarChangeStatus?.Invoke(); Workers.FinishedWithText -= CheckUnarFinished; - Workers.Failed -= CheckUnarFailed; + Workers.Failed -= CheckUnarFailed; } static void CheckUnarFailed(string text) { - unarUsable = false; - if(UnarChangeStatus != null) - UnarChangeStatus(); + UnarUsable = false; + UnarChangeStatus?.Invoke(); Workers.FinishedWithText -= CheckUnarFinished; - Workers.Failed -= CheckUnarFailed; + Workers.Failed -= CheckUnarFailed; } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/DBCore.cs b/osrepodbmgr.Core/DBCore.cs index f536714..774f857 100644 --- a/osrepodbmgr.Core/DBCore.cs +++ b/osrepodbmgr.Core/DBCore.cs @@ -25,25 +25,23 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System.Data; namespace osrepodbmgr.Core { - public abstract class DBCore + public abstract class DbCore { - public abstract bool OpenDB(string database, string server, string user, string password); + public DbOps DbOps; - public abstract void CloseDB(); + public abstract long LastInsertRowId { get; } - public abstract bool CreateDB(string database, string server, string user, string password); + public abstract bool OpenDb(string database, string server, string user, string password); - public DBOps DBOps; + public abstract void CloseDb(); + + public abstract bool CreateDb(string database, string server, string user, string password); public abstract IDbDataAdapter GetNewDataAdapter(); - - public abstract long LastInsertRowId - { - get; - } } } \ No newline at end of file diff --git a/osrepodbmgr.Core/DBOps.cs b/osrepodbmgr.Core/DBOps.cs index a4896ea..de6f1df 100644 --- a/osrepodbmgr.Core/DBOps.cs +++ b/osrepodbmgr.Core/DBOps.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Data; @@ -32,131 +33,131 @@ using System.IO; namespace osrepodbmgr.Core { - public struct DBEntry + public struct DbEntry { - public long id; - public string developer; - public string product; - public string version; - public string languages; - public string architecture; - public string machine; - public string format; - public string description; - public bool oem; - public bool upgrade; - public bool update; - public bool source; - public bool files; - public bool netinstall; - public byte[] xml; - public byte[] json; - public string mdid; + public long Id; + public string Developer; + public string Product; + public string Version; + public string Languages; + public string Architecture; + public string Machine; + public string Format; + public string Description; + public bool Oem; + public bool Upgrade; + public bool Update; + public bool Source; + public bool Files; + public bool Netinstall; + public byte[] Xml; + public byte[] Json; + public string Mdid; } - public class DBFile + public class DbFile { - public ulong Id { get; set; } - public string Sha256 { get; set; } - public bool Crack { get; set; } - public bool? HasVirus { get; set; } - public DateTime? ClamTime { get; set; } + public ulong Id { get; set; } + public string Sha256 { get; set; } + public bool Crack { get; set; } + public bool? HasVirus { get; set; } + public DateTime? ClamTime { get; set; } public DateTime? VirusTotalTime { get; set; } - public string Virus { get; set; } - public long Length { get; set; } + public string Virus { get; set; } + public long Length { get; set; } } - public struct DBOSFile + public struct DbOsFile { - public ulong Id; - public string Path; - public string Sha256; - public long Length; - public DateTime CreationTimeUtc; - public DateTime LastAccessTimeUtc; - public DateTime LastWriteTimeUtc; + public ulong Id; + public string Path; + public string Sha256; + public long Length; + public DateTime CreationTimeUtc; + public DateTime LastAccessTimeUtc; + public DateTime LastWriteTimeUtc; public FileAttributes Attributes; - public bool Crack; + public bool Crack; } - public struct DBFolder + public struct DbFolder { - public ulong Id; - public string Path; - public DateTime CreationTimeUtc; - public DateTime LastAccessTimeUtc; - public DateTime LastWriteTimeUtc; + public ulong Id; + public string Path; + public DateTime CreationTimeUtc; + public DateTime LastAccessTimeUtc; + public DateTime LastWriteTimeUtc; public FileAttributes Attributes; } - public class DBOps + public class DbOps { readonly IDbConnection dbCon; - readonly DBCore dbCore; + readonly DbCore dbCore; - public DBOps(IDbConnection connection, DBCore core) + public DbOps(IDbConnection connection, DbCore core) { - dbCon = connection; + dbCon = connection; dbCore = core; } - public bool GetAllOSes(out List entries) + public bool GetAllOSes(out List entries) { - entries = new List(); + entries = new List(); - const string sql = "SELECT * from oses"; + const string SQL = "SELECT * from oses"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = SQL; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBEntry fEntry = new DBEntry(); - fEntry.id = long.Parse(dRow["id"].ToString()); - fEntry.developer = dRow["developer"].ToString(); - fEntry.product = dRow["product"].ToString(); - fEntry.version = dRow["version"].ToString(); - fEntry.languages = dRow["languages"].ToString(); - fEntry.architecture = dRow["architecture"].ToString(); - fEntry.machine = dRow["machine"].ToString(); - fEntry.format = dRow["format"].ToString(); - fEntry.description = dRow["description"].ToString(); - fEntry.oem = bool.Parse(dRow["oem"].ToString()); - fEntry.upgrade = bool.Parse(dRow["upgrade"].ToString()); - fEntry.update = bool.Parse(dRow["update"].ToString()); - fEntry.source = bool.Parse(dRow["source"].ToString()); - fEntry.files = bool.Parse(dRow["files"].ToString()); - fEntry.netinstall = bool.Parse(dRow["netinstall"].ToString()); - fEntry.mdid = dRow["mdid"].ToString(); + DbEntry fEntry = new DbEntry + { + Id = long.Parse(dRow["id"].ToString()), + Developer = dRow["developer"].ToString(), + Product = dRow["product"].ToString(), + Version = dRow["version"].ToString(), + Languages = dRow["languages"].ToString(), + Architecture = dRow["architecture"].ToString(), + Machine = dRow["machine"].ToString(), + Format = dRow["format"].ToString(), + Description = dRow["description"].ToString(), + Oem = bool.Parse(dRow["oem"].ToString()), + Upgrade = bool.Parse(dRow["upgrade"].ToString()), + Update = bool.Parse(dRow["update"].ToString()), + Source = bool.Parse(dRow["source"].ToString()), + Files = bool.Parse(dRow["files"].ToString()), + Netinstall = bool.Parse(dRow["netinstall"].ToString()), + Mdid = dRow["mdid"].ToString() + }; - if(dRow["xml"] != DBNull.Value) - fEntry.xml = (byte[])dRow["xml"]; - if(dRow["json"] != DBNull.Value) - fEntry.json = (byte[])dRow["json"]; + if(dRow["xml"] != DBNull.Value) fEntry.Xml = (byte[])dRow["xml"]; + if(dRow["json"] != DBNull.Value) fEntry.Json = (byte[])dRow["json"]; entries.Add(fEntry); } return true; } - IDbCommand GetOSCommand(DBEntry entry) + IDbCommand GetOsCommand(DbEntry entry) { IDbCommand dbcmd = dbCon.CreateCommand(); - IDbDataParameter param1 = dbcmd.CreateParameter(); - IDbDataParameter param2 = dbcmd.CreateParameter(); - IDbDataParameter param3 = dbcmd.CreateParameter(); - IDbDataParameter param4 = dbcmd.CreateParameter(); - IDbDataParameter param5 = dbcmd.CreateParameter(); - IDbDataParameter param6 = dbcmd.CreateParameter(); - IDbDataParameter param7 = dbcmd.CreateParameter(); - IDbDataParameter param8 = dbcmd.CreateParameter(); - IDbDataParameter param9 = dbcmd.CreateParameter(); + IDbDataParameter param1 = dbcmd.CreateParameter(); + IDbDataParameter param2 = dbcmd.CreateParameter(); + IDbDataParameter param3 = dbcmd.CreateParameter(); + IDbDataParameter param4 = dbcmd.CreateParameter(); + IDbDataParameter param5 = dbcmd.CreateParameter(); + IDbDataParameter param6 = dbcmd.CreateParameter(); + IDbDataParameter param7 = dbcmd.CreateParameter(); + IDbDataParameter param8 = dbcmd.CreateParameter(); + IDbDataParameter param9 = dbcmd.CreateParameter(); IDbDataParameter param10 = dbcmd.CreateParameter(); IDbDataParameter param11 = dbcmd.CreateParameter(); IDbDataParameter param12 = dbcmd.CreateParameter(); @@ -166,15 +167,15 @@ namespace osrepodbmgr.Core IDbDataParameter param16 = dbcmd.CreateParameter(); IDbDataParameter param17 = dbcmd.CreateParameter(); - param1.ParameterName = "@developer"; - param2.ParameterName = "@product"; - param3.ParameterName = "@version"; - param4.ParameterName = "@languages"; - param5.ParameterName = "@architecture"; - param6.ParameterName = "@machine"; - param7.ParameterName = "@format"; - param8.ParameterName = "@description"; - param9.ParameterName = "@oem"; + param1.ParameterName = "@developer"; + param2.ParameterName = "@product"; + param3.ParameterName = "@version"; + param4.ParameterName = "@languages"; + param5.ParameterName = "@architecture"; + param6.ParameterName = "@machine"; + param7.ParameterName = "@format"; + param8.ParameterName = "@description"; + param9.ParameterName = "@oem"; param10.ParameterName = "@upgrade"; param11.ParameterName = "@update"; param12.ParameterName = "@source"; @@ -184,14 +185,14 @@ namespace osrepodbmgr.Core param16.ParameterName = "@json"; param17.ParameterName = "@mdid"; - param1.DbType = DbType.String; - param2.DbType = DbType.String; - param3.DbType = DbType.String; - param4.DbType = DbType.String; - param5.DbType = DbType.String; - param7.DbType = DbType.String; - param8.DbType = DbType.String; - param9.DbType = DbType.Boolean; + param1.DbType = DbType.String; + param2.DbType = DbType.String; + param3.DbType = DbType.String; + param4.DbType = DbType.String; + param5.DbType = DbType.String; + param7.DbType = DbType.String; + param8.DbType = DbType.String; + param9.DbType = DbType.Boolean; param10.DbType = DbType.Boolean; param11.DbType = DbType.Boolean; param12.DbType = DbType.Boolean; @@ -201,23 +202,23 @@ namespace osrepodbmgr.Core param16.DbType = DbType.Object; param17.DbType = DbType.String; - param1.Value = entry.developer; - param2.Value = entry.product; - param3.Value = entry.version; - param4.Value = entry.languages; - param5.Value = entry.architecture; - param6.Value = entry.machine; - param7.Value = entry.format; - param8.Value = entry.description; - param9.Value = entry.oem; - param10.Value = entry.upgrade; - param11.Value = entry.update; - param12.Value = entry.source; - param13.Value = entry.files; - param14.Value = entry.netinstall; - param15.Value = entry.xml; - param16.Value = entry.json; - param17.Value = entry.mdid; + param1.Value = entry.Developer; + param2.Value = entry.Product; + param3.Value = entry.Version; + param4.Value = entry.Languages; + param5.Value = entry.Architecture; + param6.Value = entry.Machine; + param7.Value = entry.Format; + param8.Value = entry.Description; + param9.Value = entry.Oem; + param10.Value = entry.Upgrade; + param11.Value = entry.Update; + param12.Value = entry.Source; + param13.Value = entry.Files; + param14.Value = entry.Netinstall; + param15.Value = entry.Xml; + param16.Value = entry.Json; + param17.Value = entry.Mdid; dbcmd.Parameters.Add(param1); dbcmd.Parameters.Add(param2); @@ -240,16 +241,17 @@ namespace osrepodbmgr.Core return dbcmd; } - public bool AddOS(DBEntry entry, out long id) + public bool AddOs(DbEntry entry, out long id) { - IDbCommand dbcmd = GetOSCommand(entry); + IDbCommand dbcmd = GetOsCommand(entry); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - const string sql = "INSERT INTO oses (developer, product, version, languages, architecture, machine, format, description, oem, upgrade, `update`, source, files, netinstall, xml, json, mdid)" + + const string SQL = + "INSERT INTO oses (developer, product, version, languages, architecture, machine, format, description, oem, upgrade, `update`, source, files, netinstall, xml, json, mdid)" + " VALUES (@developer, @product, @version, @languages, @architecture, @machine, @format, @description, @oem, @upgrade, @update, @source, @files, @netinstall, @xml, @json, @mdid)"; - dbcmd.CommandText = sql; + dbcmd.CommandText = SQL; dbcmd.ExecuteNonQuery(); trans.Commit(); @@ -260,7 +262,7 @@ namespace osrepodbmgr.Core return true; } - IDbCommand GetFileCommand(DBFile entry) + IDbCommand GetFileCommand(DbFile entry) { IDbCommand dbcmd = dbCon.CreateCommand(); @@ -290,14 +292,8 @@ namespace osrepodbmgr.Core param1.Value = entry.Sha256; param2.Value = entry.Crack; param3.Value = entry.HasVirus; - if(entry.ClamTime != null) - param4.Value = entry.ClamTime.Value.ToString("yyyy-MM-dd HH:mm"); - else - param4.Value = null; - if(entry.VirusTotalTime != null) - param5.Value = entry.VirusTotalTime.Value.ToString("yyyy-MM-dd HH:mm"); - else - param5.Value = null; + param4.Value = entry.ClamTime?.ToString("yyyy-MM-dd HH:mm"); + param5.Value = entry.VirusTotalTime?.ToString("yyyy-MM-dd HH:mm"); param6.Value = entry.Virus; param7.Value = entry.Length; @@ -312,16 +308,17 @@ namespace osrepodbmgr.Core return dbcmd; } - public bool UpdateFile(DBFile file) + public bool UpdateFile(DbFile file) { - IDbCommand dbcmd = GetFileCommand(file); + IDbCommand dbcmd = GetFileCommand(file); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - const string sql = "UPDATE files SET crack = @crack, hasvirus = @hasvirus, clamtime = @clamtime, vtotaltime = @vtotaltime, virus = @virus, length = @length " + + const string SQL = + "UPDATE files SET crack = @crack, hasvirus = @hasvirus, clamtime = @clamtime, vtotaltime = @vtotaltime, virus = @virus, length = @length " + "WHERE sha256 = @sha256"; - dbcmd.CommandText = sql; + dbcmd.CommandText = SQL; dbcmd.ExecuteNonQuery(); trans.Commit(); @@ -330,16 +327,17 @@ namespace osrepodbmgr.Core return true; } - public bool AddFile(DBFile file) + public bool AddFile(DbFile file) { - IDbCommand dbcmd = GetFileCommand(file); + IDbCommand dbcmd = GetFileCommand(file); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - const string sql = "INSERT INTO `files` (`sha256`, `crack`, `hasvirus`, `clamtime`, `vtotaltime`, `virus`, `length`)" + - " VALUES (@sha256, @crack, @hasvirus, @clamtime, @vtotaltime, @virus, @length)"; + const string SQL = + "INSERT INTO `files` (`sha256`, `crack`, `hasvirus`, `clamtime`, `vtotaltime`, `virus`, `length`)" + + " VALUES (@sha256, @crack, @hasvirus, @clamtime, @vtotaltime, @virus, @length)"; - dbcmd.CommandText = sql; + dbcmd.CommandText = SQL; dbcmd.ExecuteNonQuery(); trans.Commit(); @@ -350,74 +348,68 @@ namespace osrepodbmgr.Core public bool ExistsFile(string hash) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataParameter param1 = dbcmd.CreateParameter(); param1.ParameterName = "@hash"; - param1.DbType = DbType.String; - param1.Value = hash; + param1.DbType = DbType.String; + param1.Value = hash; dbcmd.Parameters.Add(param1); - dbcmd.CommandText = "SELECT * FROM files WHERE sha256 = @hash"; - DataSet dataSet = new DataSet(); + dbcmd.CommandText = "SELECT * FROM files WHERE sha256 = @hash"; + DataSet dataSet = new DataSet(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dataAdapter.SelectCommand = dbcmd; + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; - foreach(DataRow dRow in dataTable.Rows) - { - return true; - } + foreach(DataRow dRow in dataTable.Rows) return true; return false; } public ulong GetFilesCount() { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); dbcmd.CommandText = "SELECT COUNT(*) FROM files"; - object count = dbcmd.ExecuteScalar(); + object count = dbcmd.ExecuteScalar(); dbcmd.Dispose(); - try - { - return Convert.ToUInt64(count); - } + try { return Convert.ToUInt64(count); } catch { return 0; } } - public DBFile GetFile(string hash) + public DbFile GetFile(string hash) { - string sql = string.Format("SELECT * FROM files WHERE sha256 = '{0}'", hash); + string sql = $"SELECT * FROM files WHERE sha256 = '{hash}'"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBFile fEntry = new DBFile(); + DbFile fEntry = new DbFile + { + Id = ulong.Parse(dRow["id"].ToString()), + Sha256 = dRow["sha256"].ToString(), + Crack = bool.Parse(dRow["crack"].ToString()), + Virus = dRow["virus"].ToString(), + Length = long.Parse(dRow["length"].ToString()) + }; - fEntry.Id = ulong.Parse(dRow["id"].ToString()); - fEntry.Sha256 = dRow["sha256"].ToString(); - fEntry.Crack = bool.Parse(dRow["crack"].ToString()); - if(dRow["hasvirus"] == DBNull.Value) - fEntry.HasVirus = null; + if(dRow["hasvirus"] == DBNull.Value) fEntry.HasVirus = null; + else fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); + if(dRow["clamtime"] == DBNull.Value) fEntry.ClamTime = null; else - fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); - if(dRow["clamtime"] == DBNull.Value) - fEntry.ClamTime = null; + fEntry.ClamTime = + DateTime.Parse(dRow["clamtime"].ToString()); + if(dRow["vtotaltime"] == DBNull.Value) fEntry.VirusTotalTime = null; else - fEntry.ClamTime = DateTime.Parse(dRow["clamtime"].ToString()); - if(dRow["vtotaltime"] == DBNull.Value) - fEntry.VirusTotalTime = null; - else - fEntry.VirusTotalTime = DateTime.Parse(dRow["vtotaltime"].ToString()); - fEntry.Virus = dRow["virus"].ToString(); - fEntry.Length = long.Parse(dRow["length"].ToString()); + fEntry.VirusTotalTime = + DateTime.Parse(dRow["vtotaltime"].ToString()); return fEntry; } @@ -425,41 +417,41 @@ namespace osrepodbmgr.Core return null; } - public bool GetFiles(out List entries, ulong start, ulong count) + public bool GetFiles(out List entries, ulong start, ulong count) { - entries = new List(); + entries = new List(); - string sql = string.Format("SELECT * FROM files ORDER BY sha256 LIMIT {0}, {1}", start, count); + string sql = $"SELECT * FROM files ORDER BY sha256 LIMIT {start}, {count}"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBFile fEntry = new DBFile(); + DbFile fEntry = new DbFile + { + Id = ulong.Parse(dRow["id"].ToString()), + Sha256 = dRow["sha256"].ToString(), + Crack = bool.Parse(dRow["crack"].ToString()), + Virus = dRow["virus"].ToString(), + Length = long.Parse(dRow["length"].ToString()) + }; - fEntry.Id = ulong.Parse(dRow["id"].ToString()); - fEntry.Sha256 = dRow["sha256"].ToString(); - fEntry.Crack = bool.Parse(dRow["crack"].ToString()); - if(dRow["hasvirus"] == DBNull.Value) - fEntry.HasVirus = null; + if(dRow["hasvirus"] == DBNull.Value) fEntry.HasVirus = null; + else fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); + if(dRow["clamtime"] == DBNull.Value) fEntry.ClamTime = null; else - fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); - if(dRow["clamtime"] == DBNull.Value) - fEntry.ClamTime = null; + fEntry.ClamTime = + DateTime.Parse(dRow["clamtime"].ToString()); + if(dRow["vtotaltime"] == DBNull.Value) fEntry.VirusTotalTime = null; else - fEntry.ClamTime = DateTime.Parse(dRow["clamtime"].ToString()); - if(dRow["vtotaltime"] == DBNull.Value) - fEntry.VirusTotalTime = null; - else - fEntry.VirusTotalTime = DateTime.Parse(dRow["vtotaltime"].ToString()); - fEntry.Virus = dRow["virus"].ToString(); - fEntry.Length = long.Parse(dRow["length"].ToString()); + fEntry.VirusTotalTime = + DateTime.Parse(dRow["vtotaltime"].ToString()); entries.Add(fEntry); } @@ -467,41 +459,41 @@ namespace osrepodbmgr.Core return true; } - public bool GetNotAvFiles(out List entries) + public bool GetNotAvFiles(out List entries) { - entries = new List(); + entries = new List(); - const string sql = "SELECT * FROM files WHERE hasvirus IS NULL ORDER BY sha256"; + const string SQL = "SELECT * FROM files WHERE hasvirus IS NULL ORDER BY sha256"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = SQL; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBFile fEntry = new DBFile(); + DbFile fEntry = new DbFile + { + Id = ulong.Parse(dRow["id"].ToString()), + Sha256 = dRow["sha256"].ToString(), + Crack = bool.Parse(dRow["crack"].ToString()), + Virus = dRow["virus"].ToString(), + Length = long.Parse(dRow["length"].ToString()) + }; - fEntry.Id = ulong.Parse(dRow["id"].ToString()); - fEntry.Sha256 = dRow["sha256"].ToString(); - fEntry.Crack = bool.Parse(dRow["crack"].ToString()); - if(dRow["hasvirus"] == DBNull.Value) - fEntry.HasVirus = null; + if(dRow["hasvirus"] == DBNull.Value) fEntry.HasVirus = null; + else fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); + if(dRow["clamtime"] == DBNull.Value) fEntry.ClamTime = null; else - fEntry.HasVirus = bool.Parse(dRow["hasvirus"].ToString()); - if(dRow["clamtime"] == DBNull.Value) - fEntry.ClamTime = null; + fEntry.ClamTime = + DateTime.Parse(dRow["clamtime"].ToString()); + if(dRow["vtotaltime"] == DBNull.Value) fEntry.VirusTotalTime = null; else - fEntry.ClamTime = DateTime.Parse(dRow["clamtime"].ToString()); - if(dRow["vtotaltime"] == DBNull.Value) - fEntry.VirusTotalTime = null; - else - fEntry.VirusTotalTime = DateTime.Parse(dRow["vtotaltime"].ToString()); - fEntry.Virus = dRow["virus"].ToString(); - fEntry.Length = long.Parse(dRow["length"].ToString()); + fEntry.VirusTotalTime = + DateTime.Parse(dRow["vtotaltime"].ToString()); entries.Add(fEntry); } @@ -509,7 +501,7 @@ namespace osrepodbmgr.Core return true; } - IDbCommand GetOSFileCommand(DBOSFile person) + IDbCommand GetOsFileCommand(DbOsFile person) { IDbCommand dbcmd = dbCon.CreateCommand(); @@ -556,14 +548,15 @@ namespace osrepodbmgr.Core return dbcmd; } - public bool AddFileToOS(DBOSFile file, long os) + public bool AddFileToOs(DbOsFile file, long os) { - IDbCommand dbcmd = GetOSFileCommand(file); + IDbCommand dbcmd = GetOsFileCommand(file); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("INSERT INTO `os_{0}` (`path`, `sha256`, `length`, `creation`, `access`, `modification`, `attributes`)" + - " VALUES (@path, @sha256, @length, @creation, @access, @modification, @attributes)", os); + string sql = + $"INSERT INTO `os_{os}` (`path`, `sha256`, `length`, `creation`, `access`, `modification`, `attributes`)" + + " VALUES (@path, @sha256, @length, @creation, @access, @modification, @attributes)"; dbcmd.CommandText = sql; @@ -574,7 +567,7 @@ namespace osrepodbmgr.Core return true; } - IDbCommand GetFolderCommand(DBFolder person) + IDbCommand GetFolderCommand(DbFolder person) { IDbCommand dbcmd = dbCon.CreateCommand(); @@ -611,14 +604,14 @@ namespace osrepodbmgr.Core return dbcmd; } - public bool AddFolderToOS(DBFolder folder, long os) + public bool AddFolderToOs(DbFolder folder, long os) { - IDbCommand dbcmd = GetFolderCommand(folder); + IDbCommand dbcmd = GetFolderCommand(folder); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("INSERT INTO `os_{0}_folders` (`path`, `creation`, `access`, `modification`, `attributes`)" + - " VALUES (@path, @creation, @access, @modification, @attributes)", os); + string sql = $"INSERT INTO `os_{os}_folders` (`path`, `creation`, `access`, `modification`, `attributes`)" + + " VALUES (@path, @creation, @access, @modification, @attributes)"; dbcmd.CommandText = sql; @@ -629,13 +622,13 @@ namespace osrepodbmgr.Core return true; } - public bool RemoveOS(long id) + public bool RemoveOs(long id) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("DROP TABLE IF EXISTS `os_{0}`;", id); + string sql = $"DROP TABLE IF EXISTS `os_{id}`;"; dbcmd.CommandText = sql; @@ -643,11 +636,11 @@ namespace osrepodbmgr.Core trans.Commit(); dbcmd.Dispose(); - dbcmd = dbCon.CreateCommand(); - trans = dbCon.BeginTransaction(); + dbcmd = dbCon.CreateCommand(); + trans = dbCon.BeginTransaction(); dbcmd.Transaction = trans; - sql = string.Format("DROP TABLE IF EXISTS `os_{0}_folders`;", id); + sql = $"DROP TABLE IF EXISTS `os_{id}_folders`;"; dbcmd.CommandText = sql; @@ -655,11 +648,11 @@ namespace osrepodbmgr.Core trans.Commit(); dbcmd.Dispose(); - dbcmd = dbCon.CreateCommand(); - trans = dbCon.BeginTransaction(); + dbcmd = dbCon.CreateCommand(); + trans = dbCon.BeginTransaction(); dbcmd.Transaction = trans; - sql = string.Format("DROP TABLE IF EXISTS `os_{0}_symlinks`;", id); + sql = $"DROP TABLE IF EXISTS `os_{id}_symlinks`;"; dbcmd.CommandText = sql; @@ -667,11 +660,11 @@ namespace osrepodbmgr.Core trans.Commit(); dbcmd.Dispose(); - dbcmd = dbCon.CreateCommand(); - trans = dbCon.BeginTransaction(); + dbcmd = dbCon.CreateCommand(); + trans = dbCon.BeginTransaction(); dbcmd.Transaction = trans; - sql = string.Format("DELETE FROM oses WHERE id = '{0}';", id); + sql = $"DELETE FROM oses WHERE id = '{id}';"; dbcmd.CommandText = sql; @@ -682,24 +675,15 @@ namespace osrepodbmgr.Core return true; } - public bool CreateTableForOS(long id) + public bool CreateTableForOs(long id) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("DROP TABLE IF EXISTS `os_{0}`;\n\n" + - "CREATE TABLE IF NOT EXISTS `os_{0}` (\n" + - " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + - " `path` VARCHAR(8192) NOT NULL,\n" + - " `sha256` VARCHAR(64) NOT NULL,\n\n" + - " `length` BIGINT NOT NULL,\n" + - " `creation` DATETIME NULL,\n" + - " `access` DATETIME NULL,\n" + - " `modification` DATETIME NULL,\n" + - " `attributes` INTEGER NULL);\n\n" + - "CREATE UNIQUE INDEX `os_{0}_id_UNIQUE` ON `os_{0}` (`id` ASC);\n\n" + - "CREATE INDEX `os_{0}_path_idx` ON `os_{0}` (`path` ASC);", id); + string sql = + string.Format("DROP TABLE IF EXISTS `os_{0}`;\n\n" + "CREATE TABLE IF NOT EXISTS `os_{0}` (\n" + " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " `path` VARCHAR(8192) NOT NULL,\n" + " `sha256` VARCHAR(64) NOT NULL,\n\n" + " `length` BIGINT NOT NULL,\n" + " `creation` DATETIME NULL,\n" + " `access` DATETIME NULL,\n" + " `modification` DATETIME NULL,\n" + " `attributes` INTEGER NULL);\n\n" + "CREATE UNIQUE INDEX `os_{0}_id_UNIQUE` ON `os_{0}` (`id` ASC);\n\n" + "CREATE INDEX `os_{0}_path_idx` ON `os_{0}` (`path` ASC);", + id); dbcmd.CommandText = sql; @@ -707,20 +691,13 @@ namespace osrepodbmgr.Core trans.Commit(); dbcmd.Dispose(); - dbcmd = dbCon.CreateCommand(); - trans = dbCon.BeginTransaction(); + dbcmd = dbCon.CreateCommand(); + trans = dbCon.BeginTransaction(); dbcmd.Transaction = trans; - sql = string.Format("DROP TABLE IF EXISTS `os_{0}_folders`;\n\n" + - "CREATE TABLE IF NOT EXISTS `os_{0}_folders` (\n" + - " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + - " `path` VARCHAR(8192) NOT NULL,\n" + - " `creation` DATETIME NULL,\n" + - " `access` DATETIME NULL,\n" + - " `modification` DATETIME NULL,\n" + - " `attributes` INTEGER NULL);\n\n" + - "CREATE UNIQUE INDEX `os_{0}_folders_id_UNIQUE` ON `os_{0}_folders` (`id` ASC);\n\n" + - "CREATE INDEX `os_{0}_folders_path_idx` ON `os_{0}_folders` (`path` ASC);", id); + sql = + string.Format("DROP TABLE IF EXISTS `os_{0}_folders`;\n\n" + "CREATE TABLE IF NOT EXISTS `os_{0}_folders` (\n" + " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " `path` VARCHAR(8192) NOT NULL,\n" + " `creation` DATETIME NULL,\n" + " `access` DATETIME NULL,\n" + " `modification` DATETIME NULL,\n" + " `attributes` INTEGER NULL);\n\n" + "CREATE UNIQUE INDEX `os_{0}_folders_id_UNIQUE` ON `os_{0}_folders` (`id` ASC);\n\n" + "CREATE INDEX `os_{0}_folders_path_idx` ON `os_{0}_folders` (`path` ASC);", + id); dbcmd.CommandText = sql; @@ -731,79 +708,75 @@ namespace osrepodbmgr.Core return true; } - public bool ExistsFileInOS(string hash, long osId) + public bool ExistsFileInOs(string hash, long osId) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataParameter param1 = dbcmd.CreateParameter(); param1.ParameterName = "@hash"; - param1.DbType = DbType.String; - param1.Value = hash; + param1.DbType = DbType.String; + param1.Value = hash; dbcmd.Parameters.Add(param1); - dbcmd.CommandText = string.Format("SELECT * FROM `os_{0}` WHERE sha256 = @hash", osId); - DataSet dataSet = new DataSet(); + dbcmd.CommandText = $"SELECT * FROM `os_{osId}` WHERE sha256 = @hash"; + DataSet dataSet = new DataSet(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dataAdapter.SelectCommand = dbcmd; + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; - foreach(DataRow dRow in dataTable.Rows) - { - return true; - } + foreach(DataRow dRow in dataTable.Rows) return true; return false; } - public bool ExistsOS(string mdid) + public bool ExistsOs(string mdid) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataParameter param1 = dbcmd.CreateParameter(); param1.ParameterName = "@mdid"; - param1.DbType = DbType.String; - param1.Value = mdid; + param1.DbType = DbType.String; + param1.Value = mdid; dbcmd.Parameters.Add(param1); - dbcmd.CommandText = "SELECT * FROM `oses` WHERE mdid = @mdid"; - DataSet dataSet = new DataSet(); + dbcmd.CommandText = "SELECT * FROM `oses` WHERE mdid = @mdid"; + DataSet dataSet = new DataSet(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dataAdapter.SelectCommand = dbcmd; + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; - foreach(DataRow dRow in dataTable.Rows) - { - return true; - } + foreach(DataRow dRow in dataTable.Rows) return true; return false; } - public bool GetAllFilesInOS(out List entries, long id) + public bool GetAllFilesInOs(out List entries, long id) { - entries = new List(); + entries = new List(); - string sql = string.Format("SELECT * from os_{0}", id); + string sql = $"SELECT * from os_{id}"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBOSFile fEntry = new DBOSFile(); - fEntry.Id = ulong.Parse(dRow["id"].ToString()); - fEntry.Path = dRow["path"].ToString(); - fEntry.Sha256 = dRow["sha256"].ToString(); - fEntry.Length = long.Parse(dRow["length"].ToString()); - fEntry.CreationTimeUtc = DateTime.Parse(dRow["creation"].ToString()); - fEntry.LastAccessTimeUtc = DateTime.Parse(dRow["access"].ToString()); - fEntry.LastWriteTimeUtc = DateTime.Parse(dRow["modification"].ToString()); - fEntry.Attributes = (FileAttributes)int.Parse(dRow["attributes"].ToString()); + DbOsFile fEntry = new DbOsFile + { + Id = ulong.Parse(dRow["id"].ToString()), + Path = dRow["path"].ToString(), + Sha256 = dRow["sha256"].ToString(), + Length = long.Parse(dRow["length"].ToString()), + CreationTimeUtc = DateTime.Parse(dRow["creation"].ToString()), + LastAccessTimeUtc = DateTime.Parse(dRow["access"].ToString()), + LastWriteTimeUtc = DateTime.Parse(dRow["modification"].ToString()), + Attributes = (FileAttributes)int.Parse(dRow["attributes"].ToString()) + }; entries.Add(fEntry); } @@ -811,29 +784,31 @@ namespace osrepodbmgr.Core return true; } - public bool GetAllFolders(out List entries, long id) + public bool GetAllFolders(out List entries, long id) { - entries = new List(); + entries = new List(); - string sql = string.Format("SELECT * from os_{0}_folders", id); + string sql = $"SELECT * from os_{id}_folders"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) { - DBFolder fEntry = new DBFolder(); - fEntry.Id = ulong.Parse(dRow["id"].ToString()); - fEntry.Path = dRow["path"].ToString(); - fEntry.CreationTimeUtc = DateTime.Parse(dRow["creation"].ToString()); - fEntry.LastAccessTimeUtc = DateTime.Parse(dRow["access"].ToString()); - fEntry.LastWriteTimeUtc = DateTime.Parse(dRow["modification"].ToString()); - fEntry.Attributes = (FileAttributes)int.Parse(dRow["attributes"].ToString()); + DbFolder fEntry = new DbFolder + { + Id = ulong.Parse(dRow["id"].ToString()), + Path = dRow["path"].ToString(), + CreationTimeUtc = DateTime.Parse(dRow["creation"].ToString()), + LastAccessTimeUtc = DateTime.Parse(dRow["access"].ToString()), + LastWriteTimeUtc = DateTime.Parse(dRow["modification"].ToString()), + Attributes = (FileAttributes)int.Parse(dRow["attributes"].ToString()) + }; entries.Add(fEntry); } @@ -843,17 +818,17 @@ namespace osrepodbmgr.Core public bool ToggleCrack(string hash, bool crack) { - IDbCommand dbcmd = dbCon.CreateCommand(); - IDbTransaction trans = dbCon.BeginTransaction(); + IDbCommand dbcmd = dbCon.CreateCommand(); + IDbTransaction trans = dbCon.BeginTransaction(); IDbDataParameter param1 = dbcmd.CreateParameter(); IDbDataParameter param2 = dbcmd.CreateParameter(); param1.ParameterName = "@hash"; - param1.DbType = DbType.String; - param1.Value = hash; + param1.DbType = DbType.String; + param1.Value = hash; param2.ParameterName = "@crack"; - param2.DbType = DbType.Boolean; - param2.Value = crack; + param2.DbType = DbType.Boolean; + param2.Value = crack; dbcmd.Parameters.Add(param1); dbcmd.Parameters.Add(param2); dbcmd.CommandText = "UPDATE files SET crack = @crack WHERE sha256 = @hash"; @@ -866,12 +841,12 @@ namespace osrepodbmgr.Core public bool DeleteFile(string hash) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataParameter param1 = dbcmd.CreateParameter(); param1.ParameterName = "@sha256"; - param1.DbType = DbType.String; - param1.Value = hash; + param1.DbType = DbType.String; + param1.Value = hash; dbcmd.Parameters.Add(param1); dbcmd.CommandText = "DELETE FROM `files` WHERE sha256 = @sha256"; dbcmd.ExecuteNonQuery(); @@ -881,26 +856,24 @@ namespace osrepodbmgr.Core public bool HasSymlinks(long osId) { - IDbCommand dbcmd = dbCon.CreateCommand(); - dbcmd.CommandText = string.Format("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table' AND name = 'os_{0}_symlinks'", osId); + IDbCommand dbcmd = dbCon.CreateCommand(); + dbcmd.CommandText = + $"SELECT COUNT(*) FROM sqlite_master WHERE type = 'table' AND name = 'os_{osId}_symlinks'"; object count = dbcmd.ExecuteScalar(); dbcmd.Dispose(); return Convert.ToUInt64(count) > 0; } - public bool CreateSymlinkTableForOS(long id) + public bool CreateSymlinkTableForOs(long id) { - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("DROP TABLE IF EXISTS `os_{0}_symlinks`;\n\n" + - "CREATE TABLE IF NOT EXISTS `os_{0}_symlinks` (\n" + - " `path` VARCHAR(8192) PRIMARY KEY,\n" + - " `target` VARCHAR(8192) NOT NULL);\n\n" + - "CREATE UNIQUE INDEX `os_{0}_symlinks_path_UNIQUE` ON `os_{0}_symlinks` (`path` ASC);\n\n" + - "CREATE INDEX `os_{0}_symlinks_target_idx` ON `os_{0}_symlinks` (`target` ASC);", id); + string sql = + string.Format("DROP TABLE IF EXISTS `os_{0}_symlinks`;\n\n" + "CREATE TABLE IF NOT EXISTS `os_{0}_symlinks` (\n" + " `path` VARCHAR(8192) PRIMARY KEY,\n" + " `target` VARCHAR(8192) NOT NULL);\n\n" + "CREATE UNIQUE INDEX `os_{0}_symlinks_path_UNIQUE` ON `os_{0}_symlinks` (`path` ASC);\n\n" + "CREATE INDEX `os_{0}_symlinks_target_idx` ON `os_{0}_symlinks` (`target` ASC);", + id); dbcmd.CommandText = sql; @@ -911,7 +884,7 @@ namespace osrepodbmgr.Core return true; } - public bool AddSymlinkToOS(string path, string target, long os) + public bool AddSymlinkToOs(string path, string target, long os) { IDbCommand dbcmd = dbCon.CreateCommand(); @@ -931,10 +904,9 @@ namespace osrepodbmgr.Core dbcmd.Parameters.Add(param2); IDbTransaction trans = dbCon.BeginTransaction(); - dbcmd.Transaction = trans; + dbcmd.Transaction = trans; - string sql = string.Format("INSERT INTO `os_{0}_symlinks` (`path`, `target`)" + - " VALUES (@path, @target)", os); + string sql = $"INSERT INTO `os_{os}_symlinks` (`path`, `target`)" + " VALUES (@path, @target)"; dbcmd.CommandText = sql; @@ -949,24 +921,21 @@ namespace osrepodbmgr.Core { entries = new Dictionary(); - string sql = string.Format("SELECT * from os_{0}_symlinks", id); + string sql = $"SELECT * from os_{id}_symlinks"; - IDbCommand dbcmd = dbCon.CreateCommand(); + IDbCommand dbcmd = dbCon.CreateCommand(); IDbDataAdapter dataAdapter = dbCore.GetNewDataAdapter(); - dbcmd.CommandText = sql; - DataSet dataSet = new DataSet(); - dataAdapter.SelectCommand = dbcmd; + dbcmd.CommandText = sql; + DataSet dataSet = new DataSet(); + dataAdapter.SelectCommand = dbcmd; dataAdapter.Fill(dataSet); DataTable dataTable = dataSet.Tables[0]; foreach(DataRow dRow in dataTable.Rows) - { if(!entries.ContainsKey(dRow["path"].ToString())) entries.Add(dRow["path"].ToString(), dRow["target"].ToString()); - } return true; } } -} - +} \ No newline at end of file diff --git a/osrepodbmgr.Core/DetectImageFormat.cs b/osrepodbmgr.Core/DetectImageFormat.cs index 8961b92..35f088b 100644 --- a/osrepodbmgr.Core/DetectImageFormat.cs +++ b/osrepodbmgr.Core/DetectImageFormat.cs @@ -29,7 +29,9 @@ // ---------------------------------------------------------------------------- // Copyright © 2011-2016 Natalia Portillo // ****************************************************************************/ + using System; +using System.Linq; using DiscImageChef.DiscImages; using DiscImageChef.Filters; @@ -41,68 +43,47 @@ namespace osrepodbmgr.Core { try { - IMediaImage _imageFormat; PluginBase plugins = new PluginBase(); - _imageFormat = null; + IMediaImage imageFormat = null; // Check all but RAW plugin - foreach(IMediaImage _imageplugin in plugins.ImagePluginsList.Values) - { - if(_imageplugin.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) + foreach(IMediaImage imageplugin in + plugins.ImagePluginsList.Values.Where(p => p.Id != new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) + ) + try { - try - { - if(_imageplugin.Identify(imageFilter)) - { - _imageFormat = _imageplugin; - break; - } - } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - { - } + if(!imageplugin.Identify(imageFilter)) continue; + + imageFormat = imageplugin; + break; } - } + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + catch { } + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body // Check only RAW plugin - if(_imageFormat == null) - { - foreach(IMediaImage _imageplugin in plugins.ImagePluginsList.Values) + if(imageFormat != null) return imageFormat; + + foreach(IMediaImage imageplugin in + plugins.ImagePluginsList.Values.Where(p => p.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) + ) + try { - if(_imageplugin.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) - { - try - { - if(_imageplugin.Identify(imageFilter)) - { - _imageFormat = _imageplugin; - break; - } - } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - { - } - } + if(!imageplugin.Identify(imageFilter)) continue; + + imageFormat = imageplugin; + break; } - } + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + catch { } + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body // Still not recognized - if(_imageFormat == null) - { - return null; - } - return _imageFormat; - } - catch - { - return null; + return imageFormat; } + catch { return null; } } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/DetectOS.cs b/osrepodbmgr.Core/DetectOS.cs index b1cf98a..6f16846 100644 --- a/osrepodbmgr.Core/DetectOS.cs +++ b/osrepodbmgr.Core/DetectOS.cs @@ -35,6 +35,7 @@ // ---------------------------------------------------------------------------- // Copyright © 2011-2016 Natalia Portillo // ****************************************************************************/ + using System; using System.Runtime.InteropServices; @@ -42,39 +43,6 @@ namespace DiscImageChef.Interop { public static class DetectOS { - /// - /// POSIX uname structure, size from OSX, big enough to handle extra fields - /// - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] - struct utsname - { - /// - /// System name - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string sysname; - /// - /// Node name - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string nodename; - /// - /// Release level - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string release; - /// - /// Version level - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string version; - /// - /// Hardware level - /// - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] - public string machine; - } - [DllImport("libc", SetLastError = true)] static extern int uname(out utsname name); @@ -83,122 +51,93 @@ namespace DiscImageChef.Interop public static PlatformID GetRealPlatformID() { - if((int)Environment.OSVersion.Platform < 4 || - (int)Environment.OSVersion.Platform == 5) - { - return (PlatformID)((int)Environment.OSVersion.Platform); - } + if((int)Environment.OSVersion.Platform < 4 || (int)Environment.OSVersion.Platform == 5) + return (PlatformID)(int)Environment.OSVersion.Platform; - utsname unixname; - int error = uname(out unixname); - if(error != 0) - throw new Exception(string.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error())); + int error = uname(out utsname unixname); + if(error != 0) throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}"); switch(unixname.sysname) { // TODO: Differentiate Linux, Android, Tizen case "Linux": - { -#if __ANDROID__ + { + #if __ANDROID__ return PlatformID.Android; -#else - return PlatformID.Linux; -#endif - } + #else + return PlatformID.Linux; + #endif + } case "Darwin": + { + IntPtr pLen = Marshal.AllocHGlobal(sizeof(int)); + int osx_error = OSX_sysctlbyname("hw.machine", IntPtr.Zero, pLen, IntPtr.Zero, 0); + if(osx_error != 0) { - int osx_error; + Marshal.FreeHGlobal(pLen); - IntPtr pLen = Marshal.AllocHGlobal(sizeof(int)); - osx_error = OSX_sysctlbyname("hw.machine", IntPtr.Zero, pLen, IntPtr.Zero, 0); - if(osx_error != 0) - { - Marshal.FreeHGlobal(pLen); - - throw new Exception(string.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error())); - } - - int length = Marshal.ReadInt32(pLen); - IntPtr pStr = Marshal.AllocHGlobal(length); - osx_error = OSX_sysctlbyname("hw.machine", pStr, pLen, IntPtr.Zero, 0); - if(osx_error != 0) - { - Marshal.FreeHGlobal(pStr); - Marshal.FreeHGlobal(pLen); - - throw new Exception(string.Format("Unhandled exception calling uname: {0}", Marshal.GetLastWin32Error())); - } - - string machine = Marshal.PtrToStringAnsi(pStr); + throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}"); + } + int length = Marshal.ReadInt32(pLen); + IntPtr pStr = Marshal.AllocHGlobal(length); + osx_error = OSX_sysctlbyname("hw.machine", pStr, pLen, IntPtr.Zero, 0); + if(osx_error != 0) + { Marshal.FreeHGlobal(pStr); Marshal.FreeHGlobal(pLen); - if(machine.StartsWith("iPad", StringComparison.Ordinal) || - machine.StartsWith("iPod", StringComparison.Ordinal) || - machine.StartsWith("iPhone", StringComparison.Ordinal)) - return PlatformID.iOS; - - return PlatformID.MacOSX; + throw new Exception($"Unhandled exception calling uname: {Marshal.GetLastWin32Error()}"); } - case "GNU": - return PlatformID.Hurd; + + string machine = Marshal.PtrToStringAnsi(pStr); + + Marshal.FreeHGlobal(pStr); + Marshal.FreeHGlobal(pLen); + + if(machine.StartsWith("iPad", StringComparison.Ordinal) || + machine.StartsWith("iPod", StringComparison.Ordinal) || + machine.StartsWith("iPhone", StringComparison.Ordinal)) return PlatformID.iOS; + + return PlatformID.MacOSX; + } + case "GNU": return PlatformID.Hurd; case "FreeBSD": - case "GNU/kFreeBSD": - return PlatformID.FreeBSD; - case "DragonFly": - return PlatformID.DragonFly; - case "Haiku": - return PlatformID.Haiku; - case "HP-UX": - return PlatformID.HPUX; - case "AIX": - return PlatformID.AIX; - case "OS400": - return PlatformID.OS400; + case "GNU/kFreeBSD": return PlatformID.FreeBSD; + case "DragonFly": return PlatformID.DragonFly; + case "Haiku": return PlatformID.Haiku; + case "HP-UX": return PlatformID.HPUX; + case "AIX": return PlatformID.AIX; + case "OS400": return PlatformID.OS400; case "IRIX": - case "IRIX64": - return PlatformID.IRIX; - case "Minix": - return PlatformID.Minix; - case "NetBSD": - return PlatformID.NetBSD; - case "NONSTOP_KERNEL": - return PlatformID.NonStop; - case "OpenBSD": - return PlatformID.OpenBSD; - case "QNX": - return PlatformID.QNX; - case "SINIX-Y": - return PlatformID.SINIX; - case "SunOS": - return PlatformID.Solaris; - case "OSF1": - return PlatformID.Tru64; - case "ULTRIX": - return PlatformID.Ultrix; - case "SCO_SV": - return PlatformID.OpenServer; - case "UnixWare": - return PlatformID.UnixWare; + case "IRIX64": return PlatformID.IRIX; + case "Minix": return PlatformID.Minix; + case "NetBSD": return PlatformID.NetBSD; + case "NONSTOP_KERNEL": return PlatformID.NonStop; + case "OpenBSD": return PlatformID.OpenBSD; + case "QNX": return PlatformID.QNX; + case "SINIX-Y": return PlatformID.SINIX; + case "SunOS": return PlatformID.Solaris; + case "OSF1": return PlatformID.Tru64; + case "ULTRIX": return PlatformID.Ultrix; + case "SCO_SV": return PlatformID.OpenServer; + case "UnixWare": return PlatformID.UnixWare; case "Interix": - case "UWIN-W7": - return PlatformID.Win32NT; + case "UWIN-W7": return PlatformID.Win32NT; default: - { - if(unixname.sysname.StartsWith("CYGWIN_NT", StringComparison.Ordinal) || - unixname.sysname.StartsWith("MINGW32_NT", StringComparison.Ordinal) || - unixname.sysname.StartsWith("MSYS_NT", StringComparison.Ordinal) || - unixname.sysname.StartsWith("UWIN", StringComparison.Ordinal)) - return PlatformID.Win32NT; + { + if(unixname.sysname.StartsWith("CYGWIN_NT", StringComparison.Ordinal) || + unixname.sysname.StartsWith("MINGW32_NT", StringComparison.Ordinal) || + unixname.sysname.StartsWith("MSYS_NT", StringComparison.Ordinal) || + unixname.sysname.StartsWith("UWIN", StringComparison.Ordinal)) return PlatformID.Win32NT; - return PlatformID.Unknown; - } + return PlatformID.Unknown; + } } } /// - /// Checks if the underlying runtime runs in 64-bit mode + /// Checks if the underlying runtime runs in 64-bit mode /// public static bool Is64Bit() { @@ -206,11 +145,44 @@ namespace DiscImageChef.Interop } /// - /// Checks if the underlying runtime runs in 32-bit mode + /// Checks if the underlying runtime runs in 32-bit mode /// public static bool Is32Bit() { return IntPtr.Size == 4; } + + /// + /// POSIX uname structure, size from OSX, big enough to handle extra fields + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + struct utsname + { + /// + /// System name + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string sysname; + /// + /// Node name + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string nodename; + /// + /// Release level + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string release; + /// + /// Version level + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string version; + /// + /// Hardware level + /// + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + public string machine; + } } } \ No newline at end of file diff --git a/osrepodbmgr.Core/IO.cs b/osrepodbmgr.Core/IO.cs index ac7cf03..f2b421b 100644 --- a/osrepodbmgr.Core/IO.cs +++ b/osrepodbmgr.Core/IO.cs @@ -1,96 +1,89 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; +using System.Linq; namespace osrepodbmgr.Core { public static class IO { - public static List EnumerateFiles(string path, string searchPattern, SearchOption searchOption, bool followLinks = true, bool symlinks = true) + public static List EnumerateFiles(string path, string searchPattern, + SearchOption searchOption, + bool followLinks = true, bool symlinks = true) { - if (followLinks) - return new List(Directory.EnumerateFiles(path, searchPattern, searchOption)); + if(followLinks) return new List(Directory.EnumerateFiles(path, searchPattern, searchOption)); - List files = new List(); + List files = new List(); List directories = new List(); - foreach (string file in Directory.EnumerateFiles(path, searchPattern)) + foreach(string file in Directory.EnumerateFiles(path, searchPattern)) { FileInfo fi = new FileInfo(file); - if (fi.Attributes.HasFlag(FileAttributes.ReparsePoint) && symlinks) - files.Add(file); - else if (!fi.Attributes.HasFlag(FileAttributes.ReparsePoint)) + if(fi.Attributes.HasFlag(FileAttributes.ReparsePoint) && symlinks) files.Add(file); + else if(!fi.Attributes.HasFlag(FileAttributes.ReparsePoint)) files.Add(file); } - if (searchOption == SearchOption.AllDirectories) + if(searchOption != SearchOption.AllDirectories) return files; + + foreach(string directory in Directory.EnumerateDirectories(path, searchPattern)) { - foreach (string directory in Directory.EnumerateDirectories(path, searchPattern)) - { - DirectoryInfo di = new DirectoryInfo(directory); - if (!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) - files.AddRange(EnumerateFiles(directory, searchPattern, searchOption, followLinks, symlinks)); - } + DirectoryInfo di = new DirectoryInfo(directory); + if(!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) + files.AddRange(EnumerateFiles(directory, searchPattern, searchOption, followLinks, symlinks)); } return files; } - public static List EnumerateDirectories(string path, string searchPattern, SearchOption searchOption, bool followLinks = true, bool symlinks = true) + public static List EnumerateDirectories(string path, string searchPattern, + SearchOption searchOption, + bool followLinks = true, bool symlinks = true) { - if (followLinks) - return new List(Directory.EnumerateDirectories(path, searchPattern, searchOption)); + if(followLinks) return new List(Directory.EnumerateDirectories(path, searchPattern, searchOption)); List directories = new List(); - if (searchOption == SearchOption.AllDirectories) - { - foreach (string directory in Directory.EnumerateDirectories(path, searchPattern)) - { - DirectoryInfo di = new DirectoryInfo(directory); - if (!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) - directories.Add(directory); - } + if(searchOption != SearchOption.AllDirectories) return directories; - List newDirectories = new List(); + directories.AddRange(from directory in Directory.EnumerateDirectories(path, searchPattern) + let di = new DirectoryInfo(directory) + where !di.Attributes.HasFlag(FileAttributes.ReparsePoint) + select directory); - foreach (string directory in directories) - newDirectories.AddRange(EnumerateDirectories(directory, searchPattern, searchOption, followLinks, symlinks)); + List newDirectories = new List(); - directories.AddRange(newDirectories); - } + foreach(string directory in directories) + newDirectories.AddRange(EnumerateDirectories(directory, searchPattern, searchOption, followLinks, + symlinks)); + + directories.AddRange(newDirectories); return directories; } public static List EnumerateSymlinks(string path, string searchPattern, SearchOption searchOption) { - List links = new List(); List directories = new List(); - foreach (string file in Directory.EnumerateFiles(path, searchPattern)) + List links = (from file in Directory.EnumerateFiles(path, searchPattern) + let fi = new FileInfo(file) + where fi.Attributes.HasFlag(FileAttributes.ReparsePoint) + select file).ToList(); + + if(searchOption != SearchOption.AllDirectories) return links; + + foreach(string directory in Directory.EnumerateDirectories(path, searchPattern)) { - FileInfo fi = new FileInfo(file); - if (fi.Attributes.HasFlag(FileAttributes.ReparsePoint)) - links.Add(file); + DirectoryInfo di = new DirectoryInfo(directory); + if(!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) directories.Add(directory); + else //if (!links.Contains(directory)) + links.Add(directory); } - if (searchOption == SearchOption.AllDirectories) - { - foreach (string directory in Directory.EnumerateDirectories(path, searchPattern)) - { - DirectoryInfo di = new DirectoryInfo(directory); - if (!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) - directories.Add(directory); - else //if (!links.Contains(directory)) - links.Add(directory); - } - - foreach (string directory in directories) - links.AddRange(EnumerateSymlinks(directory, searchPattern, searchOption)); - } + foreach(string directory in directories) + links.AddRange(EnumerateSymlinks(directory, searchPattern, searchOption)); return links; } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/PlatformID.cs b/osrepodbmgr.Core/PlatformID.cs index 9c2bde5..c194c02 100644 --- a/osrepodbmgr.Core/PlatformID.cs +++ b/osrepodbmgr.Core/PlatformID.cs @@ -41,149 +41,149 @@ namespace DiscImageChef.Interop public enum PlatformID { /// - /// Win32s + /// Win32s /// Win32S = 0, /// - /// Win32 (Windows 9x) + /// Win32 (Windows 9x) /// Win32Windows = 1, /// - /// Windows NT + /// Windows NT /// Win32NT = 2, /// - /// Windows Mobile + /// Windows Mobile /// WinCE = 3, /// - /// UNIX (do not use, too generic) + /// UNIX (do not use, too generic) /// Unix = 4, /// - /// Xbox 360 + /// Xbox 360 /// Xbox = 5, /// - /// OS X + /// OS X /// MacOSX = 6, /// - /// iOS is not OS X + /// iOS is not OS X /// iOS = 7, /// - /// Linux + /// Linux /// Linux = 8, /// - /// Sun Solaris + /// Sun Solaris /// Solaris = 9, /// - /// NetBSD + /// NetBSD /// NetBSD = 10, /// - /// OpenBSD + /// OpenBSD /// OpenBSD = 11, /// - /// FreeBSD + /// FreeBSD /// FreeBSD = 12, /// - /// DragonFly BSD + /// DragonFly BSD /// DragonFly = 13, /// - /// Nintendo Wii + /// Nintendo Wii /// Wii = 14, /// - /// Nintendo Wii U + /// Nintendo Wii U /// WiiU = 15, /// - /// Sony PlayStation 3 + /// Sony PlayStation 3 /// PlayStation3 = 16, /// - /// Sony Playstation 4 + /// Sony Playstation 4 /// PlayStation4 = 17, /// - /// Google Android + /// Google Android /// Android = 18, /// - /// Samsung Tizen + /// Samsung Tizen /// Tizen = 19, /// - /// Windows Phone + /// Windows Phone /// WindowsPhone = 20, /// - /// GNU/Hurd + /// GNU/Hurd /// Hurd = 21, /// - /// Haiku + /// Haiku /// Haiku = 22, /// - /// HP-UX + /// HP-UX /// HPUX = 23, /// - /// AIX + /// AIX /// AIX = 24, /// - /// OS/400 + /// OS/400 /// OS400 = 25, /// - /// IRIX + /// IRIX /// IRIX = 26, /// - /// Minix + /// Minix /// Minix = 27, /// - /// NonStop + /// NonStop /// NonStop = 28, /// - /// QNX + /// QNX /// QNX = 29, /// - /// SINIX + /// SINIX /// SINIX = 30, /// - /// Tru64 UNIX + /// Tru64 UNIX /// Tru64 = 31, /// - /// Ultrix + /// Ultrix /// Ultrix = 32, /// - /// SCO OpenServer / SCO UNIX + /// SCO OpenServer / SCO UNIX /// OpenServer = 33, /// - /// SCO UnixWare + /// SCO UnixWare /// UnixWare = 34, /// - /// IBM z/OS + /// IBM z/OS /// - zOS = 35, + zOS = 35, Unknown = -1 } } \ No newline at end of file diff --git a/osrepodbmgr.Core/SQLite.cs b/osrepodbmgr.Core/SQLite.cs index 6b2b624..5c3f075 100644 --- a/osrepodbmgr.Core/SQLite.cs +++ b/osrepodbmgr.Core/SQLite.cs @@ -25,39 +25,36 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Data; using System.Data.SQLite; namespace osrepodbmgr.Core { - public class SQLite : DBCore + public class SQLite : DbCore { SQLiteConnection dbCon; #region implemented abstract members of DBCore - - public override bool OpenDB(string database, string server, string user, string password) + public override bool OpenDb(string database, string server, string user, string password) { try { - string dataSrc = string.Format("URI=file:{0}", database); - dbCon = new SQLiteConnection(dataSrc); + string dataSrc = $"URI=file:{database}"; + dbCon = new SQLiteConnection(dataSrc); dbCon.Open(); - string sql; - sql = "SELECT * FROM osrepodbmgr"; + const string SQL = "SELECT * FROM osrepodbmgr"; - SQLiteCommand dbcmd = dbCon.CreateCommand(); - dbcmd.CommandText = sql; - SQLiteDataAdapter dAdapter = new SQLiteDataAdapter(); - dAdapter.SelectCommand = dbcmd; - DataSet dSet = new DataSet(); + SQLiteCommand dbcmd = dbCon.CreateCommand(); + dbcmd.CommandText = SQL; + SQLiteDataAdapter dAdapter = new SQLiteDataAdapter {SelectCommand = dbcmd}; + DataSet dSet = new DataSet(); dAdapter.Fill(dSet); DataTable dTable = dSet.Tables[0]; - if(dTable.Rows.Count != 1) - return false; + if(dTable.Rows.Count != 1) return false; if((long)dTable.Rows[0]["version"] != 1) { @@ -65,7 +62,7 @@ namespace osrepodbmgr.Core return false; } - DBOps = new DBOps(dbCon, this); + DbOps = new DbOps(dbCon, this); return true; } @@ -78,45 +75,44 @@ namespace osrepodbmgr.Core } } - public override void CloseDB() + public override void CloseDb() { - if(dbCon != null) - dbCon.Close(); + dbCon?.Close(); - DBOps = null; + DbOps = null; } - public override bool CreateDB(string database, string server, string user, string password) + public override bool CreateDb(string database, string server, string user, string password) { try { - string dataSrc = string.Format("URI=file:{0}", database); - dbCon = new SQLiteConnection(dataSrc); + string dataSrc = $"URI=file:{database}"; + dbCon = new SQLiteConnection(dataSrc); dbCon.Open(); SQLiteCommand dbCmd = dbCon.CreateCommand(); - string sql; -#if DEBUG + #if DEBUG Console.WriteLine("Creating osrepodbmgr table"); -#endif + #endif - sql = "CREATE TABLE osrepodbmgr ( version INTEGER, name TEXT )"; + string sql = "CREATE TABLE osrepodbmgr ( version INTEGER, name TEXT )"; dbCmd.CommandText = sql; dbCmd.ExecuteNonQuery(); - sql = "INSERT INTO osrepodbmgr ( version, name ) VALUES ( '1', 'Canary Islands Computer Museum' )"; + sql = + "INSERT INTO osrepodbmgr ( version, name ) VALUES ( '1', 'Canary Islands Computer Museum' )"; dbCmd.CommandText = sql; dbCmd.ExecuteNonQuery(); -#if DEBUG + #if DEBUG Console.WriteLine("Creating oses table"); -#endif + #endif dbCmd.CommandText = Schema.OSesTableSql; dbCmd.ExecuteNonQuery(); -#if DEBUG + #if DEBUG Console.WriteLine("Creating files table"); -#endif + #endif dbCmd.CommandText = Schema.FilesTableSql; dbCmd.ExecuteNonQuery(); @@ -138,12 +134,7 @@ namespace osrepodbmgr.Core return new SQLiteDataAdapter(); } - public override long LastInsertRowId - { - get { return dbCon.LastInsertRowId; } - } - + public override long LastInsertRowId => dbCon.LastInsertRowId; #endregion } -} - +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Schema.cs b/osrepodbmgr.Core/Schema.cs index cf8e3ce..37096ea 100644 --- a/osrepodbmgr.Core/Schema.cs +++ b/osrepodbmgr.Core/Schema.cs @@ -1,4 +1,4 @@ -// +// // Author: // Natalia Portillo claunia@claunia.com // @@ -25,61 +25,61 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + namespace osrepodbmgr.Core { public static class Schema { - public const string FilesTableSql = "-- -----------------------------------------------------\n" + - "-- Table `files`\n" + - "-- -----------------------------------------------------\n" + - "DROP TABLE IF EXISTS `files` ;\n\n" + - "CREATE TABLE IF NOT EXISTS `files` (\n" + - " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + - " `sha256` VARCHAR(64) NOT NULL,\n" + - " `crack` BOOLEAN NOT NULL,\n" + - " `hasvirus` BOOLEAN NULL,\n" + - " `clamtime` DATETIME NULL,\n" + - " `vtotaltime` DATETIME NULL,\n" + - " `virus` VARCHAR(128) NULL,\n" + - " `length` BIGINT NOT NULL);\n\n" + - "CREATE UNIQUE INDEX `files_id_UNIQUE` ON `files` (`id` ASC);\n\n" + - "CREATE UNIQUE INDEX `files_sha256_UNIQUE` ON `files` (`sha256` ASC);\n\n" + - "CREATE INDEX `files_hasvirus_idx` ON `files` (`hasvirus` ASC);\n\n" + - "CREATE INDEX `files_virus_idx` ON `files` (`virus` ASC);\n\n" + - "CREATE INDEX `files_length_idx` ON `files` (`length` ASC);"; + public const string FilesTableSql = "-- -----------------------------------------------------\n" + + "-- Table `files`\n" + + "-- -----------------------------------------------------\n" + + "DROP TABLE IF EXISTS `files` ;\n\n" + + "CREATE TABLE IF NOT EXISTS `files` (\n" + + " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + + " `sha256` VARCHAR(64) NOT NULL,\n" + + " `crack` BOOLEAN NOT NULL,\n" + + " `hasvirus` BOOLEAN NULL,\n" + + " `clamtime` DATETIME NULL,\n" + + " `vtotaltime` DATETIME NULL,\n" + + " `virus` VARCHAR(128) NULL,\n" + + " `length` BIGINT NOT NULL);\n\n" + + "CREATE UNIQUE INDEX `files_id_UNIQUE` ON `files` (`id` ASC);\n\n" + + "CREATE UNIQUE INDEX `files_sha256_UNIQUE` ON `files` (`sha256` ASC);\n\n" + + "CREATE INDEX `files_hasvirus_idx` ON `files` (`hasvirus` ASC);\n\n" + + "CREATE INDEX `files_virus_idx` ON `files` (`virus` ASC);\n\n" + + "CREATE INDEX `files_length_idx` ON `files` (`length` ASC);"; - public const string OSesTableSql = "-- -----------------------------------------------------\n" + - "-- Table `oses`\n" + - "-- -----------------------------------------------------\n" + - "DROP TABLE IF EXISTS `oses` ;\n\n" + - "CREATE TABLE IF NOT EXISTS `oses` (\n" + - " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + - " `mdid` CHAR(40) NOT NULL,\n" + - " `developer` VARCHAR(45) NOT NULL,\n" + - " `product` VARCHAR(45) NOT NULL,\n" + - " `version` VARCHAR(45) NULL,\n" + - " `languages` VARCHAR(45) NULL,\n" + - " `architecture` VARCHAR(45) NULL,\n" + - " `machine` VARCHAR(45) NULL,\n" + - " `format` VARCHAR(45) NULL,\n" + - " `description` VARCHAR(45) NULL,\n" + - " `oem` BOOLEAN NOT NULL,\n" + - " `upgrade` BOOLEAN NOT NULL,\n" + - " `update` BOOLEAN NOT NULL,\n" + - " `source` BOOLEAN NOT NULL,\n" + - " `files` BOOLEAN NOT NULL,\n" + - " `netinstall` BOOLEAN NOT NULL,\n" + - " `xml` BLOB NULL,\n" + - " `json` BLOB NULL);\n\n" + - "CREATE UNIQUE INDEX `oses_id_UNIQUE` ON `oses` (`id` ASC);\n\n" + - "CREATE UNIQUE INDEX `oses_mdid_UNIQUE` ON `oses` (`mdid` ASC);\n\n" + - "CREATE INDEX `oses_developer_idx` ON `oses` (`developer` ASC);\n\n" + - "CREATE INDEX `oses_product_idx` ON `oses` (`product` ASC);\n\n" + - "CREATE INDEX `oses_version_idx` ON `oses` (`version` ASC);\n\n" + - "CREATE INDEX `oses_architecture_idx` ON `oses` (`architecture` ASC);\n\n" + - "CREATE INDEX `oses_format_idx` ON `oses` (`format` ASC);\n\n" + - "CREATE INDEX `oses_machine_idx` ON `oses` (`machine` ASC);\n\n" + - "CREATE INDEX `oses_description_idx` ON `oses` (`description` ASC);"; + public const string OSesTableSql = "-- -----------------------------------------------------\n" + + "-- Table `oses`\n" + + "-- -----------------------------------------------------\n" + + "DROP TABLE IF EXISTS `oses` ;\n\n" + + "CREATE TABLE IF NOT EXISTS `oses` (\n" + + " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" + + " `mdid` CHAR(40) NOT NULL,\n" + + " `developer` VARCHAR(45) NOT NULL,\n" + + " `product` VARCHAR(45) NOT NULL,\n" + + " `version` VARCHAR(45) NULL,\n" + + " `languages` VARCHAR(45) NULL,\n" + + " `architecture` VARCHAR(45) NULL,\n" + + " `machine` VARCHAR(45) NULL,\n" + + " `format` VARCHAR(45) NULL,\n" + + " `description` VARCHAR(45) NULL,\n" + + " `oem` BOOLEAN NOT NULL,\n" + + " `upgrade` BOOLEAN NOT NULL,\n" + + " `update` BOOLEAN NOT NULL,\n" + + " `source` BOOLEAN NOT NULL,\n" + + " `files` BOOLEAN NOT NULL,\n" + + " `netinstall` BOOLEAN NOT NULL,\n" + + " `xml` BLOB NULL,\n" + + " `json` BLOB NULL);\n\n" + + "CREATE UNIQUE INDEX `oses_id_UNIQUE` ON `oses` (`id` ASC);\n\n" + + "CREATE UNIQUE INDEX `oses_mdid_UNIQUE` ON `oses` (`mdid` ASC);\n\n" + + "CREATE INDEX `oses_developer_idx` ON `oses` (`developer` ASC);\n\n" + + "CREATE INDEX `oses_product_idx` ON `oses` (`product` ASC);\n\n" + + "CREATE INDEX `oses_version_idx` ON `oses` (`version` ASC);\n\n" + + "CREATE INDEX `oses_architecture_idx` ON `oses` (`architecture` ASC);\n\n" + + "CREATE INDEX `oses_format_idx` ON `oses` (`format` ASC);\n\n" + + "CREATE INDEX `oses_machine_idx` ON `oses` (`machine` ASC);\n\n" + + "CREATE INDEX `oses_description_idx` ON `oses` (`description` ASC);"; } -} - +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Settings.cs b/osrepodbmgr.Core/Settings.cs index 8a275b1..5ffeeb4 100644 --- a/osrepodbmgr.Core/Settings.cs +++ b/osrepodbmgr.Core/Settings.cs @@ -25,28 +25,32 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; +using System.Diagnostics; using System.IO; using System.Xml.Serialization; using Claunia.PropertyList; +using DiscImageChef.Interop; using Microsoft.Win32; +using PlatformID = DiscImageChef.Interop.PlatformID; namespace osrepodbmgr.Core { public class SetSettings { - public string TemporaryFolder; - public string DatabasePath; - public string RepositoryPath; - public string UnArchiverPath; + public string ClamdHost; + public bool ClamdIsLocal; + public ushort ClamdPort; public AlgoEnum CompressionAlgorithm; - public bool UseAntivirus; - public bool UseClamd; - public string ClamdHost; - public ushort ClamdPort; - public bool ClamdIsLocal; - public bool UseVirusTotal; - public string VirusTotalKey; + public string DatabasePath; + public string RepositoryPath; + public string TemporaryFolder; + public string UnArchiverPath; + public bool UseAntivirus; + public bool UseClamd; + public bool UseVirusTotal; + public string VirusTotalKey; } public static class Settings @@ -55,192 +59,163 @@ namespace osrepodbmgr.Core public static void LoadSettings() { - Current = new SetSettings(); - DiscImageChef.Interop.PlatformID ptID = DiscImageChef.Interop.DetectOS.GetRealPlatformID(); + Current = new SetSettings(); + PlatformID ptId = DetectOS.GetRealPlatformID(); - FileStream prefsFs = null; + FileStream prefsFs = null; StreamReader prefsSr = null; try { - switch(ptID) + switch(ptId) { - case DiscImageChef.Interop.PlatformID.MacOSX: - case DiscImageChef.Interop.PlatformID.iOS: + case PlatformID.MacOSX: + case PlatformID.iOS: + { + string preferencesPath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", + "Preferences"); + string preferencesFilePath = + Path.Combine(preferencesPath, "com.claunia.museum.osrepodbmgr.plist"); + + if(!File.Exists(preferencesFilePath)) { - string preferencesPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Preferences"); - string preferencesFilePath = Path.Combine(preferencesPath, "com.claunia.museum.osrepodbmgr.plist"); + SetDefaultSettings(); + SaveSettings(); + } - if(!File.Exists(preferencesFilePath)) + prefsFs = new FileStream(preferencesFilePath, FileMode.Open); + NSDictionary parsedPreferences = (NSDictionary)BinaryPropertyListParser.Parse(prefsFs); + if(parsedPreferences != null) + { + Current.TemporaryFolder = parsedPreferences.TryGetValue("TemporaryFolder", out NSObject obj) + ? ((NSString)obj).ToString() + : Path.GetTempPath(); + + Current.DatabasePath = parsedPreferences.TryGetValue("DatabasePath", out obj) + ? ((NSString)obj).ToString() + : Path + .Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), + "osrepodbmgr.db"); + + Current.RepositoryPath = parsedPreferences.TryGetValue("RepositoryPath", out obj) + ? ((NSString)obj).ToString() + : Path + .Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), + "osrepo"); + + Current.UnArchiverPath = parsedPreferences.TryGetValue("UnArchiverPath", out obj) + ? ((NSString)obj).ToString() + : null; + + if(parsedPreferences.TryGetValue("CompressionAlgorithm", out obj)) { - SetDefaultSettings(); - SaveSettings(); - } - - prefsFs = new FileStream(preferencesFilePath, FileMode.Open); - NSDictionary parsedPreferences = (NSDictionary)BinaryPropertyListParser.Parse(prefsFs); - if(parsedPreferences != null) - { - NSObject obj; - - if(parsedPreferences.TryGetValue("TemporaryFolder", out obj)) - { - Current.TemporaryFolder = ((NSString)obj).ToString(); - } - else - Current.TemporaryFolder = Path.GetTempPath(); - - if(parsedPreferences.TryGetValue("DatabasePath", out obj)) - { - Current.DatabasePath = ((NSString)obj).ToString(); - } - else - Current.DatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepodbmgr.db"); - - if(parsedPreferences.TryGetValue("RepositoryPath", out obj)) - { - Current.RepositoryPath = ((NSString)obj).ToString(); - } - else - Current.RepositoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepo"); - - if(parsedPreferences.TryGetValue("UnArchiverPath", out obj)) - { - Current.UnArchiverPath = ((NSString)obj).ToString(); - } - else - Current.UnArchiverPath = null; - - if(parsedPreferences.TryGetValue("CompressionAlgorithm", out obj)) - { - if(!Enum.TryParse(((NSString)obj).ToString(), true, out Current.CompressionAlgorithm)) - Current.CompressionAlgorithm = AlgoEnum.GZip; - } - else + if(!Enum.TryParse(((NSString)obj).ToString(), true, out Current.CompressionAlgorithm)) Current.CompressionAlgorithm = AlgoEnum.GZip; - - if(parsedPreferences.TryGetValue("UseAntivirus", out obj)) - { - Current.UseAntivirus = ((NSNumber)obj).ToBool(); - } - else - Current.UseAntivirus = false; - - if(parsedPreferences.TryGetValue("UseClamd", out obj)) - { - Current.UseClamd = ((NSNumber)obj).ToBool(); - } - else - Current.UseClamd = false; - - if(parsedPreferences.TryGetValue("ClamdHost", out obj)) - { - Current.ClamdHost = ((NSString)obj).ToString(); - } - else - Current.ClamdHost = null; - - if(parsedPreferences.TryGetValue("ClamdPort", out obj)) - { - Current.ClamdPort = (ushort)((NSNumber)obj).ToLong(); - } - else - Current.ClamdPort = 3310; - - if(parsedPreferences.TryGetValue("ClamdIsLocal", out obj)) - { - Current.ClamdIsLocal = ((NSNumber)obj).ToBool(); - } - else - Current.ClamdIsLocal = false; - - if(parsedPreferences.TryGetValue("UseVirusTotal", out obj)) - { - Current.ClamdIsLocal = ((NSNumber)obj).ToBool(); - } - else - Current.ClamdIsLocal = false; - - if(parsedPreferences.TryGetValue("VirusTotalKey", out obj)) - { - Current.ClamdHost = ((NSString)obj).ToString(); - } - else - Current.ClamdHost = null; - - prefsFs.Close(); } - else { - prefsFs.Close(); + else Current.CompressionAlgorithm = AlgoEnum.GZip; - SetDefaultSettings(); - SaveSettings(); - } + Current.UseAntivirus = parsedPreferences.TryGetValue("UseAntivirus", out obj) && + ((NSNumber)obj).ToBool(); + + Current.UseClamd = parsedPreferences.TryGetValue("UseClamd", out obj) && + ((NSNumber)obj).ToBool(); + + Current.ClamdHost = parsedPreferences.TryGetValue("ClamdHost", out obj) + ? ((NSString)obj).ToString() + : null; + + if(parsedPreferences.TryGetValue("ClamdPort", out obj)) + Current.ClamdPort = (ushort)((NSNumber)obj).ToLong(); + else Current.ClamdPort = 3310; + + Current.ClamdIsLocal = parsedPreferences.TryGetValue("ClamdIsLocal", out obj) && + ((NSNumber)obj).ToBool(); + + Current.ClamdIsLocal = parsedPreferences.TryGetValue("UseVirusTotal", out obj) && + ((NSNumber)obj).ToBool(); + + Current.ClamdHost = parsedPreferences.TryGetValue("VirusTotalKey", out obj) + ? ((NSString)obj).ToString() + : null; + + prefsFs.Close(); } - break; - case DiscImageChef.Interop.PlatformID.Win32NT: - case DiscImageChef.Interop.PlatformID.Win32S: - case DiscImageChef.Interop.PlatformID.Win32Windows: - case DiscImageChef.Interop.PlatformID.WinCE: - case DiscImageChef.Interop.PlatformID.WindowsPhone: + else { - RegistryKey parentKey = Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("Canary Islands Computer Museum"); - if(parentKey == null) - { - SetDefaultSettings(); - SaveSettings(); - return; - } + prefsFs.Close(); - RegistryKey key = parentKey.OpenSubKey("OSRepoDBMgr"); - if(key == null) - { - SetDefaultSettings(); - SaveSettings(); - return; - } - - Current.TemporaryFolder = (string)key.GetValue("TemporaryFolder"); - Current.DatabasePath = (string)key.GetValue("DatabasePath"); - Current.RepositoryPath = (string)key.GetValue("RepositoryPath"); - Current.UnArchiverPath = (string)key.GetValue("UnArchiverPath"); - if(!Enum.TryParse((string)key.GetValue("CompressionAlgorithm"), true, out Current.CompressionAlgorithm)) - Current.CompressionAlgorithm = AlgoEnum.GZip; - Current.UseAntivirus = (bool)key.GetValue("UseAntivirus"); - Current.UseClamd = (bool)key.GetValue("UseClamd"); - Current.ClamdHost = (string)key.GetValue("ClamdHost"); - Current.ClamdPort = (ushort)key.GetValue("ClamdPort"); - Current.ClamdIsLocal = (bool)key.GetValue("ClamdIsLocal"); - Current.UseVirusTotal = (bool)key.GetValue("UseVirusTotal"); - Current.VirusTotalKey = (string)key.GetValue("VirusTotalKey"); + SetDefaultSettings(); + SaveSettings(); } + } + break; + case PlatformID.Win32NT: + case PlatformID.Win32S: + case PlatformID.Win32Windows: + case PlatformID.WinCE: + case PlatformID.WindowsPhone: + { + RegistryKey parentKey = Registry + .CurrentUser.OpenSubKey("SOFTWARE") + ?.OpenSubKey("Canary Islands Computer Museum"); + if(parentKey == null) + { + SetDefaultSettings(); + SaveSettings(); + return; + } + + RegistryKey key = parentKey.OpenSubKey("OSRepoDBMgr"); + if(key == null) + { + SetDefaultSettings(); + SaveSettings(); + return; + } + + Current.TemporaryFolder = (string)key.GetValue("TemporaryFolder"); + Current.DatabasePath = (string)key.GetValue("DatabasePath"); + Current.RepositoryPath = (string)key.GetValue("RepositoryPath"); + Current.UnArchiverPath = (string)key.GetValue("UnArchiverPath"); + if(!Enum.TryParse((string)key.GetValue("CompressionAlgorithm"), true, + out Current.CompressionAlgorithm)) + Current.CompressionAlgorithm = AlgoEnum.GZip; + Current.UseAntivirus = (bool)key.GetValue("UseAntivirus"); + Current.UseClamd = (bool)key.GetValue("UseClamd"); + Current.ClamdHost = (string)key.GetValue("ClamdHost"); + Current.ClamdPort = (ushort)key.GetValue("ClamdPort"); + Current.ClamdIsLocal = (bool)key.GetValue("ClamdIsLocal"); + Current.UseVirusTotal = (bool)key.GetValue("UseVirusTotal"); + Current.VirusTotalKey = (string)key.GetValue("VirusTotalKey"); + } break; default: + { + string configPath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config"); + string settingsPath = + Path.Combine(configPath, "OSRepoDBMgr.xml"); + + if(!Directory.Exists(configPath)) { - string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config"); - string settingsPath = Path.Combine(configPath, "OSRepoDBMgr.xml"); - - if(!Directory.Exists(configPath)) - { - SetDefaultSettings(); - SaveSettings(); - return; - } - - XmlSerializer xs = new XmlSerializer(Current.GetType()); - prefsSr = new StreamReader(settingsPath); - Current = (SetSettings)xs.Deserialize(prefsSr); - prefsSr.Close(); + SetDefaultSettings(); + SaveSettings(); + return; } + + XmlSerializer xs = new XmlSerializer(Current.GetType()); + prefsSr = new StreamReader(settingsPath); + Current = (SetSettings)xs.Deserialize(prefsSr); + prefsSr.Close(); + } break; } } catch { - if(prefsFs != null) - prefsFs.Close(); - if(prefsSr != null) - prefsSr.Close(); + prefsFs?.Close(); + prefsSr?.Close(); SetDefaultSettings(); SaveSettings(); @@ -251,100 +226,113 @@ namespace osrepodbmgr.Core { try { - DiscImageChef.Interop.PlatformID ptID = DiscImageChef.Interop.DetectOS.GetRealPlatformID(); + PlatformID ptId = DetectOS.GetRealPlatformID(); - switch(ptID) + switch(ptId) { - case DiscImageChef.Interop.PlatformID.MacOSX: - case DiscImageChef.Interop.PlatformID.iOS: + case PlatformID.MacOSX: + case PlatformID.iOS: + { + NSDictionary root = new NSDictionary { - NSDictionary root = new NSDictionary(); - root.Add("TemporaryFolder", Current.TemporaryFolder); - root.Add("DatabasePath", Current.DatabasePath); - root.Add("RepositoryPath", Current.RepositoryPath); - root.Add("UnArchiverPath", Current.UnArchiverPath); - root.Add("CompressionAlgorithm", Current.CompressionAlgorithm.ToString()); - root.Add("UseAntivirus", Current.UseAntivirus); - root.Add("UseClamd", Current.UseClamd); - root.Add("ClamdHost", Current.ClamdHost); - root.Add("ClamdPort", Current.ClamdPort); - root.Add("ClamdIsLocal", Current.ClamdIsLocal); - root.Add("UseVirusTotal", Current.UseVirusTotal); - root.Add("VirusTotalKey", Current.VirusTotalKey); + {"TemporaryFolder", Current.TemporaryFolder}, + {"DatabasePath", Current.DatabasePath}, + {"RepositoryPath", Current.RepositoryPath}, + {"UnArchiverPath", Current.UnArchiverPath}, + {"CompressionAlgorithm", Current.CompressionAlgorithm.ToString()}, + {"UseAntivirus", Current.UseAntivirus}, + {"UseClamd", Current.UseClamd}, + {"ClamdHost", Current.ClamdHost}, + {"ClamdPort", Current.ClamdPort}, + {"ClamdIsLocal", Current.ClamdIsLocal}, + {"UseVirusTotal", Current.UseVirusTotal}, + {"VirusTotalKey", Current.VirusTotalKey} + }; - string preferencesPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Preferences"); - string preferencesFilePath = Path.Combine(preferencesPath, "com.claunia.museum.osrepodbmgr.plist"); + string preferencesPath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", + "Preferences"); + string preferencesFilePath = + Path.Combine(preferencesPath, "com.claunia.museum.osrepodbmgr.plist"); - FileStream fs = new FileStream(preferencesFilePath, FileMode.Create); - BinaryPropertyListWriter.Write(fs, root); - fs.Close(); - } + FileStream fs = new FileStream(preferencesFilePath, FileMode.Create); + BinaryPropertyListWriter.Write(fs, root); + fs.Close(); + } break; - case DiscImageChef.Interop.PlatformID.Win32NT: - case DiscImageChef.Interop.PlatformID.Win32S: - case DiscImageChef.Interop.PlatformID.Win32Windows: - case DiscImageChef.Interop.PlatformID.WinCE: - case DiscImageChef.Interop.PlatformID.WindowsPhone: - { - RegistryKey parentKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("Canary Islands Computer Museum"); - RegistryKey key = parentKey.CreateSubKey("OSRepoDBMgr"); + case PlatformID.Win32NT: + case PlatformID.Win32S: + case PlatformID.Win32Windows: + case PlatformID.WinCE: + case PlatformID.WindowsPhone: + { + RegistryKey parentKey = Registry + .CurrentUser.OpenSubKey("SOFTWARE", true) + ?.CreateSubKey("Canary Islands Computer Museum"); + RegistryKey key = parentKey?.CreateSubKey("OSRepoDBMgr"); - key.SetValue("TemporaryFolder", Current.TemporaryFolder); - key.SetValue("DatabasePath", Current.DatabasePath); - key.SetValue("RepositoryPath", Current.RepositoryPath); - if(Current.UnArchiverPath != null) - key.SetValue("UnArchiverPath", Current.UnArchiverPath); - key.SetValue("CompressionAlgorithm", Current.CompressionAlgorithm); - key.SetValue("UseAntivirus", Current.UseAntivirus); - key.SetValue("UseClamd", Current.UseClamd); - key.SetValue("ClamdHost", Current.ClamdHost); - key.SetValue("ClamdPort", Current.ClamdPort); - key.SetValue("ClamdIsLocal", Current.ClamdIsLocal); + if(key != null) + { + key.SetValue("TemporaryFolder", Current.TemporaryFolder); + key.SetValue("DatabasePath", Current.DatabasePath); + key.SetValue("RepositoryPath", Current.RepositoryPath); + if(Current.UnArchiverPath != null) key.SetValue("UnArchiverPath", Current.UnArchiverPath); + key.SetValue("CompressionAlgorithm", + Current.CompressionAlgorithm); + key.SetValue("UseAntivirus", Current.UseAntivirus); + key.SetValue("UseClamd", Current.UseClamd); + key.SetValue("ClamdHost", Current.ClamdHost); + key.SetValue("ClamdPort", Current.ClamdPort); + key.SetValue("ClamdIsLocal", Current.ClamdIsLocal); key.SetValue("UseVirusTotal", Current.UseVirusTotal); key.SetValue("VirusTotalKey", Current.VirusTotalKey); } + } break; default: - { - string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config"); - string settingsPath = Path.Combine(configPath, "OSRepoDBMgr.xml"); + { + string configPath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config"); + string settingsPath = + Path.Combine(configPath, "OSRepoDBMgr.xml"); - if(!Directory.Exists(configPath)) - Directory.CreateDirectory(configPath); + if(!Directory.Exists(configPath)) Directory.CreateDirectory(configPath); - FileStream fs = new FileStream(settingsPath, FileMode.Create); - XmlSerializer xs = new XmlSerializer(Current.GetType()); - xs.Serialize(fs, Current); - fs.Close(); - } + FileStream fs = new FileStream(settingsPath, FileMode.Create); + XmlSerializer xs = new XmlSerializer(Current.GetType()); + xs.Serialize(fs, Current); + fs.Close(); + } break; } } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body { - if(System.Diagnostics.Debugger.IsAttached) - throw; + if(Debugger.IsAttached) throw; } } - public static void SetDefaultSettings() + static void SetDefaultSettings() { - Current = new SetSettings(); - Current.TemporaryFolder = Path.GetTempPath(); - Current.DatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepodbmgr.db"); - Current.RepositoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepo"); - Current.UnArchiverPath = null; - Current.CompressionAlgorithm = AlgoEnum.GZip; - Current.UseAntivirus = false; - Current.UseClamd = false; - Current.ClamdHost = null; - Current.ClamdPort = 3310; - Current.ClamdIsLocal = false; - Current.UseVirusTotal = false; - Current.VirusTotalKey = null; + Current = new SetSettings + { + TemporaryFolder = Path.GetTempPath(), + DatabasePath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepodbmgr.db"), + RepositoryPath = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepo"), + UnArchiverPath = null, + CompressionAlgorithm = AlgoEnum.GZip, + UseAntivirus = false, + UseClamd = false, + ClamdHost = null, + ClamdPort = 3310, + ClamdIsLocal = false, + UseVirusTotal = false, + VirusTotalKey = null + }; } } -} - +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Symlinks.cs b/osrepodbmgr.Core/Symlinks.cs index 2e50f34..7d3a680 100644 --- a/osrepodbmgr.Core/Symlinks.cs +++ b/osrepodbmgr.Core/Symlinks.cs @@ -7,7 +7,7 @@ namespace osrepodbmgr.Core public static class Symlinks { [DllImport("libc", CharSet = CharSet.Ansi, SetLastError = true)] - internal static extern int readlink(string path, IntPtr buf, int bufsize); + static extern int readlink(string path, IntPtr buf, int bufsize); public static string ReadLink(string path) { @@ -15,8 +15,7 @@ namespace osrepodbmgr.Core int ret = readlink(path, buf, 16384); - if(ret < 0) - return null; + if(ret < 0) return null; byte[] target = new byte[ret]; Marshal.Copy(buf, target, 0, ret); @@ -25,7 +24,7 @@ namespace osrepodbmgr.Core } [DllImport("libc", CharSet = CharSet.Ansi, SetLastError = true)] - internal static extern int symlink(string target, string path); + static extern int symlink(string target, string path); public static int Symlink(string target, string path) { diff --git a/osrepodbmgr.Core/Workers/Clamd.cs b/osrepodbmgr.Core/Workers/Clamd.cs index fa38fed..11031d5 100644 --- a/osrepodbmgr.Core/Workers/Clamd.cs +++ b/osrepodbmgr.Core/Workers/Clamd.cs @@ -25,11 +25,15 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.IO; +using System.Net.Sockets; +using System.Threading; using System.Threading.Tasks; using nClam; +using SharpCompress.Compressors; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.LZMA; @@ -44,7 +48,7 @@ namespace osrepodbmgr.Core { if(!Settings.Current.UseClamd || !Settings.Current.UseAntivirus) { - Context.clamdVersion = null; + Context.ClamdVersion = null; return; } @@ -57,62 +61,51 @@ namespace osrepodbmgr.Core { try { - clam = new ClamClient(Settings.Current.ClamdHost, Settings.Current.ClamdPort); - Context.clamdVersion = await clam.GetVersionAsync(); - } - catch(System.Net.Sockets.SocketException) - { - + clam = new ClamClient(Settings.Current.ClamdHost, Settings.Current.ClamdPort); + Context.ClamdVersion = await clam.GetVersionAsync(); } + catch(SocketException) { } }).Wait(); } - public static void ClamScanFileFromRepo(DBFile file) + public static void ClamScanFileFromRepo(DbFile file) { try { - if(Context.clamdVersion == null) + if(Context.ClamdVersion == null) { - if(Failed != null) - Failed("clamd is not usable"); + Failed?.Invoke("clamd is not usable"); return; } - if(clam == null) - { - if(Failed != null) - Failed("clamd is not initalized"); - } + if(clam == null) Failed?.Invoke("clamd is not initalized"); - string repoPath; + string repoPath; AlgoEnum algorithm; if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".gz"))) + file.Sha256[3].ToString(), file.Sha256[4].ToString(), file.Sha256 + ".gz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".gz"); + file.Sha256[3].ToString(), file.Sha256[4].ToString(), file.Sha256 + ".gz"); algorithm = AlgoEnum.GZip; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".bz2"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"); + file.Sha256[3].ToString(), file.Sha256[4].ToString(), file.Sha256 + ".bz2"); algorithm = AlgoEnum.BZip2; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lzma"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lzma"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -121,34 +114,30 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.LZMA; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"); + file.Sha256[3].ToString(), file.Sha256[4].ToString(), file.Sha256 + ".lz"); algorithm = AlgoEnum.LZip; } else { - if(Failed != null) - Failed(string.Format("Cannot find file with hash {0} in the repository", file.Sha256)); + Failed?.Invoke($"Cannot find file with hash {file.Sha256} in the repository"); return; } - ClamScanResult result = null; - Stream zStream = null; + ClamScanResult result = null; + Stream zStream = null; if(Settings.Current.ClamdIsLocal) - { - // clamd supports gzip and bzip2 but not lzma if(algorithm == AlgoEnum.LZMA || algorithm == AlgoEnum.LZip) { - string tmpFile = Path.Combine(Settings.Current.TemporaryFolder, Path.GetTempFileName()); - FileStream outFs = new FileStream(tmpFile, FileMode.Create, FileAccess.Write); - FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); + string tmpFile = Path.Combine(Settings.Current.TemporaryFolder, Path.GetTempFileName()); + FileStream outFs = new FileStream(tmpFile, FileMode.Create, FileAccess.Write); + FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); if(algorithm == AlgoEnum.LZMA) { @@ -157,58 +146,52 @@ namespace osrepodbmgr.Core inFs.Seek(8, SeekOrigin.Current); zStream = new LzmaStream(properties, inFs, inFs.Length - 13, file.Length); } - else - zStream = new LZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + else zStream = new LZipStream(inFs, CompressionMode.Decompress); - if(UpdateProgress != null) - UpdateProgress("Uncompressing file...", null, 0, 0); + UpdateProgress?.Invoke("Uncompressing file...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif zStream.CopyTo(outFs); zStream.Close(); outFs.Close(); -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanFileFromRepo({0}): Uncompressing took {1} seconds", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ClamScanFileFromRepo({0}): Uncompressing took {1} seconds", file, + stopwatch.Elapsed.TotalSeconds); + #endif - if(UpdateProgress != null) - UpdateProgress("Requesting local scan to clamd server...", null, 0, 0); + UpdateProgress?.Invoke("Requesting local scan to clamd server...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Task.Run(async () => - { - result = await clam.ScanFileOnServerMultithreadedAsync(tmpFile); - }).Wait(); -#if DEBUG + #endif + Task.Run(async () => { result = await clam.ScanFileOnServerMultithreadedAsync(tmpFile); }) + .Wait(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, + stopwatch.Elapsed.TotalSeconds); + #endif File.Delete(tmpFile); } else { - if(UpdateProgress != null) - UpdateProgress("Requesting local scan to clamd server...", null, 0, 0); + UpdateProgress?.Invoke("Requesting local scan to clamd server...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Task.Run(async () => - { - result = await clam.ScanFileOnServerMultithreadedAsync(repoPath); - }).Wait(); -#if DEBUG + #endif + Task.Run(async () => { result = await clam.ScanFileOnServerMultithreadedAsync(repoPath); }) + .Wait(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, + stopwatch.Elapsed.TotalSeconds); + #endif } - } else { FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); @@ -216,10 +199,10 @@ namespace osrepodbmgr.Core switch(algorithm) { case AlgoEnum.GZip: - zStream = new GZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new GZipStream(inFs, CompressionMode.Decompress); break; case AlgoEnum.BZip2: - zStream = new BZip2Stream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new BZip2Stream(inFs, CompressionMode.Decompress); break; case AlgoEnum.LZMA: byte[] properties = new byte[5]; @@ -228,97 +211,85 @@ namespace osrepodbmgr.Core zStream = new LzmaStream(properties, inFs, inFs.Length - 13, file.Length); break; case AlgoEnum.LZip: - zStream = new LZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new LZipStream(inFs, CompressionMode.Decompress); break; } - if(UpdateProgress != null) - UpdateProgress("Uploading file to clamd server...", null, 0, 0); + UpdateProgress?.Invoke("Uploading file to clamd server...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Task.Run(async () => - { - result = await clam.SendAndScanFileAsync(zStream); - }).Wait(); -#if DEBUG + #endif + Task.Run(async () => { result = await clam.SendAndScanFileAsync(zStream); }).Wait(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ClamScanFileFromRepo({0}): Clamd took {1} seconds to scan", file, + stopwatch.Elapsed.TotalSeconds); + #endif zStream.Close(); } if(result.InfectedFiles != null && result.InfectedFiles.Count > 0) { file.HasVirus = true; - file.Virus = result.InfectedFiles[0].VirusName; + file.Virus = result.InfectedFiles[0].VirusName; } else if(file.HasVirus == null) { // If no scan has been done, mark as false. // If a positive has already existed don't overwrite it. file.HasVirus = false; - file.Virus = null; + file.Virus = null; } + file.ClamTime = DateTime.UtcNow; - dbCore.DBOps.UpdateFile(file); + dbCore.DbOps.UpdateFile(file); - if(ScanFinished != null) - ScanFinished(file); - - return; + ScanFinished?.Invoke(file); } - catch(System.Threading.ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Failed != null) - Failed(string.Format("Exception {0} when calling clamd", ex.Message)); -#if DEBUG + Failed?.Invoke($"Exception {ex.Message} when calling clamd"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } public static void ClamScanAllFiles() { - if(UpdateProgress2 != null) - UpdateProgress2("Asking database for files", null, 0, 0); + UpdateProgress2?.Invoke("Asking database for files", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - List files; + #endif - if(!dbCore.DBOps.GetNotAvFiles(out files)) - { - if(Failed != null) - Failed("Could not get files from database."); - } -#if DEBUG + if(!dbCore.DbOps.GetNotAvFiles(out List files)) + Failed?.Invoke("Could not get files from database."); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanAllFiles(): Took {0} seconds to get files from database", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.ClamScanAllFiles(): Took {0} seconds to get files from database", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif int counter = 0; - foreach(DBFile file in files) + foreach(DbFile file in files) { - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("Scanning file {0} of {1}", counter, files.Count), null, counter, files.Count); + UpdateProgress2?.Invoke($"Scanning file {counter} of {files.Count}", null, counter, files.Count); ClamScanFileFromRepo(file); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ClamScanAllFiles(): Took {0} seconds scan all pending files", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ClamScanAllFiles(): Took {0} seconds scan all pending files", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Compression.cs b/osrepodbmgr.Core/Workers/Compression.cs index 3a89a61..573367e 100644 --- a/osrepodbmgr.Core/Workers/Compression.cs +++ b/osrepodbmgr.Core/Workers/Compression.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Diagnostics; @@ -36,6 +37,7 @@ using DiscImageChef.Checksums; using Ionic.Zip; using Newtonsoft.Json; using Schemas; +using SharpCompress.Compressors; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.LZMA; @@ -48,91 +50,76 @@ namespace osrepodbmgr.Core { try { - if(string.IsNullOrWhiteSpace(Context.dbInfo.developer)) + if(string.IsNullOrWhiteSpace(Context.DbInfo.Developer)) { - if(Failed != null) - Failed("Developer cannot be empty"); + Failed?.Invoke("Developer cannot be empty"); return; } - if(string.IsNullOrWhiteSpace(Context.dbInfo.product)) + if(string.IsNullOrWhiteSpace(Context.DbInfo.Product)) { - if(Failed != null) - Failed("Product cannot be empty"); + Failed?.Invoke("Product cannot be empty"); return; } - if(string.IsNullOrWhiteSpace(Context.dbInfo.version)) + if(string.IsNullOrWhiteSpace(Context.DbInfo.Version)) { - if(Failed != null) - Failed("Version cannot be empty"); + Failed?.Invoke("Version cannot be empty"); return; } string destinationFolder = ""; - destinationFolder = Path.Combine(destinationFolder, Context.dbInfo.developer); - destinationFolder = Path.Combine(destinationFolder, Context.dbInfo.product); - destinationFolder = Path.Combine(destinationFolder, Context.dbInfo.version); - if(!string.IsNullOrWhiteSpace(Context.dbInfo.languages)) - { - destinationFolder = Path.Combine(destinationFolder, Context.dbInfo.languages); - } - if(!string.IsNullOrWhiteSpace(Context.dbInfo.architecture)) - { - destinationFolder = Path.Combine(destinationFolder, Context.dbInfo.architecture); - } - if(Context.dbInfo.oem) - { - destinationFolder = Path.Combine(destinationFolder, "oem"); - } - if(!string.IsNullOrWhiteSpace(Context.dbInfo.machine)) - { - destinationFolder = Path.Combine(destinationFolder, "for " + Context.dbInfo.machine); - } + destinationFolder = Path.Combine(destinationFolder, Context.DbInfo.Developer); + destinationFolder = Path.Combine(destinationFolder, Context.DbInfo.Product); + destinationFolder = Path.Combine(destinationFolder, Context.DbInfo.Version); + if(!string.IsNullOrWhiteSpace(Context.DbInfo.Languages)) + destinationFolder = Path.Combine(destinationFolder, Context.DbInfo.Languages); + if(!string.IsNullOrWhiteSpace(Context.DbInfo.Architecture)) + destinationFolder = Path.Combine(destinationFolder, Context.DbInfo.Architecture); + if(Context.DbInfo.Oem) destinationFolder = Path.Combine(destinationFolder, "oem"); + if(!string.IsNullOrWhiteSpace(Context.DbInfo.Machine)) + destinationFolder = Path.Combine(destinationFolder, "for " + Context.DbInfo.Machine); string destinationFile = ""; - if(!string.IsNullOrWhiteSpace(Context.dbInfo.format)) - destinationFile += "[" + Context.dbInfo.format + "]"; - if(Context.dbInfo.files) + if(!string.IsNullOrWhiteSpace(Context.DbInfo.Format)) + destinationFile += "[" + Context.DbInfo.Format + "]"; + if(Context.DbInfo.Files) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += "files"; + if(destinationFile != "") destinationFile += "_"; + destinationFile += "files"; } - if(Context.dbInfo.netinstall) + + if(Context.DbInfo.Netinstall) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += "netinstall"; + if(destinationFile != "") destinationFile += "_"; + destinationFile += "netinstall"; } - if(Context.dbInfo.source) + + if(Context.DbInfo.Source) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += "source"; + if(destinationFile != "") destinationFile += "_"; + destinationFile += "source"; } - if(Context.dbInfo.update) + + if(Context.DbInfo.Update) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += "update"; + if(destinationFile != "") destinationFile += "_"; + destinationFile += "update"; } - if(Context.dbInfo.upgrade) + + if(Context.DbInfo.Upgrade) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += "upgrade"; + if(destinationFile != "") destinationFile += "_"; + destinationFile += "upgrade"; } - if(!string.IsNullOrWhiteSpace(Context.dbInfo.description)) + + if(!string.IsNullOrWhiteSpace(Context.DbInfo.Description)) { - if(destinationFile != "") - destinationFile += "_"; - destinationFile += Context.dbInfo.description; + if(destinationFile != "") destinationFile += "_"; + destinationFile += Context.DbInfo.Description; } else if(destinationFile == "") - { destinationFile = "archive"; - } string destination = Path.Combine(destinationFolder, destinationFile) + ".zip"; @@ -142,35 +129,31 @@ namespace osrepodbmgr.Core string mdid = md5.Data(Encoding.UTF8.GetBytes(destination), out tmp); Console.WriteLine("MDID: {0}", mdid); - if(dbCore.DBOps.ExistsOS(mdid)) + if(dbCore.DbOps.ExistsOs(mdid)) { if(File.Exists(destination)) { - if(Failed != null) - Failed("OS already exists."); + Failed?.Invoke("OS already exists."); return; } - if(Failed != null) - Failed("OS already exists in the database but not in the repository, check for inconsistencies."); + Failed?.Invoke("OS already exists in the database but not in the repository, check for inconsistencies."); return; } if(File.Exists(destination)) { - if(Failed != null) - Failed("OS already exists in the repository but not in the database, check for inconsistencies."); + Failed?.Invoke("OS already exists in the repository but not in the database, check for inconsistencies."); return; } - Context.dbInfo.mdid = mdid; + Context.DbInfo.Mdid = mdid; string filesPath; - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; string extension = null; @@ -190,57 +173,58 @@ namespace osrepodbmgr.Core break; } - long totalSize = 0, currentSize = 0; - foreach (KeyValuePair file in Context.hashes) - totalSize += file.Value.Length; + long totalSize = 0, currentSize = 0; + foreach(KeyValuePair file in Context.Hashes) totalSize += file.Value.Length; -#if DEBUG - stopwatch.Restart(); -#endif - foreach(KeyValuePair file in Context.hashes) + #if DEBUG + stopwatch.Restart(); + #endif + foreach(KeyValuePair file in Context.Hashes) { - if(UpdateProgress != null) - UpdateProgress("Compressing...", file.Value.Path, currentSize, totalSize); + UpdateProgress?.Invoke("Compressing...", file.Value.Path, currentSize, totalSize); - destinationFolder = Path.Combine(Settings.Current.RepositoryPath, file.Value.Sha256[0].ToString(), file.Value.Sha256[1].ToString(), file.Value.Sha256[2].ToString(), file.Value.Sha256[3].ToString(), file.Value.Sha256[4].ToString()); + destinationFolder = Path.Combine(Settings.Current.RepositoryPath, file.Value.Sha256[0].ToString(), + file.Value.Sha256[1].ToString(), file.Value.Sha256[2].ToString(), + file.Value.Sha256[3].ToString(), file.Value.Sha256[4].ToString()); Directory.CreateDirectory(destinationFolder); destinationFile = Path.Combine(destinationFolder, file.Value.Sha256 + extension); - if (!File.Exists(destinationFile)) + if(!File.Exists(destinationFile)) { - FileStream inFs = new FileStream(Path.Combine(filesPath, file.Value.Path), FileMode.Open, FileAccess.Read); - FileStream outFs = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write); - Stream zStream = null; + FileStream inFs = new FileStream(Path.Combine(filesPath, file.Value.Path), FileMode.Open, + FileAccess.Read); + FileStream outFs = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write); + Stream zStream = null; - switch (Settings.Current.CompressionAlgorithm) + switch(Settings.Current.CompressionAlgorithm) { case AlgoEnum.GZip: - zStream = new GZipStream(outFs, SharpCompress.Compressors.CompressionMode.Compress, CompressionLevel.BestCompression); + zStream = new GZipStream(outFs, CompressionMode.Compress, + CompressionLevel.BestCompression); break; case AlgoEnum.BZip2: - zStream = new BZip2Stream(outFs, SharpCompress.Compressors.CompressionMode.Compress); + zStream = new BZip2Stream(outFs, CompressionMode.Compress); break; case AlgoEnum.LZMA: zStream = new LzmaStream(new LzmaEncoderProperties(), false, outFs); - outFs.Write(((LzmaStream)zStream).Properties, 0, ((LzmaStream)zStream).Properties.Length); + outFs.Write(((LzmaStream)zStream).Properties, 0, + ((LzmaStream)zStream).Properties.Length); outFs.Write(BitConverter.GetBytes(inFs.Length), 0, 8); break; case AlgoEnum.LZip: - zStream = new LZipStream(outFs, SharpCompress.Compressors.CompressionMode.Compress); + zStream = new LZipStream(outFs, CompressionMode.Compress); break; } - byte[] buffer = new byte[bufferSize]; + byte[] buffer = new byte[BUFFER_SIZE]; - while ((inFs.Position + bufferSize) <= inFs.Length) + while(inFs.Position + BUFFER_SIZE <= inFs.Length) { - if (UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", inFs.Position / (double)inFs.Length), - string.Format("{0} / {1} bytes", inFs.Position, inFs.Length), - inFs.Position, inFs.Length); - if (UpdateProgress != null) - UpdateProgress("Compressing...", file.Value.Path, currentSize, totalSize); + UpdateProgress2?.Invoke($"{inFs.Position / (double)inFs.Length:P}", + $"{inFs.Position} / {inFs.Length} bytes", inFs.Position, + inFs.Length); + UpdateProgress?.Invoke("Compressing...", file.Value.Path, currentSize, totalSize); inFs.Read(buffer, 0, buffer.Length); zStream.Write(buffer, 0, buffer.Length); @@ -248,57 +232,58 @@ namespace osrepodbmgr.Core } buffer = new byte[inFs.Length - inFs.Position]; - if (UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", inFs.Position / (double)inFs.Length), - string.Format("{0} / {1} bytes", inFs.Position, inFs.Length), - inFs.Position, inFs.Length); - if (UpdateProgress != null) - UpdateProgress("Compressing...", file.Value.Path, currentSize, totalSize); + UpdateProgress2?.Invoke($"{inFs.Position / (double)inFs.Length:P}", + $"{inFs.Position} / {inFs.Length} bytes", inFs.Position, inFs.Length); + UpdateProgress?.Invoke("Compressing...", file.Value.Path, currentSize, totalSize); inFs.Read(buffer, 0, buffer.Length); zStream.Write(buffer, 0, buffer.Length); currentSize += buffer.Length; - if (UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", inFs.Length / (double)inFs.Length), - "Finishing...", inFs.Length, inFs.Length); + UpdateProgress2?.Invoke($"{inFs.Length / (double)inFs.Length:P}", "Finishing...", inFs.Length, + inFs.Length); inFs.Close(); zStream.Close(); outFs.Dispose(); } - else - currentSize += file.Value.Length; + else currentSize += file.Value.Length; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CompressFiles(): Took {0} seconds to compress files", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CompressFiles(): Took {0} seconds to compress files", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Context.metadata != null) + if(Context.Metadata != null) { - MemoryStream xms = new MemoryStream(); - XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); - xs.Serialize(xms, Context.metadata); + MemoryStream xms = new MemoryStream(); + XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); + xs.Serialize(xms, Context.Metadata); xms.Position = 0; - JsonSerializer js = new JsonSerializer(); - js.Formatting = Newtonsoft.Json.Formatting.Indented; - js.NullValueHandling = NullValueHandling.Ignore; + JsonSerializer js = new JsonSerializer + { + Formatting = Formatting.Indented, + NullValueHandling = NullValueHandling.Ignore + }; MemoryStream jms = new MemoryStream(); - StreamWriter sw = new StreamWriter(jms, Encoding.UTF8, 1048576, true); - js.Serialize(sw, Context.metadata, typeof(CICMMetadataType)); + StreamWriter sw = new StreamWriter(jms, Encoding.UTF8, 1048576, true); + js.Serialize(sw, Context.Metadata, typeof(CICMMetadataType)); sw.Close(); jms.Position = 0; - destinationFolder = Path.Combine(Settings.Current.RepositoryPath, "metadata", mdid[0].ToString(), mdid[1].ToString(), - mdid[2].ToString(), mdid[3].ToString(), mdid[4].ToString()); + destinationFolder = Path.Combine(Settings.Current.RepositoryPath, "metadata", mdid[0].ToString(), + mdid[1].ToString(), mdid[2].ToString(), mdid[3].ToString(), + mdid[4].ToString()); Directory.CreateDirectory(destinationFolder); - FileStream xfs = new FileStream(Path.Combine(destinationFolder, mdid + ".xml"), FileMode.CreateNew, FileAccess.Write); + FileStream xfs = new FileStream(Path.Combine(destinationFolder, mdid + ".xml"), FileMode.CreateNew, + FileAccess.Write); xms.CopyTo(xfs); xfs.Close(); - FileStream jfs = new FileStream(Path.Combine(destinationFolder, mdid + ".json"), FileMode.CreateNew, FileAccess.Write); + FileStream jfs = new FileStream(Path.Combine(destinationFolder, mdid + ".json"), FileMode.CreateNew, + FileAccess.Write); jms.CopyTo(jfs); jfs.Close(); @@ -306,266 +291,254 @@ namespace osrepodbmgr.Core jms.Position = 0; } - if(FinishedWithText != null) - FinishedWithText(string.Format("Correctly added operating system with MDID {0}", mdid)); + FinishedWithText?.Invoke($"Correctly added operating system with MDID {mdid}"); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } public static void OpenArchive() { - if(!Context.unarUsable) + if(!Context.UnarUsable) { - if(Failed != null) - Failed("The UnArchiver is not correctly installed"); + Failed?.Invoke("The UnArchiver is not correctly installed"); return; } - if(!File.Exists(Context.path)) + if(!File.Exists(Context.Path)) { - if(Failed != null) - Failed("Specified file cannot be found"); + Failed?.Invoke("Specified file cannot be found"); return; } try { - string unarFolder = Path.GetDirectoryName(Settings.Current.UnArchiverPath); - string extension = Path.GetExtension(Settings.Current.UnArchiverPath); + string unarFolder = Path.GetDirectoryName(Settings.Current.UnArchiverPath); + string extension = Path.GetExtension(Settings.Current.UnArchiverPath); string unarfilename = Path.GetFileNameWithoutExtension(Settings.Current.UnArchiverPath); - string lsarfilename = unarfilename.Replace("unar", "lsar"); - string lsarPath = Path.Combine(unarFolder, lsarfilename + extension); + string lsarfilename = unarfilename?.Replace("unar", "lsar"); + string lsarPath = Path.Combine(unarFolder, lsarfilename + extension); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Process lsarProcess = new Process(); - lsarProcess.StartInfo.FileName = lsarPath; - lsarProcess.StartInfo.CreateNoWindow = true; - lsarProcess.StartInfo.RedirectStandardOutput = true; - lsarProcess.StartInfo.UseShellExecute = false; - lsarProcess.StartInfo.Arguments = string.Format("-j \"\"\"{0}\"\"\"", Context.path); + #endif + Process lsarProcess = new Process + { + StartInfo = + { + FileName = lsarPath, + CreateNoWindow = true, + RedirectStandardOutput = true, + UseShellExecute = false, + Arguments = $"-j \"\"\"{Context.Path}\"\"\"" + } + }; lsarProcess.Start(); string lsarOutput = lsarProcess.StandardOutput.ReadToEnd(); lsarProcess.WaitForExit(); -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.OpenArchive(): Took {0} seconds to list archive contents", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.OpenArchive(): Took {0} seconds to list archive contents", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif - long counter = 0; - string format = null; + #endif + long counter = 0; + string format = null; JsonTextReader jsReader = new JsonTextReader(new StringReader(lsarOutput)); while(jsReader.Read()) - { - if(jsReader.TokenType == JsonToken.PropertyName && jsReader.Value != null && jsReader.Value.ToString() == "XADFileName") - counter++; - else if(jsReader.TokenType == JsonToken.PropertyName && jsReader.Value != null && jsReader.Value.ToString() == "lsarFormatName") + switch(jsReader.TokenType) { - jsReader.Read(); - if(jsReader.TokenType == JsonToken.String && jsReader.Value != null) - format = jsReader.Value.ToString(); + case JsonToken.PropertyName when jsReader.Value != null && + jsReader.Value.ToString() == "XADFileName": + counter++; + break; + case JsonToken.PropertyName when jsReader.Value != null && + jsReader.Value.ToString() == "lsarFormatName": + jsReader.Read(); + if(jsReader.TokenType == JsonToken.String && jsReader.Value != null) + format = jsReader.Value.ToString(); + break; } - } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.OpenArchive(): Took {0} seconds to process archive contents", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.OpenArchive(): Took {0} seconds to process archive contents", + stopwatch.Elapsed.TotalSeconds); + #endif - Context.unzipWithUnAr = false; - Context.archiveFormat = format; - Context.noFilesInArchive = counter; + Context.UnzipWithUnAr = false; + Context.ArchiveFormat = format; + Context.NoFilesInArchive = counter; if(string.IsNullOrEmpty(format)) { - if(Failed != null) - Failed("File not recognized as an archive"); + Failed?.Invoke("File not recognized as an archive"); return; } if(counter == 0) { - if(Failed != null) - Failed("Archive contains no files"); + Failed?.Invoke("Archive contains no files"); return; } - if(Context.archiveFormat == "Zip") + if(Context.ArchiveFormat == "Zip") { - Context.unzipWithUnAr = false; + Context.UnzipWithUnAr = false; - if(Context.usableDotNetZip) + if(Context.UsableDotNetZip) { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - ZipFile zf = ZipFile.Read(Context.path, new ReadOptions { Encoding = Encoding.UTF8 }); + #endif + ZipFile zf = ZipFile.Read(Context.Path, new ReadOptions {Encoding = Encoding.UTF8}); foreach(ZipEntry ze in zf) { // ZIP created with Mac OS X, need to be extracted with The UnArchiver to get correct ResourceFork structure - if(ze.FileName.StartsWith("__MACOSX", StringComparison.CurrentCulture)) - { - Context.unzipWithUnAr = true; - break; - } + if(!ze.FileName.StartsWith("__MACOSX", StringComparison.CurrentCulture)) continue; + + Context.UnzipWithUnAr = true; + break; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.OpenArchive(): Took {0} seconds to navigate in search of Mac OS X metadata", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.OpenArchive(): Took {0} seconds to navigate in search of Mac OS X metadata", + stopwatch.Elapsed.TotalSeconds); + #endif } } - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } public static void ExtractArchive() { - if(!File.Exists(Context.path)) + if(!File.Exists(Context.Path)) { - if(Failed != null) - Failed("Specified file cannot be found"); + Failed?.Invoke("Specified file cannot be found"); return; } if(!Directory.Exists(Settings.Current.TemporaryFolder)) { - if(Failed != null) - Failed("Temporary folder cannot be found"); + Failed?.Invoke("Temporary folder cannot be found"); return; } - string tmpFolder; - - if(Context.userExtracting) - tmpFolder = Context.tmpFolder; - else - tmpFolder = Path.Combine(Settings.Current.TemporaryFolder, Path.GetRandomFileName()); + string tmpFolder = Context.UserExtracting + ? Context.TmpFolder + : Path.Combine(Settings.Current.TemporaryFolder, Path.GetRandomFileName()); try { Directory.CreateDirectory(tmpFolder); - Context.tmpFolder = tmpFolder; + Context.TmpFolder = tmpFolder; } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed("Cannot create temporary folder"); + if(Debugger.IsAttached) throw; + + Failed?.Invoke("Cannot create temporary folder"); } try { // If it's a ZIP file not created by Mac OS X, use DotNetZip to uncompress (unar freaks out or corrupts certain ZIP features) - if(Context.archiveFormat == "Zip" && !Context.unzipWithUnAr && Context.usableDotNetZip) - { + if(Context.ArchiveFormat == "Zip" && !Context.UnzipWithUnAr && Context.UsableDotNetZip) try { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - ZipFile zf = ZipFile.Read(Context.path, new ReadOptions { Encoding = Encoding.UTF8 }); - zf.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; - zf.ExtractProgress += Zf_ExtractProgress; - zipCounter = 0; - zipCurrentEntryName = ""; + #endif + ZipFile zf = ZipFile.Read(Context.Path, new ReadOptions {Encoding = Encoding.UTF8}); + zf.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; + zf.ExtractProgress += Zf_ExtractProgress; + zipCounter = 0; + zipCurrentEntryName = ""; zf.ExtractAll(tmpFolder); - return; - } - catch(ThreadAbortException) - { - return; } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } - } else { - if(!Context.unarUsable) + if(!Context.UnarUsable) { - if(Failed != null) - Failed("The UnArchiver is not correctly installed"); + Failed?.Invoke("The UnArchiver is not correctly installed"); return; } -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Context.unarProcess = new Process(); - Context.unarProcess.StartInfo.FileName = Settings.Current.UnArchiverPath; - Context.unarProcess.StartInfo.CreateNoWindow = true; - Context.unarProcess.StartInfo.RedirectStandardOutput = true; - Context.unarProcess.StartInfo.UseShellExecute = false; - Context.unarProcess.StartInfo.Arguments = string.Format("-o \"\"\"{0}\"\"\" -r -D -k hidden \"\"\"{1}\"\"\"", tmpFolder, Context.path); - long counter = 0; - Context.unarProcess.OutputDataReceived += (sender, e) => + #endif + Context.UnarProcess = new Process + { + StartInfo = + { + FileName = Settings.Current.UnArchiverPath, + CreateNoWindow = true, + RedirectStandardOutput = true, + UseShellExecute = false, + Arguments = + $"-o \"\"\"{tmpFolder}\"\"\" -r -D -k hidden \"\"\"{Context.Path}\"\"\"" + } + }; + long counter = 0; + Context.UnarProcess.OutputDataReceived += (sender, e) => { counter++; - if(UpdateProgress2 != null) - UpdateProgress2("", e.Data, counter, Context.noFilesInArchive); + UpdateProgress2?.Invoke("", e.Data, counter, Context.NoFilesInArchive); }; - Context.unarProcess.Start(); - Context.unarProcess.BeginOutputReadLine(); - Context.unarProcess.WaitForExit(); - Context.unarProcess.Close(); - Context.unarProcess = null; -#if DEBUG + Context.UnarProcess.Start(); + Context.UnarProcess.BeginOutputReadLine(); + Context.UnarProcess.WaitForExit(); + Context.UnarProcess.Close(); + Context.UnarProcess = null; + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.ExtractArchive(): Took {0} seconds to extract archive contents using UnAr", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.ExtractArchive(): Took {0} seconds to extract archive contents using UnAr", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -580,95 +553,84 @@ namespace osrepodbmgr.Core if(UpdateProgress != null && e.CurrentEntry != null && e.EntriesTotal > 0) UpdateProgress("Extracting...", e.CurrentEntry.FileName, zipCounter, e.EntriesTotal); if(UpdateProgress2 != null && e.TotalBytesToTransfer > 0) - UpdateProgress2(string.Format("{0:P}", e.BytesTransferred / (double)e.TotalBytesToTransfer), - string.Format("{0} / {1}", e.BytesTransferred, e.TotalBytesToTransfer), - e.BytesTransferred, e.TotalBytesToTransfer); + UpdateProgress2($"{e.BytesTransferred / (double)e.TotalBytesToTransfer:P}", + $"{e.BytesTransferred} / {e.TotalBytesToTransfer}", e.BytesTransferred, + e.TotalBytesToTransfer); - if(e.EventType == ZipProgressEventType.Extracting_AfterExtractAll && Finished != null) - { -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.Zf_ExtractProgress(): Took {0} seconds to extract archive contents using DotNetZip", stopwatch.Elapsed.TotalSeconds); -#endif - Finished(); - } + if(e.EventType != ZipProgressEventType.Extracting_AfterExtractAll || Finished == null) return; + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.Zf_ExtractProgress(): Took {0} seconds to extract archive contents using DotNetZip", + stopwatch.Elapsed.TotalSeconds); + #endif + Finished(); } public static void CompressTo() { try { - if(string.IsNullOrWhiteSpace(Context.path)) + if(string.IsNullOrWhiteSpace(Context.Path)) { - if(Failed != null) - Failed("Destination cannot be empty"); + Failed?.Invoke("Destination cannot be empty"); return; } - if(Directory.Exists(Context.path)) + if(Directory.Exists(Context.Path)) { - if(Failed != null) - Failed("Destination cannot be a folder"); + Failed?.Invoke("Destination cannot be a folder"); return; } - if(Context.dbInfo.id == 0) + if(Context.DbInfo.Id == 0) { - if(Failed != null) - Failed("Operating system must be set"); + Failed?.Invoke("Operating system must be set"); return; } - if(dbCore.DBOps.HasSymlinks(Context.dbInfo.id)) + if(dbCore.DbOps.HasSymlinks(Context.DbInfo.Id)) { - if(Failed != null) - Failed("Cannot create symbolic links on ZIP files"); + Failed?.Invoke("Cannot create symbolic links on ZIP files"); return; } - if(!Context.usableDotNetZip) + if(!Context.UsableDotNetZip) { - if(Failed != null) - Failed("Cannot create ZIP files"); + Failed?.Invoke("Cannot create ZIP files"); return; } - ZipFile zf = new ZipFile(Context.path, Encoding.UTF8); - zf.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; - zf.CompressionMethod = CompressionMethod.Deflate; + ZipFile zf = new ZipFile(Context.Path, Encoding.UTF8) + { + CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression, + CompressionMethod = CompressionMethod.Deflate, + EmitTimesInUnixFormatWhenSaving = true, + EmitTimesInWindowsFormatWhenSaving = true, + UseZip64WhenSaving = Zip64Option.AsNecessary, + SortEntriesBeforeSaving = true + }; zf.SaveProgress += Zf_SaveProgress; - zf.EmitTimesInUnixFormatWhenSaving = true; - zf.EmitTimesInWindowsFormatWhenSaving = true; - zf.UseZip64WhenSaving = Zip64Option.AsNecessary; - zf.SortEntriesBeforeSaving = true; - List files; - List folders; - long counter; - if(UpdateProgress != null) - UpdateProgress("", "Asking DB for files...", 1, 100); + UpdateProgress?.Invoke("", "Asking DB for files...", 1, 100); - dbCore.DBOps.GetAllFilesInOS(out files, Context.dbInfo.id); + dbCore.DbOps.GetAllFilesInOs(out List files, Context.DbInfo.Id); - if(UpdateProgress != null) - UpdateProgress("", "Asking DB for folders...", 2, 100); + UpdateProgress?.Invoke("", "Asking DB for folders...", 2, 100); - dbCore.DBOps.GetAllFolders(out folders, Context.dbInfo.id); + dbCore.DbOps.GetAllFolders(out List folders, Context.DbInfo.Id); - if(UpdateProgress != null) - UpdateProgress("", "Creating folders...", 3, 100); + UpdateProgress?.Invoke("", "Creating folders...", 3, 100); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - counter = 0; - foreach(DBFolder folder in folders) + #endif + long counter = 0; + foreach(DbFolder folder in folders) { - if(UpdateProgress2 != null) - UpdateProgress2("", folder.Path, counter, folders.Count); + UpdateProgress2?.Invoke("", folder.Path, counter, folders.Count); - ZipEntry zd = zf.AddDirectoryByName(folder.Path); - zd.Attributes = folder.Attributes; + ZipEntry zd = zf.AddDirectoryByName(folder.Path); + zd.Attributes = folder.Attributes; zd.CreationTime = folder.CreationTimeUtc; zd.AccessedTime = folder.LastAccessTimeUtc; zd.LastModified = folder.LastWriteTimeUtc; @@ -676,25 +638,25 @@ namespace osrepodbmgr.Core counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CompressTo(): Took {0} seconds to add folders to ZIP", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CompressTo(): Took {0} seconds to add folders to ZIP", + stopwatch.Elapsed.TotalSeconds); + #endif - counter = 3; - Context.hashes = new Dictionary(); -#if DEBUG + counter = 3; + Context.Hashes = new Dictionary(); + #if DEBUG stopwatch.Restart(); -#endif - foreach(DBOSFile file in files) + #endif + foreach(DbOsFile file in files) { - if(UpdateProgress != null) - UpdateProgress("", string.Format("Adding {0}...", file.Path), counter, 3 + files.Count); + UpdateProgress?.Invoke("", $"Adding {file.Path}...", counter, 3 + files.Count); - Context.hashes.Add(file.Path, file); + Context.Hashes.Add(file.Path, file); - ZipEntry zi = zf.AddEntry(file.Path, Zf_HandleOpen, Zf_HandleClose); - zi.Attributes = file.Attributes; + ZipEntry zi = zf.AddEntry(file.Path, Zf_HandleOpen, Zf_HandleClose); + zi.Attributes = file.Attributes; zi.CreationTime = file.CreationTimeUtc; zi.AccessedTime = file.LastAccessTimeUtc; zi.LastModified = file.LastWriteTimeUtc; @@ -702,102 +664,93 @@ namespace osrepodbmgr.Core counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CompressTo(): Took {0} seconds to add files to ZIP", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.CompressTo(): Took {0} seconds to add files to ZIP", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif - zipCounter = 0; + #endif + zipCounter = 0; zipCurrentEntryName = ""; zf.Save(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } static Stream Zf_HandleOpen(string entryName) { - DBOSFile file; - if(!Context.hashes.TryGetValue(entryName, out file)) - { - if(!Context.hashes.TryGetValue(entryName.Replace('/', '\\'), out file)) + DbOsFile file; + if(!Context.Hashes.TryGetValue(entryName, out file)) + if(!Context.Hashes.TryGetValue(entryName.Replace('/', '\\'), out file)) throw new ArgumentException("Cannot find requested zip entry in hashes dictionary"); - } // Special case for empty file, as it seems to crash when SharpCompress tries to unLZMA it. - if(file.Length == 0) - return new MemoryStream(); + if(file.Length == 0) return new MemoryStream(); - Stream zStream = null; - string repoPath; + Stream zStream = null; + string repoPath; AlgoEnum algorithm; if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".gz"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), file.Sha256[3].ToString(), + file.Sha256[4].ToString(), file.Sha256 + ".gz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".gz"); + file.Sha256[1].ToString(), file.Sha256[2].ToString(), file.Sha256[3].ToString(), + file.Sha256[4].ToString(), file.Sha256 + ".gz"); algorithm = AlgoEnum.GZip; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".bz2"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"); + file.Sha256[1].ToString(), file.Sha256[2].ToString(), file.Sha256[3].ToString(), + file.Sha256[4].ToString(), file.Sha256 + ".bz2"); algorithm = AlgoEnum.BZip2; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lzma"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lzma"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lzma"); + file.Sha256[1].ToString(), file.Sha256[2].ToString(), file.Sha256[3].ToString(), + file.Sha256[4].ToString(), file.Sha256 + ".lzma"); algorithm = AlgoEnum.LZMA; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"); + file.Sha256[1].ToString(), file.Sha256[2].ToString(), file.Sha256[3].ToString(), + file.Sha256[4].ToString(), file.Sha256 + ".lz"); algorithm = AlgoEnum.LZip; } else - throw new ArgumentException(string.Format("Cannot find file with hash {0} in the repository", file.Sha256)); + throw new ArgumentException($"Cannot find file with hash {file.Sha256} in the repository"); FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); switch(algorithm) { case AlgoEnum.GZip: - zStream = new GZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new GZipStream(inFs, CompressionMode.Decompress); break; case AlgoEnum.BZip2: - zStream = new BZip2Stream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new BZip2Stream(inFs, CompressionMode.Decompress); break; case AlgoEnum.LZMA: byte[] properties = new byte[5]; @@ -806,7 +759,7 @@ namespace osrepodbmgr.Core zStream = new LzmaStream(properties, inFs, inFs.Length - 13, file.Length); break; case AlgoEnum.LZip: - zStream = new LZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new LZipStream(inFs, CompressionMode.Decompress); break; } @@ -829,21 +782,24 @@ namespace osrepodbmgr.Core if(UpdateProgress != null && e.CurrentEntry != null && e.EntriesTotal > 0) UpdateProgress("Compressing...", e.CurrentEntry.FileName, zipCounter, e.EntriesTotal); if(UpdateProgress2 != null && e.TotalBytesToTransfer > 0) - UpdateProgress2(string.Format("{0:P}", e.BytesTransferred / (double)e.TotalBytesToTransfer), - string.Format("{0} / {1}", e.BytesTransferred, e.TotalBytesToTransfer), - e.BytesTransferred, e.TotalBytesToTransfer); + UpdateProgress2($"{e.BytesTransferred / (double)e.TotalBytesToTransfer:P}", + $"{e.BytesTransferred} / {e.TotalBytesToTransfer}", e.BytesTransferred, + e.TotalBytesToTransfer); - if(e.EventType == ZipProgressEventType.Error_Saving && Failed != null) - Failed("An error occurred creating ZIP file."); - - if(e.EventType == ZipProgressEventType.Saving_Completed && Finished != null) + switch(e.EventType) { -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.Zf_SaveProgress(): Took {0} seconds to compress files to ZIP", stopwatch.Elapsed.TotalSeconds); -#endif - Finished(); + case ZipProgressEventType.Error_Saving: + Failed?.Invoke("An error occurred creating ZIP file."); + break; + case ZipProgressEventType.Saving_Completed when Finished != null: + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.Zf_SaveProgress(): Took {0} seconds to compress files to ZIP", + stopwatch.Elapsed.TotalSeconds); + #endif + Finished(); + break; } } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Consts.cs b/osrepodbmgr.Core/Workers/Consts.cs index 231379d..5c1143e 100644 --- a/osrepodbmgr.Core/Workers/Consts.cs +++ b/osrepodbmgr.Core/Workers/Consts.cs @@ -25,11 +25,12 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + namespace osrepodbmgr.Core { public static partial class Workers { // Sets a 128Kbyte buffer - const long bufferSize = 131072; + const long BUFFER_SIZE = 131072; } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Database.cs b/osrepodbmgr.Core/Workers/Database.cs index 45ceaa5..9535578 100644 --- a/osrepodbmgr.Core/Workers/Database.cs +++ b/osrepodbmgr.Core/Workers/Database.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Diagnostics; @@ -39,56 +40,54 @@ namespace osrepodbmgr.Core { try { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - List oses; - dbCore.DBOps.GetAllOSes(out oses); -#if DEBUG + #endif + dbCore.DbOps.GetAllOSes(out List oses); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.GetAllOSes(): Took {0} seconds to get OSes from database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.GetAllOSes(): Took {0} seconds to get OSes from database", + stopwatch.Elapsed.TotalSeconds); + #endif if(AddOS != null) { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif int counter = 0; // TODO: Check file name and existence - foreach(DBEntry os in oses) + foreach(DbEntry os in oses) { - if(UpdateProgress != null) - UpdateProgress("Populating OSes table", string.Format("{0} {1}", os.developer, os.product), counter, oses.Count); - string destination = Path.Combine(Settings.Current.RepositoryPath, os.mdid[0].ToString(), - os.mdid[1].ToString(), os.mdid[2].ToString(), os.mdid[3].ToString(), - os.mdid[4].ToString(), os.mdid) + ".zip"; + UpdateProgress?.Invoke("Populating OSes table", $"{os.Developer} {os.Product}", counter, + oses.Count); + string destination = Path.Combine(Settings.Current.RepositoryPath, os.Mdid[0].ToString(), + os.Mdid[1].ToString(), os.Mdid[2].ToString(), + os.Mdid[3].ToString(), os.Mdid[4].ToString(), os.Mdid) + + ".zip"; - if(AddOS != null) - AddOS(os); + AddOS?.Invoke(os); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.GetAllOSes(): Took {0} seconds to add OSes to the GUI", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.GetAllOSes(): Took {0} seconds to add OSes to the GUI", + stopwatch.Elapsed.TotalSeconds); + #endif } - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -97,14 +96,14 @@ namespace osrepodbmgr.Core try { long counter = 0; -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Dictionary knownFiles = new Dictionary(); + #endif + Dictionary knownFiles = new Dictionary(); bool unknownFile = false; - foreach(KeyValuePair kvp in Context.hashes) + foreach(KeyValuePair kvp in Context.Hashes) { // Empty file with size zero if(kvp.Value.Sha256 == "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") @@ -114,66 +113,61 @@ namespace osrepodbmgr.Core continue; } - if(UpdateProgress != null) - UpdateProgress(null, "Checking files in database", counter, Context.hashes.Count); + UpdateProgress?.Invoke(null, "Checking files in database", counter, Context.Hashes.Count); - if(AddFileForOS != null) - AddFileForOS(kvp.Key, kvp.Value.Sha256, dbCore.DBOps.ExistsFile(kvp.Value.Sha256), kvp.Value.Crack); + AddFileForOS?.Invoke(kvp.Key, kvp.Value.Sha256, dbCore.DbOps.ExistsFile(kvp.Value.Sha256), + kvp.Value.Crack); - if(dbCore.DBOps.ExistsFile(kvp.Value.Sha256)) + if(dbCore.DbOps.ExistsFile(kvp.Value.Sha256)) { counter++; knownFiles.Add(kvp.Key, kvp.Value); } - else - unknownFile = true; + else unknownFile = true; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds to checks for file knowledge in the DB", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds to checks for file knowledge in the DB", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif if(knownFiles.Count == 0 || unknownFile) { - if(Finished != null) - Finished(); + Finished?.Invoke(); return; } - if(UpdateProgress != null) - UpdateProgress(null, "Retrieving OSes from database", counter, Context.hashes.Count); - List oses; - dbCore.DBOps.GetAllOSes(out oses); -#if DEBUG + UpdateProgress?.Invoke(null, "Retrieving OSes from database", counter, Context.Hashes.Count); + dbCore.DbOps.GetAllOSes(out List oses); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds get all OSes from DB", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds get all OSes from DB", + stopwatch.Elapsed.TotalSeconds); + #endif if(oses != null && oses.Count > 0) { - DBEntry[] osesArray = new DBEntry[oses.Count]; + DbEntry[] osesArray = new DbEntry[oses.Count]; oses.CopyTo(osesArray); long osCounter = 0; -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif - foreach(DBEntry os in osesArray) + foreach(DbEntry os in osesArray) { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Check OS id {0}", os.id), osCounter, osesArray.Length); + UpdateProgress?.Invoke(null, $"Check OS id {os.Id}", osCounter, osesArray.Length); counter = 0; - foreach(KeyValuePair kvp in knownFiles) + foreach(KeyValuePair kvp in knownFiles) { - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Checking for file {0}", kvp.Value.Path), counter, knownFiles.Count); + UpdateProgress2?.Invoke(null, $"Checking for file {kvp.Value.Path}", counter, + knownFiles.Count); - if(!dbCore.DBOps.ExistsFileInOS(kvp.Value.Sha256, os.id)) + if(!dbCore.DbOps.ExistsFileInOs(kvp.Value.Sha256, os.Id)) { - if (oses.Contains(os)) - oses.Remove(os); + if(oses.Contains(os)) oses.Remove(os); // If one file is missing, the rest don't matter break; @@ -182,43 +176,37 @@ namespace osrepodbmgr.Core counter++; } - if(oses.Count == 0) - break; // No OSes left + if(oses.Count == 0) break; // No OSes left } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds correlate all files with all known OSes", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CheckDbForFiles(): Took {0} seconds correlate all files with all known OSes", + stopwatch.Elapsed.TotalSeconds); + #endif } if(AddOS != null) - { - // TODO: Check file name and existence - foreach(DBEntry os in oses) + foreach(DbEntry os in oses) { - string destination = Path.Combine(Settings.Current.RepositoryPath, os.mdid[0].ToString(), - os.mdid[1].ToString(), os.mdid[2].ToString(), os.mdid[3].ToString(), - os.mdid[4].ToString(), os.mdid) + ".zip"; + string destination = Path.Combine(Settings.Current.RepositoryPath, os.Mdid[0].ToString(), + os.Mdid[1].ToString(), os.Mdid[2].ToString(), + os.Mdid[3].ToString(), os.Mdid[4].ToString(), os.Mdid) + + ".zip"; - if(AddOS != null) - AddOS(os); + AddOS?.Invoke(os); } - } - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -227,106 +215,106 @@ namespace osrepodbmgr.Core try { long counter = 0; -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - foreach(KeyValuePair kvp in Context.hashes) + #endif + foreach(KeyValuePair kvp in Context.Hashes) { - if(UpdateProgress != null) - UpdateProgress(null, "Adding files to database", counter, Context.hashes.Count); + UpdateProgress?.Invoke(null, "Adding files to database", counter, Context.Hashes.Count); - if(!dbCore.DBOps.ExistsFile(kvp.Value.Sha256)) + if(!dbCore.DbOps.ExistsFile(kvp.Value.Sha256)) { - DBFile file = new DBFile + DbFile file = new DbFile { - Sha256 = kvp.Value.Sha256, ClamTime = null, Crack = kvp.Value.Crack, - Length = kvp.Value.Length, Virus = null, HasVirus = null, VirusTotalTime = null + Sha256 = kvp.Value.Sha256, + ClamTime = null, + Crack = kvp.Value.Crack, + Length = kvp.Value.Length, + Virus = null, + HasVirus = null, + VirusTotalTime = null }; - dbCore.DBOps.AddFile(file); + dbCore.DbOps.AddFile(file); - if(AddFile != null) - AddFile(file); + AddFile?.Invoke(file); } counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all files to the database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all files to the database", + stopwatch.Elapsed.TotalSeconds); + #endif - if(UpdateProgress != null) - UpdateProgress(null, "Adding OS information", counter, Context.hashes.Count); - dbCore.DBOps.AddOS(Context.dbInfo, out Context.dbInfo.id); - if(UpdateProgress != null) - UpdateProgress(null, "Creating OS table", counter, Context.hashes.Count); - dbCore.DBOps.CreateTableForOS(Context.dbInfo.id); + UpdateProgress?.Invoke(null, "Adding OS information", counter, Context.Hashes.Count); + dbCore.DbOps.AddOs(Context.DbInfo, out Context.DbInfo.Id); + UpdateProgress?.Invoke(null, "Creating OS table", counter, Context.Hashes.Count); + dbCore.DbOps.CreateTableForOs(Context.DbInfo.Id); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif counter = 0; - foreach(KeyValuePair kvp in Context.hashes) + foreach(KeyValuePair kvp in Context.Hashes) { - if(UpdateProgress != null) - UpdateProgress(null, "Adding files to OS in database", counter, Context.hashes.Count); + UpdateProgress?.Invoke(null, "Adding files to OS in database", counter, Context.Hashes.Count); - dbCore.DBOps.AddFileToOS(kvp.Value, Context.dbInfo.id); + dbCore.DbOps.AddFileToOs(kvp.Value, Context.DbInfo.Id); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all files to the OS in the database", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all files to the OS in the database", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif counter = 0; - foreach(KeyValuePair kvp in Context.foldersDict) + foreach(KeyValuePair kvp in Context.FoldersDict) { - if(UpdateProgress != null) - UpdateProgress(null, "Adding folders to OS in database", counter, Context.foldersDict.Count); + UpdateProgress?.Invoke(null, "Adding folders to OS in database", counter, + Context.FoldersDict.Count); - dbCore.DBOps.AddFolderToOS(kvp.Value, Context.dbInfo.id); + dbCore.DbOps.AddFolderToOs(kvp.Value, Context.DbInfo.Id); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all folders to the database", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all folders to the database", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif counter = 0; - if(Context.symlinksDict.Count > 0) - dbCore.DBOps.CreateSymlinkTableForOS(Context.dbInfo.id); - - foreach(KeyValuePair kvp in Context.symlinksDict) - { - if(UpdateProgress != null) - UpdateProgress(null, "Adding symbolic links to OS in database", counter, Context.symlinksDict.Count); + if(Context.SymlinksDict.Count > 0) dbCore.DbOps.CreateSymlinkTableForOs(Context.DbInfo.Id); - dbCore.DBOps.AddSymlinkToOS(kvp.Key, kvp.Value, Context.dbInfo.id); + foreach(KeyValuePair kvp in Context.SymlinksDict) + { + UpdateProgress?.Invoke(null, "Adding symbolic links to OS in database", counter, + Context.SymlinksDict.Count); + + dbCore.DbOps.AddSymlinkToOs(kvp.Key, kvp.Value, Context.DbInfo.Id); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all symbolic links to the database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddFilesToDb(): Took {0} seconds to add all symbolic links to the database", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -339,123 +327,107 @@ namespace osrepodbmgr.Core { if(string.IsNullOrEmpty(Settings.Current.DatabasePath)) { - if(Failed != null) - Failed("No database file specified"); + Failed?.Invoke("No database file specified"); return; } dbCore = new SQLite(); if(File.Exists(Settings.Current.DatabasePath)) { - if(!dbCore.OpenDB(Settings.Current.DatabasePath, null, null, null)) + if(!dbCore.OpenDb(Settings.Current.DatabasePath, null, null, null)) { - if(Failed != null) - Failed("Could not open database, correct file selected?"); + Failed?.Invoke("Could not open database, correct file selected?"); dbCore = null; return; } } else { - if(!dbCore.CreateDB(Settings.Current.DatabasePath, null, null, null)) + if(!dbCore.CreateDb(Settings.Current.DatabasePath, null, null, null)) { - if(Failed != null) - Failed("Could not create database, correct file selected?"); + Failed?.Invoke("Could not create database, correct file selected?"); dbCore = null; return; } - if(!dbCore.OpenDB(Settings.Current.DatabasePath, null, null, null)) + + if(!dbCore.OpenDb(Settings.Current.DatabasePath, null, null, null)) { - if(Failed != null) - Failed("Could not open database, correct file selected?"); + Failed?.Invoke("Could not open database, correct file selected?"); dbCore = null; return; } } - if(Finished != null) - Finished(); + + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } public static void CloseDB() { - if(dbCore != null) - dbCore.CloseDB(); + dbCore?.CloseDb(); } public static void RemoveOS(long id, string mdid) { - if(id == 0 || string.IsNullOrWhiteSpace(mdid)) - return; + if(id == 0 || string.IsNullOrWhiteSpace(mdid)) return; - string destination = Path.Combine(Settings.Current.RepositoryPath, mdid[0].ToString(), - mdid[1].ToString(), mdid[2].ToString(), mdid[3].ToString(), - mdid[4].ToString(), mdid) + ".zip"; + string destination = Path.Combine(Settings.Current.RepositoryPath, mdid[0].ToString(), mdid[1].ToString(), + mdid[2].ToString(), mdid[3].ToString(), mdid[4].ToString(), + mdid) + ".zip"; - if(File.Exists(destination)) - File.Delete(destination); + if(File.Exists(destination)) File.Delete(destination); - dbCore.DBOps.RemoveOS(id); + dbCore.DbOps.RemoveOs(id); } public static void GetFilesFromDb() { try { - ulong count = dbCore.DBOps.GetFilesCount(); - const ulong page = 2500; - ulong offset = 0; + ulong count = dbCore.DbOps.GetFilesCount(); + const ulong PAGE = 2500; + ulong offset = 0; - List files; - -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - while(dbCore.DBOps.GetFiles(out files, offset, page)) + #endif + while(dbCore.DbOps.GetFiles(out List files, offset, PAGE)) { - if(files.Count == 0) - break; + if(files.Count == 0) break; - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Loaded file {0} of {1}", offset, count), (long)offset, (long)count); + UpdateProgress?.Invoke(null, $"Loaded file {offset} of {count}", (long)offset, (long)count); - if(AddFiles != null) + AddFiles?.Invoke(files); - AddFiles(files); - - offset += page; + offset += PAGE; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.GetFilesFromDb(): Took {0} seconds to get all files from the database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.GetFilesFromDb(): Took {0} seconds to get all files from the database", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -463,28 +435,25 @@ namespace osrepodbmgr.Core { try { - dbCore.DBOps.ToggleCrack(hash, crack); + dbCore.DbOps.ToggleCrack(hash, crack); - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } - public static DBFile GetDBFile(string hash) + public static DbFile GetDBFile(string hash) { - return dbCore.DBOps.GetFile(hash); + return dbCore.DbOps.GetFile(hash); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Delegates.cs b/osrepodbmgr.Core/Workers/Delegates.cs index 1b9497a..14e0754 100644 --- a/osrepodbmgr.Core/Workers/Delegates.cs +++ b/osrepodbmgr.Core/Workers/Delegates.cs @@ -25,32 +25,42 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System.Collections.Generic; namespace osrepodbmgr.Core { public static partial class Workers { - public delegate void UpdateProgressDelegate(string text, string inner, long current, long maximum); - public delegate void UpdateProgress2Delegate(string text, string inner, long current, long maximum); - public delegate void FailedDelegate(string text); - public delegate void FinishedWithoutErrorDelegate(); - public delegate void FinishedWithTextDelegate(string text); - public delegate void AddFileForOSDelegate(string filename, string hash, bool known, bool isCrack); - public delegate void AddOSDelegate(DBEntry os); - public delegate void AddFileDelegate(DBFile file); - public delegate void AddFilesDelegate(List file); - public delegate void ScanFinishedDelegate(DBFile file); + public delegate void AddFileDelegate(DbFile file); - public static event UpdateProgressDelegate UpdateProgress; - public static event UpdateProgress2Delegate UpdateProgress2; - public static event FailedDelegate Failed; + public delegate void AddFileForOSDelegate(string filename, string hash, bool known, bool isCrack); + + public delegate void AddFilesDelegate(List file); + + public delegate void AddOSDelegate(DbEntry os); + + public delegate void FailedDelegate(string text); + + public delegate void FinishedWithoutErrorDelegate(); + + public delegate void FinishedWithTextDelegate(string text); + + public delegate void ScanFinishedDelegate(DbFile file); + + public delegate void UpdateProgress2Delegate(string text, string inner, long current, long maximum); + + public delegate void UpdateProgressDelegate(string text, string inner, long current, long maximum); + + public static event UpdateProgressDelegate UpdateProgress; + public static event UpdateProgress2Delegate UpdateProgress2; + public static event FailedDelegate Failed; public static event FinishedWithoutErrorDelegate Finished; - public static event FinishedWithTextDelegate FinishedWithText; - public static event AddFileForOSDelegate AddFileForOS; - public static event AddOSDelegate AddOS; - public static event AddFileDelegate AddFile; - public static event AddFilesDelegate AddFiles; - public static event ScanFinishedDelegate ScanFinished; + public static event FinishedWithTextDelegate FinishedWithText; + public static event AddFileForOSDelegate AddFileForOS; + public static event AddOSDelegate AddOS; + public static event AddFileDelegate AddFile; + public static event AddFilesDelegate AddFiles; + public static event ScanFinishedDelegate ScanFinished; } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/DiscImageChef.cs b/osrepodbmgr.Core/Workers/DiscImageChef.cs index fac7bab..3ae372b 100644 --- a/osrepodbmgr.Core/Workers/DiscImageChef.cs +++ b/osrepodbmgr.Core/Workers/DiscImageChef.cs @@ -25,16 +25,25 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.IO; using DiscImageChef.CommonTypes; +using DiscImageChef.Decoders.CD; +using DiscImageChef.Decoders.DVD; using DiscImageChef.Decoders.PCMCIA; +using DiscImageChef.DiscImages; using DiscImageChef.Filesystems; using DiscImageChef.Filters; -using DiscImageChef.DiscImages; +using DiscImageChef.Metadata; using DiscImageChef.Partitions; using Schemas; +using DMI = DiscImageChef.Decoders.Xbox.DMI; +using MediaType = DiscImageChef.CommonTypes.MediaType; +using Session = DiscImageChef.DiscImages.Session; +using TrackType = Schemas.TrackType; +using Tuple = DiscImageChef.Decoders.PCMCIA.Tuple; namespace osrepodbmgr.Core { @@ -42,1030 +51,1071 @@ namespace osrepodbmgr.Core { public static void AddMedia() { - if(string.IsNullOrWhiteSpace(Context.selectedFile)) + if(string.IsNullOrWhiteSpace(Context.SelectedFile)) { - if(Failed != null) - Failed("There is no file set"); + Failed?.Invoke("There is no file set"); return; } string filesPath; - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; - string selectedFile = Path.Combine(filesPath, Context.selectedFile); + string selectedFile = Path.Combine(filesPath, Context.SelectedFile); if(!File.Exists(selectedFile)) { - if(Failed != null) - Failed("Selected file does not exist"); + Failed?.Invoke("Selected file does not exist"); return; } CICMMetadataType sidecar = new CICMMetadataType(); - PluginBase plugins = new PluginBase(); - IMediaImage _imageFormat; + PluginBase plugins = new PluginBase(); long maxProgress = 4; - long currentProgress = 0; FiltersList filtersList = new FiltersList(); - if(UpdateProgress != null) - UpdateProgress(null, "Detecting image filter", 1, maxProgress); + UpdateProgress?.Invoke(null, "Detecting image filter", 1, maxProgress); IFilter inputFilter = filtersList.GetFilter(selectedFile); - if(inputFilter == null) { - if(Failed != null) - Failed("Cannot open specified file."); + Failed?.Invoke("Cannot open specified file."); return; } try { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - if(UpdateProgress != null) - UpdateProgress(null, "Detecting image format", 2, maxProgress); - _imageFormat = ImageFormat.Detect(inputFilter); -#if DEBUG + #endif + UpdateProgress?.Invoke(null, "Detecting image format", 2, maxProgress); + IMediaImage imageFormat = ImageFormat.Detect(inputFilter); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to detect image format", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddMedia(): Took {0} seconds to detect image format", + stopwatch.Elapsed.TotalSeconds); + #endif - if(_imageFormat == null) + if(imageFormat == null) { - if(Failed != null) - Failed("Image format not identified, not proceeding with analysis."); + Failed?.Invoke("Image format not identified, not proceeding with analysis."); return; } try { - if(!_imageFormat.Open(inputFilter)) + if(!imageFormat.Open(inputFilter)) { - if(Failed != null) - Failed("Unable to open image format\n" + - "No error given"); + Failed?.Invoke("Unable to open image format\n" + "No error given"); return; } } catch(Exception ex) { - if(Failed != null) - Failed(string.Format("Unable to open image format\n" + - "Error: {0}", ex.Message)); -#if DEBUG + Failed?.Invoke("Unable to open image format\n" + $"Error: {ex.Message}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif return; } - FileInfo fi = new FileInfo(selectedFile); + FileInfo fi = new FileInfo(selectedFile); FileStream fs = new FileStream(selectedFile, FileMode.Open, FileAccess.Read); Checksum imgChkWorker = new Checksum(); - if(UpdateProgress != null) - UpdateProgress(null, "Hashing image file", 3, maxProgress); + UpdateProgress?.Invoke(null, "Hashing image file", 3, maxProgress); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif byte[] data; - long position = 0; - while(position < (fi.Length - 524288)) + long position = 0; + while(position < fi.Length - 524288) { data = new byte[524288]; fs.Read(data, 0, 524288); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("{0} of {1} bytes", position, fi.Length), position, fi.Length); + UpdateProgress2?.Invoke(null, $"{position} of {fi.Length} bytes", position, fi.Length); imgChkWorker.Update(data); position += 524288; } - data = new byte[fi.Length - position]; + data = new byte[fi.Length - position]; fs.Read(data, 0, (int)(fi.Length - position)); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("{0} of {1} bytes", position, fi.Length), position, fi.Length); + UpdateProgress2?.Invoke(null, $"{position} of {fi.Length} bytes", position, fi.Length); imgChkWorker.Update(data); fs.Close(); -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash image file", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash image file", + stopwatch.Elapsed.TotalSeconds); + #endif List imgChecksums = imgChkWorker.End(); - if(UpdateProgress2 != null) - UpdateProgress2(null, null, 0, 0); + UpdateProgress2?.Invoke(null, null, 0, 0); - switch(_imageFormat.Info.XmlMediaType) + long currentProgress = 0; + switch(imageFormat.Info.XmlMediaType) { case XmlMediaType.OpticalDisc: + { + maxProgress = 4 + imageFormat.Info.ReadableMediaTags.Count + imageFormat.Tracks.Count; + + UpdateProgress?.Invoke(null, "Hashing image file", 3, maxProgress); + + sidecar.OpticalDisc = new OpticalDiscType[1]; + sidecar.OpticalDisc[0] = new OpticalDiscType { - maxProgress = 4 + _imageFormat.Info.ReadableMediaTags.Count + _imageFormat.Tracks.Count; - - if(UpdateProgress != null) - UpdateProgress(null, "Hashing image file", 3, maxProgress); - - sidecar.OpticalDisc = new OpticalDiscType[1]; - sidecar.OpticalDisc[0] = new OpticalDiscType(); - sidecar.OpticalDisc[0].Checksums = imgChecksums.ToArray(); - sidecar.OpticalDisc[0].Image = new ImageType(); - sidecar.OpticalDisc[0].Image.format = _imageFormat.Format; - sidecar.OpticalDisc[0].Image.offset = 0; - sidecar.OpticalDisc[0].Image.offsetSpecified = true; - sidecar.OpticalDisc[0].Image.Value = Path.GetFileName(selectedFile); - sidecar.OpticalDisc[0].Size = fi.Length; - sidecar.OpticalDisc[0].Sequence = new SequenceType(); - if(_imageFormat.Info.MediaSequence != 0 && _imageFormat.Info.LastMediaSequence != 0) + Checksums = imgChecksums.ToArray(), + Image = new ImageType { - sidecar.OpticalDisc[0].Sequence.MediaSequence = _imageFormat.Info.MediaSequence; - sidecar.OpticalDisc[0].Sequence.TotalMedia = _imageFormat.Info.LastMediaSequence; - } - else - { - sidecar.OpticalDisc[0].Sequence.MediaSequence = 1; - sidecar.OpticalDisc[0].Sequence.TotalMedia = 1; - } - sidecar.OpticalDisc[0].Sequence.MediaTitle = _imageFormat.Info.MediaTitle; - - MediaType dskType = _imageFormat.Info.MediaType; - - currentProgress = 3; - -#if DEBUG - stopwatch.Restart(); -#endif - foreach(MediaTagType tagType in _imageFormat.Info.ReadableMediaTags) - { - currentProgress++; - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Hashing file containing {0}", tagType), currentProgress, maxProgress); - - switch(tagType) - { - case MediaTagType.CD_ATIP: - sidecar.OpticalDisc[0].ATIP = new DumpType(); - sidecar.OpticalDisc[0].ATIP.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(); - sidecar.OpticalDisc[0].ATIP.Size = _imageFormat.ReadDiskTag(MediaTagType.CD_ATIP).Length; - DiscImageChef.Decoders.CD.ATIP.CDATIP? atip = DiscImageChef.Decoders.CD.ATIP.Decode(_imageFormat.ReadDiskTag(MediaTagType.CD_ATIP)); - if(atip.HasValue) - { - if(atip.Value.DDCD) - dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR; - else - dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR; - } - break; - case MediaTagType.DVD_BCA: - sidecar.OpticalDisc[0].BCA = new DumpType(); - sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(); - sidecar.OpticalDisc[0].BCA.Size = _imageFormat.ReadDiskTag(MediaTagType.DVD_BCA).Length; - break; - case MediaTagType.BD_BCA: - sidecar.OpticalDisc[0].BCA = new DumpType(); - sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(); - sidecar.OpticalDisc[0].BCA.Size = _imageFormat.ReadDiskTag(MediaTagType.BD_BCA).Length; - break; - case MediaTagType.DVD_CMI: - sidecar.OpticalDisc[0].CMI = new DumpType(); - DiscImageChef.Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi = DiscImageChef.Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(_imageFormat.ReadDiskTag(MediaTagType.DVD_CMI)); - if(cmi.HasValue) - { - switch(cmi.Value.CopyrightType) - { - case DiscImageChef.Decoders.DVD.CopyrightType.AACS: - sidecar.OpticalDisc[0].CopyProtection = "AACS"; - break; - case DiscImageChef.Decoders.DVD.CopyrightType.CSS: - sidecar.OpticalDisc[0].CopyProtection = "CSS"; - break; - case DiscImageChef.Decoders.DVD.CopyrightType.CPRM: - sidecar.OpticalDisc[0].CopyProtection = "CPRM"; - break; - } - } - sidecar.OpticalDisc[0].CMI.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(); - sidecar.OpticalDisc[0].CMI.Size = _imageFormat.ReadDiskTag(MediaTagType.DVD_CMI).Length; - break; - case MediaTagType.DVD_DMI: - sidecar.OpticalDisc[0].DMI = new DumpType(); - sidecar.OpticalDisc[0].DMI.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(); - sidecar.OpticalDisc[0].DMI.Size = _imageFormat.ReadDiskTag(MediaTagType.DVD_DMI).Length; - if(DiscImageChef.Decoders.Xbox.DMI.IsXbox(_imageFormat.ReadDiskTag(MediaTagType.DVD_DMI))) - { - dskType = MediaType.XGD; - sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); - sidecar.OpticalDisc[0].Dimensions.Diameter = 120; - } - else if(DiscImageChef.Decoders.Xbox.DMI.IsXbox360(_imageFormat.ReadDiskTag(MediaTagType.DVD_DMI))) - { - dskType = MediaType.XGD2; - sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); - sidecar.OpticalDisc[0].Dimensions.Diameter = 120; - } - break; - case MediaTagType.DVD_PFI: - sidecar.OpticalDisc[0].PFI = new DumpType(); - sidecar.OpticalDisc[0].PFI.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(); - sidecar.OpticalDisc[0].PFI.Size = _imageFormat.ReadDiskTag(MediaTagType.DVD_PFI).Length; - DiscImageChef.Decoders.DVD.PFI.PhysicalFormatInformation? pfi = DiscImageChef.Decoders.DVD.PFI.Decode(_imageFormat.ReadDiskTag(MediaTagType.DVD_PFI)); - if(pfi.HasValue) - { - if(dskType != MediaType.XGD && - dskType != MediaType.XGD2 && - dskType != MediaType.XGD3) - { - switch(pfi.Value.DiskCategory) - { - case DiscImageChef.Decoders.DVD.DiskCategory.DVDPR: - dskType = MediaType.DVDPR; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDPRDL: - dskType = MediaType.DVDPRDL; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDPRW: - dskType = MediaType.DVDPRW; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDPRWDL: - dskType = MediaType.DVDPRWDL; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDR: - dskType = MediaType.DVDR; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDRAM: - dskType = MediaType.DVDRAM; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDROM: - dskType = MediaType.DVDROM; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.DVDRW: - dskType = MediaType.DVDRW; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.HDDVDR: - dskType = MediaType.HDDVDR; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.HDDVDRAM: - dskType = MediaType.HDDVDRAM; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.HDDVDROM: - dskType = MediaType.HDDVDROM; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.HDDVDRW: - dskType = MediaType.HDDVDRW; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.Nintendo: - dskType = MediaType.GOD; - break; - case DiscImageChef.Decoders.DVD.DiskCategory.UMD: - dskType = MediaType.UMD; - break; - } - - if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6) - dskType = MediaType.DVDRDL; - if(dskType == MediaType.DVDRW && pfi.Value.PartVersion == 3) - dskType = MediaType.DVDRWDL; - if(dskType == MediaType.GOD && pfi.Value.DiscSize == DiscImageChef.Decoders.DVD.DVDSize.OneTwenty) - dskType = MediaType.WOD; - - sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); - if(dskType == MediaType.UMD) - sidecar.OpticalDisc[0].Dimensions.Diameter = 60; - else if(pfi.Value.DiscSize == DiscImageChef.Decoders.DVD.DVDSize.Eighty) - sidecar.OpticalDisc[0].Dimensions.Diameter = 80; - else if(pfi.Value.DiscSize == DiscImageChef.Decoders.DVD.DVDSize.OneTwenty) - sidecar.OpticalDisc[0].Dimensions.Diameter = 120; - } - } - break; - case MediaTagType.CD_PMA: - sidecar.OpticalDisc[0].PMA = new DumpType(); - sidecar.OpticalDisc[0].PMA.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(); - sidecar.OpticalDisc[0].PMA.Size = _imageFormat.ReadDiskTag(MediaTagType.CD_PMA).Length; - break; - } - } -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media tags", stopwatch.Elapsed.TotalSeconds); -#endif - - try - { - List sessions = _imageFormat.Sessions; - sidecar.OpticalDisc[0].Sessions = sessions != null ? sessions.Count : 1; - } - catch - { - sidecar.OpticalDisc[0].Sessions = 1; - } - - List tracks = _imageFormat.Tracks; - List trksLst = null; - if(tracks != null) - { - sidecar.OpticalDisc[0].Tracks = new int[1]; - sidecar.OpticalDisc[0].Tracks[0] = tracks.Count; - trksLst = new List(); - } - - foreach(Track trk in tracks) - { - currentProgress++; - - Schemas.TrackType xmlTrk = new Schemas.TrackType(); - switch(trk.TrackType) - { - case DiscImageChef.DiscImages.TrackType.Audio: - xmlTrk.TrackType1 = TrackTypeTrackType.audio; - break; - case DiscImageChef.DiscImages.TrackType.CdMode2Form2: - xmlTrk.TrackType1 = TrackTypeTrackType.m2f2; - break; - case DiscImageChef.DiscImages.TrackType.CdMode2Formless: - xmlTrk.TrackType1 = TrackTypeTrackType.mode2; - break; - case DiscImageChef.DiscImages.TrackType.CdMode2Form1: - xmlTrk.TrackType1 = TrackTypeTrackType.m2f1; - break; - case DiscImageChef.DiscImages.TrackType.CdMode1: - xmlTrk.TrackType1 = TrackTypeTrackType.mode1; - break; - case DiscImageChef.DiscImages.TrackType.Data: - switch(sidecar.OpticalDisc[0].DiscType) - { - case "BD": - xmlTrk.TrackType1 = TrackTypeTrackType.bluray; - break; - case "DDCD": - xmlTrk.TrackType1 = TrackTypeTrackType.ddcd; - break; - case "DVD": - xmlTrk.TrackType1 = TrackTypeTrackType.dvd; - break; - case "HD DVD": - xmlTrk.TrackType1 = TrackTypeTrackType.hddvd; - break; - default: - xmlTrk.TrackType1 = TrackTypeTrackType.mode1; - break; - } - break; - } - xmlTrk.Sequence = new TrackSequenceType(); - xmlTrk.Sequence.Session = trk.TrackSession; - xmlTrk.Sequence.TrackNumber = (int)trk.TrackSequence; - xmlTrk.StartSector = (long)trk.TrackStartSector; - xmlTrk.EndSector = (long)trk.TrackEndSector; - - if(trk.Indexes != null && trk.Indexes.ContainsKey(0)) - { - ulong idx0; - if(trk.Indexes.TryGetValue(0, out idx0)) - xmlTrk.StartSector = (long)idx0; - } - - if(sidecar.OpticalDisc[0].DiscType == "CD" || - sidecar.OpticalDisc[0].DiscType == "GD") - { - xmlTrk.StartMSF = LbaToMsf(xmlTrk.StartSector); - xmlTrk.EndMSF = LbaToMsf(xmlTrk.EndSector); - } - else if(sidecar.OpticalDisc[0].DiscType == "DDCD") - { - xmlTrk.StartMSF = DdcdLbaToMsf(xmlTrk.StartSector); - xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector); - } - - xmlTrk.Image = new ImageType(); - xmlTrk.Image.Value = Path.GetFileName(trk.TrackFile); - if(trk.TrackFileOffset > 0) - { - xmlTrk.Image.offset = (long)trk.TrackFileOffset; - xmlTrk.Image.offsetSpecified = true; - } - - xmlTrk.Image.format = trk.TrackFileType; - xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector; - xmlTrk.BytesPerSector = trk.TrackBytesPerSector; - - uint sectorsToRead = 512; - ulong sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1); - ulong doneSectors = 0; - - // If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum. - if(_imageFormat.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) - { - xmlTrk.Checksums = sidecar.OpticalDisc[0].Checksums; - } - else - { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Hashing track {0}", trk.TrackSequence), currentProgress, maxProgress); - - Checksum trkChkWorker = new Checksum(); - -#if DEBUG - stopwatch.Restart(); -#endif - while(doneSectors < sectors) - { - byte[] sector; - - if((sectors - doneSectors) >= sectorsToRead) - { - sector = _imageFormat.ReadSectorsLong(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors); - doneSectors += sectorsToRead; - } - else - { - sector = _imageFormat.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors); - doneSectors += (sectors - doneSectors); - } - - trkChkWorker.Update(sector); - } - - List trkChecksums = trkChkWorker.End(); -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash track {1}", stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); -#endif - - xmlTrk.Checksums = trkChecksums.ToArray(); - } - - if(UpdateProgress2 != null) - UpdateProgress2(null, null, 0, 0); - - if(trk.TrackSubchannelType != TrackSubchannelType.None) - { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Hashing subchannel of track {0}", trk.TrackSequence), currentProgress, maxProgress); - - xmlTrk.SubChannel = new SubChannelType(); - xmlTrk.SubChannel.Image = new ImageType(); - switch(trk.TrackSubchannelType) - { - case TrackSubchannelType.Packed: - case TrackSubchannelType.PackedInterleaved: - xmlTrk.SubChannel.Image.format = "rw"; - break; - case TrackSubchannelType.Raw: - case TrackSubchannelType.RawInterleaved: - xmlTrk.SubChannel.Image.format = "rw_raw"; - break; - case TrackSubchannelType.Q16: - case TrackSubchannelType.Q16Interleaved: - xmlTrk.SubChannel.Image.format = "q16"; - break; - } - - if(trk.TrackFileOffset > 0) - { - xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset; - xmlTrk.SubChannel.Image.offsetSpecified = true; - } - xmlTrk.SubChannel.Image.Value = trk.TrackSubchannelFile; - - // TODO: Packed subchannel has different size? - xmlTrk.SubChannel.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96; - - Checksum subChkWorker = new Checksum(); - - sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1); - doneSectors = 0; - -#if DEBUG - stopwatch.Restart(); -#endif - while(doneSectors < sectors) - { - byte[] sector; - - if((sectors - doneSectors) >= sectorsToRead) - { - sector = _imageFormat.ReadSectorsTag(doneSectors, sectorsToRead, (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CdSectorSubchannel); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), position, fi.Length); - doneSectors += sectorsToRead; - } - else - { - sector = _imageFormat.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), (uint)xmlTrk.Sequence.TrackNumber, SectorTagType.CdSectorSubchannel); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), position, fi.Length); - doneSectors += (sectors - doneSectors); - } - - subChkWorker.Update(sector); - } - - List subChecksums = subChkWorker.End(); - - xmlTrk.SubChannel.Checksums = subChecksums.ToArray(); -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash subchannel of track {1}", stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); -#endif - - if(UpdateProgress2 != null) - UpdateProgress2(null, null, 0, 0); - } - - if(UpdateProgress != null) - UpdateProgress(null, "Checking filesystems", maxProgress - 1, maxProgress); - -#if DEBUG - stopwatch.Restart(); -#endif - List partitions = new List(); - - foreach(IPartition _partplugin in plugins.PartPluginsList.Values) - { - List _partitions; - - if(_partplugin.GetInformation(_imageFormat, out _partitions, 0)) // TODO: Subpartitions - partitions.AddRange(_partitions); - } - - xmlTrk.FileSystemInformation = new PartitionType[1]; - if(partitions.Count > 0) - { - xmlTrk.FileSystemInformation = new PartitionType[partitions.Count]; - for(int i = 0; i < partitions.Count; i++) - { - xmlTrk.FileSystemInformation[i] = new PartitionType(); - xmlTrk.FileSystemInformation[i].Description = partitions[i].Description; - xmlTrk.FileSystemInformation[i].EndSector = (int)(partitions[i].End); - xmlTrk.FileSystemInformation[i].Name = partitions[i].Name; - xmlTrk.FileSystemInformation[i].Sequence = (int)partitions[i].Sequence; - xmlTrk.FileSystemInformation[i].StartSector = (int)partitions[i].Start; - xmlTrk.FileSystemInformation[i].Type = partitions[i].Type; - - List lstFs = new List(); - - foreach(IFilesystem _plugin in plugins.PluginsList.Values) - { - try - { - if(_plugin.Identify(_imageFormat, partitions[i])) - { - string foo; - _plugin.GetInformation(_imageFormat, partitions[i], out foo, null); - lstFs.Add(_plugin.XmlFsType); - - if(_plugin.XmlFsType.Type == "Opera") - dskType = MediaType.ThreeDO; - if(_plugin.XmlFsType.Type == "PC Engine filesystem") - dskType = MediaType.SuperCDROM2; - if(_plugin.XmlFsType.Type == "Nintendo Wii filesystem") - dskType = MediaType.WOD; - if(_plugin.XmlFsType.Type == "Nintendo Gamecube filesystem") - dskType = MediaType.GOD; - } - } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - { - //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); - } - } - - if(lstFs.Count > 0) - xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray(); - } - } - else - { - xmlTrk.FileSystemInformation[0] = new PartitionType(); - xmlTrk.FileSystemInformation[0].EndSector = (int)xmlTrk.EndSector; - xmlTrk.FileSystemInformation[0].StartSector = (int)xmlTrk.StartSector; - - Partition xmlPart = new Partition - { - Start = (ulong)xmlTrk.StartSector, - Length = (ulong)((xmlTrk.EndSector - xmlTrk.StartSector) + 1) - }; - - List lstFs = new List(); - - foreach(IFilesystem _plugin in plugins.PluginsList.Values) - { - try - { - if(_plugin.Identify(_imageFormat, xmlPart)) - { - string foo; - _plugin.GetInformation(_imageFormat, xmlPart, out foo, null); - lstFs.Add(_plugin.XmlFsType); - - if(_plugin.XmlFsType.Type == "Opera") - dskType = MediaType.ThreeDO; - if(_plugin.XmlFsType.Type == "PC Engine filesystem") - dskType = MediaType.SuperCDROM2; - if(_plugin.XmlFsType.Type == "Nintendo Wii filesystem") - dskType = MediaType.WOD; - if(_plugin.XmlFsType.Type == "Nintendo Gamecube filesystem") - dskType = MediaType.GOD; - } - } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body - { - //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); - } - } - - if(lstFs.Count > 0) - xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray(); - } -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to check all filesystems on track {1}", stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); -#endif - - trksLst.Add(xmlTrk); - } - - if(UpdateProgress != null) - UpdateProgress(null, "Finishing", maxProgress, maxProgress); - - if(trksLst != null) - sidecar.OpticalDisc[0].Track = trksLst.ToArray(); - - string dscType, dscSubType; - DiscImageChef.Metadata.MediaType.MediaTypeToString(dskType, out dscType, out dscSubType); - sidecar.OpticalDisc[0].DiscType = dscType; - sidecar.OpticalDisc[0].DiscSubType = dscSubType; - - if(!string.IsNullOrEmpty(_imageFormat.Info.DriveManufacturer) || - !string.IsNullOrEmpty(_imageFormat.Info.DriveModel) || - !string.IsNullOrEmpty(_imageFormat.Info.DriveFirmwareRevision) || - !string.IsNullOrEmpty(_imageFormat.Info.DriveSerialNumber)) - { - sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1]; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0]; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = _imageFormat.Info.Sectors; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = _imageFormat.Info.DriveManufacturer; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = _imageFormat.Info.DriveModel; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = _imageFormat.Info.DriveFirmwareRevision; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = _imageFormat.Info.DriveSerialNumber; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType(); - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Name = _imageFormat.Info.Application; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Version = _imageFormat.Info.ApplicationVersion; - } - - Context.workingDisc = sidecar.OpticalDisc[0]; - if(Finished != null) - Finished(); - return; + format = imageFormat.Format, + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(selectedFile) + }, + Size = fi.Length, + Sequence = new SequenceType {MediaTitle = imageFormat.Info.MediaTitle} + }; + if(imageFormat.Info.MediaSequence != 0 && imageFormat.Info.LastMediaSequence != 0) + { + sidecar.OpticalDisc[0].Sequence.MediaSequence = imageFormat.Info.MediaSequence; + sidecar.OpticalDisc[0].Sequence.TotalMedia = imageFormat.Info.LastMediaSequence; } - case XmlMediaType.BlockMedia: + else { - maxProgress = 3 + _imageFormat.Info.ReadableMediaTags.Count; - if(UpdateProgress != null) - UpdateProgress(null, "Hashing image file", 3, maxProgress); + sidecar.OpticalDisc[0].Sequence.MediaSequence = 1; + sidecar.OpticalDisc[0].Sequence.TotalMedia = 1; + } - sidecar.BlockMedia = new BlockMediaType[1]; - sidecar.BlockMedia[0] = new BlockMediaType(); - sidecar.BlockMedia[0].Checksums = imgChecksums.ToArray(); - sidecar.BlockMedia[0].Image = new ImageType(); - sidecar.BlockMedia[0].Image.format = _imageFormat.Format; - sidecar.BlockMedia[0].Image.offset = 0; - sidecar.BlockMedia[0].Image.offsetSpecified = true; - sidecar.BlockMedia[0].Image.Value = Path.GetFileName(selectedFile); - sidecar.BlockMedia[0].Size = fi.Length; - sidecar.BlockMedia[0].Sequence = new SequenceType(); - if(_imageFormat.Info.MediaSequence != 0 && _imageFormat.Info.LastMediaSequence != 0) + MediaType dskType = imageFormat.Info.MediaType; + + currentProgress = 3; + + #if DEBUG + stopwatch.Restart(); + #endif + foreach(MediaTagType tagType in imageFormat.Info.ReadableMediaTags) + { + currentProgress++; + UpdateProgress?.Invoke(null, $"Hashing file containing {tagType}", currentProgress, + maxProgress); + + switch(tagType) { - sidecar.BlockMedia[0].Sequence.MediaSequence = _imageFormat.Info.MediaSequence; - sidecar.BlockMedia[0].Sequence.TotalMedia = _imageFormat.Info.LastMediaSequence; - } - else - { - sidecar.BlockMedia[0].Sequence.MediaSequence = 1; - sidecar.BlockMedia[0].Sequence.TotalMedia = 1; - } - sidecar.BlockMedia[0].Sequence.MediaTitle = _imageFormat.Info.MediaTitle; - - currentProgress = 3; - -#if DEBUG - stopwatch.Restart(); -#endif - foreach(MediaTagType tagType in _imageFormat.Info.ReadableMediaTags) - { - currentProgress++; - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Hashing file containing {0}", tagType), currentProgress, maxProgress); - - switch(tagType) - { - case MediaTagType.ATAPI_IDENTIFY: - sidecar.BlockMedia[0].ATA = new ATAType(); - sidecar.BlockMedia[0].ATA.Identify = new DumpType(); - sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(); - sidecar.BlockMedia[0].ATA.Identify.Size = _imageFormat.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length; - break; - case MediaTagType.ATA_IDENTIFY: - sidecar.BlockMedia[0].ATA = new ATAType(); - sidecar.BlockMedia[0].ATA.Identify = new DumpType(); - sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(); - sidecar.BlockMedia[0].ATA.Identify.Size = _imageFormat.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length; - break; - case MediaTagType.PCMCIA_CIS: - byte[] cis = _imageFormat.ReadDiskTag(MediaTagType.PCMCIA_CIS); - sidecar.BlockMedia[0].PCMCIA = new PCMCIAType(); - sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType(); - sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = Checksum.GetChecksums(cis).ToArray(); - sidecar.BlockMedia[0].PCMCIA.CIS.Size = cis.Length; - DiscImageChef.Decoders.PCMCIA.Tuple[] tuples = CIS.GetTuples(cis); - if(tuples != null) + case MediaTagType.CD_ATIP: + sidecar.OpticalDisc[0].ATIP = new DumpType(); + sidecar.OpticalDisc[0].ATIP.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .CD_ATIP)) + .ToArray(); + sidecar.OpticalDisc[0].ATIP.Size = + imageFormat.ReadDiskTag(MediaTagType.CD_ATIP).Length; + ATIP.CDATIP? atip = ATIP.Decode(imageFormat.ReadDiskTag(MediaTagType.CD_ATIP)); + if(atip.HasValue) + if(atip.Value.DDCD) + dskType = atip.Value.DiscType ? MediaType.DDCDRW : MediaType.DDCDR; + else + dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR; + break; + case MediaTagType.DVD_BCA: + sidecar.OpticalDisc[0].BCA = new DumpType(); + sidecar.OpticalDisc[0].BCA.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .DVD_BCA)) + .ToArray(); + sidecar.OpticalDisc[0].BCA.Size = + imageFormat.ReadDiskTag(MediaTagType.DVD_BCA).Length; + break; + case MediaTagType.BD_BCA: + sidecar.OpticalDisc[0].BCA = new DumpType(); + sidecar.OpticalDisc[0].BCA.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .BD_BCA)) + .ToArray(); + sidecar.OpticalDisc[0].BCA.Size = + imageFormat.ReadDiskTag(MediaTagType.BD_BCA).Length; + break; + case MediaTagType.DVD_CMI: + sidecar.OpticalDisc[0].CMI = new DumpType(); + CSS_CPRM.LeadInCopyright? cmi = + CSS_CPRM.DecodeLeadInCopyright(imageFormat.ReadDiskTag(MediaTagType.DVD_CMI)); + if(cmi.HasValue) + switch(cmi.Value.CopyrightType) { - foreach(DiscImageChef.Decoders.PCMCIA.Tuple tuple in tuples) - { - if(tuple.Code == TupleCodes.CISTPL_MANFID) - { - ManufacturerIdentificationTuple manfid = CIS.DecodeManufacturerIdentificationTuple(tuple); - - if(manfid != null) - { - sidecar.BlockMedia[0].PCMCIA.ManufacturerCode = manfid.ManufacturerID; - sidecar.BlockMedia[0].PCMCIA.CardCode = manfid.CardID; - sidecar.BlockMedia[0].PCMCIA.ManufacturerCodeSpecified = true; - sidecar.BlockMedia[0].PCMCIA.CardCodeSpecified = true; - } - } - else if(tuple.Code == TupleCodes.CISTPL_VERS_1) - { - Level1VersionTuple vers = CIS.DecodeLevel1VersionTuple(tuple); - - if(vers != null) - { - sidecar.BlockMedia[0].PCMCIA.Manufacturer = vers.Manufacturer; - sidecar.BlockMedia[0].PCMCIA.ProductName = vers.Product; - sidecar.BlockMedia[0].PCMCIA.Compliance = string.Format("{0}.{1}", vers.MajorVersion, vers.MinorVersion); - sidecar.BlockMedia[0].PCMCIA.AdditionalInformation = vers.AdditionalInformation; - } - } - } + case CopyrightType.AACS: + sidecar.OpticalDisc[0].CopyProtection = "AACS"; + break; + case CopyrightType.CSS: + sidecar.OpticalDisc[0].CopyProtection = "CSS"; + break; + case CopyrightType.CPRM: + sidecar.OpticalDisc[0].CopyProtection = "CPRM"; + break; } - break; - case MediaTagType.SCSI_INQUIRY: - sidecar.BlockMedia[0].SCSI = new SCSIType(); - sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType(); - sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(); - sidecar.BlockMedia[0].SCSI.Inquiry.Size = _imageFormat.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length; - break; - case MediaTagType.SD_CID: - if(sidecar.BlockMedia[0].SecureDigital == null) - sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].SecureDigital.CID = new DumpType(); - sidecar.BlockMedia[0].SecureDigital.CID.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.SD_CID)).ToArray(); - sidecar.BlockMedia[0].SecureDigital.CID.Size = _imageFormat.ReadDiskTag(MediaTagType.SD_CID).Length; - break; - case MediaTagType.SD_CSD: - if(sidecar.BlockMedia[0].SecureDigital == null) - sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType(); - sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(); - sidecar.BlockMedia[0].SecureDigital.CSD.Size = _imageFormat.ReadDiskTag(MediaTagType.SD_CSD).Length; - break; - case MediaTagType.MMC_ExtendedCSD: - if(sidecar.BlockMedia[0].SecureDigital == null) - sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType(); - sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD.Checksums = Checksum.GetChecksums(_imageFormat.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(); - sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD.Size = _imageFormat.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length; - break; - } + sidecar.OpticalDisc[0].CMI.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .DVD_CMI)) + .ToArray(); + sidecar.OpticalDisc[0].CMI.Size = + imageFormat.ReadDiskTag(MediaTagType.DVD_CMI).Length; + break; + case MediaTagType.DVD_DMI: + sidecar.OpticalDisc[0].DMI = new DumpType(); + sidecar.OpticalDisc[0].DMI.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .DVD_DMI)) + .ToArray(); + sidecar.OpticalDisc[0].DMI.Size = + imageFormat.ReadDiskTag(MediaTagType.DVD_DMI).Length; + if(DMI.IsXbox(imageFormat.ReadDiskTag(MediaTagType.DVD_DMI))) + { + dskType = MediaType.XGD; + sidecar.OpticalDisc[0].Dimensions = new DimensionsType {Diameter = 120}; + } + else if(DMI.IsXbox360(imageFormat.ReadDiskTag(MediaTagType.DVD_DMI))) + { + dskType = MediaType.XGD2; + sidecar.OpticalDisc[0].Dimensions = new DimensionsType {Diameter = 120}; + } + + break; + case MediaTagType.DVD_PFI: + sidecar.OpticalDisc[0].PFI = new DumpType(); + sidecar.OpticalDisc[0].PFI.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .DVD_PFI)) + .ToArray(); + sidecar.OpticalDisc[0].PFI.Size = + imageFormat.ReadDiskTag(MediaTagType.DVD_PFI).Length; + PFI.PhysicalFormatInformation? pfi = + PFI.Decode(imageFormat.ReadDiskTag(MediaTagType.DVD_PFI)); + if(pfi.HasValue) + if(dskType != MediaType.XGD && dskType != MediaType.XGD2 && + dskType != MediaType.XGD3) + { + switch(pfi.Value.DiskCategory) + { + case DiskCategory.DVDPR: + dskType = MediaType.DVDPR; + break; + case DiskCategory.DVDPRDL: + dskType = MediaType.DVDPRDL; + break; + case DiskCategory.DVDPRW: + dskType = MediaType.DVDPRW; + break; + case DiskCategory.DVDPRWDL: + dskType = MediaType.DVDPRWDL; + break; + case DiskCategory.DVDR: + dskType = MediaType.DVDR; + break; + case DiskCategory.DVDRAM: + dskType = MediaType.DVDRAM; + break; + case DiskCategory.DVDROM: + dskType = MediaType.DVDROM; + break; + case DiskCategory.DVDRW: + dskType = MediaType.DVDRW; + break; + case DiskCategory.HDDVDR: + dskType = MediaType.HDDVDR; + break; + case DiskCategory.HDDVDRAM: + dskType = MediaType.HDDVDRAM; + break; + case DiskCategory.HDDVDROM: + dskType = MediaType.HDDVDROM; + break; + case DiskCategory.HDDVDRW: + dskType = MediaType.HDDVDRW; + break; + case DiskCategory.Nintendo: + dskType = MediaType.GOD; + break; + case DiskCategory.UMD: + dskType = MediaType.UMD; + break; + } + + if(dskType == MediaType.DVDR && pfi.Value.PartVersion == 6) + dskType = MediaType.DVDRDL; + if(dskType == MediaType.DVDRW && pfi.Value.PartVersion == 3) + dskType = MediaType.DVDRWDL; + if(dskType == MediaType.GOD && pfi.Value.DiscSize == DVDSize.OneTwenty) + dskType = MediaType.WOD; + + sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); + if(dskType == MediaType.UMD) + sidecar.OpticalDisc[0].Dimensions.Diameter = 60; + else if(pfi.Value.DiscSize == DVDSize.Eighty) + sidecar.OpticalDisc[0].Dimensions.Diameter = 80; + else if(pfi.Value.DiscSize == DVDSize.OneTwenty) + sidecar.OpticalDisc[0].Dimensions.Diameter = 120; + } + + break; + case MediaTagType.CD_PMA: + sidecar.OpticalDisc[0].PMA = new DumpType(); + sidecar.OpticalDisc[0].PMA.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .CD_PMA)) + .ToArray(); + sidecar.OpticalDisc[0].PMA.Size = + imageFormat.ReadDiskTag(MediaTagType.CD_PMA).Length; + break; } -#if DEBUG - stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media tags", stopwatch.Elapsed.TotalSeconds); -#endif + } + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media tags", + stopwatch.Elapsed.TotalSeconds); + #endif + + try + { + List sessions = imageFormat.Sessions; + sidecar.OpticalDisc[0].Sessions = sessions?.Count ?? 1; + } + catch { sidecar.OpticalDisc[0].Sessions = 1; } + + List tracks = imageFormat.Tracks; + List trksLst = null; + if(tracks != null) + { + sidecar.OpticalDisc[0].Tracks = new int[1]; + sidecar.OpticalDisc[0].Tracks[0] = tracks.Count; + trksLst = new List(); + } + + foreach(Track trk in tracks) + { + currentProgress++; + + TrackType xmlTrk = new TrackType(); + switch(trk.TrackType) + { + case DiscImageChef.DiscImages.TrackType.Audio: + xmlTrk.TrackType1 = TrackTypeTrackType.audio; + break; + case DiscImageChef.DiscImages.TrackType.CdMode2Form2: + xmlTrk.TrackType1 = TrackTypeTrackType.m2f2; + break; + case DiscImageChef.DiscImages.TrackType.CdMode2Formless: + xmlTrk.TrackType1 = TrackTypeTrackType.mode2; + break; + case DiscImageChef.DiscImages.TrackType.CdMode2Form1: + xmlTrk.TrackType1 = TrackTypeTrackType.m2f1; + break; + case DiscImageChef.DiscImages.TrackType.CdMode1: + xmlTrk.TrackType1 = TrackTypeTrackType.mode1; + break; + case DiscImageChef.DiscImages.TrackType.Data: + switch(sidecar.OpticalDisc[0].DiscType) + { + case "BD": + xmlTrk.TrackType1 = TrackTypeTrackType.bluray; + break; + case "DDCD": + xmlTrk.TrackType1 = TrackTypeTrackType.ddcd; + break; + case "DVD": + xmlTrk.TrackType1 = TrackTypeTrackType.dvd; + break; + case "HD DVD": + xmlTrk.TrackType1 = TrackTypeTrackType.hddvd; + break; + default: + xmlTrk.TrackType1 = TrackTypeTrackType.mode1; + break; + } + + break; + } + + xmlTrk.Sequence = new TrackSequenceType + { + Session = trk.TrackSession, + TrackNumber = (int)trk.TrackSequence + }; + xmlTrk.StartSector = (long)trk.TrackStartSector; + xmlTrk.EndSector = (long)trk.TrackEndSector; + + if(trk.Indexes != null && trk.Indexes.ContainsKey(0)) + if(trk.Indexes.TryGetValue(0, out ulong idx0)) + xmlTrk.StartSector = (long)idx0; + + switch(sidecar.OpticalDisc[0].DiscType) + { + case "CD": + case "GD": + xmlTrk.StartMSF = LbaToMsf(xmlTrk.StartSector); + xmlTrk.EndMSF = LbaToMsf(xmlTrk.EndSector); + break; + case "DDCD": + xmlTrk.StartMSF = DdcdLbaToMsf(xmlTrk.StartSector); + xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector); + break; + } + + xmlTrk.Image = new ImageType {Value = Path.GetFileName(trk.TrackFile)}; + if(trk.TrackFileOffset > 0) + { + xmlTrk.Image.offset = (long)trk.TrackFileOffset; + xmlTrk.Image.offsetSpecified = true; + } + + xmlTrk.Image.format = trk.TrackFileType; + xmlTrk.Size = + (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector; + xmlTrk.BytesPerSector = trk.TrackBytesPerSector; + + const uint SECTORS_TO_READ = 512; + ulong sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1); + ulong doneSectors = 0; // If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum. - if(_imageFormat.Id == new System.Guid("12345678-AAAA-BBBB-CCCC-123456789000")) - { - sidecar.BlockMedia[0].ContentChecksums = sidecar.BlockMedia[0].Checksums; - } + if(imageFormat.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) + xmlTrk.Checksums = sidecar.OpticalDisc[0].Checksums; else { - Checksum contentChkWorker = new Checksum(); + UpdateProgress?.Invoke(null, $"Hashing track {trk.TrackSequence}", currentProgress, + maxProgress); - uint sectorsToRead = 512; - ulong sectors = _imageFormat.Info.Sectors; - ulong doneSectors = 0; + Checksum trkChkWorker = new Checksum(); - if(UpdateProgress != null) - UpdateProgress(null, "Hashing media contents", currentProgress, maxProgress); - - Checksum cntChkWorker = new Checksum(); - -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif while(doneSectors < sectors) { byte[] sector; - if((sectors - doneSectors) >= sectorsToRead) + if(sectors - doneSectors >= SECTORS_TO_READ) { - sector = _imageFormat.ReadSectors(doneSectors, sectorsToRead); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors); - doneSectors += sectorsToRead; + sector = imageFormat.ReadSectorsLong(doneSectors, SECTORS_TO_READ, + (uint)xmlTrk.Sequence.TrackNumber); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", + (long)doneSectors, (long)sectors); + doneSectors += SECTORS_TO_READ; } else { - sector = _imageFormat.ReadSectors(doneSectors, (uint)(sectors - doneSectors)); - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Sector {0} of {1}", doneSectors, sectors), (long)doneSectors, (long)sectors); - doneSectors += (sectors - doneSectors); + sector = imageFormat.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), + (uint)xmlTrk.Sequence.TrackNumber); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", + (long)doneSectors, (long)sectors); + doneSectors += sectors - doneSectors; } - cntChkWorker.Update(sector); + trkChkWorker.Update(sector); } - List cntChecksums = cntChkWorker.End(); -#if DEBUG + List trkChecksums = trkChkWorker.End(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media contents", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash track {1}", + stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); + #endif - sidecar.BlockMedia[0].ContentChecksums = cntChecksums.ToArray(); + xmlTrk.Checksums = trkChecksums.ToArray(); } - string dskType, dskSubType; - DiscImageChef.Metadata.MediaType.MediaTypeToString(_imageFormat.Info.MediaType, out dskType, out dskSubType); - sidecar.BlockMedia[0].DiskType = dskType; - sidecar.BlockMedia[0].DiskSubType = dskSubType; + UpdateProgress2?.Invoke(null, null, 0, 0); - sidecar.BlockMedia[0].Dimensions = DiscImageChef.Metadata.Dimensions.DimensionsFromMediaType(_imageFormat.Info.MediaType); + if(trk.TrackSubchannelType != TrackSubchannelType.None) + { + UpdateProgress?.Invoke(null, $"Hashing subchannel of track {trk.TrackSequence}", + currentProgress, maxProgress); - sidecar.BlockMedia[0].LogicalBlocks = (long)_imageFormat.Info.Sectors; - sidecar.BlockMedia[0].LogicalBlockSize = (int)_imageFormat.Info.SectorSize; - // TODO: Detect it - sidecar.BlockMedia[0].PhysicalBlockSize = (int)_imageFormat.Info.SectorSize; + xmlTrk.SubChannel = new SubChannelType {Image = new ImageType()}; + switch(trk.TrackSubchannelType) + { + case TrackSubchannelType.Packed: + case TrackSubchannelType.PackedInterleaved: + xmlTrk.SubChannel.Image.format = "rw"; + break; + case TrackSubchannelType.Raw: + case TrackSubchannelType.RawInterleaved: + xmlTrk.SubChannel.Image.format = "rw_raw"; + break; + case TrackSubchannelType.Q16: + case TrackSubchannelType.Q16Interleaved: + xmlTrk.SubChannel.Image.format = "q16"; + break; + } - if(UpdateProgress != null) - UpdateProgress(null, "Checking filesystems", maxProgress - 1, maxProgress); + if(trk.TrackFileOffset > 0) + { + xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset; + xmlTrk.SubChannel.Image.offsetSpecified = true; + } -#if DEBUG + xmlTrk.SubChannel.Image.Value = trk.TrackSubchannelFile; + + // TODO: Packed subchannel has different size? + xmlTrk.SubChannel.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96; + + Checksum subChkWorker = new Checksum(); + + sectors = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1); + doneSectors = 0; + + #if DEBUG + stopwatch.Restart(); + #endif + while(doneSectors < sectors) + { + byte[] sector; + + if(sectors - doneSectors >= SECTORS_TO_READ) + { + sector = imageFormat.ReadSectorsTag(doneSectors, SECTORS_TO_READ, + (uint)xmlTrk.Sequence.TrackNumber, + SectorTagType.CdSectorSubchannel); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", position, + fi.Length); + doneSectors += SECTORS_TO_READ; + } + else + { + sector = imageFormat.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), + (uint)xmlTrk.Sequence.TrackNumber, + SectorTagType.CdSectorSubchannel); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", position, + fi.Length); + doneSectors += sectors - doneSectors; + } + + subChkWorker.Update(sector); + } + + List subChecksums = subChkWorker.End(); + + xmlTrk.SubChannel.Checksums = subChecksums.ToArray(); + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash subchannel of track {1}", + stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); + #endif + + UpdateProgress2?.Invoke(null, null, 0, 0); + } + + UpdateProgress?.Invoke(null, "Checking filesystems", maxProgress - 1, maxProgress); + + #if DEBUG stopwatch.Restart(); -#endif + #endif List partitions = new List(); - foreach(IPartition _partplugin in plugins.PartPluginsList.Values) - { - List _partitions; + foreach(IPartition partplugin in plugins.PartPluginsList.Values) + if(partplugin.GetInformation(imageFormat, out List _partitions, 0) + ) // TODO: Subpartitions + partitions.AddRange(_partitions); - if(_partplugin.GetInformation(_imageFormat, out _partitions, 0)) - { - partitions = _partitions; - break; - } - } - - sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[1]; + xmlTrk.FileSystemInformation = new PartitionType[1]; if(partitions.Count > 0) { - sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count]; + xmlTrk.FileSystemInformation = new PartitionType[partitions.Count]; for(int i = 0; i < partitions.Count; i++) { - sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType(); - sidecar.BlockMedia[0].FileSystemInformation[i].Description = partitions[i].Description; - sidecar.BlockMedia[0].FileSystemInformation[i].EndSector = (int)(partitions[i].End); - sidecar.BlockMedia[0].FileSystemInformation[i].Name = partitions[i].Name; - sidecar.BlockMedia[0].FileSystemInformation[i].Sequence = (int)partitions[i].Sequence; - sidecar.BlockMedia[0].FileSystemInformation[i].StartSector = (int)partitions[i].Start; - sidecar.BlockMedia[0].FileSystemInformation[i].Type = partitions[i].Type; + xmlTrk.FileSystemInformation[i] = new PartitionType + { + Description = partitions[i].Description, + EndSector = (int)partitions[i].End, + Name = partitions[i].Name, + Sequence = (int)partitions[i].Sequence, + StartSector = (int)partitions[i].Start, + Type = partitions[i].Type + }; List lstFs = new List(); - foreach(IFilesystem _plugin in plugins.PluginsList.Values) - { + foreach(IFilesystem plugin in plugins.PluginsList.Values) try { - if(_plugin.Identify(_imageFormat, partitions[i])) + if(!plugin.Identify(imageFormat, partitions[i])) continue; + + plugin.GetInformation(imageFormat, partitions[i], out _, null); + lstFs.Add(plugin.XmlFsType); + + switch(plugin.XmlFsType.Type) { - string foo; - _plugin.GetInformation(_imageFormat, partitions[i], out foo, null); - lstFs.Add(_plugin.XmlFsType); + case "Opera": + dskType = MediaType.ThreeDO; + break; + case "PC Engine filesystem": + dskType = MediaType.SuperCDROM2; + break; + case "Nintendo Wii filesystem": + dskType = MediaType.WOD; + break; + case "Nintendo Gamecube filesystem": + dskType = MediaType.GOD; + break; } } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body { //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); } - } - if(lstFs.Count > 0) - sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray(); + if(lstFs.Count > 0) xmlTrk.FileSystemInformation[i].FileSystems = lstFs.ToArray(); } } else { - sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType(); - sidecar.BlockMedia[0].FileSystemInformation[0].StartSector = 0; - sidecar.BlockMedia[0].FileSystemInformation[0].EndSector = (int)(_imageFormat.Info.Sectors - 1); - - Partition wholePart = new Partition + xmlTrk.FileSystemInformation[0] = new PartitionType { - Start = 0, - Length = _imageFormat.Info.Sectors + EndSector = (int)xmlTrk.EndSector, + StartSector = (int)xmlTrk.StartSector + }; + + Partition xmlPart = new Partition + { + Start = (ulong)xmlTrk.StartSector, + Length = (ulong)(xmlTrk.EndSector - xmlTrk.StartSector + 1) }; List lstFs = new List(); foreach(IFilesystem _plugin in plugins.PluginsList.Values) - { try { - if(_plugin.Identify(_imageFormat, wholePart)) + if(!_plugin.Identify(imageFormat, xmlPart)) continue; + + _plugin.GetInformation(imageFormat, xmlPart, out _, null); + lstFs.Add(_plugin.XmlFsType); + + switch(_plugin.XmlFsType.Type) { - string foo; - _plugin.GetInformation(_imageFormat, wholePart, out foo, null); - lstFs.Add(_plugin.XmlFsType); + case "Opera": + dskType = MediaType.ThreeDO; + break; + case "PC Engine filesystem": + dskType = MediaType.SuperCDROM2; + break; + case "Nintendo Wii filesystem": + dskType = MediaType.WOD; + break; + case "Nintendo Gamecube filesystem": + dskType = MediaType.GOD; + break; } } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body { //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); } + + if(lstFs.Count > 0) xmlTrk.FileSystemInformation[0].FileSystems = lstFs.ToArray(); + } + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.AddMedia(): Took {0} seconds to check all filesystems on track {1}", + stopwatch.Elapsed.TotalSeconds, trk.TrackSequence); + #endif + + trksLst.Add(xmlTrk); + } + + UpdateProgress?.Invoke(null, "Finishing", maxProgress, maxProgress); + + if(trksLst != null) sidecar.OpticalDisc[0].Track = trksLst.ToArray(); + + DiscImageChef.Metadata.MediaType.MediaTypeToString(dskType, out string dscType, + out string dscSubType); + sidecar.OpticalDisc[0].DiscType = dscType; + sidecar.OpticalDisc[0].DiscSubType = dscSubType; + + if(!string.IsNullOrEmpty(imageFormat.Info.DriveManufacturer) || + !string.IsNullOrEmpty(imageFormat.Info.DriveModel) || + !string.IsNullOrEmpty(imageFormat.Info.DriveFirmwareRevision) || + !string.IsNullOrEmpty(imageFormat.Info.DriveSerialNumber)) + { + sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1]; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0]; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = imageFormat.Info.Sectors; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = + imageFormat.Info.DriveManufacturer; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = imageFormat.Info.DriveModel; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = + imageFormat.Info.DriveFirmwareRevision; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = imageFormat.Info.DriveSerialNumber; + sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType + { + Name = imageFormat.Info.Application, + Version = imageFormat.Info.ApplicationVersion + }; + } + + Context.WorkingDisc = sidecar.OpticalDisc[0]; + Finished?.Invoke(); + return; + } + case XmlMediaType.BlockMedia: + { + maxProgress = 3 + imageFormat.Info.ReadableMediaTags.Count; + UpdateProgress?.Invoke(null, "Hashing image file", 3, maxProgress); + + sidecar.BlockMedia = new BlockMediaType[1]; + sidecar.BlockMedia[0] = new BlockMediaType + { + Checksums = imgChecksums.ToArray(), + Image = new ImageType + { + format = imageFormat.Format, + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(selectedFile) + }, + Size = fi.Length, + Sequence = new SequenceType {MediaTitle = imageFormat.Info.MediaTitle} + }; + if(imageFormat.Info.MediaSequence != 0 && imageFormat.Info.LastMediaSequence != 0) + { + sidecar.BlockMedia[0].Sequence.MediaSequence = imageFormat.Info.MediaSequence; + sidecar.BlockMedia[0].Sequence.TotalMedia = imageFormat.Info.LastMediaSequence; + } + else + { + sidecar.BlockMedia[0].Sequence.MediaSequence = 1; + sidecar.BlockMedia[0].Sequence.TotalMedia = 1; + } + + currentProgress = 3; + + #if DEBUG + stopwatch.Restart(); + #endif + foreach(MediaTagType tagType in imageFormat.Info.ReadableMediaTags) + { + currentProgress++; + UpdateProgress?.Invoke(null, $"Hashing file containing {tagType}", currentProgress, + maxProgress); + + switch(tagType) + { + case MediaTagType.ATAPI_IDENTIFY: + sidecar.BlockMedia[0].ATA = new ATAType(); + sidecar.BlockMedia[0].ATA.Identify = new DumpType(); + sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .ATAPI_IDENTIFY)) + .ToArray(); + sidecar.BlockMedia[0].ATA.Identify.Size = + imageFormat.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length; + break; + case MediaTagType.ATA_IDENTIFY: + sidecar.BlockMedia[0].ATA = new ATAType(); + sidecar.BlockMedia[0].ATA.Identify = new DumpType(); + sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .ATA_IDENTIFY)) + .ToArray(); + sidecar.BlockMedia[0].ATA.Identify.Size = + imageFormat.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length; + break; + case MediaTagType.PCMCIA_CIS: + byte[] cis = + imageFormat.ReadDiskTag(MediaTagType.PCMCIA_CIS); + sidecar.BlockMedia[0].PCMCIA = new PCMCIAType(); + sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType(); + sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = Checksum.GetChecksums(cis).ToArray(); + sidecar.BlockMedia[0].PCMCIA.CIS.Size = cis.Length; + Tuple[] tuples = CIS.GetTuples(cis); + if(tuples != null) + foreach(Tuple tuple in tuples) + if(tuple.Code == TupleCodes.CISTPL_MANFID) + { + ManufacturerIdentificationTuple manfid = + CIS.DecodeManufacturerIdentificationTuple(tuple); + + if(manfid != null) + { + sidecar.BlockMedia[0].PCMCIA.ManufacturerCode = + manfid.ManufacturerID; + sidecar.BlockMedia[0].PCMCIA.CardCode = + manfid.CardID; + sidecar.BlockMedia[0].PCMCIA.ManufacturerCodeSpecified = true; + sidecar.BlockMedia[0].PCMCIA.CardCodeSpecified = true; + } + } + else if(tuple.Code == TupleCodes.CISTPL_VERS_1) + { + Level1VersionTuple vers = CIS.DecodeLevel1VersionTuple(tuple); + + if(vers != null) + { + sidecar.BlockMedia[0].PCMCIA.Manufacturer = vers.Manufacturer; + sidecar.BlockMedia[0].PCMCIA.ProductName = vers.Product; + sidecar.BlockMedia[0].PCMCIA.Compliance = + $"{vers.MajorVersion}.{vers.MinorVersion}"; + sidecar.BlockMedia[0].PCMCIA.AdditionalInformation = + vers.AdditionalInformation; + } + } + + break; + case MediaTagType.SCSI_INQUIRY: + sidecar.BlockMedia[0].SCSI = new SCSIType(); + sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType(); + sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .SCSI_INQUIRY)) + .ToArray(); + sidecar.BlockMedia[0].SCSI.Inquiry.Size = + imageFormat.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length; + break; + case MediaTagType.SD_CID: + if(sidecar.BlockMedia[0].SecureDigital == null) + sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); + sidecar.BlockMedia[0].SecureDigital.CID = new DumpType(); + sidecar.BlockMedia[0].SecureDigital.CID.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .SD_CID)) + .ToArray(); + sidecar.BlockMedia[0].SecureDigital.CID.Size = + imageFormat.ReadDiskTag(MediaTagType.SD_CID).Length; + break; + case MediaTagType.SD_CSD: + if(sidecar.BlockMedia[0].SecureDigital == null) + sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); + sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType(); + sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .SD_CSD)) + .ToArray(); + sidecar.BlockMedia[0].SecureDigital.CSD.Size = + imageFormat.ReadDiskTag(MediaTagType.SD_CSD).Length; + break; + case MediaTagType.MMC_ExtendedCSD: + if(sidecar.BlockMedia[0].SecureDigital == null) + sidecar.BlockMedia[0].SecureDigital = + new SecureDigitalType(); + sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType(); + sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD.Checksums = Checksum + .GetChecksums(imageFormat + .ReadDiskTag(MediaTagType + .MMC_ExtendedCSD)) + .ToArray(); + sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD.Size = + imageFormat.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length; + break; + } + } + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media tags", + stopwatch.Elapsed.TotalSeconds); + #endif + + // If there is only one track, and it's the same as the image file (e.g. ".iso" files), don't re-checksum. + if(imageFormat.Id == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) + sidecar.BlockMedia[0].ContentChecksums = sidecar.BlockMedia[0].Checksums; + else + { + const uint SECTORS_TO_READ = 512; + ulong sectors = imageFormat.Info.Sectors; + ulong doneSectors = 0; + + UpdateProgress?.Invoke(null, "Hashing media contents", currentProgress, maxProgress); + + Checksum cntChkWorker = new Checksum(); + + #if DEBUG + stopwatch.Restart(); + #endif + while(doneSectors < sectors) + { + byte[] sector; + + if(sectors - doneSectors >= SECTORS_TO_READ) + { + sector = imageFormat.ReadSectors(doneSectors, SECTORS_TO_READ); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", + (long)doneSectors, (long)sectors); + doneSectors += SECTORS_TO_READ; + } + else + { + sector = imageFormat.ReadSectors(doneSectors, (uint)(sectors - doneSectors)); + UpdateProgress2?.Invoke(null, $"Sector {doneSectors} of {sectors}", + (long)doneSectors, (long)sectors); + doneSectors += sectors - doneSectors; } - if(lstFs.Count > 0) - sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray(); + cntChkWorker.Update(sector); } -#if DEBUG + + List cntChecksums = cntChkWorker.End(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.AddMedia(): Took {0} seconds to check all filesystems", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.AddMedia(): Took {0} seconds to hash media contents", + stopwatch.Elapsed.TotalSeconds); + #endif - // TODO: Implement support for getting CHS - if(UpdateProgress != null) - UpdateProgress(null, "Finishing", maxProgress, maxProgress); - Context.workingDisk = sidecar.BlockMedia[0]; - if(Finished != null) - Finished(); - return; + sidecar.BlockMedia[0].ContentChecksums = cntChecksums.ToArray(); } + + DiscImageChef.Metadata.MediaType.MediaTypeToString(imageFormat.Info.MediaType, + out string dskType, out string dskSubType); + sidecar.BlockMedia[0].DiskType = dskType; + sidecar.BlockMedia[0].DiskSubType = dskSubType; + + sidecar.BlockMedia[0].Dimensions = + Dimensions.DimensionsFromMediaType(imageFormat.Info.MediaType); + + sidecar.BlockMedia[0].LogicalBlocks = (long)imageFormat.Info.Sectors; + sidecar.BlockMedia[0].LogicalBlockSize = (int)imageFormat.Info.SectorSize; + // TODO: Detect it + sidecar.BlockMedia[0].PhysicalBlockSize = (int)imageFormat.Info.SectorSize; + + UpdateProgress?.Invoke(null, "Checking filesystems", maxProgress - 1, maxProgress); + + #if DEBUG + stopwatch.Restart(); + #endif + List partitions = new List(); + + foreach(IPartition partplugin in plugins.PartPluginsList.Values) + { + if(!partplugin.GetInformation(imageFormat, out partitions, 0)) continue; + + break; + } + + sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[1]; + if(partitions.Count > 0) + { + sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count]; + for(int i = 0; i < partitions.Count; i++) + { + sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType + { + Description = partitions[i].Description, + EndSector = (int)partitions[i].End, + Name = partitions[i].Name, + Sequence = (int)partitions[i].Sequence, + StartSector = (int)partitions[i].Start, + Type = partitions[i].Type + }; + + List lstFs = new List(); + + foreach(IFilesystem plugin in plugins.PluginsList.Values) + try + { + if(!plugin.Identify(imageFormat, partitions[i])) continue; + + plugin.GetInformation(imageFormat, partitions[i], out _, null); + lstFs.Add(plugin.XmlFsType); + } + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + catch + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + { + //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); + } + + if(lstFs.Count > 0) + sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray(); + } + } + else + { + sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType + { + StartSector = 0, + EndSector = (int)(imageFormat.Info.Sectors - 1) + }; + + Partition wholePart = new Partition {Start = 0, Length = imageFormat.Info.Sectors}; + + List lstFs = new List(); + + foreach(IFilesystem _plugin in plugins.PluginsList.Values) + try + { + if(!_plugin.Identify(imageFormat, wholePart)) continue; + + _plugin.GetInformation(imageFormat, wholePart, out _, null); + lstFs.Add(_plugin.XmlFsType); + } + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + catch + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + { + //DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name); + } + + if(lstFs.Count > 0) + sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray(); + } + #if DEBUG + stopwatch.Stop(); + Console.WriteLine("Core.AddMedia(): Took {0} seconds to check all filesystems", + stopwatch.Elapsed.TotalSeconds); + #endif + + // TODO: Implement support for getting CHS + UpdateProgress?.Invoke(null, "Finishing", maxProgress, maxProgress); + Context.WorkingDisk = sidecar.BlockMedia[0]; + Finished?.Invoke(); + return; + } case XmlMediaType.LinearMedia: - { - if(Failed != null) - Failed("Linear media not yet supported."); - return; - } + { + Failed?.Invoke("Linear media not yet supported."); + return; + } case XmlMediaType.AudioMedia: - { - if(Failed != null) - Failed("Audio media not yet supported."); - return; - } - + { + Failed?.Invoke("Audio media not yet supported."); + return; + } } - if(Failed != null) - Failed("Should've not arrived here."); - return; + Failed?.Invoke("Should've not arrived here."); } catch(Exception ex) { - if(Failed != null) - Failed(string.Format("Error reading file: {0}\n{1}", ex.Message, ex.StackTrace)); -#if DEBUG + Failed?.Invoke($"Error reading file: {ex.Message}\n{ex.StackTrace}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -1074,22 +1124,22 @@ namespace osrepodbmgr.Core long m, s, f; if(lba >= -150) { - m = (lba + 150) / (75 * 60); - lba -= m * (75 * 60); - s = (lba + 150) / 75; - lba -= s * 75; - f = lba + 150; + m = (lba + 150) / (75 * 60); + lba -= m * (75 * 60); + s = (lba + 150) / 75; + lba -= s * 75; + f = lba + 150; } else { - m = (lba + 450150) / (75 * 60); - lba -= m * (75 * 60); - s = (lba + 450150) / 75; - lba -= s * 75; - f = lba + 450150; + m = (lba + 450150) / (75 * 60); + lba -= m * (75 * 60); + s = (lba + 450150) / 75; + lba -= s * 75; + f = lba + 450150; } - return string.Format("{0}:{1:D2}:{2:D2}", m, s, f); + return $"{m}:{s:D2}:{f:D2}"; } static string DdcdLbaToMsf(long lba) @@ -1097,26 +1147,26 @@ namespace osrepodbmgr.Core long h, m, s, f; if(lba >= -150) { - h = (lba + 150) / (75 * 60 * 60); - lba -= h * (75 * 60 * 60); - m = (lba + 150) / (75 * 60); - lba -= m * (75 * 60); - s = (lba + 150) / 75; - lba -= s * 75; - f = lba + 150; + h = (lba + 150) / (75 * 60 * 60); + lba -= h * (75 * 60 * 60); + m = (lba + 150) / (75 * 60); + lba -= m * (75 * 60); + s = (lba + 150) / 75; + lba -= s * 75; + f = lba + 150; } else { - h = (lba + 450150 * 2) / (75 * 60 * 60); - lba -= h * (75 * 60 * 60); - m = (lba + 450150 * 2) / (75 * 60); - lba -= m * (75 * 60); - s = (lba + 450150 * 2) / 75; - lba -= s * 75; - f = lba + 450150 * 2; + h = (lba + 450150 * 2) / (75 * 60 * 60); + lba -= h * (75 * 60 * 60); + m = (lba + 450150 * 2) / (75 * 60); + lba -= m * (75 * 60); + s = (lba + 450150 * 2) / 75; + lba -= s * 75; + f = lba + 450150 * 2; } return string.Format("{3}:{0:D2}:{1:D2}:{2:D2}", m, s, f, h); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Files.cs b/osrepodbmgr.Core/Workers/Files.cs index 0955707..6eb8d80 100644 --- a/osrepodbmgr.Core/Workers/Files.cs +++ b/osrepodbmgr.Core/Workers/Files.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Diagnostics; @@ -34,12 +35,14 @@ using System.Threading; using System.Xml; using System.Xml.Serialization; using DiscImageChef.Checksums; +using DiscImageChef.Interop; using Newtonsoft.Json; using Schemas; +using SharpCompress.Compressors; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.LZMA; -using DiscImageChef.Interop; +using PlatformID = DiscImageChef.Interop.PlatformID; namespace osrepodbmgr.Core { @@ -49,62 +52,53 @@ namespace osrepodbmgr.Core { string filesPath; - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; - if(string.IsNullOrEmpty(filesPath)) - { - if(Failed != null) - Failed("Path is null or empty"); - } + if(string.IsNullOrEmpty(filesPath)) Failed?.Invoke("Path is null or empty"); - if(!Directory.Exists(filesPath)) - { - if(Failed != null) - Failed("Directory not found"); - } + if(!Directory.Exists(filesPath)) Failed?.Invoke("Directory not found"); try { -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Context.files = IO.EnumerateFiles(filesPath, "*", SearchOption.AllDirectories, false, false); - Context.files.Sort(); -#if DEBUG + #endif + Context.Files = IO.EnumerateFiles(filesPath, "*", SearchOption.AllDirectories, false, false); + Context.Files.Sort(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all files", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all files", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif - Context.folders = IO.EnumerateDirectories(filesPath, "*", SearchOption.AllDirectories, false, false); - Context.folders.Sort(); -#if DEBUG + #endif + Context.Folders = IO.EnumerateDirectories(filesPath, "*", SearchOption.AllDirectories, false, false); + Context.Folders.Sort(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all folders", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all folders", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif - Context.symlinks = IO.EnumerateSymlinks(filesPath, "*", SearchOption.AllDirectories); - Context.symlinks.Sort(); -#if DEBUG + #endif + Context.Symlinks = IO.EnumerateSymlinks(filesPath, "*", SearchOption.AllDirectories); + Context.Symlinks.Sort(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all symbolic links", stopwatch.Elapsed.TotalSeconds); -#endif - if(Finished != null) - Finished(); + Console.WriteLine("Core.FindFiles(): Took {0} seconds to find all symbolic links", + stopwatch.Elapsed.TotalSeconds); + #endif + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -112,62 +106,60 @@ namespace osrepodbmgr.Core { try { - Context.hashes = new Dictionary(); - Context.foldersDict = new Dictionary(); - Context.symlinksDict = new Dictionary(); + Context.Hashes = new Dictionary(); + Context.FoldersDict = new Dictionary(); + Context.SymlinksDict = new Dictionary(); List alreadyMetadata = new List(); - bool foundMetadata = false; + bool foundMetadata = false; // For metadata - List architectures = new List(); - List barcodes = new List(); - List disks = new List(); - List categories = new List(); - List keywords = new List(); - List languages = new List(); - List discs = new List(); - List subcategories = new List(); - List systems = new List(); - bool releaseDateSpecified = false; - DateTime releaseDate = DateTime.MinValue; - CICMMetadataTypeReleaseType releaseType = CICMMetadataTypeReleaseType.Retail; - bool releaseTypeSpecified = false; - List authors = new List(); - List developers = new List(); - List performers = new List(); - List publishers = new List(); - string metadataName = null; - string metadataPartNo = null; - string metadataSerial = null; - string metadataVersion = null; - List magazines = new List(); - List books = new List(); - List requiredOses = new List(); - List usermanuals = new List(); - List adverts = new List(); - List linearmedias = new List(); - List pcis = new List(); - List audiomedias = new List(); + List architectures = new List(); + List barcodes = new List(); + List disks = new List(); + List categories = new List(); + List keywords = new List(); + List languages = new List(); + List discs = new List(); + List subcategories = new List(); + List systems = new List(); + bool releaseDateSpecified = false; + DateTime releaseDate = DateTime.MinValue; + CICMMetadataTypeReleaseType releaseType = CICMMetadataTypeReleaseType.Retail; + bool releaseTypeSpecified = false; + List authors = new List(); + List developers = new List(); + List performers = new List(); + List publishers = new List(); + string metadataName = null; + string metadataPartNo = null; + string metadataSerial = null; + string metadataVersion = null; + List magazines = new List(); + List books = new List(); + List requiredOses = new List(); + List usermanuals = new List(); + List adverts = new List(); + List linearmedias = new List(); + List pcis = new List(); + List audiomedias = new List(); // End for metadata - if ((DetectOS.GetRealPlatformID() == DiscImageChef.Interop.PlatformID.WinCE || - DetectOS.GetRealPlatformID() == DiscImageChef.Interop.PlatformID.Win32S || - DetectOS.GetRealPlatformID() == DiscImageChef.Interop.PlatformID.Win32NT || - DetectOS.GetRealPlatformID() == DiscImageChef.Interop.PlatformID.Win32Windows || - DetectOS.GetRealPlatformID() == DiscImageChef.Interop.PlatformID.WindowsPhone) && - Context.symlinks.Count > 0) + if((DetectOS.GetRealPlatformID() == PlatformID.WinCE || + DetectOS.GetRealPlatformID() == PlatformID.Win32S || + DetectOS.GetRealPlatformID() == PlatformID.Win32NT || + DetectOS.GetRealPlatformID() == PlatformID.Win32Windows || + DetectOS.GetRealPlatformID() == PlatformID.WindowsPhone) && Context.Symlinks.Count > 0) { - if (Failed != null) - Failed("Source contain unsupported symbolic links, not continuing."); + Failed?.Invoke("Source contain unsupported symbolic links, not continuing."); return; } -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif long counter = 1; - foreach(string file in Context.files) + foreach(string file in Context.Files) { // An already known metadata file, skip it if(alreadyMetadata.Contains(file)) @@ -176,88 +168,176 @@ namespace osrepodbmgr.Core continue; } - if(Path.GetExtension(file).ToLowerInvariant() == ".xml") + switch(Path.GetExtension(file).ToLowerInvariant()) { - FileStream xrs = new FileStream(file, FileMode.Open, FileAccess.Read); - XmlReaderSettings xrt = new XmlReaderSettings - { - DtdProcessing = DtdProcessing.Ignore - }; + case ".xml": + FileStream xrs = new FileStream(file, FileMode.Open, FileAccess.Read); + XmlReaderSettings xrt = new XmlReaderSettings {DtdProcessing = DtdProcessing.Ignore}; - XmlReader xr = XmlReader.Create(xrs, xrt); - XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); - try - { - if(xs.CanDeserialize(xr)) + XmlReader xr = XmlReader.Create(xrs, xrt); + XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); + try { - CICMMetadataType thisMetadata = (CICMMetadataType)xs.Deserialize(xr); + if(xs.CanDeserialize(xr)) + { + CICMMetadataType thisMetadata = (CICMMetadataType)xs.Deserialize(xr); + if(thisMetadata.Architectures != null) + architectures.AddRange(thisMetadata.Architectures); + if(thisMetadata.Barcodes != null) barcodes.AddRange(thisMetadata.Barcodes); + if(thisMetadata.BlockMedia != null) disks.AddRange(thisMetadata.BlockMedia); + if(thisMetadata.Categories != null) categories.AddRange(thisMetadata.Categories); + if(thisMetadata.Keywords != null) keywords.AddRange(thisMetadata.Keywords); + if(thisMetadata.Languages != null) languages.AddRange(thisMetadata.Languages); + if(thisMetadata.OpticalDisc != null) discs.AddRange(thisMetadata.OpticalDisc); + if(thisMetadata.Subcategories != null) + subcategories.AddRange(thisMetadata.Subcategories); + if(thisMetadata.Systems != null) systems.AddRange(thisMetadata.Systems); + if(thisMetadata.Author != null) authors.AddRange(thisMetadata.Author); + if(thisMetadata.Developer != null) developers.AddRange(thisMetadata.Developer); + if(thisMetadata.Performer != null) performers.AddRange(thisMetadata.Performer); + if(thisMetadata.Publisher != null) publishers.AddRange(thisMetadata.Publisher); + if(string.IsNullOrWhiteSpace(metadataName) && + !string.IsNullOrWhiteSpace(thisMetadata.Name)) metadataName = thisMetadata.Name; + if(string.IsNullOrWhiteSpace(metadataPartNo) && + !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) + metadataPartNo = thisMetadata.PartNumber; + if(string.IsNullOrWhiteSpace(metadataSerial) && + !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) + metadataSerial = thisMetadata.SerialNumber; + if(string.IsNullOrWhiteSpace(metadataVersion) && + !string.IsNullOrWhiteSpace(thisMetadata.Version)) + metadataVersion = thisMetadata.Version; + if(thisMetadata.ReleaseDateSpecified) + if(thisMetadata.ReleaseDate > releaseDate) + { + releaseDateSpecified = true; + releaseDate = thisMetadata.ReleaseDate; + } + + if(thisMetadata.ReleaseTypeSpecified) + { + releaseTypeSpecified = true; + releaseType = thisMetadata.ReleaseType; + } + + if(thisMetadata.Magazine != null) + magazines.AddRange(thisMetadata.Magazine); + if(thisMetadata.Book != null) books.AddRange(thisMetadata.Book); + if(thisMetadata.RequiredOperatingSystems != null) + requiredOses.AddRange(thisMetadata.RequiredOperatingSystems); + if(thisMetadata.UserManual != null) + usermanuals.AddRange(thisMetadata.UserManual); + if(thisMetadata.Advertisement != null) adverts.AddRange(thisMetadata.Advertisement); + if(thisMetadata.LinearMedia != null) + linearmedias.AddRange(thisMetadata.LinearMedia); + if(thisMetadata.PCICard != null) pcis.AddRange(thisMetadata.PCICard); + if(thisMetadata.AudioMedia != null) audiomedias.AddRange(thisMetadata.AudioMedia); + + foundMetadata = true; + + string metadataFileWithoutExtension = + Path.Combine(Path.GetDirectoryName(file), + Path.GetFileNameWithoutExtension(file)); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".xML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Xml"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XmL"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XMl"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".XML"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".jSON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".Json"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JsON"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSon"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSoN"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSOn"); + alreadyMetadata.Add(metadataFileWithoutExtension + ".JSON"); + + xr.Close(); + xrs.Close(); + continue; + } + } + catch(XmlException) + { + xr.Close(); + xrs.Close(); + } + + break; + case ".json": + FileStream jrs = new FileStream(file, FileMode.Open, FileAccess.Read); + TextReader jr = new StreamReader(jrs); + JsonSerializer js = new JsonSerializer(); + + try + { + CICMMetadataType thisMetadata = + (CICMMetadataType)js.Deserialize(jr, typeof(CICMMetadataType)); if(thisMetadata.Architectures != null) architectures.AddRange(thisMetadata.Architectures); - if(thisMetadata.Barcodes != null) - barcodes.AddRange(thisMetadata.Barcodes); - if(thisMetadata.BlockMedia != null) - disks.AddRange(thisMetadata.BlockMedia); - if(thisMetadata.Categories != null) - categories.AddRange(thisMetadata.Categories); - if(thisMetadata.Keywords != null) - keywords.AddRange(thisMetadata.Keywords); - if(thisMetadata.Languages != null) - languages.AddRange(thisMetadata.Languages); - if(thisMetadata.OpticalDisc != null) - discs.AddRange(thisMetadata.OpticalDisc); + if(thisMetadata.Barcodes != null) barcodes.AddRange(thisMetadata.Barcodes); + if(thisMetadata.BlockMedia != null) disks.AddRange(thisMetadata.BlockMedia); + if(thisMetadata.Categories != null) categories.AddRange(thisMetadata.Categories); + if(thisMetadata.Keywords != null) keywords.AddRange(thisMetadata.Keywords); + if(thisMetadata.Languages != null) languages.AddRange(thisMetadata.Languages); + if(thisMetadata.OpticalDisc != null) discs.AddRange(thisMetadata.OpticalDisc); if(thisMetadata.Subcategories != null) subcategories.AddRange(thisMetadata.Subcategories); - if(thisMetadata.Systems != null) - systems.AddRange(thisMetadata.Systems); - if(thisMetadata.Author != null) - authors.AddRange(thisMetadata.Author); - if(thisMetadata.Developer != null) - developers.AddRange(thisMetadata.Developer); - if(thisMetadata.Performer != null) - performers.AddRange(thisMetadata.Performer); - if(thisMetadata.Publisher != null) - publishers.AddRange(thisMetadata.Publisher); - if(string.IsNullOrWhiteSpace(metadataName) && !string.IsNullOrWhiteSpace(thisMetadata.Name)) - metadataName = thisMetadata.Name; - if(string.IsNullOrWhiteSpace(metadataPartNo) && !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) + if(thisMetadata.Systems != null) systems.AddRange(thisMetadata.Systems); + if(thisMetadata.Author != null) authors.AddRange(thisMetadata.Author); + if(thisMetadata.Developer != null) developers.AddRange(thisMetadata.Developer); + if(thisMetadata.Performer != null) performers.AddRange(thisMetadata.Performer); + if(thisMetadata.Publisher != null) publishers.AddRange(thisMetadata.Publisher); + if(string.IsNullOrWhiteSpace(metadataName) && + !string.IsNullOrWhiteSpace(thisMetadata.Name)) metadataName = thisMetadata.Name; + if(string.IsNullOrWhiteSpace(metadataPartNo) && + !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) metadataPartNo = thisMetadata.PartNumber; - if(string.IsNullOrWhiteSpace(metadataSerial) && !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) + if(string.IsNullOrWhiteSpace(metadataSerial) && + !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) metadataSerial = thisMetadata.SerialNumber; - if(string.IsNullOrWhiteSpace(metadataVersion) && !string.IsNullOrWhiteSpace(thisMetadata.Version)) + if(string.IsNullOrWhiteSpace(metadataVersion) && + !string.IsNullOrWhiteSpace(thisMetadata.Version)) metadataVersion = thisMetadata.Version; if(thisMetadata.ReleaseDateSpecified) - { if(thisMetadata.ReleaseDate > releaseDate) { releaseDateSpecified = true; - releaseDate = thisMetadata.ReleaseDate; + releaseDate = thisMetadata.ReleaseDate; } - } + if(thisMetadata.ReleaseTypeSpecified) { releaseTypeSpecified = true; - releaseType = thisMetadata.ReleaseType; + releaseType = thisMetadata.ReleaseType; } + if(thisMetadata.Magazine != null) magazines.AddRange(thisMetadata.Magazine); - if(thisMetadata.Book != null) - books.AddRange(thisMetadata.Book); + if(thisMetadata.Book != null) books.AddRange(thisMetadata.Book); if(thisMetadata.RequiredOperatingSystems != null) requiredOses.AddRange(thisMetadata.RequiredOperatingSystems); - if(thisMetadata.UserManual != null) - usermanuals.AddRange(thisMetadata.UserManual); - if(thisMetadata.Advertisement != null) - adverts.AddRange(thisMetadata.Advertisement); - if(thisMetadata.LinearMedia != null) - linearmedias.AddRange(thisMetadata.LinearMedia); - if(thisMetadata.PCICard != null) - pcis.AddRange(thisMetadata.PCICard); - if(thisMetadata.AudioMedia != null) - audiomedias.AddRange(thisMetadata.AudioMedia); + if(thisMetadata.UserManual != null) usermanuals.AddRange(thisMetadata.UserManual); + if(thisMetadata.Advertisement != null) adverts.AddRange(thisMetadata.Advertisement); + if(thisMetadata.LinearMedia != null) linearmedias.AddRange(thisMetadata.LinearMedia); + if(thisMetadata.PCICard != null) pcis.AddRange(thisMetadata.PCICard); + if(thisMetadata.AudioMedia != null) audiomedias.AddRange(thisMetadata.AudioMedia); foundMetadata = true; - string metadataFileWithoutExtension = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)); + string metadataFileWithoutExtension = + Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)); alreadyMetadata.Add(metadataFileWithoutExtension + ".xml"); alreadyMetadata.Add(metadataFileWithoutExtension + ".xmL"); alreadyMetadata.Add(metadataFileWithoutExtension + ".xMl"); @@ -283,333 +363,210 @@ namespace osrepodbmgr.Core alreadyMetadata.Add(metadataFileWithoutExtension + ".JSOn"); alreadyMetadata.Add(metadataFileWithoutExtension + ".JSON"); - xr.Close(); - xrs.Close(); + jr.Close(); + jrs.Close(); continue; } - } - catch(XmlException) - { - xr.Close(); - xrs.Close(); - } - } - else if(Path.GetExtension(file).ToLowerInvariant() == ".json") - { - FileStream jrs = new FileStream(file, FileMode.Open, FileAccess.Read); - TextReader jr = new StreamReader(jrs); - JsonSerializer js = new JsonSerializer(); - - try - { - CICMMetadataType thisMetadata = (CICMMetadataType)js.Deserialize(jr, typeof(CICMMetadataType)); - if(thisMetadata.Architectures != null) - architectures.AddRange(thisMetadata.Architectures); - if(thisMetadata.Barcodes != null) - barcodes.AddRange(thisMetadata.Barcodes); - if(thisMetadata.BlockMedia != null) - disks.AddRange(thisMetadata.BlockMedia); - if(thisMetadata.Categories != null) - categories.AddRange(thisMetadata.Categories); - if(thisMetadata.Keywords != null) - keywords.AddRange(thisMetadata.Keywords); - if(thisMetadata.Languages != null) - languages.AddRange(thisMetadata.Languages); - if(thisMetadata.OpticalDisc != null) - discs.AddRange(thisMetadata.OpticalDisc); - if(thisMetadata.Subcategories != null) - subcategories.AddRange(thisMetadata.Subcategories); - if(thisMetadata.Systems != null) - systems.AddRange(thisMetadata.Systems); - if(thisMetadata.Author != null) - authors.AddRange(thisMetadata.Author); - if(thisMetadata.Developer != null) - developers.AddRange(thisMetadata.Developer); - if(thisMetadata.Performer != null) - performers.AddRange(thisMetadata.Performer); - if(thisMetadata.Publisher != null) - publishers.AddRange(thisMetadata.Publisher); - if(string.IsNullOrWhiteSpace(metadataName) && !string.IsNullOrWhiteSpace(thisMetadata.Name)) - metadataName = thisMetadata.Name; - if(string.IsNullOrWhiteSpace(metadataPartNo) && !string.IsNullOrWhiteSpace(thisMetadata.PartNumber)) - metadataPartNo = thisMetadata.PartNumber; - if(string.IsNullOrWhiteSpace(metadataSerial) && !string.IsNullOrWhiteSpace(thisMetadata.SerialNumber)) - metadataSerial = thisMetadata.SerialNumber; - if(string.IsNullOrWhiteSpace(metadataVersion) && !string.IsNullOrWhiteSpace(thisMetadata.Version)) - metadataVersion = thisMetadata.Version; - if(thisMetadata.ReleaseDateSpecified) + catch(JsonException) { - if(thisMetadata.ReleaseDate > releaseDate) - { - releaseDateSpecified = true; - releaseDate = thisMetadata.ReleaseDate; - } + jr.Close(); + jrs.Close(); } - if(thisMetadata.ReleaseTypeSpecified) - { - releaseTypeSpecified = true; - releaseType = thisMetadata.ReleaseType; - } - if(thisMetadata.Magazine != null) - magazines.AddRange(thisMetadata.Magazine); - if(thisMetadata.Book != null) - books.AddRange(thisMetadata.Book); - if(thisMetadata.RequiredOperatingSystems != null) - requiredOses.AddRange(thisMetadata.RequiredOperatingSystems); - if(thisMetadata.UserManual != null) - usermanuals.AddRange(thisMetadata.UserManual); - if(thisMetadata.Advertisement != null) - adverts.AddRange(thisMetadata.Advertisement); - if(thisMetadata.LinearMedia != null) - linearmedias.AddRange(thisMetadata.LinearMedia); - if(thisMetadata.PCICard != null) - pcis.AddRange(thisMetadata.PCICard); - if(thisMetadata.AudioMedia != null) - audiomedias.AddRange(thisMetadata.AudioMedia); - foundMetadata = true; - - string metadataFileWithoutExtension = Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file)); - alreadyMetadata.Add(metadataFileWithoutExtension + ".xml"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".xmL"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".xMl"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".xML"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".Xml"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".XmL"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".XMl"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".XML"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".json"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jsoN"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jsOn"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jsON"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jSon"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jSoN"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jSOn"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".jSON"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".Json"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JsoN"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JsOn"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JsON"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JSon"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JSoN"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JSOn"); - alreadyMetadata.Add(metadataFileWithoutExtension + ".JSON"); - - jr.Close(); - jrs.Close(); - continue; - } - catch(JsonException) - { - jr.Close(); - jrs.Close(); - } + break; } - string filesPath; + string filesPath; FileInfo fi = new FileInfo(file); - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; string relpath = file.Substring(filesPath.Length + 1); - if(UpdateProgress != null) - UpdateProgress(string.Format("Hashing file {0} of {1}", counter, Context.files.Count), null, counter, Context.files.Count); + UpdateProgress?.Invoke($"Hashing file {counter} of {Context.Files.Count}", null, counter, + Context.Files.Count); FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read); - byte[] dataBuffer = new byte[bufferSize]; + byte[] dataBuffer; Sha256Context sha256Context = new Sha256Context(); sha256Context.Init(); - if(fileStream.Length > bufferSize) + if(fileStream.Length > BUFFER_SIZE) { long offset; - long remainder = fileStream.Length % bufferSize; - for(offset = 0; offset < (fileStream.Length - remainder); offset += (int)bufferSize) + long remainder = fileStream.Length % BUFFER_SIZE; + for(offset = 0; offset < fileStream.Length - remainder; offset += (int)BUFFER_SIZE) { - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", offset / (double)fileStream.Length), relpath, offset, fileStream.Length); - dataBuffer = new byte[bufferSize]; - fileStream.Read(dataBuffer, 0, (int)bufferSize); + UpdateProgress2?.Invoke($"{offset / (double)fileStream.Length:P}", relpath, offset, + fileStream.Length); + dataBuffer = new byte[BUFFER_SIZE]; + fileStream.Read(dataBuffer, 0, (int)BUFFER_SIZE); sha256Context.Update(dataBuffer); } - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", offset / (double)fileStream.Length), relpath, offset, fileStream.Length); + + UpdateProgress2?.Invoke($"{offset / (double)fileStream.Length:P}", relpath, offset, + fileStream.Length); dataBuffer = new byte[remainder]; fileStream.Read(dataBuffer, 0, (int)remainder); sha256Context.Update(dataBuffer); } else { - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", 0 / (double)fileStream.Length), relpath, 0, fileStream.Length); + UpdateProgress2?.Invoke($"{0 / (double)fileStream.Length:P}", relpath, 0, fileStream.Length); dataBuffer = new byte[fileStream.Length]; fileStream.Read(dataBuffer, 0, (int)fileStream.Length); sha256Context.Update(dataBuffer); } fileStream.Close(); - string hash = stringify(sha256Context.Final()); + string hash = Stringify(sha256Context.Final()); - DBOSFile dbFile = new DBOSFile(); - dbFile.Attributes = fi.Attributes; - dbFile.CreationTimeUtc = fi.CreationTimeUtc; - dbFile.LastAccessTimeUtc = fi.LastAccessTimeUtc; - dbFile.LastWriteTimeUtc = fi.LastWriteTimeUtc; - dbFile.Length = fi.Length; - dbFile.Path = relpath; - dbFile.Sha256 = hash; + DbOsFile dbFile = new DbOsFile + { + Attributes = fi.Attributes, + CreationTimeUtc = fi.CreationTimeUtc, + LastAccessTimeUtc = fi.LastAccessTimeUtc, + LastWriteTimeUtc = fi.LastWriteTimeUtc, + Length = fi.Length, + Path = relpath, + Sha256 = hash + }; // TODO: Add common cracker group names? - dbFile.Crack |= (relpath.ToLowerInvariant().Contains("crack") || // Typical crack - relpath.ToLowerInvariant().Contains("crack") || // Typical keygen - relpath.ToLowerInvariant().Contains("[k]")); + dbFile.Crack |= relpath.ToLowerInvariant().Contains("crack") || // Typical crack + relpath.ToLowerInvariant().Contains("crack") || // Typical keygen + relpath.ToLowerInvariant().Contains("[k]"); - Context.hashes.Add(relpath, dbFile); + Context.Hashes.Add(relpath, dbFile); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.HashFiles(): Took {0} seconds to hash all files", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.HashFiles(): Took {0} seconds to hash all files", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif counter = 1; - foreach(string folder in Context.folders) + foreach(string folder in Context.Folders) { - string filesPath; + string filesPath; DirectoryInfo di = new DirectoryInfo(folder); - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; string relpath = folder.Substring(filesPath.Length + 1); - if(UpdateProgress != null) - UpdateProgress(string.Format("Checking folder {0} of {1}", counter, Context.folders.Count), null, counter, Context.folders.Count); + UpdateProgress?.Invoke($"Checking folder {counter} of {Context.Folders.Count}", null, counter, + Context.Folders.Count); - DBFolder dbFolder = new DBFolder(); - dbFolder.Attributes = di.Attributes; - dbFolder.CreationTimeUtc = di.CreationTimeUtc; - dbFolder.LastAccessTimeUtc = di.LastAccessTimeUtc; - dbFolder.LastWriteTimeUtc = di.LastWriteTimeUtc; - dbFolder.Path = relpath; + DbFolder dbFolder = new DbFolder + { + Attributes = di.Attributes, + CreationTimeUtc = di.CreationTimeUtc, + LastAccessTimeUtc = di.LastAccessTimeUtc, + LastWriteTimeUtc = di.LastWriteTimeUtc, + Path = relpath + }; - Context.foldersDict.Add(relpath, dbFolder); + Context.FoldersDict.Add(relpath, dbFolder); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.HashFiles(): Took {0} seconds to iterate all folders", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.HashFiles(): Took {0} seconds to iterate all folders", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif counter = 2; - foreach (string symlink in Context.symlinks) + foreach(string symlink in Context.Symlinks) { string filesPath; - if (!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; string relpath = symlink.Substring(filesPath.Length + 1); - if (UpdateProgress != null) - UpdateProgress(string.Format("Resolving symlink {0} of {1}", counter, Context.symlinks.Count), null, counter, Context.symlinks.Count); + UpdateProgress?.Invoke($"Resolving symlink {counter} of {Context.Symlinks.Count}", null, counter, + Context.Symlinks.Count); string target = Symlinks.ReadLink(symlink); - if (target == null) + if(target == null) { - if (Failed != null) - Failed(string.Format("Could not resolve symbolic link at {0}, not continuing.", relpath)); + Failed?.Invoke($"Could not resolve symbolic link at {relpath}, not continuing."); return; } - Context.symlinksDict.Add(relpath, target); + Context.SymlinksDict.Add(relpath, target); counter++; - continue; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.HashFiles(): Took {0} seconds to resolve all symbolic links", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.HashFiles(): Took {0} seconds to resolve all symbolic links", + stopwatch.Elapsed.TotalSeconds); + #endif if(foundMetadata) { - Context.metadata = new CICMMetadataType(); - if(architectures.Count > 0) - Context.metadata.Architectures = architectures.Distinct().ToArray(); - if(authors.Count > 0) - Context.metadata.Author = authors.Distinct().ToArray(); + Context.Metadata = new CICMMetadataType(); + if(architectures.Count > 0) Context.Metadata.Architectures = architectures.Distinct().ToArray(); + if(authors.Count > 0) Context.Metadata.Author = authors.Distinct().ToArray(); // TODO: Check for uniqueness - if(barcodes.Count > 0) - Context.metadata.Barcodes = barcodes.ToArray(); - if(disks.Count > 0) - Context.metadata.BlockMedia = disks.ToArray(); - if(categories.Count > 0) - Context.metadata.Categories = categories.Distinct().ToArray(); - if(developers.Count > 0) - Context.metadata.Developer = developers.Distinct().ToArray(); - if(keywords.Count > 0) - Context.metadata.Keywords = keywords.Distinct().ToArray(); - if(languages.Count > 0) - Context.metadata.Languages = languages.Distinct().ToArray(); - Context.metadata.Name = metadataName; - if(discs.Count > 0) - Context.metadata.OpticalDisc = discs.ToArray(); - Context.metadata.PartNumber = metadataPartNo; - if(performers.Count > 0) - Context.metadata.Performer = performers.Distinct().ToArray(); - if(publishers.Count > 0) - Context.metadata.Publisher = publishers.Distinct().ToArray(); + if(barcodes.Count > 0) Context.Metadata.Barcodes = barcodes.ToArray(); + if(disks.Count > 0) Context.Metadata.BlockMedia = disks.ToArray(); + if(categories.Count > 0) Context.Metadata.Categories = categories.Distinct().ToArray(); + if(developers.Count > 0) Context.Metadata.Developer = developers.Distinct().ToArray(); + if(keywords.Count > 0) Context.Metadata.Keywords = keywords.Distinct().ToArray(); + if(languages.Count > 0) Context.Metadata.Languages = languages.Distinct().ToArray(); + Context.Metadata.Name = metadataName; + if(discs.Count > 0) Context.Metadata.OpticalDisc = discs.ToArray(); + Context.Metadata.PartNumber = metadataPartNo; + if(performers.Count > 0) Context.Metadata.Performer = performers.Distinct().ToArray(); + if(publishers.Count > 0) Context.Metadata.Publisher = publishers.Distinct().ToArray(); if(releaseDateSpecified) { - Context.metadata.ReleaseDate = releaseDate; - Context.metadata.ReleaseDateSpecified = true; + Context.Metadata.ReleaseDate = releaseDate; + Context.Metadata.ReleaseDateSpecified = true; } + if(releaseTypeSpecified) { - Context.metadata.ReleaseType = releaseType; - Context.metadata.ReleaseTypeSpecified = true; + Context.Metadata.ReleaseType = releaseType; + Context.Metadata.ReleaseTypeSpecified = true; } - Context.metadata.SerialNumber = metadataSerial; - if(subcategories.Count > 0) - Context.metadata.Subcategories = subcategories.Distinct().ToArray(); - if(systems.Count > 0) - Context.metadata.Systems = systems.Distinct().ToArray(); - Context.metadata.Version = metadataVersion; - Context.metadata.Magazine = magazines.ToArray(); - Context.metadata.Book = books.ToArray(); - Context.metadata.RequiredOperatingSystems = requiredOses.ToArray(); - Context.metadata.UserManual = usermanuals.ToArray(); - Context.metadata.Advertisement = adverts.ToArray(); - Context.metadata.LinearMedia = linearmedias.ToArray(); - Context.metadata.PCICard = pcis.ToArray(); - Context.metadata.AudioMedia = audiomedias.ToArray(); - foreach(string metadataFile in alreadyMetadata) - Context.files.Remove(metadataFile); + Context.Metadata.SerialNumber = metadataSerial; + if(subcategories.Count > 0) Context.Metadata.Subcategories = subcategories.Distinct().ToArray(); + if(systems.Count > 0) Context.Metadata.Systems = systems.Distinct().ToArray(); + Context.Metadata.Version = metadataVersion; + Context.Metadata.Magazine = magazines.ToArray(); + Context.Metadata.Book = books.ToArray(); + Context.Metadata.RequiredOperatingSystems = requiredOses.ToArray(); + Context.Metadata.UserManual = usermanuals.ToArray(); + Context.Metadata.Advertisement = adverts.ToArray(); + Context.Metadata.LinearMedia = linearmedias.ToArray(); + Context.Metadata.PCICard = pcis.ToArray(); + Context.Metadata.AudioMedia = audiomedias.ToArray(); + + foreach(string metadataFile in alreadyMetadata) Context.Files.Remove(metadataFile); } - else - Context.metadata = null; - if(Finished != null) - Finished(); + else Context.Metadata = null; + + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -617,30 +574,25 @@ namespace osrepodbmgr.Core { try { - if(Directory.Exists(Context.tmpFolder)) - { - Directory.Delete(Context.tmpFolder, true); - if(Finished != null) - Finished(); - } + if(!Directory.Exists(Context.TmpFolder)) return; + + Directory.Delete(Context.TmpFolder, true); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(IOException) { // Could not delete temporary files, do not crash. - if(Finished != null) - Finished(); + Finished?.Invoke(); } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -648,72 +600,66 @@ namespace osrepodbmgr.Core { try { - if(!File.Exists(Context.path)) + if(!File.Exists(Context.Path)) { - if(Failed != null) - Failed("Specified file cannot be found"); + Failed?.Invoke("Specified file cannot be found"); return; } - if(string.IsNullOrWhiteSpace(Context.tmpFolder)) + if(string.IsNullOrWhiteSpace(Context.TmpFolder)) { - if(Failed != null) - Failed("Destination cannot be empty"); + Failed?.Invoke("Destination cannot be empty"); return; } - if(Directory.Exists(Context.tmpFolder)) + if(Directory.Exists(Context.TmpFolder)) { - if(Failed != null) - Failed("Destination cannot be a folder"); + Failed?.Invoke("Destination cannot be a folder"); return; } - FileStream inFs = new FileStream(Context.path, FileMode.Open, FileAccess.Read); - FileStream outFs = new FileStream(Context.tmpFolder, FileMode.Create, FileAccess.Write); + FileStream inFs = new FileStream(Context.Path, FileMode.Open, FileAccess.Read); + FileStream outFs = new FileStream(Context.TmpFolder, FileMode.Create, FileAccess.Write); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - byte[] buffer = new byte[bufferSize]; + #endif + byte[] buffer = new byte[BUFFER_SIZE]; - while((inFs.Position + bufferSize) <= inFs.Length) + while(inFs.Position + BUFFER_SIZE <= inFs.Length) { - if(UpdateProgress != null) - UpdateProgress("Copying file...", string.Format("{0} / {1} bytes", inFs.Position, inFs.Length), inFs.Position, inFs.Length); + UpdateProgress?.Invoke("Copying file...", $"{inFs.Position} / {inFs.Length} bytes", inFs.Position, + inFs.Length); inFs.Read(buffer, 0, buffer.Length); outFs.Write(buffer, 0, buffer.Length); } buffer = new byte[inFs.Length - inFs.Position]; - if(UpdateProgress != null) - UpdateProgress("Copying file...", string.Format("{0} / {1} bytes", inFs.Position, inFs.Length), inFs.Position, inFs.Length); + UpdateProgress?.Invoke("Copying file...", $"{inFs.Position} / {inFs.Length} bytes", inFs.Position, + inFs.Length); inFs.Read(buffer, 0, buffer.Length); outFs.Write(buffer, 0, buffer.Length); inFs.Close(); outFs.Close(); -#if DEBUG + #if DEBUG stopwatch.Stop(); Console.WriteLine("Core.CopyFile(): Took {0} seconds to copy file", stopwatch.Elapsed.TotalSeconds); -#endif + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } @@ -721,120 +667,107 @@ namespace osrepodbmgr.Core { try { - if(string.IsNullOrWhiteSpace(Context.path)) + if(string.IsNullOrWhiteSpace(Context.Path)) { - if(Failed != null) - Failed("Destination cannot be empty"); + Failed?.Invoke("Destination cannot be empty"); return; } - if(File.Exists(Context.path)) + if(File.Exists(Context.Path)) { - if(Failed != null) - Failed("Destination cannot be a file"); + Failed?.Invoke("Destination cannot be a file"); return; } - if(Context.dbInfo.id == 0) + if(Context.DbInfo.Id == 0) { - if(Failed != null) - Failed("Operating system must be set"); + Failed?.Invoke("Operating system must be set"); return; } - bool symlinksSupported = DetectOS.GetRealPlatformID() != DiscImageChef.Interop.PlatformID.WinCE && - DetectOS.GetRealPlatformID() != DiscImageChef.Interop.PlatformID.Win32S && - DetectOS.GetRealPlatformID() != DiscImageChef.Interop.PlatformID.Win32NT && - DetectOS.GetRealPlatformID() != DiscImageChef.Interop.PlatformID.Win32Windows && - DetectOS.GetRealPlatformID() != DiscImageChef.Interop.PlatformID.WindowsPhone; + bool symlinksSupported = DetectOS.GetRealPlatformID() != PlatformID.WinCE && + DetectOS.GetRealPlatformID() != PlatformID.Win32S && + DetectOS.GetRealPlatformID() != PlatformID.Win32NT && + DetectOS.GetRealPlatformID() != PlatformID.Win32Windows && + DetectOS.GetRealPlatformID() != PlatformID.WindowsPhone; - List files; - List folders; Dictionary symlinks = new Dictionary(); - long counter; - if(UpdateProgress != null) - UpdateProgress("", "Asking DB for files...", 1, 100); + UpdateProgress?.Invoke("", "Asking DB for files...", 1, 100); - dbCore.DBOps.GetAllFilesInOS(out files, Context.dbInfo.id); + dbCore.DbOps.GetAllFilesInOs(out List files, Context.DbInfo.Id); - if(UpdateProgress != null) - UpdateProgress("", "Asking DB for folders...", 2, 100); + UpdateProgress?.Invoke("", "Asking DB for folders...", 2, 100); - dbCore.DBOps.GetAllFolders(out folders, Context.dbInfo.id); + dbCore.DbOps.GetAllFolders(out List folders, Context.DbInfo.Id); - if(UpdateProgress != null) - UpdateProgress("", "Asking DB for symbolic links...", 3, 100); + UpdateProgress?.Invoke("", "Asking DB for symbolic links...", 3, 100); - if(dbCore.DBOps.HasSymlinks(Context.dbInfo.id)) + if(dbCore.DbOps.HasSymlinks(Context.DbInfo.Id)) { if(!symlinksSupported) { - if(Failed != null) - Failed("Symbolic links cannot be created on this platform."); + Failed?.Invoke("Symbolic links cannot be created on this platform."); return; } - dbCore.DBOps.GetAllSymlinks(out symlinks, Context.dbInfo.id); + dbCore.DbOps.GetAllSymlinks(out symlinks, Context.DbInfo.Id); } - if(UpdateProgress != null) - UpdateProgress("", "Creating folders...", 4, 100); + UpdateProgress?.Invoke("", "Creating folders...", 4, 100); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - counter = 0; - foreach(DBFolder folder in folders) + #endif + long counter = 0; + foreach(DbFolder folder in folders) { - if(UpdateProgress2 != null) - UpdateProgress2("", folder.Path, counter, folders.Count); + UpdateProgress2?.Invoke("", folder.Path, counter, folders.Count); - DirectoryInfo di = Directory.CreateDirectory(Path.Combine(Context.path, folder.Path)); - di.Attributes = folder.Attributes; - di.CreationTimeUtc = folder.CreationTimeUtc; + DirectoryInfo di = Directory.CreateDirectory(Path.Combine(Context.Path, folder.Path)); + di.Attributes = folder.Attributes; + di.CreationTimeUtc = folder.CreationTimeUtc; di.LastAccessTimeUtc = folder.LastAccessTimeUtc; - di.LastWriteTimeUtc = folder.LastWriteTimeUtc; + di.LastWriteTimeUtc = folder.LastWriteTimeUtc; counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all folders", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all folders", + stopwatch.Elapsed.TotalSeconds); + #endif - if(UpdateProgress != null) - UpdateProgress("", "Creating symbolic links...", 4, 100); + UpdateProgress?.Invoke("", "Creating symbolic links...", 4, 100); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif counter = 0; foreach(KeyValuePair kvp in symlinks) { - if(UpdateProgress2 != null) - UpdateProgress2("", kvp.Key, counter, folders.Count); + UpdateProgress2?.Invoke("", kvp.Key, counter, folders.Count); Symlinks.Symlink(kvp.Value, kvp.Key); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all symbolic links", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all symbolic links", + stopwatch.Elapsed.TotalSeconds); + #endif -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif counter = 4; - foreach(DBOSFile file in files) + foreach(DbOsFile file in files) { - if(UpdateProgress != null) - UpdateProgress("", string.Format("Creating {0}...", file.Path), counter, 4 + files.Count); + UpdateProgress?.Invoke("", $"Creating {file.Path}...", counter, 4 + files.Count); - Stream zStream = null; - string repoPath; + Stream zStream = null; + string repoPath; AlgoEnum algorithm; if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), @@ -849,9 +782,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.GZip; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".bz2"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -860,9 +793,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.BZip2; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lzma"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lzma"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -871,9 +804,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.LZMA; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -883,21 +816,21 @@ namespace osrepodbmgr.Core } else { - if(Failed != null) - Failed(string.Format("Cannot find file with hash {0} in the repository", file.Sha256)); + Failed?.Invoke($"Cannot find file with hash {file.Sha256} in the repository"); return; } - FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); - FileStream outFs = new FileStream(Path.Combine(Context.path, file.Path), FileMode.CreateNew, FileAccess.Write); + FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); + FileStream outFs = new FileStream(Path.Combine(Context.Path, file.Path), FileMode.CreateNew, + FileAccess.Write); switch(algorithm) { case AlgoEnum.GZip: - zStream = new GZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new GZipStream(inFs, CompressionMode.Decompress); break; case AlgoEnum.BZip2: - zStream = new BZip2Stream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new BZip2Stream(inFs, CompressionMode.Decompress); break; case AlgoEnum.LZMA: byte[] properties = new byte[5]; @@ -906,135 +839,126 @@ namespace osrepodbmgr.Core zStream = new LzmaStream(properties, inFs); break; case AlgoEnum.LZip: - zStream = new LZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new LZipStream(inFs, CompressionMode.Decompress); break; } - byte[] buffer = new byte[bufferSize]; + byte[] buffer = new byte[BUFFER_SIZE]; - while((outFs.Position + bufferSize) <= file.Length) + while(outFs.Position + BUFFER_SIZE <= file.Length) { - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", outFs.Position / (double)file.Length), - string.Format("{0} / {1} bytes", outFs.Position, file.Length), - outFs.Position, file.Length); + UpdateProgress2?.Invoke($"{outFs.Position / (double)file.Length:P}", + $"{outFs.Position} / {file.Length} bytes", outFs.Position, file.Length); zStream.Read(buffer, 0, buffer.Length); outFs.Write(buffer, 0, buffer.Length); } buffer = new byte[file.Length - outFs.Position]; - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", outFs.Position / (double)file.Length), - string.Format("{0} / {1} bytes", outFs.Position, file.Length), - outFs.Position, file.Length); + UpdateProgress2?.Invoke($"{outFs.Position / (double)file.Length:P}", + $"{outFs.Position} / {file.Length} bytes", outFs.Position, file.Length); zStream.Read(buffer, 0, buffer.Length); outFs.Write(buffer, 0, buffer.Length); - if(UpdateProgress2 != null) - UpdateProgress2(string.Format("{0:P}", file.Length / (double)file.Length), - "Finishing...", inFs.Length, inFs.Length); + UpdateProgress2?.Invoke($"{file.Length / (double)file.Length:P}", "Finishing...", inFs.Length, + inFs.Length); zStream.Close(); outFs.Close(); - FileInfo fi = new FileInfo(Path.Combine(Context.path, file.Path)); - fi.Attributes = file.Attributes; - fi.CreationTimeUtc = file.CreationTimeUtc; - fi.LastAccessTimeUtc = file.LastAccessTimeUtc; - fi.LastWriteTimeUtc = file.LastWriteTimeUtc; + FileInfo fi = new FileInfo(Path.Combine(Context.Path, file.Path)) + { + Attributes = file.Attributes, + CreationTimeUtc = file.CreationTimeUtc, + LastAccessTimeUtc = file.LastAccessTimeUtc, + LastWriteTimeUtc = file.LastWriteTimeUtc + }; counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all files", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.SaveAs(): Took {0} seconds to create all files", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } - catch(ThreadAbortException) - { } + catch(ThreadAbortException) { } catch(Exception ex) { - if(Debugger.IsAttached) - throw; - if(Failed != null) - Failed(string.Format("Exception {0}\n{1}", ex.Message, ex.InnerException)); -#if DEBUG + if(Debugger.IsAttached) throw; + + Failed?.Invoke($"Exception {ex.Message}\n{ex.InnerException}"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } public static void CleanFiles() { - ulong count = dbCore.DBOps.GetFilesCount(); - const ulong page = 2500; - ulong offset = 0; + ulong count = dbCore.DbOps.GetFilesCount(); + const ulong page = 2500; + ulong offset = 0; - List filesPage, allFiles; - allFiles = new List(); + List filesPage; + List allFiles = new List(); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - while(dbCore.DBOps.GetFiles(out filesPage, offset, page)) + #endif + while(dbCore.DbOps.GetFiles(out filesPage, offset, page)) { - if(filesPage.Count == 0) - break; + if(filesPage.Count == 0) break; - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Loaded file {0} of {1}", offset, count), (long)offset, (long)count); + UpdateProgress?.Invoke(null, $"Loaded file {offset} of {count}", (long)offset, (long)count); allFiles.AddRange(filesPage); offset += page; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to get all files from the database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to get all files from the database", + stopwatch.Elapsed.TotalSeconds); + #endif filesPage = null; - if(UpdateProgress != null) - UpdateProgress(null, "Getting OSes from the database", 0, 0); -#if DEBUG + UpdateProgress?.Invoke(null, "Getting OSes from the database", 0, 0); + #if DEBUG stopwatch.Restart(); -#endif - List oses; - dbCore.DBOps.GetAllOSes(out oses); -#if DEBUG + #endif + dbCore.DbOps.GetAllOSes(out List oses); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to get OSes from database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to get OSes from database", + stopwatch.Elapsed.TotalSeconds); + #endif List orphanFiles = new List(); -#if DEBUG + #if DEBUG stopwatch.Restart(); Stopwatch stopwatch2 = new Stopwatch(); -#endif + #endif int counterF = 0; - foreach(DBFile file in allFiles) + foreach(DbFile file in allFiles) { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Checking file {0} of {1}", counterF, allFiles.Count), counterF, allFiles.Count); + UpdateProgress?.Invoke(null, $"Checking file {counterF} of {allFiles.Count}", counterF, allFiles.Count); bool fileExists = false; - int counterO = 0; -#if DEBUG + int counterO = 0; + #if DEBUG stopwatch2.Restart(); -#endif - foreach(DBEntry os in oses) + #endif + foreach(DbEntry os in oses) { - if(UpdateProgress2 != null) - UpdateProgress2(null, string.Format("Checking OS {0} of {1}", counterO, oses.Count), counterO, oses.Count); + UpdateProgress2?.Invoke(null, $"Checking OS {counterO} of {oses.Count}", counterO, oses.Count); - if(dbCore.DBOps.ExistsFileInOS(file.Sha256, os.id)) + if(dbCore.DbOps.ExistsFileInOs(file.Sha256, os.Id)) { fileExists = true; break; @@ -1042,107 +966,104 @@ namespace osrepodbmgr.Core counterO++; } -#if DEBUG + #if DEBUG stopwatch2.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to check file in all OSes", stopwatch2.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to check file in all OSes", + stopwatch2.Elapsed.TotalSeconds); + #endif - if(!fileExists) - orphanFiles.Add(file.Sha256); + if(!fileExists) orphanFiles.Add(file.Sha256); counterF++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); Console.WriteLine("Core.CleanFiles(): Took {0} seconds to check all files", stopwatch.Elapsed.TotalSeconds); -#endif + #endif - if(UpdateProgress2 != null) - UpdateProgress2(null, null, 0, 0); + UpdateProgress2?.Invoke(null, null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif counterF = 0; foreach(string hash in orphanFiles) { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Deleting file {0} of {1} from database", counterF, orphanFiles.Count), counterF, orphanFiles.Count); + UpdateProgress?.Invoke(null, $"Deleting file {counterF} of {orphanFiles.Count} from database", counterF, + orphanFiles.Count); - dbCore.DBOps.DeleteFile(hash); + dbCore.DbOps.DeleteFile(hash); counterF++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to remove all orphan files from database", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to remove all orphan files from database", + stopwatch.Elapsed.TotalSeconds); + #endif - if(UpdateProgress != null) - UpdateProgress(null, "Listing files in repository", 0, 0); + UpdateProgress?.Invoke(null, "Listing files in repository", 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - List repoFiles = new List(Directory.EnumerateFiles(Settings.Current.RepositoryPath, "*", SearchOption.AllDirectories)); + #endif + List repoFiles = + new List(Directory.EnumerateFiles(Settings.Current.RepositoryPath, "*", + SearchOption.AllDirectories)); repoFiles.Sort(); -#if DEBUG + #if DEBUG stopwatch.Stop(); Console.WriteLine("Core.CleanFiles(): Took {0} seconds to find all files", stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif - counterF = 0; + #endif + counterF = 0; List filesToDelete = new List(); foreach(string file in repoFiles) { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Checking file {0} of {1} from repository", counterF, repoFiles.Count), counterF, repoFiles.Count); + UpdateProgress?.Invoke(null, $"Checking file {counterF} of {repoFiles.Count} from repository", counterF, + repoFiles.Count); // Allow database to be inside repo - if(file == Settings.Current.DatabasePath) - continue; + if(file == Settings.Current.DatabasePath) continue; - if(Path.GetExtension(file).ToLowerInvariant() == ".xml" || - Path.GetExtension(file).ToLowerInvariant() == ".json") + if(Path.GetExtension(file)?.ToLowerInvariant() == ".xml" || + Path.GetExtension(file)?.ToLowerInvariant() == ".json") { - if(!dbCore.DBOps.ExistsOS(Path.GetFileNameWithoutExtension(file))) - filesToDelete.Add(file); + if(!dbCore.DbOps.ExistsOs(Path.GetFileNameWithoutExtension(file))) filesToDelete.Add(file); } - else if(!dbCore.DBOps.ExistsFile(Path.GetFileNameWithoutExtension(file))) + else if(!dbCore.DbOps.ExistsFile(Path.GetFileNameWithoutExtension(file))) filesToDelete.Add(file); counterF++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to check all repository files", stopwatch.Elapsed.TotalSeconds); + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to check all repository files", + stopwatch.Elapsed.TotalSeconds); stopwatch.Restart(); -#endif + #endif counterF = 0; foreach(string file in filesToDelete) { - if(UpdateProgress != null) - UpdateProgress(null, string.Format("Deleting file {0} of {1} from repository", counterF, filesToDelete.Count), counterF, filesToDelete.Count); + UpdateProgress?.Invoke(null, $"Deleting file {counterF} of {filesToDelete.Count} from repository", + counterF, filesToDelete.Count); - try - { - File.Delete(file); - } -#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body + try { File.Delete(file); } + #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body catch -#pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body + #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body { // Do not crash } counterF++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.CleanFiles(): Took {0} seconds to delete all orphan files", stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.CleanFiles(): Took {0} seconds to delete all orphan files", + stopwatch.Elapsed.TotalSeconds); + #endif - if(Finished != null) - Finished(); + Finished?.Invoke(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/Miscellaneous.cs b/osrepodbmgr.Core/Workers/Miscellaneous.cs index 4fd2ecd..c24b83f 100644 --- a/osrepodbmgr.Core/Workers/Miscellaneous.cs +++ b/osrepodbmgr.Core/Workers/Miscellaneous.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Diagnostics; using System.IO; @@ -34,55 +35,48 @@ namespace osrepodbmgr.Core { public static partial class Workers { - static DBCore dbCore; + static DbCore dbCore; - static int zipCounter; + static int zipCounter; static string zipCurrentEntryName; -#if DEBUG + #if DEBUG static Stopwatch stopwatch = new Stopwatch(); -#endif + #endif - static string stringify(byte[] hash) + static string Stringify(byte[] hash) { StringBuilder hashOutput = new StringBuilder(); - for(int i = 0; i < hash.Length; i++) - { - hashOutput.Append(hash[i].ToString("x2")); - } + foreach(byte h in hash) hashOutput.Append(h.ToString("x2")); return hashOutput.ToString(); } - public static void CheckUnar() { if(string.IsNullOrWhiteSpace(Settings.Current.UnArchiverPath)) { - if(Failed != null) - Failed("unar path is not set."); + Failed?.Invoke("unar path is not set."); return; } - string unarFolder = Path.GetDirectoryName(Settings.Current.UnArchiverPath); - string extension = Path.GetExtension(Settings.Current.UnArchiverPath); + string unarFolder = Path.GetDirectoryName(Settings.Current.UnArchiverPath); + string extension = Path.GetExtension(Settings.Current.UnArchiverPath); string unarfilename = Path.GetFileNameWithoutExtension(Settings.Current.UnArchiverPath); string lsarfilename = unarfilename.Replace("unar", "lsar"); - string unarPath = Path.Combine(unarFolder, unarfilename + extension); - string lsarPath = Path.Combine(unarFolder, lsarfilename + extension); + string unarPath = Path.Combine(unarFolder, unarfilename + extension); + string lsarPath = Path.Combine(unarFolder, lsarfilename + extension); if(!File.Exists(unarPath)) { - if(Failed != null) - Failed(string.Format("Cannot find unar executable at {0}.", unarPath)); + Failed?.Invoke($"Cannot find unar executable at {unarPath}."); return; } if(!File.Exists(lsarPath)) { - if(Failed != null) - Failed("Cannot find unar executable."); + Failed?.Invoke("Cannot find unar executable."); return; } @@ -90,65 +84,75 @@ namespace osrepodbmgr.Core try { - Process unarProcess = new Process(); - unarProcess.StartInfo.FileName = unarPath; - unarProcess.StartInfo.CreateNoWindow = true; - unarProcess.StartInfo.RedirectStandardOutput = true; - unarProcess.StartInfo.UseShellExecute = false; + Process unarProcess = new Process + { + StartInfo = + { + FileName = unarPath, + CreateNoWindow = true, + RedirectStandardOutput = true, + UseShellExecute = false + } + }; unarProcess.Start(); unarProcess.WaitForExit(); unarOut = unarProcess.StandardOutput.ReadToEnd(); } catch { - if(Failed != null) - Failed("Cannot run unar."); + Failed?.Invoke("Cannot run unar."); return; } try { - Process lsarProcess = new Process(); - lsarProcess.StartInfo.FileName = lsarPath; - lsarProcess.StartInfo.CreateNoWindow = true; - lsarProcess.StartInfo.RedirectStandardOutput = true; - lsarProcess.StartInfo.UseShellExecute = false; + Process lsarProcess = new Process + { + StartInfo = + { + FileName = lsarPath, + CreateNoWindow = true, + RedirectStandardOutput = true, + UseShellExecute = false + } + }; lsarProcess.Start(); lsarProcess.WaitForExit(); lsarOut = lsarProcess.StandardOutput.ReadToEnd(); } catch { - if(Failed != null) - Failed("Cannot run lsar."); + Failed?.Invoke("Cannot run lsar."); return; } if(!unarOut.StartsWith("unar ", StringComparison.CurrentCulture)) { - if(Failed != null) - Failed("Not the correct unar executable"); + Failed?.Invoke("Not the correct unar executable"); return; } if(!lsarOut.StartsWith("lsar ", StringComparison.CurrentCulture)) { - if(Failed != null) - Failed("Not the correct unar executable"); + Failed?.Invoke("Not the correct unar executable"); return; } - Process versionProcess = new Process(); - versionProcess.StartInfo.FileName = unarPath; - versionProcess.StartInfo.CreateNoWindow = true; - versionProcess.StartInfo.RedirectStandardOutput = true; - versionProcess.StartInfo.UseShellExecute = false; - versionProcess.StartInfo.Arguments = "-v"; + Process versionProcess = new Process + { + StartInfo = + { + FileName = unarPath, + CreateNoWindow = true, + RedirectStandardOutput = true, + UseShellExecute = false, + Arguments = "-v" + } + }; versionProcess.Start(); versionProcess.WaitForExit(); - if(FinishedWithText != null) - FinishedWithText(versionProcess.StandardOutput.ReadToEnd().TrimEnd(new char[] { '\n' })); + FinishedWithText?.Invoke(versionProcess.StandardOutput.ReadToEnd().TrimEnd('\n')); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Core/Workers/VirusTotal.cs b/osrepodbmgr.Core/Workers/VirusTotal.cs index ada723c..a2d7209 100644 --- a/osrepodbmgr.Core/Workers/VirusTotal.cs +++ b/osrepodbmgr.Core/Workers/VirusTotal.cs @@ -25,16 +25,19 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; +using SharpCompress.Compressors; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.LZMA; using VirusTotalNET; using VirusTotalNET.Objects; +using VirusTotalNET.ResponseCodes; using VirusTotalNET.Results; namespace osrepodbmgr.Core @@ -52,14 +55,14 @@ namespace osrepodbmgr.Core { Task.Run(async () => { - vt = new VirusTotal(key); - report = await vt.GetFileReportAsync("b82758fc5f737a58078d3c60e2798a70d895443a86aa39adf52dec70e98c2bed"); + vt = new VirusTotal(key); + report = + await vt.GetFileReportAsync("b82758fc5f737a58078d3c60e2798a70d895443a86aa39adf52dec70e98c2bed"); }).Wait(); } catch(Exception ex) { - if(Failed != null) - Failed(ex.InnerException.Message); + Failed?.Invoke(ex.InnerException?.Message); return false; } @@ -68,117 +71,99 @@ namespace osrepodbmgr.Core public static bool InitVirusTotal(string key) { - VirusTotal vt = null; + VirusTotal vt = null; FileReport report = null; try { Task.Run(async () => { - vt = new VirusTotal(key); - report = await vt.GetFileReportAsync("b82758fc5f737a58078d3c60e2798a70d895443a86aa39adf52dec70e98c2bed"); + vt = new VirusTotal(key); + report = + await vt.GetFileReportAsync("b82758fc5f737a58078d3c60e2798a70d895443a86aa39adf52dec70e98c2bed"); }).Wait(); } catch(Exception ex) { - if(Failed != null) - Failed(ex.InnerException.Message); + Failed?.Invoke(ex.InnerException?.Message); return false; } - if(report != null && report.MD5 == "0bf60adb1435639a42b490e7e80d25c7") - { - vTotal = vt; - Context.virusTotalEnabled = true; - return true; - } - return false; + if(report == null || report.MD5 != "0bf60adb1435639a42b490e7e80d25c7") return false; + + vTotal = vt; + Context.VirusTotalEnabled = true; + return true; } - public static void VirusTotalFileFromRepo(DBFile file) + public static void VirusTotalFileFromRepo(DbFile file) { try { - if(!Context.virusTotalEnabled) + if(!Context.VirusTotalEnabled) { - if(Failed != null) - Failed("VirusTotal is not usable"); + Failed?.Invoke("VirusTotal is not usable"); return; } - if(vTotal == null) - { - if(Failed != null) - Failed("VirusTotal is not initalized"); - } + if(vTotal == null) Failed?.Invoke("VirusTotal is not initalized"); FileReport fResult = null; - if(UpdateProgress != null) - UpdateProgress("Requesting existing report to VirusTotal", null, 0, 0); + UpdateProgress?.Invoke("Requesting existing report to VirusTotal", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif - Task.Run(async () => - { - fResult = await vTotal.GetFileReportAsync(file.Sha256); - }).Wait(); -#if DEBUG + #endif + Task.Run(async () => { fResult = await vTotal.GetFileReportAsync(file.Sha256); }).Wait(); + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.VirusTotalFileFromRepo({0}): VirusTotal took {1} seconds to answer for SHA256 request", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.VirusTotalFileFromRepo({0}): VirusTotal took {1} seconds to answer for SHA256 request", + file, stopwatch.Elapsed.TotalSeconds); + #endif - if(fResult.ResponseCode == VirusTotalNET.ResponseCodes.FileReportResponseCode.NotPresent) + if(fResult.ResponseCode == FileReportResponseCode.NotPresent) { - if(Failed != null) - Failed(fResult.VerboseMsg); + Failed?.Invoke(fResult.VerboseMsg); return; } - if(fResult.ResponseCode != VirusTotalNET.ResponseCodes.FileReportResponseCode.Queued) + if(fResult.ResponseCode != FileReportResponseCode.Queued) { - if(fResult.ResponseCode == VirusTotalNET.ResponseCodes.FileReportResponseCode.Present) - { + if(fResult.ResponseCode == FileReportResponseCode.Present) if(fResult.Positives > 0) { file.HasVirus = true; if(fResult.Scans != null) - { foreach(KeyValuePair engine in fResult.Scans) { - if(engine.Value.Detected) - { - file.Virus = engine.Value.Result; - file.VirusTotalTime = engine.Value.Update; - dbCore.DBOps.UpdateFile(file); + if(!engine.Value.Detected) continue; - if(ScanFinished != null) - ScanFinished(file); + file.Virus = engine.Value.Result; + file.VirusTotalTime = engine.Value.Update; + dbCore.DbOps.UpdateFile(file); - return; - } + ScanFinished?.Invoke(file); + + return; } - } } else { // If no scan has been done, mark as false. // If a positive has already existed don't overwrite it. - file.HasVirus = false; - file.Virus = null; + file.HasVirus = false; + file.Virus = null; file.VirusTotalTime = DateTime.UtcNow; - dbCore.DBOps.UpdateFile(file); + dbCore.DbOps.UpdateFile(file); - if(ScanFinished != null) - ScanFinished(file); + ScanFinished?.Invoke(file); return; } - } - string repoPath; + string repoPath; AlgoEnum algorithm; if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), @@ -193,9 +178,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.GZip; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".bz2"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".bz2"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -204,9 +189,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.BZip2; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lzma"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lzma"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -215,9 +200,9 @@ namespace osrepodbmgr.Core algorithm = AlgoEnum.LZMA; } else if(File.Exists(Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), - file.Sha256[1].ToString(), file.Sha256[2].ToString(), - file.Sha256[3].ToString(), file.Sha256[4].ToString(), - file.Sha256 + ".lz"))) + file.Sha256[1].ToString(), file.Sha256[2].ToString(), + file.Sha256[3].ToString(), file.Sha256[4].ToString(), + file.Sha256 + ".lz"))) { repoPath = Path.Combine(Settings.Current.RepositoryPath, file.Sha256[0].ToString(), file.Sha256[1].ToString(), file.Sha256[2].ToString(), @@ -227,24 +212,22 @@ namespace osrepodbmgr.Core } else { - if(Failed != null) - Failed(string.Format("Cannot find file with hash {0} in the repository", file.Sha256)); + Failed?.Invoke($"Cannot find file with hash {file.Sha256} in the repository"); return; } - if(UpdateProgress != null) - UpdateProgress("Uncompressing file...", null, 0, 0); + UpdateProgress?.Invoke("Uncompressing file...", null, 0, 0); - FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); - Stream zStream = null; + FileStream inFs = new FileStream(repoPath, FileMode.Open, FileAccess.Read); + Stream zStream = null; switch(algorithm) { case AlgoEnum.GZip: - zStream = new GZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new GZipStream(inFs, CompressionMode.Decompress); break; case AlgoEnum.BZip2: - zStream = new BZip2Stream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new BZip2Stream(inFs, CompressionMode.Decompress); break; case AlgoEnum.LZMA: byte[] properties = new byte[5]; @@ -253,53 +236,49 @@ namespace osrepodbmgr.Core zStream = new LzmaStream(properties, inFs, inFs.Length - 13, file.Length); break; case AlgoEnum.LZip: - zStream = new LZipStream(inFs, SharpCompress.Compressors.CompressionMode.Decompress); + zStream = new LZipStream(inFs, CompressionMode.Decompress); break; } ScanResult sResult = null; -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif // Cannot use zStream directly, VirusTotal.NET requests the size *sigh* - string tmpFile = Path.Combine(Settings.Current.TemporaryFolder, Path.GetTempFileName()); - FileStream outFs = new FileStream(tmpFile, FileMode.Create, FileAccess.ReadWrite); - zStream.CopyTo(outFs); - zStream.Close(); + string tmpFile = Path.Combine(Settings.Current.TemporaryFolder, Path.GetTempFileName()); + FileStream outFs = new FileStream(tmpFile, FileMode.Create, FileAccess.ReadWrite); + zStream?.CopyTo(outFs); + zStream?.Close(); outFs.Seek(0, SeekOrigin.Begin); -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.VirusTotalFileFromRepo({0}): Uncompressing took {1} seconds", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.VirusTotalFileFromRepo({0}): Uncompressing took {1} seconds", file, + stopwatch.Elapsed.TotalSeconds); + #endif - if(UpdateProgress != null) - UpdateProgress("Uploading file to VirusTotal...", null, 0, 0); + UpdateProgress?.Invoke("Uploading file to VirusTotal...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif Task.Run(async () => { sResult = await vTotal.ScanFileAsync(outFs, file.Sha256); // Keep filename private, sorry! }).Wait(); -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.VirusTotalFileFromRepo({0}): Upload to VirusTotal took {1} seconds", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.VirusTotalFileFromRepo({0}): Upload to VirusTotal took {1} seconds", file, + stopwatch.Elapsed.TotalSeconds); + #endif outFs.Close(); File.Delete(tmpFile); - if(sResult == null || sResult.ResponseCode == VirusTotalNET.ResponseCodes.ScanFileResponseCode.Error) + if(sResult == null || sResult.ResponseCode == ScanFileResponseCode.Error) { - if(sResult == null) - { - if(Failed != null) - Failed("Cannot send file to VirusTotal"); - } - else - Failed(sResult.VerboseMsg); + if(sResult == null) Failed?.Invoke("Cannot send file to VirusTotal"); + else Failed(sResult.VerboseMsg); return; } @@ -307,92 +286,77 @@ namespace osrepodbmgr.Core // Seems that we are faster than them, getting a lot of "not queued" responses... Thread.Sleep(2500); - Task.Run(async () => - { - fResult = await vTotal.GetFileReportAsync(file.Sha256); - }).Wait(); + Task.Run(async () => { fResult = await vTotal.GetFileReportAsync(file.Sha256); }).Wait(); } - if(UpdateProgress != null) - UpdateProgress("Waiting for VirusTotal analysis...", null, 0, 0); + UpdateProgress?.Invoke("Waiting for VirusTotal analysis...", null, 0, 0); -#if DEBUG + #if DEBUG stopwatch.Restart(); -#endif + #endif int counter = 0; - while(fResult.ResponseCode == VirusTotalNET.ResponseCodes.FileReportResponseCode.Queued) + while(fResult.ResponseCode == FileReportResponseCode.Queued) { // Timeout... - if(counter == 10) - break; + if(counter == 10) break; // Wait 15 seconds so we fall in the 4 requests/minute Thread.Sleep(15000); - Task.Run(async () => - { - fResult = await vTotal.GetFileReportAsync(file.Sha256); - }).Wait(); + Task.Run(async () => { fResult = await vTotal.GetFileReportAsync(file.Sha256); }).Wait(); counter++; } -#if DEBUG + #if DEBUG stopwatch.Stop(); - Console.WriteLine("Core.VirusTotalFileFromRepo({0}): VirusTotal took {1} seconds to do the analysis", file, stopwatch.Elapsed.TotalSeconds); -#endif + Console.WriteLine("Core.VirusTotalFileFromRepo({0}): VirusTotal took {1} seconds to do the analysis", + file, stopwatch.Elapsed.TotalSeconds); + #endif - if(fResult.ResponseCode != VirusTotalNET.ResponseCodes.FileReportResponseCode.Present) + if(fResult.ResponseCode != FileReportResponseCode.Present) { - if(Failed != null) - Failed(fResult.VerboseMsg); + Failed?.Invoke(fResult.VerboseMsg); return; } if(fResult.Positives > 0) { file.HasVirus = true; - if(fResult.Scans != null) + if(fResult.Scans == null) return; + + foreach(KeyValuePair engine in fResult.Scans) { - foreach(KeyValuePair engine in fResult.Scans) - { - if(engine.Value.Detected) - { - file.Virus = engine.Value.Result; - file.VirusTotalTime = engine.Value.Update; - dbCore.DBOps.UpdateFile(file); + if(!engine.Value.Detected) continue; - if(ScanFinished != null) - ScanFinished(file); + file.Virus = engine.Value.Result; + file.VirusTotalTime = engine.Value.Update; + dbCore.DbOps.UpdateFile(file); - return; - } - } + ScanFinished?.Invoke(file); + + return; } } else { // If no scan has been done, mark as false. // If a positive has already existed don't overwrite it. - file.HasVirus = false; - file.Virus = null; + file.HasVirus = false; + file.Virus = null; file.VirusTotalTime = DateTime.UtcNow; - dbCore.DBOps.UpdateFile(file); + dbCore.DbOps.UpdateFile(file); - if(ScanFinished != null) - ScanFinished(file); - - return; + ScanFinished?.Invoke(file); } } catch(Exception ex) { - if(Failed != null) - Failed(string.Format("Exception {0} when calling VirusTotal", ex.InnerException.Message)); -#if DEBUG + Failed?.Invoke($"Exception {ex.InnerException.Message} when calling VirusTotal"); + #if DEBUG Console.WriteLine("Exception {0}\n{1}", ex.Message, ex.InnerException); -#endif + #endif } } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Eto.Desktop/Program.cs b/osrepodbmgr.Eto.Desktop/Program.cs index 95b88f9..1dee268 100644 --- a/osrepodbmgr.Eto.Desktop/Program.cs +++ b/osrepodbmgr.Eto.Desktop/Program.cs @@ -44,9 +44,9 @@ namespace osrepodbmgr.Eto.Desktop if(Settings.Current.UseClamd) Workers.InitClamd(); if(Settings.Current.UseVirusTotal) - Context.virusTotalEnabled = Workers.InitVirusTotal(Settings.Current.VirusTotalKey); + Context.VirusTotalEnabled = Workers.InitVirusTotal(Settings.Current.VirusTotalKey); } - Context.usableDotNetZip = !Platform.Detect.IsMac && !Platform.Detect.IsIos; + Context.UsableDotNetZip = !Platform.Detect.IsMac && !Platform.Detect.IsIos; new Application(Platform.Detect).Run(new frmMain()); } diff --git a/osrepodbmgr.Eto.XamMac2/Program.cs b/osrepodbmgr.Eto.XamMac2/Program.cs index 598a62f..a202b3d 100644 --- a/osrepodbmgr.Eto.XamMac2/Program.cs +++ b/osrepodbmgr.Eto.XamMac2/Program.cs @@ -44,9 +44,9 @@ namespace osrepodbmgr.Eto.XamMac2 if(Settings.Current.UseClamd) Workers.InitClamd(); if(Settings.Current.UseVirusTotal) - Context.virusTotalEnabled = Workers.InitVirusTotal(Settings.Current.VirusTotalKey); + Context.VirusTotalEnabled = Workers.InitVirusTotal(Settings.Current.VirusTotalKey); } - Context.usableDotNetZip = false; + Context.UsableDotNetZip = false; new Application(Platforms.XamMac2).Run(new frmMain()); } } diff --git a/osrepodbmgr.Eto/WrappersForEto.cs b/osrepodbmgr.Eto/WrappersForEto.cs index 57c53b0..d4b17b0 100644 --- a/osrepodbmgr.Eto/WrappersForEto.cs +++ b/osrepodbmgr.Eto/WrappersForEto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using osrepodbmgr.Core; using Schemas; @@ -32,32 +33,109 @@ namespace osrepodbmgr.Eto { class DBEntryForEto { - DBEntry _item; - public DBEntryForEto(DBEntry item) + DbEntry _item; + + public DBEntryForEto(DbEntry item) { _item = item; } - public long id { get { return _item.id; } set { } } - public string developer { get { return _item.developer; } set { } } - public string product { get { return _item.product; } set { } } - public string version { get { return _item.version; } set { } } - public string languages { get { return _item.languages; } set { } } - public string architecture { get { return _item.architecture; } set { } } - public string machine { get { return _item.machine; } set { } } - public string format { get { return _item.format; } set { } } - public string description { get { return _item.description; } set { } } - public bool oem { get { return _item.oem; } set { } } - public bool upgrade { get { return _item.upgrade; } set { } } - public bool update { get { return _item.update; } set { } } - public bool source { get { return _item.source; } set { } } - public bool files { get { return _item.files; } set { } } - public bool netinstall { get { return _item.netinstall; } set { } } - public byte[] xml { get { return _item.xml; } set { } } - public byte[] json { get { return _item.json; } set { } } - public string mdid { get { return _item.mdid; } set { } } + public long id + { + get { return _item.Id; } + set { } + } + public string developer + { + get { return _item.Developer; } + set { } + } + public string product + { + get { return _item.Product; } + set { } + } + public string version + { + get { return _item.Version; } + set { } + } + public string languages + { + get { return _item.Languages; } + set { } + } + public string architecture + { + get { return _item.Architecture; } + set { } + } + public string machine + { + get { return _item.Machine; } + set { } + } + public string format + { + get { return _item.Format; } + set { } + } + public string description + { + get { return _item.Description; } + set { } + } + public bool oem + { + get { return _item.Oem; } + set { } + } + public bool upgrade + { + get { return _item.Upgrade; } + set { } + } + public bool update + { + get { return _item.Update; } + set { } + } + public bool source + { + get { return _item.Source; } + set { } + } + public bool files + { + get { return _item.Files; } + set { } + } + public bool netinstall + { + get { return _item.Netinstall; } + set { } + } + public byte[] xml + { + get { return _item.Xml; } + set { } + } + public byte[] json + { + get { return _item.Json; } + set { } + } + public string mdid + { + get { return _item.Mdid; } + set { } + } - public DBEntry original { get { return _item; } set { } } + public DbEntry original + { + get { return _item; } + set { } + } } class StringEntry @@ -67,19 +145,19 @@ namespace osrepodbmgr.Eto class BarcodeEntry { - public string code { get; set; } + public string code { get; set; } public BarcodeTypeType type { get; set; } } class DiscEntry { - public string path { get; set; } + public string path { get; set; } public OpticalDiscType disc { get; set; } } class DiskEntry { - public string path { get; set; } + public string path { get; set; } public BlockMediaType disk { get; set; } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgAdd.xeto.cs b/osrepodbmgr.Eto/dlgAdd.xeto.cs index 2386282..c07f4c4 100644 --- a/osrepodbmgr.Eto/dlgAdd.xeto.cs +++ b/osrepodbmgr.Eto/dlgAdd.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -43,65 +44,20 @@ namespace osrepodbmgr.Eto { public class dlgAdd : Dialog { - Thread thdFindFiles; - Thread thdHashFiles; - Thread thdCheckFiles; - Thread thdAddFiles; - Thread thdPackFiles; - Thread thdOpenArchive; - Thread thdExtractArchive; - Thread thdRemoveTemp; - bool stopped; - ObservableCollection fileView; + public delegate void OnAddedOSDelegate(DbEntry os); + + ObservableCollection fileView; + int knownFiles; ObservableCollection osView; - int knownFiles; - - class FileEntry - { - public string path { get; set; } - public string hash { get; set; } - public bool known { get; set; } - public bool iscrack { get; set; } - } - - #region XAML UI elements -#pragma warning disable 0649 - TextBox txtDeveloper; - TextBox txtProduct; - TextBox txtVersion; - TextBox txtLanguages; - TextBox txtArchitecture; - TextBox txtMachine; - TextBox txtFormat; - TextBox txtDescription; - CheckBox chkOem; - CheckBox chkUpdate; - CheckBox chkUpgrade; - CheckBox chkFiles; - CheckBox chkSource; - CheckBox chkNetinstall; - GridView treeFiles; - TabPage tabOSes; - GridView treeOSes; - Label lblProgress; - ProgressBar prgProgress; - Label lblProgress2; - ProgressBar prgProgress2; - Button btnRemoveFile; - Button btnMetadata; - Button btnStop; - Button btnFolder; - Button btnArchive; - Button btnPack; - Button btnClose; - Button btnExit; - Button btnToggleCrack; - Label lblStatus; -#pragma warning restore 0649 - #endregion XAML UI elements - - public delegate void OnAddedOSDelegate(DBEntry os); - public event OnAddedOSDelegate OnAddedOS; + bool stopped; + Thread thdAddFiles; + Thread thdCheckFiles; + Thread thdExtractArchive; + Thread thdFindFiles; + Thread thdHashFiles; + Thread thdOpenArchive; + Thread thdPackFiles; + Thread thdRemoveTemp; public dlgAdd() { @@ -116,22 +72,22 @@ namespace osrepodbmgr.Eto treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.path) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Path)}, HeaderText = "Path" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.iscrack) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.IsCrack)}, HeaderText = "Crack?" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.hash) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Hash)}, HeaderText = "SHA256" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.known) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.Known)}, HeaderText = "Known?" }); @@ -139,10 +95,7 @@ namespace osrepodbmgr.Eto treeFiles.CellFormatting += (sender, e) => { - if(((FileEntry)e.Item).known) - e.BackgroundColor = Colors.Green; - else - e.BackgroundColor = Colors.Red; + e.BackgroundColor = ((FileEntry)e.Item).Known ? Colors.Green : Colors.Red; }; osView = new ObservableCollection(); @@ -151,133 +104,127 @@ namespace osrepodbmgr.Eto treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.developer) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.developer)}, HeaderText = "Developer" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.product) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.product)}, HeaderText = "Product" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.version) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.version)}, HeaderText = "Version" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.languages) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.languages)}, HeaderText = "Languages" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.architecture) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.architecture)}, HeaderText = "Architecture" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.machine) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.machine)}, HeaderText = "Machine" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.format) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.format)}, HeaderText = "Format" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.description) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.description)}, HeaderText = "Description" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.oem) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.oem)}, HeaderText = "OEM?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.upgrade) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.upgrade)}, HeaderText = "Upgrade?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.update) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.update)}, HeaderText = "Update?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.source) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.source)}, HeaderText = "Source?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.files) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.files)}, HeaderText = "Files?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.netinstall) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.netinstall)}, HeaderText = "NetInstall?" }); treeOSes.AllowMultipleSelection = false; } + public event OnAddedOSDelegate OnAddedOS; + void UnarChangeStatus() { - Application.Instance.Invoke(delegate - { - btnArchive.Enabled = Context.unarUsable; - }); + Application.Instance.Invoke(delegate { btnArchive.Enabled = Context.UnarUsable; }); } protected void OnDeleteEvent(object sender, CancelEventArgs e) { - if(btnStop.Visible) - btnStop.PerformClick(); - if(btnClose.Enabled) - btnClose.PerformClick(); + if(btnStop.Visible) btnStop.PerformClick(); + if(btnClose.Enabled) btnClose.PerformClick(); } protected void OnBtnFolderClicked(object sender, EventArgs e) { - SelectFolderDialog dlgFolder = new SelectFolderDialog(); - dlgFolder.Title = "Open folder"; + SelectFolderDialog dlgFolder = new SelectFolderDialog {Title = "Open folder"}; - if(dlgFolder.ShowDialog(this) == DialogResult.Ok) - { - knownFiles = 0; - stopped = false; - lblProgress.Text = "Finding files"; - lblProgress.Visible = true; - prgProgress.Visible = true; - btnExit.Enabled = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - thdFindFiles = new Thread(Workers.FindFiles); - Context.path = dlgFolder.Directory; - Workers.Failed += FindFilesFailed; - Workers.Finished += FindFilesFinished; - btnStop.Visible = true; - thdFindFiles.Start(); - } + if(dlgFolder.ShowDialog(this) != DialogResult.Ok) return; + + knownFiles = 0; + stopped = false; + lblProgress.Text = "Finding files"; + lblProgress.Visible = true; + prgProgress.Visible = true; + btnExit.Enabled = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + thdFindFiles = new Thread(Workers.FindFiles); + Context.Path = dlgFolder.Directory; + Workers.Failed += FindFilesFailed; + Workers.Finished += FindFilesFinished; + btnStop.Visible = true; + thdFindFiles.Start(); } void FindFilesFailed(string text) { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - btnStop.Visible = false; - Workers.Failed -= FindFilesFailed; - Workers.Finished -= FindFilesFinished; - thdFindFiles = null; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + btnStop.Visible = false; + Workers.Failed -= FindFilesFailed; + Workers.Finished -= FindFilesFinished; + thdFindFiles = null; }); } @@ -285,19 +232,19 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - Workers.Failed -= FindFilesFailed; + Workers.Failed -= FindFilesFailed; Workers.Finished -= FindFilesFinished; - lblProgress.Visible = true; - prgProgress.Visible = true; + lblProgress.Visible = true; + prgProgress.Visible = true; lblProgress2.Visible = true; prgProgress2.Visible = true; - thdFindFiles = null; - thdHashFiles = new Thread(Workers.HashFiles); - Workers.Failed += HashFilesFailed; - Workers.Finished += HashFilesFinished; - Workers.UpdateProgress += UpdateProgress; + thdFindFiles = null; + thdHashFiles = new Thread(Workers.HashFiles); + Workers.Failed += HashFilesFailed; + Workers.Finished += HashFilesFinished; + Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; thdHashFiles.Start(); }); @@ -307,21 +254,20 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - Workers.Failed -= HashFilesFailed; - Workers.Finished -= HashFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + Workers.Failed -= HashFilesFailed; + Workers.Finished -= HashFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - btnStop.Visible = false; - thdHashFiles = null; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + btnStop.Visible = false; + thdHashFiles = null; }); } @@ -329,26 +275,26 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - Workers.Failed -= HashFilesFailed; - Workers.Finished -= HashFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + Workers.Failed -= HashFilesFailed; + Workers.Finished -= HashFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - thdHashFiles = null; + thdHashFiles = null; lblProgress.Visible = true; prgProgress.Visible = true; - thdCheckFiles = new Thread(Workers.CheckDbForFiles); - Workers.Failed += ChkFilesFailed; - Workers.Finished += ChkFilesFinished; - Workers.UpdateProgress += UpdateProgress; + thdCheckFiles = new Thread(Workers.CheckDbForFiles); + Workers.Failed += ChkFilesFailed; + Workers.Finished += ChkFilesFinished; + Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; - Workers.AddFileForOS += AddFile; - Workers.AddOS += AddOS; + Workers.AddFileForOS += AddFile; + Workers.AddOS += AddOs; thdCheckFiles.Start(); }); } @@ -357,28 +303,24 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - prgProgress.Visible = false; - btnStop.Visible = false; - btnClose.Visible = false; - btnExit.Enabled = true; - Workers.Failed -= ChkFilesFailed; - Workers.Finished -= ChkFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + prgProgress.Visible = false; + btnStop.Visible = false; + btnClose.Visible = false; + btnExit.Enabled = true; + Workers.Failed -= ChkFilesFailed; + Workers.Finished -= ChkFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; - if(thdCheckFiles != null) - thdCheckFiles.Abort(); + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOs; + thdCheckFiles?.Abort(); thdHashFiles = null; - if(fileView != null) - fileView.Clear(); - if(osView != null) - { - tabOSes.Visible = false; - osView.Clear(); - } + fileView?.Clear(); + if(osView == null) return; + + tabOSes.Visible = false; + osView.Clear(); }); } @@ -386,99 +328,83 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - Workers.Failed -= ChkFilesFailed; - Workers.Finished -= ChkFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= ChkFilesFailed; + Workers.Finished -= ChkFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOs; - if(thdCheckFiles != null) - thdCheckFiles.Abort(); + thdCheckFiles?.Abort(); - thdHashFiles = null; - lblProgress.Visible = false; - prgProgress.Visible = false; - btnStop.Visible = false; - btnClose.Visible = true; - btnExit.Enabled = true; - btnPack.Visible = true; - btnPack.Enabled = true; - btnRemoveFile.Visible = true; + thdHashFiles = null; + lblProgress.Visible = false; + prgProgress.Visible = false; + btnStop.Visible = false; + btnClose.Visible = true; + btnExit.Enabled = true; + btnPack.Visible = true; + btnPack.Enabled = true; + btnRemoveFile.Visible = true; btnToggleCrack.Visible = true; - btnRemoveFile.Enabled = true; + btnRemoveFile.Enabled = true; btnToggleCrack.Enabled = true; - txtFormat.ReadOnly = false; - txtMachine.ReadOnly = false; - txtProduct.ReadOnly = false; - txtVersion.ReadOnly = false; - txtLanguages.ReadOnly = false; - txtDeveloper.ReadOnly = false; - txtDescription.ReadOnly = false; + txtFormat.ReadOnly = false; + txtMachine.ReadOnly = false; + txtProduct.ReadOnly = false; + txtVersion.ReadOnly = false; + txtLanguages.ReadOnly = false; + txtDeveloper.ReadOnly = false; + txtDescription.ReadOnly = false; txtArchitecture.ReadOnly = false; - chkOem.Enabled = true; - chkFiles.Enabled = true; - chkUpdate.Enabled = true; - chkUpgrade.Enabled = true; - chkNetinstall.Enabled = true; - chkSource.Enabled = true; + chkOem.Enabled = true; + chkFiles.Enabled = true; + chkUpdate.Enabled = true; + chkUpgrade.Enabled = true; + chkNetinstall.Enabled = true; + chkSource.Enabled = true; btnMetadata.Visible = true; - if(Context.metadata != null) + if(Context.Metadata != null) { - if(Context.metadata.Developer != null) - { - foreach(string developer in Context.metadata.Developer) + if(Context.Metadata.Developer != null) + foreach(string developer in Context.Metadata.Developer) { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } - if(!string.IsNullOrWhiteSpace(Context.metadata.Name)) - txtProduct.Text = Context.metadata.Name; - if(!string.IsNullOrWhiteSpace(Context.metadata.Version)) - txtVersion.Text = Context.metadata.Version; + if(!string.IsNullOrWhiteSpace(Context.Metadata.Name)) txtProduct.Text = Context.Metadata.Name; + if(!string.IsNullOrWhiteSpace(Context.Metadata.Version)) txtVersion.Text = Context.Metadata.Version; - if(Context.metadata.Languages != null) - { - foreach(LanguagesTypeLanguage language in Context.metadata.Languages) + if(Context.Metadata.Languages != null) + foreach(LanguagesTypeLanguage language in Context.Metadata.Languages) { - if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) - txtLanguages.Text += ","; - txtLanguages.Text += language; + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) txtLanguages.Text += ","; + txtLanguages.Text += language; } - } - if(Context.metadata.Architectures != null) - { - foreach(ArchitecturesTypeArchitecture architecture in Context.metadata.Architectures) + if(Context.Metadata.Architectures != null) + foreach(ArchitecturesTypeArchitecture architecture in Context.Metadata.Architectures) { - if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) - txtArchitecture.Text += ","; - txtArchitecture.Text += architecture; + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; } - } - if(Context.metadata.Systems != null) - { - foreach(string machine in Context.metadata.Systems) + if(Context.Metadata.Systems != null) + foreach(string machine in Context.Metadata.Systems) { - if(!string.IsNullOrWhiteSpace(txtMachine.Text)) - txtMachine.Text += ","; - txtMachine.Text += machine; + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) txtMachine.Text += ","; + txtMachine.Text += machine; } - } btnMetadata.BackgroundColor = Colors.Green; } - else - btnMetadata.BackgroundColor = Colors.Red; + else btnMetadata.BackgroundColor = Colors.Red; lblStatus.Visible = true; - lblStatus.Text = string.Format("{0} files ({1} already known)", fileView.Count, knownFiles); + lblStatus.Text = $"{fileView.Count} files ({knownFiles} already known)"; }); } @@ -486,14 +412,13 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - fileView.Add(new FileEntry { path = filename, hash = hash, known = known, iscrack = isCrack }); - btnPack.Enabled |= !known; - if(known) - knownFiles++; + fileView.Add(new FileEntry {Path = filename, Hash = hash, Known = known, IsCrack = isCrack}); + btnPack.Enabled |= !known; + if(known) knownFiles++; }); } - void AddOS(DBEntry os) + void AddOs(DbEntry os) { Application.Instance.Invoke(delegate { @@ -504,133 +429,130 @@ namespace osrepodbmgr.Eto protected void OnBtnExitClicked(object sender, EventArgs e) { - if(btnClose.Enabled) - OnBtnCloseClicked(sender, e); + if(btnClose.Enabled) OnBtnCloseClicked(sender, e); Close(); } protected void OnBtnCloseClicked(object sender, EventArgs e) { - btnFolder.Visible = true; - btnArchive.Visible = true; - Context.path = ""; - Context.files = null; - Context.hashes = null; - btnStop.Visible = false; - btnPack.Visible = false; - btnClose.Visible = false; - btnRemoveFile.Visible = false; + btnFolder.Visible = true; + btnArchive.Visible = true; + Context.Path = ""; + Context.Files = null; + Context.Hashes = null; + btnStop.Visible = false; + btnPack.Visible = false; + btnClose.Visible = false; + btnRemoveFile.Visible = false; btnToggleCrack.Visible = false; - if(fileView != null) - fileView.Clear(); + fileView?.Clear(); if(osView != null) { tabOSes.Visible = false; osView.Clear(); } - txtFormat.ReadOnly = true; - txtMachine.ReadOnly = true; - txtProduct.ReadOnly = true; - txtVersion.ReadOnly = true; - txtLanguages.ReadOnly = true; - txtDeveloper.ReadOnly = true; - txtDescription.ReadOnly = true; - txtArchitecture.ReadOnly = true; - chkOem.Enabled = false; - chkFiles.Enabled = false; - chkUpdate.Enabled = false; - chkUpgrade.Enabled = false; - chkNetinstall.Enabled = false; - chkSource.Enabled = false; - txtFormat.Text = ""; - txtMachine.Text = ""; - txtProduct.Text = ""; - txtVersion.Text = ""; - txtLanguages.Text = ""; - txtDeveloper.Text = ""; - txtDescription.Text = ""; - txtArchitecture.Text = ""; - chkOem.Checked = false; - chkFiles.Checked = false; - chkUpdate.Checked = false; - chkUpgrade.Checked = false; - chkNetinstall.Checked = false; - chkSource.Checked = false; - if(Context.tmpFolder != null) + txtFormat.ReadOnly = true; + txtMachine.ReadOnly = true; + txtProduct.ReadOnly = true; + txtVersion.ReadOnly = true; + txtLanguages.ReadOnly = true; + txtDeveloper.ReadOnly = true; + txtDescription.ReadOnly = true; + txtArchitecture.ReadOnly = true; + chkOem.Enabled = false; + chkFiles.Enabled = false; + chkUpdate.Enabled = false; + chkUpgrade.Enabled = false; + chkNetinstall.Enabled = false; + chkSource.Enabled = false; + txtFormat.Text = ""; + txtMachine.Text = ""; + txtProduct.Text = ""; + txtVersion.Text = ""; + txtLanguages.Text = ""; + txtDeveloper.Text = ""; + txtDescription.Text = ""; + txtArchitecture.Text = ""; + chkOem.Checked = false; + chkFiles.Checked = false; + chkUpdate.Checked = false; + chkUpgrade.Checked = false; + chkNetinstall.Checked = false; + chkSource.Checked = false; + + if(Context.TmpFolder != null) { - btnStop.Visible = false; - prgProgress.Visible = true; - lblProgress.Visible = true; - lblProgress.Text = "Removing temporary files"; - prgProgress.Indeterminate = true; - Workers.Failed += RemoveTempFilesFailed; - Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + btnStop.Visible = false; + prgProgress.Visible = true; + lblProgress.Visible = true; + lblProgress.Text = "Removing temporary files"; + prgProgress.Indeterminate = true; + Workers.Failed += RemoveTempFilesFailed; + Workers.Finished += RemoveTempFilesFinished; + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); thdRemoveTemp.Start(); } btnMetadata.Visible = false; - Context.metadata = null; - lblStatus.Visible = false; + Context.Metadata = null; + lblStatus.Visible = false; } - public void UpdateProgress(string text, string inner, long current, long maximum) + void UpdateProgress(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgress.Text = string.Format("{0}: {1}", text, inner); + lblProgress.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgress.Text = inner; else lblProgress.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgress.Indeterminate = false; - prgProgress.MinValue = 0; - prgProgress.MaxValue = (int)maximum; - prgProgress.Value = (int)current; + prgProgress.MinValue = 0; + prgProgress.MaxValue = (int)maximum; + prgProgress.Value = (int)current; } - else - prgProgress.Indeterminate = true; + else prgProgress.Indeterminate = true; }); } - public void UpdateProgress2(string text, string inner, long current, long maximum) + void UpdateProgress2(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgress2.Text = string.Format("{0}: {1}", text, inner); + lblProgress2.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgress2.Text = inner; else lblProgress2.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgress2.Indeterminate = false; - prgProgress2.MinValue = 0; - prgProgress2.MaxValue = (int)maximum; - prgProgress2.Value = (int)current; + prgProgress2.MinValue = 0; + prgProgress2.MaxValue = (int)maximum; + prgProgress2.Value = (int)current; } - else - prgProgress2.Indeterminate = true; + else prgProgress2.Indeterminate = true; }); } @@ -638,26 +560,26 @@ namespace osrepodbmgr.Eto { stopped = true; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; - Workers.Failed -= AddFilesToDbFailed; - Workers.Failed -= ChkFilesFailed; - Workers.Failed -= ExtractArchiveFailed; - Workers.Failed -= FindFilesFailed; - Workers.Failed -= HashFilesFailed; - Workers.Failed -= OpenArchiveFailed; - Workers.Failed -= PackFilesFailed; - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= AddFilesToDbFinished; - Workers.Finished -= ChkFilesFinished; - Workers.Finished -= ExtractArchiveFinished; - Workers.Finished -= FindFilesFinished; - Workers.Finished -= HashFilesFinished; - Workers.Finished -= OpenArchiveFinished; - Workers.Finished -= RemoveTempFilesFinished; + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOs; + Workers.Failed -= AddFilesToDbFailed; + Workers.Failed -= ChkFilesFailed; + Workers.Failed -= ExtractArchiveFailed; + Workers.Failed -= FindFilesFailed; + Workers.Failed -= HashFilesFailed; + Workers.Failed -= OpenArchiveFailed; + Workers.Failed -= PackFilesFailed; + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Finished -= ChkFilesFinished; + Workers.Finished -= ExtractArchiveFinished; + Workers.Finished -= FindFilesFinished; + Workers.Finished -= HashFilesFinished; + Workers.Finished -= OpenArchiveFinished; + Workers.Finished -= RemoveTempFilesFinished; Workers.FinishedWithText -= PackFilesFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; if(thdFindFiles != null) { @@ -695,200 +617,193 @@ namespace osrepodbmgr.Eto thdOpenArchive = null; } - if(Context.unarProcess != null) + if(Context.UnarProcess != null) { - Context.unarProcess.Kill(); - Context.unarProcess = null; + Context.UnarProcess.Kill(); + Context.UnarProcess = null; } - if(Context.tmpFolder != null) + if(Context.TmpFolder != null) { - btnStop.Visible = false; - lblProgress.Text = "Removing temporary files"; - prgProgress.Indeterminate = true; - Workers.Failed += RemoveTempFilesFailed; - Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + btnStop.Visible = false; + lblProgress.Text = "Removing temporary files"; + prgProgress.Indeterminate = true; + Workers.Failed += RemoveTempFilesFailed; + Workers.Finished += RemoveTempFilesFinished; + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); thdRemoveTemp.Start(); } - else - RestoreUI(); + else RestoreUi(); } - public void RestoreUI() + void RestoreUi() { - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - Workers.Failed -= FindFilesFailed; - Workers.Failed -= HashFilesFailed; - Workers.Failed -= ChkFilesFailed; - Workers.Failed -= OpenArchiveFailed; - Workers.Failed -= AddFilesToDbFailed; - Workers.Failed -= PackFilesFailed; - Workers.Failed -= ExtractArchiveFailed; - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= FindFilesFinished; - Workers.Finished -= HashFilesFinished; - Workers.Finished -= ChkFilesFinished; - Workers.Finished -= OpenArchiveFinished; - Workers.Finished -= AddFilesToDbFinished; - Workers.Finished -= ExtractArchiveFinished; - Workers.Finished -= RemoveTempFilesFinished; + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + Workers.Failed -= FindFilesFailed; + Workers.Failed -= HashFilesFailed; + Workers.Failed -= ChkFilesFailed; + Workers.Failed -= OpenArchiveFailed; + Workers.Failed -= AddFilesToDbFailed; + Workers.Failed -= PackFilesFailed; + Workers.Failed -= ExtractArchiveFailed; + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= FindFilesFinished; + Workers.Finished -= HashFilesFinished; + Workers.Finished -= ChkFilesFinished; + Workers.Finished -= OpenArchiveFinished; + Workers.Finished -= AddFilesToDbFinished; + Workers.Finished -= ExtractArchiveFinished; + Workers.Finished -= RemoveTempFilesFinished; Workers.FinishedWithText -= PackFilesFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; - btnStop.Visible = false; - if(fileView != null) - fileView.Clear(); - if(osView != null) - { - tabOSes.Visible = false; - osView.Clear(); - } + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; + btnStop.Visible = false; + fileView?.Clear(); + if(osView == null) return; + + tabOSes.Visible = false; + osView.Clear(); } - public void RemoveTempFilesFailed(string text) + void RemoveTempFilesFailed(string text) { Application.Instance.Invoke(delegate { MessageBox.Show(text, MessageBoxType.Error); - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= RemoveTempFilesFinished; - Context.path = null; - Context.tmpFolder = null; - RestoreUI(); + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= RemoveTempFilesFinished; + Context.Path = null; + Context.TmpFolder = null; + RestoreUi(); }); } - public void RemoveTempFilesFinished() + void RemoveTempFilesFinished() { Application.Instance.Invoke(delegate { - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= RemoveTempFilesFinished; - Context.path = null; - Context.tmpFolder = null; - RestoreUI(); + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= RemoveTempFilesFinished; + Context.Path = null; + Context.TmpFolder = null; + RestoreUi(); }); } void AddToDatabase() { - btnRemoveFile.Enabled = false; - btnToggleCrack.Enabled = false; - btnPack.Enabled = false; - btnClose.Enabled = false; - prgProgress.Visible = true; - txtFormat.ReadOnly = true; - txtMachine.ReadOnly = true; - txtProduct.ReadOnly = true; - txtVersion.ReadOnly = true; - txtLanguages.ReadOnly = true; - txtDeveloper.ReadOnly = true; - txtDescription.ReadOnly = true; + btnRemoveFile.Enabled = false; + btnToggleCrack.Enabled = false; + btnPack.Enabled = false; + btnClose.Enabled = false; + prgProgress.Visible = true; + txtFormat.ReadOnly = true; + txtMachine.ReadOnly = true; + txtProduct.ReadOnly = true; + txtVersion.ReadOnly = true; + txtLanguages.ReadOnly = true; + txtDeveloper.ReadOnly = true; + txtDescription.ReadOnly = true; txtArchitecture.ReadOnly = true; - chkOem.Enabled = false; - chkFiles.Enabled = false; - chkUpdate.Enabled = false; - chkUpgrade.Enabled = false; - chkNetinstall.Enabled = false; - chkSource.Enabled = false; + chkOem.Enabled = false; + chkFiles.Enabled = false; + chkUpdate.Enabled = false; + chkUpgrade.Enabled = false; + chkNetinstall.Enabled = false; + chkSource.Enabled = false; Workers.UpdateProgress += UpdateProgress; - Workers.Finished += AddFilesToDbFinished; - Workers.Failed += AddFilesToDbFailed; + Workers.Finished += AddFilesToDbFinished; + Workers.Failed += AddFilesToDbFailed; - Context.dbInfo.architecture = txtArchitecture.Text; - Context.dbInfo.description = txtDescription.Text; - Context.dbInfo.developer = txtDeveloper.Text; - Context.dbInfo.format = txtFormat.Text; - Context.dbInfo.languages = txtLanguages.Text; - Context.dbInfo.machine = txtMachine.Text; - Context.dbInfo.product = txtProduct.Text; - Context.dbInfo.version = txtVersion.Text; - Context.dbInfo.files = chkFiles.Checked.Value; - Context.dbInfo.netinstall = chkNetinstall.Checked.Value; - Context.dbInfo.oem = chkOem.Checked.Value; - Context.dbInfo.source = chkSource.Checked.Value; - Context.dbInfo.update = chkUpdate.Checked.Value; - Context.dbInfo.upgrade = chkUpgrade.Checked.Value; + Context.DbInfo.Architecture = txtArchitecture.Text; + Context.DbInfo.Description = txtDescription.Text; + Context.DbInfo.Developer = txtDeveloper.Text; + Context.DbInfo.Format = txtFormat.Text; + Context.DbInfo.Languages = txtLanguages.Text; + Context.DbInfo.Machine = txtMachine.Text; + Context.DbInfo.Product = txtProduct.Text; + Context.DbInfo.Version = txtVersion.Text; + Context.DbInfo.Files = chkFiles.Checked.Value; + Context.DbInfo.Netinstall = chkNetinstall.Checked.Value; + Context.DbInfo.Oem = chkOem.Checked.Value; + Context.DbInfo.Source = chkSource.Checked.Value; + Context.DbInfo.Update = chkUpdate.Checked.Value; + Context.DbInfo.Upgrade = chkUpgrade.Checked.Value; - if(Context.metadata != null) + if(Context.Metadata != null) { - MemoryStream ms = new MemoryStream(); + MemoryStream ms = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); - xs.Serialize(ms, Context.metadata); - Context.dbInfo.xml = ms.ToArray(); - JsonSerializer js = new JsonSerializer(); - ms = new MemoryStream(); - StreamWriter sw = new StreamWriter(ms); - js.Serialize(sw, Context.metadata, typeof(CICMMetadataType)); - Context.dbInfo.json = ms.ToArray(); + xs.Serialize(ms, Context.Metadata); + Context.DbInfo.Xml = ms.ToArray(); + JsonSerializer js = new JsonSerializer(); + ms = new MemoryStream(); + StreamWriter sw = new StreamWriter(ms); + js.Serialize(sw, Context.Metadata, typeof(CICMMetadataType)); + Context.DbInfo.Json = ms.ToArray(); } else { - Context.dbInfo.xml = null; - Context.dbInfo.json = null; + Context.DbInfo.Xml = null; + Context.DbInfo.Json = null; } thdAddFiles = new Thread(Workers.AddFilesToDb); thdAddFiles.Start(); } - public void AddFilesToDbFinished() + void AddFilesToDbFinished() { Application.Instance.Invoke(delegate { Workers.UpdateProgress -= UpdateProgress; - Workers.Finished -= AddFilesToDbFinished; - Workers.Failed -= AddFilesToDbFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Failed -= AddFilesToDbFailed; - if(thdAddFiles != null) - thdAddFiles.Abort(); + thdAddFiles?.Abort(); long counter = 0; fileView.Clear(); - foreach(KeyValuePair kvp in Context.hashes) + foreach(KeyValuePair kvp in Context.Hashes) { - UpdateProgress(null, "Updating table", counter, Context.hashes.Count); - fileView.Add(new FileEntry { path = kvp.Key, hash = kvp.Value.Sha256, known = true }); + UpdateProgress(null, "Updating table", counter, Context.Hashes.Count); + fileView.Add(new FileEntry {Path = kvp.Key, Hash = kvp.Value.Sha256, Known = true}); counter++; } // TODO: Update OS table - if(OnAddedOS != null) - OnAddedOS(Context.dbInfo); + OnAddedOS?.Invoke(Context.DbInfo); lblProgress.Visible = false; prgProgress.Visible = false; - btnClose.Enabled = true; + btnClose.Enabled = true; }); } - public void AddFilesToDbFailed(string text) + void AddFilesToDbFailed(string text) { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); Workers.UpdateProgress -= UpdateProgress; - Workers.Finished -= AddFilesToDbFinished; - Workers.Failed -= AddFilesToDbFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Failed -= AddFilesToDbFailed; - if(thdAddFiles != null) - thdAddFiles.Abort(); + thdAddFiles?.Abort(); ChkFilesFinished(); }); @@ -896,66 +811,65 @@ namespace osrepodbmgr.Eto protected void OnBtnPackClicked(object sender, EventArgs e) { - btnRemoveFile.Enabled = false; - btnToggleCrack.Enabled = false; - btnPack.Enabled = false; - btnClose.Enabled = false; - prgProgress.Visible = true; - prgProgress2.Visible = true; - lblProgress.Visible = true; - lblProgress2.Visible = true; - txtFormat.ReadOnly = true; - txtMachine.ReadOnly = true; - txtProduct.ReadOnly = true; - txtVersion.ReadOnly = true; - txtLanguages.ReadOnly = true; - txtDeveloper.ReadOnly = true; - txtDescription.ReadOnly = true; + btnRemoveFile.Enabled = false; + btnToggleCrack.Enabled = false; + btnPack.Enabled = false; + btnClose.Enabled = false; + prgProgress.Visible = true; + prgProgress2.Visible = true; + lblProgress.Visible = true; + lblProgress2.Visible = true; + txtFormat.ReadOnly = true; + txtMachine.ReadOnly = true; + txtProduct.ReadOnly = true; + txtVersion.ReadOnly = true; + txtLanguages.ReadOnly = true; + txtDeveloper.ReadOnly = true; + txtDescription.ReadOnly = true; txtArchitecture.ReadOnly = true; - chkOem.Enabled = false; - chkFiles.Enabled = false; - chkUpdate.Enabled = false; - chkUpgrade.Enabled = false; - chkNetinstall.Enabled = false; - chkSource.Enabled = false; + chkOem.Enabled = false; + chkFiles.Enabled = false; + chkUpdate.Enabled = false; + chkUpgrade.Enabled = false; + chkNetinstall.Enabled = false; + chkSource.Enabled = false; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; Workers.FinishedWithText += PackFilesFinished; - Workers.Failed += PackFilesFailed; + Workers.Failed += PackFilesFailed; - Context.dbInfo.architecture = txtArchitecture.Text; - Context.dbInfo.description = txtDescription.Text; - Context.dbInfo.developer = txtDeveloper.Text; - Context.dbInfo.format = txtFormat.Text; - Context.dbInfo.languages = txtLanguages.Text; - Context.dbInfo.machine = txtMachine.Text; - Context.dbInfo.product = txtProduct.Text; - Context.dbInfo.version = txtVersion.Text; - Context.dbInfo.files = chkFiles.Checked.Value; - Context.dbInfo.netinstall = chkNetinstall.Checked.Value; - Context.dbInfo.oem = chkOem.Checked.Value; - Context.dbInfo.source = chkSource.Checked.Value; - Context.dbInfo.update = chkUpdate.Checked.Value; - Context.dbInfo.upgrade = chkUpgrade.Checked.Value; + Context.DbInfo.Architecture = txtArchitecture.Text; + Context.DbInfo.Description = txtDescription.Text; + Context.DbInfo.Developer = txtDeveloper.Text; + Context.DbInfo.Format = txtFormat.Text; + Context.DbInfo.Languages = txtLanguages.Text; + Context.DbInfo.Machine = txtMachine.Text; + Context.DbInfo.Product = txtProduct.Text; + Context.DbInfo.Version = txtVersion.Text; + Context.DbInfo.Files = chkFiles.Checked.Value; + Context.DbInfo.Netinstall = chkNetinstall.Checked.Value; + Context.DbInfo.Oem = chkOem.Checked.Value; + Context.DbInfo.Source = chkSource.Checked.Value; + Context.DbInfo.Update = chkUpdate.Checked.Value; + Context.DbInfo.Upgrade = chkUpgrade.Checked.Value; thdPackFiles = new Thread(Workers.CompressFiles); thdPackFiles.Start(); } - public void PackFilesFinished(string text) + void PackFilesFinished(string text) { Application.Instance.Invoke(delegate { - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; Workers.FinishedWithText -= PackFilesFinished; - Workers.Failed -= PackFilesFailed; - prgProgress2.Visible = false; - lblProgress2.Visible = false; + Workers.Failed -= PackFilesFailed; + prgProgress2.Visible = false; + lblProgress2.Visible = false; - if(thdPackFiles != null) - thdPackFiles.Abort(); + thdPackFiles?.Abort(); AddToDatabase(); @@ -963,306 +877,306 @@ namespace osrepodbmgr.Eto }); } - public void PackFilesFailed(string text) + void PackFilesFailed(string text) { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; Workers.FinishedWithText -= PackFilesFinished; - Workers.Failed -= PackFilesFailed; + Workers.Failed -= PackFilesFailed; - if(thdPackFiles != null) - thdPackFiles.Abort(); + thdPackFiles?.Abort(); - btnRemoveFile.Enabled = true; - btnToggleCrack.Enabled = true; - btnPack.Enabled = true; - btnClose.Enabled = true; - prgProgress.Visible = false; - prgProgress2.Visible = false; - lblProgress.Visible = false; - lblProgress2.Visible = false; - txtFormat.ReadOnly = false; - txtMachine.ReadOnly = false; - txtProduct.ReadOnly = false; - txtVersion.ReadOnly = false; - txtLanguages.ReadOnly = false; - txtDeveloper.ReadOnly = false; - txtDescription.ReadOnly = false; + btnRemoveFile.Enabled = true; + btnToggleCrack.Enabled = true; + btnPack.Enabled = true; + btnClose.Enabled = true; + prgProgress.Visible = false; + prgProgress2.Visible = false; + lblProgress.Visible = false; + lblProgress2.Visible = false; + txtFormat.ReadOnly = false; + txtMachine.ReadOnly = false; + txtProduct.ReadOnly = false; + txtVersion.ReadOnly = false; + txtLanguages.ReadOnly = false; + txtDeveloper.ReadOnly = false; + txtDescription.ReadOnly = false; txtArchitecture.ReadOnly = false; - chkOem.Enabled = true; - chkFiles.Enabled = true; - chkUpdate.Enabled = true; - chkUpgrade.Enabled = true; - chkNetinstall.Enabled = true; - chkSource.Enabled = true; + chkOem.Enabled = true; + chkFiles.Enabled = true; + chkUpdate.Enabled = true; + chkUpgrade.Enabled = true; + chkNetinstall.Enabled = true; + chkSource.Enabled = true; }); } protected void OnBtnArchiveClicked(object sender, EventArgs e) { - if(!Context.unarUsable) + if(!Context.UnarUsable) { MessageBox.Show("Cannot open archives without a working unar installation.", MessageBoxType.Error); return; } - OpenFileDialog dlgFile = new OpenFileDialog(); - dlgFile.Title = "Open archive"; - dlgFile.MultiSelect = false; + OpenFileDialog dlgFile = new OpenFileDialog {Title = "Open archive", MultiSelect = false}; - if(dlgFile.ShowDialog(this) == DialogResult.Ok) - { - knownFiles = 0; - stopped = false; - lblProgress.Text = "Opening archive"; - lblProgress.Visible = false; - prgProgress.Visible = true; - btnExit.Enabled = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - prgProgress.Indeterminate = true; + if(dlgFile.ShowDialog(this) != DialogResult.Ok) return; - thdOpenArchive = new Thread(Workers.OpenArchive); - Context.path = dlgFile.FileName; - Workers.Failed += OpenArchiveFailed; - Workers.Finished += OpenArchiveFinished; - btnStop.Visible = true; - thdOpenArchive.Start(); - } + knownFiles = 0; + stopped = false; + lblProgress.Text = "Opening archive"; + lblProgress.Visible = false; + prgProgress.Visible = true; + btnExit.Enabled = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + prgProgress.Indeterminate = true; + + thdOpenArchive = new Thread(Workers.OpenArchive); + Context.Path = dlgFile.FileName; + Workers.Failed += OpenArchiveFailed; + Workers.Finished += OpenArchiveFinished; + btnStop.Visible = true; + thdOpenArchive.Start(); } - public void OpenArchiveFailed(string text) + void OpenArchiveFailed(string text) { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - btnStop.Visible = false; - Workers.Failed -= OpenArchiveFailed; - Workers.Finished -= OpenArchiveFinished; - thdOpenArchive = null; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + btnStop.Visible = false; + Workers.Failed -= OpenArchiveFailed; + Workers.Finished -= OpenArchiveFinished; + thdOpenArchive = null; }); } - public void OpenArchiveFinished() + void OpenArchiveFinished() { Application.Instance.Invoke(delegate { - stopped = false; - lblProgress.Text = "Extracting archive"; - prgProgress.Visible = true; - prgProgress2.Visible = true; - btnExit.Enabled = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - Workers.UpdateProgress += UpdateProgress; - lblProgress.Visible = true; - lblProgress2.Visible = true; - Workers.Failed -= OpenArchiveFailed; - Workers.Finished -= OpenArchiveFinished; - thdOpenArchive = null; - Workers.Failed += ExtractArchiveFailed; - Workers.Finished += ExtractArchiveFinished; + stopped = false; + lblProgress.Text = "Extracting archive"; + prgProgress.Visible = true; + prgProgress2.Visible = true; + btnExit.Enabled = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + Workers.UpdateProgress += UpdateProgress; + lblProgress.Visible = true; + lblProgress2.Visible = true; + Workers.Failed -= OpenArchiveFailed; + Workers.Finished -= OpenArchiveFinished; + thdOpenArchive = null; + Workers.Failed += ExtractArchiveFailed; + Workers.Finished += ExtractArchiveFinished; Workers.UpdateProgress2 += UpdateProgress2; - thdExtractArchive = new Thread(Workers.ExtractArchive); + thdExtractArchive = new Thread(Workers.ExtractArchive); thdExtractArchive.Start(); }); } - public void ExtractArchiveFailed(string text) + void ExtractArchiveFailed(string text) { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - lblProgress2.Visible = false; - prgProgress2.Visible = false; - btnExit.Enabled = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - Workers.Failed -= ExtractArchiveFailed; - Workers.Finished -= ExtractArchiveFinished; - Workers.UpdateProgress -= UpdateProgress; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + lblProgress2.Visible = false; + prgProgress2.Visible = false; + btnExit.Enabled = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + Workers.Failed -= ExtractArchiveFailed; + Workers.Finished -= ExtractArchiveFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - thdExtractArchive = null; - if(Context.tmpFolder != null) - { - btnStop.Visible = false; - lblProgress.Text = "Removing temporary files"; - prgProgress.Indeterminate = true; - Workers.Failed += RemoveTempFilesFailed; - Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); - thdRemoveTemp.Start(); - } + thdExtractArchive = null; + if(Context.TmpFolder == null) return; + + btnStop.Visible = false; + lblProgress.Text = "Removing temporary files"; + prgProgress.Indeterminate = true; + Workers.Failed += RemoveTempFilesFailed; + Workers.Finished += RemoveTempFilesFinished; + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + thdRemoveTemp.Start(); }); } - public void ExtractArchiveFinished() + void ExtractArchiveFinished() { Application.Instance.Invoke(delegate { - stopped = false; - lblProgress.Text = "Finding files"; - lblProgress.Visible = true; - lblProgress2.Visible = false; - prgProgress.Visible = true; - btnExit.Enabled = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - Workers.Failed -= ExtractArchiveFailed; - Workers.Finished -= ExtractArchiveFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; - prgProgress.Indeterminate = true; + stopped = false; + lblProgress.Text = "Finding files"; + lblProgress.Visible = true; + lblProgress2.Visible = false; + prgProgress.Visible = true; + btnExit.Enabled = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + Workers.Failed -= ExtractArchiveFailed; + Workers.Finished -= ExtractArchiveFinished; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; + prgProgress.Indeterminate = true; - thdExtractArchive = null; - thdFindFiles = new Thread(Workers.FindFiles); - Workers.Failed += FindFilesFailed; - Workers.Finished += FindFilesFinished; - btnStop.Visible = true; + thdExtractArchive = null; + thdFindFiles = new Thread(Workers.FindFiles); + Workers.Failed += FindFilesFailed; + Workers.Finished += FindFilesFinished; + btnStop.Visible = true; thdFindFiles.Start(); }); } protected void OnBtnMetadataClicked(object sender, EventArgs e) { - dlgMetadata _dlgMetadata = new dlgMetadata(); - _dlgMetadata.Metadata = Context.metadata; + dlgMetadata _dlgMetadata = new dlgMetadata {Metadata = Context.Metadata}; _dlgMetadata.FillFields(); _dlgMetadata.ShowModal(this); - if(_dlgMetadata.Modified) - { - Context.metadata = _dlgMetadata.Metadata; + if(!_dlgMetadata.Modified) return; - if(string.IsNullOrWhiteSpace(txtDeveloper.Text)) - { - if(Context.metadata.Developer != null) + Context.Metadata = _dlgMetadata.Metadata; + + if(string.IsNullOrWhiteSpace(txtDeveloper.Text)) + if(Context.Metadata.Developer != null) + foreach(string developer in Context.Metadata.Developer) { - foreach(string developer in Context.metadata.Developer) - { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; - } + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } - if(string.IsNullOrWhiteSpace(txtProduct.Text)) - { - if(!string.IsNullOrWhiteSpace(Context.metadata.Name)) - txtProduct.Text = Context.metadata.Name; - } + if(string.IsNullOrWhiteSpace(txtProduct.Text)) + if(!string.IsNullOrWhiteSpace(Context.Metadata.Name)) + txtProduct.Text = Context.Metadata.Name; - if(string.IsNullOrWhiteSpace(txtVersion.Text)) - { - if(!string.IsNullOrWhiteSpace(Context.metadata.Version)) - txtVersion.Text = Context.metadata.Version; - } + if(string.IsNullOrWhiteSpace(txtVersion.Text)) + if(!string.IsNullOrWhiteSpace(Context.Metadata.Version)) + txtVersion.Text = Context.Metadata.Version; - if(string.IsNullOrWhiteSpace(txtLanguages.Text)) - { - if(Context.metadata.Languages != null) + if(string.IsNullOrWhiteSpace(txtLanguages.Text)) + if(Context.Metadata.Languages != null) + foreach(LanguagesTypeLanguage language in Context.Metadata.Languages) { - foreach(LanguagesTypeLanguage language in Context.metadata.Languages) - { - if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) - txtLanguages.Text += ","; - txtLanguages.Text += language; - } + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) txtLanguages.Text += ","; + txtLanguages.Text += language; } - } - if(string.IsNullOrWhiteSpace(txtArchitecture.Text)) - { - if(Context.metadata.Architectures != null) + if(string.IsNullOrWhiteSpace(txtArchitecture.Text)) + if(Context.Metadata.Architectures != null) + foreach(ArchitecturesTypeArchitecture architecture in Context.Metadata.Architectures) { - foreach(ArchitecturesTypeArchitecture architecture in Context.metadata.Architectures) - { - if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) - txtArchitecture.Text += ","; - txtArchitecture.Text += architecture; - } + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; } - } - if(string.IsNullOrWhiteSpace(txtMachine.Text)) - { - if(Context.metadata.Systems != null) + if(string.IsNullOrWhiteSpace(txtMachine.Text)) + if(Context.Metadata.Systems != null) + foreach(string machine in Context.Metadata.Systems) { - foreach(string machine in Context.metadata.Systems) - { - if(!string.IsNullOrWhiteSpace(txtMachine.Text)) - txtMachine.Text += ","; - txtMachine.Text += machine; - } + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) txtMachine.Text += ","; + txtMachine.Text += machine; } - } - btnMetadata.BackgroundColor = Colors.Green; - } + btnMetadata.BackgroundColor = Colors.Green; } protected void OnBtnRemoveFileClicked(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) - { - string name = ((FileEntry)treeFiles.SelectedItem).path; - string filesPath; + if(treeFiles.SelectedItem == null) return; - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + string name = ((FileEntry)treeFiles.SelectedItem).Path; + string filesPath; - Context.hashes.Remove(name); - Context.files.Remove(System.IO.Path.Combine(filesPath, name)); - fileView.Remove((FileEntry)treeFiles.SelectedItem); - } + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; + + Context.Hashes.Remove(name); + Context.Files.Remove(Path.Combine(filesPath, name)); + fileView.Remove((FileEntry)treeFiles.SelectedItem); } protected void OnBtnToggleCrackClicked(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) - { - string name = ((FileEntry)treeFiles.SelectedItem).path; - bool known = ((FileEntry)treeFiles.SelectedItem).known; + if(treeFiles.SelectedItem == null) return; - DBOSFile osfile; + string name = ((FileEntry)treeFiles.SelectedItem).Path; + bool known = ((FileEntry)treeFiles.SelectedItem).Known; - if(Context.hashes.TryGetValue(name, out osfile)) - { - osfile.Crack = !osfile.Crack; - Context.hashes.Remove(name); - Context.hashes.Add(name, osfile); - ((FileEntry)treeFiles.SelectedItem).iscrack = osfile.Crack; - fileView.Remove((FileEntry)treeFiles.SelectedItem); - fileView.Add(new FileEntry { path = name, hash = osfile.Sha256, known = known, iscrack = osfile.Crack }); - } - } + if(!Context.Hashes.TryGetValue(name, out DbOsFile osfile)) return; + + osfile.Crack = !osfile.Crack; + Context.Hashes.Remove(name); + Context.Hashes.Add(name, osfile); + ((FileEntry)treeFiles.SelectedItem).IsCrack = osfile.Crack; + fileView.Remove((FileEntry)treeFiles.SelectedItem); + fileView.Add(new FileEntry {Path = name, Hash = osfile.Sha256, Known = known, IsCrack = osfile.Crack}); } void treeFilesSelectionChanged(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) - { - if(((FileEntry)treeFiles.SelectedItem).iscrack) - btnToggleCrack.Text = "Mark as not crack"; - else - btnToggleCrack.Text = "Mark as crack"; - } + if(treeFiles.SelectedItem == null) return; + + btnToggleCrack.Text = ((FileEntry)treeFiles.SelectedItem).IsCrack ? "Mark as not crack" : "Mark as crack"; } + + class FileEntry + { + public string Path { get; set; } + public string Hash { get; set; } + public bool Known { get; set; } + public bool IsCrack { get; set; } + } + + #region XAML UI elements + #pragma warning disable 0649 + TextBox txtDeveloper; + TextBox txtProduct; + TextBox txtVersion; + TextBox txtLanguages; + TextBox txtArchitecture; + TextBox txtMachine; + TextBox txtFormat; + TextBox txtDescription; + CheckBox chkOem; + CheckBox chkUpdate; + CheckBox chkUpgrade; + CheckBox chkFiles; + CheckBox chkSource; + CheckBox chkNetinstall; + GridView treeFiles; + TabPage tabOSes; + GridView treeOSes; + Label lblProgress; + ProgressBar prgProgress; + Label lblProgress2; + ProgressBar prgProgress2; + Button btnRemoveFile; + Button btnMetadata; + Button btnStop; + Button btnFolder; + Button btnArchive; + Button btnPack; + Button btnClose; + Button btnExit; + Button btnToggleCrack; + Label lblStatus; + #pragma warning restore 0649 + #endregion XAML UI elements } } \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgBlockMedia.xeto.cs b/osrepodbmgr.Eto/dlgBlockMedia.xeto.cs index e913ae3..9fdc6eb 100644 --- a/osrepodbmgr.Eto/dlgBlockMedia.xeto.cs +++ b/osrepodbmgr.Eto/dlgBlockMedia.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -37,180 +38,40 @@ namespace osrepodbmgr.Eto { public class dlgBlockMedia : Dialog { - public BlockMediaType Metadata; - public bool Modified; - - #region XAML UI elements -#pragma warning disable 0649 - TextBox txtImage; - TextBox txtFormat; - TextBox txtOffset; - TextBox txtSize; - TextBox txtManufacturer; - TextBox txtModel; - TextBox txtSerial; - TextBox txtFirmware; - TextBox txtInterface; - TextBox txtCopyProtection; - TextBox txtMediaType; - TextBox txtMediaSubtype; - CheckBox chkSequence; - Label lblMediaTitle; - TextBox txtMediaTitle; - Label lblSequence; - NumericUpDown spSequence; - Label lblTotalMedia; - NumericUpDown spTotalMedia; - Label lblSide; - NumericUpDown spSide; - Label lblLayer; - NumericUpDown spLayer; - TextBox txtBlocks; - NumericUpDown spPhysicalBlockSize; - NumericUpDown spLogicalBlockSize; - NumericUpDown spCylinders; - NumericUpDown spHeads; - NumericUpDown spSectors; - CheckBox chkDimensions; - CheckBox chkRound; - StackLayout stkDiameter; - NumericUpDown spDiameter; - StackLayout stkHeight; - NumericUpDown spHeight; - StackLayout stkWidth; - NumericUpDown spWidth; - StackLayout stkThickness; - NumericUpDown spThickness; - CheckBox chkATA; - GridView treeATA; - CheckBox chkPCI; - Label lblPCIVendor; - TextBox txtPCIVendor; - Label lblPCIProduct; - TextBox txtPCIProduct; - GroupBox frmPCIConfiguration; - GridView treeConfiguration; - GroupBox frmOptionROM; - GridView treeOptionROM; - CheckBox chkPCMCIA; - CheckBox chkCIS; - GridView treeCIS; - Label lblPCMCIAManufacturer; - Label lblMfgCode; - Label lblPCMCIAProductName; - Label lblCardCode; - Label lblCompliance; - TextBox txtPCMCIAManufacturer; - TextBox txtMfgCode; - TextBox txtPCMCIAProductName; - TextBox txtCardCode; - TextBox txtCompliance; - GroupBox lblAdditionalInformation; - GridView treeAdditionalInformation; - CheckBox chkSecureDigital; - GridView treeCID; - CheckBox chkCSD; - GridView treeCSD; - CheckBox chkECSD; - GridView treeECSD; - CheckBox chkSCSI; - GroupBox frmInquiry; - GridView treeInquiry; - GroupBox frmModeSense; - GridView treeModeSense; - GroupBox frmModeSense10; - GridView treeModeSense10; - GroupBox frmLogSense; - GridView treeLogSense; - GroupBox frmEVPDs; - GridView treeEVPDs; - CheckBox chkUSB; - TextBox txtUSBVendor; - TextBox txtUSBProduct; - GridView treeDescriptors; - CheckBox chkMAM; - GridView treeMAM; - CheckBox chkTracks; - GridView treeTracks; - GridView treePartitions; - Button btnCancelPartition; - Button btnRemovePartition; - Button btnEditPartition; - Button btnApplyPartition; - Button btnAddPartition; - NumericUpDown spPartitionSequence; - TextBox txtPartitionStart; - TextBox txtPartitionEnd; - TextBox txtPartitionType; - TextBox txtPartitionName; - TextBox txtPartitionDescription; - GroupBox frmFilesystems; - GridView treeFilesystems; - CheckBox chkDumpHardware; - GridView treeDumpHardware; - Button btnCancelHardware; - Button btnRemoveHardware; - Button btnEditHardware; - Button btnApplyHardware; - Button btnAddHardware; - GroupBox frmHardware; - TextBox txtHWManufacturer; - TextBox txtHWModel; - TextBox txtHWRevision; - TextBox txtHWFirmware; - TextBox txtHWSerial; - GridView treeExtents; - NumericUpDown spExtentStart; - NumericUpDown spExtentEnd; - TextBox txtDumpName; - TextBox txtDumpVersion; - TextBox txtDumpOS; - Label lblCID; - Label lblUSBVendor; - Label lblUSBProduct; - GroupBox frmDescriptors; - StackLayout stkPartitionFields1; - StackLayout stkPartitionFields2; -#pragma warning restore 0649 - #endregion XAML UI elements - - PartitionType partitionIter; - FileSystemType filesystemIter; + // Non-editable fields + ChecksumType[] checksums; + ChecksumType[] contentChks; DumpHardwareType dumpHwIter; + bool editingDumpHw; - ObservableCollection lstAta; - ObservableCollection lstPCIConfiguration; - ObservableCollection lstPCIOptionROM; - ObservableCollection lstPCMCIACIS; - ObservableCollection lstCID; - ObservableCollection lstCSD; - ObservableCollection lstECSD; - ObservableCollection lstInquiry; - ObservableCollection lstModeSense; - ObservableCollection lstModeSense10; - ObservableCollection lstLogSense; - ObservableCollection lstEVPDs; - ObservableCollection lstUSBDescriptors; - ObservableCollection lstMAM; - ObservableCollection lstTracks; - ObservableCollection lstPartitions; - ObservableCollection lstDumpHw; + bool editingPartition; + FileSystemType filesystemIter; ObservableCollection lstAdditionalInformation; - class StringEntry - { - public string str; - } + ObservableCollection lstAta; + ObservableCollection lstCID; + ObservableCollection lstCSD; + ObservableCollection lstDumpHw; + ObservableCollection lstECSD; + ObservableCollection lstEVPDs; + ObservableCollection lstInquiry; + ObservableCollection lstLogSense; + ObservableCollection lstMAM; + ObservableCollection lstModeSense; + ObservableCollection lstModeSense10; + ObservableCollection lstPartitions; + ObservableCollection lstPCIConfiguration; + ObservableCollection lstPCIOptionROM; + ObservableCollection lstPCMCIACIS; + ObservableCollection lstTracks; + ObservableCollection lstUSBDescriptors; + public BlockMediaType Metadata; + public bool Modified; - bool editingPartition; - bool editingDumpHw; - - // Non-editable fields - ChecksumType[] checksums; - BlockSizeType[] variableBlockSize; + PartitionType partitionIter; + ScansType scans; TapePartitionType[] tapeInformation; - ScansType scans; - ChecksumType[] contentChks; + BlockSizeType[] variableBlockSize; public dlgBlockMedia() { @@ -223,32 +84,41 @@ namespace osrepodbmgr.Eto treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sequence).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Sequence).Convert(v => v.ToString()) + }, HeaderText = "Sequence" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) + }, HeaderText = "Start" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) + }, HeaderText = "End" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Type) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Type)}, HeaderText = "Type" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Name) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Name)}, HeaderText = "Name" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Description) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Description)}, HeaderText = "Description" }); @@ -260,12 +130,12 @@ namespace osrepodbmgr.Eto #region Set filesystems table treeFilesystems.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Type) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Type)}, HeaderText = "Type" }); treeFilesystems.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.VolumeName) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.VolumeName)}, HeaderText = "Name" }); @@ -277,42 +147,53 @@ namespace osrepodbmgr.Eto treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Manufacturer) }, - HeaderText = "Manufacturer" + DataCell = + new TextBoxCell {Binding = Binding.Property(r => r.Manufacturer)}, + HeaderText = "Manufacturer" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Model) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Model)}, HeaderText = "Model" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Revision) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Revision)}, HeaderText = "Revision" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Firmware) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Firmware)}, HeaderText = "Firmware" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Serial) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Serial)}, HeaderText = "Serial" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.Name) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software).Convert(v => v?.Name) + }, HeaderText = "Software" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.Version) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software).Convert(v => v?.Version) + }, HeaderText = "Version" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.OperatingSystem) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software) + .Convert(v => v?.OperatingSystem) + }, HeaderText = "Operating system" }); @@ -322,12 +203,18 @@ namespace osrepodbmgr.Eto treeExtents.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Start).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Start).Convert(v => v.ToString()) + }, HeaderText = "Start" }); treeExtents.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.End).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.End).Convert(v => v.ToString()) + }, HeaderText = "End" }); #endregion Set dump hardware table @@ -336,12 +223,15 @@ namespace osrepodbmgr.Eto lstAta = new ObservableCollection(); treeATA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeATA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeATA.DataStore = lstAta; @@ -351,12 +241,15 @@ namespace osrepodbmgr.Eto lstPCIConfiguration = new ObservableCollection(); treeConfiguration.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeConfiguration.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeConfiguration.DataStore = lstPCIConfiguration; @@ -366,12 +259,15 @@ namespace osrepodbmgr.Eto lstPCMCIACIS = new ObservableCollection(); treeCIS.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeCIS.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeCIS.DataStore = lstPCMCIACIS; @@ -381,12 +277,15 @@ namespace osrepodbmgr.Eto lstCID = new ObservableCollection(); treeCID.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeCID.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeCID.DataStore = lstCID; @@ -396,12 +295,15 @@ namespace osrepodbmgr.Eto lstCSD = new ObservableCollection(); treeCSD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeCSD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeCSD.DataStore = lstCSD; @@ -411,12 +313,15 @@ namespace osrepodbmgr.Eto lstECSD = new ObservableCollection(); treeECSD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeECSD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeECSD.DataStore = lstECSD; @@ -426,12 +331,15 @@ namespace osrepodbmgr.Eto lstInquiry = new ObservableCollection(); treeInquiry.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeInquiry.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeInquiry.DataStore = lstInquiry; @@ -441,12 +349,15 @@ namespace osrepodbmgr.Eto lstModeSense = new ObservableCollection(); treeModeSense.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeModeSense.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeModeSense.DataStore = lstModeSense; @@ -456,12 +367,15 @@ namespace osrepodbmgr.Eto lstModeSense10 = new ObservableCollection(); treeModeSense10.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeModeSense10.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeModeSense10.DataStore = lstModeSense10; @@ -471,12 +385,15 @@ namespace osrepodbmgr.Eto lstLogSense = new ObservableCollection(); treeLogSense.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeLogSense.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeLogSense.DataStore = lstLogSense; @@ -487,17 +404,23 @@ namespace osrepodbmgr.Eto treeEVPDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.page).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.page).Convert(v => v.ToString()) + }, HeaderText = "Page" }); treeEVPDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeEVPDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); @@ -510,12 +433,15 @@ namespace osrepodbmgr.Eto lstUSBDescriptors = new ObservableCollection(); treeDescriptors.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeDescriptors.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeDescriptors.DataStore = lstUSBDescriptors; @@ -525,12 +451,15 @@ namespace osrepodbmgr.Eto lstMAM = new ObservableCollection(); treeMAM.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeMAM.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeMAM.DataStore = lstMAM; @@ -541,17 +470,23 @@ namespace osrepodbmgr.Eto treeOptionROM.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image.Value)}, HeaderText = "File" }); treeOptionROM.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) + }, HeaderText = "Offset" }); treeOptionROM.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); @@ -565,57 +500,81 @@ namespace osrepodbmgr.Eto treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image.Value)}, HeaderText = "File" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) + }, HeaderText = "Offset" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.format) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image.format)}, HeaderText = "Image format" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Head).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Head).Convert(v => v.ToString()) + }, HeaderText = "Head" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Cylinder).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Cylinder).Convert(v => v.ToString()) + }, HeaderText = "Cylinder" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) + }, HeaderText = "Start" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) + }, HeaderText = "End" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sectors).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Sectors).Convert(v => v.ToString()) + }, HeaderText = "Sectors" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.BytesPerSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.BytesPerSector).Convert(v => v.ToString()) + }, HeaderText = "Bytes per sector" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Format) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Format)}, HeaderText = "Track format" }); @@ -627,102 +586,97 @@ namespace osrepodbmgr.Eto lstAdditionalInformation = new ObservableCollection(); treeAdditionalInformation.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Information" }); - treeAdditionalInformation.DataStore = lstAdditionalInformation; + treeAdditionalInformation.DataStore = lstAdditionalInformation; treeAdditionalInformation.AllowMultipleSelection = false; } public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; - if(Metadata.Image.offsetSpecified) - txtOffset.Text = Metadata.Image.offset.ToString(); - txtSize.Text = Metadata.Size.ToString(); - checksums = Metadata.Checksums; - contentChks = Metadata.ContentChecksums; + txtImage.Text = Metadata.Image.Value; + txtFormat.Text = Metadata.Image.format; + if(Metadata.Image.offsetSpecified) txtOffset.Text = Metadata.Image.offset.ToString(); + txtSize.Text = Metadata.Size.ToString(); + checksums = Metadata.Checksums; + contentChks = Metadata.ContentChecksums; if(Metadata.Sequence != null) { - lblMediaTitle.Visible = true; - txtMediaTitle.Visible = true; - lblSequence.Visible = true; - spSequence.Visible = true; - lblTotalMedia.Visible = true; - spTotalMedia.Visible = true; - lblSide.Visible = true; - spSide.Visible = true; - lblLayer.Visible = true; - spLayer.Visible = true; - chkSequence.Checked = true; - txtMediaTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; - if(Metadata.Sequence.SideSpecified) - spSide.Value = Metadata.Sequence.Side; - if(Metadata.Sequence.LayerSpecified) - spLayer.Value = Metadata.Sequence.Layer; + lblMediaTitle.Visible = true; + txtMediaTitle.Visible = true; + lblSequence.Visible = true; + spSequence.Visible = true; + lblTotalMedia.Visible = true; + spTotalMedia.Visible = true; + lblSide.Visible = true; + spSide.Visible = true; + lblLayer.Visible = true; + spLayer.Visible = true; + chkSequence.Checked = true; + txtMediaTitle.Text = Metadata.Sequence.MediaTitle; + spSequence.Value = Metadata.Sequence.MediaSequence; + spTotalMedia.Value = Metadata.Sequence.TotalMedia; + if(Metadata.Sequence.SideSpecified) spSide.Value = Metadata.Sequence.Side; + if(Metadata.Sequence.LayerSpecified) spLayer.Value = Metadata.Sequence.Layer; } - if(Metadata.Manufacturer != null) - txtManufacturer.Text = Metadata.Manufacturer; - if(Metadata.Model != null) - txtModel.Text = Metadata.Model; - if(Metadata.Serial != null) - txtSerial.Text = Metadata.Serial; - if(Metadata.Firmware != null) - txtFirmware.Text = Metadata.Firmware; - if(Metadata.Interface != null) - txtInterface.Text = Metadata.Interface; - spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; - spLogicalBlockSize.Value = Metadata.LogicalBlockSize; - txtBlocks.Text = Metadata.LogicalBlocks.ToString(); - variableBlockSize = Metadata.VariableBlockSize; - tapeInformation = Metadata.TapeInformation; - scans = Metadata.Scans; - if(Metadata.ATA != null && Metadata.ATA.Identify != null) + + if(Metadata.Manufacturer != null) txtManufacturer.Text = Metadata.Manufacturer; + if(Metadata.Model != null) txtModel.Text = Metadata.Model; + if(Metadata.Serial != null) txtSerial.Text = Metadata.Serial; + if(Metadata.Firmware != null) txtFirmware.Text = Metadata.Firmware; + if(Metadata.Interface != null) txtInterface.Text = Metadata.Interface; + spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; + spLogicalBlockSize.Value = Metadata.LogicalBlockSize; + txtBlocks.Text = Metadata.LogicalBlocks.ToString(); + variableBlockSize = Metadata.VariableBlockSize; + tapeInformation = Metadata.TapeInformation; + scans = Metadata.Scans; + if(Metadata.ATA?.Identify != null) { - chkATA.Checked = true; + chkATA.Checked = true; treeATA.Visible = true; lstAta.Add(Metadata.ATA.Identify); } + if(Metadata.PCI != null) { - chkPCI.Checked = true; - lblPCIVendor.Visible = true; - txtPCIVendor.Visible = true; + chkPCI.Checked = true; + lblPCIVendor.Visible = true; + txtPCIVendor.Visible = true; lblPCIProduct.Visible = true; txtPCIProduct.Visible = true; - txtPCIVendor.Text = string.Format("0x{0:X4}", Metadata.PCI.VendorID); - txtPCIProduct.Text = string.Format("0x{0:X4}", Metadata.PCI.DeviceID); + txtPCIVendor.Text = $"0x{Metadata.PCI.VendorID:X4}"; + txtPCIProduct.Text = $"0x{Metadata.PCI.DeviceID:X4}"; if(Metadata.PCI.Configuration != null) { frmPCIConfiguration.Visible = true; lstPCIConfiguration.Add(Metadata.PCI.Configuration); } + if(Metadata.PCI.ExpansionROM != null) { frmOptionROM.Visible = true; lstPCIOptionROM.Add(Metadata.PCI.ExpansionROM); } } + if(Metadata.PCMCIA != null) { - chkPCMCIA.Checked = true; - chkCIS.Visible = true; + chkPCMCIA.Checked = true; + chkCIS.Visible = true; lblPCMCIAManufacturer.Visible = true; txtPCMCIAManufacturer.Visible = true; - lblMfgCode.Visible = true; - txtMfgCode.Visible = true; - lblPCMCIAProductName.Visible = true; - txtPCMCIAProductName.Visible = true; - lblCardCode.Visible = true; - txtCardCode.Visible = true; - lblCompliance.Visible = true; - txtCompliance.Visible = true; + lblMfgCode.Visible = true; + txtMfgCode.Visible = true; + lblPCMCIAProductName.Visible = true; + txtPCMCIAProductName.Visible = true; + lblCardCode.Visible = true; + txtCardCode.Visible = true; + lblCompliance.Visible = true; + txtCompliance.Visible = true; if(Metadata.PCMCIA.CIS != null) { @@ -730,51 +684,53 @@ namespace osrepodbmgr.Eto lstPCMCIACIS.Add(Metadata.PCMCIA.CIS); } - if(Metadata.PCMCIA.Compliance != null) - txtCompliance.Text = Metadata.PCMCIA.Compliance; + if(Metadata.PCMCIA.Compliance != null) txtCompliance.Text = Metadata.PCMCIA.Compliance; if(Metadata.PCMCIA.ManufacturerCodeSpecified) - txtMfgCode.Text = string.Format("0x{0:X4}", Metadata.PCMCIA.ManufacturerCode); + txtMfgCode.Text = + $"0x{Metadata.PCMCIA.ManufacturerCode:X4}"; if(Metadata.PCMCIA.CardCodeSpecified) - txtCardCode.Text = string.Format("0x{0:X4}", Metadata.PCMCIA.CardCode); + txtCardCode.Text = $"0x{Metadata.PCMCIA.CardCode:X4}"; if(Metadata.PCMCIA.Manufacturer != null) txtPCMCIAManufacturer.Text = Metadata.PCMCIA.Manufacturer; if(Metadata.PCMCIA.ProductName != null) txtPCMCIAProductName.Text = Metadata.PCMCIA.ProductName; if(Metadata.PCMCIA.AdditionalInformation != null) { - lblAdditionalInformation.Visible = true; + lblAdditionalInformation.Visible = true; treeAdditionalInformation.Visible = true; foreach(string addinfo in Metadata.PCMCIA.AdditionalInformation) - lstAdditionalInformation.Add(new StringEntry { str = addinfo }); + lstAdditionalInformation.Add(new StringEntry {str = addinfo}); } } - if(Metadata.SecureDigital != null && Metadata.SecureDigital.CID != null) + + if(Metadata.SecureDigital?.CID != null) { chkSecureDigital.Checked = true; - chkCSD.Visible = true; - chkECSD.Visible = true; - lblCID.Visible = true; - treeCID.Visible = true; + chkCSD.Visible = true; + chkECSD.Visible = true; + lblCID.Visible = true; + treeCID.Visible = true; lstCID.Add(Metadata.SecureDigital.CID); if(Metadata.SecureDigital.CSD != null) { - chkCSD.Checked = true; + chkCSD.Checked = true; treeCSD.Visible = true; lstCSD.Add(Metadata.SecureDigital.CSD); } if(Metadata.MultiMediaCard.ExtendedCSD != null) { - chkECSD.Checked = true; + chkECSD.Checked = true; treeECSD.Visible = true; lstECSD.Add(Metadata.MultiMediaCard.ExtendedCSD); } } - if(Metadata.SCSI != null && Metadata.SCSI.Inquiry != null) + + if(Metadata.SCSI?.Inquiry != null) { - chkSCSI.Checked = true; + chkSCSI.Checked = true; frmInquiry.Visible = true; lstInquiry.Add(Metadata.SCSI.Inquiry); @@ -783,212 +739,212 @@ namespace osrepodbmgr.Eto frmModeSense.Visible = true; lstModeSense.Add(Metadata.SCSI.ModeSense); } + if(Metadata.SCSI.ModeSense10 != null) { frmModeSense10.Visible = true; lstModeSense10.Add(Metadata.SCSI.ModeSense10); } + if(Metadata.SCSI.LogSense != null) { frmLogSense.Visible = true; lstLogSense.Add(Metadata.SCSI.LogSense); } + if(Metadata.SCSI.EVPD != null) { - frmEVPDs.Visible = true; - lstEVPDs = new ObservableCollection(Metadata.SCSI.EVPD); + frmEVPDs.Visible = true; + lstEVPDs = new ObservableCollection(Metadata.SCSI.EVPD); treeEVPDs.DataStore = lstEVPDs; // TODO: Really needed? } } + if(Metadata.USB != null) { - chkUSB.Checked = true; - lblUSBVendor.Visible = true; - txtUSBVendor.Visible = true; + chkUSB.Checked = true; + lblUSBVendor.Visible = true; + txtUSBVendor.Visible = true; lblUSBProduct.Visible = true; txtUSBProduct.Visible = true; - txtUSBVendor.Text = string.Format("0x{0:X4}", Metadata.USB.VendorID); - txtUSBProduct.Text = string.Format("0x{0:X4}", Metadata.USB.ProductID); + txtUSBVendor.Text = $"0x{Metadata.USB.VendorID:X4}"; + txtUSBProduct.Text = $"0x{Metadata.USB.ProductID:X4}"; if(Metadata.USB.Descriptors != null) { frmDescriptors.Visible = true; lstUSBDescriptors.Add(Metadata.USB.Descriptors); } } + if(Metadata.MAM != null) { - chkMAM.Checked = true; + chkMAM.Checked = true; treeMAM.Visible = true; lstMAM.Add(Metadata.MAM); } - if(Metadata.HeadsSpecified) - spHeads.Value = Metadata.Heads; - if(Metadata.CylindersSpecified) - spCylinders.Value = Metadata.Cylinders; - if(Metadata.SectorsPerTrackSpecified) - spSectors.Value = Metadata.SectorsPerTrack; + + if(Metadata.HeadsSpecified) spHeads.Value = Metadata.Heads; + if(Metadata.CylindersSpecified) spCylinders.Value = Metadata.Cylinders; + if(Metadata.SectorsPerTrackSpecified) spSectors.Value = Metadata.SectorsPerTrack; if(Metadata.Track != null) { - chkTracks.Checked = true; - treeTracks.Visible = true; - lstTracks = new ObservableCollection(Metadata.Track); + chkTracks.Checked = true; + treeTracks.Visible = true; + lstTracks = new ObservableCollection(Metadata.Track); treeTracks.DataStore = lstTracks; // TODO: Really needed? } - if(Metadata.CopyProtection != null) - txtCopyProtection.Text = Metadata.CopyProtection; - if(Metadata.Dimensions != null) + + if(Metadata.CopyProtection != null) txtCopyProtection.Text = Metadata.CopyProtection; + if(Metadata.Dimensions != null) { chkDimensions.Checked = true; if(Metadata.Dimensions.DiameterSpecified) { - chkRound.Checked = true; + chkRound.Checked = true; stkDiameter.Visible = true; - stkHeight.Visible = false; - stkWidth.Visible = false; - spDiameter.Value = Metadata.Dimensions.Diameter; + stkHeight.Visible = false; + stkWidth.Visible = false; + spDiameter.Value = Metadata.Dimensions.Diameter; } else { stkDiameter.Visible = false; - stkHeight.Visible = true; - stkWidth.Visible = true; - spHeight.Value = Metadata.Dimensions.Height; - spWidth.Value = Metadata.Dimensions.Width; + stkHeight.Visible = true; + stkWidth.Visible = true; + spHeight.Value = Metadata.Dimensions.Height; + spWidth.Value = Metadata.Dimensions.Width; } + stkThickness.Visible = true; - spThickness.Value = Metadata.Dimensions.Thickness; + spThickness.Value = Metadata.Dimensions.Thickness; } + if(Metadata.FileSystemInformation != null) { - lstPartitions = new ObservableCollection(Metadata.FileSystemInformation); + lstPartitions = new ObservableCollection(Metadata.FileSystemInformation); treePartitions.DataStore = lstPartitions; // TODO: Really needed? } + if(Metadata.DumpHardwareArray != null) { - chkDumpHardware.Checked = true; - treeDumpHardware.Visible = true; - btnAddHardware.Visible = true; - btnEditHardware.Visible = true; + chkDumpHardware.Checked = true; + treeDumpHardware.Visible = true; + btnAddHardware.Visible = true; + btnEditHardware.Visible = true; btnRemoveHardware.Visible = true; - lstDumpHw = new ObservableCollection(Metadata.DumpHardwareArray); + lstDumpHw = new ObservableCollection(Metadata.DumpHardwareArray); treeDumpHardware.DataStore = lstDumpHw; // TODO: Really needed? } - if(Metadata.DiskType != null) - txtMediaType.Text = Metadata.DiskType; - if(Metadata.DiskSubType != null) - txtMediaSubtype.Text = Metadata.DiskSubType; + + if(Metadata.DiskType != null) txtMediaType.Text = Metadata.DiskType; + if(Metadata.DiskSubType != null) txtMediaSubtype.Text = Metadata.DiskSubType; } protected void OnChkSequenceToggled(object sender, EventArgs e) { lblMediaTitle.Visible = chkSequence.Checked.Value; txtMediaTitle.Visible = chkSequence.Checked.Value; - lblSequence.Visible = chkSequence.Checked.Value; - spSequence.Visible = chkSequence.Checked.Value; + lblSequence.Visible = chkSequence.Checked.Value; + spSequence.Visible = chkSequence.Checked.Value; lblTotalMedia.Visible = chkSequence.Checked.Value; - spTotalMedia.Visible = chkSequence.Checked.Value; - lblSide.Visible = chkSequence.Checked.Value; - spSide.Visible = chkSequence.Checked.Value; - lblLayer.Visible = chkSequence.Checked.Value; - spLayer.Visible = chkSequence.Checked.Value; + spTotalMedia.Visible = chkSequence.Checked.Value; + lblSide.Visible = chkSequence.Checked.Value; + spSide.Visible = chkSequence.Checked.Value; + lblLayer.Visible = chkSequence.Checked.Value; + spLayer.Visible = chkSequence.Checked.Value; } protected void OnChkDimensionsToggled(object sender, EventArgs e) { - chkRound.Visible = chkDimensions.Checked.Value; + chkRound.Visible = chkDimensions.Checked.Value; stkThickness.Visible = chkDimensions.Checked.Value; - if(chkDimensions.Checked.Value) - OnChkRoundToggled(sender, e); + if(chkDimensions.Checked.Value) OnChkRoundToggled(sender, e); else { stkDiameter.Visible = false; - stkHeight.Visible = false; - stkWidth.Visible = false; + stkHeight.Visible = false; + stkWidth.Visible = false; } } protected void OnChkRoundToggled(object sender, EventArgs e) { stkDiameter.Visible = chkRound.Checked.Value; - stkHeight.Visible = !chkRound.Checked.Value; - stkWidth.Visible = !chkRound.Checked.Value; + stkHeight.Visible = !chkRound.Checked.Value; + stkWidth.Visible = !chkRound.Checked.Value; } protected void OnChkPCMCIAToggled(object sender, EventArgs e) { - chkCIS.Visible = chkPCMCIA.Checked.Value; - treeCIS.Visible = chkPCMCIA.Checked.Value; - lblPCMCIAManufacturer.Visible = chkPCMCIA.Checked.Value; - txtPCMCIAManufacturer.Visible = chkPCMCIA.Checked.Value; - lblMfgCode.Visible = chkPCMCIA.Checked.Value; - txtMfgCode.Visible = chkPCMCIA.Checked.Value; - lblPCMCIAProductName.Visible = chkPCMCIA.Checked.Value; - txtPCMCIAProductName.Visible = chkPCMCIA.Checked.Value; - lblCardCode.Visible = chkPCMCIA.Checked.Value; - txtCardCode.Visible = chkPCMCIA.Checked.Value; - lblCompliance.Visible = chkPCMCIA.Checked.Value; - txtCompliance.Visible = chkPCMCIA.Checked.Value; - lblAdditionalInformation.Visible = false; + chkCIS.Visible = chkPCMCIA.Checked.Value; + treeCIS.Visible = chkPCMCIA.Checked.Value; + lblPCMCIAManufacturer.Visible = chkPCMCIA.Checked.Value; + txtPCMCIAManufacturer.Visible = chkPCMCIA.Checked.Value; + lblMfgCode.Visible = chkPCMCIA.Checked.Value; + txtMfgCode.Visible = chkPCMCIA.Checked.Value; + lblPCMCIAProductName.Visible = chkPCMCIA.Checked.Value; + txtPCMCIAProductName.Visible = chkPCMCIA.Checked.Value; + lblCardCode.Visible = chkPCMCIA.Checked.Value; + txtCardCode.Visible = chkPCMCIA.Checked.Value; + lblCompliance.Visible = chkPCMCIA.Checked.Value; + txtCompliance.Visible = chkPCMCIA.Checked.Value; + lblAdditionalInformation.Visible = false; treeAdditionalInformation.Visible = false; } protected void OnBtnCancelPartitionClicked(object sender, EventArgs e) { - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; stkPartitionFields1.Visible = false; stkPartitionFields2.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnRemovePartitionClicked(object sender, EventArgs e) { - if(treePartitions.SelectedItem != null) - lstPartitions.Remove((PartitionType)treePartitions.SelectedItem); + if(treePartitions.SelectedItem != null) lstPartitions.Remove((PartitionType)treePartitions.SelectedItem); } protected void OnBtnEditPartitionClicked(object sender, EventArgs e) { - if(treePartitions.SelectedItem == null) - return; + if(treePartitions.SelectedItem == null) return; partitionIter = (PartitionType)treePartitions.SelectedItem; - spPartitionSequence.Value = partitionIter.Sequence; - txtPartitionStart.Text = partitionIter.StartSector.ToString(); - txtPartitionEnd.Text = partitionIter.EndSector.ToString(); - txtPartitionType.Text = partitionIter.Type; - txtPartitionName.Text = partitionIter.Name; + spPartitionSequence.Value = partitionIter.Sequence; + txtPartitionStart.Text = partitionIter.StartSector.ToString(); + txtPartitionEnd.Text = partitionIter.EndSector.ToString(); + txtPartitionType.Text = partitionIter.Type; + txtPartitionName.Text = partitionIter.Name; txtPartitionDescription.Text = partitionIter.Description; - treeFilesystems.DataStore = new ObservableCollection(partitionIter.FileSystems); + treeFilesystems.DataStore = new ObservableCollection(partitionIter.FileSystems); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; stkPartitionFields1.Visible = true; stkPartitionFields2.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = true; } protected void OnBtnApplyPartitionClicked(object sender, EventArgs e) { - int temp, temp2; - - if(!int.TryParse(txtPartitionStart.Text, out temp)) + if(!int.TryParse(txtPartitionStart.Text, out int temp)) { MessageBox.Show("Partition start must be a number", MessageBoxType.Error); return; } - if(!int.TryParse(txtPartitionEnd.Text, out temp2)) + if(!int.TryParse(txtPartitionEnd.Text, out int temp2)) { MessageBox.Show("Partition end must be a number", MessageBoxType.Error); return; @@ -1000,47 +956,48 @@ namespace osrepodbmgr.Eto return; } - if(editingPartition) - lstPartitions.Remove(partitionIter); + if(editingPartition) lstPartitions.Remove(partitionIter); - partitionIter = new PartitionType(); - partitionIter.Sequence = (int)spPartitionSequence.Value; - partitionIter.StartSector = int.Parse(txtPartitionStart.Text); - partitionIter.EndSector = int.Parse(txtPartitionEnd.Text); - partitionIter.Type = txtPartitionType.Text; - partitionIter.Name = txtPartitionName.Text; - partitionIter.Description = txtPartitionDescription.Text; + partitionIter = new PartitionType + { + Sequence = (int)spPartitionSequence.Value, + StartSector = int.Parse(txtPartitionStart.Text), + EndSector = int.Parse(txtPartitionEnd.Text), + Type = txtPartitionType.Text, + Name = txtPartitionName.Text, + Description = txtPartitionDescription.Text + }; if(((ObservableCollection)treeFilesystems.DataStore).Count > 0) partitionIter.FileSystems = ((ObservableCollection)treeFilesystems.DataStore).ToArray(); - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; stkPartitionFields1.Visible = false; stkPartitionFields2.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnAddPartitionClicked(object sender, EventArgs e) { - spPartitionSequence.Value = 0; - txtPartitionStart.Text = ""; - txtPartitionEnd.Text = ""; - txtPartitionType.Text = ""; - txtPartitionName.Text = ""; + spPartitionSequence.Value = 0; + txtPartitionStart.Text = ""; + txtPartitionEnd.Text = ""; + txtPartitionType.Text = ""; + txtPartitionName.Text = ""; txtPartitionDescription.Text = ""; - treeFilesystems.DataStore = new ObservableCollection(); + treeFilesystems.DataStore = new ObservableCollection(); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; stkPartitionFields1.Visible = true; stkPartitionFields2.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = false; } @@ -1048,26 +1005,24 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveFilesystemClicked(object sender, EventArgs e) { if(treeFilesystems.SelectedItem != null) - ((ObservableCollection)treeFilesystems.DataStore).Remove((FileSystemType)treeFilesystems.SelectedItem); + ((ObservableCollection)treeFilesystems.DataStore).Remove((FileSystemType)treeFilesystems + .SelectedItem); } protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) { - if(treeFilesystems.SelectedItem == null) - return; + if(treeFilesystems.SelectedItem == null) return; filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.Metadata = filesystemIter; + dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; _dlgFilesystem.FillFields(); _dlgFilesystem.ShowModal(this); - if(_dlgFilesystem.Modified) - { - ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata); - } + if(!_dlgFilesystem.Modified) return; + + ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata); } protected void OnBtnAddFilesystemClicked(object sender, EventArgs e) @@ -1081,111 +1036,112 @@ namespace osrepodbmgr.Eto protected void OnChkDumpHardwareToggled(object sender, EventArgs e) { - treeDumpHardware.Visible = chkDumpHardware.Checked.Value; - btnAddHardware.Visible = chkDumpHardware.Checked.Value; + treeDumpHardware.Visible = chkDumpHardware.Checked.Value; + btnAddHardware.Visible = chkDumpHardware.Checked.Value; btnRemoveHardware.Visible = chkDumpHardware.Checked.Value; - btnEditHardware.Visible = chkDumpHardware.Checked.Value; + btnEditHardware.Visible = chkDumpHardware.Checked.Value; btnCancelHardware.Visible = false; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnCancelHardwareClicked(object sender, EventArgs e) { - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnRemoveHardwareClicked(object sender, EventArgs e) { - if(treeDumpHardware.SelectedItem != null) - lstDumpHw.Remove((DumpHardwareType)treeDumpHardware.SelectedItem); + if(treeDumpHardware.SelectedItem != null) lstDumpHw.Remove((DumpHardwareType)treeDumpHardware.SelectedItem); } protected void OnBtnEditHardwareClicked(object sender, EventArgs e) { - if(treeDumpHardware.SelectedItem == null) - return; + if(treeDumpHardware.SelectedItem == null) return; dumpHwIter = (DumpHardwareType)treeDumpHardware.SelectedItem; txtHWManufacturer.Text = dumpHwIter.Manufacturer; - txtHWModel.Text = dumpHwIter.Model; - txtHWRevision.Text = dumpHwIter.Revision; - txtHWFirmware.Text = dumpHwIter.Firmware; - txtHWSerial.Text = dumpHwIter.Serial; + txtHWModel.Text = dumpHwIter.Model; + txtHWRevision.Text = dumpHwIter.Revision; + txtHWFirmware.Text = dumpHwIter.Firmware; + txtHWSerial.Text = dumpHwIter.Serial; if(dumpHwIter.Software != null) { - txtDumpName.Text = dumpHwIter.Software.Name; + txtDumpName.Text = dumpHwIter.Software.Name; txtDumpVersion.Text = dumpHwIter.Software.Version; - txtDumpOS.Text = dumpHwIter.Software.OperatingSystem; + txtDumpOS.Text = dumpHwIter.Software.OperatingSystem; } + treeExtents.DataStore = new ObservableCollection(dumpHwIter.Extents); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; - frmHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; + frmHardware.Visible = true; editingDumpHw = true; } protected void OnBtnApplyHardwareClicked(object sender, EventArgs e) { - if(editingDumpHw) - lstDumpHw.Remove(dumpHwIter); + if(editingDumpHw) lstDumpHw.Remove(dumpHwIter); - dumpHwIter = new DumpHardwareType(); - dumpHwIter.Manufacturer = txtHWManufacturer.Text; - dumpHwIter.Model = txtHWModel.Text; - dumpHwIter.Revision = txtHWRevision.Text; - dumpHwIter.Firmware = txtHWFirmware.Text; - dumpHwIter.Serial = txtHWSerial.Text; - if(!string.IsNullOrWhiteSpace(txtDumpName.Text) || !string.IsNullOrWhiteSpace(txtDumpVersion.Text) || !string.IsNullOrWhiteSpace(txtDumpOS.Text)) + dumpHwIter = new DumpHardwareType { - dumpHwIter.Software = new SoftwareType(); - dumpHwIter.Software.Name = txtDumpName.Text; - dumpHwIter.Software.Version = txtDumpVersion.Text; - dumpHwIter.Software.OperatingSystem = txtDumpOS.Text; - } + Manufacturer = txtHWManufacturer.Text, + Model = txtHWModel.Text, + Revision = txtHWRevision.Text, + Firmware = txtHWFirmware.Text, + Serial = txtHWSerial.Text + }; + if(!string.IsNullOrWhiteSpace(txtDumpName.Text) || !string.IsNullOrWhiteSpace(txtDumpVersion.Text) || + !string.IsNullOrWhiteSpace(txtDumpOS.Text)) + dumpHwIter.Software = new SoftwareType + { + Name = txtDumpName.Text, + Version = txtDumpVersion.Text, + OperatingSystem = txtDumpOS.Text + }; if(((ObservableCollection)treeExtents.DataStore).Count > 0) dumpHwIter.Extents = ((ObservableCollection)treeExtents.DataStore).ToArray(); lstDumpHw.Add(dumpHwIter); - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnAddHardwareClicked(object sender, EventArgs e) { txtHWManufacturer.Text = ""; - txtHWModel.Text = ""; - txtHWRevision.Text = ""; - txtHWFirmware.Text = ""; - txtHWSerial.Text = ""; - txtDumpName.Text = ""; - txtDumpVersion.Text = ""; - txtDumpOS.Text = ""; - treeExtents.DataStore = new ObservableCollection(); + txtHWModel.Text = ""; + txtHWRevision.Text = ""; + txtHWFirmware.Text = ""; + txtHWSerial.Text = ""; + txtDumpName.Text = ""; + txtDumpVersion.Text = ""; + txtDumpOS.Text = ""; + treeExtents.DataStore = new ObservableCollection(); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; - frmHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; + frmHardware.Visible = true; editingDumpHw = false; } @@ -1198,7 +1154,11 @@ namespace osrepodbmgr.Eto protected void OnBtnAddExtentClicked(object sender, EventArgs e) { - ((ObservableCollection)treeExtents.DataStore).Add(new ExtentType { Start = (ulong)spExtentStart.Value, End = (ulong)spExtentEnd.Value }); + ((ObservableCollection)treeExtents.DataStore).Add(new ExtentType + { + Start = (ulong)spExtentStart.Value, + End = (ulong)spExtentEnd.Value + }); } protected void OnBtnCancelClicked(object sender, EventArgs e) @@ -1208,8 +1168,6 @@ namespace osrepodbmgr.Eto protected void OnBtnSaveClicked(object sender, EventArgs e) { - long ltmp; - #region Sanity checks if(string.IsNullOrEmpty(txtFormat.Text)) { @@ -1238,7 +1196,7 @@ namespace osrepodbmgr.Eto } } - if(string.IsNullOrEmpty(txtBlocks.Text) || !long.TryParse(txtBlocks.Text, out ltmp)) + if(string.IsNullOrEmpty(txtBlocks.Text) || !long.TryParse(txtBlocks.Text, out long ltmp)) { MessageBox.Show("Blocks must be a number", MessageBoxType.Error); return; @@ -1285,12 +1243,14 @@ namespace osrepodbmgr.Eto MessageBox.Show("Height must be bigger than 0", MessageBoxType.Error); return; } + if(spWidth.Value <= 0) { MessageBox.Show("Width must be bigger than 0", MessageBoxType.Error); return; } } + if(spThickness.Value <= 0) { MessageBox.Show("Thickness must be bigger than 0", MessageBoxType.Error); @@ -1369,13 +1329,15 @@ namespace osrepodbmgr.Eto { if(Convert.ToInt32(txtMfgCode.Text, 16) < 0 || Convert.ToInt32(txtMfgCode.Text, 16) > 0xFFFF) { - MessageBox.Show("PCMCIA Manufacturer Code must be between 0x0000 and 0xFFFF", MessageBoxType.Error); + MessageBox.Show("PCMCIA Manufacturer Code must be between 0x0000 and 0xFFFF", + MessageBoxType.Error); return; } } catch(FormatException) { - MessageBox.Show("PCMCIA Manufacturer Code must be a number in hexadecimal format", MessageBoxType.Error); + MessageBox.Show("PCMCIA Manufacturer Code must be a number in hexadecimal format", + MessageBoxType.Error); return; } catch(OverflowException) @@ -1458,93 +1420,81 @@ namespace osrepodbmgr.Eto } if(chkDumpHardware.Checked.Value) - { if(lstDumpHw.Count < 1) { MessageBox.Show("If dump hardware is known at least an entry must be created"); return; } - } #endregion Sanity checks - Metadata = new BlockMediaType(); + Metadata = new BlockMediaType {Image = new ImageType {Value = txtImage.Text, format = txtFormat.Text}}; - Metadata.Image = new ImageType(); - Metadata.Image.Value = txtImage.Text; - Metadata.Image.format = txtFormat.Text; if(!string.IsNullOrWhiteSpace(txtOffset.Text) && long.TryParse(txtOffset.Text, out ltmp)) { Metadata.Image.offsetSpecified = true; - Metadata.Image.offset = long.Parse(txtOffset.Text); + Metadata.Image.offset = long.Parse(txtOffset.Text); } - Metadata.Size = long.Parse(txtSize.Text); - Metadata.Checksums = checksums; + + Metadata.Size = long.Parse(txtSize.Text); + Metadata.Checksums = checksums; Metadata.ContentChecksums = contentChks; if(chkSequence.Checked.Value) { - Metadata.Sequence = new SequenceType(); - Metadata.Sequence.MediaTitle = txtMediaTitle.Text; - Metadata.Sequence.MediaSequence = (int)spSequence.Value; - Metadata.Sequence.TotalMedia = (int)spTotalMedia.Value; + Metadata.Sequence = new SequenceType + { + MediaTitle = txtMediaTitle.Text, + MediaSequence = (int)spSequence.Value, + TotalMedia = (int)spTotalMedia.Value + }; if(spSide.Value > 0) { Metadata.Sequence.SideSpecified = true; - Metadata.Sequence.Side = (int)spSide.Value; + Metadata.Sequence.Side = (int)spSide.Value; } + if(spLayer.Value > 0) { Metadata.Sequence.LayerSpecified = true; - Metadata.Sequence.Layer = (int)spLayer.Value; + Metadata.Sequence.Layer = (int)spLayer.Value; } } - if(!string.IsNullOrWhiteSpace(txtManufacturer.Text)) - Metadata.Manufacturer = txtManufacturer.Text; - if(!string.IsNullOrWhiteSpace(txtModel.Text)) - Metadata.Model = txtModel.Text; - if(!string.IsNullOrWhiteSpace(txtSerial.Text)) - Metadata.Serial = txtSerial.Text; - if(!string.IsNullOrWhiteSpace(txtFirmware.Text)) - Metadata.Firmware = txtFirmware.Text; - if(!string.IsNullOrWhiteSpace(txtInterface.Text)) - Metadata.Interface = txtInterface.Text; + if(!string.IsNullOrWhiteSpace(txtManufacturer.Text)) Metadata.Manufacturer = txtManufacturer.Text; + if(!string.IsNullOrWhiteSpace(txtModel.Text)) Metadata.Model = txtModel.Text; + if(!string.IsNullOrWhiteSpace(txtSerial.Text)) Metadata.Serial = txtSerial.Text; + if(!string.IsNullOrWhiteSpace(txtFirmware.Text)) Metadata.Firmware = txtFirmware.Text; + if(!string.IsNullOrWhiteSpace(txtInterface.Text)) Metadata.Interface = txtInterface.Text; Metadata.PhysicalBlockSize = (int)spPhysicalBlockSize.Value; - Metadata.LogicalBlockSize = (int)spLogicalBlockSize.Value; - Metadata.LogicalBlocks = long.Parse(txtBlocks.Text); + Metadata.LogicalBlockSize = (int)spLogicalBlockSize.Value; + Metadata.LogicalBlocks = long.Parse(txtBlocks.Text); Metadata.VariableBlockSize = variableBlockSize; - Metadata.TapeInformation = tapeInformation; - Metadata.Scans = scans; + Metadata.TapeInformation = tapeInformation; + Metadata.Scans = scans; - if(chkATA.Checked.Value && lstAta.Count == 1) - { - Metadata.ATA = new ATAType(); - Metadata.ATA.Identify = lstAta[0]; - } + if(chkATA.Checked.Value && lstAta.Count == 1) Metadata.ATA = new ATAType {Identify = lstAta[0]}; if(chkPCI.Checked.Value) { - Metadata.PCI = new PCIType(); - Metadata.PCI.VendorID = Convert.ToUInt16(txtPCIVendor.Text, 16); - Metadata.PCI.DeviceID = Convert.ToUInt16(txtPCIProduct.Text, 16); + Metadata.PCI = new PCIType + { + VendorID = Convert.ToUInt16(txtPCIVendor.Text, 16), + DeviceID = Convert.ToUInt16(txtPCIProduct.Text, 16) + }; - if(lstPCIConfiguration.Count == 1) - Metadata.PCI.Configuration = lstPCIConfiguration[0]; + if(lstPCIConfiguration.Count == 1) Metadata.PCI.Configuration = lstPCIConfiguration[0]; - if(lstPCIOptionROM.Count == 1) - Metadata.PCI.ExpansionROM = lstPCIOptionROM[0]; + if(lstPCIOptionROM.Count == 1) Metadata.PCI.ExpansionROM = lstPCIOptionROM[0]; } if(chkPCMCIA.Checked.Value) { Metadata.PCMCIA = new PCMCIAType(); - if(lstPCMCIACIS.Count == 1) - Metadata.PCMCIA.CIS = lstPCMCIACIS[0]; + if(lstPCMCIACIS.Count == 1) Metadata.PCMCIA.CIS = lstPCMCIACIS[0]; - if(!string.IsNullOrWhiteSpace(txtCompliance.Text)) - Metadata.PCMCIA.Compliance = txtCompliance.Text; + if(!string.IsNullOrWhiteSpace(txtCompliance.Text)) Metadata.PCMCIA.Compliance = txtCompliance.Text; if(!string.IsNullOrWhiteSpace(txtPCMCIAManufacturer.Text)) Metadata.PCMCIA.Manufacturer = txtPCMCIAManufacturer.Text; if(!string.IsNullOrWhiteSpace(txtPCMCIAProductName.Text)) @@ -1552,19 +1502,19 @@ namespace osrepodbmgr.Eto if(!string.IsNullOrWhiteSpace(txtMfgCode.Text)) { Metadata.PCMCIA.ManufacturerCodeSpecified = true; - Metadata.PCMCIA.ManufacturerCode = Convert.ToUInt16(txtMfgCode.Text, 16); + Metadata.PCMCIA.ManufacturerCode = Convert.ToUInt16(txtMfgCode.Text, 16); } + if(!string.IsNullOrWhiteSpace(txtCardCode.Text)) { Metadata.PCMCIA.CardCodeSpecified = true; - Metadata.PCMCIA.CardCode = Convert.ToUInt16(txtCardCode.Text, 16); + Metadata.PCMCIA.CardCode = Convert.ToUInt16(txtCardCode.Text, 16); } if(lstAdditionalInformation.Count > 0) { List addinfos = new List(); - foreach(StringEntry entry in lstAdditionalInformation) - addinfos.Add(entry.str); + foreach(StringEntry entry in lstAdditionalInformation) addinfos.Add(entry.str); Metadata.PCMCIA.AdditionalInformation = addinfos.ToArray(); } } @@ -1573,58 +1523,48 @@ namespace osrepodbmgr.Eto { Metadata.SecureDigital = new SecureDigitalType(); - if(lstCID.Count == 1) - Metadata.SecureDigital.CID = lstCID[0]; - if(lstCSD.Count == 1) - Metadata.SecureDigital.CSD = lstCSD[0]; - if(lstECSD.Count == 1) - Metadata.MultiMediaCard.ExtendedCSD = lstECSD[0]; + if(lstCID.Count == 1) Metadata.SecureDigital.CID = lstCID[0]; + if(lstCSD.Count == 1) Metadata.SecureDigital.CSD = lstCSD[0]; + if(lstECSD.Count == 1) Metadata.MultiMediaCard.ExtendedCSD = lstECSD[0]; } if(chkSCSI.Checked.Value) { Metadata.SCSI = new SCSIType(); - if(lstInquiry.Count == 1) - Metadata.SCSI.Inquiry = lstInquiry[0]; - if(lstModeSense.Count == 1) - Metadata.SCSI.ModeSense = lstModeSense[0]; - if(lstModeSense10.Count == 1) - Metadata.SCSI.ModeSense10 = lstModeSense10[0]; - if(lstLogSense.Count == 1) - Metadata.SCSI.LogSense = lstLogSense[0]; - if(lstEVPDs.Count > 0) - Metadata.SCSI.EVPD = lstEVPDs.ToArray(); + if(lstInquiry.Count == 1) Metadata.SCSI.Inquiry = lstInquiry[0]; + if(lstModeSense.Count == 1) Metadata.SCSI.ModeSense = lstModeSense[0]; + if(lstModeSense10.Count == 1) Metadata.SCSI.ModeSense10 = lstModeSense10[0]; + if(lstLogSense.Count == 1) Metadata.SCSI.LogSense = lstLogSense[0]; + if(lstEVPDs.Count > 0) Metadata.SCSI.EVPD = lstEVPDs.ToArray(); } if(chkUSB.Checked.Value) { - Metadata.USB = new USBType(); - Metadata.USB.VendorID = Convert.ToUInt16(txtUSBVendor.Text, 16); - Metadata.USB.ProductID = Convert.ToUInt16(txtUSBProduct.Text, 16); + Metadata.USB = new USBType + { + VendorID = Convert.ToUInt16(txtUSBVendor.Text, 16), + ProductID = Convert.ToUInt16(txtUSBProduct.Text, 16) + }; - if(lstUSBDescriptors.Count == 1) - Metadata.USB.Descriptors = lstUSBDescriptors[0]; + if(lstUSBDescriptors.Count == 1) Metadata.USB.Descriptors = lstUSBDescriptors[0]; } - if(chkMAM.Checked.Value && lstMAM.Count == 1) - Metadata.MAM = lstMAM[0]; + if(chkMAM.Checked.Value && lstMAM.Count == 1) Metadata.MAM = lstMAM[0]; if(spHeads.Value > 0 && spCylinders.Value > 0 && spSectors.Value > 0) { - Metadata.HeadsSpecified = true; - Metadata.CylindersSpecified = true; + Metadata.HeadsSpecified = true; + Metadata.CylindersSpecified = true; Metadata.SectorsPerTrackSpecified = true; - Metadata.Heads = (long)spHeads.Value; - Metadata.Cylinders = (long)spCylinders.Value; - Metadata.SectorsPerTrack = (long)spSectors.Value; + Metadata.Heads = (long)spHeads.Value; + Metadata.Cylinders = (long)spCylinders.Value; + Metadata.SectorsPerTrack = (long)spSectors.Value; } - if(lstTracks.Count > 0) - Metadata.Track = lstTracks.ToArray(); + if(lstTracks.Count > 0) Metadata.Track = lstTracks.ToArray(); - if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) - Metadata.CopyProtection = txtCopyProtection.Text; + if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) Metadata.CopyProtection = txtCopyProtection.Text; if(chkDimensions.Checked.Value) { @@ -1632,31 +1572,167 @@ namespace osrepodbmgr.Eto if(chkRound.Checked.Value) { Metadata.Dimensions.DiameterSpecified = true; - Metadata.Dimensions.Diameter = spDiameter.Value; + Metadata.Dimensions.Diameter = spDiameter.Value; } else { Metadata.Dimensions.HeightSpecified = true; - Metadata.Dimensions.WidthSpecified = true; - Metadata.Dimensions.Height = spHeight.Value; - Metadata.Dimensions.Width = spWidth.Value; + Metadata.Dimensions.WidthSpecified = true; + Metadata.Dimensions.Height = spHeight.Value; + Metadata.Dimensions.Width = spWidth.Value; } + Metadata.Dimensions.Thickness = spThickness.Value; } - if(lstPartitions.Count > 0) - Metadata.FileSystemInformation = lstPartitions.ToArray(); + if(lstPartitions.Count > 0) Metadata.FileSystemInformation = lstPartitions.ToArray(); - if(chkDumpHardware.Checked.Value && lstDumpHw.Count > 0) - Metadata.DumpHardwareArray = lstDumpHw.ToArray(); + if(chkDumpHardware.Checked.Value && lstDumpHw.Count > 0) Metadata.DumpHardwareArray = lstDumpHw.ToArray(); - if(!string.IsNullOrWhiteSpace(txtMediaType.Text)) - Metadata.DiskType = txtMediaType.Text; - if(!string.IsNullOrWhiteSpace(txtMediaSubtype.Text)) - Metadata.DiskSubType = txtMediaSubtype.Text; + if(!string.IsNullOrWhiteSpace(txtMediaType.Text)) Metadata.DiskType = txtMediaType.Text; + if(!string.IsNullOrWhiteSpace(txtMediaSubtype.Text)) Metadata.DiskSubType = txtMediaSubtype.Text; Modified = true; Close(); } + + class StringEntry + { + public string str; + } + + #region XAML UI elements + #pragma warning disable 0649 + TextBox txtImage; + TextBox txtFormat; + TextBox txtOffset; + TextBox txtSize; + TextBox txtManufacturer; + TextBox txtModel; + TextBox txtSerial; + TextBox txtFirmware; + TextBox txtInterface; + TextBox txtCopyProtection; + TextBox txtMediaType; + TextBox txtMediaSubtype; + CheckBox chkSequence; + Label lblMediaTitle; + TextBox txtMediaTitle; + Label lblSequence; + NumericUpDown spSequence; + Label lblTotalMedia; + NumericUpDown spTotalMedia; + Label lblSide; + NumericUpDown spSide; + Label lblLayer; + NumericUpDown spLayer; + TextBox txtBlocks; + NumericUpDown spPhysicalBlockSize; + NumericUpDown spLogicalBlockSize; + NumericUpDown spCylinders; + NumericUpDown spHeads; + NumericUpDown spSectors; + CheckBox chkDimensions; + CheckBox chkRound; + StackLayout stkDiameter; + NumericUpDown spDiameter; + StackLayout stkHeight; + NumericUpDown spHeight; + StackLayout stkWidth; + NumericUpDown spWidth; + StackLayout stkThickness; + NumericUpDown spThickness; + CheckBox chkATA; + GridView treeATA; + CheckBox chkPCI; + Label lblPCIVendor; + TextBox txtPCIVendor; + Label lblPCIProduct; + TextBox txtPCIProduct; + GroupBox frmPCIConfiguration; + GridView treeConfiguration; + GroupBox frmOptionROM; + GridView treeOptionROM; + CheckBox chkPCMCIA; + CheckBox chkCIS; + GridView treeCIS; + Label lblPCMCIAManufacturer; + Label lblMfgCode; + Label lblPCMCIAProductName; + Label lblCardCode; + Label lblCompliance; + TextBox txtPCMCIAManufacturer; + TextBox txtMfgCode; + TextBox txtPCMCIAProductName; + TextBox txtCardCode; + TextBox txtCompliance; + GroupBox lblAdditionalInformation; + GridView treeAdditionalInformation; + CheckBox chkSecureDigital; + GridView treeCID; + CheckBox chkCSD; + GridView treeCSD; + CheckBox chkECSD; + GridView treeECSD; + CheckBox chkSCSI; + GroupBox frmInquiry; + GridView treeInquiry; + GroupBox frmModeSense; + GridView treeModeSense; + GroupBox frmModeSense10; + GridView treeModeSense10; + GroupBox frmLogSense; + GridView treeLogSense; + GroupBox frmEVPDs; + GridView treeEVPDs; + CheckBox chkUSB; + TextBox txtUSBVendor; + TextBox txtUSBProduct; + GridView treeDescriptors; + CheckBox chkMAM; + GridView treeMAM; + CheckBox chkTracks; + GridView treeTracks; + GridView treePartitions; + Button btnCancelPartition; + Button btnRemovePartition; + Button btnEditPartition; + Button btnApplyPartition; + Button btnAddPartition; + NumericUpDown spPartitionSequence; + TextBox txtPartitionStart; + TextBox txtPartitionEnd; + TextBox txtPartitionType; + TextBox txtPartitionName; + TextBox txtPartitionDescription; + GroupBox frmFilesystems; + GridView treeFilesystems; + CheckBox chkDumpHardware; + GridView treeDumpHardware; + Button btnCancelHardware; + Button btnRemoveHardware; + Button btnEditHardware; + Button btnApplyHardware; + Button btnAddHardware; + GroupBox frmHardware; + TextBox txtHWManufacturer; + TextBox txtHWModel; + TextBox txtHWRevision; + TextBox txtHWFirmware; + TextBox txtHWSerial; + GridView treeExtents; + NumericUpDown spExtentStart; + NumericUpDown spExtentEnd; + TextBox txtDumpName; + TextBox txtDumpVersion; + TextBox txtDumpOS; + Label lblCID; + Label lblUSBVendor; + Label lblUSBProduct; + GroupBox frmDescriptors; + StackLayout stkPartitionFields1; + StackLayout stkPartitionFields2; + #pragma warning restore 0649 + #endregion XAML UI elements } } \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgFilesystem.xeto.cs b/osrepodbmgr.Eto/dlgFilesystem.xeto.cs index a4727a7..5617b60 100644 --- a/osrepodbmgr.Eto/dlgFilesystem.xeto.cs +++ b/osrepodbmgr.Eto/dlgFilesystem.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using Eto.Forms; using Eto.Serialization.Xaml; @@ -35,101 +36,67 @@ namespace osrepodbmgr.Eto public class dlgFilesystem : Dialog { public FileSystemType Metadata; - public bool Modified; - - #region XAML UI elements -#pragma warning disable 0649 - TextBox txtType; - TextBox txtFiles; - CheckBox chkBootable; - CheckBox chkDirty; - NumericUpDown spClusterSize; - TextBox txtClusters; - TextBox txtFreeClusters; - CheckBox chkCreationDate; - DateTimePicker cldCreationDate; - CheckBox chkModificationDate; - DateTimePicker cldModificationDate; - CheckBox chkEffectiveDate; - DateTimePicker cldEffectiveDate; - CheckBox chkExpirationDate; - DateTimePicker cldExpirationDate; - CheckBox chkBackupDate; - DateTimePicker cldBackupDate; - TextBox txtLabel; - TextBox txtSerial; - TextBox txtSysId; - TextBox txtVolId; - TextBox txtPubId; - TextBox txtDataId; - TextBox txtAppId; -#pragma warning restore 0649 - #endregion XAML UI elements + public bool Modified; public dlgFilesystem() { XamlReader.Load(this); Modified = false; } + public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - if(Metadata.Type != null) - txtType.Text = Metadata.Type; + if(Metadata.Type != null) txtType.Text = Metadata.Type; if(Metadata.CreationDateSpecified) { chkCreationDate.Checked = true; cldCreationDate.Enabled = true; - cldCreationDate.Value = Metadata.CreationDate; + cldCreationDate.Value = Metadata.CreationDate; } + if(Metadata.ModificationDateSpecified) { chkModificationDate.Checked = true; cldModificationDate.Enabled = true; - cldModificationDate.Value = Metadata.ModificationDate; + cldModificationDate.Value = Metadata.ModificationDate; } + if(Metadata.BackupDateSpecified) { chkBackupDate.Checked = true; cldBackupDate.Enabled = true; - cldBackupDate.Value = Metadata.BackupDate; + cldBackupDate.Value = Metadata.BackupDate; } - spClusterSize.Value = Metadata.ClusterSize; - txtClusters.Text = Metadata.Clusters.ToString(); - if(Metadata.FilesSpecified) - txtFiles.Text = Metadata.Files.ToString(); - chkBootable.Checked = Metadata.Bootable; - if(Metadata.VolumeSerial != null) - txtSerial.Text = Metadata.VolumeSerial; - if(Metadata.VolumeName != null) - txtLabel.Text = Metadata.VolumeName; - if(Metadata.FreeClustersSpecified) - txtFreeClusters.Text = Metadata.FreeClusters.ToString(); - chkDirty.Checked = Metadata.Dirty; + + spClusterSize.Value = Metadata.ClusterSize; + txtClusters.Text = Metadata.Clusters.ToString(); + if(Metadata.FilesSpecified) txtFiles.Text = Metadata.Files.ToString(); + chkBootable.Checked = Metadata.Bootable; + if(Metadata.VolumeSerial != null) txtSerial.Text = Metadata.VolumeSerial; + if(Metadata.VolumeName != null) txtLabel.Text = Metadata.VolumeName; + if(Metadata.FreeClustersSpecified) txtFreeClusters.Text = Metadata.FreeClusters.ToString(); + chkDirty.Checked = Metadata.Dirty; if(Metadata.ExpirationDateSpecified) { chkExpirationDate.Checked = true; cldExpirationDate.Enabled = true; - cldExpirationDate.Value = Metadata.ExpirationDate; + cldExpirationDate.Value = Metadata.ExpirationDate; } + if(Metadata.EffectiveDateSpecified) { chkEffectiveDate.Checked = true; cldEffectiveDate.Enabled = true; - cldEffectiveDate.Value = Metadata.EffectiveDate; + cldEffectiveDate.Value = Metadata.EffectiveDate; } - if(Metadata.SystemIdentifier != null) - txtSysId.Text = Metadata.SystemIdentifier; - if(Metadata.VolumeSetIdentifier != null) - txtVolId.Text = Metadata.VolumeSetIdentifier; - if(Metadata.PublisherIdentifier != null) - txtPubId.Text = Metadata.PublisherIdentifier; - if(Metadata.DataPreparerIdentifier != null) - txtDataId.Text = Metadata.DataPreparerIdentifier; - if(Metadata.ApplicationIdentifier != null) - txtAppId.Text = Metadata.ApplicationIdentifier; + + if(Metadata.SystemIdentifier != null) txtSysId.Text = Metadata.SystemIdentifier; + if(Metadata.VolumeSetIdentifier != null) txtVolId.Text = Metadata.VolumeSetIdentifier; + if(Metadata.PublisherIdentifier != null) txtPubId.Text = Metadata.PublisherIdentifier; + if(Metadata.DataPreparerIdentifier != null) txtDataId.Text = Metadata.DataPreparerIdentifier; + if(Metadata.ApplicationIdentifier != null) txtAppId.Text = Metadata.ApplicationIdentifier; } protected void OnChkCreationDateToggled(object sender, EventArgs e) @@ -165,19 +132,15 @@ namespace osrepodbmgr.Eto protected void OnBtnSaveClicked(object sender, EventArgs e) { - long temp; - if(string.IsNullOrWhiteSpace(txtType.Text)) MessageBox.Show("Filesystem type cannot be empty", MessageBoxType.Error); - if(spClusterSize.Value < 1) - MessageBox.Show("Clusters must be bigger than 0 bytes", MessageBoxType.Error); + if(spClusterSize.Value < 1) MessageBox.Show("Clusters must be bigger than 0 bytes", MessageBoxType.Error); - if(!long.TryParse(txtClusters.Text, out temp)) + if(!long.TryParse(txtClusters.Text, out long temp)) MessageBox.Show("Clusters must be a number", MessageBoxType.Error); - if(temp < 1) - MessageBox.Show("Filesystem must have more than 0 clusters", MessageBoxType.Error); + if(temp < 1) MessageBox.Show("Filesystem must have more than 0 clusters", MessageBoxType.Error); if(!string.IsNullOrWhiteSpace(txtFiles.Text) && !long.TryParse(txtFiles.Text, out temp)) MessageBox.Show("Files must be a number, or empty for unknown", MessageBoxType.Error); @@ -191,64 +154,92 @@ namespace osrepodbmgr.Eto if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text) && temp < 0) MessageBox.Show("Free clusters must be positive", MessageBoxType.Error); - Metadata = new FileSystemType(); - Metadata.Type = txtType.Text; + Metadata = new FileSystemType {Type = txtType.Text}; if(chkCreationDate.Checked.Value) { Metadata.CreationDateSpecified = true; - Metadata.CreationDate = cldCreationDate.Value.Value; + Metadata.CreationDate = cldCreationDate.Value.Value; } + if(chkModificationDate.Checked.Value) { Metadata.ModificationDateSpecified = true; - Metadata.ModificationDate = cldModificationDate.Value.Value; + Metadata.ModificationDate = cldModificationDate.Value.Value; } + if(chkBackupDate.Checked.Value) { Metadata.BackupDateSpecified = true; - Metadata.BackupDate = cldBackupDate.Value.Value; + Metadata.BackupDate = cldBackupDate.Value.Value; } + Metadata.ClusterSize = (int)spClusterSize.Value; - Metadata.Clusters = long.Parse(txtClusters.Text); + Metadata.Clusters = long.Parse(txtClusters.Text); if(!string.IsNullOrWhiteSpace(txtFiles.Text)) { Metadata.FilesSpecified = true; - Metadata.Files = long.Parse(txtFiles.Text); + Metadata.Files = long.Parse(txtFiles.Text); } - Metadata.Bootable = chkBootable.Checked.Value; - if(!string.IsNullOrWhiteSpace(txtSerial.Text)) - Metadata.VolumeSerial = txtSerial.Text; - if(!string.IsNullOrWhiteSpace(txtLabel.Text)) - Metadata.VolumeName = txtLabel.Text; + + Metadata.Bootable = chkBootable.Checked.Value; + if(!string.IsNullOrWhiteSpace(txtSerial.Text)) Metadata.VolumeSerial = txtSerial.Text; + if(!string.IsNullOrWhiteSpace(txtLabel.Text)) Metadata.VolumeName = txtLabel.Text; if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text)) { Metadata.FreeClustersSpecified = true; - Metadata.FreeClusters = long.Parse(txtFreeClusters.Text); + Metadata.FreeClusters = long.Parse(txtFreeClusters.Text); } + Metadata.Dirty = chkDirty.Checked.Value; if(chkExpirationDate.Checked.Value) { Metadata.ExpirationDateSpecified = true; - Metadata.ExpirationDate = cldExpirationDate.Value.Value; + Metadata.ExpirationDate = cldExpirationDate.Value.Value; } + if(chkEffectiveDate.Checked.Value) { Metadata.EffectiveDateSpecified = true; - Metadata.EffectiveDate = cldEffectiveDate.Value.Value; + Metadata.EffectiveDate = cldEffectiveDate.Value.Value; } - if(!string.IsNullOrWhiteSpace(txtSysId.Text)) - Metadata.SystemIdentifier = txtSysId.Text; - if(!string.IsNullOrWhiteSpace(txtVolId.Text)) - Metadata.VolumeSetIdentifier = txtVolId.Text; - if(!string.IsNullOrWhiteSpace(txtPubId.Text)) - Metadata.PublisherIdentifier = txtPubId.Text; - if(!string.IsNullOrWhiteSpace(txtDataId.Text)) - Metadata.DataPreparerIdentifier = txtDataId.Text; - if(!string.IsNullOrWhiteSpace(txtAppId.Text)) - Metadata.ApplicationIdentifier = txtAppId.Text; + + if(!string.IsNullOrWhiteSpace(txtSysId.Text)) Metadata.SystemIdentifier = txtSysId.Text; + if(!string.IsNullOrWhiteSpace(txtVolId.Text)) Metadata.VolumeSetIdentifier = txtVolId.Text; + if(!string.IsNullOrWhiteSpace(txtPubId.Text)) Metadata.PublisherIdentifier = txtPubId.Text; + if(!string.IsNullOrWhiteSpace(txtDataId.Text)) Metadata.DataPreparerIdentifier = txtDataId.Text; + if(!string.IsNullOrWhiteSpace(txtAppId.Text)) Metadata.ApplicationIdentifier = txtAppId.Text; Modified = true; Close(); } + + #region XAML UI elements + #pragma warning disable 0649 + TextBox txtType; + TextBox txtFiles; + CheckBox chkBootable; + CheckBox chkDirty; + NumericUpDown spClusterSize; + TextBox txtClusters; + TextBox txtFreeClusters; + CheckBox chkCreationDate; + DateTimePicker cldCreationDate; + CheckBox chkModificationDate; + DateTimePicker cldModificationDate; + CheckBox chkEffectiveDate; + DateTimePicker cldEffectiveDate; + CheckBox chkExpirationDate; + DateTimePicker cldExpirationDate; + CheckBox chkBackupDate; + DateTimePicker cldBackupDate; + TextBox txtLabel; + TextBox txtSerial; + TextBox txtSysId; + TextBox txtVolId; + TextBox txtPubId; + TextBox txtDataId; + TextBox txtAppId; + #pragma warning restore 0649 + #endregion XAML UI elements } } \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgHelp.xeto.cs b/osrepodbmgr.Eto/dlgHelp.xeto.cs index c59af6d..2482a7c 100644 --- a/osrepodbmgr.Eto/dlgHelp.xeto.cs +++ b/osrepodbmgr.Eto/dlgHelp.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using Eto.Forms; using Eto.Serialization.Xaml; @@ -34,133 +35,128 @@ namespace osrepodbmgr.Eto public class dlgHelp : Dialog { #region XAML UI elements -#pragma warning disable 0649 + #pragma warning disable 0649 TextArea txtHelp; -#pragma warning restore 0649 + #pragma warning restore 0649 #endregion XAML UI elements public dlgHelp() { XamlReader.Load(this); - txtHelp.Text = "This is the naming scheme and folder organization conventions for the Operating System Repository.\n\n" + - "The basic layout is as follows:\n\n" + + txtHelp.Text = + "This is the naming scheme and folder organization conventions for the Operating System Repository.\n\n" + + "The basic layout is as follows:\n\n" + "/////oem/for /<[format]_update/upgrade/files/source/netinstall/description>.zip\n" + - "All fields should contain only 7-bit ASCII.\n\n" + - "\n" + - "-----------\n" + - "This is the main developer of the operating system or associated software. e.g. Microsoft\n\n" + - "\n" + - "---------\n" + - "This is the name of the operating system or associated software. e.g. Windows NT\n\n" + - "\n" + - "---------\n" + - "This is the version of the operating system or associated software. e.g. 6.00.6000.16386\n" + - "Service pack and release markers should be appended. e.g. 6.10.7601.16385 (RTM)\n" + - "Build can be specified by appending \"build\". e.g. 10.2.7 build 6S80\n" + - "And combined. e.g. 10.5 build 9A581 (Server)\n" + - "Version with same version number but different build date should have it appended. Date format should be YYYYmm[dd]. e.g. 10 201009\n\n" + - "\n" + - "----------\n" + - "This specifies the language localization and translation:\n" + - "xxx: Language variation, e.g. German = deu\n" + - "xxx_yy: Country specific language variation. e.g. Swiss German = deu_ch\n" + - "multi: The only known variation of the product that contains more than a language\n" + - "xxx,xxx,xxx and xxx_yy,xxx_yy,xxx_yy: The variation contains more than a single language\n" + - "Where xxx is the ISO-639-2/T language code and yy is the ISO-3166-1 alpha-2 country code.\n" + - "https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n" + - "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n" + - "If the product has ever been only released in one language variation, being it English (like CP/M) or multilanguage " + - "(like Mac OS X and Linux), this field should be omitted.\n\n" + - "\n" + - "--------------\n" + - "The processor architecture the product is compiled for.\n" + - "Omitted if it has only ever been compiled for a single one, contains all supported ones in same files, " + - "or it is source code containing support for several of them.\n" + - "Exact one depends on the product (that is, the one that the product uses to identify itself, should be used). Examples:\n" + - "* x86, i86, i386, i486, i586, i686, ia32: Intel Architecture 32 aka 8086 aka iAPX86\n" + - "* x64, amd64, x86_64: AMD64 aka x86_64 aka EM64T\n" + - "* ia64: Intel Architecture 64 aka Itanium\n" + - "* sparc: SPARC\n" + - "* sun4u, sun4m, sun1, sun2, sun3: Specific Sun architectures that specify not only the processor architecture but the whole system one.\n" + - "* 68k, ppc, fat: For products that run under Mac OS indicate they require a Macintosh, a Power Macintosh, or can run on both, respectively.\n" + - "* rpi, rpi2, beaglebone, bananapi: Specific whole systems that share a processor architecture but require a completely different variant.\n\n" + - "oem\n" + - "---\n" + - "Present if the variant is OEM. Omitted otherwise.\n\n" + - "for \n" + - "-------------\n" + - "Present if the variant requires a specific computer to run.\n" + - "Useful for computer restoration variants.\n" + - "e.g. for Power Mac 5200\n" + - "e.g. for Tandy 1000\n\n" + - "<[format]/update/upgrade/files/source/netinstall/description>.zip\n" + - "-----------------------------------------------------------------\n" + - "This is the file containing the product itself.\n" + - "It should be compressed using ZIP with certain parameters (see below).\n" + - "Several of them can be combined separated with underscores.\n" + - "Naming as following:\n" + - "* [format]: If the variation is encoded in a disk image format that's neither a simple dump of sectors (.iso/.dsk/.xdf) " + - "or a BinCue/BinToc (.bin+.cue/.bin+.toc) format should be substituted to a descriptive name for the format. e.g.: [Nero], [CloneCD]\n" + - "* update: Should be used when the product requires and updates a previous point release or build to the new one. " + - "Product version should be the updated, not the required, one. e.g.: 1.3 updates to 1.3.1 or 2.0 updates to 2.5\n" + - "* upgrade: Should be used when the product requires and updates a previous version to the new one. Product version should be the updated, " + - "not the required, one. e.g.: 2.0 updates to 3.0 or MS-DOS updates to Windows 95.\n" + - "* files: Should be used when the contents of the product disks are dumped as is (copied from the media) or it contains already installed " + - "files.\n" + - "* source: Should be used when it contains the source code for the product.\n" + - "* netinstall: Similar to files except that the files are designed to be put in a network share for remote installation of the product.\n" + - "* description: Free form description or product part number if it is known.\n\n" + - "Compression\n" + - "-----------\n" + - "The product should be compressed using ZIP with Deflate algorithm and UTF-8 headers. Zip64 extensions may be used. " + - "UNIX extensions MUST be used for products that require them (e.g. it contains softlinks).\n" + - "In the doubt, use Info-ZIP with following parameters:\n" + - "zip -9ry -dd archive.zip .\n" + - "If the product requires Acorn, BeOS or OS/2 extended attributes it should be compressed using the corresponding Info-ZIP version under " + - "that operating system so the required extension is used.\n" + - "DO NOT recompress archives in an operating system which zip product doesn't support all already present headers.\n" + - "DO NOT use TorrentZip. It discards all headers as well as date stamps.\n" + - "DO NOT use Mac OS headers. For conserving FinderInfo and Resource Fork see below.\n\n" + - "FinderInfo and Resource Fork\n" + - "----------------------------\n" + - "FinderInfo and Resource Fork should be stored as Mac OS X AppleDouble format: file and ._file\n" + - "This format is understand by all Mac OS X versions under any filesystem or a CIFS/SMB network share.\n" + - "Also mkisofs recognizes it and is able to create an HFS partition with them correctly set.\n" + - "Other formats should be converted to this one.\n\n" + - "Metadata\n" + - "--------\n" + - "Each archive should be accompanied with a JSON metadata file using the CICM Metadata format. " + - "Name for metadata sidecar should be same as the archive changing the extension to .json.\n" + - "If the archive can be modified (doesn't contain ZIP headers you would lose) the metadata should be put inside the archive as a file " + - "named metadata.json.\n\n" + - "Recovery\n" + - "--------\n" + - "Disks fail, bit rot happens, so every archive as well as the metadata file should have a PAR2 recovery set created.\n" + - "Example command line (with 5% redundancy):\n" + - "par2 c -r5 archive.par2 archive.zip archive.json\n\n" + - "Result\n" + - "------\n" + - "In the end you get something like this:\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.json\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol000+01.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol001+02.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol003+04.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol007+08.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol015+16.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol031+32.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol063+37.par2\n" + - "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.zip\n" + - "QNX/QNX/20090229/source.json\n" + - "QNX/QNX/20090229/source.par2\n" + - "QNX/QNX/20090229/source.vol000+01.par2\n" + - "QNX/QNX/20090229/source.vol001+02.par2\n" + - "QNX/QNX/20090229/source.vol003+04.par2\n" + - "QNX/QNX/20090229/source.vol007+08.par2\n" + - "QNX/QNX/20090229/source.vol015+16.par2\n" + - "QNX/QNX/20090229/source.vol031+32.par2\n" + - "QNX/QNX/20090229/source.vol063+37.par2\n" + + "All fields should contain only 7-bit ASCII.\n\n" + + "\n" + "-----------\n" + + "This is the main developer of the operating system or associated software. e.g. Microsoft\n\n" + + "\n" + + "---------\n" + + "This is the name of the operating system or associated software. e.g. Windows NT\n\n" + + "\n" + + "---------\n" + + "This is the version of the operating system or associated software. e.g. 6.00.6000.16386\n" + + "Service pack and release markers should be appended. e.g. 6.10.7601.16385 (RTM)\n" + + "Build can be specified by appending \"build\". e.g. 10.2.7 build 6S80\n" + + "And combined. e.g. 10.5 build 9A581 (Server)\n" + + "Version with same version number but different build date should have it appended. Date format should be YYYYmm[dd]. e.g. 10 201009\n\n" + + "\n" + + "----------\n" + "This specifies the language localization and translation:\n" + + "xxx: Language variation, e.g. German = deu\n" + + "xxx_yy: Country specific language variation. e.g. Swiss German = deu_ch\n" + + "multi: The only known variation of the product that contains more than a language\n" + + "xxx,xxx,xxx and xxx_yy,xxx_yy,xxx_yy: The variation contains more than a single language\n" + + "Where xxx is the ISO-639-2/T language code and yy is the ISO-3166-1 alpha-2 country code.\n" + + "https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n" + + "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n" + + "If the product has ever been only released in one language variation, being it English (like CP/M) or multilanguage " + + "(like Mac OS X and Linux), this field should be omitted.\n\n" + + "\n" + + "--------------\n" + + "The processor architecture the product is compiled for.\n" + + "Omitted if it has only ever been compiled for a single one, contains all supported ones in same files, " + + "or it is source code containing support for several of them.\n" + + "Exact one depends on the product (that is, the one that the product uses to identify itself, should be used). Examples:\n" + + "* x86, i86, i386, i486, i586, i686, ia32: Intel Architecture 32 aka 8086 aka iAPX86\n" + + "* x64, amd64, x86_64: AMD64 aka x86_64 aka EM64T\n" + + "* ia64: Intel Architecture 64 aka Itanium\n" + + "* sparc: SPARC\n" + + "* sun4u, sun4m, sun1, sun2, sun3: Specific Sun architectures that specify not only the processor architecture but the whole system one.\n" + + "* 68k, ppc, fat: For products that run under Mac OS indicate they require a Macintosh, a Power Macintosh, or can run on both, respectively.\n" + + "* rpi, rpi2, beaglebone, bananapi: Specific whole systems that share a processor architecture but require a completely different variant.\n\n" + + "oem\n" + + "---\n" + + "Present if the variant is OEM. Omitted otherwise.\n\n" + "for \n" + + "-------------\n" + + "Present if the variant requires a specific computer to run.\n" + + "Useful for computer restoration variants.\n" + + "e.g. for Power Mac 5200\n" + + "e.g. for Tandy 1000\n\n" + + "<[format]/update/upgrade/files/source/netinstall/description>.zip\n" + + "-----------------------------------------------------------------\n" + + "This is the file containing the product itself.\n" + + "It should be compressed using ZIP with certain parameters (see below).\n" + + "Several of them can be combined separated with underscores.\n" + + "Naming as following:\n" + + "* [format]: If the variation is encoded in a disk image format that's neither a simple dump of sectors (.iso/.dsk/.xdf) " + + "or a BinCue/BinToc (.bin+.cue/.bin+.toc) format should be substituted to a descriptive name for the format. e.g.: [Nero], [CloneCD]\n" + + "* update: Should be used when the product requires and updates a previous point release or build to the new one. " + + "Product version should be the updated, not the required, one. e.g.: 1.3 updates to 1.3.1 or 2.0 updates to 2.5\n" + + "* upgrade: Should be used when the product requires and updates a previous version to the new one. Product version should be the updated, " + + "not the required, one. e.g.: 2.0 updates to 3.0 or MS-DOS updates to Windows 95.\n" + + "* files: Should be used when the contents of the product disks are dumped as is (copied from the media) or it contains already installed " + + "files.\n" + + "* source: Should be used when it contains the source code for the product.\n" + + "* netinstall: Similar to files except that the files are designed to be put in a network share for remote installation of the product.\n" + + "* description: Free form description or product part number if it is known.\n\n" + + "Compression\n" + + "-----------\n" + + "The product should be compressed using ZIP with Deflate algorithm and UTF-8 headers. Zip64 extensions may be used. " + + "UNIX extensions MUST be used for products that require them (e.g. it contains softlinks).\n" + + "In the doubt, use Info-ZIP with following parameters:\n" + + "zip -9ry -dd archive.zip .\n" + + "If the product requires Acorn, BeOS or OS/2 extended attributes it should be compressed using the corresponding Info-ZIP version under " + + "that operating system so the required extension is used.\n" + + "DO NOT recompress archives in an operating system which zip product doesn't support all already present headers.\n" + + "DO NOT use TorrentZip. It discards all headers as well as date stamps.\n" + + "DO NOT use Mac OS headers. For conserving FinderInfo and Resource Fork see below.\n\n" + + "FinderInfo and Resource Fork\n" + + "----------------------------\n" + + "FinderInfo and Resource Fork should be stored as Mac OS X AppleDouble format: file and ._file\n" + + "This format is understand by all Mac OS X versions under any filesystem or a CIFS/SMB network share.\n" + + "Also mkisofs recognizes it and is able to create an HFS partition with them correctly set.\n" + + "Other formats should be converted to this one.\n\n" + + "Metadata\n" + "--------\n" + + "Each archive should be accompanied with a JSON metadata file using the CICM Metadata format. " + + "Name for metadata sidecar should be same as the archive changing the extension to .json.\n" + + "If the archive can be modified (doesn't contain ZIP headers you would lose) the metadata should be put inside the archive as a file " + + "named metadata.json.\n\n" + + "Recovery\n" + "--------\n" + + "Disks fail, bit rot happens, so every archive as well as the metadata file should have a PAR2 recovery set created.\n" + + "Example command line (with 5% redundancy):\n" + + "par2 c -r5 archive.par2 archive.zip archive.json\n\n" + + "Result\n" + "------\n" + + "In the end you get something like this:\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.json\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol000+01.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol001+02.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol003+04.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol007+08.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol015+16.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol031+32.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol063+37.par2\n" + + "Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.zip\n" + + "QNX/QNX/20090229/source.json\n" + + "QNX/QNX/20090229/source.par2\n" + + "QNX/QNX/20090229/source.vol000+01.par2\n" + + "QNX/QNX/20090229/source.vol001+02.par2\n" + + "QNX/QNX/20090229/source.vol003+04.par2\n" + + "QNX/QNX/20090229/source.vol007+08.par2\n" + + "QNX/QNX/20090229/source.vol015+16.par2\n" + + "QNX/QNX/20090229/source.vol031+32.par2\n" + + "QNX/QNX/20090229/source.vol063+37.par2\n" + "QNX/QNX/20090229/source.zip"; } @@ -169,4 +165,4 @@ namespace osrepodbmgr.Eto Close(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgMetadata.xeto.cs b/osrepodbmgr.Eto/dlgMetadata.xeto.cs index 190507e..71a3d79 100644 --- a/osrepodbmgr.Eto/dlgMetadata.xeto.cs +++ b/osrepodbmgr.Eto/dlgMetadata.xeto.cs @@ -25,117 +25,54 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; using System.Threading; using Eto.Forms; using Eto.Serialization.Xaml; using osrepodbmgr.Core; using Schemas; +using BorderType = Schemas.BorderType; namespace osrepodbmgr.Eto { public class dlgMetadata : Dialog { - public CICMMetadataType Metadata; + AdvertisementType[] adverts; + AudioMediaType[] audiomedias; + BookType[] books; + LinearMediaType[] linearmedias; + ObservableCollection lstArchitectures; + ObservableCollection lstArchitecturesTypes; + ObservableCollection lstBarcodes; + + ObservableCollection lstBarcodeTypes; + ObservableCollection lstCategories; + ObservableCollection lstDiscs; + ObservableCollection lstDisks; + ObservableCollection lstFilesForMedia; ObservableCollection lstKeywords; - ObservableCollection lstBarcodes; - ObservableCollection lstCategories; - ObservableCollection lstSubcategories; ObservableCollection lstLanguages; + ObservableCollection lstLanguageTypes; + ObservableCollection lstSubcategories; ObservableCollection lstSystems; - ObservableCollection lstArchitectures; - ObservableCollection lstDiscs; - ObservableCollection lstDisks; - - ObservableCollection lstBarcodeTypes; - ObservableCollection lstLanguageTypes; - ObservableCollection lstArchitecturesTypes; - ObservableCollection lstFilesForMedia; - - Thread thdDisc; - Thread thdDisk; - bool stopped; // TODO: Add the options to edit these fields - MagazineType[] magazines; - BookType[] books; + MagazineType[] magazines; + public CICMMetadataType Metadata; + + public bool Modified; + PCIType[] pcis; RequiredOperatingSystemType[] requiredOses; + bool stopped; + + Thread thdDisc; + Thread thdDisk; UserManualType[] usermanuals; - AdvertisementType[] adverts; - LinearMediaType[] linearmedias; - PCIType[] pcis; - AudioMediaType[] audiomedias; - - #region XAML UI elements -#pragma warning disable 0649 - TabPage tabGeneral; - TextBox txtDeveloper; - TextBox txtPublisher; - TextBox txtAuthor; - TextBox txtPerformer; - TextBox txtName; - TextBox txtVersion; - StackLayout stkReleaseType; - CheckBox chkKnownReleaseType; - EnumDropDown cmbReleaseType; - DateTimePicker cldReleaseDate; - CheckBox chkReleaseDate; - TextBox txtPartNumber; - TextBox txtSerialNumber; - TabPage tabKeywords; - TextBox txtNewKeyword; - GridView treeKeywords; - TabPage tabBarcodes; - TextBox txtNewBarcode; - ComboBox cmbBarcodes; - GridView treeBarcodes; - TabPage tabCategories; - TextBox txtNewCategory; - GridView treeCategories; - TextBox txtNewSubcategory; - GridView treeSubcategories; - TabPage tabLanguages; - ComboBox cmbLanguages; - GridView treeLanguages; - TabPage tabSystems; - TextBox txtNewSystem; - GridView treeSystems; - TabPage tabArchitectures; - ComboBox cmbArchitectures; - GridView treeArchitectures; - TabPage tabDiscs; - ComboBox cmbFilesForNewDisc; - Button btnAddDisc; - GridView treeDiscs; - Button btnStopAddDisc; - Button btnEditDisc; - Button btnClearDiscs; - Button btnRemoveDisc; - Label lblAddDisc1; - ProgressBar prgAddDisc1; - Label lblAddDisc2; - ProgressBar prgAddDisc2; - TabPage tabDisks; - ComboBox cmbFilesForNewDisk; - Button btnAddDisk; - GridView treeDisks; - Button btnStopAddDisk; - Button btnEditDisk; - Button btnClearDisks; - Button btnRemoveDisk; - Label lblAddDisk1; - ProgressBar prgAddDisk1; - Label lblAddDisk2; - ProgressBar prgAddDisk2; - Button btnCancel; - Button btnOK; -#pragma warning restore 0649 - #endregion XAML UI elements - - public bool Modified; public dlgMetadata() { @@ -143,99 +80,102 @@ namespace osrepodbmgr.Eto Modified = false; - cmbReleaseType = new EnumDropDown(); - stkReleaseType.Items.Add(new StackLayoutItem { Control = cmbReleaseType, Expand = true }); + cmbReleaseType = new EnumDropDown(); + stkReleaseType.Items.Add(new StackLayoutItem {Control = cmbReleaseType, Expand = true}); - lstKeywords = new ObservableCollection(); - lstBarcodes = new ObservableCollection(); - lstCategories = new ObservableCollection(); + lstKeywords = new ObservableCollection(); + lstBarcodes = new ObservableCollection(); + lstCategories = new ObservableCollection(); lstSubcategories = new ObservableCollection(); - lstLanguages = new ObservableCollection(); - lstSystems = new ObservableCollection(); + lstLanguages = new ObservableCollection(); + lstSystems = new ObservableCollection(); lstArchitectures = new ObservableCollection(); - lstDiscs = new ObservableCollection(); - lstDisks = new ObservableCollection(); + lstDiscs = new ObservableCollection(); + lstDisks = new ObservableCollection(); treeKeywords.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Keyword" }); treeBarcodes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.code) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.code)}, HeaderText = "Barcode" }); treeBarcodes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.type).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.type).Convert(v => v.ToString()) + }, HeaderText = "Type" }); treeCategories.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Category" }); treeSubcategories.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Subcategory" }); treeLanguages.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Language" }); treeSystems.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "System" }); treeArchitectures.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.str) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Architecture" }); treeDiscs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.path) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.path)}, HeaderText = "File" }); treeDisks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.path) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.path)}, HeaderText = "File" }); - treeKeywords.DataStore = lstKeywords; - treeBarcodes.DataStore = lstBarcodes; - treeCategories.DataStore = lstCategories; + treeKeywords.DataStore = lstKeywords; + treeBarcodes.DataStore = lstBarcodes; + treeCategories.DataStore = lstCategories; treeSubcategories.DataStore = lstSubcategories; - treeLanguages.DataStore = lstLanguages; - treeSystems.DataStore = lstSystems; + treeLanguages.DataStore = lstLanguages; + treeSystems.DataStore = lstSystems; treeArchitectures.DataStore = lstArchitectures; - treeDiscs.DataStore = lstDiscs; - treeDisks.DataStore = lstDisks; + treeDiscs.DataStore = lstDiscs; + treeDisks.DataStore = lstDisks; - treeKeywords.AllowMultipleSelection = false; - treeBarcodes.AllowMultipleSelection = false; - treeCategories.AllowMultipleSelection = false; + treeKeywords.AllowMultipleSelection = false; + treeBarcodes.AllowMultipleSelection = false; + treeCategories.AllowMultipleSelection = false; treeSubcategories.AllowMultipleSelection = false; - treeLanguages.AllowMultipleSelection = false; - treeSystems.AllowMultipleSelection = false; + treeLanguages.AllowMultipleSelection = false; + treeSystems.AllowMultipleSelection = false; treeArchitectures.AllowMultipleSelection = false; - treeDiscs.AllowMultipleSelection = false; - treeDisks.AllowMultipleSelection = false; + treeDiscs.AllowMultipleSelection = false; + treeDisks.AllowMultipleSelection = false; - lstBarcodeTypes = new ObservableCollection(); - lstLanguageTypes = new ObservableCollection(); + lstBarcodeTypes = new ObservableCollection(); + lstLanguageTypes = new ObservableCollection(); lstArchitecturesTypes = new ObservableCollection(); - lstFilesForMedia = new ObservableCollection(); + lstFilesForMedia = new ObservableCollection(); //cmbBarcodes.ItemTextBinding = Binding.Property(r => r.str); - cmbBarcodes.DataStore = lstBarcodeTypes; - cmbLanguages.DataStore = lstLanguageTypes; - cmbArchitectures.DataStore = lstArchitecturesTypes; + cmbBarcodes.DataStore = lstBarcodeTypes; + cmbLanguages.DataStore = lstLanguageTypes; + cmbArchitectures.DataStore = lstArchitecturesTypes; cmbFilesForNewDisc.DataStore = lstFilesForMedia; cmbFilesForNewDisk.DataStore = lstFilesForMedia; @@ -268,64 +208,50 @@ namespace osrepodbmgr.Eto void FillFilesCombos() { - foreach(KeyValuePair files in Context.hashes) - lstFilesForMedia.Add(files.Key); + foreach(KeyValuePair files in Context.Hashes) lstFilesForMedia.Add(files.Key); } public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; if(Metadata.Developer != null) - { foreach(string developer in Metadata.Developer) { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } if(Metadata.Publisher != null) - { foreach(string publisher in Metadata.Publisher) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += publisher; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += publisher; } - } if(Metadata.Author != null) - { foreach(string author in Metadata.Author) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += author; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += author; } - } if(Metadata.Performer != null) - { foreach(string performer in Metadata.Performer) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += performer; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += performer; } - } - txtName.Text = Metadata.Name; - txtVersion.Text = Metadata.Version; - txtPartNumber.Text = Metadata.PartNumber; + txtName.Text = Metadata.Name; + txtVersion.Text = Metadata.Version; + txtPartNumber.Text = Metadata.PartNumber; txtSerialNumber.Text = Metadata.SerialNumber; if(Metadata.ReleaseTypeSpecified) { - chkKnownReleaseType.Checked = true; - cmbReleaseType.Enabled = true; + chkKnownReleaseType.Checked = true; + cmbReleaseType.Enabled = true; cmbReleaseType.SelectedValue = Metadata.ReleaseType; } @@ -333,183 +259,115 @@ namespace osrepodbmgr.Eto { chkReleaseDate.Checked = false; cldReleaseDate.Enabled = true; - cldReleaseDate.Value = Metadata.ReleaseDate; + cldReleaseDate.Value = Metadata.ReleaseDate; } if(Metadata.Keywords != null) - { foreach(string keyword in Metadata.Keywords) - lstKeywords.Add(new StringEntry { str = keyword }); - } + lstKeywords.Add(new StringEntry {str = keyword}); if(Metadata.Categories != null) - { foreach(string category in Metadata.Categories) - lstCategories.Add(new StringEntry { str = category }); - } + lstCategories.Add(new StringEntry {str = category}); if(Metadata.Subcategories != null) - { foreach(string subcategory in Metadata.Subcategories) - lstSubcategories.Add(new StringEntry { str = subcategory }); - } + lstSubcategories.Add(new StringEntry {str = subcategory}); if(Metadata.Languages != null) - { foreach(LanguagesTypeLanguage language in Metadata.Languages) { - lstLanguages.Add(new StringEntry { str = language.ToString() }); + lstLanguages.Add(new StringEntry {str = language.ToString()}); lstLanguageTypes.Remove(language.ToString()); } - } if(Metadata.Systems != null) - { foreach(string system in Metadata.Systems) - lstSystems.Add(new StringEntry { str = system }); - } + lstSystems.Add(new StringEntry {str = system}); if(Metadata.Architectures != null) - { foreach(ArchitecturesTypeArchitecture architecture in Metadata.Architectures) { - lstArchitectures.Add(new StringEntry { str = architecture.ToString() }); + lstArchitectures.Add(new StringEntry {str = architecture.ToString()}); lstArchitecturesTypes.Remove(architecture.ToString()); } - } if(Metadata.OpticalDisc != null) - { foreach(OpticalDiscType disc in Metadata.OpticalDisc) { - lstDiscs.Add(new DiscEntry { path = disc.Image.Value, disc = disc }); - List files = new List(); - files.Add(disc.Image.Value); - if(disc.ADIP != null) - files.Add(disc.ADIP.Image); - if(disc.ATIP != null) - files.Add(disc.ATIP.Image); - if(disc.BCA != null) - files.Add(disc.BCA.Image); - if(disc.CMI != null) - files.Add(disc.CMI.Image); - if(disc.DCB != null) - files.Add(disc.DCB.Image); - if(disc.DDS != null) - files.Add(disc.DDS.Image); - if(disc.DMI != null) - files.Add(disc.DMI.Image); - if(disc.LastRMD != null) - files.Add(disc.LastRMD.Image); - if(disc.LeadIn != null) - { - foreach(Schemas.BorderType border in disc.LeadIn) + lstDiscs.Add(new DiscEntry {path = disc.Image.Value, disc = disc}); + List files = new List {disc.Image.Value}; + if(disc.ADIP != null) files.Add(disc.ADIP.Image); + if(disc.ATIP != null) files.Add(disc.ATIP.Image); + if(disc.BCA != null) files.Add(disc.BCA.Image); + if(disc.CMI != null) files.Add(disc.CMI.Image); + if(disc.DCB != null) files.Add(disc.DCB.Image); + if(disc.DDS != null) files.Add(disc.DDS.Image); + if(disc.DMI != null) files.Add(disc.DMI.Image); + if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); + if(disc.LeadIn != null) + foreach(BorderType border in disc.LeadIn) files.Add(border.Image); - } - if(disc.LeadInCdText != null) - files.Add(disc.LeadInCdText.Image); - if(disc.LeadOut != null) - { - foreach(Schemas.BorderType border in disc.LeadOut) + if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) + foreach(BorderType border in disc.LeadOut) files.Add(border.Image); - } - if(disc.MediaID != null) - files.Add(disc.MediaID.Image); - if(disc.PAC != null) - files.Add(disc.PAC.Image); - if(disc.PFI != null) - files.Add(disc.PFI.Image); - if(disc.PFIR != null) - files.Add(disc.PFIR.Image); - if(disc.PMA != null) - files.Add(disc.PMA.Image); - if(disc.PRI != null) - files.Add(disc.PRI.Image); - if(disc.SAI != null) - files.Add(disc.SAI.Image); - if(disc.TOC != null) - files.Add(disc.TOC.Image); - if(disc.Track != null) - { - foreach(TrackType track in disc.Track) - files.Add(track.Image.Value); - } + if(disc.MediaID != null) files.Add(disc.MediaID.Image); + if(disc.PAC != null) files.Add(disc.PAC.Image); + if(disc.PFI != null) files.Add(disc.PFI.Image); + if(disc.PFIR != null) files.Add(disc.PFIR.Image); + if(disc.PMA != null) files.Add(disc.PMA.Image); + if(disc.PRI != null) files.Add(disc.PRI.Image); + if(disc.SAI != null) files.Add(disc.SAI.Image); + if(disc.TOC != null) files.Add(disc.TOC.Image); + if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); foreach(string file in files) - { if(lstFilesForMedia.Contains(file)) lstFilesForMedia.Remove(file); - } } - } if(Metadata.BlockMedia != null) - { foreach(BlockMediaType disk in Metadata.BlockMedia) { - lstDisks.Add(new DiskEntry { path = disk.Image.Value, disk = disk }); - List files = new List(); - files.Add(disk.Image.Value); - if(disk.ATA != null && disk.ATA.Identify != null) - files.Add(disk.ATA.Identify.Image); - if(disk.MAM != null) - files.Add(disk.MAM.Image); - if(disk.PCI != null && disk.PCI.ExpansionROM != null) - files.Add(disk.PCI.ExpansionROM.Image.Value); - if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) - files.Add(disk.PCMCIA.CIS.Image); - if(disk.SCSI != null) + lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk}); + List files = new List {disk.Image.Value}; + if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) files.Add(disk.MAM.Image); + if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image); + if(disk.SCSI != null) { - if(disk.SCSI.Inquiry != null) - files.Add(disk.SCSI.Inquiry.Image); - if(disk.SCSI.LogSense != null) - files.Add(disk.SCSI.LogSense.Image); - if(disk.SCSI.ModeSense != null) - files.Add(disk.SCSI.ModeSense.Image); - if(disk.SCSI.ModeSense10 != null) - files.Add(disk.SCSI.ModeSense10.Image); - if(disk.SCSI.EVPD != null) - { - foreach(EVPDType evpd in disk.SCSI.EVPD) - files.Add(evpd.Image); - } + if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); + if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); + if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); + if(disk.SCSI.EVPD != null) files.AddRange(disk.SCSI.EVPD.Select(evpd => evpd.Image)); } + if(disk.SecureDigital != null) { - if(disk.SecureDigital.CID != null) - files.Add(disk.SecureDigital.CID.Image); - if(disk.SecureDigital.CSD != null) - files.Add(disk.SecureDigital.CSD.Image); - if(disk.MultiMediaCard.ExtendedCSD != null) - files.Add(disk.MultiMediaCard.ExtendedCSD.Image); + if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); + if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); } + if(disk.TapeInformation != null) - { - foreach(TapePartitionType tapePart in disk.TapeInformation) - files.Add(tapePart.Image.Value); - } - if(disk.Track != null) - { - foreach(BlockTrackType track in disk.Track) - files.Add(track.Image.Value); - } - if(disk.USB != null && disk.USB.Descriptors != null) - files.Add(disk.USB.Descriptors.Image); + files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); + if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); + if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); foreach(string file in files) - { if(lstFilesForMedia.Contains(file)) lstFilesForMedia.Remove(file); - } } - } - magazines = Metadata.Magazine; - books = Metadata.Book; + magazines = Metadata.Magazine; + books = Metadata.Book; requiredOses = Metadata.RequiredOperatingSystems; - usermanuals = Metadata.UserManual; - adverts = Metadata.Advertisement; + usermanuals = Metadata.UserManual; + adverts = Metadata.Advertisement; linearmedias = Metadata.LinearMedia; - pcis = Metadata.PCICard; - audiomedias = Metadata.AudioMedia; + pcis = Metadata.PCICard; + audiomedias = Metadata.AudioMedia; } protected void OnChkKnownReleaseTypeToggled(object sender, EventArgs e) @@ -524,14 +382,13 @@ namespace osrepodbmgr.Eto protected void OnBtnAddKeywordClicked(object sender, EventArgs e) { - lstKeywords.Add(new StringEntry { str = txtNewKeyword.Text }); - txtNewKeyword.Text = ""; + lstKeywords.Add(new StringEntry {str = txtNewKeyword.Text}); + txtNewKeyword.Text = ""; } protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e) { - if(treeKeywords.SelectedItem != null) - lstKeywords.Remove((StringEntry)treeKeywords.SelectedItem); + if(treeKeywords.SelectedItem != null) lstKeywords.Remove((StringEntry)treeKeywords.SelectedItem); } protected void OnBtnClearKeywordsClicked(object sender, EventArgs e) @@ -541,11 +398,14 @@ namespace osrepodbmgr.Eto protected void OnBtnAddBarcodeClicked(object sender, EventArgs e) { - if(!string.IsNullOrEmpty(cmbBarcodes.Text)) + if(string.IsNullOrEmpty(cmbBarcodes.Text)) return; + + lstBarcodes.Add(new BarcodeEntry { - lstBarcodes.Add(new BarcodeEntry { code = txtNewBarcode.Text, type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), cmbBarcodes.Text) }); - txtNewBarcode.Text = ""; - } + code = txtNewBarcode.Text, + type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), cmbBarcodes.Text) + }); + txtNewBarcode.Text = ""; } protected void OnBtnClearBarcodesClicked(object sender, EventArgs e) @@ -555,20 +415,19 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveBarcodeClicked(object sender, EventArgs e) { - if(treeBarcodes.SelectedItem != null) - lstBarcodes.Remove((BarcodeEntry)treeBarcodes.SelectedItem); + if(treeBarcodes.SelectedItem != null) lstBarcodes.Remove((BarcodeEntry)treeBarcodes.SelectedItem); } protected void OnBtnAddCategoryClicked(object sender, EventArgs e) { - lstCategories.Add(new StringEntry { str = txtNewCategory.Text }); - txtNewCategory.Text = ""; + lstCategories.Add(new StringEntry {str = txtNewCategory.Text}); + txtNewCategory.Text = ""; } protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e) { - lstSubcategories.Add(new StringEntry { str = txtNewSubcategory.Text }); - txtNewSubcategory.Text = ""; + lstSubcategories.Add(new StringEntry {str = txtNewSubcategory.Text}); + txtNewSubcategory.Text = ""; } protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e) @@ -584,8 +443,7 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveCategoryClicked(object sender, EventArgs e) { - if(treeCategories.SelectedItem != null) - lstCategories.Remove((StringEntry)treeCategories.SelectedItem); + if(treeCategories.SelectedItem != null) lstCategories.Remove((StringEntry)treeCategories.SelectedItem); } protected void OnBtnClearCategoriesClicked(object sender, EventArgs e) @@ -595,20 +453,18 @@ namespace osrepodbmgr.Eto protected void OnBtnAddLanguageClicked(object sender, EventArgs e) { - if(!string.IsNullOrWhiteSpace(cmbLanguages.Text)) - { - lstLanguages.Add(new StringEntry { str = cmbLanguages.Text }); - lstLanguageTypes.Remove(cmbLanguages.Text); - } + if(string.IsNullOrWhiteSpace(cmbLanguages.Text)) return; + + lstLanguages.Add(new StringEntry {str = cmbLanguages.Text}); + lstLanguageTypes.Remove(cmbLanguages.Text); } protected void OnBtnRemoveLanguageClicked(object sender, EventArgs e) { - if(treeLanguages.SelectedItem != null) - { - lstLanguageTypes.Add(((StringEntry)treeLanguages.SelectedItem).str); - lstLanguages.Remove((StringEntry)treeLanguages.SelectedItem); - } + if(treeLanguages.SelectedItem == null) return; + + lstLanguageTypes.Add(((StringEntry)treeLanguages.SelectedItem).str); + lstLanguages.Remove((StringEntry)treeLanguages.SelectedItem); } protected void OnBtnClearLanguagesClicked(object sender, EventArgs e) @@ -619,8 +475,8 @@ namespace osrepodbmgr.Eto protected void OnBtnAddSystemClicked(object sender, EventArgs e) { - lstSystems.Add(new StringEntry { str = txtNewSystem.Text }); - txtNewSystem.Text = ""; + lstSystems.Add(new StringEntry {str = txtNewSystem.Text}); + txtNewSystem.Text = ""; } protected void OnBtnClearSystemsClicked(object sender, EventArgs e) @@ -630,17 +486,15 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveSystemClicked(object sender, EventArgs e) { - if(treeSystems.SelectedItem != null) - lstSystems.Remove((StringEntry)treeSystems.SelectedItem); + if(treeSystems.SelectedItem != null) lstSystems.Remove((StringEntry)treeSystems.SelectedItem); } protected void OnBtnAddArchitectureClicked(object sender, EventArgs e) { - if(!string.IsNullOrWhiteSpace(cmbArchitectures.Text)) - { - lstArchitectures.Add(new StringEntry { str = cmbArchitectures.Text }); - lstArchitecturesTypes.Remove(cmbArchitectures.Text); - } + if(string.IsNullOrWhiteSpace(cmbArchitectures.Text)) return; + + lstArchitectures.Add(new StringEntry {str = cmbArchitectures.Text}); + lstArchitecturesTypes.Remove(cmbArchitectures.Text); } protected void OnBtnClearArchitecturesClicked(object sender, EventArgs e) @@ -651,103 +505,93 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveArchitectureClicked(object sender, EventArgs e) { - if(treeArchitectures.SelectedItem != null) - { - lstArchitecturesTypes.Add(((StringEntry)treeArchitectures.SelectedItem).str); - lstArchitectures.Remove((StringEntry)treeArchitectures.SelectedItem); - } + if(treeArchitectures.SelectedItem == null) return; + + lstArchitecturesTypes.Add(((StringEntry)treeArchitectures.SelectedItem).str); + lstArchitectures.Remove((StringEntry)treeArchitectures.SelectedItem); } protected void OnBtnAddDiscClicked(object sender, EventArgs e) { - Context.selectedFile = cmbFilesForNewDisc.Text; - tabGeneral.Visible = false; - tabKeywords.Visible = false; - tabBarcodes.Visible = false; - tabCategories.Visible = false; - tabLanguages.Visible = false; - tabSystems.Visible = false; - tabArchitectures.Visible = false; - tabDisks.Visible = false; - prgAddDisc1.Visible = true; - prgAddDisc2.Visible = true; - lblAddDisc1.Visible = true; - lblAddDisc2.Visible = true; - btnCancel.Visible = false; - btnOK.Visible = false; - btnEditDisc.Visible = false; - btnClearDiscs.Visible = false; - Workers.Failed += OnDiscAddFailed; - Workers.Finished += OnDiscAddFinished; - Workers.UpdateProgress += UpdateDiscProgress1; - Workers.UpdateProgress2 += UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = true; - btnAddDisc.Visible = false; - btnRemoveDisc.Visible = false; - thdDisc = new Thread(Workers.AddMedia); + Context.SelectedFile = cmbFilesForNewDisc.Text; + tabGeneral.Visible = false; + tabKeywords.Visible = false; + tabBarcodes.Visible = false; + tabCategories.Visible = false; + tabLanguages.Visible = false; + tabSystems.Visible = false; + tabArchitectures.Visible = false; + tabDisks.Visible = false; + prgAddDisc1.Visible = true; + prgAddDisc2.Visible = true; + lblAddDisc1.Visible = true; + lblAddDisc2.Visible = true; + btnCancel.Visible = false; + btnOK.Visible = false; + btnEditDisc.Visible = false; + btnClearDiscs.Visible = false; + Workers.Failed += OnDiscAddFailed; + Workers.Finished += OnDiscAddFinished; + Workers.UpdateProgress += UpdateDiscProgress1; + Workers.UpdateProgress2 += UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = true; + btnAddDisc.Visible = false; + btnRemoveDisc.Visible = false; + thdDisc = new Thread(Workers.AddMedia); thdDisc.Start(); } protected void OnBtnStopAddDiscClicked(object sender, EventArgs e) { - if(thdDisc != null) - thdDisc.Abort(); + thdDisc?.Abort(); stopped = true; OnDiscAddFailed(null); } - public void UpdateDiscProgress1(string text, string inner, long current, long maximum) + void UpdateDiscProgress1(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { - if(!string.IsNullOrWhiteSpace(inner)) - lblAddDisc1.Text = inner; - else - lblAddDisc1.Text = text; + lblAddDisc1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgAddDisc1.Indeterminate = false; - prgAddDisc1.MinValue = 0; - prgAddDisc1.MaxValue = (int)maximum; - prgAddDisc1.Value = (int)current; + prgAddDisc1.MinValue = 0; + prgAddDisc1.MaxValue = (int)maximum; + prgAddDisc1.Value = (int)current; } - else - prgAddDisc1.Indeterminate = true; + else prgAddDisc1.Indeterminate = true; }); } - public void UpdateDiscProgress2(string text, string inner, long current, long maximum) + void UpdateDiscProgress2(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { - if(!string.IsNullOrWhiteSpace(inner)) - lblAddDisc2.Text = inner; - else - lblAddDisc2.Text = text; + lblAddDisc2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgAddDisc2.Indeterminate = false; - prgAddDisc2.MinValue = 0; - prgAddDisc2.MaxValue = (int)maximum; - prgAddDisc2.Value = (int)current; + prgAddDisc2.MinValue = 0; + prgAddDisc2.MaxValue = (int)maximum; + prgAddDisc2.Value = (int)current; } - else - prgAddDisc2.Indeterminate = true; + else prgAddDisc2.Indeterminate = true; }); } @@ -755,34 +599,33 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - Context.selectedFile = ""; - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabSystems.Visible = true; - tabArchitectures.Visible = true; - tabDisks.Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - lblAddDisc1.Visible = false; - lblAddDisc2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; - Workers.Failed -= OnDiscAddFailed; - Workers.Finished -= OnDiscAddFinished; - Workers.UpdateProgress -= UpdateDiscProgress1; - Workers.UpdateProgress2 -= UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDisc.Visible = true; - thdDisc = null; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + Context.SelectedFile = ""; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabSystems.Visible = true; + tabArchitectures.Visible = true; + tabDisks.Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + lblAddDisc1.Visible = false; + lblAddDisc2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; + Workers.Failed -= OnDiscAddFailed; + Workers.Finished -= OnDiscAddFinished; + Workers.UpdateProgress -= UpdateDiscProgress1; + Workers.UpdateProgress2 -= UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDisc.Visible = true; + thdDisc = null; }); } @@ -790,93 +633,61 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(Context.workingDisc == null) - return; + if(Context.WorkingDisc == null) return; - OpticalDiscType disc = Context.workingDisc; + OpticalDiscType disc = Context.WorkingDisc; - lstDiscs.Add(new DiscEntry { path = Context.selectedFile, disc = disc }); - List files = new List(); - files.Add(disc.Image.Value); - if(disc.ADIP != null) - files.Add(disc.ADIP.Image); - if(disc.ATIP != null) - files.Add(disc.ATIP.Image); - if(disc.BCA != null) - files.Add(disc.BCA.Image); - if(disc.CMI != null) - files.Add(disc.CMI.Image); - if(disc.DCB != null) - files.Add(disc.DCB.Image); - if(disc.DDS != null) - files.Add(disc.DDS.Image); - if(disc.DMI != null) - files.Add(disc.DMI.Image); - if(disc.LastRMD != null) - files.Add(disc.LastRMD.Image); - if(disc.LeadIn != null) - { - foreach(Schemas.BorderType border in disc.LeadIn) - files.Add(border.Image); - } - if(disc.LeadInCdText != null) - files.Add(disc.LeadInCdText.Image); - if(disc.LeadOut != null) - { - foreach(Schemas.BorderType border in disc.LeadOut) - files.Add(border.Image); - } - if(disc.MediaID != null) - files.Add(disc.MediaID.Image); - if(disc.PAC != null) - files.Add(disc.PAC.Image); - if(disc.PFI != null) - files.Add(disc.PFI.Image); - if(disc.PFIR != null) - files.Add(disc.PFIR.Image); - if(disc.PMA != null) - files.Add(disc.PMA.Image); - if(disc.PRI != null) - files.Add(disc.PRI.Image); - if(disc.SAI != null) - files.Add(disc.SAI.Image); - if(disc.TOC != null) - files.Add(disc.TOC.Image); - if(disc.Track != null) - { - foreach(TrackType track in disc.Track) - files.Add(track.Image.Value); - } + lstDiscs.Add(new DiscEntry {path = Context.SelectedFile, disc = disc}); + List files = new List {disc.Image.Value}; + if(disc.ADIP != null) files.Add(disc.ADIP.Image); + if(disc.ATIP != null) files.Add(disc.ATIP.Image); + if(disc.BCA != null) files.Add(disc.BCA.Image); + if(disc.CMI != null) files.Add(disc.CMI.Image); + if(disc.DCB != null) files.Add(disc.DCB.Image); + if(disc.DDS != null) files.Add(disc.DDS.Image); + if(disc.DMI != null) files.Add(disc.DMI.Image); + if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); + if(disc.LeadIn != null) files.AddRange(disc.LeadIn.Select(border => border.Image)); + if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) files.AddRange(disc.LeadOut.Select(border => border.Image)); + if(disc.MediaID != null) files.Add(disc.MediaID.Image); + if(disc.PAC != null) files.Add(disc.PAC.Image); + if(disc.PFI != null) files.Add(disc.PFI.Image); + if(disc.PFIR != null) files.Add(disc.PFIR.Image); + if(disc.PMA != null) files.Add(disc.PMA.Image); + if(disc.PRI != null) files.Add(disc.PRI.Image); + if(disc.SAI != null) files.Add(disc.SAI.Image); + if(disc.TOC != null) files.Add(disc.TOC.Image); + if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); - foreach(string file in files) - lstFilesForMedia.Remove(file); + foreach(string file in files) lstFilesForMedia.Remove(file); - Context.selectedFile = ""; - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabSystems.Visible = true; - tabArchitectures.Visible = true; - tabDisks.Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - lblAddDisc1.Visible = false; - lblAddDisc2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; - Workers.Failed -= OnDiscAddFailed; - Workers.Finished -= OnDiscAddFinished; - Workers.UpdateProgress -= UpdateDiscProgress1; - Workers.UpdateProgress2 -= UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDisc.Visible = true; - thdDisc = null; + Context.SelectedFile = ""; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabSystems.Visible = true; + tabArchitectures.Visible = true; + tabDisks.Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + lblAddDisc1.Visible = false; + lblAddDisc2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; + Workers.Failed -= OnDiscAddFailed; + Workers.Finished -= OnDiscAddFinished; + Workers.UpdateProgress -= UpdateDiscProgress1; + Workers.UpdateProgress2 -= UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDisc.Visible = true; + thdDisc = null; }); } @@ -889,103 +700,93 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveDiscClicked(object sender, EventArgs e) { - if(treeDiscs.SelectedItem != null) - { - lstFilesForMedia.Add(((DiscEntry)treeDiscs.SelectedItem).path); - lstDiscs.Remove((DiscEntry)treeDiscs.SelectedItem); - } + if(treeDiscs.SelectedItem == null) return; + + lstFilesForMedia.Add(((DiscEntry)treeDiscs.SelectedItem).path); + lstDiscs.Remove((DiscEntry)treeDiscs.SelectedItem); } protected void OnBtnAddDiskClicked(object sender, EventArgs e) { - Context.selectedFile = cmbFilesForNewDisk.Text; - tabGeneral.Visible = false; - tabKeywords.Visible = false; - tabBarcodes.Visible = false; - tabCategories.Visible = false; - tabLanguages.Visible = false; - tabSystems.Visible = false; - tabArchitectures.Visible = false; - tabDiscs.Visible = false; - prgAddDisk1.Visible = true; - prgAddDisk2.Visible = true; - lblAddDisk1.Visible = true; - lblAddDisk2.Visible = true; - btnCancel.Visible = false; - btnOK.Visible = false; - btnEditDisk.Visible = false; - btnClearDisks.Visible = false; - Workers.Failed += OnDiskAddFailed; - Workers.Finished += OnDiskAddFinished; - Workers.UpdateProgress += UpdateDiskProgress1; - Workers.UpdateProgress2 += UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = true; - btnAddDisk.Visible = false; - btnRemoveDisk.Visible = false; - thdDisk = new Thread(Workers.AddMedia); + Context.SelectedFile = cmbFilesForNewDisk.Text; + tabGeneral.Visible = false; + tabKeywords.Visible = false; + tabBarcodes.Visible = false; + tabCategories.Visible = false; + tabLanguages.Visible = false; + tabSystems.Visible = false; + tabArchitectures.Visible = false; + tabDiscs.Visible = false; + prgAddDisk1.Visible = true; + prgAddDisk2.Visible = true; + lblAddDisk1.Visible = true; + lblAddDisk2.Visible = true; + btnCancel.Visible = false; + btnOK.Visible = false; + btnEditDisk.Visible = false; + btnClearDisks.Visible = false; + Workers.Failed += OnDiskAddFailed; + Workers.Finished += OnDiskAddFinished; + Workers.UpdateProgress += UpdateDiskProgress1; + Workers.UpdateProgress2 += UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = true; + btnAddDisk.Visible = false; + btnRemoveDisk.Visible = false; + thdDisk = new Thread(Workers.AddMedia); thdDisk.Start(); } protected void OnBtnStopAddDiskClicked(object sender, EventArgs e) { - if(thdDisk != null) - thdDisk.Abort(); + thdDisk?.Abort(); stopped = true; OnDiskAddFailed(null); } - public void UpdateDiskProgress1(string text, string inner, long current, long maximum) + void UpdateDiskProgress1(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { - if(!string.IsNullOrWhiteSpace(inner)) - lblAddDisk1.Text = inner; - else - lblAddDisk1.Text = text; + lblAddDisk1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgAddDisk1.Indeterminate = false; - prgAddDisk1.MinValue = 0; - prgAddDisk1.MaxValue = (int)maximum; - prgAddDisk1.Value = (int)current; + prgAddDisk1.MinValue = 0; + prgAddDisk1.MaxValue = (int)maximum; + prgAddDisk1.Value = (int)current; } - else - prgAddDisk1.Indeterminate = true; + else prgAddDisk1.Indeterminate = true; }); } - public void UpdateDiskProgress2(string text, string inner, long current, long maximum) + void UpdateDiskProgress2(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { - if(!string.IsNullOrWhiteSpace(inner)) - lblAddDisk2.Text = inner; - else - lblAddDisk2.Text = text; + lblAddDisk2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgAddDisk2.Indeterminate = false; - prgAddDisk2.MinValue = 0; - prgAddDisk2.MaxValue = (int)maximum; - prgAddDisk2.Value = (int)current; + prgAddDisk2.MinValue = 0; + prgAddDisk2.MaxValue = (int)maximum; + prgAddDisk2.Value = (int)current; } - else - prgAddDisk2.Indeterminate = true; + else prgAddDisk2.Indeterminate = true; }); } @@ -993,34 +794,33 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(!stopped) - MessageBox.Show(text, MessageBoxType.Error); - Context.selectedFile = ""; - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabSystems.Visible = true; - tabArchitectures.Visible = true; - tabDiscs.Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - lblAddDisk1.Visible = false; - lblAddDisk2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; - Workers.Failed -= OnDiskAddFailed; - Workers.Finished -= OnDiskAddFinished; - Workers.UpdateProgress -= UpdateDiskProgress1; - Workers.UpdateProgress2 -= UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + Context.SelectedFile = ""; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabSystems.Visible = true; + tabArchitectures.Visible = true; + tabDiscs.Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + lblAddDisk1.Visible = false; + lblAddDisk2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; + Workers.Failed -= OnDiskAddFailed; + Workers.Finished -= OnDiskAddFinished; + Workers.UpdateProgress -= UpdateDiskProgress1; + Workers.UpdateProgress2 -= UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } @@ -1028,89 +828,65 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - if(Context.workingDisk == null) - return; + if(Context.WorkingDisk == null) return; - BlockMediaType disk = Context.workingDisk; + BlockMediaType disk = Context.WorkingDisk; - lstDisks.Add(new DiskEntry { path = disk.Image.Value, disk = disk }); - List files = new List(); - files.Add(disk.Image.Value); - if(disk.ATA != null && disk.ATA.Identify != null) - files.Add(disk.ATA.Identify.Image); - if(disk.MAM != null) - files.Add(disk.MAM.Image); - if(disk.PCI != null && disk.PCI.ExpansionROM != null) - files.Add(disk.PCI.ExpansionROM.Image.Value); - if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) - files.Add(disk.PCMCIA.CIS.Image); - if(disk.SCSI != null) + lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk}); + List files = new List {disk.Image.Value}; + if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) files.Add(disk.MAM.Image); + if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image); + if(disk.SCSI != null) { - if(disk.SCSI.Inquiry != null) - files.Add(disk.SCSI.Inquiry.Image); - if(disk.SCSI.LogSense != null) - files.Add(disk.SCSI.LogSense.Image); - if(disk.SCSI.ModeSense != null) - files.Add(disk.SCSI.ModeSense.Image); - if(disk.SCSI.ModeSense10 != null) - files.Add(disk.SCSI.ModeSense10.Image); - if(disk.SCSI.EVPD != null) - { - foreach(EVPDType evpd in disk.SCSI.EVPD) - files.Add(evpd.Image); - } + if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); + if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); + if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); + if(disk.SCSI.EVPD != null) files.AddRange(disk.SCSI.EVPD.Select(evpd => evpd.Image)); } + if(disk.SecureDigital != null) { - if(disk.SecureDigital.CID != null) - files.Add(disk.SecureDigital.CID.Image); - if(disk.SecureDigital.CSD != null) - files.Add(disk.SecureDigital.CSD.Image); - if(disk.MultiMediaCard.ExtendedCSD != null) - files.Add(disk.MultiMediaCard.ExtendedCSD.Image); + if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); + if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); } + if(disk.TapeInformation != null) - { - foreach(TapePartitionType tapePart in disk.TapeInformation) - files.Add(tapePart.Image.Value); - } - if(disk.Track != null) - { - foreach(BlockTrackType track in disk.Track) - files.Add(track.Image.Value); - } - if(disk.USB != null && disk.USB.Descriptors != null) - files.Add(disk.USB.Descriptors.Image); + files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); + if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); + if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); - foreach(string file in files) - lstFilesForMedia.Remove(file); + foreach(string file in files) lstFilesForMedia.Remove(file); - Context.selectedFile = ""; - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabSystems.Visible = true; - tabArchitectures.Visible = true; - tabDiscs.Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - lblAddDisk1.Visible = false; - lblAddDisk2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; - Workers.Failed -= OnDiskAddFailed; - Workers.Finished -= OnDiskAddFinished; - Workers.UpdateProgress -= UpdateDiskProgress1; - Workers.UpdateProgress2 -= UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + Context.SelectedFile = ""; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabSystems.Visible = true; + tabArchitectures.Visible = true; + tabDiscs.Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + lblAddDisk1.Visible = false; + lblAddDisk2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; + Workers.Failed -= OnDiskAddFailed; + Workers.Finished -= OnDiskAddFinished; + Workers.UpdateProgress -= UpdateDiskProgress1; + Workers.UpdateProgress2 -= UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } @@ -1123,11 +899,10 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveDiskClicked(object sender, EventArgs e) { - if(treeDisks.SelectedItem != null) - { - lstFilesForMedia.Add(((DiskEntry)treeDisks.SelectedItem).path); - lstDisks.Remove((DiskEntry)treeDisks.SelectedItem); - } + if(treeDisks.SelectedItem == null) return; + + lstFilesForMedia.Add(((DiskEntry)treeDisks.SelectedItem).path); + lstDisks.Remove((DiskEntry)treeDisks.SelectedItem); } protected void OnBtnCancelClicked(object sender, EventArgs e) @@ -1138,103 +913,80 @@ namespace osrepodbmgr.Eto protected void OnBtnOKClicked(object sender, EventArgs e) { - Metadata = new CICMMetadataType(); + Metadata = new CICMMetadataType(); List architectures = new List(); - List barcodes = new List(); - List disks = new List(); - List categories = new List(); - List keywords = new List(); - List languages = new List(); - List discs = new List(); - List subcategories = new List(); - List systems = new List(); + List barcodes = new List(); + List disks = new List(); + List categories = new List(); + List keywords = new List(); + List languages = new List(); + List discs = new List(); + List subcategories = new List(); + List systems = new List(); - if(!string.IsNullOrEmpty(txtAuthor.Text)) - Metadata.Author = txtAuthor.Text.Split(','); - if(!string.IsNullOrEmpty(txtDeveloper.Text)) - Metadata.Developer = txtDeveloper.Text.Split(','); - if(!string.IsNullOrEmpty(txtName.Text)) - Metadata.Name = txtName.Text; - if(!string.IsNullOrEmpty(txtPartNumber.Text)) - Metadata.PartNumber = txtPartNumber.Text; - if(!string.IsNullOrEmpty(txtPerformer.Text)) - Metadata.Performer = txtPerformer.Text.Split(','); - if(!string.IsNullOrEmpty(txtPublisher.Text)) - Metadata.Publisher = txtPublisher.Text.Split(','); - if(!string.IsNullOrEmpty(txtSerialNumber.Text)) - Metadata.SerialNumber = txtSerialNumber.Text; - if(!string.IsNullOrEmpty(txtVersion.Text)) - Metadata.Version = txtVersion.Text; + if(!string.IsNullOrEmpty(txtAuthor.Text)) Metadata.Author = txtAuthor.Text.Split(','); + if(!string.IsNullOrEmpty(txtDeveloper.Text)) Metadata.Developer = txtDeveloper.Text.Split(','); + if(!string.IsNullOrEmpty(txtName.Text)) Metadata.Name = txtName.Text; + if(!string.IsNullOrEmpty(txtPartNumber.Text)) Metadata.PartNumber = txtPartNumber.Text; + if(!string.IsNullOrEmpty(txtPerformer.Text)) Metadata.Performer = txtPerformer.Text.Split(','); + if(!string.IsNullOrEmpty(txtPublisher.Text)) Metadata.Publisher = txtPublisher.Text.Split(','); + if(!string.IsNullOrEmpty(txtSerialNumber.Text)) Metadata.SerialNumber = txtSerialNumber.Text; + if(!string.IsNullOrEmpty(txtVersion.Text)) Metadata.Version = txtVersion.Text; if(!chkReleaseDate.Checked.Value) { - Metadata.ReleaseDate = cldReleaseDate.Value.Value; + Metadata.ReleaseDate = cldReleaseDate.Value.Value; Metadata.ReleaseDateSpecified = true; } + if(chkKnownReleaseType.Checked.Value) { - Metadata.ReleaseType = cmbReleaseType.SelectedValue; + Metadata.ReleaseType = cmbReleaseType.SelectedValue; Metadata.ReleaseTypeSpecified = true; } foreach(StringEntry entry in lstArchitectures) - architectures.Add((ArchitecturesTypeArchitecture)Enum.Parse(typeof(ArchitecturesTypeArchitecture), entry.str)); + architectures.Add((ArchitecturesTypeArchitecture)Enum.Parse(typeof(ArchitecturesTypeArchitecture), + entry.str)); foreach(BarcodeEntry entry in lstBarcodes) { - BarcodeType barcode = new BarcodeType(); - barcode.type = entry.type; - barcode.Value = entry.code; + BarcodeType barcode = new BarcodeType {type = entry.type, Value = entry.code}; barcodes.Add(barcode); } - foreach(DiskEntry entry in lstDisks) - disks.Add(entry.disk); + foreach(DiskEntry entry in lstDisks) disks.Add(entry.disk); - foreach(StringEntry entry in lstCategories) - categories.Add(entry.str); + foreach(StringEntry entry in lstCategories) categories.Add(entry.str); - foreach(StringEntry entry in lstKeywords) - keywords.Add(entry.str); + foreach(StringEntry entry in lstKeywords) keywords.Add(entry.str); foreach(StringEntry entry in lstLanguages) languages.Add((LanguagesTypeLanguage)Enum.Parse(typeof(LanguagesTypeLanguage), entry.str)); - foreach(DiscEntry entry in lstDiscs) - discs.Add(entry.disc); + foreach(DiscEntry entry in lstDiscs) discs.Add(entry.disc); - foreach(StringEntry entry in lstSubcategories) - subcategories.Add(entry.str); + foreach(StringEntry entry in lstSubcategories) subcategories.Add(entry.str); - foreach(StringEntry entry in lstSystems) - systems.Add(entry.str); + foreach(StringEntry entry in lstSystems) systems.Add(entry.str); - if(architectures.Count > 0) - Metadata.Architectures = architectures.ToArray(); - if(barcodes.Count > 0) - Metadata.Barcodes = barcodes.ToArray(); - if(disks.Count > 0) - Metadata.BlockMedia = disks.ToArray(); - if(categories.Count > 0) - Metadata.Categories = categories.ToArray(); - if(keywords.Count > 0) - Metadata.Keywords = keywords.ToArray(); - if(languages.Count > 0) - Metadata.Languages = languages.ToArray(); - if(discs.Count > 0) - Metadata.OpticalDisc = discs.ToArray(); - if(subcategories.Count > 0) - Metadata.Subcategories = subcategories.ToArray(); - if(systems.Count > 0) - Metadata.Systems = systems.ToArray(); + if(architectures.Count > 0) Metadata.Architectures = architectures.ToArray(); + if(barcodes.Count > 0) Metadata.Barcodes = barcodes.ToArray(); + if(disks.Count > 0) Metadata.BlockMedia = disks.ToArray(); + if(categories.Count > 0) Metadata.Categories = categories.ToArray(); + if(keywords.Count > 0) Metadata.Keywords = keywords.ToArray(); + if(languages.Count > 0) Metadata.Languages = languages.ToArray(); + if(discs.Count > 0) Metadata.OpticalDisc = discs.ToArray(); + if(subcategories.Count > 0) Metadata.Subcategories = subcategories.ToArray(); + if(systems.Count > 0) Metadata.Systems = systems.ToArray(); - Metadata.Magazine = magazines; - Metadata.Book = books; + Metadata.Magazine = magazines; + Metadata.Book = books; Metadata.RequiredOperatingSystems = requiredOses; - Metadata.UserManual = usermanuals; - Metadata.Advertisement = adverts; - Metadata.LinearMedia = linearmedias; - Metadata.PCICard = pcis; - Metadata.AudioMedia = audiomedias; + Metadata.UserManual = usermanuals; + Metadata.Advertisement = adverts; + Metadata.LinearMedia = linearmedias; + Metadata.PCICard = pcis; + Metadata.AudioMedia = audiomedias; Modified = true; Close(); @@ -1242,39 +994,104 @@ namespace osrepodbmgr.Eto protected void OnBtnEditDiscClicked(object sender, EventArgs e) { - if(treeDiscs.SelectedItem == null) - return; + if(treeDiscs.SelectedItem == null) return; - dlgOpticalDisc _dlgOpticalDisc = new dlgOpticalDisc(); - _dlgOpticalDisc.Title = string.Format("Editing disc metadata for {0}", ((DiscEntry)treeDiscs.SelectedItem).path); - _dlgOpticalDisc.Metadata = ((DiscEntry)treeDiscs.SelectedItem).disc; + dlgOpticalDisc _dlgOpticalDisc = new dlgOpticalDisc + { + Title = $"Editing disc metadata for {((DiscEntry)treeDiscs.SelectedItem).path}", + Metadata = ((DiscEntry)treeDiscs.SelectedItem).disc + }; _dlgOpticalDisc.FillFields(); _dlgOpticalDisc.ShowModal(this); - if(_dlgOpticalDisc.Modified) - { - lstDiscs.Remove((DiscEntry)treeDiscs.SelectedItem); - lstDiscs.Add(new DiscEntry { path = _dlgOpticalDisc.Metadata.Image.Value, disc = _dlgOpticalDisc.Metadata }); - } + if(!_dlgOpticalDisc.Modified) return; + + lstDiscs.Remove((DiscEntry)treeDiscs.SelectedItem); + lstDiscs.Add(new DiscEntry {path = _dlgOpticalDisc.Metadata.Image.Value, disc = _dlgOpticalDisc.Metadata}); } protected void OnBtnEditDiskClicked(object sender, EventArgs e) { - if(treeDisks.SelectedItem == null) - return; + if(treeDisks.SelectedItem == null) return; - dlgBlockMedia _dlgBlockMedia = new dlgBlockMedia(); - _dlgBlockMedia.Title = string.Format("Editing disk metadata for {0}", ((DiskEntry)treeDisks.SelectedItem).path); - _dlgBlockMedia.Metadata = ((DiskEntry)treeDisks.SelectedItem).disk; + dlgBlockMedia _dlgBlockMedia = new dlgBlockMedia + { + Title = $"Editing disk metadata for {((DiskEntry)treeDisks.SelectedItem).path}", + Metadata = ((DiskEntry)treeDisks.SelectedItem).disk + }; _dlgBlockMedia.FillFields(); _dlgBlockMedia.ShowModal(this); - if(_dlgBlockMedia.Modified) + if(!_dlgBlockMedia.Modified) return; - { - lstDisks.Remove((DiskEntry)treeDisks.SelectedItem); - lstDisks.Add(new DiskEntry { path = _dlgBlockMedia.Metadata.Image.Value, disk = _dlgBlockMedia.Metadata }); - } + lstDisks.Remove((DiskEntry)treeDisks.SelectedItem); + lstDisks.Add(new DiskEntry {path = _dlgBlockMedia.Metadata.Image.Value, disk = _dlgBlockMedia.Metadata}); } + + #region XAML UI elements + #pragma warning disable 0649 + TabPage tabGeneral; + TextBox txtDeveloper; + TextBox txtPublisher; + TextBox txtAuthor; + TextBox txtPerformer; + TextBox txtName; + TextBox txtVersion; + StackLayout stkReleaseType; + CheckBox chkKnownReleaseType; + EnumDropDown cmbReleaseType; + DateTimePicker cldReleaseDate; + CheckBox chkReleaseDate; + TextBox txtPartNumber; + TextBox txtSerialNumber; + TabPage tabKeywords; + TextBox txtNewKeyword; + GridView treeKeywords; + TabPage tabBarcodes; + TextBox txtNewBarcode; + ComboBox cmbBarcodes; + GridView treeBarcodes; + TabPage tabCategories; + TextBox txtNewCategory; + GridView treeCategories; + TextBox txtNewSubcategory; + GridView treeSubcategories; + TabPage tabLanguages; + ComboBox cmbLanguages; + GridView treeLanguages; + TabPage tabSystems; + TextBox txtNewSystem; + GridView treeSystems; + TabPage tabArchitectures; + ComboBox cmbArchitectures; + GridView treeArchitectures; + TabPage tabDiscs; + ComboBox cmbFilesForNewDisc; + Button btnAddDisc; + GridView treeDiscs; + Button btnStopAddDisc; + Button btnEditDisc; + Button btnClearDiscs; + Button btnRemoveDisc; + Label lblAddDisc1; + ProgressBar prgAddDisc1; + Label lblAddDisc2; + ProgressBar prgAddDisc2; + TabPage tabDisks; + ComboBox cmbFilesForNewDisk; + Button btnAddDisk; + GridView treeDisks; + Button btnStopAddDisk; + Button btnEditDisk; + Button btnClearDisks; + Button btnRemoveDisk; + Label lblAddDisk1; + ProgressBar prgAddDisk1; + Label lblAddDisk2; + ProgressBar prgAddDisk2; + Button btnCancel; + Button btnOK; + #pragma warning restore 0649 + #endregion XAML UI elements } } \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgOpticalDisc.xeto.cs b/osrepodbmgr.Eto/dlgOpticalDisc.xeto.cs index 24f3fb9..488bcae 100644 --- a/osrepodbmgr.Eto/dlgOpticalDisc.xeto.cs +++ b/osrepodbmgr.Eto/dlgOpticalDisc.xeto.cs @@ -25,249 +25,108 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.ObjectModel; using System.Linq; using Eto.Forms; using Eto.Serialization.Xaml; using Schemas; +using BorderType = Schemas.BorderType; namespace osrepodbmgr.Eto { public class dlgOpticalDisc : Dialog { - public OpticalDiscType Metadata; - public bool Modified; - - #region XAML UI elements -#pragma warning disable 0649 - TextBox txtImage; - TextBox txtFormat; - TextBox txtOffset; - TextBox txtSize; - TextBox txtWriteOffset; - TextBox txtMediaTracks; - TextBox txtMediaSessions; - TextBox txtCopyProtection; - TextBox txtDiscType; - TextBox txtDiscSubtype; - CheckBox chkSequence; - Label lblDiscTitle; - TextBox txtDiscTitle; - Label lblSequence; - NumericUpDown spSequence; - Label lblTotalMedia; - NumericUpDown spTotalMedia; - Label lblSide; - NumericUpDown spSide; - Label lblLayer; - NumericUpDown spLayer; - CheckBox chkDimensions; - CheckBox chkRound; - StackLayout stkDiameter; - NumericUpDown spDiameter; - StackLayout stkHeight; - NumericUpDown spHeight; - StackLayout stkWidth; - NumericUpDown spWidth; - StackLayout stkThickness; - NumericUpDown spThickness; - CheckBox chkLayers; - StackLayout stkLayers; - EnumDropDown cmbLayerType; - GridView treeLayers; - NumericUpDown spNewLayer; - TextBox txtLayerSize; - GridView treeRingCodes; - NumericUpDown spRingCodeLayer; - TextBox txtRingCode; - GridView treeMasteringSIDs; - NumericUpDown spMasteringSIDLayer; - TextBox txtMasteringSID; - GridView treeToolstamps; - NumericUpDown spToolstampLayer; - TextBox txtToolstamp; - GridView treeMouldSIDs; - NumericUpDown spMouldSIDLayer; - TextBox txtMouldSID; - GridView treeMouldTexts; - NumericUpDown spMouldTextLayer; - TextBox txtMouldText; - GroupBox frmTOC; - GridView treeTOC; - GroupBox frmCDText; - GridView treeCDText; - GroupBox frmATIP; - GridView treeATIP; - GroupBox frmPMA; - GridView treePMA; - GroupBox frmLeadIns; - GridView treeLeadIn; - GroupBox frmLeadOuts; - GridView treeLeadOut; - GroupBox frmPFI; - GridView treePFI; - GroupBox frmDMI; - GridView treeDMI; - GroupBox frmCMI; - GridView treeCMI; - GroupBox frmBCA; - GridView treeBCA; - GroupBox frmDCB; - GridView treeDCB; - GroupBox frmPRI; - GridView treePRI; - GroupBox frmMediaID; - GridView treeMediaID; - GroupBox frmPFIR; - GridView treePFIR; - GroupBox frmLastRMD; - GridView treeLastRMD; - GroupBox frmADIP; - GridView treeADIP; - GroupBox frmDDS; - GridView treeDDS; - GroupBox frmSAI; - GridView treeSAI; - GroupBox frmDI; - GridView treeDI; - GroupBox frmPAC; - GridView treePAC; - TextBox txtPS3Key; - TextBox txtPS3Serial; - GridView treeTracks; - TextBox txtTrackStart; - TextBox txtTrackEnd; - TextBox txtMSFStart; - TextBox txtMSFEnd; - TextBox txtTrackSequence; - TextBox txtSessionSequence; - ComboBox cmbTrackType; - TextBox txtBytesPerSector; - TextBox txtAcoustID; - GridView treePartitions; - Button btnCancelPartition; - Button btnRemovePartition; - Button btnEditPartition; - Button btnApplyPartition; - Button btnAddPartition; - NumericUpDown spPartitionSequence; - TextBox txtPartitionStart; - TextBox txtPartitionEnd; - TextBox txtPartitionType; - StackLayout stkPartitionFields1; - StackLayout stkPartitionFields2; - TextBox txtPartitionName; - TextBox txtPartitionDescription; - GroupBox frmFilesystems; - GridView treeFilesystems; - Button btnCancelTrack; - Button btnApplyTrack; - Button btnEditTrack; - CheckBox chkDumpHardware; - GridView treeDumpHardware; - Button btnCancelHardware; - Button btnRemoveHardware; - Button btnEditHardware; - Button btnApplyHardware; - Button btnAddHardware; - GroupBox frmHardware; - TextBox txtHWManufacturer; - TextBox txtHWModel; - TextBox txtHWRevision; - TextBox txtHWFirmware; - TextBox txtHWSerial; - GridView treeExtents; - NumericUpDown spExtentStart; - NumericUpDown spExtentEnd; - TextBox txtDumpName; - TextBox txtDumpVersion; - TextBox txtDumpOS; - GroupBox frmLayers; - GroupBox frmPartitions; - StackLayout stkTrackFields1; - StackLayout stkTrackFields2; - StackLayout stkTrackFields3; -#pragma warning restore 0649 - #endregion XAML UI elements - - TrackType trackIter; - PartitionType partitionIter; - FileSystemType filesystemIter; + // Non-editable fields + ChecksumType[] checksums; DumpHardwareType dumpHwIter; + bool editingDumpHw; + + bool editingPartition; + FileSystemType filesystemIter; + ObservableCollection lstADIP; + ObservableCollection lstATIP; + ObservableCollection lstBCA; + ObservableCollection lstCDText; + ObservableCollection lstCMI; + ObservableCollection lstDCB; + ObservableCollection lstDDS; + ObservableCollection lstDI; + ObservableCollection lstDMI; ObservableCollection lstDumpHw; - ObservableCollection lstTOC; - ObservableCollection lstCDText; - ObservableCollection lstATIP; - ObservableCollection lstPMA; - ObservableCollection lstPFI; - ObservableCollection lstDMI; - ObservableCollection lstCMI; - ObservableCollection lstBCA; - ObservableCollection lstDCB; - ObservableCollection lstPRI; - ObservableCollection lstMediaID; - ObservableCollection lstPFIR; - ObservableCollection lstLastRMD; - ObservableCollection lstADIP; - ObservableCollection lstDDS; - ObservableCollection lstSAI; - ObservableCollection lstDI; - ObservableCollection lstPAC; - ObservableCollection lstRingCodes; - ObservableCollection lstMasteringSIDs; - ObservableCollection lstToolstamps; - ObservableCollection lstMouldSIDs; - ObservableCollection lstMouldTexts; - ObservableCollection lstLayers; - ObservableCollection lstLeadIns; - ObservableCollection lstLeadOuts; - ObservableCollection lstTracks; + ObservableCollection lstLastRMD; + ObservableCollection lstLayers; + ObservableCollection lstLeadIns; + ObservableCollection lstLeadOuts; + ObservableCollection lstMasteringSIDs; + ObservableCollection lstMediaID; + ObservableCollection lstMouldSIDs; + ObservableCollection lstMouldTexts; + ObservableCollection lstPAC; + ObservableCollection lstPFI; + ObservableCollection lstPFIR; + ObservableCollection lstPMA; + ObservableCollection lstPRI; + ObservableCollection lstRingCodes; + ObservableCollection lstSAI; + ObservableCollection lstTOC; + ObservableCollection lstToolstamps; + ObservableCollection lstTracks; + CaseType mediaCase; + public OpticalDiscType Metadata; + public bool Modified; + PartitionType partitionIter; + ScansType scans; - bool editingPartition; - bool editingDumpHw; - - // Non-editable fields - ChecksumType[] checksums; - CaseType mediaCase; - ScansType scans; - XboxType xbox; + TrackType trackIter; + XboxType xbox; public dlgOpticalDisc() { XamlReader.Load(this); Modified = false; + #region Set partitions table treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sequence).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Sequence).Convert(v => v.ToString()) + }, HeaderText = "Sequence" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) + }, HeaderText = "Start" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) + }, HeaderText = "End" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Type) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Type)}, HeaderText = "Type" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Name) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Name)}, HeaderText = "Name" }); treePartitions.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Description) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Description)}, HeaderText = "Description" }); @@ -277,12 +136,12 @@ namespace osrepodbmgr.Eto #region Set filesystems table treeFilesystems.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Type) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Type)}, HeaderText = "Type" }); treeFilesystems.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.VolumeName) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.VolumeName)}, HeaderText = "Name" }); @@ -294,42 +153,53 @@ namespace osrepodbmgr.Eto treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Manufacturer) }, - HeaderText = "Manufacturer" + DataCell = + new TextBoxCell {Binding = Binding.Property(r => r.Manufacturer)}, + HeaderText = "Manufacturer" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Model) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Model)}, HeaderText = "Model" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Revision) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Revision)}, HeaderText = "Revision" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Firmware) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Firmware)}, HeaderText = "Firmware" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Serial) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Serial)}, HeaderText = "Serial" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.Name) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software).Convert(v => v?.Name) + }, HeaderText = "Software" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.Version) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software).Convert(v => v?.Version) + }, HeaderText = "Version" }); treeDumpHardware.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Software).Convert(v => v == null ? null : v.OperatingSystem) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Software) + .Convert(v => v?.OperatingSystem) + }, HeaderText = "Operating system" }); @@ -339,12 +209,18 @@ namespace osrepodbmgr.Eto treeExtents.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Start).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Start).Convert(v => v.ToString()) + }, HeaderText = "Start" }); treeExtents.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.End).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.End).Convert(v => v.ToString()) + }, HeaderText = "End" }); #endregion Set dump hardware table @@ -353,12 +229,15 @@ namespace osrepodbmgr.Eto lstTOC = new ObservableCollection(); treeTOC.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeTOC.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeTOC.DataStore = lstTOC; @@ -368,12 +247,15 @@ namespace osrepodbmgr.Eto lstCDText = new ObservableCollection(); treeCDText.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeCDText.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeCDText.DataStore = lstCDText; @@ -383,12 +265,15 @@ namespace osrepodbmgr.Eto lstATIP = new ObservableCollection(); treeATIP.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeATIP.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeATIP.DataStore = lstATIP; @@ -398,12 +283,15 @@ namespace osrepodbmgr.Eto lstPMA = new ObservableCollection(); treePMA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treePMA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treePMA.DataStore = lstPMA; @@ -413,12 +301,15 @@ namespace osrepodbmgr.Eto lstPFI = new ObservableCollection(); treePFI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treePFI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treePFI.DataStore = lstPFI; @@ -428,12 +319,15 @@ namespace osrepodbmgr.Eto lstDMI = new ObservableCollection(); treeDMI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeDMI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeDMI.DataStore = lstDMI; @@ -443,12 +337,15 @@ namespace osrepodbmgr.Eto lstCMI = new ObservableCollection(); treeCMI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeCMI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeCMI.DataStore = lstCMI; @@ -458,12 +355,15 @@ namespace osrepodbmgr.Eto lstBCA = new ObservableCollection(); treeBCA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeBCA.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeBCA.DataStore = lstBCA; @@ -473,12 +373,15 @@ namespace osrepodbmgr.Eto lstDCB = new ObservableCollection(); treeDCB.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeDCB.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeDCB.DataStore = lstDCB; @@ -488,12 +391,15 @@ namespace osrepodbmgr.Eto lstPRI = new ObservableCollection(); treePRI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treePRI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treePRI.DataStore = lstPRI; @@ -503,12 +409,15 @@ namespace osrepodbmgr.Eto lstMediaID = new ObservableCollection(); treeMediaID.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeMediaID.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeMediaID.DataStore = lstMediaID; @@ -518,12 +427,15 @@ namespace osrepodbmgr.Eto lstPFIR = new ObservableCollection(); treePFIR.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treePFIR.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treePFIR.DataStore = lstPFIR; @@ -533,12 +445,15 @@ namespace osrepodbmgr.Eto lstLastRMD = new ObservableCollection(); treeLastRMD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeLastRMD.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeLastRMD.DataStore = lstLastRMD; @@ -548,12 +463,15 @@ namespace osrepodbmgr.Eto lstADIP = new ObservableCollection(); treeADIP.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeADIP.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeADIP.DataStore = lstADIP; @@ -563,12 +481,15 @@ namespace osrepodbmgr.Eto lstDDS = new ObservableCollection(); treeDDS.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeDDS.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeDDS.DataStore = lstDDS; @@ -578,12 +499,15 @@ namespace osrepodbmgr.Eto lstSAI = new ObservableCollection(); treeSAI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeSAI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeSAI.DataStore = lstSAI; @@ -593,12 +517,15 @@ namespace osrepodbmgr.Eto lstDI = new ObservableCollection(); treeDI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeDI.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeDI.DataStore = lstDI; @@ -608,12 +535,15 @@ namespace osrepodbmgr.Eto lstPAC = new ObservableCollection(); treePAC.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treePAC.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treePAC.DataStore = lstPAC; @@ -623,12 +553,15 @@ namespace osrepodbmgr.Eto lstRingCodes = new ObservableCollection(); treeRingCodes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeRingCodes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Value)}, HeaderText = "Code" }); treeRingCodes.DataStore = lstRingCodes; @@ -638,12 +571,15 @@ namespace osrepodbmgr.Eto lstMasteringSIDs = new ObservableCollection(); treeMasteringSIDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeMasteringSIDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Value)}, HeaderText = "Code" }); treeMasteringSIDs.DataStore = lstMasteringSIDs; @@ -653,12 +589,15 @@ namespace osrepodbmgr.Eto lstToolstamps = new ObservableCollection(); treeToolstamps.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeToolstamps.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Value)}, HeaderText = "Code" }); treeToolstamps.DataStore = lstToolstamps; @@ -668,12 +607,15 @@ namespace osrepodbmgr.Eto lstMouldSIDs = new ObservableCollection(); treeMouldSIDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeMouldSIDs.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Value)}, HeaderText = "Code" }); treeMouldSIDs.DataStore = lstMouldSIDs; @@ -683,21 +625,23 @@ namespace osrepodbmgr.Eto lstMouldTexts = new ObservableCollection(); treeMouldTexts.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeMouldTexts.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Value)}, HeaderText = "Code" }); treeMouldTexts.DataStore = lstMouldTexts; #endregion Set mould text table #region Set layer type combo box - cmbLayerType = new EnumDropDown(); - stkLayers.Items.Add(new StackLayoutItem { Control = cmbLayerType }); - + cmbLayerType = new EnumDropDown(); + stkLayers.Items.Add(new StackLayoutItem {Control = cmbLayerType}); #endregion Set layer type combo box #region Set layers table @@ -705,12 +649,18 @@ namespace osrepodbmgr.Eto treeLayers.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.layer).Convert(v => v.ToString()) + }, HeaderText = "Layer" }); treeLayers.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Value).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Value).Convert(v => v.ToString()) + }, HeaderText = "Start" }); @@ -720,40 +670,52 @@ namespace osrepodbmgr.Eto #endregion Set layers table #region Set Lead-In table - lstLeadIns = new ObservableCollection(); + lstLeadIns = new ObservableCollection(); treeLeadIn.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeLeadIn.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeLeadIn.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.session).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.session).Convert(v => v.ToString()) + }, HeaderText = "Session" }); treeLeadIn.DataStore = lstLeadIns; #endregion Set Lead-In table #region Set Lead-Out table - lstLeadOuts = new ObservableCollection(); + lstLeadOuts = new ObservableCollection(); treeLeadOut.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image)}, HeaderText = "File" }); treeLeadOut.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeLeadOut.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.session).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.session).Convert(v => v.ToString()) + }, HeaderText = "Session" }); treeLeadOut.DataStore = lstLeadOuts; @@ -764,67 +726,92 @@ namespace osrepodbmgr.Eto treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sequence.TrackNumber).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Sequence.TrackNumber).Convert(v => v.ToString()) + }, HeaderText = "Track" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sequence.Session).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Sequence.Session).Convert(v => v.ToString()) + }, HeaderText = "Session" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.Value) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image.Value)}, HeaderText = "File" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Size).Convert(v => v.ToString()) + }, HeaderText = "Size" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.format) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Image.format)}, HeaderText = "Format" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Image.offset).Convert(v => v.ToString()) + }, HeaderText = "Offset" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.StartMSF) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.StartMSF)}, HeaderText = "MSF Start" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.EndMSF) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.EndMSF)}, HeaderText = "MSF End" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.StartSector).Convert(v => v.ToString()) + }, HeaderText = "LBA Start" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.EndSector).Convert(v => v.ToString()) + }, HeaderText = "LBA End" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.TrackType1).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.TrackType1) + .Convert(v => v.ToString()) + }, HeaderText = "Type" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.BytesPerSector).Convert(v => v.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.BytesPerSector).Convert(v => v.ToString()) + }, HeaderText = "Bytes per sector" }); treeTracks.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.AccoustID) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.AccoustID)}, HeaderText = "Accoust ID" }); @@ -834,39 +821,35 @@ namespace osrepodbmgr.Eto #endregion Set tracks table spExtentStart.MaxValue = double.MaxValue; - spExtentEnd.MaxValue = double.MaxValue; + spExtentEnd.MaxValue = double.MaxValue; } public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; - if(Metadata.Image.offsetSpecified) - txtOffset.Text = Metadata.Image.offset.ToString(); - txtSize.Text = Metadata.Size.ToString(); + txtImage.Text = Metadata.Image.Value; + txtFormat.Text = Metadata.Image.format; + if(Metadata.Image.offsetSpecified) txtOffset.Text = Metadata.Image.offset.ToString(); + txtSize.Text = Metadata.Size.ToString(); if(Metadata.Sequence != null) { - lblDiscTitle.Visible = true; - lblDiscTitle.Visible = true; - lblSequence.Visible = true; - spSequence.Visible = true; - lblTotalMedia.Visible = true; - spTotalMedia.Visible = true; - lblSide.Visible = true; - spSide.Visible = true; - lblLayer.Visible = true; - spLayer.Visible = true; - chkSequence.Checked = true; - txtDiscTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; - if(Metadata.Sequence.SideSpecified) - spSide.Value = Metadata.Sequence.Side; - if(Metadata.Sequence.LayerSpecified) - spLayer.Value = Metadata.Sequence.Layer; + lblDiscTitle.Visible = true; + lblDiscTitle.Visible = true; + lblSequence.Visible = true; + spSequence.Visible = true; + lblTotalMedia.Visible = true; + spTotalMedia.Visible = true; + lblSide.Visible = true; + spSide.Visible = true; + lblLayer.Visible = true; + spLayer.Visible = true; + chkSequence.Checked = true; + txtDiscTitle.Text = Metadata.Sequence.MediaTitle; + spSequence.Value = Metadata.Sequence.MediaSequence; + spTotalMedia.Value = Metadata.Sequence.TotalMedia; + if(Metadata.Sequence.SideSpecified) spSide.Value = Metadata.Sequence.Side; + if(Metadata.Sequence.LayerSpecified) spLayer.Value = Metadata.Sequence.Layer; } if(Metadata.Layers != null) @@ -875,162 +858,176 @@ namespace osrepodbmgr.Eto frmLayers.Visible = true; cmbLayerType.SelectedValue = Metadata.Layers.type; - lstLayers = new ObservableCollection(Metadata.Layers.Sectors); - treeLayers.DataStore = lstLayers; + lstLayers = new ObservableCollection(Metadata.Layers.Sectors); + treeLayers.DataStore = lstLayers; } checksums = Metadata.Checksums; - xbox = Metadata.Xbox; + xbox = Metadata.Xbox; if(Metadata.RingCode != null) { - lstRingCodes = new ObservableCollection(Metadata.RingCode); + lstRingCodes = new ObservableCollection(Metadata.RingCode); treeRingCodes.DataStore = lstRingCodes; } if(Metadata.MasteringSID != null) { - lstMasteringSIDs = new ObservableCollection(Metadata.MasteringSID); + lstMasteringSIDs = new ObservableCollection(Metadata.MasteringSID); treeMasteringSIDs.DataStore = lstMasteringSIDs; } if(Metadata.Toolstamp != null) { - lstToolstamps = new ObservableCollection(Metadata.Toolstamp); + lstToolstamps = new ObservableCollection(Metadata.Toolstamp); treeToolstamps.DataStore = lstToolstamps; } if(Metadata.MouldSID != null) { - lstMouldSIDs = new ObservableCollection(Metadata.MouldSID); + lstMouldSIDs = new ObservableCollection(Metadata.MouldSID); treeMouldSIDs.DataStore = lstMouldSIDs; } if(Metadata.MouldText != null) { - lstMouldTexts = new ObservableCollection(Metadata.MouldText); + lstMouldTexts = new ObservableCollection(Metadata.MouldText); treeMouldTexts.DataStore = lstMouldTexts; } - if(Metadata.DiscType != null) - txtDiscType.Text = Metadata.DiscType; - if(Metadata.DiscSubType != null) - txtDiscSubtype.Text = Metadata.DiscSubType; - if(Metadata.OffsetSpecified) - txtWriteOffset.Text = Metadata.Offset.ToString(); - txtMediaTracks.Text = Metadata.Tracks[0].ToString(); - txtMediaSessions.Text = Metadata.Sessions.ToString(); - if(Metadata.CopyProtection != null) - txtCopyProtection.Text = Metadata.CopyProtection; + if(Metadata.DiscType != null) txtDiscType.Text = Metadata.DiscType; + if(Metadata.DiscSubType != null) txtDiscSubtype.Text = Metadata.DiscSubType; + if(Metadata.OffsetSpecified) txtWriteOffset.Text = Metadata.Offset.ToString(); + txtMediaTracks.Text = Metadata.Tracks[0].ToString(); + txtMediaSessions.Text = Metadata.Sessions.ToString(); + if(Metadata.CopyProtection != null) txtCopyProtection.Text = Metadata.CopyProtection; if(Metadata.Dimensions != null) { chkDimensions.Checked = true; if(Metadata.Dimensions.DiameterSpecified) { - chkRound.Checked = true; + chkRound.Checked = true; stkDiameter.Visible = true; - spDiameter.Value = Metadata.Dimensions.Diameter; + spDiameter.Value = Metadata.Dimensions.Diameter; } else { stkHeight.Visible = true; - spHeight.Value = Metadata.Dimensions.Height; - stkWidth.Visible = true; - spWidth.Value = Metadata.Dimensions.Width; + spHeight.Value = Metadata.Dimensions.Height; + stkWidth.Visible = true; + spWidth.Value = Metadata.Dimensions.Width; } + stkThickness.Visible = true; - spThickness.Value = Metadata.Dimensions.Thickness; + spThickness.Value = Metadata.Dimensions.Thickness; } mediaCase = Metadata.Case; - scans = Metadata.Scans; + scans = Metadata.Scans; if(Metadata.PFI != null) { frmPFI.Visible = true; lstPFI.Add(Metadata.PFI); } + if(Metadata.DMI != null) { frmDMI.Visible = true; lstDMI.Add(Metadata.DMI); } + if(Metadata.CMI != null) { frmCMI.Visible = true; lstCMI.Add(Metadata.CMI); } + if(Metadata.BCA != null) { frmBCA.Visible = true; lstBCA.Add(Metadata.BCA); } + if(Metadata.ATIP != null) { frmATIP.Visible = true; lstATIP.Add(Metadata.ATIP); } + if(Metadata.ADIP != null) { frmADIP.Visible = true; lstADIP.Add(Metadata.ADIP); } + if(Metadata.PMA != null) { frmPMA.Visible = true; lstPMA.Add(Metadata.PMA); } + if(Metadata.DDS != null) { frmDDS.Visible = true; lstDDS.Add(Metadata.DDS); } + if(Metadata.SAI != null) { frmSAI.Visible = true; lstSAI.Add(Metadata.SAI); } + if(Metadata.LastRMD != null) { frmLastRMD.Visible = true; lstLastRMD.Add(Metadata.LastRMD); } + if(Metadata.PRI != null) { frmPRI.Visible = true; lstPRI.Add(Metadata.PRI); } + if(Metadata.MediaID != null) { frmMediaID.Visible = true; lstMediaID.Add(Metadata.MediaID); } + if(Metadata.PFIR != null) { frmPFIR.Visible = true; lstPFIR.Add(Metadata.PFIR); } + if(Metadata.DCB != null) { frmDCB.Visible = true; lstDCB.Add(Metadata.DCB); } + if(Metadata.DI != null) { frmDI.Visible = true; lstDI.Add(Metadata.DI); } + if(Metadata.PAC != null) { frmPAC.Visible = true; lstPAC.Add(Metadata.PAC); } + if(Metadata.TOC != null) { frmTOC.Visible = true; lstTOC.Add(Metadata.TOC); } + if(Metadata.LeadInCdText != null) { frmCDText.Visible = true; @@ -1039,72 +1036,72 @@ namespace osrepodbmgr.Eto if(Metadata.LeadIn != null) { - frmLeadIns.Visible = true; - lstLeadIns = new ObservableCollection(Metadata.LeadIn); + frmLeadIns.Visible = true; + lstLeadIns = new ObservableCollection(Metadata.LeadIn); treeLeadIn.DataStore = lstLeadIns; } + if(Metadata.LeadOut != null) { - frmLeadOuts.Visible = true; - lstLeadOuts = new ObservableCollection(Metadata.LeadOut); + frmLeadOuts.Visible = true; + lstLeadOuts = new ObservableCollection(Metadata.LeadOut); treeLeadOut.DataStore = lstLeadOuts; } if(Metadata.PS3Encryption != null) { - txtPS3Key.Text = Metadata.PS3Encryption.Key; + txtPS3Key.Text = Metadata.PS3Encryption.Key; txtPS3Serial.Text = Metadata.PS3Encryption.Serial; } - lstTracks = new ObservableCollection(Metadata.Track); + lstTracks = new ObservableCollection(Metadata.Track); treeTracks.DataStore = lstTracks; if(Metadata.DumpHardwareArray != null) { - chkDumpHardware.Checked = true; - treeDumpHardware.Visible = true; - btnAddHardware.Visible = true; - btnEditHardware.Visible = true; + chkDumpHardware.Checked = true; + treeDumpHardware.Visible = true; + btnAddHardware.Visible = true; + btnEditHardware.Visible = true; btnRemoveHardware.Visible = true; - lstDumpHw = new ObservableCollection(Metadata.DumpHardwareArray); + lstDumpHw = new ObservableCollection(Metadata.DumpHardwareArray); treeDumpHardware.DataStore = lstDumpHw; } } protected void OnChkSequenceToggled(object sender, EventArgs e) { - lblDiscTitle.Visible = chkSequence.Checked.Value; - txtDiscTitle.Visible = chkSequence.Checked.Value; - lblSequence.Visible = chkSequence.Checked.Value; - spSequence.Visible = chkSequence.Checked.Value; + lblDiscTitle.Visible = chkSequence.Checked.Value; + txtDiscTitle.Visible = chkSequence.Checked.Value; + lblSequence.Visible = chkSequence.Checked.Value; + spSequence.Visible = chkSequence.Checked.Value; lblTotalMedia.Visible = chkSequence.Checked.Value; - spTotalMedia.Visible = chkSequence.Checked.Value; - lblSide.Visible = chkSequence.Checked.Value; - spSide.Visible = chkSequence.Checked.Value; - lblLayer.Visible = chkSequence.Checked.Value; - spLayer.Visible = chkSequence.Checked.Value; + spTotalMedia.Visible = chkSequence.Checked.Value; + lblSide.Visible = chkSequence.Checked.Value; + spSide.Visible = chkSequence.Checked.Value; + lblLayer.Visible = chkSequence.Checked.Value; + spLayer.Visible = chkSequence.Checked.Value; } protected void OnChkDimensionsToggled(object sender, EventArgs e) { - chkRound.Visible = chkDimensions.Checked.Value; + chkRound.Visible = chkDimensions.Checked.Value; stkThickness.Visible = chkDimensions.Checked.Value; - if(chkDimensions.Checked.Value) - OnChkRoundToggled(sender, e); + if(chkDimensions.Checked.Value) OnChkRoundToggled(sender, e); else { stkDiameter.Visible = false; - stkHeight.Visible = false; - stkWidth.Visible = false; + stkHeight.Visible = false; + stkWidth.Visible = false; } } - protected void OnChkRoundToggled(object sender, EventArgs e) + void OnChkRoundToggled(object sender, EventArgs e) { stkDiameter.Visible = chkRound.Checked.Value; - stkHeight.Visible = !chkRound.Checked.Value; - stkWidth.Visible = !chkRound.Checked.Value; + stkHeight.Visible = !chkRound.Checked.Value; + stkWidth.Visible = !chkRound.Checked.Value; } protected void OnChkLayersToggled(object sender, EventArgs e) @@ -1112,82 +1109,77 @@ namespace osrepodbmgr.Eto frmLayers.Visible = chkLayers.Checked.Value; } - void ErrorMessageBox(string text) + static void ErrorMessageBox(string text) { MessageBox.Show(text, MessageBoxType.Error); } protected void OnBtnAddLayerClicked(object sender, EventArgs e) { - long ltmp; + if(string.IsNullOrWhiteSpace(txtLayerSize.Text)) ErrorMessageBox("Layer size must not be empty"); - if(string.IsNullOrWhiteSpace(txtLayerSize.Text)) - ErrorMessageBox("Layer size must not be empty"); + if(!long.TryParse(txtLayerSize.Text, out long ltmp)) ErrorMessageBox("Layer size must be a number"); - if(!long.TryParse(txtLayerSize.Text, out ltmp)) - ErrorMessageBox("Layer size must be a number"); + if(ltmp < 0) ErrorMessageBox("Layer size must be a positive"); - if(ltmp < 0) - ErrorMessageBox("Layer size must be a positive"); + if(ltmp == 0) ErrorMessageBox("Layer size must be bigger than 0"); - if(ltmp == 0) - ErrorMessageBox("Layer size must be bigger than 0"); - - lstLayers.Add(new SectorsType { layer = (int)spNewLayer.Value, layerSpecified = true, Value = long.Parse(txtLayerSize.Text) }); + lstLayers.Add(new SectorsType + { + layer = (int)spNewLayer.Value, + layerSpecified = true, + Value = long.Parse(txtLayerSize.Text) + }); } protected void OnBtnRemoveLayerClicked(object sender, EventArgs e) { - if(treeLayers.SelectedItem != null) - lstLayers.Remove((SectorsType)treeLayers.SelectedItem); + if(treeLayers.SelectedItem != null) lstLayers.Remove((SectorsType)treeLayers.SelectedItem); } protected void OnBtnRemovePartitionClicked(object sender, EventArgs e) { if(treePartitions.SelectedItem != null) - ((ObservableCollection)treePartitions.DataStore).Remove((PartitionType)treePartitions.SelectedItem); + ((ObservableCollection)treePartitions.DataStore).Remove((PartitionType)treePartitions + .SelectedItem); } protected void OnBtnEditPartitionClicked(object sender, EventArgs e) { - if(treePartitions.SelectedItem == null) - return; + if(treePartitions.SelectedItem == null) return; partitionIter = (PartitionType)treePartitions.SelectedItem; - spPartitionSequence.Value = partitionIter.Sequence; - txtPartitionStart.Text = partitionIter.StartSector.ToString(); - txtPartitionEnd.Text = partitionIter.EndSector.ToString(); - txtPartitionType.Text = partitionIter.Type; - txtPartitionName.Text = partitionIter.Name; + spPartitionSequence.Value = partitionIter.Sequence; + txtPartitionStart.Text = partitionIter.StartSector.ToString(); + txtPartitionEnd.Text = partitionIter.EndSector.ToString(); + txtPartitionType.Text = partitionIter.Type; + txtPartitionName.Text = partitionIter.Name; txtPartitionDescription.Text = partitionIter.Description; - if(partitionIter.FileSystems != null) - treeFilesystems.DataStore = new ObservableCollection(partitionIter.FileSystems); - else - treeFilesystems.DataStore = new ObservableCollection(); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; + treeFilesystems.DataStore = partitionIter.FileSystems != null + ? new ObservableCollection(partitionIter.FileSystems) + : new ObservableCollection(); + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; stkPartitionFields1.Visible = true; stkPartitionFields2.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = true; } protected void OnBtnApplyPartitionClicked(object sender, EventArgs e) { - int temp, temp2; - - if(!int.TryParse(txtPartitionStart.Text, out temp)) + if(!int.TryParse(txtPartitionStart.Text, out int temp)) { ErrorMessageBox("Partition start must be a number"); return; } - if(!int.TryParse(txtPartitionEnd.Text, out temp2)) + if(!int.TryParse(txtPartitionEnd.Text, out int temp2)) { ErrorMessageBox("Partition end must be a number"); return; @@ -1199,47 +1191,48 @@ namespace osrepodbmgr.Eto return; } - if(editingPartition) - ((ObservableCollection)treePartitions.DataStore).Remove(partitionIter); - partitionIter = new PartitionType(); - partitionIter.Sequence = (int)spPartitionSequence.Value; - partitionIter.StartSector = int.Parse(txtPartitionStart.Text); - partitionIter.EndSector = int.Parse(txtPartitionEnd.Text); - partitionIter.Type = txtPartitionType.Text; - partitionIter.Name = txtPartitionName.Text; - partitionIter.Description = txtPartitionDescription.Text; + if(editingPartition) ((ObservableCollection)treePartitions.DataStore).Remove(partitionIter); + partitionIter = new PartitionType + { + Sequence = (int)spPartitionSequence.Value, + StartSector = int.Parse(txtPartitionStart.Text), + EndSector = int.Parse(txtPartitionEnd.Text), + Type = txtPartitionType.Text, + Name = txtPartitionName.Text, + Description = txtPartitionDescription.Text + }; if(((ObservableCollection)treeFilesystems.DataStore).Count > 0) partitionIter.FileSystems = ((ObservableCollection)treeFilesystems.DataStore).ToArray(); ((ObservableCollection)treePartitions.DataStore).Add(partitionIter); - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; stkPartitionFields1.Visible = false; stkPartitionFields2.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnAddPartitionClicked(object sender, EventArgs e) { - spPartitionSequence.Value = 0; - txtPartitionStart.Text = ""; - txtPartitionEnd.Text = ""; - txtPartitionType.Text = ""; - txtPartitionName.Text = ""; + spPartitionSequence.Value = 0; + txtPartitionStart.Text = ""; + txtPartitionEnd.Text = ""; + txtPartitionType.Text = ""; + txtPartitionName.Text = ""; txtPartitionDescription.Text = ""; - treeFilesystems.DataStore = new ObservableCollection(); + treeFilesystems.DataStore = new ObservableCollection(); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; stkPartitionFields1.Visible = true; stkPartitionFields2.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = false; } @@ -1247,27 +1240,24 @@ namespace osrepodbmgr.Eto protected void OnBtnRemoveFilesystemClicked(object sender, EventArgs e) { if(treeFilesystems.SelectedItem != null) - ((ObservableCollection)treeFilesystems.DataStore).Remove((FileSystemType)treeFilesystems.SelectedItem); + ((ObservableCollection)treeFilesystems.DataStore).Remove((FileSystemType)treeFilesystems + .SelectedItem); } protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) { - if(treeFilesystems.SelectedItem == null) - return; + if(treeFilesystems.SelectedItem == null) return; filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.Metadata = filesystemIter; + dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; _dlgFilesystem.FillFields(); _dlgFilesystem.ShowModal(this); - if(_dlgFilesystem.Modified) + if(!_dlgFilesystem.Modified) return; - { - ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata); - } + ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata); } protected void OnBtnAddFilesystemClicked(object sender, EventArgs e) @@ -1281,11 +1271,11 @@ namespace osrepodbmgr.Eto protected void OnBtnCancelTrackClicked(object sender, EventArgs e) { - btnEditTrack.Visible = true; - btnApplyTrack.Visible = false; + btnEditTrack.Visible = true; + btnApplyTrack.Visible = false; btnCancelTrack.Visible = false; - frmPartitions.Visible = false; + frmPartitions.Visible = false; stkTrackFields1.Visible = false; stkTrackFields2.Visible = false; stkTrackFields3.Visible = false; @@ -1293,37 +1283,47 @@ namespace osrepodbmgr.Eto protected void OnBtnApplyTrackClicked(object sender, EventArgs e) { - string file = trackIter.Image.Value; - long filesize = trackIter.Size; - string fileformat = trackIter.Image.format; - long fileoffset = trackIter.Image.offset; - ChecksumType[] checksums = trackIter.Checksums; - SubChannelType subchannel = trackIter.SubChannel; - TrackTypeTrackType trackType = (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), cmbTrackType.Text); + string file = trackIter.Image.Value; + long filesize = trackIter.Size; + string fileformat = trackIter.Image.format; + long fileoffset = trackIter.Image.offset; + ChecksumType[] checksums = trackIter.Checksums; + SubChannelType subchannel = trackIter.SubChannel; + TrackTypeTrackType trackType = + (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), cmbTrackType.Text); lstTracks.Remove(trackIter); - trackIter = new TrackType(); - trackIter.AccoustID = txtAcoustID.Text; - trackIter.BytesPerSector = int.Parse(txtBytesPerSector.Text); - trackIter.Checksums = checksums; - trackIter.EndMSF = txtMSFEnd.Text; - trackIter.EndSector = long.Parse(txtTrackEnd.Text); - trackIter.Image = new ImageType { format = fileformat, offset = fileoffset, offsetSpecified = true, Value = file }; - trackIter.Sequence = new TrackSequenceType { Session = int.Parse(txtSessionSequence.Text), TrackNumber = int.Parse(txtTrackSequence.Text) }; - trackIter.Size = filesize; - trackIter.StartMSF = txtMSFStart.Text; - trackIter.StartSector = long.Parse(txtTrackStart.Text); - trackIter.SubChannel = subchannel; - trackIter.TrackType1 = trackType; + trackIter = new TrackType + { + AccoustID = txtAcoustID.Text, + BytesPerSector = int.Parse(txtBytesPerSector.Text), + Checksums = checksums, + EndMSF = txtMSFEnd.Text, + EndSector = long.Parse(txtTrackEnd.Text), + Image = + new ImageType {format = fileformat, offset = fileoffset, offsetSpecified = true, Value = file}, + Sequence = + new TrackSequenceType + { + Session = int.Parse(txtSessionSequence.Text), + TrackNumber = int.Parse(txtTrackSequence.Text) + }, + Size = filesize, + StartMSF = txtMSFStart.Text, + StartSector = long.Parse(txtTrackStart.Text), + SubChannel = subchannel, + TrackType1 = trackType + }; if(((ObservableCollection)treePartitions.DataStore).Count > 0) - trackIter.FileSystemInformation = ((ObservableCollection)treePartitions.DataStore).ToArray(); + trackIter.FileSystemInformation = + ((ObservableCollection)treePartitions.DataStore).ToArray(); lstTracks.Add(trackIter); - btnEditTrack.Visible = true; - btnApplyTrack.Visible = false; - btnCancelTrack.Visible = false; - frmPartitions.Visible = false; + btnEditTrack.Visible = true; + btnApplyTrack.Visible = false; + btnCancelTrack.Visible = false; + frmPartitions.Visible = false; stkTrackFields1.Visible = false; stkTrackFields2.Visible = false; stkTrackFields3.Visible = false; @@ -1331,26 +1331,25 @@ namespace osrepodbmgr.Eto protected void OnBtnEditTrackClicked(object sender, EventArgs e) { - if(treeTracks.SelectedItem == null) - return; + if(treeTracks.SelectedItem == null) return; trackIter = (TrackType)treeTracks.SelectedItem; - txtTrackSequence.Text = trackIter.Sequence.TrackNumber.ToString(); - txtSessionSequence.Text = trackIter.Sequence.Session.ToString(); - txtMSFStart.Text = trackIter.StartMSF; - txtMSFEnd.Text = trackIter.EndMSF; - txtTrackStart.Text = trackIter.StartSector.ToString(); - txtTrackEnd.Text = trackIter.EndSector.ToString(); - cmbTrackType.Text = trackIter.TrackType1.ToString(); - txtBytesPerSector.Text = trackIter.BytesPerSector.ToString(); - txtAcoustID.Text = trackIter.AccoustID; + txtTrackSequence.Text = trackIter.Sequence.TrackNumber.ToString(); + txtSessionSequence.Text = trackIter.Sequence.Session.ToString(); + txtMSFStart.Text = trackIter.StartMSF; + txtMSFEnd.Text = trackIter.EndMSF; + txtTrackStart.Text = trackIter.StartSector.ToString(); + txtTrackEnd.Text = trackIter.EndSector.ToString(); + cmbTrackType.Text = trackIter.TrackType1.ToString(); + txtBytesPerSector.Text = trackIter.BytesPerSector.ToString(); + txtAcoustID.Text = trackIter.AccoustID; treePartitions.DataStore = new ObservableCollection(trackIter.FileSystemInformation); - btnEditTrack.Visible = false; - btnApplyTrack.Visible = true; - btnCancelTrack.Visible = true; - frmPartitions.Visible = true; + btnEditTrack.Visible = false; + btnApplyTrack.Visible = true; + btnCancelTrack.Visible = true; + frmPartitions.Visible = true; stkTrackFields1.Visible = true; stkTrackFields2.Visible = true; stkTrackFields3.Visible = true; @@ -1358,81 +1357,82 @@ namespace osrepodbmgr.Eto protected void OnChkDumpHardwareToggled(object sender, EventArgs e) { - treeDumpHardware.Visible = chkDumpHardware.Checked.Value; - btnAddHardware.Visible = chkDumpHardware.Checked.Value; + treeDumpHardware.Visible = chkDumpHardware.Checked.Value; + btnAddHardware.Visible = chkDumpHardware.Checked.Value; btnRemoveHardware.Visible = chkDumpHardware.Checked.Value; - btnEditHardware.Visible = chkDumpHardware.Checked.Value; + btnEditHardware.Visible = chkDumpHardware.Checked.Value; btnCancelHardware.Visible = false; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnCancelHardwareClicked(object sender, EventArgs e) { - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnRemoveHardwareClicked(object sender, EventArgs e) { - if(treeDumpHardware.SelectedItem != null) - lstDumpHw.Remove((DumpHardwareType)treeDumpHardware.SelectedItem); + if(treeDumpHardware.SelectedItem != null) lstDumpHw.Remove((DumpHardwareType)treeDumpHardware.SelectedItem); } protected void OnBtnApplyHardwareClicked(object sender, EventArgs e) { - if(editingDumpHw) - lstDumpHw.Remove(dumpHwIter); + if(editingDumpHw) lstDumpHw.Remove(dumpHwIter); - dumpHwIter = new DumpHardwareType(); - dumpHwIter.Manufacturer = txtHWManufacturer.Text; - dumpHwIter.Model = txtHWModel.Text; - dumpHwIter.Revision = txtHWRevision.Text; - dumpHwIter.Firmware = txtHWFirmware.Text; - dumpHwIter.Serial = txtHWSerial.Text; - if(!string.IsNullOrWhiteSpace(txtDumpName.Text) || !string.IsNullOrWhiteSpace(txtDumpVersion.Text) || !string.IsNullOrWhiteSpace(txtDumpOS.Text)) + dumpHwIter = new DumpHardwareType { - dumpHwIter.Software = new SoftwareType(); - dumpHwIter.Software.Name = txtDumpName.Text; - dumpHwIter.Software.Version = txtDumpVersion.Text; - dumpHwIter.Software.OperatingSystem = txtDumpOS.Text; - } + Manufacturer = txtHWManufacturer.Text, + Model = txtHWModel.Text, + Revision = txtHWRevision.Text, + Firmware = txtHWFirmware.Text, + Serial = txtHWSerial.Text + }; + if(!string.IsNullOrWhiteSpace(txtDumpName.Text) || !string.IsNullOrWhiteSpace(txtDumpVersion.Text) || + !string.IsNullOrWhiteSpace(txtDumpOS.Text)) + dumpHwIter.Software = new SoftwareType + { + Name = txtDumpName.Text, + Version = txtDumpVersion.Text, + OperatingSystem = txtDumpOS.Text + }; if(((ObservableCollection)treeExtents.DataStore).Count > 0) dumpHwIter.Extents = ((ObservableCollection)treeExtents.DataStore).ToArray(); lstDumpHw.Add(dumpHwIter); - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; - frmHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; + frmHardware.Visible = false; } protected void OnBtnAddHardwareClicked(object sender, EventArgs e) { txtHWManufacturer.Text = ""; - txtHWModel.Text = ""; - txtHWRevision.Text = ""; - txtHWFirmware.Text = ""; - txtHWSerial.Text = ""; - txtDumpName.Text = ""; - txtDumpVersion.Text = ""; - txtDumpOS.Text = ""; - treeExtents.DataStore = new ObservableCollection(); + txtHWModel.Text = ""; + txtHWRevision.Text = ""; + txtHWFirmware.Text = ""; + txtHWSerial.Text = ""; + txtDumpName.Text = ""; + txtDumpVersion.Text = ""; + txtDumpOS.Text = ""; + treeExtents.DataStore = new ObservableCollection(); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; - frmHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; + frmHardware.Visible = true; editingDumpHw = false; } @@ -1445,53 +1445,66 @@ namespace osrepodbmgr.Eto protected void OnBtnEditHardwareClicked(object sender, EventArgs e) { - if(treeDumpHardware.SelectedItem == null) - return; + if(treeDumpHardware.SelectedItem == null) return; dumpHwIter = (DumpHardwareType)treeDumpHardware.SelectedItem; txtHWManufacturer.Text = dumpHwIter.Manufacturer; - txtHWModel.Text = dumpHwIter.Model; - txtHWRevision.Text = dumpHwIter.Revision; - txtHWFirmware.Text = dumpHwIter.Firmware; - txtHWSerial.Text = dumpHwIter.Serial; + txtHWModel.Text = dumpHwIter.Model; + txtHWRevision.Text = dumpHwIter.Revision; + txtHWFirmware.Text = dumpHwIter.Firmware; + txtHWSerial.Text = dumpHwIter.Serial; if(dumpHwIter.Software != null) { - txtDumpName.Text = dumpHwIter.Software.Name; + txtDumpName.Text = dumpHwIter.Software.Name; txtDumpVersion.Text = dumpHwIter.Software.Version; - txtDumpOS.Text = dumpHwIter.Software.OperatingSystem; + txtDumpOS.Text = dumpHwIter.Software.OperatingSystem; } + treeExtents.DataStore = new ObservableCollection(dumpHwIter.Extents); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; - frmHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; + frmHardware.Visible = true; editingDumpHw = true; } protected void OnBtnAddExtentClicked(object sender, EventArgs e) { - ((ObservableCollection)treeExtents.DataStore).Add(new ExtentType { Start = (ulong)spExtentStart.Value, End = (ulong)spExtentEnd.Value }); + ((ObservableCollection)treeExtents.DataStore).Add(new ExtentType + { + Start = (ulong)spExtentStart.Value, + End = (ulong)spExtentEnd.Value + }); } protected void OnBtnAddRingCodeClicked(object sender, EventArgs e) { - lstRingCodes.Add(new LayeredTextType { layer = (int)spRingCodeLayer.Value, layerSpecified = true, Value = txtRingCode.Text }); + lstRingCodes.Add(new LayeredTextType + { + layer = (int)spRingCodeLayer.Value, + layerSpecified = true, + Value = txtRingCode.Text + }); } protected void OnBtnRemoveRingCodeClicked(object sender, EventArgs e) { - if(treeRingCodes.SelectedItem != null) - lstRingCodes.Remove((LayeredTextType)treeRingCodes.SelectedItem); + if(treeRingCodes.SelectedItem != null) lstRingCodes.Remove((LayeredTextType)treeRingCodes.SelectedItem); } protected void OnBtnAddMasteringSIDClicked(object sender, EventArgs e) { - lstMasteringSIDs.Add(new LayeredTextType { layer = (int)spMasteringSIDLayer.Value, layerSpecified = true, Value = txtMasteringSID.Text }); + lstMasteringSIDs.Add(new LayeredTextType + { + layer = (int)spMasteringSIDLayer.Value, + layerSpecified = true, + Value = txtMasteringSID.Text + }); } protected void OnBtnRemoveMasteringSIDClicked(object sender, EventArgs e) @@ -1502,41 +1515,51 @@ namespace osrepodbmgr.Eto protected void OnBtnAddToolstampClicked(object sender, EventArgs e) { - lstToolstamps.Add(new LayeredTextType { layer = (int)spToolstampLayer.Value, layerSpecified = true, Value = txtToolstamp.Text }); + lstToolstamps.Add(new LayeredTextType + { + layer = (int)spToolstampLayer.Value, + layerSpecified = true, + Value = txtToolstamp.Text + }); } protected void OnBtnRemoveToolstampClicked(object sender, EventArgs e) { - if(treeToolstamps.SelectedItem != null) - lstToolstamps.Remove((LayeredTextType)treeToolstamps.SelectedItem); + if(treeToolstamps.SelectedItem != null) lstToolstamps.Remove((LayeredTextType)treeToolstamps.SelectedItem); } protected void OnBtnAddMouldSIDClicked(object sender, EventArgs e) { - lstMouldSIDs.Add(new LayeredTextType { layer = (int)spMouldSIDLayer.Value, layerSpecified = true, Value = txtMouldSID.Text }); + lstMouldSIDs.Add(new LayeredTextType + { + layer = (int)spMouldSIDLayer.Value, + layerSpecified = true, + Value = txtMouldSID.Text + }); } protected void OnBtnRemoveMouldSIDClicked(object sender, EventArgs e) { - if(treeMouldSIDs.SelectedItem != null) - lstMouldSIDs.Remove((LayeredTextType)treeMouldSIDs.SelectedItem); + if(treeMouldSIDs.SelectedItem != null) lstMouldSIDs.Remove((LayeredTextType)treeMouldSIDs.SelectedItem); } protected void OnBtnAddMouldTextClicked(object sender, EventArgs e) { - lstMouldTexts.Add(new LayeredTextType { layer = (int)spMouldTextLayer.Value, layerSpecified = true, Value = txtMouldText.Text }); + lstMouldTexts.Add(new LayeredTextType + { + layer = (int)spMouldTextLayer.Value, + layerSpecified = true, + Value = txtMouldText.Text + }); } protected void OnBtnRemoveMouldTextClicked(object sender, EventArgs e) { - if(treeMouldTexts.SelectedItem != null) - lstMouldTexts.Remove((LayeredTextType)treeMouldTexts.SelectedItem); + if(treeMouldTexts.SelectedItem != null) lstMouldTexts.Remove((LayeredTextType)treeMouldTexts.SelectedItem); } protected void OnBtnSaveClicked(object sender, EventArgs e) { - long ltmp; - #region Sanity checks if(string.IsNullOrEmpty(txtFormat.Text)) { @@ -1565,7 +1588,7 @@ namespace osrepodbmgr.Eto } } - if(!string.IsNullOrEmpty(txtWriteOffset.Text) && !long.TryParse(txtWriteOffset.Text, out ltmp)) + if(!string.IsNullOrEmpty(txtWriteOffset.Text) && !long.TryParse(txtWriteOffset.Text, out long ltmp)) { ErrorMessageBox("Write offset must be a number"); return; @@ -1612,12 +1635,14 @@ namespace osrepodbmgr.Eto ErrorMessageBox("Height must be bigger than 0"); return; } + if(spWidth.Value <= 0) { ErrorMessageBox("Width must be bigger than 0"); return; } } + if(spThickness.Value <= 0) { ErrorMessageBox("Thickness must be bigger than 0"); @@ -1626,94 +1651,81 @@ namespace osrepodbmgr.Eto } if(chkDumpHardware.Checked.Value) - { if(lstDumpHw.Count < 1) { ErrorMessageBox("If dump hardware is known at least an entry must be created"); return; } - } #endregion Sanity checks - Metadata = new OpticalDiscType(); + Metadata = new OpticalDiscType {Image = new ImageType {Value = txtImage.Text, format = txtFormat.Text}}; - Metadata.Image = new Schemas.ImageType(); - Metadata.Image.Value = txtImage.Text; - Metadata.Image.format = txtFormat.Text; if(!string.IsNullOrWhiteSpace(txtOffset.Text) && long.TryParse(txtOffset.Text, out ltmp)) { Metadata.Image.offsetSpecified = true; - Metadata.Image.offset = long.Parse(txtOffset.Text); + Metadata.Image.offset = long.Parse(txtOffset.Text); } + Metadata.Size = long.Parse(txtSize.Text); if(chkSequence.Checked.Value) { - Metadata.Sequence = new SequenceType(); - Metadata.Sequence.MediaTitle = txtDiscTitle.Text; - Metadata.Sequence.MediaSequence = (int)spSequence.Value; - Metadata.Sequence.TotalMedia = (int)spTotalMedia.Value; + Metadata.Sequence = new SequenceType + { + MediaTitle = txtDiscTitle.Text, + MediaSequence = (int)spSequence.Value, + TotalMedia = (int)spTotalMedia.Value + }; if(spSide.Value > 0) { Metadata.Sequence.SideSpecified = true; - Metadata.Sequence.Side = (int)spSide.Value; + Metadata.Sequence.Side = (int)spSide.Value; } + if(spLayer.Value > 0) { Metadata.Sequence.LayerSpecified = true; - Metadata.Sequence.Layer = (int)spLayer.Value; + Metadata.Sequence.Layer = (int)spLayer.Value; } } if(lstLayers.Count > 0) - { - Metadata.Layers = new LayersType(); - Metadata.Layers.type = cmbLayerType.SelectedValue; - Metadata.Layers.typeSpecified = true; - - Metadata.Layers.Sectors = lstLayers.ToArray(); - } + Metadata.Layers = new LayersType + { + type = cmbLayerType.SelectedValue, + typeSpecified = true, + Sectors = lstLayers.ToArray() + }; Metadata.Checksums = checksums; - Metadata.Xbox = xbox; + Metadata.Xbox = xbox; - if(lstRingCodes.Count > 0) - Metadata.RingCode = lstRingCodes.ToArray(); + if(lstRingCodes.Count > 0) Metadata.RingCode = lstRingCodes.ToArray(); - if(lstMasteringSIDs.Count > 0) - Metadata.MasteringSID = lstMasteringSIDs.ToArray(); + if(lstMasteringSIDs.Count > 0) Metadata.MasteringSID = lstMasteringSIDs.ToArray(); - if(lstToolstamps.Count > 0) - Metadata.Toolstamp = lstToolstamps.ToArray(); + if(lstToolstamps.Count > 0) Metadata.Toolstamp = lstToolstamps.ToArray(); - if(lstMouldSIDs.Count > 0) - Metadata.MouldSID = lstMouldSIDs.ToArray(); + if(lstMouldSIDs.Count > 0) Metadata.MouldSID = lstMouldSIDs.ToArray(); - if(lstMouldTexts.Count > 0) - Metadata.MouldText = lstMouldTexts.ToArray(); + if(lstMouldTexts.Count > 0) Metadata.MouldText = lstMouldTexts.ToArray(); - if(!string.IsNullOrWhiteSpace(txtDiscType.Text)) - Metadata.DiscType = txtDiscType.Text; - if(!string.IsNullOrWhiteSpace(txtDiscSubtype.Text)) - Metadata.DiscSubType = txtDiscSubtype.Text; + if(!string.IsNullOrWhiteSpace(txtDiscType.Text)) Metadata.DiscType = txtDiscType.Text; + if(!string.IsNullOrWhiteSpace(txtDiscSubtype.Text)) Metadata.DiscSubType = txtDiscSubtype.Text; if(!string.IsNullOrWhiteSpace(txtWriteOffset.Text)) { - Metadata.Offset = int.Parse(txtWriteOffset.Text); + Metadata.Offset = int.Parse(txtWriteOffset.Text); Metadata.OffsetSpecified = true; } - if(!string.IsNullOrWhiteSpace(txtMediaTracks.Text)) - Metadata.Tracks = new int[] { int.Parse(txtMediaTracks.Text) }; - else - Metadata.Tracks = new int[] { 1 }; + Metadata.Tracks = !string.IsNullOrWhiteSpace(txtMediaTracks.Text) + ? new[] {int.Parse(txtMediaTracks.Text)} + : new[] {1}; - if(!string.IsNullOrWhiteSpace(txtMediaSessions.Text)) - Metadata.Sessions = int.Parse(txtMediaSessions.Text); - else - Metadata.Sessions = 1; + Metadata.Sessions = + !string.IsNullOrWhiteSpace(txtMediaSessions.Text) ? int.Parse(txtMediaSessions.Text) : 1; - if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) - Metadata.CopyProtection = txtCopyProtection.Text; + if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) Metadata.CopyProtection = txtCopyProtection.Text; if(chkDimensions.Checked.Value) { @@ -1721,74 +1733,50 @@ namespace osrepodbmgr.Eto if(chkRound.Checked.Value) { Metadata.Dimensions.DiameterSpecified = true; - Metadata.Dimensions.Diameter = spDiameter.Value; + Metadata.Dimensions.Diameter = spDiameter.Value; } else { Metadata.Dimensions.HeightSpecified = true; - Metadata.Dimensions.WidthSpecified = true; - Metadata.Dimensions.Height = spHeight.Value; - Metadata.Dimensions.Width = spWidth.Value; + Metadata.Dimensions.WidthSpecified = true; + Metadata.Dimensions.Height = spHeight.Value; + Metadata.Dimensions.Width = spWidth.Value; } + Metadata.Dimensions.Thickness = spThickness.Value; } - Metadata.Case = mediaCase; + Metadata.Case = mediaCase; Metadata.Scans = scans; - if(lstPFI.Count == 1) - Metadata.PFI = lstPFI[0]; - if(lstDMI.Count == 1) - Metadata.DMI = lstDMI[0]; - if(lstCMI.Count == 1) - Metadata.CMI = lstCMI[0]; - if(lstBCA.Count == 1) - Metadata.BCA = lstBCA[0]; - if(lstATIP.Count == 1) - Metadata.ATIP = lstATIP[0]; - if(lstADIP.Count == 1) - Metadata.ADIP = lstADIP[0]; - if(lstPMA.Count == 1) - Metadata.PMA = lstPMA[0]; - if(lstDDS.Count == 1) - Metadata.DDS = lstDDS[0]; - if(lstSAI.Count == 1) - Metadata.SAI = lstSAI[0]; - if(lstLastRMD.Count == 1) - Metadata.LastRMD = lstLastRMD[0]; - if(lstPRI.Count == 1) - Metadata.PRI = lstPRI[0]; - if(lstMediaID.Count == 1) - Metadata.MediaID = lstMediaID[0]; - if(lstPFIR.Count == 1) - Metadata.PFIR = lstPFIR[0]; - if(lstDCB.Count == 1) - Metadata.DCB = lstDCB[0]; - if(lstDI.Count == 1) - Metadata.DI = lstDI[0]; - if(lstPAC.Count == 1) - Metadata.PAC = lstPAC[0]; - if(lstTOC.Count == 1) - Metadata.TOC = lstTOC[0]; - if(lstCDText.Count == 1) - Metadata.LeadInCdText = lstCDText[0]; + if(lstPFI.Count == 1) Metadata.PFI = lstPFI[0]; + if(lstDMI.Count == 1) Metadata.DMI = lstDMI[0]; + if(lstCMI.Count == 1) Metadata.CMI = lstCMI[0]; + if(lstBCA.Count == 1) Metadata.BCA = lstBCA[0]; + if(lstATIP.Count == 1) Metadata.ATIP = lstATIP[0]; + if(lstADIP.Count == 1) Metadata.ADIP = lstADIP[0]; + if(lstPMA.Count == 1) Metadata.PMA = lstPMA[0]; + if(lstDDS.Count == 1) Metadata.DDS = lstDDS[0]; + if(lstSAI.Count == 1) Metadata.SAI = lstSAI[0]; + if(lstLastRMD.Count == 1) Metadata.LastRMD = lstLastRMD[0]; + if(lstPRI.Count == 1) Metadata.PRI = lstPRI[0]; + if(lstMediaID.Count == 1) Metadata.MediaID = lstMediaID[0]; + if(lstPFIR.Count == 1) Metadata.PFIR = lstPFIR[0]; + if(lstDCB.Count == 1) Metadata.DCB = lstDCB[0]; + if(lstDI.Count == 1) Metadata.DI = lstDI[0]; + if(lstPAC.Count == 1) Metadata.PAC = lstPAC[0]; + if(lstTOC.Count == 1) Metadata.TOC = lstTOC[0]; + if(lstCDText.Count == 1) Metadata.LeadInCdText = lstCDText[0]; - if(lstLeadIns.Count == 1) - Metadata.LeadIn = lstLeadIns.ToArray(); - if(lstLeadOuts.Count == 1) - Metadata.LeadOut = lstLeadOuts.ToArray(); + if(lstLeadIns.Count == 1) Metadata.LeadIn = lstLeadIns.ToArray(); + if(lstLeadOuts.Count == 1) Metadata.LeadOut = lstLeadOuts.ToArray(); if(!string.IsNullOrWhiteSpace(txtPS3Key.Text) && !string.IsNullOrWhiteSpace(txtPS3Serial.Text)) - { - Metadata.PS3Encryption = new PS3EncryptionType(); - Metadata.PS3Encryption.Key = txtPS3Key.Text; - Metadata.PS3Encryption.Serial = txtPS3Serial.Text; - } + Metadata.PS3Encryption = new PS3EncryptionType {Key = txtPS3Key.Text, Serial = txtPS3Serial.Text}; Metadata.Track = lstTracks.ToArray(); - if(chkDumpHardware.Checked.Value && lstDumpHw.Count >= 1) - Metadata.DumpHardwareArray = lstDumpHw.ToArray(); + if(chkDumpHardware.Checked.Value && lstDumpHw.Count >= 1) Metadata.DumpHardwareArray = lstDumpHw.ToArray(); Modified = true; Close(); @@ -1801,14 +1789,166 @@ namespace osrepodbmgr.Eto protected void OnBtnCancelPartitionClicked(object sender, EventArgs e) { - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; stkPartitionFields1.Visible = false; stkPartitionFields2.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } + + #region XAML UI elements + #pragma warning disable 0649 + TextBox txtImage; + TextBox txtFormat; + TextBox txtOffset; + TextBox txtSize; + TextBox txtWriteOffset; + TextBox txtMediaTracks; + TextBox txtMediaSessions; + TextBox txtCopyProtection; + TextBox txtDiscType; + TextBox txtDiscSubtype; + CheckBox chkSequence; + Label lblDiscTitle; + TextBox txtDiscTitle; + Label lblSequence; + NumericUpDown spSequence; + Label lblTotalMedia; + NumericUpDown spTotalMedia; + Label lblSide; + NumericUpDown spSide; + Label lblLayer; + NumericUpDown spLayer; + CheckBox chkDimensions; + CheckBox chkRound; + StackLayout stkDiameter; + NumericUpDown spDiameter; + StackLayout stkHeight; + NumericUpDown spHeight; + StackLayout stkWidth; + NumericUpDown spWidth; + StackLayout stkThickness; + NumericUpDown spThickness; + CheckBox chkLayers; + StackLayout stkLayers; + EnumDropDown cmbLayerType; + GridView treeLayers; + NumericUpDown spNewLayer; + TextBox txtLayerSize; + GridView treeRingCodes; + NumericUpDown spRingCodeLayer; + TextBox txtRingCode; + GridView treeMasteringSIDs; + NumericUpDown spMasteringSIDLayer; + TextBox txtMasteringSID; + GridView treeToolstamps; + NumericUpDown spToolstampLayer; + TextBox txtToolstamp; + GridView treeMouldSIDs; + NumericUpDown spMouldSIDLayer; + TextBox txtMouldSID; + GridView treeMouldTexts; + NumericUpDown spMouldTextLayer; + TextBox txtMouldText; + GroupBox frmTOC; + GridView treeTOC; + GroupBox frmCDText; + GridView treeCDText; + GroupBox frmATIP; + GridView treeATIP; + GroupBox frmPMA; + GridView treePMA; + GroupBox frmLeadIns; + GridView treeLeadIn; + GroupBox frmLeadOuts; + GridView treeLeadOut; + GroupBox frmPFI; + GridView treePFI; + GroupBox frmDMI; + GridView treeDMI; + GroupBox frmCMI; + GridView treeCMI; + GroupBox frmBCA; + GridView treeBCA; + GroupBox frmDCB; + GridView treeDCB; + GroupBox frmPRI; + GridView treePRI; + GroupBox frmMediaID; + GridView treeMediaID; + GroupBox frmPFIR; + GridView treePFIR; + GroupBox frmLastRMD; + GridView treeLastRMD; + GroupBox frmADIP; + GridView treeADIP; + GroupBox frmDDS; + GridView treeDDS; + GroupBox frmSAI; + GridView treeSAI; + GroupBox frmDI; + GridView treeDI; + GroupBox frmPAC; + GridView treePAC; + TextBox txtPS3Key; + TextBox txtPS3Serial; + GridView treeTracks; + TextBox txtTrackStart; + TextBox txtTrackEnd; + TextBox txtMSFStart; + TextBox txtMSFEnd; + TextBox txtTrackSequence; + TextBox txtSessionSequence; + ComboBox cmbTrackType; + TextBox txtBytesPerSector; + TextBox txtAcoustID; + GridView treePartitions; + Button btnCancelPartition; + Button btnRemovePartition; + Button btnEditPartition; + Button btnApplyPartition; + Button btnAddPartition; + NumericUpDown spPartitionSequence; + TextBox txtPartitionStart; + TextBox txtPartitionEnd; + TextBox txtPartitionType; + StackLayout stkPartitionFields1; + StackLayout stkPartitionFields2; + TextBox txtPartitionName; + TextBox txtPartitionDescription; + GroupBox frmFilesystems; + GridView treeFilesystems; + Button btnCancelTrack; + Button btnApplyTrack; + Button btnEditTrack; + CheckBox chkDumpHardware; + GridView treeDumpHardware; + Button btnCancelHardware; + Button btnRemoveHardware; + Button btnEditHardware; + Button btnApplyHardware; + Button btnAddHardware; + GroupBox frmHardware; + TextBox txtHWManufacturer; + TextBox txtHWModel; + TextBox txtHWRevision; + TextBox txtHWFirmware; + TextBox txtHWSerial; + GridView treeExtents; + NumericUpDown spExtentStart; + NumericUpDown spExtentEnd; + TextBox txtDumpName; + TextBox txtDumpVersion; + TextBox txtDumpOS; + GroupBox frmLayers; + GroupBox frmPartitions; + StackLayout stkTrackFields1; + StackLayout stkTrackFields2; + StackLayout stkTrackFields3; + #pragma warning restore 0649 + #endregion XAML UI elements } } \ No newline at end of file diff --git a/osrepodbmgr.Eto/dlgSettings.xeto.cs b/osrepodbmgr.Eto/dlgSettings.xeto.cs index 6390b5a..a2a95ba 100644 --- a/osrepodbmgr.Eto/dlgSettings.xeto.cs +++ b/osrepodbmgr.Eto/dlgSettings.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.IO; using System.Threading; @@ -36,66 +37,40 @@ namespace osrepodbmgr.Eto { public class dlgSettings : Dialog { - #region XAML UI elements -#pragma warning disable 0649 - TextBox txtTmp; - TextBox txtUnar; - TextBox txtDatabase; - TextBox txtRepository; - Label lblUnarVersion; - EnumDropDown cmbCompAlg; - StackLayout StackLayoutForAlgoEnum; - GroupBox frmClamd; - CheckBox chkAntivirus; - CheckBox chkClamd; - TextBox txtClamdHost; - NumericUpDown spClamdPort; - Button btnClamdTest; - Label lblClamdVersion; - CheckBox chkClamdIsLocal; - GroupBox frmVirusTotal; - CheckBox chkVirusTotal; - TextBox txtVirusTotal; - Button btnVirusTotal; - Label lblVirusTotal; -#pragma warning restore 0649 - #endregion XAML UI elements - string oldUnarPath; public dlgSettings() { XamlReader.Load(this); - txtTmp.Text = Settings.Current.TemporaryFolder; - txtUnar.Text = Settings.Current.UnArchiverPath; - txtDatabase.Text = Settings.Current.DatabasePath; + txtTmp.Text = Settings.Current.TemporaryFolder; + txtUnar.Text = Settings.Current.UnArchiverPath; + txtDatabase.Text = Settings.Current.DatabasePath; txtRepository.Text = Settings.Current.RepositoryPath; - if(!string.IsNullOrWhiteSpace(txtUnar.Text)) - CheckUnar(); + if(!string.IsNullOrWhiteSpace(txtUnar.Text)) CheckUnar(); cmbCompAlg = new EnumDropDown(); StackLayoutForAlgoEnum.Items.Add(new StackLayoutItem(cmbCompAlg, HorizontalAlignment.Stretch, true)); cmbCompAlg.SelectedValue = Settings.Current.CompressionAlgorithm; - spClamdPort.Value = 3310; - chkAntivirus.Checked = Core.Settings.Current.UseAntivirus; - frmClamd.Visible = chkAntivirus.Checked.Value; - if(Core.Settings.Current.UseAntivirus && Core.Settings.Current.UseClamd) + spClamdPort.Value = 3310; + chkAntivirus.Checked = Settings.Current.UseAntivirus; + frmClamd.Visible = chkAntivirus.Checked.Value; + if(Settings.Current.UseAntivirus && Settings.Current.UseClamd) { - chkClamd.Checked = Core.Settings.Current.UseClamd; - txtClamdHost.Text = Core.Settings.Current.ClamdHost; - spClamdPort.Value = Core.Settings.Current.ClamdPort; - chkClamdIsLocal.Checked = Core.Settings.Current.ClamdIsLocal; - } - if(Core.Settings.Current.UseAntivirus && Core.Settings.Current.UseVirusTotal) - { - chkVirusTotal.Checked = true; - chkVirusTotal.Enabled = true; - txtVirusTotal.Enabled = true; - txtVirusTotal.Text = Core.Settings.Current.VirusTotalKey; - btnVirusTotal.Enabled = true; + chkClamd.Checked = Settings.Current.UseClamd; + txtClamdHost.Text = Settings.Current.ClamdHost; + spClamdPort.Value = Settings.Current.ClamdPort; + chkClamdIsLocal.Checked = Settings.Current.ClamdIsLocal; } + + if(!Settings.Current.UseAntivirus || !Settings.Current.UseVirusTotal) return; + + chkVirusTotal.Checked = true; + chkVirusTotal.Enabled = true; + txtVirusTotal.Enabled = true; + txtVirusTotal.Text = Settings.Current.VirusTotalKey; + btnVirusTotal.Enabled = true; } protected void OnBtnCancelClicked(object sender, EventArgs e) @@ -106,139 +81,127 @@ namespace osrepodbmgr.Eto protected void OnBtnApplyClicked(object sender, EventArgs e) { // TODO: Check sanity - Settings.Current.TemporaryFolder = txtTmp.Text; - Settings.Current.UnArchiverPath = txtUnar.Text; - Settings.Current.DatabasePath = txtDatabase.Text; - Settings.Current.RepositoryPath = txtRepository.Text; + Settings.Current.TemporaryFolder = txtTmp.Text; + Settings.Current.UnArchiverPath = txtUnar.Text; + Settings.Current.DatabasePath = txtDatabase.Text; + Settings.Current.RepositoryPath = txtRepository.Text; Settings.Current.CompressionAlgorithm = cmbCompAlg.SelectedValue; if(!chkClamd.Checked.Value || !chkAntivirus.Checked.Value) { - Core.Settings.Current.UseClamd = false; - Core.Settings.Current.ClamdHost = null; - Core.Settings.Current.ClamdPort = 3310; - Core.Settings.Current.ClamdIsLocal = false; + Settings.Current.UseClamd = false; + Settings.Current.ClamdHost = null; + Settings.Current.ClamdPort = 3310; + Settings.Current.ClamdIsLocal = false; } + if(chkVirusTotal.Checked.Value && chkAntivirus.Checked.Value) { - Core.Settings.Current.UseVirusTotal = true; - Core.Settings.Current.VirusTotalKey = txtVirusTotal.Text; - Core.Workers.InitVirusTotal(Core.Settings.Current.VirusTotalKey); + Settings.Current.UseVirusTotal = true; + Settings.Current.VirusTotalKey = txtVirusTotal.Text; + Workers.InitVirusTotal(Settings.Current.VirusTotalKey); } else { - Core.Settings.Current.UseVirusTotal = false; - Core.Settings.Current.VirusTotalKey = null; + Settings.Current.UseVirusTotal = false; + Settings.Current.VirusTotalKey = null; } + Settings.SaveSettings(); Workers.CloseDB(); Workers.InitDB(); - Context.clamdVersion = null; - Core.Workers.InitClamd(); + Context.ClamdVersion = null; + Workers.InitClamd(); Context.CheckUnar(); Close(); } protected void OnBtnUnarClicked(object sender, EventArgs e) { - OpenFileDialog dlgFile = new OpenFileDialog(); - dlgFile.Title = "Choose UnArchiver executable"; - dlgFile.MultiSelect = false; + OpenFileDialog dlgFile = new OpenFileDialog {Title = "Choose UnArchiver executable", MultiSelect = false}; if(!string.IsNullOrWhiteSpace(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))) dlgFile.Directory = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); - if(dlgFile.ShowDialog(this) == DialogResult.Ok) - { - txtUnar.Text = dlgFile.FileName; - lblUnarVersion.Visible = false; - CheckUnar(); - } + if(dlgFile.ShowDialog(this) != DialogResult.Ok) return; + + txtUnar.Text = dlgFile.FileName; + lblUnarVersion.Visible = false; + CheckUnar(); } protected void OnBtnTmpClicked(object sender, EventArgs e) { - SelectFolderDialog dlgFolder = new SelectFolderDialog(); - dlgFolder.Title = "Choose temporary folder"; - dlgFolder.Directory = Path.GetTempPath(); + SelectFolderDialog dlgFolder = + new SelectFolderDialog {Title = "Choose temporary folder", Directory = Path.GetTempPath()}; - if(dlgFolder.ShowDialog(this) == DialogResult.Ok) - txtTmp.Text = dlgFolder.Directory; + if(dlgFolder.ShowDialog(this) == DialogResult.Ok) txtTmp.Text = dlgFolder.Directory; } protected void OnBtnRepositoryClicked(object sender, EventArgs e) { - SelectFolderDialog dlgFolder = new SelectFolderDialog(); - dlgFolder.Title = "Choose repository folder"; - dlgFolder.Directory = Path.GetTempPath(); + SelectFolderDialog dlgFolder = + new SelectFolderDialog {Title = "Choose repository folder", Directory = Path.GetTempPath()}; - if(dlgFolder.ShowDialog(this) == DialogResult.Ok) - txtRepository.Text = dlgFolder.Directory; + if(dlgFolder.ShowDialog(this) == DialogResult.Ok) txtRepository.Text = dlgFolder.Directory; } protected void OnBtnDatabaseClicked(object sender, EventArgs e) { - SaveFileDialog dlgFile = new SaveFileDialog(); - dlgFile.Title = "Choose database to open/create"; - dlgFile.Directory = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); - dlgFile.CheckFileExists = false; - dlgFile.FileName = "osrepodbmgr.db"; - - if(dlgFile.ShowDialog(this) == DialogResult.Ok) + SaveFileDialog dlgFile = new SaveFileDialog { - if(File.Exists(dlgFile.FileName)) + Title = "Choose database to open/create", + Directory = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)), + CheckFileExists = false, + FileName = "osrepodbmgr.db" + }; + + if(dlgFile.ShowDialog(this) != DialogResult.Ok) return; + + if(File.Exists(dlgFile.FileName)) + { + DbCore dbCore = new SQLite(); + bool notDb = false; + + try { notDb |= !dbCore.OpenDb(dlgFile.FileName, null, null, null); } + catch { notDb = true; } + + if(notDb) { - DBCore _dbCore = new SQLite(); - bool notDb = false; - - try - { - notDb |= !_dbCore.OpenDB(dlgFile.FileName, null, null, null); - } - catch - { - notDb = true; - } - - if(notDb) - { - MessageBox.Show("Cannot open specified file as a database, please choose another.", MessageBoxType.Error); - return; - } - _dbCore.CloseDB(); - } - else - { - DBCore _dbCore = new SQLite(); - bool notDb = false; - - try - { - notDb |= !_dbCore.CreateDB(dlgFile.FileName, null, null, null); - } - catch - { - notDb = true; - } - - if(notDb) - { - MessageBox.Show("Cannot create a database in the specified file as a database.", MessageBoxType.Error); - return; - } - _dbCore.CloseDB(); + MessageBox.Show("Cannot open specified file as a database, please choose another.", + MessageBoxType.Error); + return; } - txtDatabase.Text = dlgFile.FileName; + dbCore.CloseDb(); } + else + { + DbCore dbCore = new SQLite(); + bool notDb = false; + + try { notDb |= !dbCore.CreateDb(dlgFile.FileName, null, null, null); } + catch { notDb = true; } + + if(notDb) + { + MessageBox.Show("Cannot create a database in the specified file as a database.", + MessageBoxType.Error); + return; + } + + dbCore.CloseDb(); + } + + txtDatabase.Text = dlgFile.FileName; } void CheckUnar() { Workers.FinishedWithText += CheckUnarFinished; - Workers.Failed += CheckUnarFailed; + Workers.Failed += CheckUnarFailed; - oldUnarPath = Settings.Current.UnArchiverPath; + oldUnarPath = Settings.Current.UnArchiverPath; Settings.Current.UnArchiverPath = txtUnar.Text; - Thread thdCheckUnar = new Thread(Workers.CheckUnar); + Thread thdCheckUnar = new Thread(Workers.CheckUnar); thdCheckUnar.Start(); } @@ -247,10 +210,10 @@ namespace osrepodbmgr.Eto Application.Instance.Invoke(delegate { Workers.FinishedWithText -= CheckUnarFinished; - Workers.Failed -= CheckUnarFailed; + Workers.Failed -= CheckUnarFailed; - lblUnarVersion.Text = text; - lblUnarVersion.Visible = true; + lblUnarVersion.Text = text; + lblUnarVersion.Visible = true; Settings.Current.UnArchiverPath = oldUnarPath; }); } @@ -260,12 +223,9 @@ namespace osrepodbmgr.Eto Application.Instance.Invoke(delegate { Workers.FinishedWithText -= CheckUnarFinished; - Workers.Failed -= CheckUnarFailed; + Workers.Failed -= CheckUnarFailed; - if(string.IsNullOrWhiteSpace(oldUnarPath)) - txtUnar.Text = ""; - else - txtUnar.Text = oldUnarPath; + txtUnar.Text = string.IsNullOrWhiteSpace(oldUnarPath) ? "" : oldUnarPath; Settings.Current.UnArchiverPath = oldUnarPath; MessageBox.Show(text, MessageBoxType.Error); }); @@ -273,15 +233,15 @@ namespace osrepodbmgr.Eto protected void OnChkAntivirusToggled(object sender, EventArgs e) { - frmClamd.Visible = chkAntivirus.Checked.Value; + frmClamd.Visible = chkAntivirus.Checked.Value; frmVirusTotal.Visible = chkAntivirus.Checked.Value; } protected void OnChkClamdToggled(object sender, EventArgs e) { - txtClamdHost.Enabled = chkClamd.Checked.Value; - spClamdPort.Enabled = chkClamd.Checked.Value; - btnClamdTest.Enabled = chkClamd.Checked.Value; + txtClamdHost.Enabled = chkClamd.Checked.Value; + spClamdPort.Enabled = chkClamd.Checked.Value; + btnClamdTest.Enabled = chkClamd.Checked.Value; lblClamdVersion.Visible = false; chkClamdIsLocal.Enabled = chkClamd.Checked.Value; } @@ -296,27 +256,27 @@ namespace osrepodbmgr.Eto return; } - string oldVersion = Context.clamdVersion; - Context.clamdVersion = null; + string oldVersion = Context.ClamdVersion; + Context.ClamdVersion = null; - string oldHost = Core.Settings.Current.ClamdHost; - ushort oldPort = Core.Settings.Current.ClamdPort; - Core.Settings.Current.ClamdHost = txtClamdHost.Text; - Core.Settings.Current.ClamdPort = (ushort)spClamdPort.Value; + string oldHost = Settings.Current.ClamdHost; + ushort oldPort = Settings.Current.ClamdPort; + Settings.Current.ClamdHost = txtClamdHost.Text; + Settings.Current.ClamdPort = (ushort)spClamdPort.Value; Workers.TestClamd(); - Core.Settings.Current.ClamdHost = oldHost; - Core.Settings.Current.ClamdPort = oldPort; + Settings.Current.ClamdHost = oldHost; + Settings.Current.ClamdPort = oldPort; - if(string.IsNullOrEmpty(Context.clamdVersion)) + if(string.IsNullOrEmpty(Context.ClamdVersion)) { MessageBox.Show("Cannot connect to clamd", MessageBoxType.Error); return; } - lblClamdVersion.Text = Context.clamdVersion; - Context.clamdVersion = oldVersion; + lblClamdVersion.Text = Context.ClamdVersion; + Context.ClamdVersion = oldVersion; lblClamdVersion.Visible = true; } @@ -330,16 +290,40 @@ namespace osrepodbmgr.Eto protected void OnBtnVirusTotalClicked(object sender, EventArgs e) { Workers.Failed += VirusTotalTestFailed; - if(Workers.TestVirusTotal(txtVirusTotal.Text)) - { - lblVirusTotal.Visible = true; - lblVirusTotal.Text = "Working!"; - } + if(!Workers.TestVirusTotal(txtVirusTotal.Text)) return; + + lblVirusTotal.Visible = true; + lblVirusTotal.Text = "Working!"; } - void VirusTotalTestFailed(string text) + static void VirusTotalTestFailed(string text) { MessageBox.Show(text, MessageBoxType.Error); } + + #region XAML UI elements + #pragma warning disable 0649 + TextBox txtTmp; + TextBox txtUnar; + TextBox txtDatabase; + TextBox txtRepository; + Label lblUnarVersion; + EnumDropDown cmbCompAlg; + StackLayout StackLayoutForAlgoEnum; + GroupBox frmClamd; + CheckBox chkAntivirus; + CheckBox chkClamd; + TextBox txtClamdHost; + NumericUpDown spClamdPort; + Button btnClamdTest; + Label lblClamdVersion; + CheckBox chkClamdIsLocal; + GroupBox frmVirusTotal; + CheckBox chkVirusTotal; + TextBox txtVirusTotal; + Button btnVirusTotal; + Label lblVirusTotal; + #pragma warning restore 0649 + #endregion XAML UI elements } -} +} \ No newline at end of file diff --git a/osrepodbmgr.Eto/frmMain.xeto.cs b/osrepodbmgr.Eto/frmMain.xeto.cs index c9ab17c..bb9149e 100644 --- a/osrepodbmgr.Eto/frmMain.xeto.cs +++ b/osrepodbmgr.Eto/frmMain.xeto.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -38,54 +39,19 @@ namespace osrepodbmgr.Eto { public class frmMain : Form { - Thread thdPopulateOSes; - Thread thdCompressTo; - Thread thdSaveAs; - Thread thdPopulateFiles; - bool populatingFiles; - Thread thdScanFile; - DBFile outIter; - bool scanningFiles; - Thread thdCleanFiles; - int infectedFiles; - - #region XAML UI elements -#pragma warning disable 0649 - GridView treeOSes; - Label lblProgress; - ProgressBar prgProgress; - Label lblProgress2; - ProgressBar prgProgress2; - Button btnAdd; - Button btnRemove; - Button btnCompress; - Button btnSave; - Button btnStop; - ButtonMenuItem btnSettings; - ButtonMenuItem btnHelp; - ButtonMenuItem mnuCompress; - GridView treeFiles; - Label lblProgressFiles1; - ProgressBar prgProgressFiles1; - Label lblProgressFiles2; - ProgressBar prgProgressFiles2; - Button btnStopFiles; - Button btnToggleCrack; - Button btnScanWithClamd; - Button btnCheckInVirusTotal; - Button btnPopulateFiles; - TabPage tabOSes; - Button btnScanAllPending; - Button btnCleanFiles; - ButtonMenuItem btnQuit; - ButtonMenuItem mnuFile; - Label lblOSStatus; - Label lblFileStatus; -#pragma warning restore 0649 - #endregion XAML UI elements + int infectedFiles; + ObservableCollection lstFiles; ObservableCollection lstOSes; - ObservableCollection lstFiles; + DbFile outIter; + bool populatingFiles; + bool scanningFiles; + Thread thdCleanFiles; + Thread thdCompressTo; + Thread thdPopulateFiles; + Thread thdPopulateOSes; + Thread thdSaveAs; + Thread thdScanFile; public frmMain() { @@ -98,144 +64,155 @@ namespace osrepodbmgr.Eto treeOSes.DataStore = lstOSes; treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.developer) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.developer)}, HeaderText = "Developer" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.product) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.product)}, HeaderText = "Product" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.version) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.version)}, HeaderText = "Version" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.languages) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.languages)}, HeaderText = "Languages" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.architecture) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.architecture)}, HeaderText = "Architecture" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.machine) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.machine)}, HeaderText = "Machine" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.format) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.format)}, HeaderText = "Format" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.description) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.description)}, HeaderText = "Description" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.oem) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.oem)}, HeaderText = "OEM?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.upgrade) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.upgrade)}, HeaderText = "Upgrade?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.update) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.update)}, HeaderText = "Update?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.source) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.source)}, HeaderText = "Source?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.files) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.files)}, HeaderText = "Files?" }); treeOSes.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.netinstall) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.netinstall)}, HeaderText = "NetInstall?" }); treeOSes.AllowMultipleSelection = false; - lstFiles = new ObservableCollection(); + lstFiles = new ObservableCollection(); treeFiles.DataStore = lstFiles; treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Sha256) }, + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Sha256)}, HeaderText = "SHA256" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Length).Convert(s => s.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Length).Convert(s => s.ToString()) + }, HeaderText = "Length" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.Crack) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.Crack)}, HeaderText = "Crack?" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new CheckBoxCell { Binding = Binding.Property(r => r.HasVirus) }, + DataCell = new CheckBoxCell {Binding = Binding.Property(r => r.HasVirus)}, HeaderText = "Has virus?" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.ClamTime).Convert(s => s == null ? "Never" : s.Value.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.ClamTime) + .Convert(s => s == null ? "Never" : s.Value.ToString()) + }, HeaderText = "Last scanned with clamd" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.VirusTotalTime).Convert(s => s == null ? "Never" : s.Value.ToString()) }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.VirusTotalTime) + .Convert(s => s == null ? "Never" : s.Value.ToString()) + }, HeaderText = "Last checked on VirusTotal" }); treeFiles.Columns.Add(new GridColumn { - DataCell = new TextBoxCell { Binding = Binding.Property(r => r.Virus).Convert(s => s ?? "None") }, + DataCell = new TextBoxCell + { + Binding = Binding.Property(r => r.Virus).Convert(s => s ?? "None") + }, HeaderText = "Virus" }); - treeFiles.AllowMultipleSelection = false; - treeFiles.CellFormatting += (sender, e) => + treeFiles.AllowMultipleSelection = false; + treeFiles.CellFormatting += (sender, e) => { - if(((DBFile)e.Item).HasVirus.HasValue) - { - e.BackgroundColor = ((DBFile)e.Item).HasVirus.Value ? Colors.Red : Colors.Green; - } - else - e.BackgroundColor = Colors.Yellow; + if(((DbFile)e.Item).HasVirus.HasValue) + e.BackgroundColor = ((DbFile)e.Item).HasVirus.Value ? Colors.Red : Colors.Green; + else e.BackgroundColor = Colors.Yellow; e.ForegroundColor = Colors.Black; }; prgProgress.Indeterminate = true; - if(!Context.usableDotNetZip) + if(!Context.UsableDotNetZip) { btnCompress.Visible = false; mnuCompress.Enabled = false; } - Workers.Failed += LoadOSesFailed; - Workers.Finished += LoadOSesFinished; + Workers.Failed += LoadOSesFailed; + Workers.Finished += LoadOSesFinished; Workers.UpdateProgress += UpdateProgress; - Workers.AddOS += AddOS; - Workers.AddFile += AddFile; - Workers.AddFiles += AddFiles; - thdPopulateOSes = new Thread(Workers.GetAllOSes); + Workers.AddOS += AddOs; + Workers.AddFile += AddFile; + Workers.AddFiles += AddFiles; + thdPopulateOSes = new Thread(Workers.GetAllOSes); thdPopulateOSes.Start(); } @@ -243,14 +220,16 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - MessageBox.Show(string.Format("Error {0} when populating OSes file, exiting...", text), MessageBoxButtons.OK, MessageBoxType.Error, MessageBoxDefaultButton.OK); + MessageBox.Show($"Error {text} when populating OSes file, exiting...", MessageBoxButtons.OK, + MessageBoxType.Error, MessageBoxDefaultButton.OK); if(thdPopulateOSes != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } - Workers.Failed -= LoadOSesFailed; - Workers.Finished -= LoadOSesFinished; + + Workers.Failed -= LoadOSesFailed; + Workers.Finished -= LoadOSesFinished; Workers.UpdateProgress -= UpdateProgress; Application.Instance.Quit(); }); @@ -260,174 +239,161 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - Workers.Failed -= LoadOSesFailed; - Workers.Finished -= LoadOSesFinished; + Workers.Failed -= LoadOSesFailed; + Workers.Finished -= LoadOSesFinished; Workers.UpdateProgress -= UpdateProgress; - Workers.AddOS -= AddOS; + Workers.AddOS -= AddOs; if(thdPopulateOSes != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } + lblProgress.Visible = false; prgProgress.Visible = false; - treeOSes.Enabled = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = Context.usableDotNetZip; - btnSave.Visible = true; - btnHelp.Enabled = true; + treeOSes.Enabled = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = Context.UsableDotNetZip; + btnSave.Visible = true; + btnHelp.Enabled = true; btnSettings.Enabled = true; lblOSStatus.Visible = true; - lblOSStatus.Text = string.Format("{0} operating systems", lstOSes.Count); + lblOSStatus.Text = $"{lstOSes.Count} operating systems"; }); } - public void UpdateProgress(string text, string inner, long current, long maximum) + void UpdateProgress(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgress.Text = string.Format("{0}: {1}", text, inner); + lblProgress.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgress.Text = inner; else lblProgress.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgress.Indeterminate = false; - prgProgress.MinValue = 0; - prgProgress.MaxValue = (int)maximum; - prgProgress.Value = (int)current; + prgProgress.MinValue = 0; + prgProgress.MaxValue = (int)maximum; + prgProgress.Value = (int)current; } - else - prgProgress.Indeterminate = true; + else prgProgress.Indeterminate = true; }); } - public void UpdateProgress2(string text, string inner, long current, long maximum) + void UpdateProgress2(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgress2.Text = string.Format("{0}: {1}", text, inner); + lblProgress2.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgress2.Text = inner; else lblProgress2.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgress2.Indeterminate = false; - prgProgress2.MinValue = 0; - prgProgress2.MaxValue = (int)maximum; - prgProgress2.Value = (int)current; + prgProgress2.MinValue = 0; + prgProgress2.MaxValue = (int)maximum; + prgProgress2.Value = (int)current; } - else - prgProgress2.Indeterminate = true; + else prgProgress2.Indeterminate = true; }); } - void AddOS(DBEntry os) + void AddOs(DbEntry os) { - Application.Instance.Invoke(delegate - { - lstOSes.Add(new DBEntryForEto(os)); - }); + Application.Instance.Invoke(delegate { lstOSes.Add(new DBEntryForEto(os)); }); } protected void OnBtnAddClicked(object sender, EventArgs e) { - dlgAdd _dlgAdd = new dlgAdd(); - _dlgAdd.OnAddedOS += (os) => - { - lstOSes.Add(new DBEntryForEto(os)); - }; - _dlgAdd.ShowModal(this); + dlgAdd dlgAdd = new dlgAdd(); + dlgAdd.OnAddedOS += os => { lstOSes.Add(new DBEntryForEto(os)); }; + dlgAdd.ShowModal(this); } protected void OnBtnRemoveClicked(object sender, EventArgs e) { - if(treeOSes.SelectedItem != null) - { - if(MessageBox.Show("Are you sure you want to remove the selected OS?", MessageBoxButtons.YesNo, MessageBoxType.Question, - MessageBoxDefaultButton.No) == DialogResult.Yes) - { - Workers.RemoveOS(((DBEntryForEto)treeOSes.SelectedItem).id, ((DBEntryForEto)treeOSes.SelectedItem).mdid); - lstOSes.Remove((DBEntryForEto)treeOSes.SelectedItem); - } - } + if(treeOSes.SelectedItem == null) return; + if(MessageBox.Show("Are you sure you want to remove the selected OS?", MessageBoxButtons.YesNo, + MessageBoxType.Question, MessageBoxDefaultButton.No) != DialogResult.Yes) return; + + Workers.RemoveOS(((DBEntryForEto)treeOSes.SelectedItem).id, ((DBEntryForEto)treeOSes.SelectedItem).mdid); + lstOSes.Remove((DBEntryForEto)treeOSes.SelectedItem); } protected void OnBtnSaveClicked(object sender, EventArgs e) { - if(treeOSes.SelectedItem != null) - { - SelectFolderDialog dlgFolder = new SelectFolderDialog(); - dlgFolder.Title = "Save to..."; - if(dlgFolder.ShowDialog(this) == DialogResult.Ok) - { - Context.dbInfo.id = ((DBEntryForEto)treeOSes.SelectedItem).id; - Context.path = dlgFolder.Directory; + if(treeOSes.SelectedItem == null) return; - lblProgress.Visible = true; - prgProgress.Visible = true; - lblProgress2.Visible = true; - prgProgress2.Visible = true; - treeOSes.Enabled = false; - btnAdd.Visible = false; - btnRemove.Visible = false; - btnCompress.Visible = false; - btnSave.Visible = false; - btnHelp.Enabled = true; - btnSettings.Enabled = false; - btnStop.Visible = true; + SelectFolderDialog dlgFolder = new SelectFolderDialog {Title = "Save to..."}; + if(dlgFolder.ShowDialog(this) != DialogResult.Ok) return; - Workers.Failed += SaveAsFailed; - Workers.Finished += SaveAsFinished; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; - thdSaveAs = new Thread(Workers.SaveAs); - thdSaveAs.Start(); - } - } + Context.DbInfo.Id = ((DBEntryForEto)treeOSes.SelectedItem).id; + Context.Path = dlgFolder.Directory; + + lblProgress.Visible = true; + prgProgress.Visible = true; + lblProgress2.Visible = true; + prgProgress2.Visible = true; + treeOSes.Enabled = false; + btnAdd.Visible = false; + btnRemove.Visible = false; + btnCompress.Visible = false; + btnSave.Visible = false; + btnHelp.Enabled = true; + btnSettings.Enabled = false; + btnStop.Visible = true; + + Workers.Failed += SaveAsFailed; + Workers.Finished += SaveAsFinished; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; + thdSaveAs = new Thread(Workers.SaveAs); + thdSaveAs.Start(); } - public void SaveAsFailed(string text) + void SaveAsFailed(string text) { Application.Instance.Invoke(delegate { MessageBox.Show(text, MessageBoxButtons.OK, MessageBoxType.Error); - lblProgress.Visible = false; - prgProgress.Visible = false; + lblProgress.Visible = false; + prgProgress.Visible = false; lblProgress2.Visible = false; prgProgress2.Visible = false; - treeOSes.Enabled = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = Context.usableDotNetZip; - btnSave.Visible = true; - btnHelp.Enabled = true; - btnSettings.Enabled = true; - btnStop.Visible = false; + treeOSes.Enabled = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = Context.UsableDotNetZip; + btnSave.Visible = true; + btnHelp.Enabled = true; + btnSettings.Enabled = true; + btnStop.Visible = false; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= SaveAsFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= SaveAsFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdSaveAs != null) @@ -436,29 +402,29 @@ namespace osrepodbmgr.Eto thdSaveAs = null; } - Context.path = null; + Context.Path = null; }); } - public void SaveAsFinished() + void SaveAsFinished() { Application.Instance.Invoke(delegate { - lblProgress.Visible = false; - prgProgress.Visible = false; + lblProgress.Visible = false; + prgProgress.Visible = false; lblProgress2.Visible = false; prgProgress2.Visible = false; - treeOSes.Enabled = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = Context.usableDotNetZip; - btnSave.Visible = true; - btnHelp.Enabled = true; - btnSettings.Enabled = true; - btnStop.Visible = false; + treeOSes.Enabled = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = Context.UsableDotNetZip; + btnSave.Visible = true; + btnHelp.Enabled = true; + btnSettings.Enabled = true; + btnStop.Visible = false; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= SaveAsFinished; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= SaveAsFinished; Workers.UpdateProgress -= UpdateProgress; if(thdSaveAs != null) @@ -467,9 +433,9 @@ namespace osrepodbmgr.Eto thdSaveAs = null; } - MessageBox.Show(string.Format("Correctly saved to {0}", Context.path)); + MessageBox.Show($"Correctly saved to {Context.Path}"); - Context.path = null; + Context.Path = null; }); } @@ -493,14 +459,14 @@ namespace osrepodbmgr.Eto protected void OnBtnStopClicked(object sender, EventArgs e) { - Workers.AddOS -= AddOS; - Workers.Failed -= CompressToFailed; - Workers.Failed -= LoadOSesFailed; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= CompressToFinished; - Workers.Finished -= LoadOSesFinished; - Workers.Finished -= SaveAsFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.AddOS -= AddOs; + Workers.Failed -= CompressToFailed; + Workers.Failed -= LoadOSesFailed; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= CompressToFinished; + Workers.Finished -= LoadOSesFinished; + Workers.Finished -= SaveAsFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdPopulateOSes != null) @@ -508,16 +474,17 @@ namespace osrepodbmgr.Eto thdPopulateOSes.Abort(); thdPopulateOSes = null; } + if(thdCompressTo != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } - if(thdSaveAs != null) - { - thdSaveAs.Abort(); - thdSaveAs = null; - } + + if(thdSaveAs == null) return; + + thdSaveAs.Abort(); + thdSaveAs = null; } protected void OnDeleteEvent(object sender, EventArgs e) @@ -527,60 +494,57 @@ namespace osrepodbmgr.Eto protected void OnBtnCompressClicked(object sender, EventArgs e) { - if(treeOSes.SelectedItem != null) - { - SaveFileDialog dlgFile = new SaveFileDialog(); - dlgFile.Title = "Compress to..."; + if(treeOSes.SelectedItem == null) return; - if(dlgFile.ShowDialog(this) == DialogResult.Ok) - { - Context.dbInfo.id = ((DBEntryForEto)treeOSes.SelectedItem).id; - Context.path = dlgFile.FileName; + SaveFileDialog dlgFile = new SaveFileDialog {Title = "Compress to..."}; - lblProgress.Visible = true; - prgProgress.Visible = true; - lblProgress2.Visible = true; - prgProgress2.Visible = true; - treeOSes.Enabled = false; - btnAdd.Visible = false; - btnRemove.Visible = false; - btnCompress.Visible = false; - btnSave.Visible = false; - //btnHelp.Visible = false; - btnSettings.Enabled = false; - btnStop.Visible = true; + if(dlgFile.ShowDialog(this) != DialogResult.Ok) return; - Workers.Failed += CompressToFailed; - Workers.Finished += CompressToFinished; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; - thdCompressTo = new Thread(Workers.CompressTo); - thdCompressTo.Start(); - } - } + Context.DbInfo.Id = ((DBEntryForEto)treeOSes.SelectedItem).id; + Context.Path = dlgFile.FileName; + + lblProgress.Visible = true; + prgProgress.Visible = true; + lblProgress2.Visible = true; + prgProgress2.Visible = true; + treeOSes.Enabled = false; + btnAdd.Visible = false; + btnRemove.Visible = false; + btnCompress.Visible = false; + btnSave.Visible = false; + //btnHelp.Visible = false; + btnSettings.Enabled = false; + btnStop.Visible = true; + + Workers.Failed += CompressToFailed; + Workers.Finished += CompressToFinished; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; + thdCompressTo = new Thread(Workers.CompressTo); + thdCompressTo.Start(); } - public void CompressToFailed(string text) + void CompressToFailed(string text) { Application.Instance.Invoke(delegate { MessageBox.Show(text, MessageBoxButtons.OK, MessageBoxType.Error); - lblProgress.Visible = false; + lblProgress.Visible = false; lblProgress2.Visible = false; - prgProgress.Visible = false; + prgProgress.Visible = false; prgProgress2.Visible = false; - treeOSes.Enabled = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = Context.usableDotNetZip; - btnSave.Visible = true; - btnHelp.Enabled = true; - btnSettings.Enabled = true; - btnStop.Visible = false; + treeOSes.Enabled = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = Context.UsableDotNetZip; + btnSave.Visible = true; + btnHelp.Enabled = true; + btnSettings.Enabled = true; + btnStop.Visible = false; - Workers.Failed -= CompressToFailed; - Workers.Finished -= CompressToFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= CompressToFailed; + Workers.Finished -= CompressToFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdCompressTo != null) @@ -589,30 +553,30 @@ namespace osrepodbmgr.Eto thdCompressTo = null; } - Context.path = null; + Context.Path = null; }); } - public void CompressToFinished() + void CompressToFinished() { Application.Instance.Invoke(delegate { - lblProgress.Visible = false; + lblProgress.Visible = false; lblProgress2.Visible = false; - prgProgress.Visible = false; + prgProgress.Visible = false; prgProgress2.Visible = false; - treeOSes.Enabled = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = Context.usableDotNetZip; - btnSave.Visible = true; - btnHelp.Enabled = true; - btnSettings.Enabled = true; - btnStop.Visible = false; + treeOSes.Enabled = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = Context.UsableDotNetZip; + btnSave.Visible = true; + btnHelp.Enabled = true; + btnSettings.Enabled = true; + btnStop.Visible = false; - Workers.Failed -= CompressToFailed; - Workers.Finished -= CompressToFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= CompressToFailed; + Workers.Finished -= CompressToFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdCompressTo != null) @@ -621,9 +585,9 @@ namespace osrepodbmgr.Eto thdCompressTo = null; } - MessageBox.Show(string.Format("Correctly compressed as {0}", Context.path)); + MessageBox.Show($"Correctly compressed as {Context.Path}"); - Context.path = null; + Context.Path = null; }); } @@ -631,11 +595,11 @@ namespace osrepodbmgr.Eto { if(populatingFiles) { - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; - Workers.AddFile -= AddFile; - Workers.AddFiles -= AddFiles; + Workers.AddFile -= AddFile; + Workers.AddFiles -= AddFiles; if(thdPopulateFiles != null) { @@ -644,325 +608,311 @@ namespace osrepodbmgr.Eto } lstFiles.Clear(); - btnStopFiles.Visible = false; + btnStopFiles.Visible = false; btnPopulateFiles.Visible = true; } if(scanningFiles) - { if(thdScanFile != null) { thdScanFile.Abort(); thdScanFile = null; } - } + AllClamdFinished(); } protected void OnBtnToggleCrackClicked(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) - { - DBFile file = (DBFile)treeFiles.SelectedItem; - bool crack = !file.Crack; + if(treeFiles.SelectedItem == null) return; - Workers.ToggleCrack(file.Sha256, crack); + DbFile file = (DbFile)treeFiles.SelectedItem; + bool crack = !file.Crack; - lstFiles.Remove(file); - file.Crack = crack; - lstFiles.Add(file); - } + Workers.ToggleCrack(file.Sha256, crack); + + lstFiles.Remove(file); + file.Crack = crack; + lstFiles.Add(file); } protected void OnBtnScanWithClamdClicked(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) + if(treeFiles.SelectedItem == null) return; + + DbFile file = Workers.GetDBFile(((DbFile)treeFiles.SelectedItem).Sha256); + outIter = (DbFile)treeFiles.SelectedItem; + + if(file == null) { - DBFile file = Workers.GetDBFile(((DBFile)treeFiles.SelectedItem).Sha256); - outIter = (osrepodbmgr.Core.DBFile)treeFiles.SelectedItem; - - if(file == null) - { - MessageBox.Show("Cannot get file from database", MessageBoxType.Error); - return; - } - - treeFiles.Enabled = false; - btnToggleCrack.Enabled = false; - btnScanWithClamd.Enabled = false; - btnCheckInVirusTotal.Enabled = false; - prgProgressFiles1.Visible = true; - lblProgressFiles1.Visible = true; - Workers.Failed += ClamdFailed; - Workers.ScanFinished += ClamdFinished; - Workers.UpdateProgress += UpdateVirusProgress; - - lblProgressFiles1.Text = "Scanning file with clamd."; - prgProgressFiles1.Indeterminate = true; - - thdScanFile = new Thread(() => Workers.ClamScanFileFromRepo(file)); - thdScanFile.Start(); + MessageBox.Show("Cannot get file from database", MessageBoxType.Error); + return; } + + treeFiles.Enabled = false; + btnToggleCrack.Enabled = false; + btnScanWithClamd.Enabled = false; + btnCheckInVirusTotal.Enabled = false; + prgProgressFiles1.Visible = true; + lblProgressFiles1.Visible = true; + Workers.Failed += ClamdFailed; + Workers.ScanFinished += ClamdFinished; + Workers.UpdateProgress += UpdateVirusProgress; + + lblProgressFiles1.Text = "Scanning file with clamd."; + prgProgressFiles1.Indeterminate = true; + + thdScanFile = new Thread(() => Workers.ClamScanFileFromRepo(file)); + thdScanFile.Start(); } void ClamdFailed(string text) { Application.Instance.Invoke(delegate { - treeFiles.Enabled = true; - btnToggleCrack.Enabled = true; - btnScanWithClamd.Enabled = true; - btnCheckInVirusTotal.Enabled = true; - prgProgressFiles1.Visible = false; - lblProgressFiles1.Visible = false; - Workers.Failed -= ClamdFailed; - Workers.ScanFinished -= ClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - lblProgressFiles1.Text = ""; - if(thdScanFile != null) - { - thdScanFile.Abort(); - thdScanFile = null; - } + treeFiles.Enabled = true; + btnToggleCrack.Enabled = true; + btnScanWithClamd.Enabled = true; + btnCheckInVirusTotal.Enabled = true; + prgProgressFiles1.Visible = false; + lblProgressFiles1.Visible = false; + Workers.Failed -= ClamdFailed; + Workers.ScanFinished -= ClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + lblProgressFiles1.Text = ""; + if(thdScanFile == null) return; + + thdScanFile.Abort(); + thdScanFile = null; }); } - void ClamdFinished(DBFile file) + void ClamdFinished(DbFile file) { Application.Instance.Invoke(delegate { - treeFiles.Enabled = true; - btnToggleCrack.Enabled = true; - btnScanWithClamd.Enabled = true; - btnCheckInVirusTotal.Enabled = true; - Workers.Failed -= ClamdFailed; - Workers.ScanFinished -= ClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - lblProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - lblProgressFiles1.Visible = false; - if(thdScanFile != null) - thdScanFile = null; + treeFiles.Enabled = true; + btnToggleCrack.Enabled = true; + btnScanWithClamd.Enabled = true; + btnCheckInVirusTotal.Enabled = true; + Workers.Failed -= ClamdFailed; + Workers.ScanFinished -= ClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + lblProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + lblProgressFiles1.Visible = false; + if(thdScanFile != null) thdScanFile = null; - if((!outIter.HasVirus.HasValue || (outIter.HasVirus.HasValue && !outIter.HasVirus.Value)) && file.HasVirus.HasValue && file.HasVirus.Value) - infectedFiles++; + if((!outIter.HasVirus.HasValue || outIter.HasVirus.HasValue && !outIter.HasVirus.Value) && + file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; lstFiles.Remove(outIter); AddFile(file); - lblFileStatus.Text = string.Format("{0} files ({1} infected)", lstFiles.Count, infectedFiles); + lblFileStatus.Text = $"{lstFiles.Count} files ({infectedFiles} infected)"; }); } protected void OnBtnCheckInVirusTotalClicked(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) + if(treeFiles.SelectedItem == null) return; + + DbFile file = Workers.GetDBFile(((DbFile)treeFiles.SelectedItem).Sha256); + outIter = (DbFile)treeFiles.SelectedItem; + + if(file == null) { - DBFile file = Workers.GetDBFile(((DBFile)treeFiles.SelectedItem).Sha256); - outIter = (osrepodbmgr.Core.DBFile)treeFiles.SelectedItem; - - if(file == null) - { - MessageBox.Show("Cannot get file from database", MessageBoxType.Error); - return; - } - - treeFiles.Enabled = false; - btnToggleCrack.Enabled = false; - btnScanWithClamd.Enabled = false; - btnCheckInVirusTotal.Enabled = false; - prgProgressFiles1.Visible = true; - lblProgressFiles1.Visible = true; - Workers.Failed += VirusTotalFailed; - Workers.ScanFinished += VirusTotalFinished; - Workers.UpdateProgress += UpdateVirusProgress; - - lblProgressFiles1.Text = "Scanning file with VirusTotal."; - prgProgressFiles1.Indeterminate = true; - - thdScanFile = new Thread(() => Workers.VirusTotalFileFromRepo(file)); - thdScanFile.Start(); + MessageBox.Show("Cannot get file from database", MessageBoxType.Error); + return; } + + treeFiles.Enabled = false; + btnToggleCrack.Enabled = false; + btnScanWithClamd.Enabled = false; + btnCheckInVirusTotal.Enabled = false; + prgProgressFiles1.Visible = true; + lblProgressFiles1.Visible = true; + Workers.Failed += VirusTotalFailed; + Workers.ScanFinished += VirusTotalFinished; + Workers.UpdateProgress += UpdateVirusProgress; + + lblProgressFiles1.Text = "Scanning file with VirusTotal."; + prgProgressFiles1.Indeterminate = true; + + thdScanFile = new Thread(() => Workers.VirusTotalFileFromRepo(file)); + thdScanFile.Start(); } void VirusTotalFailed(string text) { Application.Instance.Invoke(delegate { - treeFiles.Enabled = true; - btnToggleCrack.Enabled = true; - btnScanWithClamd.Enabled = true; - btnCheckInVirusTotal.Enabled = true; - prgProgressFiles1.Visible = false; - Workers.Failed -= VirusTotalFailed; - Workers.ScanFinished -= VirusTotalFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - lblProgressFiles1.Text = ""; - if(thdScanFile != null) - thdScanFile = null; + treeFiles.Enabled = true; + btnToggleCrack.Enabled = true; + btnScanWithClamd.Enabled = true; + btnCheckInVirusTotal.Enabled = true; + prgProgressFiles1.Visible = false; + Workers.Failed -= VirusTotalFailed; + Workers.ScanFinished -= VirusTotalFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + lblProgressFiles1.Text = ""; + if(thdScanFile != null) thdScanFile = null; MessageBox.Show(text, MessageBoxType.Error); }); } - void VirusTotalFinished(DBFile file) + void VirusTotalFinished(DbFile file) { Application.Instance.Invoke(delegate { - treeFiles.Enabled = true; - btnToggleCrack.Enabled = true; - btnScanWithClamd.Enabled = true; - btnCheckInVirusTotal.Enabled = true; - Workers.Failed -= VirusTotalFailed; - Workers.ScanFinished -= VirusTotalFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - lblProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - if(thdScanFile != null) - thdScanFile = null; + treeFiles.Enabled = true; + btnToggleCrack.Enabled = true; + btnScanWithClamd.Enabled = true; + btnCheckInVirusTotal.Enabled = true; + Workers.Failed -= VirusTotalFailed; + Workers.ScanFinished -= VirusTotalFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + lblProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + if(thdScanFile != null) thdScanFile = null; - if((!outIter.HasVirus.HasValue || (outIter.HasVirus.HasValue && !outIter.HasVirus.Value)) && file.HasVirus.HasValue && file.HasVirus.Value) - infectedFiles++; + if((!outIter.HasVirus.HasValue || outIter.HasVirus.HasValue && !outIter.HasVirus.Value) && + file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; lstFiles.Remove(outIter); AddFile(file); - lblFileStatus.Text = string.Format("{0} files ({1} infected)", lstFiles.Count, infectedFiles); + lblFileStatus.Text = $"{lstFiles.Count} files ({infectedFiles} infected)"; }); } - public void UpdateVirusProgress(string text, string inner, long current, long maximum) + void UpdateVirusProgress(string text, string inner, long current, long maximum) { - Application.Instance.Invoke(delegate - { - lblProgressFiles1.Text = text; - }); + Application.Instance.Invoke(delegate { lblProgressFiles1.Text = text; }); } protected void OnBtnPopulateFilesClicked(object sender, EventArgs e) { lstFiles.Clear(); - tabOSes.Enabled = false; - btnStopFiles.Visible = true; + tabOSes.Enabled = false; + btnStopFiles.Visible = true; btnPopulateFiles.Visible = false; - lblProgressFiles1.Text = "Loading files from database"; - lblProgressFiles1.Visible = true; - lblProgressFiles2.Visible = true; - prgProgressFiles1.Visible = true; - prgProgressFiles2.Visible = true; - prgProgressFiles1.Indeterminate = true; - Workers.Failed += LoadFilesFailed; - Workers.Finished += LoadFilesFinished; - Workers.UpdateProgress += UpdateFileProgress2; - populatingFiles = true; - infectedFiles = 0; - thdPopulateFiles = new Thread(Workers.GetFilesFromDb); + lblProgressFiles1.Text = "Loading files from database"; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + prgProgressFiles1.Indeterminate = true; + Workers.Failed += LoadFilesFailed; + Workers.Finished += LoadFilesFinished; + Workers.UpdateProgress += UpdateFileProgress2; + populatingFiles = true; + infectedFiles = 0; + thdPopulateFiles = new Thread(Workers.GetFilesFromDb); thdPopulateFiles.Start(); } - public void UpdateFileProgress(string text, string inner, long current, long maximum) + void UpdateFileProgress(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgressFiles1.Text = string.Format("{0}: {1}", text, inner); + lblProgressFiles1.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgressFiles1.Text = inner; else lblProgressFiles1.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgressFiles1.Indeterminate = false; - prgProgressFiles1.MinValue = 0; - prgProgressFiles1.MaxValue = (int)maximum; - prgProgressFiles1.Value = (int)current; + prgProgressFiles1.MinValue = 0; + prgProgressFiles1.MaxValue = (int)maximum; + prgProgressFiles1.Value = (int)current; } - else - prgProgressFiles1.Indeterminate = true; + else prgProgressFiles1.Indeterminate = true; }); } - public void UpdateFileProgress2(string text, string inner, long current, long maximum) + void UpdateFileProgress2(string text, string inner, long current, long maximum) { Application.Instance.Invoke(delegate { if(!string.IsNullOrWhiteSpace(text) && !string.IsNullOrWhiteSpace(inner)) - lblProgressFiles2.Text = string.Format("{0}: {1}", text, inner); + lblProgressFiles2.Text = $"{text}: {inner}"; else if(!string.IsNullOrWhiteSpace(inner)) lblProgressFiles2.Text = inner; else lblProgressFiles2.Text = text; if(maximum > 0) { - if(current < int.MinValue || current > int.MaxValue || - maximum < int.MinValue || maximum > int.MaxValue) + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) { current /= 100; maximum /= 100; } prgProgressFiles2.Indeterminate = false; - prgProgressFiles2.MinValue = 0; - prgProgressFiles2.MaxValue = (int)maximum; - prgProgressFiles2.Value = (int)current; + prgProgressFiles2.MinValue = 0; + prgProgressFiles2.MaxValue = (int)maximum; + prgProgressFiles2.Value = (int)current; } - else - prgProgressFiles2.Indeterminate = true; + else prgProgressFiles2.Indeterminate = true; }); } - void AddFile(Core.DBFile file) + void AddFile(DbFile file) { Application.Instance.Invoke(delegate { - if(file.HasVirus.HasValue && file.HasVirus.Value) - infectedFiles++; + if(file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; lstFiles.Add(file); }); } - void AddFiles(List files) + void AddFiles(List files) { Application.Instance.Invoke(delegate { - List foo = new List(); + List foo = new List(); foo.AddRange(lstFiles); foo.AddRange(files); - lstFiles = new ObservableCollection(foo); + lstFiles = new ObservableCollection(foo); - foreach(DBFile file in files) + foreach(DbFile file in files) if(file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; }); } - void LoadFilesFailed(string text) { Application.Instance.Invoke(delegate { - MessageBox.Show(string.Format("Error {0} when populating files, exiting...", text), MessageBoxType.Error); - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + MessageBox.Show($"Error {text} when populating files, exiting...", MessageBoxType.Error); + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; if(thdPopulateFiles != null) { thdPopulateFiles.Abort(); thdPopulateFiles = null; } + tabOSes.Enabled = true; lstFiles.Clear(); - btnStopFiles.Visible = false; + btnStopFiles.Visible = false; btnPopulateFiles.Visible = true; - populatingFiles = false; + populatingFiles = false; }); } @@ -970,64 +920,60 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; if(thdPopulateFiles != null) { thdPopulateFiles.Abort(); thdPopulateFiles = null; } - treeFiles.DataStore = lstFiles; - lblProgressFiles1.Visible = false; - lblProgressFiles2.Visible = false; - prgProgressFiles1.Visible = false; - prgProgressFiles2.Visible = false; - btnToggleCrack.Visible = true; - btnScanWithClamd.Visible = true; + + treeFiles.DataStore = lstFiles; + lblProgressFiles1.Visible = false; + lblProgressFiles2.Visible = false; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Visible = false; + btnToggleCrack.Visible = true; + btnScanWithClamd.Visible = true; btnCheckInVirusTotal.Visible = true; - btnStopFiles.Visible = false; - btnPopulateFiles.Visible = false; - populatingFiles = false; - treeFiles.Enabled = true; - tabOSes.Enabled = true; - btnScanAllPending.Visible = true; - btnCleanFiles.Visible = true; - lblFileStatus.Visible = true; - lblFileStatus.Text = string.Format("{0} files ({1} infected)", lstFiles.Count, infectedFiles); + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = false; + populatingFiles = false; + treeFiles.Enabled = true; + tabOSes.Enabled = true; + btnScanAllPending.Visible = true; + btnCleanFiles.Visible = true; + lblFileStatus.Visible = true; + lblFileStatus.Text = $"{lstFiles.Count} files ({infectedFiles} infected)"; }); } void treeFilesSelectionChanged(object sender, EventArgs e) { - if(treeFiles.SelectedItem != null) - { - if(((DBFile)treeFiles.SelectedItem).Crack) - btnToggleCrack.Text = "Mark as not crack"; - else - btnToggleCrack.Text = "Mark as crack"; - } - } + if(treeFiles.SelectedItem == null) return; + btnToggleCrack.Text = ((DbFile)treeFiles.SelectedItem).Crack ? "Mark as not crack" : "Mark as crack"; + } protected void OnBtnScanAllPendingClicked(object sender, EventArgs e) { - treeFiles.Enabled = false; - btnToggleCrack.Enabled = false; - btnScanWithClamd.Enabled = false; - btnCheckInVirusTotal.Enabled = false; - lblProgressFiles1.Visible = true; - lblProgressFiles2.Visible = true; - prgProgressFiles1.Visible = true; - prgProgressFiles2.Visible = true; - btnScanAllPending.Enabled = false; - Workers.Finished += AllClamdFinished; - Workers.UpdateProgress += UpdateVirusProgress2; - Workers.UpdateProgress2 += UpdateFileProgress; - btnStopFiles.Visible = true; - scanningFiles = true; + treeFiles.Enabled = false; + btnToggleCrack.Enabled = false; + btnScanWithClamd.Enabled = false; + btnCheckInVirusTotal.Enabled = false; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + btnScanAllPending.Enabled = false; + Workers.Finished += AllClamdFinished; + Workers.UpdateProgress += UpdateVirusProgress2; + Workers.UpdateProgress2 += UpdateFileProgress; + btnStopFiles.Visible = true; + scanningFiles = true; - lblProgressFiles2.Text = "Scanning file with clamd."; + lblProgressFiles2.Text = "Scanning file with clamd."; prgProgressFiles2.Indeterminate = true; thdScanFile = new Thread(Workers.ClamScanAllFiles); @@ -1038,100 +984,127 @@ namespace osrepodbmgr.Eto { Application.Instance.Invoke(delegate { - treeFiles.Enabled = true; - btnToggleCrack.Enabled = true; - btnScanWithClamd.Enabled = true; - btnCheckInVirusTotal.Enabled = true; - btnScanAllPending.Enabled = true; - Workers.Finished -= AllClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress2; - Workers.UpdateProgress2 -= UpdateFileProgress; - lblProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - lblProgressFiles2.Text = ""; - prgProgressFiles2.Visible = false; - btnStopFiles.Visible = false; - scanningFiles = false; - if(thdScanFile != null) - thdScanFile = null; + treeFiles.Enabled = true; + btnToggleCrack.Enabled = true; + btnScanWithClamd.Enabled = true; + btnCheckInVirusTotal.Enabled = true; + btnScanAllPending.Enabled = true; + Workers.Finished -= AllClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress2; + Workers.UpdateProgress2 -= UpdateFileProgress; + lblProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + lblProgressFiles2.Text = ""; + prgProgressFiles2.Visible = false; + btnStopFiles.Visible = false; + scanningFiles = false; + if(thdScanFile != null) thdScanFile = null; OnBtnPopulateFilesClicked(null, new EventArgs()); }); } - public void UpdateVirusProgress2(string text, string inner, long current, long maximum) + void UpdateVirusProgress2(string text, string inner, long current, long maximum) { - Application.Instance.Invoke(delegate - { - lblProgressFiles2.Text = text; - }); + Application.Instance.Invoke(delegate { lblProgressFiles2.Text = text; }); } protected void OnBtnCleanFilesClicked(object sender, EventArgs e) { - DialogResult result = MessageBox.Show("This option will search the database for any known file that doesn't\n" + - "belong to any OS and remove it from the database.\n\n" + - "It will then search the repository for any file not on the database and remove it.\n\n" + - "THIS OPERATION MAY VERY LONG, CANNOT BE CANCELED AND REMOVES DATA ON DISK.\n\n" + - "Are you sure to continue?", MessageBoxButtons.YesNo, MessageBoxType.Question); - if(result == DialogResult.Yes) - { - btnCleanFiles.Visible = false; - btnToggleCrack.Visible = false; - btnScanWithClamd.Visible = false; - btnScanAllPending.Visible = false; - btnCheckInVirusTotal.Visible = false; - tabOSes.Enabled = false; - treeFiles.Enabled = false; - lblProgressFiles1.Visible = true; - lblProgressFiles2.Visible = true; - Workers.Finished += CleanFilesFinished; - Workers.UpdateProgress += UpdateFileProgress; - Workers.UpdateProgress2 += UpdateFileProgress2; - lblProgressFiles1.Text = ""; - prgProgressFiles1.Visible = true; - lblProgressFiles2.Text = ""; - prgProgressFiles2.Visible = true; - btnStopFiles.Visible = false; - prgProgress2.Indeterminate = true; - btnSettings.Enabled = false; - btnHelp.Enabled = false; - mnuCompress.Enabled = false; - btnQuit.Enabled = false; - mnuFile.Enabled = false; - thdCleanFiles = new Thread(Workers.CleanFiles); - thdCleanFiles.Start(); - } + DialogResult result = + MessageBox.Show("This option will search the database for any known file that doesn't\n" + "belong to any OS and remove it from the database.\n\n" + "It will then search the repository for any file not on the database and remove it.\n\n" + "THIS OPERATION MAY VERY LONG, CANNOT BE CANCELED AND REMOVES DATA ON DISK.\n\n" + "Are you sure to continue?", + MessageBoxButtons.YesNo, MessageBoxType.Question); + if(result != DialogResult.Yes) return; + + btnCleanFiles.Visible = false; + btnToggleCrack.Visible = false; + btnScanWithClamd.Visible = false; + btnScanAllPending.Visible = false; + btnCheckInVirusTotal.Visible = false; + tabOSes.Enabled = false; + treeFiles.Enabled = false; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + Workers.Finished += CleanFilesFinished; + Workers.UpdateProgress += UpdateFileProgress; + Workers.UpdateProgress2 += UpdateFileProgress2; + lblProgressFiles1.Text = ""; + prgProgressFiles1.Visible = true; + lblProgressFiles2.Text = ""; + prgProgressFiles2.Visible = true; + btnStopFiles.Visible = false; + prgProgress2.Indeterminate = true; + btnSettings.Enabled = false; + btnHelp.Enabled = false; + mnuCompress.Enabled = false; + btnQuit.Enabled = false; + mnuFile.Enabled = false; + thdCleanFiles = new Thread(Workers.CleanFiles); + thdCleanFiles.Start(); } void CleanFilesFinished() { Application.Instance.Invoke(delegate { - btnCleanFiles.Visible = true; - btnToggleCrack.Visible = true; - btnScanWithClamd.Visible = true; - btnScanAllPending.Visible = true; - btnCheckInVirusTotal.Visible = true; - tabOSes.Enabled = true; - treeFiles.Enabled = true; - Workers.Finished -= CleanFilesFinished; - Workers.UpdateProgress -= UpdateFileProgress; - Workers.UpdateProgress2 -= UpdateFileProgress2; - lblProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - lblProgressFiles2.Text = ""; - prgProgressFiles2.Visible = false; - btnSettings.Enabled = true; - btnHelp.Enabled = true; - mnuCompress.Enabled = true; - btnQuit.Enabled = true; - mnuFile.Enabled = true; - if(thdCleanFiles != null) - thdCleanFiles = null; + btnCleanFiles.Visible = true; + btnToggleCrack.Visible = true; + btnScanWithClamd.Visible = true; + btnScanAllPending.Visible = true; + btnCheckInVirusTotal.Visible = true; + tabOSes.Enabled = true; + treeFiles.Enabled = true; + Workers.Finished -= CleanFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + Workers.UpdateProgress2 -= UpdateFileProgress2; + lblProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + lblProgressFiles2.Text = ""; + prgProgressFiles2.Visible = false; + btnSettings.Enabled = true; + btnHelp.Enabled = true; + mnuCompress.Enabled = true; + btnQuit.Enabled = true; + mnuFile.Enabled = true; + if(thdCleanFiles != null) thdCleanFiles = null; OnBtnPopulateFilesClicked(null, new EventArgs()); }); } + + #region XAML UI elements + #pragma warning disable 0649 + GridView treeOSes; + Label lblProgress; + ProgressBar prgProgress; + Label lblProgress2; + ProgressBar prgProgress2; + Button btnAdd; + Button btnRemove; + Button btnCompress; + Button btnSave; + Button btnStop; + ButtonMenuItem btnSettings; + ButtonMenuItem btnHelp; + ButtonMenuItem mnuCompress; + GridView treeFiles; + Label lblProgressFiles1; + ProgressBar prgProgressFiles1; + Label lblProgressFiles2; + ProgressBar prgProgressFiles2; + Button btnStopFiles; + Button btnToggleCrack; + Button btnScanWithClamd; + Button btnCheckInVirusTotal; + Button btnPopulateFiles; + TabPage tabOSes; + Button btnScanAllPending; + Button btnCleanFiles; + ButtonMenuItem btnQuit; + ButtonMenuItem mnuFile; + Label lblOSStatus; + Label lblFileStatus; + #pragma warning restore 0649 + #endregion XAML UI elements } -} +} \ No newline at end of file diff --git a/osrepodbmgr/Program.cs b/osrepodbmgr/Program.cs index ad3a98f..a2ebf7d 100644 --- a/osrepodbmgr/Program.cs +++ b/osrepodbmgr/Program.cs @@ -25,8 +25,10 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using Gtk; using osrepodbmgr.Core; +using Settings = osrepodbmgr.Core.Settings; namespace osrepodbmgr { @@ -34,20 +36,20 @@ namespace osrepodbmgr { public static void Main(string[] args) { - Core.Settings.LoadSettings(); + Settings.LoadSettings(); Context.CheckUnar(); - Context.usableDotNetZip = true; - if(Core.Settings.Current.UseAntivirus) + Context.UsableDotNetZip = true; + if(Settings.Current.UseAntivirus) { - if(Core.Settings.Current.UseClamd) - Workers.InitClamd(); - if(Core.Settings.Current.UseVirusTotal) - Context.virusTotalEnabled = Workers.InitVirusTotal(Core.Settings.Current.VirusTotalKey); + if(Settings.Current.UseClamd) Workers.InitClamd(); + if(Settings.Current.UseVirusTotal) + Context.VirusTotalEnabled = Workers.InitVirusTotal(Settings.Current.VirusTotalKey); } + Application.Init(); frmMain win = new frmMain(); win.Show(); Application.Run(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgAdd.cs b/osrepodbmgr/dlgAdd.cs index c686f7e..6b20ed9 100644 --- a/osrepodbmgr/dlgAdd.cs +++ b/osrepodbmgr/dlgAdd.cs @@ -25,11 +25,13 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Xml.Serialization; +using Gdk; using Gtk; using Newtonsoft.Json; using osrepodbmgr; @@ -38,22 +40,21 @@ using Schemas; public partial class dlgAdd : Dialog { - Thread thdPulseProgress; - Thread thdFindFiles; - Thread thdHashFiles; - Thread thdCheckFiles; - Thread thdAddFiles; - Thread thdPackFiles; - Thread thdOpenArchive; - Thread thdExtractArchive; - Thread thdRemoveTemp; - bool stopped; - ListStore fileView; - ListStore osView; - int knownFiles; + public delegate void OnAddedOSDelegate(DbEntry os); - public delegate void OnAddedOSDelegate(DBEntry os); - public event OnAddedOSDelegate OnAddedOS; + ListStore fileView; + int knownFiles; + ListStore osView; + bool stopped; + Thread thdAddFiles; + Thread thdCheckFiles; + Thread thdExtractArchive; + Thread thdFindFiles; + Thread thdHashFiles; + Thread thdOpenArchive; + Thread thdPackFiles; + Thread thdPulseProgress; + Thread thdRemoveTemp; public dlgAdd() { @@ -62,17 +63,21 @@ public partial class dlgAdd : Dialog Context.UnarChangeStatus += UnarChangeStatus; Context.CheckUnar(); - CellRendererText filenameCell = new CellRendererText(); - CellRendererToggle crackCell = new CellRendererToggle(); - CellRendererText hashCell = new CellRendererText(); - CellRendererToggle dbCell = new CellRendererToggle(); + CellRendererText filenameCell = new CellRendererText(); + CellRendererToggle crackCell = new CellRendererToggle(); + CellRendererText hashCell = new CellRendererText(); + CellRendererToggle dbCell = new CellRendererToggle(); - TreeViewColumn filenameColumn = new TreeViewColumn("Path", filenameCell, "text", 0, "background", 3, "foreground", 4); + TreeViewColumn filenameColumn = + new TreeViewColumn("Path", filenameCell, "text", 0, "background", 3, + "foreground", 4); TreeViewColumn crackColumn = new TreeViewColumn("Crack?", crackCell, "active", 5); - TreeViewColumn hashColumn = new TreeViewColumn("SHA256", hashCell, "text", 1, "background", 3, "foreground", 4); - TreeViewColumn dbColumn = new TreeViewColumn("Known?", dbCell, "active", 2); + TreeViewColumn hashColumn = + new TreeViewColumn("SHA256", hashCell, "text", 1, "background", 3, "foreground", 4); + TreeViewColumn dbColumn = new TreeViewColumn("Known?", dbCell, "active", 2); - fileView = new ListStore(typeof(string), typeof(string), typeof(bool), typeof(string), typeof(string), typeof(bool)); + fileView = new ListStore(typeof(string), typeof(string), typeof(bool), typeof(string), typeof(string), + typeof(bool)); treeFiles.Model = fileView; treeFiles.AppendColumn(filenameColumn); @@ -82,38 +87,39 @@ public partial class dlgAdd : Dialog tabTabs.GetNthPage(1).Visible = false; - CellRendererText developerCell = new CellRendererText(); - CellRendererText productCell = new CellRendererText(); - CellRendererText versionCell = new CellRendererText(); - CellRendererText languagesCell = new CellRendererText(); - CellRendererText architectureCell = new CellRendererText(); - CellRendererText machineCell = new CellRendererText(); - CellRendererText formatCell = new CellRendererText(); - CellRendererText descriptionCell = new CellRendererText(); - CellRendererToggle oemCell = new CellRendererToggle(); - CellRendererToggle upgradeCell = new CellRendererToggle(); - CellRendererToggle updateCell = new CellRendererToggle(); - CellRendererToggle sourceCell = new CellRendererToggle(); - CellRendererToggle filesCell = new CellRendererToggle(); - CellRendererToggle netinstallCell = new CellRendererToggle(); + CellRendererText developerCell = new CellRendererText(); + CellRendererText productCell = new CellRendererText(); + CellRendererText versionCell = new CellRendererText(); + CellRendererText languagesCell = new CellRendererText(); + CellRendererText architectureCell = new CellRendererText(); + CellRendererText machineCell = new CellRendererText(); + CellRendererText formatCell = new CellRendererText(); + CellRendererText descriptionCell = new CellRendererText(); + CellRendererToggle oemCell = new CellRendererToggle(); + CellRendererToggle upgradeCell = new CellRendererToggle(); + CellRendererToggle updateCell = new CellRendererToggle(); + CellRendererToggle sourceCell = new CellRendererToggle(); + CellRendererToggle filesCell = new CellRendererToggle(); + CellRendererToggle netinstallCell = new CellRendererToggle(); - TreeViewColumn developerColumn = new TreeViewColumn("Developer", developerCell, "text", 0); - TreeViewColumn productColumn = new TreeViewColumn("Product", productCell, "text", 1); - TreeViewColumn versionColumn = new TreeViewColumn("Version", versionCell, "text", 2); - TreeViewColumn languagesColumn = new TreeViewColumn("Languages", languagesCell, "text", 3); - TreeViewColumn architectureColumn = new TreeViewColumn("Architecture", architectureCell, "text", 4); - TreeViewColumn machineColumn = new TreeViewColumn("Machine", machineCell, "text", 5); - TreeViewColumn formatColumn = new TreeViewColumn("Format", formatCell, "text", 6); - TreeViewColumn descriptionColumn = new TreeViewColumn("Description", descriptionCell, "text", 7); - TreeViewColumn oemColumn = new TreeViewColumn("OEM?", oemCell, "active", 8); - TreeViewColumn upgradeColumn = new TreeViewColumn("Upgrade?", upgradeCell, "active", 9); - TreeViewColumn updateColumn = new TreeViewColumn("Update?", updateCell, "active", 10); - TreeViewColumn sourceColumn = new TreeViewColumn("Source?", sourceCell, "active", 11); - TreeViewColumn filesColumn = new TreeViewColumn("Files?", filesCell, "active", 12); - TreeViewColumn netinstallColumn = new TreeViewColumn("NetInstall?", netinstallCell, "active", 13); + TreeViewColumn developerColumn = new TreeViewColumn("Developer", developerCell, "text", 0); + TreeViewColumn productColumn = new TreeViewColumn("Product", productCell, "text", 1); + TreeViewColumn versionColumn = new TreeViewColumn("Version", versionCell, "text", 2); + TreeViewColumn languagesColumn = new TreeViewColumn("Languages", languagesCell, "text", 3); + TreeViewColumn architectureColumn = new TreeViewColumn("Architecture", architectureCell, "text", 4); + TreeViewColumn machineColumn = new TreeViewColumn("Machine", machineCell, "text", 5); + TreeViewColumn formatColumn = new TreeViewColumn("Format", formatCell, "text", 6); + TreeViewColumn descriptionColumn = new TreeViewColumn("Description", descriptionCell, "text", 7); + TreeViewColumn oemColumn = new TreeViewColumn("OEM?", oemCell, "active", 8); + TreeViewColumn upgradeColumn = new TreeViewColumn("Upgrade?", upgradeCell, "active", 9); + TreeViewColumn updateColumn = new TreeViewColumn("Update?", updateCell, "active", 10); + TreeViewColumn sourceColumn = new TreeViewColumn("Source?", sourceCell, "active", 11); + TreeViewColumn filesColumn = new TreeViewColumn("Files?", filesCell, "active", 12); + TreeViewColumn netinstallColumn = new TreeViewColumn("NetInstall?", netinstallCell, "active", 13); - osView = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), - typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(bool)); + osView = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(bool), typeof(bool), typeof(bool), + typeof(bool), typeof(bool), typeof(bool)); treeOSes.Model = osView; treeOSes.AppendColumn(developerColumn); @@ -134,20 +140,17 @@ public partial class dlgAdd : Dialog treeFiles.Selection.Changed += treeFilesSelectionChanged; } + public event OnAddedOSDelegate OnAddedOS; + void UnarChangeStatus() { - Application.Invoke(delegate - { - btnArchive.Sensitive = Context.unarUsable; - }); + Application.Invoke(delegate { btnArchive.Sensitive = Context.UnarUsable; }); } protected void OnDeleteEvent(object sender, DeleteEventArgs a) { - if(btnStop.Visible) - btnStop.Click(); - if(btnClose.Sensitive) - btnClose.Click(); + if(btnStop.Visible) btnStop.Click(); + if(btnClose.Sensitive) btnClose.Click(); Application.Quit(); a.RetVal = true; @@ -155,37 +158,34 @@ public partial class dlgAdd : Dialog protected void OnBtnFolderClicked(object sender, EventArgs e) { - FileChooserDialog dlgFolder = new FileChooserDialog("Open folder", this, FileChooserAction.SelectFolder, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + FileChooserDialog dlgFolder = + new FileChooserDialog("Open folder", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, + "Choose", ResponseType.Accept) {SelectMultiple = false}; if(dlgFolder.Run() == (int)ResponseType.Accept) { - knownFiles = 0; - stopped = false; - lblProgress.Text = "Finding files"; + knownFiles = 0; + stopped = false; + lblProgress.Text = "Finding files"; lblProgress.Visible = true; prgProgress.Visible = true; - btnExit.Sensitive = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - thdPulseProgress = new Thread(() => + btnExit.Sensitive = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - thdFindFiles = new Thread(Workers.FindFiles); - Context.path = dlgFolder.Filename; - Workers.Failed += FindFilesFailed; + thdFindFiles = new Thread(Workers.FindFiles); + Context.Path = dlgFolder.Filename; + Workers.Failed += FindFilesFailed; Workers.Finished += FindFilesFinished; - btnStop.Visible = true; + btnStop.Visible = true; thdPulseProgress.Start(); thdFindFiles.Start(); } @@ -199,21 +199,22 @@ public partial class dlgAdd : Dialog { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - btnStop.Visible = false; - Workers.Failed -= FindFilesFailed; - Workers.Finished -= FindFilesFinished; - thdFindFiles = null; + + thdPulseProgress?.Abort(); + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + btnStop.Visible = false; + Workers.Failed -= FindFilesFailed; + Workers.Finished -= FindFilesFinished; + thdFindFiles = null; }); } @@ -221,22 +222,21 @@ public partial class dlgAdd : Dialog { Application.Invoke(delegate { - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdPulseProgress?.Abort(); - Workers.Failed -= FindFilesFailed; + Workers.Failed -= FindFilesFailed; Workers.Finished -= FindFilesFinished; - lblProgress.Visible = true; - prgProgress.Visible = true; + lblProgress.Visible = true; + prgProgress.Visible = true; lblProgress2.Visible = true; prgProgress2.Visible = true; - thdFindFiles = null; - thdHashFiles = new Thread(Workers.HashFiles); - Workers.Failed += HashFilesFailed; - Workers.Finished += HashFilesFinished; - Workers.UpdateProgress += UpdateProgress; + thdFindFiles = null; + thdHashFiles = new Thread(Workers.HashFiles); + Workers.Failed += HashFilesFailed; + Workers.Finished += HashFilesFinished; + Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; thdHashFiles.Start(); }); @@ -248,25 +248,26 @@ public partial class dlgAdd : Dialog { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - btnStop.Visible = false; - Workers.Failed -= HashFilesFailed; - Workers.Finished -= HashFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + + thdPulseProgress?.Abort(); + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + btnStop.Visible = false; + Workers.Failed -= HashFilesFailed; + Workers.Finished -= HashFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - thdHashFiles = null; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + thdHashFiles = null; }); } @@ -274,29 +275,28 @@ public partial class dlgAdd : Dialog { Application.Invoke(delegate { - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - Workers.Failed -= HashFilesFailed; - Workers.Finished -= HashFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + thdPulseProgress?.Abort(); + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + Workers.Failed -= HashFilesFailed; + Workers.Finished -= HashFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - thdHashFiles = null; + thdHashFiles = null; prgProgress.Visible = true; - thdCheckFiles = new Thread(Workers.CheckDbForFiles); - Workers.Failed += ChkFilesFailed; - Workers.Finished += ChkFilesFinished; - Workers.UpdateProgress += UpdateProgress; + thdCheckFiles = new Thread(Workers.CheckDbForFiles); + Workers.Failed += ChkFilesFailed; + Workers.Finished += ChkFilesFinished; + Workers.UpdateProgress += UpdateProgress; Workers.UpdateProgress2 += UpdateProgress2; - Workers.AddFileForOS += AddFile; - Workers.AddOS += AddOS; + Workers.AddFileForOS += AddFile; + Workers.AddOS += AddOS; thdCheckFiles.Start(); }); } @@ -307,32 +307,30 @@ public partial class dlgAdd : Dialog { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - prgProgress.Visible = false; - btnStop.Visible = false; - btnClose.Visible = false; - btnExit.Sensitive = true; - Workers.Failed -= ChkFilesFailed; - Workers.Finished -= ChkFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + + prgProgress.Visible = false; + btnStop.Visible = false; + btnClose.Visible = false; + btnExit.Sensitive = true; + Workers.Failed -= ChkFilesFailed; + Workers.Finished -= ChkFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - if(thdCheckFiles != null) - thdCheckFiles.Abort(); + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOS; + thdPulseProgress?.Abort(); + thdCheckFiles?.Abort(); thdHashFiles = null; - if(fileView != null) - fileView.Clear(); - if(osView != null) - { - tabTabs.GetNthPage(1).Visible = false; - osView.Clear(); - } + fileView?.Clear(); + if(osView == null) return; + + tabTabs.GetNthPage(1).Visible = false; + osView.Clear(); }); } @@ -340,99 +338,82 @@ public partial class dlgAdd : Dialog { Application.Invoke(delegate { - Workers.Failed -= ChkFilesFailed; - Workers.Finished -= ChkFilesFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= ChkFilesFailed; + Workers.Finished -= ChkFilesFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOS; - if(thdCheckFiles != null) - thdCheckFiles.Abort(); - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - thdHashFiles = null; - prgProgress.Visible = false; - btnStop.Visible = false; - btnClose.Visible = true; - btnExit.Sensitive = true; - btnPack.Visible = true; - btnPack.Sensitive = true; - btnRemoveFile.Visible = true; - btnToggleCrack.Visible = true; - btnRemoveFile.Sensitive = true; + thdCheckFiles?.Abort(); + thdPulseProgress?.Abort(); + thdHashFiles = null; + prgProgress.Visible = false; + btnStop.Visible = false; + btnClose.Visible = true; + btnExit.Sensitive = true; + btnPack.Visible = true; + btnPack.Sensitive = true; + btnRemoveFile.Visible = true; + btnToggleCrack.Visible = true; + btnRemoveFile.Sensitive = true; btnToggleCrack.Sensitive = true; - txtFormat.IsEditable = true; - txtMachine.IsEditable = true; - txtProduct.IsEditable = true; - txtVersion.IsEditable = true; - txtLanguages.IsEditable = true; - txtDeveloper.IsEditable = true; - txtDescription.IsEditable = true; + txtFormat.IsEditable = true; + txtMachine.IsEditable = true; + txtProduct.IsEditable = true; + txtVersion.IsEditable = true; + txtLanguages.IsEditable = true; + txtDeveloper.IsEditable = true; + txtDescription.IsEditable = true; txtArchitecture.IsEditable = true; - chkOem.Sensitive = true; - chkFiles.Sensitive = true; - chkUpdate.Sensitive = true; - chkUpgrade.Sensitive = true; - chkNetinstall.Sensitive = true; - chkSource.Sensitive = true; + chkOem.Sensitive = true; + chkFiles.Sensitive = true; + chkUpdate.Sensitive = true; + chkUpgrade.Sensitive = true; + chkNetinstall.Sensitive = true; + chkSource.Sensitive = true; btnMetadata.Visible = true; - if(Context.metadata != null) + if(Context.Metadata != null) { - if(Context.metadata.Developer != null) - { - foreach(string developer in Context.metadata.Developer) + if(Context.Metadata.Developer != null) + foreach(string developer in Context.Metadata.Developer) { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } - if(!string.IsNullOrWhiteSpace(Context.metadata.Name)) - txtProduct.Text = Context.metadata.Name; - if(!string.IsNullOrWhiteSpace(Context.metadata.Version)) - txtVersion.Text = Context.metadata.Version; + if(!string.IsNullOrWhiteSpace(Context.Metadata.Name)) txtProduct.Text = Context.Metadata.Name; + if(!string.IsNullOrWhiteSpace(Context.Metadata.Version)) txtVersion.Text = Context.Metadata.Version; - if(Context.metadata.Languages != null) - { - foreach(LanguagesTypeLanguage language in Context.metadata.Languages) + if(Context.Metadata.Languages != null) + foreach(LanguagesTypeLanguage language in Context.Metadata.Languages) { - if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) - txtLanguages.Text += ","; - txtLanguages.Text += language; + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) txtLanguages.Text += ","; + txtLanguages.Text += language; } - } - if(Context.metadata.Architectures != null) - { - foreach(ArchitecturesTypeArchitecture architecture in Context.metadata.Architectures) + if(Context.Metadata.Architectures != null) + foreach(ArchitecturesTypeArchitecture architecture in Context.Metadata.Architectures) { - if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) - txtArchitecture.Text += ","; - txtArchitecture.Text += architecture; + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; } - } - if(Context.metadata.Systems != null) - { - foreach(string machine in Context.metadata.Systems) + if(Context.Metadata.Systems != null) + foreach(string machine in Context.Metadata.Systems) { - if(!string.IsNullOrWhiteSpace(txtMachine.Text)) - txtMachine.Text += ","; - txtMachine.Text += machine; + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) txtMachine.Text += ","; + txtMachine.Text += machine; } - } - btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(0, 127, 0)); + btnMetadata.ModifyBg(StateType.Normal, new Color(0, 127, 0)); } - else - btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(127, 0, 0)); + else btnMetadata.ModifyBg(StateType.Normal, new Color(127, 0, 0)); lblStatus.Visible = true; - lblStatus.Text = string.Format("{0} files ({1} already known)", fileView.IterNChildren(), knownFiles); + lblStatus.Text = $"{fileView.IterNChildren()} files ({knownFiles} already known)"; }); } @@ -443,128 +424,119 @@ public partial class dlgAdd : Dialog string color = known ? "green" : "red"; fileView.AppendValues(filename, hash, known, color, "black", isCrack); btnPack.Sensitive |= !known; - if(known) - knownFiles++; + if(known) knownFiles++; }); } - void AddOS(DBEntry os) + void AddOS(DbEntry os) { Application.Invoke(delegate { tabTabs.GetNthPage(1).Visible = true; - osView.AppendValues(os.developer, os.product, os.version, os.languages, os.architecture, os.machine, - os.format, os.description, os.oem, os.upgrade, os.update, os.source, - os.files, os.netinstall); + osView.AppendValues(os.Developer, os.Product, os.Version, os.Languages, os.Architecture, os.Machine, + os.Format, os.Description, os.Oem, os.Upgrade, os.Update, os.Source, os.Files, + os.Netinstall); }); } protected void OnBtnExitClicked(object sender, EventArgs e) { - if(btnClose.Sensitive) - btnClose.Click(); + if(btnClose.Sensitive) btnClose.Click(); btnDialog.Click(); } protected void OnBtnCloseClicked(object sender, EventArgs e) { - btnFolder.Visible = true; - btnArchive.Visible = true; - Context.path = ""; - Context.files = null; - Context.hashes = null; - btnStop.Visible = false; - btnPack.Visible = false; - btnClose.Visible = false; - btnRemoveFile.Visible = false; + btnFolder.Visible = true; + btnArchive.Visible = true; + Context.Path = ""; + Context.Files = null; + Context.Hashes = null; + btnStop.Visible = false; + btnPack.Visible = false; + btnClose.Visible = false; + btnRemoveFile.Visible = false; btnToggleCrack.Visible = false; - if(fileView != null) - fileView.Clear(); + fileView?.Clear(); if(osView != null) { tabTabs.GetNthPage(1).Visible = false; osView.Clear(); } - txtFormat.IsEditable = false; - txtMachine.IsEditable = false; - txtProduct.IsEditable = false; - txtVersion.IsEditable = false; - txtLanguages.IsEditable = false; - txtDeveloper.IsEditable = false; - txtDescription.IsEditable = false; - txtArchitecture.IsEditable = false; - chkOem.Sensitive = false; - chkFiles.Sensitive = false; - chkUpdate.Sensitive = false; - chkUpgrade.Sensitive = false; - chkNetinstall.Sensitive = false; - chkSource.Sensitive = false; - txtFormat.Text = ""; - txtMachine.Text = ""; - txtProduct.Text = ""; - txtVersion.Text = ""; - txtLanguages.Text = ""; - txtDeveloper.Text = ""; - txtDescription.Text = ""; - txtArchitecture.Text = ""; - chkOem.Active = false; - chkFiles.Active = false; - chkUpdate.Active = false; - chkUpgrade.Active = false; - chkNetinstall.Active = false; - chkSource.Active = false; - if(Context.tmpFolder != null) + txtFormat.IsEditable = false; + txtMachine.IsEditable = false; + txtProduct.IsEditable = false; + txtVersion.IsEditable = false; + txtLanguages.IsEditable = false; + txtDeveloper.IsEditable = false; + txtDescription.IsEditable = false; + txtArchitecture.IsEditable = false; + chkOem.Sensitive = false; + chkFiles.Sensitive = false; + chkUpdate.Sensitive = false; + chkUpgrade.Sensitive = false; + chkNetinstall.Sensitive = false; + chkSource.Sensitive = false; + txtFormat.Text = ""; + txtMachine.Text = ""; + txtProduct.Text = ""; + txtVersion.Text = ""; + txtLanguages.Text = ""; + txtDeveloper.Text = ""; + txtDescription.Text = ""; + txtArchitecture.Text = ""; + chkOem.Active = false; + chkFiles.Active = false; + chkUpdate.Active = false; + chkUpgrade.Active = false; + chkNetinstall.Active = false; + chkSource.Active = false; + + if(Context.TmpFolder != null) { - btnStop.Visible = false; + btnStop.Visible = false; prgProgress.Visible = true; - prgProgress.Text = "Removing temporary files"; - thdPulseProgress = new Thread(() => + prgProgress.Text = "Removing temporary files"; + thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - Workers.Failed += RemoveTempFilesFailed; + Workers.Failed += RemoveTempFilesFailed; Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); thdRemoveTemp.Start(); } btnMetadata.Visible = false; - Context.metadata = null; - lblStatus.Visible = false; + Context.Metadata = null; + lblStatus.Visible = false; } - public void UpdateProgress(string text, string inner, long current, long maximum) + void UpdateProgress(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgress.Text = text; - prgProgress.Text = inner; - if(maximum > 0) - prgProgress.Fraction = current / (double)maximum; - else - prgProgress.Pulse(); + lblProgress.Text = text; + prgProgress.Text = inner; + if(maximum > 0) prgProgress.Fraction = current / (double)maximum; + else prgProgress.Pulse(); }); } - public void UpdateProgress2(string text, string inner, long current, long maximum) + void UpdateProgress2(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgress2.Text = text; - prgProgress2.Text = inner; - if(maximum > 0) - prgProgress2.Fraction = current / (double)maximum; - else - prgProgress2.Pulse(); + lblProgress2.Text = text; + prgProgress2.Text = inner; + if(maximum > 0) prgProgress2.Fraction = current / (double)maximum; + else prgProgress2.Pulse(); }); } @@ -572,26 +544,26 @@ public partial class dlgAdd : Dialog { stopped = true; - Workers.AddFileForOS -= AddFile; - Workers.AddOS -= AddOS; - Workers.Failed -= AddFilesToDbFailed; - Workers.Failed -= ChkFilesFailed; - Workers.Failed -= ExtractArchiveFailed; - Workers.Failed -= FindFilesFailed; - Workers.Failed -= HashFilesFailed; - Workers.Failed -= OpenArchiveFailed; - Workers.Failed -= PackFilesFailed; - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= AddFilesToDbFinished; - Workers.Finished -= ChkFilesFinished; - Workers.Finished -= ExtractArchiveFinished; - Workers.Finished -= FindFilesFinished; - Workers.Finished -= HashFilesFinished; - Workers.Finished -= OpenArchiveFinished; - Workers.Finished -= RemoveTempFilesFinished; + Workers.AddFileForOS -= AddFile; + Workers.AddOS -= AddOS; + Workers.Failed -= AddFilesToDbFailed; + Workers.Failed -= ChkFilesFailed; + Workers.Failed -= ExtractArchiveFailed; + Workers.Failed -= FindFilesFailed; + Workers.Failed -= HashFilesFailed; + Workers.Failed -= OpenArchiveFailed; + Workers.Failed -= PackFilesFailed; + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Finished -= ChkFilesFinished; + Workers.Finished -= ExtractArchiveFinished; + Workers.Finished -= FindFilesFinished; + Workers.Finished -= HashFilesFinished; + Workers.Finished -= OpenArchiveFinished; + Workers.Finished -= RemoveTempFilesFinished; Workers.FinishedWithText -= PackFilesFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; if(thdPulseProgress != null) { @@ -635,79 +607,73 @@ public partial class dlgAdd : Dialog thdOpenArchive = null; } - if(Context.unarProcess != null) + if(Context.UnarProcess != null) { - Context.unarProcess.Kill(); - Context.unarProcess = null; + Context.UnarProcess.Kill(); + Context.UnarProcess = null; } - if(Context.tmpFolder != null) + if(Context.TmpFolder != null) { - btnStop.Visible = false; + btnStop.Visible = false; prgProgress.Text = "Removing temporary files"; thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - Workers.Failed += RemoveTempFilesFailed; + Workers.Failed += RemoveTempFilesFailed; Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); thdRemoveTemp.Start(); } - else - RestoreUI(); + else RestoreUi(); } - public void RestoreUI() + void RestoreUi() { - lblProgress.Visible = false; - prgProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - Workers.Failed -= FindFilesFailed; - Workers.Failed -= HashFilesFailed; - Workers.Failed -= ChkFilesFailed; - Workers.Failed -= OpenArchiveFailed; - Workers.Failed -= AddFilesToDbFailed; - Workers.Failed -= PackFilesFailed; - Workers.Failed -= ExtractArchiveFailed; - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= FindFilesFinished; - Workers.Finished -= HashFilesFinished; - Workers.Finished -= ChkFilesFinished; - Workers.Finished -= OpenArchiveFinished; - Workers.Finished -= AddFilesToDbFinished; - Workers.Finished -= ExtractArchiveFinished; - Workers.Finished -= RemoveTempFilesFinished; + lblProgress.Visible = false; + prgProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + Workers.Failed -= FindFilesFailed; + Workers.Failed -= HashFilesFailed; + Workers.Failed -= ChkFilesFailed; + Workers.Failed -= OpenArchiveFailed; + Workers.Failed -= AddFilesToDbFailed; + Workers.Failed -= PackFilesFailed; + Workers.Failed -= ExtractArchiveFailed; + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= FindFilesFinished; + Workers.Finished -= HashFilesFinished; + Workers.Finished -= ChkFilesFinished; + Workers.Finished -= OpenArchiveFinished; + Workers.Finished -= AddFilesToDbFinished; + Workers.Finished -= ExtractArchiveFinished; + Workers.Finished -= RemoveTempFilesFinished; Workers.FinishedWithText -= PackFilesFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; - btnStop.Visible = false; - if(fileView != null) - fileView.Clear(); - if(osView != null && tabTabs != null && tabTabs.GetNthPage(1) != null) - { - tabTabs.GetNthPage(1).Visible = false; - osView.Clear(); - } + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; + btnStop.Visible = false; + fileView?.Clear(); + if(osView == null || tabTabs?.GetNthPage(1) == null) return; + + tabTabs.GetNthPage(1).Visible = false; + osView.Clear(); } - public void RemoveTempFilesFailed(string text) + void RemoveTempFilesFailed(string text) { Application.Invoke(delegate { @@ -719,15 +685,16 @@ public partial class dlgAdd : Dialog thdPulseProgress.Abort(); thdPulseProgress = null; } - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= RemoveTempFilesFinished; - Context.path = null; - Context.tmpFolder = null; - RestoreUI(); + + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= RemoveTempFilesFinished; + Context.Path = null; + Context.TmpFolder = null; + RestoreUi(); }); } - public void RemoveTempFilesFinished() + void RemoveTempFilesFinished() { Application.Invoke(delegate { @@ -736,128 +703,125 @@ public partial class dlgAdd : Dialog thdPulseProgress.Abort(); thdPulseProgress = null; } - Workers.Failed -= RemoveTempFilesFailed; - Workers.Finished -= RemoveTempFilesFinished; - Context.path = null; - Context.tmpFolder = null; - RestoreUI(); + + Workers.Failed -= RemoveTempFilesFailed; + Workers.Finished -= RemoveTempFilesFinished; + Context.Path = null; + Context.TmpFolder = null; + RestoreUi(); }); } void AddToDatabase() { - btnRemoveFile.Sensitive = false; - btnToggleCrack.Sensitive = false; - btnPack.Sensitive = false; - btnClose.Sensitive = false; - prgProgress.Visible = true; - txtFormat.IsEditable = false; - txtMachine.IsEditable = false; - txtProduct.IsEditable = false; - txtVersion.IsEditable = false; - txtLanguages.IsEditable = false; - txtDeveloper.IsEditable = false; - txtDescription.IsEditable = false; + btnRemoveFile.Sensitive = false; + btnToggleCrack.Sensitive = false; + btnPack.Sensitive = false; + btnClose.Sensitive = false; + prgProgress.Visible = true; + txtFormat.IsEditable = false; + txtMachine.IsEditable = false; + txtProduct.IsEditable = false; + txtVersion.IsEditable = false; + txtLanguages.IsEditable = false; + txtDeveloper.IsEditable = false; + txtDescription.IsEditable = false; txtArchitecture.IsEditable = false; - chkOem.Sensitive = false; - chkFiles.Sensitive = false; - chkUpdate.Sensitive = false; - chkUpgrade.Sensitive = false; - chkNetinstall.Sensitive = false; - chkSource.Sensitive = false; + chkOem.Sensitive = false; + chkFiles.Sensitive = false; + chkUpdate.Sensitive = false; + chkUpgrade.Sensitive = false; + chkNetinstall.Sensitive = false; + chkSource.Sensitive = false; Workers.UpdateProgress += UpdateProgress; - Workers.Finished += AddFilesToDbFinished; - Workers.Failed += AddFilesToDbFailed; + Workers.Finished += AddFilesToDbFinished; + Workers.Failed += AddFilesToDbFailed; - Context.dbInfo.architecture = txtArchitecture.Text; - Context.dbInfo.description = txtDescription.Text; - Context.dbInfo.developer = txtDeveloper.Text; - Context.dbInfo.format = txtFormat.Text; - Context.dbInfo.languages = txtLanguages.Text; - Context.dbInfo.machine = txtMachine.Text; - Context.dbInfo.product = txtProduct.Text; - Context.dbInfo.version = txtVersion.Text; - Context.dbInfo.files = chkFiles.Active; - Context.dbInfo.netinstall = chkNetinstall.Active; - Context.dbInfo.oem = chkOem.Active; - Context.dbInfo.source = chkSource.Active; - Context.dbInfo.update = chkUpdate.Active; - Context.dbInfo.upgrade = chkUpgrade.Active; + Context.DbInfo.Architecture = txtArchitecture.Text; + Context.DbInfo.Description = txtDescription.Text; + Context.DbInfo.Developer = txtDeveloper.Text; + Context.DbInfo.Format = txtFormat.Text; + Context.DbInfo.Languages = txtLanguages.Text; + Context.DbInfo.Machine = txtMachine.Text; + Context.DbInfo.Product = txtProduct.Text; + Context.DbInfo.Version = txtVersion.Text; + Context.DbInfo.Files = chkFiles.Active; + Context.DbInfo.Netinstall = chkNetinstall.Active; + Context.DbInfo.Oem = chkOem.Active; + Context.DbInfo.Source = chkSource.Active; + Context.DbInfo.Update = chkUpdate.Active; + Context.DbInfo.Upgrade = chkUpgrade.Active; - if(Context.metadata != null) + if(Context.Metadata != null) { - MemoryStream ms = new MemoryStream(); + MemoryStream ms = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(CICMMetadataType)); - xs.Serialize(ms, Context.metadata); - Context.dbInfo.xml = ms.ToArray(); - JsonSerializer js = new JsonSerializer(); - ms = new MemoryStream(); - StreamWriter sw = new StreamWriter(ms); - js.Serialize(sw, Context.metadata, typeof(CICMMetadataType)); - Context.dbInfo.json = ms.ToArray(); + xs.Serialize(ms, Context.Metadata); + Context.DbInfo.Xml = ms.ToArray(); + JsonSerializer js = new JsonSerializer(); + ms = new MemoryStream(); + StreamWriter sw = new StreamWriter(ms); + js.Serialize(sw, Context.Metadata, typeof(CICMMetadataType)); + Context.DbInfo.Json = ms.ToArray(); } else { - Context.dbInfo.xml = null; - Context.dbInfo.json = null; + Context.DbInfo.Xml = null; + Context.DbInfo.Json = null; } thdAddFiles = new Thread(Workers.AddFilesToDb); thdAddFiles.Start(); } - public void AddFilesToDbFinished() + void AddFilesToDbFinished() { Application.Invoke(delegate { Workers.UpdateProgress -= UpdateProgress; - Workers.Finished -= AddFilesToDbFinished; - Workers.Failed -= AddFilesToDbFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Failed -= AddFilesToDbFailed; - if(thdAddFiles != null) - thdAddFiles.Abort(); - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdAddFiles?.Abort(); + thdPulseProgress?.Abort(); long counter = 0; fileView.Clear(); - foreach(KeyValuePair kvp in Context.hashes) + foreach(KeyValuePair kvp in Context.Hashes) { - UpdateProgress(null, "Updating table", counter, Context.hashes.Count); + UpdateProgress(null, "Updating table", counter, Context.Hashes.Count); fileView.AppendValues(kvp.Key, kvp.Value.Sha256, true, "green", "black"); counter++; } // TODO: Update OS table - if(OnAddedOS != null) - OnAddedOS(Context.dbInfo); + OnAddedOS?.Invoke(Context.DbInfo); prgProgress.Visible = false; - btnClose.Sensitive = true; + btnClose.Sensitive = true; }); } - public void AddFilesToDbFailed(string text) + void AddFilesToDbFailed(string text) { Application.Invoke(delegate { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } Workers.UpdateProgress -= UpdateProgress; - Workers.Finished -= AddFilesToDbFinished; - Workers.Failed -= AddFilesToDbFailed; + Workers.Finished -= AddFilesToDbFinished; + Workers.Failed -= AddFilesToDbFailed; - if(thdAddFiles != null) - thdAddFiles.Abort(); - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdAddFiles?.Abort(); + thdPulseProgress?.Abort(); ChkFilesFinished(); }); @@ -865,73 +829,74 @@ public partial class dlgAdd : Dialog protected void OnBtnPackClicked(object sender, EventArgs e) { - btnRemoveFile.Sensitive = false; - btnToggleCrack.Sensitive = false; - btnPack.Sensitive = false; - btnClose.Sensitive = false; - prgProgress.Visible = true; - prgProgress2.Visible = true; - lblProgress.Visible = true; - lblProgress2.Visible = true; - txtFormat.IsEditable = false; - txtMachine.IsEditable = false; - txtProduct.IsEditable = false; - txtVersion.IsEditable = false; - txtLanguages.IsEditable = false; - txtDeveloper.IsEditable = false; - txtDescription.IsEditable = false; + btnRemoveFile.Sensitive = false; + btnToggleCrack.Sensitive = false; + btnPack.Sensitive = false; + btnClose.Sensitive = false; + prgProgress.Visible = true; + prgProgress2.Visible = true; + lblProgress.Visible = true; + lblProgress2.Visible = true; + txtFormat.IsEditable = false; + txtMachine.IsEditable = false; + txtProduct.IsEditable = false; + txtVersion.IsEditable = false; + txtLanguages.IsEditable = false; + txtDeveloper.IsEditable = false; + txtDescription.IsEditable = false; txtArchitecture.IsEditable = false; - chkOem.Sensitive = false; - chkFiles.Sensitive = false; - chkUpdate.Sensitive = false; - chkUpgrade.Sensitive = false; - chkNetinstall.Sensitive = false; - chkSource.Sensitive = false; + chkOem.Sensitive = false; + chkFiles.Sensitive = false; + chkUpdate.Sensitive = false; + chkUpgrade.Sensitive = false; + chkNetinstall.Sensitive = false; + chkSource.Sensitive = false; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; Workers.FinishedWithText += PackFilesFinished; - Workers.Failed += PackFilesFailed; + Workers.Failed += PackFilesFailed; - Context.dbInfo = new DBEntry(); - Context.dbInfo.architecture = txtArchitecture.Text; - Context.dbInfo.description = txtDescription.Text; - Context.dbInfo.developer = txtDeveloper.Text; - Context.dbInfo.format = txtFormat.Text; - Context.dbInfo.languages = txtLanguages.Text; - Context.dbInfo.machine = txtMachine.Text; - Context.dbInfo.product = txtProduct.Text; - Context.dbInfo.version = txtVersion.Text; - Context.dbInfo.files = chkFiles.Active; - Context.dbInfo.netinstall = chkNetinstall.Active; - Context.dbInfo.oem = chkOem.Active; - Context.dbInfo.source = chkSource.Active; - Context.dbInfo.update = chkUpdate.Active; - Context.dbInfo.upgrade = chkUpgrade.Active; + Context.DbInfo = new DbEntry + { + Architecture = txtArchitecture.Text, + Description = txtDescription.Text, + Developer = txtDeveloper.Text, + Format = txtFormat.Text, + Languages = txtLanguages.Text, + Machine = txtMachine.Text, + Product = txtProduct.Text, + Version = txtVersion.Text, + Files = chkFiles.Active, + Netinstall = chkNetinstall.Active, + Oem = chkOem.Active, + Source = chkSource.Active, + Update = chkUpdate.Active, + Upgrade = chkUpgrade.Active + }; thdPackFiles = new Thread(Workers.CompressFiles); thdPackFiles.Start(); } - public void PackFilesFinished(string text) + void PackFilesFinished(string text) { Application.Invoke(delegate { - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; Workers.FinishedWithText -= PackFilesFinished; - Workers.Failed -= PackFilesFailed; - prgProgress2.Visible = false; - lblProgress2.Visible = false; + Workers.Failed -= PackFilesFailed; + prgProgress2.Visible = false; + lblProgress2.Visible = false; - if(thdPackFiles != null) - thdPackFiles.Abort(); - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdPackFiles?.Abort(); + thdPulseProgress?.Abort(); AddToDatabase(); - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, "Correctly packed to " + text); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, + "Correctly packed to " + text); dlgMsg.Run(); dlgMsg.Destroy(); }); @@ -943,87 +908,84 @@ public partial class dlgAdd : Dialog { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; Workers.FinishedWithText -= PackFilesFinished; - Workers.Failed -= PackFilesFailed; + Workers.Failed -= PackFilesFailed; - if(thdPackFiles != null) - thdPackFiles.Abort(); - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdPackFiles?.Abort(); + thdPulseProgress?.Abort(); - btnRemoveFile.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnPack.Sensitive = true; - btnClose.Sensitive = true; - prgProgress.Visible = false; - prgProgress2.Visible = false; - lblProgress.Visible = false; - lblProgress2.Visible = false; - txtFormat.IsEditable = true; - txtMachine.IsEditable = true; - txtProduct.IsEditable = true; - txtVersion.IsEditable = true; - txtLanguages.IsEditable = true; - txtDeveloper.IsEditable = true; - txtDescription.IsEditable = true; + btnRemoveFile.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnPack.Sensitive = true; + btnClose.Sensitive = true; + prgProgress.Visible = false; + prgProgress2.Visible = false; + lblProgress.Visible = false; + lblProgress2.Visible = false; + txtFormat.IsEditable = true; + txtMachine.IsEditable = true; + txtProduct.IsEditable = true; + txtVersion.IsEditable = true; + txtLanguages.IsEditable = true; + txtDeveloper.IsEditable = true; + txtDescription.IsEditable = true; txtArchitecture.IsEditable = true; - chkOem.Sensitive = true; - chkFiles.Sensitive = true; - chkUpdate.Sensitive = true; - chkUpgrade.Sensitive = true; - chkNetinstall.Sensitive = true; - chkSource.Sensitive = true; + chkOem.Sensitive = true; + chkFiles.Sensitive = true; + chkUpdate.Sensitive = true; + chkUpgrade.Sensitive = true; + chkNetinstall.Sensitive = true; + chkSource.Sensitive = true; }); } protected void OnBtnArchiveClicked(object sender, EventArgs e) { - if(!Context.unarUsable) + if(!Context.UnarUsable) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Cannot open archives without a working unar installation."); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Cannot open archives without a working unar installation."); dlgMsg.Run(); dlgMsg.Destroy(); return; } - FileChooserDialog dlgFolder = new FileChooserDialog("Open archive", this, FileChooserAction.Open, - "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + FileChooserDialog dlgFolder = + new FileChooserDialog("Open archive", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", + ResponseType.Accept) {SelectMultiple = false}; if(dlgFolder.Run() == (int)ResponseType.Accept) { - knownFiles = 0; - stopped = false; - prgProgress.Text = "Opening archive"; + knownFiles = 0; + stopped = false; + prgProgress.Text = "Opening archive"; lblProgress.Visible = false; prgProgress.Visible = true; - btnExit.Sensitive = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - thdPulseProgress = new Thread(() => + btnExit.Sensitive = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - thdOpenArchive = new Thread(Workers.OpenArchive); - Context.path = dlgFolder.Filename; - Workers.Failed += OpenArchiveFailed; + thdOpenArchive = new Thread(Workers.OpenArchive); + Context.Path = dlgFolder.Filename; + Workers.Failed += OpenArchiveFailed; Workers.Finished += OpenArchiveFinished; - btnStop.Visible = true; + btnStop.Visible = true; thdPulseProgress.Start(); thdOpenArchive.Start(); } @@ -1031,139 +993,131 @@ public partial class dlgAdd : Dialog dlgFolder.Destroy(); } - public void OpenArchiveFailed(string text) + void OpenArchiveFailed(string text) { Application.Invoke(delegate { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - lblProgress.Visible = false; - prgProgress.Visible = false; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - btnStop.Visible = false; - Workers.Failed -= OpenArchiveFailed; - Workers.Finished -= OpenArchiveFinished; - thdOpenArchive = null; + + thdPulseProgress?.Abort(); + lblProgress.Visible = false; + prgProgress.Visible = false; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + btnStop.Visible = false; + Workers.Failed -= OpenArchiveFailed; + Workers.Finished -= OpenArchiveFinished; + thdOpenArchive = null; }); } - public void OpenArchiveFinished() + void OpenArchiveFinished() { Application.Invoke(delegate { - stopped = false; - prgProgress.Text = "Extracting archive"; - prgProgress.Visible = true; + stopped = false; + prgProgress.Text = "Extracting archive"; + prgProgress.Visible = true; prgProgress2.Visible = true; - btnExit.Sensitive = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - Workers.UpdateProgress += UpdateProgress; - lblProgress.Visible = true; - lblProgress2.Visible = true; - Workers.Failed -= OpenArchiveFailed; - Workers.Finished -= OpenArchiveFinished; - thdOpenArchive = null; - Workers.Failed += ExtractArchiveFailed; - Workers.Finished += ExtractArchiveFinished; + btnExit.Sensitive = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + thdPulseProgress?.Abort(); + Workers.UpdateProgress += UpdateProgress; + lblProgress.Visible = true; + lblProgress2.Visible = true; + Workers.Failed -= OpenArchiveFailed; + Workers.Finished -= OpenArchiveFinished; + thdOpenArchive = null; + Workers.Failed += ExtractArchiveFailed; + Workers.Finished += ExtractArchiveFinished; Workers.UpdateProgress2 += UpdateProgress2; - thdExtractArchive = new Thread(Workers.ExtractArchive); + thdExtractArchive = new Thread(Workers.ExtractArchive); thdExtractArchive.Start(); }); } - public void ExtractArchiveFailed(string text) + void ExtractArchiveFailed(string text) { Application.Invoke(delegate { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - if(thdPulseProgress != null) - thdPulseProgress.Abort(); - lblProgress.Visible = false; - lblProgress2.Visible = false; - prgProgress2.Visible = false; - btnExit.Sensitive = true; - btnFolder.Visible = true; - btnArchive.Visible = true; - Workers.Failed -= ExtractArchiveFailed; - Workers.Finished -= ExtractArchiveFinished; - Workers.UpdateProgress -= UpdateProgress; - Workers.UpdateProgress2 -= UpdateProgress2; - thdExtractArchive = null; - if(Context.tmpFolder != null) - { - btnStop.Visible = false; - prgProgress.Text = "Removing temporary files"; - thdPulseProgress = new Thread(() => - { - while(true) - { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); - Thread.Sleep(66); - } - }); - Workers.Failed += RemoveTempFilesFailed; - Workers.Finished += RemoveTempFilesFinished; - thdRemoveTemp = new Thread(Workers.RemoveTempFolder); - thdRemoveTemp.Start(); - } - }); - } - public void ExtractArchiveFinished() - { - Application.Invoke(delegate - { - stopped = false; - lblProgress.Text = "Finding files"; - lblProgress.Visible = true; - lblProgress2.Visible = false; - prgProgress.Visible = true; - btnExit.Sensitive = false; - btnFolder.Visible = false; - btnArchive.Visible = false; - Workers.Failed -= ExtractArchiveFailed; - Workers.Finished -= ExtractArchiveFinished; - Workers.UpdateProgress -= UpdateProgress; + thdPulseProgress?.Abort(); + lblProgress.Visible = false; + lblProgress2.Visible = false; + prgProgress2.Visible = false; + btnExit.Sensitive = true; + btnFolder.Visible = true; + btnArchive.Visible = true; + Workers.Failed -= ExtractArchiveFailed; + Workers.Finished -= ExtractArchiveFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; - if(thdExtractArchive != null) - thdExtractArchive = null; - if(thdPulseProgress != null) - thdPulseProgress.Abort(); + thdExtractArchive = null; + if(Context.TmpFolder == null) return; + + btnStop.Visible = false; + prgProgress.Text = "Removing temporary files"; thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); + Thread.Sleep(66); + } + }); + Workers.Failed += RemoveTempFilesFailed; + Workers.Finished += RemoveTempFilesFinished; + thdRemoveTemp = new Thread(Workers.RemoveTempFolder); + thdRemoveTemp.Start(); + }); + } + + void ExtractArchiveFinished() + { + Application.Invoke(delegate + { + stopped = false; + lblProgress.Text = "Finding files"; + lblProgress.Visible = true; + lblProgress2.Visible = false; + prgProgress.Visible = true; + btnExit.Sensitive = false; + btnFolder.Visible = false; + btnArchive.Visible = false; + Workers.Failed -= ExtractArchiveFailed; + Workers.Finished -= ExtractArchiveFinished; + Workers.UpdateProgress -= UpdateProgress; + Workers.UpdateProgress2 -= UpdateProgress2; + if(thdExtractArchive != null) thdExtractArchive = null; + thdPulseProgress?.Abort(); + thdPulseProgress = new Thread(() => + { + while(true) + { + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - thdFindFiles = new Thread(Workers.FindFiles); - Workers.Failed += FindFilesFailed; + thdFindFiles = new Thread(Workers.FindFiles); + Workers.Failed += FindFilesFailed; Workers.Finished += FindFilesFinished; - btnStop.Visible = true; + btnStop.Visible = true; thdPulseProgress.Start(); thdFindFiles.Start(); }); @@ -1171,79 +1125,54 @@ public partial class dlgAdd : Dialog protected void OnBtnMetadataClicked(object sender, EventArgs e) { - dlgMetadata _dlgMetadata = new dlgMetadata(); - _dlgMetadata.Metadata = Context.metadata; + dlgMetadata _dlgMetadata = new dlgMetadata {Metadata = Context.Metadata}; _dlgMetadata.FillFields(); if(_dlgMetadata.Run() == (int)ResponseType.Ok) { - Context.metadata = _dlgMetadata.Metadata; + Context.Metadata = _dlgMetadata.Metadata; if(string.IsNullOrWhiteSpace(txtDeveloper.Text)) - { - if(Context.metadata.Developer != null) - { - foreach(string developer in Context.metadata.Developer) + if(Context.Metadata.Developer != null) + foreach(string developer in Context.Metadata.Developer) { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } - } if(string.IsNullOrWhiteSpace(txtProduct.Text)) - { - if(!string.IsNullOrWhiteSpace(Context.metadata.Name)) - txtProduct.Text = Context.metadata.Name; - } + if(!string.IsNullOrWhiteSpace(Context.Metadata.Name)) + txtProduct.Text = Context.Metadata.Name; if(string.IsNullOrWhiteSpace(txtVersion.Text)) - { - if(!string.IsNullOrWhiteSpace(Context.metadata.Version)) - txtVersion.Text = Context.metadata.Version; - } + if(!string.IsNullOrWhiteSpace(Context.Metadata.Version)) + txtVersion.Text = Context.Metadata.Version; if(string.IsNullOrWhiteSpace(txtLanguages.Text)) - { - if(Context.metadata.Languages != null) - { - foreach(LanguagesTypeLanguage language in Context.metadata.Languages) + if(Context.Metadata.Languages != null) + foreach(LanguagesTypeLanguage language in Context.Metadata.Languages) { - if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) - txtLanguages.Text += ","; - txtLanguages.Text += language; + if(!string.IsNullOrWhiteSpace(txtLanguages.Text)) txtLanguages.Text += ","; + txtLanguages.Text += language; } - } - } if(string.IsNullOrWhiteSpace(txtArchitecture.Text)) - { - if(Context.metadata.Architectures != null) - { - foreach(ArchitecturesTypeArchitecture architecture in Context.metadata.Architectures) + if(Context.Metadata.Architectures != null) + foreach(ArchitecturesTypeArchitecture architecture in Context.Metadata.Architectures) { - if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) - txtArchitecture.Text += ","; - txtArchitecture.Text += architecture; + if(!string.IsNullOrWhiteSpace(txtArchitecture.Text)) txtArchitecture.Text += ","; + txtArchitecture.Text += architecture; } - } - } if(string.IsNullOrWhiteSpace(txtMachine.Text)) - { - if(Context.metadata.Systems != null) - { - foreach(string machine in Context.metadata.Systems) + if(Context.Metadata.Systems != null) + foreach(string machine in Context.Metadata.Systems) { - if(!string.IsNullOrWhiteSpace(txtMachine.Text)) - txtMachine.Text += ","; - txtMachine.Text += machine; + if(!string.IsNullOrWhiteSpace(txtMachine.Text)) txtMachine.Text += ","; + txtMachine.Text += machine; } - } - } - btnMetadata.ModifyBg(StateType.Normal, new Gdk.Color(0, 127, 0)); + btnMetadata.ModifyBg(StateType.Normal, new Color(0, 127, 0)); } _dlgMetadata.Destroy(); @@ -1251,54 +1180,42 @@ public partial class dlgAdd : Dialog protected void OnBtnRemoveFileClicked(object sender, EventArgs e) { - TreeIter fileIter; - if(treeFiles.Selection.GetSelected(out fileIter)) - { - string name = (string)fileView.GetValue(fileIter, 0); - string filesPath; + if(!treeFiles.Selection.GetSelected(out TreeIter fileIter)) return; - if(!string.IsNullOrEmpty(Context.tmpFolder) && Directory.Exists(Context.tmpFolder)) - filesPath = Context.tmpFolder; - else - filesPath = Context.path; + string name = (string)fileView.GetValue(fileIter, 0); + string filesPath; - Context.hashes.Remove(name); - Context.files.Remove(System.IO.Path.Combine(filesPath, name)); - fileView.Remove(ref fileIter); - } + if(!string.IsNullOrEmpty(Context.TmpFolder) && Directory.Exists(Context.TmpFolder)) + filesPath = Context.TmpFolder; + else filesPath = Context.Path; + + Context.Hashes.Remove(name); + Context.Files.Remove(System.IO.Path.Combine(filesPath, name)); + fileView.Remove(ref fileIter); } protected void OnBtnToggleCrackClicked(object sender, EventArgs e) { - TreeIter fileIter; - if(treeFiles.Selection.GetSelected(out fileIter)) - { - string name = (string)fileView.GetValue(fileIter, 0); - bool known = (bool)fileView.GetValue(fileIter, 2); - string color = (string)fileView.GetValue(fileIter, 3); + if(!treeFiles.Selection.GetSelected(out TreeIter fileIter)) return; - DBOSFile osfile; + string name = (string)fileView.GetValue(fileIter, 0); + bool known = (bool)fileView.GetValue(fileIter, 2); + string color = (string)fileView.GetValue(fileIter, 3); - if(Context.hashes.TryGetValue(name, out osfile)) - { - osfile.Crack = !osfile.Crack; - Context.hashes.Remove(name); - Context.hashes.Add(name, osfile); - fileView.Remove(ref fileIter); - fileView.AppendValues(name, osfile.Sha256, known, color, "black", osfile.Crack); - } - } + if(!Context.Hashes.TryGetValue(name, out DbOsFile osfile)) return; + + osfile.Crack = !osfile.Crack; + Context.Hashes.Remove(name); + Context.Hashes.Add(name, osfile); + fileView.Remove(ref fileIter); + fileView.AppendValues(name, osfile.Sha256, known, color, "black", osfile.Crack); } void treeFilesSelectionChanged(object sender, EventArgs e) { - TreeIter fileIter; - if(treeFiles.Selection.GetSelected(out fileIter)) - { - if((bool)fileView.GetValue(fileIter, 5)) - btnToggleCrack.Label = "Mark as not crack"; - else - btnToggleCrack.Label = "Mark as crack"; - } + if(!treeFiles.Selection.GetSelected(out TreeIter fileIter)) return; + + if((bool)fileView.GetValue(fileIter, 5)) btnToggleCrack.Label = "Mark as not crack"; + else btnToggleCrack.Label = "Mark as crack"; } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgBlockMedia.cs b/osrepodbmgr/dlgBlockMedia.cs index ff52eaf..2a7494a 100644 --- a/osrepodbmgr/dlgBlockMedia.cs +++ b/osrepodbmgr/dlgBlockMedia.cs @@ -25,69 +25,71 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using Gtk; using Schemas; +using ImageType = Schemas.ImageType; namespace osrepodbmgr { public partial class dlgBlockMedia : Dialog { - public BlockMediaType Metadata; - - TreeIter partitionIter; - TreeIter filesystemIter; - TreeIter dumpHwIter; - - ListStore lstAta; - ListStore lstPCIConfiguration; - ListStore lstPCIOptionROM; - ListStore lstPCMCIACIS; - ListStore lstCID; - ListStore lstCSD; - ListStore lstECSD; - ListStore lstInquiry; - ListStore lstModeSense; - ListStore lstModeSense10; - ListStore lstLogSense; - ListStore lstEVPDs; - ListStore lstUSBDescriptors; - ListStore lstMAM; - ListStore lstTracks; - ListStore lstPartitions; - ListStore lstDumpHw; - ListStore lstAdditionalInformation; - - bool editingPartition; - bool editingDumpHw; - // Non-editable fields ChecksumType[] checksums; - BlockSizeType[] variableBlockSize; - TapePartitionType[] tapeInformation; - ScansType scans; ChecksumType[] contentChks; + TreeIter dumpHwIter; + bool editingDumpHw; + + bool editingPartition; + TreeIter filesystemIter; + ListStore lstAdditionalInformation; + + ListStore lstAta; + ListStore lstCID; + ListStore lstCSD; + ListStore lstDumpHw; + ListStore lstECSD; + ListStore lstEVPDs; + ListStore lstInquiry; + ListStore lstLogSense; + ListStore lstMAM; + ListStore lstModeSense; + ListStore lstModeSense10; + ListStore lstPartitions; + ListStore lstPCIConfiguration; + ListStore lstPCIOptionROM; + ListStore lstPCMCIACIS; + ListStore lstTracks; + ListStore lstUSBDescriptors; + public BlockMediaType Metadata; + + TreeIter partitionIter; + ScansType scans; + TapePartitionType[] tapeInformation; + BlockSizeType[] variableBlockSize; public dlgBlockMedia() { Build(); #region Set partitions table - lstPartitions = new ListStore(typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), typeof(string), typeof(ListStore)); + lstPartitions = new ListStore(typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), + typeof(string), typeof(ListStore)); - CellRendererText partSequenceCell = new CellRendererText(); - CellRendererText partStartCell = new CellRendererText(); - CellRendererText partEndCell = new CellRendererText(); - CellRendererText partTypeCell = new CellRendererText(); - CellRendererText partNameCell = new CellRendererText(); + CellRendererText partSequenceCell = new CellRendererText(); + CellRendererText partStartCell = new CellRendererText(); + CellRendererText partEndCell = new CellRendererText(); + CellRendererText partTypeCell = new CellRendererText(); + CellRendererText partNameCell = new CellRendererText(); CellRendererText partDescriptionCell = new CellRendererText(); - TreeViewColumn partSequenceColumn = new TreeViewColumn("Sequence", partSequenceCell, "text", 0); - TreeViewColumn partStartColumn = new TreeViewColumn("Start", partStartCell, "text", 1); - TreeViewColumn partEndColumn = new TreeViewColumn("End", partEndCell, "text", 2); - TreeViewColumn partTypeColumn = new TreeViewColumn("Type", partTypeCell, "text", 3); - TreeViewColumn partNameColumn = new TreeViewColumn("Name", partNameCell, "text", 4); + TreeViewColumn partSequenceColumn = new TreeViewColumn("Sequence", partSequenceCell, "text", 0); + TreeViewColumn partStartColumn = new TreeViewColumn("Start", partStartCell, "text", 1); + TreeViewColumn partEndColumn = new TreeViewColumn("End", partEndCell, "text", 2); + TreeViewColumn partTypeColumn = new TreeViewColumn("Type", partTypeCell, "text", 3); + TreeViewColumn partNameColumn = new TreeViewColumn("Name", partNameCell, "text", 4); TreeViewColumn partDescriptionColumn = new TreeViewColumn("Description", partDescriptionCell, "text", 5); treePartitions.Model = lstPartitions; @@ -103,35 +105,36 @@ namespace osrepodbmgr #endregion Set partitions table #region Set filesystems table - CellRendererText fsTypeCell = new CellRendererText(); - CellRendererText fsNameCell = new CellRendererText(); - TreeViewColumn fsTypeColumn = new TreeViewColumn("Type", fsTypeCell, "text", 0); - TreeViewColumn fsNameColumn = new TreeViewColumn("Name", fsNameCell, "text", 1); + CellRendererText fsTypeCell = new CellRendererText(); + CellRendererText fsNameCell = new CellRendererText(); + TreeViewColumn fsTypeColumn = new TreeViewColumn("Type", fsTypeCell, "text", 0); + TreeViewColumn fsNameColumn = new TreeViewColumn("Name", fsNameCell, "text", 1); treeFilesystems.AppendColumn(fsTypeColumn); treeFilesystems.AppendColumn(fsNameColumn); treeFilesystems.Selection.Mode = SelectionMode.Single; #endregion Set filesystems table #region Set dump hardware table - lstDumpHw = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(ListStore)); + lstDumpHw = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(ListStore)); CellRendererText hwManufacturerCell = new CellRendererText(); - CellRendererText hwModelCell = new CellRendererText(); - CellRendererText hwRevisionCell = new CellRendererText(); - CellRendererText hwFirmwareCell = new CellRendererText(); - CellRendererText hwSerialCell = new CellRendererText(); - CellRendererText swNameCell = new CellRendererText(); - CellRendererText swVersionCell = new CellRendererText(); - CellRendererText swOSCell = new CellRendererText(); + CellRendererText hwModelCell = new CellRendererText(); + CellRendererText hwRevisionCell = new CellRendererText(); + CellRendererText hwFirmwareCell = new CellRendererText(); + CellRendererText hwSerialCell = new CellRendererText(); + CellRendererText swNameCell = new CellRendererText(); + CellRendererText swVersionCell = new CellRendererText(); + CellRendererText swOSCell = new CellRendererText(); - TreeViewColumn hwManufacturerColumn = new TreeViewColumn("Manufacturer", hwManufacturerCell, "text", 0); - TreeViewColumn hwModelColumn = new TreeViewColumn("Model", hwModelCell, "text", 1); - TreeViewColumn hwRevisionColumn = new TreeViewColumn("Revision", hwRevisionCell, "text", 2); - TreeViewColumn hwFirmwareColumn = new TreeViewColumn("Firmware", hwFirmwareCell, "text", 3); - TreeViewColumn hwSerialColumn = new TreeViewColumn("Serial", hwSerialCell, "text", 4); - TreeViewColumn swNameColumn = new TreeViewColumn("Software", swNameCell, "text", 5); - TreeViewColumn swVersionColumn = new TreeViewColumn("Version", swVersionCell, "text", 6); - TreeViewColumn swOSColumn = new TreeViewColumn("Operating system", swOSCell, "text", 7); + TreeViewColumn hwManufacturerColumn = new TreeViewColumn("Manufacturer", hwManufacturerCell, "text", 0); + TreeViewColumn hwModelColumn = new TreeViewColumn("Model", hwModelCell, "text", 1); + TreeViewColumn hwRevisionColumn = new TreeViewColumn("Revision", hwRevisionCell, "text", 2); + TreeViewColumn hwFirmwareColumn = new TreeViewColumn("Firmware", hwFirmwareCell, "text", 3); + TreeViewColumn hwSerialColumn = new TreeViewColumn("Serial", hwSerialCell, "text", 4); + TreeViewColumn swNameColumn = new TreeViewColumn("Software", swNameCell, "text", 5); + TreeViewColumn swVersionColumn = new TreeViewColumn("Version", swVersionCell, "text", 6); + TreeViewColumn swOSColumn = new TreeViewColumn("Operating system", swOSCell, "text", 7); treeDumpHardware.Model = lstDumpHw; @@ -146,22 +149,22 @@ namespace osrepodbmgr treeDumpHardware.Selection.Mode = SelectionMode.Single; - CellRendererText extentStartCell = new CellRendererText(); - CellRendererText extentEndCell = new CellRendererText(); - TreeViewColumn extentStartColumn = new TreeViewColumn("Start", extentStartCell, "text", 0); - TreeViewColumn extentEndColumn = new TreeViewColumn("End", extentEndCell, "text", 1); + CellRendererText extentStartCell = new CellRendererText(); + CellRendererText extentEndCell = new CellRendererText(); + TreeViewColumn extentStartColumn = new TreeViewColumn("Start", extentStartCell, "text", 0); + TreeViewColumn extentEndColumn = new TreeViewColumn("End", extentEndCell, "text", 1); treeExtents.AppendColumn(extentStartColumn); treeExtents.AppendColumn(extentEndColumn); treeExtents.Selection.Mode = SelectionMode.Single; #endregion Set dump hardware table - CellRendererText fileCell = new CellRendererText(); - CellRendererText sizeCell = new CellRendererText(); - TreeViewColumn fileColumn = new TreeViewColumn("File", fileCell, "text", 0); - TreeViewColumn sizeColumn = new TreeViewColumn("Size", sizeCell, "text", 1); + CellRendererText fileCell = new CellRendererText(); + CellRendererText sizeCell = new CellRendererText(); + TreeViewColumn fileColumn = new TreeViewColumn("File", fileCell, "text", 0); + TreeViewColumn sizeColumn = new TreeViewColumn("Size", sizeCell, "text", 1); #region Set ATA IDENTIFY table - lstAta = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstAta = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeATA.Model = lstAta; treeATA.AppendColumn(fileColumn); treeATA.AppendColumn(sizeColumn); @@ -169,62 +172,62 @@ namespace osrepodbmgr #region Set PCI configuration table lstPCIConfiguration = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); - treeATA.Model = lstPCIConfiguration; + treeATA.Model = lstPCIConfiguration; treeATA.AppendColumn(fileColumn); treeATA.AppendColumn(sizeColumn); #endregion Set PCI configuration table #region Set PCMCIA CIS table - lstPCMCIACIS = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPCMCIACIS = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeCIS.Model = lstPCMCIACIS; treeCIS.AppendColumn(fileColumn); treeCIS.AppendColumn(sizeColumn); #endregion Set PCI option ROM table #region Set CID table - lstCID = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstCID = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeCID.Model = lstCID; treeCID.AppendColumn(fileColumn); treeCID.AppendColumn(sizeColumn); #endregion Set CID table #region Set CSD table - lstCSD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstCSD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeCSD.Model = lstCSD; treeCSD.AppendColumn(fileColumn); treeCSD.AppendColumn(sizeColumn); #endregion Set CSD table #region Set Extended CSD table - lstECSD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstECSD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeECSD.Model = lstECSD; treeECSD.AppendColumn(fileColumn); treeECSD.AppendColumn(sizeColumn); #endregion Set Extended CSD table #region Set SCSI INQUIRY table - lstInquiry = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstInquiry = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeInquiry.Model = lstInquiry; treeInquiry.AppendColumn(fileColumn); treeInquiry.AppendColumn(sizeColumn); #endregion Set SCSI INQUIRY table #region Set SCSI MODE SENSE table - lstModeSense = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstModeSense = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeModeSense.Model = lstModeSense; treeModeSense.AppendColumn(fileColumn); treeModeSense.AppendColumn(sizeColumn); #endregion Set SCSI MODE SENSE table #region Set SCSI MODE SENSE (10) table - lstModeSense10 = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstModeSense10 = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeModeSense10.Model = lstModeSense10; treeModeSense10.AppendColumn(fileColumn); treeModeSense10.AppendColumn(sizeColumn); #endregion Set SCSI MODE SENSE (10) table #region Set SCSI LOG SENSE table - lstLogSense = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstLogSense = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeLogSense.Model = lstLogSense; treeLogSense.AppendColumn(fileColumn); treeLogSense.AppendColumn(sizeColumn); @@ -251,14 +254,14 @@ namespace osrepodbmgr #endregion Set SCSI EVPDs table #region Set USB descriptors table - lstUSBDescriptors = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstUSBDescriptors = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeDescriptors.Model = lstUSBDescriptors; treeDescriptors.AppendColumn(fileColumn); treeDescriptors.AppendColumn(sizeColumn); #endregion Set USB descriptors table #region Set MAM table - lstMAM = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstMAM = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeMAM.Model = lstMAM; treeMAM.AppendColumn(fileColumn); treeMAM.AppendColumn(sizeColumn); @@ -267,13 +270,13 @@ namespace osrepodbmgr #region Set Option ROM table lstPCIOptionROM = new ListStore(typeof(string), typeof(int), typeof(int), typeof(LinearMediaType)); - CellRendererText romFileCell = new CellRendererText(); + CellRendererText romFileCell = new CellRendererText(); CellRendererText romOffsetCell = new CellRendererText(); - CellRendererText romSizeCell = new CellRendererText(); + CellRendererText romSizeCell = new CellRendererText(); - TreeViewColumn romFileColumn = new TreeViewColumn("File", romFileCell, "text", 0); + TreeViewColumn romFileColumn = new TreeViewColumn("File", romFileCell, "text", 0); TreeViewColumn romOffsetColumn = new TreeViewColumn("Offset", romOffsetCell, "text", 1); - TreeViewColumn romSizeColumn = new TreeViewColumn("Size", romSizeCell, "text", 2); + TreeViewColumn romSizeColumn = new TreeViewColumn("Size", romSizeCell, "text", 2); treeOptionROM.Model = lstPCIOptionROM; @@ -285,32 +288,33 @@ namespace osrepodbmgr #endregion Set Option ROM table #region Set tracks table - lstTracks = new ListStore(typeof(string), typeof(int), typeof(int), typeof(string), typeof(int), typeof(int), typeof(int), typeof(int), - typeof(int), typeof(int), typeof(string), typeof(ChecksumType[])); + lstTracks = new ListStore(typeof(string), typeof(int), typeof(int), typeof(string), typeof(int), + typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(string), + typeof(ChecksumType[])); - CellRendererText trkFileCell = new CellRendererText(); - CellRendererText trkOffsetCell = new CellRendererText(); - CellRendererText trkSizeCell = new CellRendererText(); + CellRendererText trkFileCell = new CellRendererText(); + CellRendererText trkOffsetCell = new CellRendererText(); + CellRendererText trkSizeCell = new CellRendererText(); CellRendererText trkImgFormatCell = new CellRendererText(); - CellRendererText trkHeadCell = new CellRendererText(); - CellRendererText trkCylCell = new CellRendererText(); - CellRendererText trkStartCell = new CellRendererText(); - CellRendererText trkEndCell = new CellRendererText(); - CellRendererText trkSectorsCell = new CellRendererText(); - CellRendererText trkBpsCell = new CellRendererText(); - CellRendererText trkFormatCell = new CellRendererText(); + CellRendererText trkHeadCell = new CellRendererText(); + CellRendererText trkCylCell = new CellRendererText(); + CellRendererText trkStartCell = new CellRendererText(); + CellRendererText trkEndCell = new CellRendererText(); + CellRendererText trkSectorsCell = new CellRendererText(); + CellRendererText trkBpsCell = new CellRendererText(); + CellRendererText trkFormatCell = new CellRendererText(); - TreeViewColumn trkFileColumn = new TreeViewColumn("File", trkFileCell, "text", 0); - TreeViewColumn trkOffsetColumn = new TreeViewColumn("Offset", trkOffsetCell, "text", 1); - TreeViewColumn trkSizeColumn = new TreeViewColumn("Size", trkSizeCell, "text", 2); - TreeViewColumn trkImgFormatColumn = new TreeViewColumn("Image format", trkImgFormatCell, "text", 3); - TreeViewColumn trkHeadColumn = new TreeViewColumn("Head", trkHeadCell, "text", 4); - TreeViewColumn trkCylColumn = new TreeViewColumn("Cylinder", trkCylCell, "text", 5); - TreeViewColumn trkStartColumn = new TreeViewColumn("Start", trkStartCell, "text", 6); - TreeViewColumn trkEndColumn = new TreeViewColumn("End", trkEndCell, "text", 7); - TreeViewColumn trkSectorsColumn = new TreeViewColumn("Sectors", trkSectorsCell, "text", 8); - TreeViewColumn trkBpsColumn = new TreeViewColumn("Bytes per sector", trkBpsCell, "text", 9); - TreeViewColumn trkFormatColumn = new TreeViewColumn("Track format", trkFormatCell, "text", 10); + TreeViewColumn trkFileColumn = new TreeViewColumn("File", trkFileCell, "text", 0); + TreeViewColumn trkOffsetColumn = new TreeViewColumn("Offset", trkOffsetCell, "text", 1); + TreeViewColumn trkSizeColumn = new TreeViewColumn("Size", trkSizeCell, "text", 2); + TreeViewColumn trkImgFormatColumn = new TreeViewColumn("Image format", trkImgFormatCell, "text", 3); + TreeViewColumn trkHeadColumn = new TreeViewColumn("Head", trkHeadCell, "text", 4); + TreeViewColumn trkCylColumn = new TreeViewColumn("Cylinder", trkCylCell, "text", 5); + TreeViewColumn trkStartColumn = new TreeViewColumn("Start", trkStartCell, "text", 6); + TreeViewColumn trkEndColumn = new TreeViewColumn("End", trkEndCell, "text", 7); + TreeViewColumn trkSectorsColumn = new TreeViewColumn("Sectors", trkSectorsCell, "text", 8); + TreeViewColumn trkBpsColumn = new TreeViewColumn("Bytes per sector", trkBpsCell, "text", 9); + TreeViewColumn trkFormatColumn = new TreeViewColumn("Track format", trkFormatCell, "text", 10); treeTracks.Model = lstTracks; @@ -329,9 +333,9 @@ namespace osrepodbmgr treeTracks.Selection.Mode = SelectionMode.Single; #endregion Set tracks table - lstAdditionalInformation = new ListStore(typeof(string)); - CellRendererText addInfoCell = new CellRendererText(); - TreeViewColumn addInfoColumn = new TreeViewColumn("Information", addInfoCell, "text", 0); + lstAdditionalInformation = new ListStore(typeof(string)); + CellRendererText addInfoCell = new CellRendererText(); + TreeViewColumn addInfoColumn = new TreeViewColumn("Information", addInfoCell, "text", 0); treeAdditionalInformation.Model = lstAdditionalInformation; treeAdditionalInformation.AppendColumn(addInfoColumn); treeAdditionalInformation.Selection.Mode = SelectionMode.Single; @@ -339,163 +343,176 @@ namespace osrepodbmgr public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; - if(Metadata.Image.offsetSpecified) - txtOffset.Text = Metadata.Image.offset.ToString(); - txtSize.Text = Metadata.Size.ToString(); - checksums = Metadata.Checksums; - contentChks = Metadata.ContentChecksums; + txtImage.Text = Metadata.Image.Value; + txtFormat.Text = Metadata.Image.format; + if(Metadata.Image.offsetSpecified) txtOffset.Text = Metadata.Image.offset.ToString(); + txtSize.Text = Metadata.Size.ToString(); + checksums = Metadata.Checksums; + contentChks = Metadata.ContentChecksums; if(Metadata.Sequence != null) { - lblMediaTitle.Visible = true; - txtMediaTitle.Visible = true; - lblSequence.Visible = true; - spSequence.Visible = true; - lblTotalMedia.Visible = true; - spTotalMedia.Visible = true; - lblSide.Visible = true; - spSide.Visible = true; - lblLayer.Visible = true; - spLayer.Visible = true; - chkSequence.Active = true; - txtMediaTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; - if(Metadata.Sequence.SideSpecified) - spSide.Value = Metadata.Sequence.Side; - if(Metadata.Sequence.LayerSpecified) - spLayer.Value = Metadata.Sequence.Layer; + lblMediaTitle.Visible = true; + txtMediaTitle.Visible = true; + lblSequence.Visible = true; + spSequence.Visible = true; + lblTotalMedia.Visible = true; + spTotalMedia.Visible = true; + lblSide.Visible = true; + spSide.Visible = true; + lblLayer.Visible = true; + spLayer.Visible = true; + chkSequence.Active = true; + txtMediaTitle.Text = Metadata.Sequence.MediaTitle; + spSequence.Value = Metadata.Sequence.MediaSequence; + spTotalMedia.Value = Metadata.Sequence.TotalMedia; + if(Metadata.Sequence.SideSpecified) spSide.Value = Metadata.Sequence.Side; + if(Metadata.Sequence.LayerSpecified) spLayer.Value = Metadata.Sequence.Layer; } - if(Metadata.Manufacturer != null) - txtManufacturer.Text = Metadata.Manufacturer; - if(Metadata.Model != null) - txtModel.Text = Metadata.Model; - if(Metadata.Serial != null) - txtSerial.Text = Metadata.Serial; - if(Metadata.Firmware != null) - txtFirmware.Text = Metadata.Firmware; - if(Metadata.Interface != null) - txtInterface.Text = Metadata.Interface; - spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; - spLogicalBlockSize.Value = Metadata.LogicalBlockSize; - txtBlocks.Text = Metadata.LogicalBlocks.ToString(); - variableBlockSize = Metadata.VariableBlockSize; - tapeInformation = Metadata.TapeInformation; - scans = Metadata.Scans; - if(Metadata.ATA != null && Metadata.ATA.Identify != null) + + if(Metadata.Manufacturer != null) txtManufacturer.Text = Metadata.Manufacturer; + if(Metadata.Model != null) txtModel.Text = Metadata.Model; + if(Metadata.Serial != null) txtSerial.Text = Metadata.Serial; + if(Metadata.Firmware != null) txtFirmware.Text = Metadata.Firmware; + if(Metadata.Interface != null) txtInterface.Text = Metadata.Interface; + spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; + spLogicalBlockSize.Value = Metadata.LogicalBlockSize; + txtBlocks.Text = Metadata.LogicalBlocks.ToString(); + variableBlockSize = Metadata.VariableBlockSize; + tapeInformation = Metadata.TapeInformation; + scans = Metadata.Scans; + if(Metadata.ATA?.Identify != null) { - chkATA.Active = true; + chkATA.Active = true; treeATA.Visible = true; - lstAta.AppendValues(Metadata.ATA.Identify.Image, Metadata.ATA.Identify.Size, Metadata.ATA.Identify.Checksums); + lstAta.AppendValues(Metadata.ATA.Identify.Image, Metadata.ATA.Identify.Size, + Metadata.ATA.Identify.Checksums); } + if(Metadata.PCI != null) { - chkPCI.Active = true; - lblPCIVendor.Visible = true; - txtPCIVendor.Visible = true; + chkPCI.Active = true; + lblPCIVendor.Visible = true; + txtPCIVendor.Visible = true; lblPCIProduct.Visible = true; txtPCIProduct.Visible = true; - txtPCIVendor.Text = string.Format("0x{0:X4}", Metadata.PCI.VendorID); - txtPCIProduct.Text = string.Format("0x{0:X4}", Metadata.PCI.DeviceID); + txtPCIVendor.Text = $"0x{Metadata.PCI.VendorID:X4}"; + txtPCIProduct.Text = $"0x{Metadata.PCI.DeviceID:X4}"; if(Metadata.PCI.Configuration != null) { frmPCIConfiguration.Visible = true; - lstPCIConfiguration.AppendValues(Metadata.PCI.Configuration.Image, Metadata.PCI.Configuration.Size, Metadata.PCI.Configuration.Checksums); + lstPCIConfiguration.AppendValues(Metadata.PCI.Configuration.Image, Metadata.PCI.Configuration.Size, + Metadata.PCI.Configuration.Checksums); } + if(Metadata.PCI.ExpansionROM != null) { frmOptionROM.Visible = true; - lstPCIOptionROM.AppendValues(Metadata.PCI.ExpansionROM.Image.Value, Metadata.PCI.ExpansionROM.Image.offset, Metadata.PCI.ExpansionROM.Size, Metadata.PCI.ExpansionROM); + lstPCIOptionROM.AppendValues(Metadata.PCI.ExpansionROM.Image.Value, + Metadata.PCI.ExpansionROM.Image.offset, Metadata.PCI.ExpansionROM.Size, + Metadata.PCI.ExpansionROM); } } + if(Metadata.PCMCIA != null) { - chkPCMCIA.Active = true; - chkCIS.Visible = true; + chkPCMCIA.Active = true; + chkCIS.Visible = true; lblPCMCIAManufacturer.Visible = true; txtPCMCIAManufacturer.Visible = true; - lblManufacturerCode.Visible = true; - txtMfgCode.Visible = true; - lblProductName.Visible = true; - txtPCMCIAProductName.Visible = true; - lblCardCode.Visible = true; - txtCardCode.Visible = true; - lblCompliance.Visible = true; - txtCompliance.Visible = true; + lblManufacturerCode.Visible = true; + txtMfgCode.Visible = true; + lblProductName.Visible = true; + txtPCMCIAProductName.Visible = true; + lblCardCode.Visible = true; + txtCardCode.Visible = true; + lblCompliance.Visible = true; + txtCompliance.Visible = true; if(Metadata.PCMCIA.CIS != null) { treeCIS.Visible = true; - lstPCMCIACIS.AppendValues(Metadata.PCMCIA.CIS.Image, Metadata.PCMCIA.CIS.Size, Metadata.PCMCIA.CIS.Checksums); + lstPCMCIACIS.AppendValues(Metadata.PCMCIA.CIS.Image, Metadata.PCMCIA.CIS.Size, + Metadata.PCMCIA.CIS.Checksums); } - if(Metadata.PCMCIA.Compliance != null) - txtCompliance.Text = Metadata.PCMCIA.Compliance; + if(Metadata.PCMCIA.Compliance != null) txtCompliance.Text = Metadata.PCMCIA.Compliance; if(Metadata.PCMCIA.ManufacturerCodeSpecified) - txtMfgCode.Text = string.Format("0x{0:X4}", Metadata.PCMCIA.ManufacturerCode); + txtMfgCode.Text = + $"0x{Metadata.PCMCIA.ManufacturerCode:X4}"; if(Metadata.PCMCIA.CardCodeSpecified) - txtCardCode.Text = string.Format("0x{0:X4}", Metadata.PCMCIA.CardCode); + txtCardCode.Text = $"0x{Metadata.PCMCIA.CardCode:X4}"; if(Metadata.PCMCIA.Manufacturer != null) txtPCMCIAManufacturer.Text = Metadata.PCMCIA.Manufacturer; if(Metadata.PCMCIA.ProductName != null) txtPCMCIAProductName.Text = Metadata.PCMCIA.ProductName; if(Metadata.PCMCIA.AdditionalInformation != null) { - lblAdditionalInformation.Visible = true; + lblAdditionalInformation.Visible = true; treeAdditionalInformation.Visible = true; foreach(string addinfo in Metadata.PCMCIA.AdditionalInformation) lstAdditionalInformation.AppendValues(addinfo); } } - if(Metadata.SecureDigital != null && Metadata.SecureDigital.CID != null) + + if(Metadata.SecureDigital?.CID != null) { chkSecureDigital.Active = true; - chkCSD.Visible = true; - chkECSD.Visible = true; - lblCID.Visible = true; - treeCID.Visible = true; - lstCID.AppendValues(Metadata.SecureDigital.CID.Image, Metadata.SecureDigital.CID.Size, Metadata.SecureDigital.CID.Checksums); + chkCSD.Visible = true; + chkECSD.Visible = true; + lblCID.Visible = true; + treeCID.Visible = true; + lstCID.AppendValues(Metadata.SecureDigital.CID.Image, Metadata.SecureDigital.CID.Size, + Metadata.SecureDigital.CID.Checksums); if(Metadata.SecureDigital.CSD != null) { - chkCSD.Active = true; + chkCSD.Active = true; treeCSD.Visible = true; - lstCSD.AppendValues(Metadata.SecureDigital.CSD.Image, Metadata.SecureDigital.CSD.Size, Metadata.SecureDigital.CSD.Checksums); + lstCSD.AppendValues(Metadata.SecureDigital.CSD.Image, Metadata.SecureDigital.CSD.Size, + Metadata.SecureDigital.CSD.Checksums); } if(Metadata.MultiMediaCard.ExtendedCSD != null) { - chkECSD.Active = true; + chkECSD.Active = true; treeECSD.Visible = true; - lstECSD.AppendValues(Metadata.MultiMediaCard.ExtendedCSD.Image, Metadata.MultiMediaCard.ExtendedCSD.Size, Metadata.MultiMediaCard.ExtendedCSD.Checksums); + lstECSD.AppendValues(Metadata.MultiMediaCard.ExtendedCSD.Image, + Metadata.MultiMediaCard.ExtendedCSD.Size, + Metadata.MultiMediaCard.ExtendedCSD.Checksums); } } - if(Metadata.SCSI != null && Metadata.SCSI.Inquiry != null) + + if(Metadata.SCSI?.Inquiry != null) { - chkSCSI.Active = true; + chkSCSI.Active = true; frmInquiry.Visible = true; - lstInquiry.AppendValues(Metadata.SCSI.Inquiry.Image, Metadata.SCSI.Inquiry.Size, Metadata.SCSI.Inquiry.Checksums); + lstInquiry.AppendValues(Metadata.SCSI.Inquiry.Image, Metadata.SCSI.Inquiry.Size, + Metadata.SCSI.Inquiry.Checksums); if(Metadata.SCSI.ModeSense != null) { frmModeSense.Visible = true; - lstModeSense.AppendValues(Metadata.SCSI.ModeSense.Image, Metadata.SCSI.ModeSense.Size, Metadata.SCSI.ModeSense.Checksums); + lstModeSense.AppendValues(Metadata.SCSI.ModeSense.Image, Metadata.SCSI.ModeSense.Size, + Metadata.SCSI.ModeSense.Checksums); } + if(Metadata.SCSI.ModeSense10 != null) { frmModeSense10.Visible = true; - lstModeSense10.AppendValues(Metadata.SCSI.ModeSense10.Image, Metadata.SCSI.ModeSense10.Size, Metadata.SCSI.ModeSense10.Checksums); + lstModeSense10.AppendValues(Metadata.SCSI.ModeSense10.Image, Metadata.SCSI.ModeSense10.Size, + Metadata.SCSI.ModeSense10.Checksums); } + if(Metadata.SCSI.LogSense != null) { frmLogSense.Visible = true; - lstLogSense.AppendValues(Metadata.SCSI.LogSense.Image, Metadata.SCSI.LogSense.Size, Metadata.SCSI.LogSense.Checksums); + lstLogSense.AppendValues(Metadata.SCSI.LogSense.Image, Metadata.SCSI.LogSense.Size, + Metadata.SCSI.LogSense.Checksums); } + if(Metadata.SCSI.EVPD != null) { frmEVPDs.Visible = true; @@ -503,238 +520,236 @@ namespace osrepodbmgr lstEVPDs.AppendValues(evpd.page, evpd.Image, evpd.Size, evpd.Checksums); } } + if(Metadata.USB != null) { - chkUSB.Active = true; - lblUSBVendor.Visible = true; - txtUSBVendor.Visible = true; + chkUSB.Active = true; + lblUSBVendor.Visible = true; + txtUSBVendor.Visible = true; lblUSBProduct.Visible = true; txtUSBProduct.Visible = true; - txtUSBVendor.Text = string.Format("0x{0:X4}", Metadata.USB.VendorID); - txtUSBProduct.Text = string.Format("0x{0:X4}", Metadata.USB.ProductID); + txtUSBVendor.Text = $"0x{Metadata.USB.VendorID:X4}"; + txtUSBProduct.Text = $"0x{Metadata.USB.ProductID:X4}"; if(Metadata.USB.Descriptors != null) { frmDescriptors.Visible = true; - lstUSBDescriptors.AppendValues(Metadata.USB.Descriptors.Image, Metadata.USB.Descriptors.Size, Metadata.USB.Descriptors.Checksums); + lstUSBDescriptors.AppendValues(Metadata.USB.Descriptors.Image, Metadata.USB.Descriptors.Size, + Metadata.USB.Descriptors.Checksums); } } + if(Metadata.MAM != null) { - chkMAM.Active = true; + chkMAM.Active = true; treeMAM.Visible = true; lstMAM.AppendValues(Metadata.MAM.Image, Metadata.MAM.Size, Metadata.MAM.Checksums); } - if(Metadata.HeadsSpecified) - spHeads.Value = Metadata.Heads; - if(Metadata.CylindersSpecified) - spCylinders.Value = Metadata.Cylinders; - if(Metadata.SectorsPerTrackSpecified) - spSectors.Value = Metadata.SectorsPerTrack; + + if(Metadata.HeadsSpecified) spHeads.Value = Metadata.Heads; + if(Metadata.CylindersSpecified) spCylinders.Value = Metadata.Cylinders; + if(Metadata.SectorsPerTrackSpecified) spSectors.Value = Metadata.SectorsPerTrack; if(Metadata.Track != null) { - chkTracks.Active = true; + chkTracks.Active = true; treeTracks.Visible = true; foreach(BlockTrackType track in Metadata.Track) - lstTracks.AppendValues(track.Image.Value, track.Image.offset, track.Size, track.Image.format, track.Head, track.Cylinder, - track.StartSector, track.EndSector, track.Sectors, track.BytesPerSector, track.Format, track.Checksums); + lstTracks.AppendValues(track.Image.Value, track.Image.offset, track.Size, track.Image.format, + track.Head, track.Cylinder, track.StartSector, track.EndSector, + track.Sectors, track.BytesPerSector, track.Format, track.Checksums); } - if(Metadata.CopyProtection != null) - txtCopyProtection.Text = Metadata.CopyProtection; - if(Metadata.Dimensions != null) + + if(Metadata.CopyProtection != null) txtCopyProtection.Text = Metadata.CopyProtection; + if(Metadata.Dimensions != null) { chkDimensions.Active = true; if(Metadata.Dimensions.DiameterSpecified) { - chkRound.Active = true; - lblDiameter.Visible = true; - spDiameter.Visible = true; + chkRound.Active = true; + lblDiameter.Visible = true; + spDiameter.Visible = true; lblDiametersUnits.Visible = true; - spDiameter.Value = Metadata.Dimensions.Diameter; + spDiameter.Value = Metadata.Dimensions.Diameter; } else { - lblHeight.Visible = true; - spHeight.Visible = true; + lblHeight.Visible = true; + spHeight.Visible = true; lblHeightUnits.Visible = true; - spHeight.Value = Metadata.Dimensions.Height; - lblWidth.Visible = true; - spWidth.Visible = true; - lblWidthUnits.Visible = true; - spWidth.Value = Metadata.Dimensions.Width; + spHeight.Value = Metadata.Dimensions.Height; + lblWidth.Visible = true; + spWidth.Visible = true; + lblWidthUnits.Visible = true; + spWidth.Value = Metadata.Dimensions.Width; } - lblThickness.Visible = true; - spThickness.Visible = true; + + lblThickness.Visible = true; + spThickness.Visible = true; lblThicknessUnits.Visible = true; - spThickness.Value = Metadata.Dimensions.Thickness; + spThickness.Value = Metadata.Dimensions.Thickness; } + if(Metadata.FileSystemInformation != null) - { foreach(PartitionType partition in Metadata.FileSystemInformation) { ListStore lstFilesystems = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); if(partition.FileSystems != null) - { foreach(FileSystemType fs in partition.FileSystems) lstFilesystems.AppendValues(fs.Type, fs.VolumeName, fs); - } - lstPartitions.AppendValues(partition.Sequence, partition.StartSector, partition.EndSector, partition.Type, partition.Name, partition.Description, lstFilesystems); + lstPartitions.AppendValues(partition.Sequence, partition.StartSector, partition.EndSector, + partition.Type, partition.Name, partition.Description, lstFilesystems); } - } + if(Metadata.DumpHardwareArray != null) { - chkDumpHardware.Active = true; - treeDumpHardware.Visible = true; - btnAddHardware.Visible = true; + chkDumpHardware.Active = true; + treeDumpHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; - btnEditHardware.Visible = true; + btnEditHardware.Visible = true; foreach(DumpHardwareType hw in Metadata.DumpHardwareArray) { - if(hw.Extents != null) - { - ListStore lstExtents = new ListStore(typeof(ulong), typeof(ulong)); - foreach(ExtentType extent in hw.Extents) - lstExtents.AppendValues(extent.Start, extent.End); - if(hw.Software != null) - lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, hw.Software.Name, hw.Software.Version, hw.Software.OperatingSystem, lstExtents); - else - lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, null, null, null, lstExtents); - } + if(hw.Extents == null) continue; + + ListStore lstExtents = new ListStore(typeof(ulong), typeof(ulong)); + foreach(ExtentType extent in hw.Extents) lstExtents.AppendValues(extent.Start, extent.End); + if(hw.Software != null) + lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, + hw.Software.Name, hw.Software.Version, hw.Software.OperatingSystem, + lstExtents); + else + lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, null, + null, null, lstExtents); } } - if(Metadata.DiskType != null) - txtMediaType.Text = Metadata.DiskType; - if(Metadata.DiskSubType != null) - txtMediaSubtype.Text = Metadata.DiskSubType; + + if(Metadata.DiskType != null) txtMediaType.Text = Metadata.DiskType; + if(Metadata.DiskSubType != null) txtMediaSubtype.Text = Metadata.DiskSubType; } protected void OnChkSequenceToggled(object sender, EventArgs e) { lblMediaTitle.Visible = chkSequence.Active; txtMediaTitle.Visible = chkSequence.Active; - lblSequence.Visible = chkSequence.Active; - spSequence.Visible = chkSequence.Active; + lblSequence.Visible = chkSequence.Active; + spSequence.Visible = chkSequence.Active; lblTotalMedia.Visible = chkSequence.Active; - spTotalMedia.Visible = chkSequence.Active; - lblSide.Visible = chkSequence.Active; - spSide.Visible = chkSequence.Active; - lblLayer.Visible = chkSequence.Active; - spLayer.Visible = chkSequence.Active; + spTotalMedia.Visible = chkSequence.Active; + lblSide.Visible = chkSequence.Active; + spSide.Visible = chkSequence.Active; + lblLayer.Visible = chkSequence.Active; + spLayer.Visible = chkSequence.Active; } protected void OnChkDimensionsToggled(object sender, EventArgs e) { - chkRound.Visible = chkDimensions.Active; - lblThickness.Visible = chkDimensions.Active; - spThickness.Visible = chkDimensions.Active; + chkRound.Visible = chkDimensions.Active; + lblThickness.Visible = chkDimensions.Active; + spThickness.Visible = chkDimensions.Active; lblThicknessUnits.Visible = chkDimensions.Active; - if(chkDimensions.Active) - OnChkRoundToggled(sender, e); + if(chkDimensions.Active) OnChkRoundToggled(sender, e); else { - lblDiameter.Visible = false; - spDiameter.Visible = false; + lblDiameter.Visible = false; + spDiameter.Visible = false; lblDiametersUnits.Visible = false; - lblHeight.Visible = false; - spHeight.Visible = false; - lblHeightUnits.Visible = false; - lblWidth.Visible = false; - spWidth.Visible = false; - lblWidthUnits.Visible = false; + lblHeight.Visible = false; + spHeight.Visible = false; + lblHeightUnits.Visible = false; + lblWidth.Visible = false; + spWidth.Visible = false; + lblWidthUnits.Visible = false; } } protected void OnChkRoundToggled(object sender, EventArgs e) { - lblDiameter.Visible = chkRound.Active; - spDiameter.Visible = chkRound.Active; + lblDiameter.Visible = chkRound.Active; + spDiameter.Visible = chkRound.Active; lblDiametersUnits.Visible = chkRound.Active; - lblHeight.Visible = !chkRound.Active; - spHeight.Visible = !chkRound.Active; - lblHeightUnits.Visible = !chkRound.Active; - lblWidth.Visible = !chkRound.Active; - spWidth.Visible = !chkRound.Active; - lblWidthUnits.Visible = !chkRound.Active; + lblHeight.Visible = !chkRound.Active; + spHeight.Visible = !chkRound.Active; + lblHeightUnits.Visible = !chkRound.Active; + lblWidth.Visible = !chkRound.Active; + spWidth.Visible = !chkRound.Active; + lblWidthUnits.Visible = !chkRound.Active; } protected void OnChkPCMCIAToggled(object sender, EventArgs e) { - chkCIS.Visible = chkPCMCIA.Active; - treeCIS.Visible = chkPCMCIA.Active; - lblPCMCIAManufacturer.Visible = chkPCMCIA.Active; - txtPCMCIAManufacturer.Visible = chkPCMCIA.Active; - lblManufacturerCode.Visible = chkPCMCIA.Active; - txtMfgCode.Visible = chkPCMCIA.Active; - lblProductName.Visible = chkPCMCIA.Active; - txtPCMCIAProductName.Visible = chkPCMCIA.Active; - lblCardCode.Visible = chkPCMCIA.Active; - txtCardCode.Visible = chkPCMCIA.Active; - lblCompliance.Visible = chkPCMCIA.Active; - txtCompliance.Visible = chkPCMCIA.Active; - lblAdditionalInformation.Visible = false; + chkCIS.Visible = chkPCMCIA.Active; + treeCIS.Visible = chkPCMCIA.Active; + lblPCMCIAManufacturer.Visible = chkPCMCIA.Active; + txtPCMCIAManufacturer.Visible = chkPCMCIA.Active; + lblManufacturerCode.Visible = chkPCMCIA.Active; + txtMfgCode.Visible = chkPCMCIA.Active; + lblProductName.Visible = chkPCMCIA.Active; + txtPCMCIAProductName.Visible = chkPCMCIA.Active; + lblCardCode.Visible = chkPCMCIA.Active; + txtCardCode.Visible = chkPCMCIA.Active; + lblCompliance.Visible = chkPCMCIA.Active; + txtCompliance.Visible = chkPCMCIA.Active; + lblAdditionalInformation.Visible = false; treeAdditionalInformation.Visible = false; } protected void OnBtnCancelPartitionClicked(object sender, EventArgs e) { - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; - lblPartitionSequence.Visible = false; - spPartitionSequence.Visible = false; - lblPartitionStart.Visible = false; - txtPartitionStart.Visible = false; - lblPartitionEnd.Visible = false; - txtPartitionEnd.Visible = false; - lblPartitionType.Visible = false; - txtPartitionType.Visible = false; - lblPartitionName.Visible = false; - txtPartitionName.Visible = false; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; + lblPartitionSequence.Visible = false; + spPartitionSequence.Visible = false; + lblPartitionStart.Visible = false; + txtPartitionStart.Visible = false; + lblPartitionEnd.Visible = false; + txtPartitionEnd.Visible = false; + lblPartitionType.Visible = false; + txtPartitionType.Visible = false; + lblPartitionName.Visible = false; + txtPartitionName.Visible = false; lblPartitionDescription.Visible = false; txtPartitionDescription.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnRemovePartitionClicked(object sender, EventArgs e) { - if(treePartitions.Selection.GetSelected(out partitionIter)) - lstPartitions.Remove(ref partitionIter); + if(treePartitions.Selection.GetSelected(out partitionIter)) lstPartitions.Remove(ref partitionIter); } protected void OnBtnEditPartitionClicked(object sender, EventArgs e) { - if(!treePartitions.Selection.GetSelected(out partitionIter)) - return; + if(!treePartitions.Selection.GetSelected(out partitionIter)) return; - spPartitionSequence.Value = (int)lstPartitions.GetValue(partitionIter, 0); - txtPartitionStart.Text = ((int)lstPartitions.GetValue(partitionIter, 1)).ToString(); - txtPartitionEnd.Text = ((int)lstPartitions.GetValue(partitionIter, 2)).ToString(); - txtPartitionType.Text = (string)lstPartitions.GetValue(partitionIter, 3); - txtPartitionName.Text = (string)lstPartitions.GetValue(partitionIter, 4); - txtPartitionDescription.Text = (string)lstPartitions.GetValue(partitionIter, 5); - treeFilesystems.Model = (ListStore)lstPartitions.GetValue(partitionIter, 6); + spPartitionSequence.Value = (int)lstPartitions.GetValue(partitionIter, 0); + txtPartitionStart.Text = ((int)lstPartitions.GetValue(partitionIter, 1)).ToString(); + txtPartitionEnd.Text = ((int)lstPartitions.GetValue(partitionIter, 2)).ToString(); + txtPartitionType.Text = (string)lstPartitions.GetValue(partitionIter, 3); + txtPartitionName.Text = (string)lstPartitions.GetValue(partitionIter, 4); + txtPartitionDescription.Text = (string)lstPartitions.GetValue(partitionIter, 5); + treeFilesystems.Model = (ListStore)lstPartitions.GetValue(partitionIter, 6); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; - lblPartitionSequence.Visible = true; - spPartitionSequence.Visible = true; - lblPartitionStart.Visible = true; - txtPartitionStart.Visible = true; - lblPartitionEnd.Visible = true; - txtPartitionEnd.Visible = true; - lblPartitionType.Visible = true; - txtPartitionType.Visible = true; - lblPartitionName.Visible = true; - txtPartitionName.Visible = true; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; + lblPartitionSequence.Visible = true; + spPartitionSequence.Visible = true; + lblPartitionStart.Visible = true; + txtPartitionStart.Visible = true; + lblPartitionEnd.Visible = true; + txtPartitionEnd.Visible = true; + lblPartitionType.Visible = true; + txtPartitionType.Visible = true; + lblPartitionName.Visible = true; + txtPartitionName.Visible = true; lblPartitionDescription.Visible = true; txtPartitionDescription.Visible = true; - frmFilesystems.Visible = true; - + frmFilesystems.Visible = true; editingPartition = true; } @@ -742,27 +757,29 @@ namespace osrepodbmgr protected void OnBtnApplyPartitionClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - int temp, temp2; if(spPartitionSequence.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition sequence must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition sequence must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(!int.TryParse(txtPartitionStart.Text, out temp)) + if(!int.TryParse(txtPartitionStart.Text, out int temp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition start must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition start must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(!int.TryParse(txtPartitionEnd.Text, out temp2)) + if(!int.TryParse(txtPartitionEnd.Text, out int temp2)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition end must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition end must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -770,66 +787,67 @@ namespace osrepodbmgr if(temp2 <= temp) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition must end after start, and be bigger than 1 sector"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition must end after start, and be bigger than 1 sector"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(editingPartition) - lstPartitions.Remove(ref partitionIter); + if(editingPartition) lstPartitions.Remove(ref partitionIter); - lstPartitions.AppendValues(spPartitionSequence.ValueAsInt, int.Parse(txtPartitionStart.Text), int.Parse(txtPartitionEnd.Text), txtPartitionType.Text, - txtPartitionName.Text, txtPartitionDescription.Text, (ListStore)treeFilesystems.Model); + lstPartitions.AppendValues(spPartitionSequence.ValueAsInt, int.Parse(txtPartitionStart.Text), + int.Parse(txtPartitionEnd.Text), txtPartitionType.Text, txtPartitionName.Text, + txtPartitionDescription.Text, (ListStore)treeFilesystems.Model); - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; - lblPartitionSequence.Visible = false; - spPartitionSequence.Visible = false; - lblPartitionStart.Visible = false; - txtPartitionStart.Visible = false; - lblPartitionEnd.Visible = false; - txtPartitionEnd.Visible = false; - lblPartitionType.Visible = false; - txtPartitionType.Visible = false; - lblPartitionName.Visible = false; - txtPartitionName.Visible = false; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; + lblPartitionSequence.Visible = false; + spPartitionSequence.Visible = false; + lblPartitionStart.Visible = false; + txtPartitionStart.Visible = false; + lblPartitionEnd.Visible = false; + txtPartitionEnd.Visible = false; + lblPartitionType.Visible = false; + txtPartitionType.Visible = false; + lblPartitionName.Visible = false; + txtPartitionName.Visible = false; lblPartitionDescription.Visible = false; txtPartitionDescription.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnAddPartitionClicked(object sender, EventArgs e) { - spPartitionSequence.Value = 0; - txtPartitionStart.Text = ""; - txtPartitionEnd.Text = ""; - txtPartitionType.Text = ""; - txtPartitionName.Text = ""; + spPartitionSequence.Value = 0; + txtPartitionStart.Text = ""; + txtPartitionEnd.Text = ""; + txtPartitionType.Text = ""; + txtPartitionName.Text = ""; txtPartitionDescription.Text = ""; - treeFilesystems.Model = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); + treeFilesystems.Model = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; - lblPartitionSequence.Visible = true; - spPartitionSequence.Visible = true; - lblPartitionStart.Visible = true; - txtPartitionStart.Visible = true; - lblPartitionEnd.Visible = true; - txtPartitionEnd.Visible = true; - lblPartitionType.Visible = true; - txtPartitionType.Visible = true; - lblPartitionName.Visible = true; - txtPartitionName.Visible = true; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; + lblPartitionSequence.Visible = true; + spPartitionSequence.Visible = true; + lblPartitionStart.Visible = true; + txtPartitionStart.Visible = true; + lblPartitionEnd.Visible = true; + txtPartitionEnd.Visible = true; + lblPartitionType.Visible = true; + txtPartitionType.Visible = true; + lblPartitionName.Visible = true; + txtPartitionName.Visible = true; lblPartitionDescription.Visible = true; txtPartitionDescription.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = false; } @@ -842,17 +860,20 @@ namespace osrepodbmgr protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) { - if(!treeFilesystems.Selection.GetSelected(out filesystemIter)) - return; + if(!treeFilesystems.Selection.GetSelected(out filesystemIter)) return; - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.Metadata = (FileSystemType)((ListStore)treeFilesystems.Model).GetValue(filesystemIter, 2); + dlgFilesystem _dlgFilesystem = new dlgFilesystem + { + Metadata = (FileSystemType)((ListStore)treeFilesystems.Model).GetValue(filesystemIter, 2) + }; _dlgFilesystem.FillFields(); if(_dlgFilesystem.Run() == (int)ResponseType.Ok) { ((ListStore)treeFilesystems.Model).Remove(ref filesystemIter); - ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata); + ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, + _dlgFilesystem.Metadata.VolumeName, + _dlgFilesystem.Metadata); } _dlgFilesystem.Destroy(); @@ -863,162 +884,160 @@ namespace osrepodbmgr dlgFilesystem _dlgFilesystem = new dlgFilesystem(); if(_dlgFilesystem.Run() == (int)ResponseType.Ok) - ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata); + ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, + _dlgFilesystem.Metadata.VolumeName, + _dlgFilesystem.Metadata); _dlgFilesystem.Destroy(); } protected void OnChkDumpHardwareToggled(object sender, EventArgs e) { - treeDumpHardware.Visible = chkDumpHardware.Active; - btnAddHardware.Visible = chkDumpHardware.Active; + treeDumpHardware.Visible = chkDumpHardware.Active; + btnAddHardware.Visible = chkDumpHardware.Active; btnRemoveHardware.Visible = chkDumpHardware.Active; - btnEditHardware.Visible = chkDumpHardware.Active; + btnEditHardware.Visible = chkDumpHardware.Active; btnCancelHardware.Visible = false; - btnApplyHardware.Visible = false; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnCancelHardwareClicked(object sender, EventArgs e) { - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnRemoveHardwareClicked(object sender, EventArgs e) { - TreeIter dumphwIter; - if(treeDumpHardware.Selection.GetSelected(out dumphwIter)) - lstDumpHw.Remove(ref dumphwIter); + if(treeDumpHardware.Selection.GetSelected(out TreeIter dumphwIter)) lstDumpHw.Remove(ref dumphwIter); } protected void OnBtnEditHardwareClicked(object sender, EventArgs e) { - if(!treeDumpHardware.Selection.GetSelected(out dumpHwIter)) - return; + if(!treeDumpHardware.Selection.GetSelected(out dumpHwIter)) return; - txtHWManufacturer.Text = (string)lstDumpHw.GetValue(dumpHwIter, 0); - txtHWModel.Text = (string)lstDumpHw.GetValue(dumpHwIter, 1); - txtHWRevision.Text = (string)lstDumpHw.GetValue(dumpHwIter, 2); - txtHWFirmware.Text = (string)lstDumpHw.GetValue(dumpHwIter, 3); - txtHWSerial.Text = (string)lstDumpHw.GetValue(dumpHwIter, 4); - txtDumpName.Text = (string)lstDumpHw.GetValue(dumpHwIter, 5); - txtDumpVersion.Text = (string)lstDumpHw.GetValue(dumpHwIter, 6); - txtDumpOS.Text = (string)lstDumpHw.GetValue(dumpHwIter, 7); - treeExtents.Model = (ListStore)lstDumpHw.GetValue(dumpHwIter, 8); + txtHWManufacturer.Text = (string)lstDumpHw.GetValue(dumpHwIter, 0); + txtHWModel.Text = (string)lstDumpHw.GetValue(dumpHwIter, 1); + txtHWRevision.Text = (string)lstDumpHw.GetValue(dumpHwIter, 2); + txtHWFirmware.Text = (string)lstDumpHw.GetValue(dumpHwIter, 3); + txtHWSerial.Text = (string)lstDumpHw.GetValue(dumpHwIter, 4); + txtDumpName.Text = (string)lstDumpHw.GetValue(dumpHwIter, 5); + txtDumpVersion.Text = (string)lstDumpHw.GetValue(dumpHwIter, 6); + txtDumpOS.Text = (string)lstDumpHw.GetValue(dumpHwIter, 7); + treeExtents.Model = (ListStore)lstDumpHw.GetValue(dumpHwIter, 8); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; lblHWManufacturer.Visible = true; txtHWManufacturer.Visible = true; - lblHWModel.Visible = true; - txtHWModel.Visible = true; - lblHWRevision.Visible = true; - txtHWRevision.Visible = true; - lblHWFirmware.Visible = true; - txtHWFirmware.Visible = true; - lblHWSerial.Visible = true; - txtHWSerial.Visible = true; - frmExtents.Visible = true; - frmDumpSoftware.Visible = true; + lblHWModel.Visible = true; + txtHWModel.Visible = true; + lblHWRevision.Visible = true; + txtHWRevision.Visible = true; + lblHWFirmware.Visible = true; + txtHWFirmware.Visible = true; + lblHWSerial.Visible = true; + txtHWSerial.Visible = true; + frmExtents.Visible = true; + frmDumpSoftware.Visible = true; editingDumpHw = true; } protected void OnBtnApplyHardwareClicked(object sender, EventArgs e) { - if(editingDumpHw) - lstDumpHw.Remove(ref dumpHwIter); + if(editingDumpHw) lstDumpHw.Remove(ref dumpHwIter); - lstDumpHw.AppendValues(txtHWManufacturer.Text, txtHWModel.Text, txtHWRevision.Text, txtHWFirmware.Text, txtHWSerial.Text, txtDumpName.Text, - txtDumpVersion.Text, txtDumpOS.Text, (ListStore)treeExtents.Model); + lstDumpHw.AppendValues(txtHWManufacturer.Text, txtHWModel.Text, txtHWRevision.Text, txtHWFirmware.Text, + txtHWSerial.Text, txtDumpName.Text, txtDumpVersion.Text, txtDumpOS.Text, + (ListStore)treeExtents.Model); - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnAddHardwareClicked(object sender, EventArgs e) { txtHWManufacturer.Text = ""; - txtHWModel.Text = ""; - txtHWRevision.Text = ""; - txtHWFirmware.Text = ""; - txtHWSerial.Text = ""; - txtDumpName.Text = ""; - txtDumpVersion.Text = ""; - txtDumpOS.Text = ""; - treeExtents.Model = new ListStore(typeof(int), typeof(int)); + txtHWModel.Text = ""; + txtHWRevision.Text = ""; + txtHWFirmware.Text = ""; + txtHWSerial.Text = ""; + txtDumpName.Text = ""; + txtDumpVersion.Text = ""; + txtDumpOS.Text = ""; + treeExtents.Model = new ListStore(typeof(int), typeof(int)); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; lblHWManufacturer.Visible = true; txtHWManufacturer.Visible = true; - lblHWModel.Visible = true; - txtHWModel.Visible = true; - lblHWRevision.Visible = true; - txtHWRevision.Visible = true; - lblHWFirmware.Visible = true; - txtHWFirmware.Visible = true; - lblHWSerial.Visible = true; - txtHWSerial.Visible = true; - frmExtents.Visible = true; - frmDumpSoftware.Visible = true; + lblHWModel.Visible = true; + txtHWModel.Visible = true; + lblHWRevision.Visible = true; + txtHWRevision.Visible = true; + lblHWFirmware.Visible = true; + txtHWFirmware.Visible = true; + lblHWSerial.Visible = true; + txtHWSerial.Visible = true; + frmExtents.Visible = true; + frmDumpSoftware.Visible = true; editingDumpHw = false; } protected void OnBtnRemoveExtentClicked(object sender, EventArgs e) { - TreeIter extentIter; - if(treeExtents.Selection.GetSelected(out extentIter)) + if(treeExtents.Selection.GetSelected(out TreeIter extentIter)) ((ListStore)treeExtents.Model).Remove(ref extentIter); } @@ -1027,9 +1046,7 @@ namespace osrepodbmgr ((ListStore)treeExtents.Model).AppendValues(spExtentStart.ValueAsInt, spExtentEnd.ValueAsInt); } - protected void OnButtonOkClicked(object sender, EventArgs e) - { - } + protected void OnButtonOkClicked(object sender, EventArgs e) { } protected void OnBtnCancelClicked(object sender, EventArgs e) { @@ -1039,12 +1056,12 @@ namespace osrepodbmgr protected void OnBtnSaveClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - long ltmp; #region Sanity checks if(string.IsNullOrEmpty(txtFormat.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Image format cannot be null"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Image format cannot be null"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1054,7 +1071,8 @@ namespace osrepodbmgr { if(spSequence.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Media sequence must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1062,7 +1080,8 @@ namespace osrepodbmgr if(spTotalMedia.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Total medias must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Total medias must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1070,16 +1089,18 @@ namespace osrepodbmgr if(spSequence.Value > spTotalMedia.Value) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence cannot be bigger than total medias"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Media sequence cannot be bigger than total medias"); dlgMsg.Run(); dlgMsg.Destroy(); return; } } - if(string.IsNullOrEmpty(txtBlocks.Text) || !long.TryParse(txtBlocks.Text, out ltmp)) + if(string.IsNullOrEmpty(txtBlocks.Text) || !long.TryParse(txtBlocks.Text, out long ltmp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Blocks must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Blocks must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1087,7 +1108,8 @@ namespace osrepodbmgr if(ltmp < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Blocks must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Blocks must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1095,7 +1117,8 @@ namespace osrepodbmgr if(spPhysicalBlockSize.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Physical Block Size must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Physical Block Size must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1103,7 +1126,8 @@ namespace osrepodbmgr if(spLogicalBlockSize.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Logical Block Size must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Logical Block Size must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1111,7 +1135,8 @@ namespace osrepodbmgr if(spPhysicalBlockSize.Value < spLogicalBlockSize.Value) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Physical Block Size must be bigger than Logical Block Size"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Physical Block Size must be bigger than Logical Block Size"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1123,7 +1148,8 @@ namespace osrepodbmgr { if(spDiameter.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Diameter must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Diameter must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1133,22 +1159,27 @@ namespace osrepodbmgr { if(spHeight.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Height must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Height must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } + if(spWidth.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Width must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Width must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } } + if(spThickness.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Thickness must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Thickness must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1159,7 +1190,8 @@ namespace osrepodbmgr { if(string.IsNullOrWhiteSpace(txtPCIVendor.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Vendor ID must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Vendor ID must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1167,7 +1199,8 @@ namespace osrepodbmgr if(string.IsNullOrWhiteSpace(txtPCIProduct.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Product ID must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Product ID must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1177,7 +1210,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtPCIVendor.Text, 16) < 0 || Convert.ToInt32(txtPCIVendor.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Vendor ID must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Vendor ID must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1185,14 +1219,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Vendor ID must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Vendor ID must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Vendor ID must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Vendor ID must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1202,7 +1238,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtPCIProduct.Text, 16) < 0 || Convert.ToInt32(txtPCIProduct.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Product ID must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Product ID must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1210,14 +1247,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Product ID must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Product ID must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCI Product ID must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCI Product ID must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1228,7 +1267,8 @@ namespace osrepodbmgr { if(string.IsNullOrWhiteSpace(txtPCMCIAManufacturer.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Manufacturer Code must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Manufacturer Code must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1236,7 +1276,8 @@ namespace osrepodbmgr if(string.IsNullOrWhiteSpace(txtCardCode.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Card Code must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Card Code must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1246,7 +1287,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtMfgCode.Text, 16) < 0 || Convert.ToInt32(txtMfgCode.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Manufacturer Code must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Manufacturer Code must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1254,14 +1296,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Manufacturer Code must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Manufacturer Code must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Manufacturer Code must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Manufacturer Code must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1271,7 +1315,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtCardCode.Text, 16) < 0 || Convert.ToInt32(txtCardCode.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Card Code must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Card Code must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1279,14 +1324,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Card Code must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Card Code must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "PCMCIA Card Code must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "PCMCIA Card Code must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1297,7 +1344,8 @@ namespace osrepodbmgr { if(string.IsNullOrWhiteSpace(txtUSBVendor.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Vendor ID must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Vendor ID must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1305,7 +1353,8 @@ namespace osrepodbmgr if(string.IsNullOrWhiteSpace(txtUSBProduct.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Product ID must be set"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Product ID must be set"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1315,7 +1364,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtUSBVendor.Text, 16) < 0 || Convert.ToInt32(txtUSBVendor.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Vendor ID must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Vendor ID must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1323,14 +1373,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Vendor ID must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Vendor ID must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Vendor ID must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Vendor ID must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1340,7 +1392,8 @@ namespace osrepodbmgr { if(Convert.ToInt32(txtUSBProduct.Text, 16) < 0 || Convert.ToInt32(txtUSBProduct.Text, 16) > 0xFFFF) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Product ID must be between 0x0000 and 0xFFFF"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Product ID must be between 0x0000 and 0xFFFF"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1348,14 +1401,16 @@ namespace osrepodbmgr } catch(FormatException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Product ID must be a number in hexadecimal format"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Product ID must be a number in hexadecimal format"); dlgMsg.Run(); dlgMsg.Destroy(); return; } catch(OverflowException) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "USB Product ID must not be negative"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "USB Product ID must not be negative"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1363,90 +1418,88 @@ namespace osrepodbmgr } if(chkDumpHardware.Active) - { if(lstDumpHw.IterNChildren() < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "If dump hardware is known at least an entry must be created"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "If dump hardware is known at least an entry must be created"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - } #endregion Sanity checks - TreeIter outIter; - Metadata = new BlockMediaType(); + Metadata = new BlockMediaType {Image = new ImageType {Value = txtImage.Text, format = txtFormat.Text}}; - Metadata.Image = new Schemas.ImageType(); - Metadata.Image.Value = txtImage.Text; - Metadata.Image.format = txtFormat.Text; if(!string.IsNullOrWhiteSpace(txtOffset.Text) && long.TryParse(txtOffset.Text, out ltmp)) { Metadata.Image.offsetSpecified = true; - Metadata.Image.offset = long.Parse(txtOffset.Text); + Metadata.Image.offset = long.Parse(txtOffset.Text); } - Metadata.Size = long.Parse(txtSize.Text); - Metadata.Checksums = checksums; + + Metadata.Size = long.Parse(txtSize.Text); + Metadata.Checksums = checksums; Metadata.ContentChecksums = contentChks; if(chkSequence.Active) { - Metadata.Sequence = new SequenceType(); - Metadata.Sequence.MediaTitle = txtMediaTitle.Text; - Metadata.Sequence.MediaSequence = spSequence.ValueAsInt; - Metadata.Sequence.TotalMedia = spTotalMedia.ValueAsInt; + Metadata.Sequence = new SequenceType + { + MediaTitle = txtMediaTitle.Text, + MediaSequence = spSequence.ValueAsInt, + TotalMedia = spTotalMedia.ValueAsInt + }; if(spSide.ValueAsInt > 0) { Metadata.Sequence.SideSpecified = true; - Metadata.Sequence.Side = spSide.ValueAsInt; + Metadata.Sequence.Side = spSide.ValueAsInt; } + if(spLayer.ValueAsInt > 0) { Metadata.Sequence.LayerSpecified = true; - Metadata.Sequence.Layer = spLayer.ValueAsInt; + Metadata.Sequence.Layer = spLayer.ValueAsInt; } } - if(!string.IsNullOrWhiteSpace(txtManufacturer.Text)) - Metadata.Manufacturer = txtManufacturer.Text; - if(!string.IsNullOrWhiteSpace(txtModel.Text)) - Metadata.Model = txtModel.Text; - if(!string.IsNullOrWhiteSpace(txtSerial.Text)) - Metadata.Serial = txtSerial.Text; - if(!string.IsNullOrWhiteSpace(txtFirmware.Text)) - Metadata.Firmware = txtFirmware.Text; - if(!string.IsNullOrWhiteSpace(txtInterface.Text)) - Metadata.Interface = txtInterface.Text; + if(!string.IsNullOrWhiteSpace(txtManufacturer.Text)) Metadata.Manufacturer = txtManufacturer.Text; + if(!string.IsNullOrWhiteSpace(txtModel.Text)) Metadata.Model = txtModel.Text; + if(!string.IsNullOrWhiteSpace(txtSerial.Text)) Metadata.Serial = txtSerial.Text; + if(!string.IsNullOrWhiteSpace(txtFirmware.Text)) Metadata.Firmware = txtFirmware.Text; + if(!string.IsNullOrWhiteSpace(txtInterface.Text)) Metadata.Interface = txtInterface.Text; Metadata.PhysicalBlockSize = spPhysicalBlockSize.ValueAsInt; - Metadata.LogicalBlockSize = spLogicalBlockSize.ValueAsInt; - Metadata.LogicalBlocks = long.Parse(txtBlocks.Text); + Metadata.LogicalBlockSize = spLogicalBlockSize.ValueAsInt; + Metadata.LogicalBlocks = long.Parse(txtBlocks.Text); Metadata.VariableBlockSize = variableBlockSize; - Metadata.TapeInformation = tapeInformation; - Metadata.Scans = scans; + Metadata.TapeInformation = tapeInformation; + Metadata.Scans = scans; - if(chkATA.Active && lstAta.GetIterFirst(out outIter)) - { - Metadata.ATA = new ATAType(); - Metadata.ATA.Identify = new DumpType(); - Metadata.ATA.Identify.Image = (string)lstAta.GetValue(outIter, 0); - Metadata.ATA.Identify.Size = (int)lstAta.GetValue(outIter, 1); - Metadata.ATA.Identify.Checksums = (ChecksumType[])lstAta.GetValue(outIter, 2); - } + if(chkATA.Active && lstAta.GetIterFirst(out TreeIter outIter)) + Metadata.ATA = new ATAType + { + Identify = new DumpType + { + Image = (string)lstAta.GetValue(outIter, 0), + Size = (int)lstAta.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstAta.GetValue(outIter, 2) + } + }; if(chkPCI.Active) { - Metadata.PCI = new PCIType(); - Metadata.PCI.VendorID = Convert.ToUInt16(txtPCIVendor.Text, 16); - Metadata.PCI.DeviceID = Convert.ToUInt16(txtPCIProduct.Text, 16); + Metadata.PCI = new PCIType + { + VendorID = Convert.ToUInt16(txtPCIVendor.Text, 16), + DeviceID = Convert.ToUInt16(txtPCIProduct.Text, 16) + }; if(lstPCIConfiguration.GetIterFirst(out outIter)) - { - Metadata.PCI.Configuration = new DumpType(); - Metadata.PCI.Configuration.Image = (string)lstPCIConfiguration.GetValue(outIter, 0); - Metadata.PCI.Configuration.Size = (int)lstPCIConfiguration.GetValue(outIter, 1); - Metadata.PCI.Configuration.Checksums = (ChecksumType[])lstPCIConfiguration.GetValue(outIter, 2); - } + Metadata.PCI.Configuration = new DumpType + { + Image = (string)lstPCIConfiguration.GetValue(outIter, 0), + Size = (int)lstPCIConfiguration.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPCIConfiguration.GetValue(outIter, 2) + }; if(lstPCIOptionROM.GetIterFirst(out outIter)) Metadata.PCI.ExpansionROM = (LinearMediaType)lstPCIOptionROM.GetValue(outIter, 3); @@ -1457,15 +1510,14 @@ namespace osrepodbmgr Metadata.PCMCIA = new PCMCIAType(); if(lstPCMCIACIS.GetIterFirst(out outIter)) - { - Metadata.PCMCIA.CIS = new DumpType(); - Metadata.PCMCIA.CIS.Image = (string)lstPCMCIACIS.GetValue(outIter, 0); - Metadata.PCMCIA.CIS.Size = (int)lstPCMCIACIS.GetValue(outIter, 1); - Metadata.PCMCIA.CIS.Checksums = (ChecksumType[])lstPCMCIACIS.GetValue(outIter, 2); - } + Metadata.PCMCIA.CIS = new DumpType + { + Image = (string)lstPCMCIACIS.GetValue(outIter, 0), + Size = (int)lstPCMCIACIS.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPCMCIACIS.GetValue(outIter, 2) + }; - if(!string.IsNullOrWhiteSpace(txtCompliance.Text)) - Metadata.PCMCIA.Compliance = txtCompliance.Text; + if(!string.IsNullOrWhiteSpace(txtCompliance.Text)) Metadata.PCMCIA.Compliance = txtCompliance.Text; if(!string.IsNullOrWhiteSpace(txtPCMCIAManufacturer.Text)) Metadata.PCMCIA.Manufacturer = txtPCMCIAManufacturer.Text; if(!string.IsNullOrWhiteSpace(txtPCMCIAProductName.Text)) @@ -1473,19 +1525,19 @@ namespace osrepodbmgr if(!string.IsNullOrWhiteSpace(txtMfgCode.Text)) { Metadata.PCMCIA.ManufacturerCodeSpecified = true; - Metadata.PCMCIA.ManufacturerCode = Convert.ToUInt16(txtMfgCode.Text, 16); + Metadata.PCMCIA.ManufacturerCode = Convert.ToUInt16(txtMfgCode.Text, 16); } + if(!string.IsNullOrWhiteSpace(txtCardCode.Text)) { Metadata.PCMCIA.CardCodeSpecified = true; - Metadata.PCMCIA.CardCode = Convert.ToUInt16(txtCardCode.Text, 16); + Metadata.PCMCIA.CardCode = Convert.ToUInt16(txtCardCode.Text, 16); } if(lstAdditionalInformation.GetIterFirst(out outIter)) { List addinfos = new List(); - do - addinfos.Add((string)lstAdditionalInformation.GetValue(outIter, 0)); + do addinfos.Add((string)lstAdditionalInformation.GetValue(outIter, 0)); while(lstAdditionalInformation.IterNext(ref outIter)); Metadata.PCMCIA.AdditionalInformation = addinfos.ToArray(); } @@ -1496,26 +1548,26 @@ namespace osrepodbmgr Metadata.SecureDigital = new SecureDigitalType(); if(lstCID.GetIterFirst(out outIter)) - { - Metadata.SecureDigital.CID = new DumpType(); - Metadata.SecureDigital.CID.Image = (string)lstCID.GetValue(outIter, 0); - Metadata.SecureDigital.CID.Size = (int)lstCID.GetValue(outIter, 1); - Metadata.SecureDigital.CID.Checksums = (ChecksumType[])lstCID.GetValue(outIter, 2); - } + Metadata.SecureDigital.CID = new DumpType + { + Image = (string)lstCID.GetValue(outIter, 0), + Size = (int)lstCID.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstCID.GetValue(outIter, 2) + }; if(lstCSD.GetIterFirst(out outIter)) - { - Metadata.SecureDigital.CSD = new DumpType(); - Metadata.SecureDigital.CSD.Image = (string)lstCSD.GetValue(outIter, 0); - Metadata.SecureDigital.CSD.Size = (int)lstCSD.GetValue(outIter, 1); - Metadata.SecureDigital.CSD.Checksums = (ChecksumType[])lstCSD.GetValue(outIter, 2); - } + Metadata.SecureDigital.CSD = new DumpType + { + Image = (string)lstCSD.GetValue(outIter, 0), + Size = (int)lstCSD.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstCSD.GetValue(outIter, 2) + }; if(lstECSD.GetIterFirst(out outIter)) - { - Metadata.MultiMediaCard.ExtendedCSD = new DumpType(); - Metadata.MultiMediaCard.ExtendedCSD.Image = (string)lstECSD.GetValue(outIter, 0); - Metadata.MultiMediaCard.ExtendedCSD.Size = (int)lstECSD.GetValue(outIter, 1); - Metadata.MultiMediaCard.ExtendedCSD.Checksums = (ChecksumType[])lstECSD.GetValue(outIter, 2); - } + Metadata.MultiMediaCard.ExtendedCSD = new DumpType + { + Image = (string)lstECSD.GetValue(outIter, 0), + Size = (int)lstECSD.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstECSD.GetValue(outIter, 2) + }; } if(chkSCSI.Active) @@ -1523,46 +1575,45 @@ namespace osrepodbmgr Metadata.SCSI = new SCSIType(); if(lstInquiry.GetIterFirst(out outIter)) - { - Metadata.SCSI.Inquiry = new DumpType(); - Metadata.SCSI.Inquiry.Image = (string)lstInquiry.GetValue(outIter, 0); - Metadata.SCSI.Inquiry.Size = (int)lstInquiry.GetValue(outIter, 1); - Metadata.SCSI.Inquiry.Checksums = (ChecksumType[])lstInquiry.GetValue(outIter, 2); - } + Metadata.SCSI.Inquiry = new DumpType + { + Image = (string)lstInquiry.GetValue(outIter, 0), + Size = (int)lstInquiry.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstInquiry.GetValue(outIter, 2) + }; if(lstModeSense.GetIterFirst(out outIter)) - { - Metadata.SCSI.ModeSense = new DumpType(); - Metadata.SCSI.ModeSense.Image = (string)lstModeSense.GetValue(outIter, 0); - Metadata.SCSI.ModeSense.Size = (int)lstModeSense.GetValue(outIter, 1); - Metadata.SCSI.ModeSense.Checksums = (ChecksumType[])lstModeSense.GetValue(outIter, 2); - } + Metadata.SCSI.ModeSense = new DumpType + { + Image = (string)lstModeSense.GetValue(outIter, 0), + Size = (int)lstModeSense.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstModeSense.GetValue(outIter, 2) + }; if(lstModeSense10.GetIterFirst(out outIter)) - { - Metadata.SCSI.ModeSense10 = new DumpType(); - Metadata.SCSI.ModeSense10.Image = (string)lstModeSense10.GetValue(outIter, 0); - Metadata.SCSI.ModeSense10.Size = (int)lstModeSense10.GetValue(outIter, 1); - Metadata.SCSI.ModeSense10.Checksums = (ChecksumType[])lstModeSense10.GetValue(outIter, 2); - } + Metadata.SCSI.ModeSense10 = new DumpType + { + Image = (string)lstModeSense10.GetValue(outIter, 0), + Size = (int)lstModeSense10.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstModeSense10.GetValue(outIter, 2) + }; if(lstLogSense.GetIterFirst(out outIter)) - { - Metadata.SCSI.LogSense = new DumpType(); - Metadata.SCSI.LogSense.Image = (string)lstLogSense.GetValue(outIter, 0); - Metadata.SCSI.LogSense.Size = (int)lstLogSense.GetValue(outIter, 1); - Metadata.SCSI.LogSense.Checksums = (ChecksumType[])lstLogSense.GetValue(outIter, 2); - } + Metadata.SCSI.LogSense = new DumpType + { + Image = (string)lstLogSense.GetValue(outIter, 0), + Size = (int)lstLogSense.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstLogSense.GetValue(outIter, 2) + }; if(lstEVPDs.GetIterFirst(out outIter)) { List evpds = new List(); do - { - EVPDType evpd = new EVPDType(); - evpd.page = (int)lstEVPDs.GetValue(outIter, 0); - evpd.pageSpecified = true; - evpd.Image = (string)lstEVPDs.GetValue(outIter, 1); - evpd.Size = (long)lstEVPDs.GetValue(outIter, 2); - evpd.Checksums = (ChecksumType[])lstEVPDs.GetValue(outIter, 3); - evpds.Add(evpd); - } + evpds.Add(new EVPDType + { + page = (int)lstEVPDs.GetValue(outIter, 0), + pageSpecified = true, + Image = (string)lstEVPDs.GetValue(outIter, 1), + Size = (long)lstEVPDs.GetValue(outIter, 2), + Checksums = (ChecksumType[])lstEVPDs.GetValue(outIter, 3) + }); while(lstEVPDs.IterNext(ref outIter)); Metadata.SCSI.EVPD = evpds.ToArray(); } @@ -1570,35 +1621,37 @@ namespace osrepodbmgr if(chkUSB.Active) { - Metadata.USB = new USBType(); - Metadata.USB.VendorID = Convert.ToUInt16(txtUSBVendor.Text, 16); - Metadata.USB.ProductID = Convert.ToUInt16(txtUSBProduct.Text, 16); + Metadata.USB = new USBType + { + VendorID = Convert.ToUInt16(txtUSBVendor.Text, 16), + ProductID = Convert.ToUInt16(txtUSBProduct.Text, 16) + }; if(lstUSBDescriptors.GetIterFirst(out outIter)) - { - Metadata.USB.Descriptors = new DumpType(); - Metadata.USB.Descriptors.Image = (string)lstUSBDescriptors.GetValue(outIter, 0); - Metadata.USB.Descriptors.Size = (int)lstUSBDescriptors.GetValue(outIter, 1); - Metadata.USB.Descriptors.Checksums = (ChecksumType[])lstUSBDescriptors.GetValue(outIter, 2); - } + Metadata.USB.Descriptors = new DumpType + { + Image = (string)lstUSBDescriptors.GetValue(outIter, 0), + Size = (int)lstUSBDescriptors.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstUSBDescriptors.GetValue(outIter, 2) + }; } if(chkMAM.Active && lstMAM.GetIterFirst(out outIter)) - { - Metadata.MAM = new DumpType(); - Metadata.MAM.Image = (string)lstMAM.GetValue(outIter, 0); - Metadata.MAM.Size = (int)lstMAM.GetValue(outIter, 1); - Metadata.MAM.Checksums = (ChecksumType[])lstMAM.GetValue(outIter, 2); - } + Metadata.MAM = new DumpType + { + Image = (string)lstMAM.GetValue(outIter, 0), + Size = (int)lstMAM.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstMAM.GetValue(outIter, 2) + }; if(spHeads.ValueAsInt > 0 && spCylinders.ValueAsInt > 0 && spSectors.ValueAsInt > 0) { - Metadata.HeadsSpecified = true; - Metadata.CylindersSpecified = true; + Metadata.HeadsSpecified = true; + Metadata.CylindersSpecified = true; Metadata.SectorsPerTrackSpecified = true; - Metadata.Heads = spHeads.ValueAsInt; - Metadata.Cylinders = spCylinders.ValueAsInt; - Metadata.SectorsPerTrack = spSectors.ValueAsInt; + Metadata.Heads = spHeads.ValueAsInt; + Metadata.Cylinders = spCylinders.ValueAsInt; + Metadata.SectorsPerTrack = spSectors.ValueAsInt; } if(lstTracks.GetIterFirst(out outIter)) @@ -1606,30 +1659,34 @@ namespace osrepodbmgr List tracks = new List(); do { - BlockTrackType track = new BlockTrackType(); - track.Image = new Schemas.ImageType(); - track.Image.Value = (string)lstTracks.GetValue(outIter, 0); - track.Image.offset = (long)lstTracks.GetValue(outIter, 1); - if(track.Image.offset > 0) - track.Image.offsetSpecified = true; - track.Size = (long)lstTracks.GetValue(outIter, 2); - track.Image.format = (string)lstTracks.GetValue(outIter, 3); - track.Head = (long)lstTracks.GetValue(outIter, 4); - track.Cylinder = (long)lstTracks.GetValue(outIter, 5); - track.StartSector = (long)lstTracks.GetValue(outIter, 6); - track.EndSector = (long)lstTracks.GetValue(outIter, 7); - track.Sectors = (long)lstTracks.GetValue(outIter, 8); - track.BytesPerSector = (int)lstTracks.GetValue(outIter, 9); - track.Format = (string)lstTracks.GetValue(outIter, 10); - track.Checksums = (ChecksumType[])lstTracks.GetValue(outIter, 11); + BlockTrackType track = new BlockTrackType + { + Image = + new ImageType + { + Value = (string)lstTracks.GetValue(outIter, 0), + offset = (long)lstTracks.GetValue(outIter, 1), + format = (string)lstTracks.GetValue(outIter, 3) + }, + Size = (long)lstTracks.GetValue(outIter, 2), + Head = (long)lstTracks.GetValue(outIter, 4), + Cylinder = (long)lstTracks.GetValue(outIter, 5), + StartSector = (long)lstTracks.GetValue(outIter, 6), + EndSector = (long)lstTracks.GetValue(outIter, 7), + Sectors = (long)lstTracks.GetValue(outIter, 8), + BytesPerSector = (int)lstTracks.GetValue(outIter, 9), + Format = (string)lstTracks.GetValue(outIter, 10), + Checksums = (ChecksumType[])lstTracks.GetValue(outIter, 11) + }; + if(track.Image.offset > 0) track.Image.offsetSpecified = true; tracks.Add(track); } while(lstTracks.IterNext(ref outIter)); + Metadata.Track = tracks.ToArray(); } - if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) - Metadata.CopyProtection = txtCopyProtection.Text; + if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) Metadata.CopyProtection = txtCopyProtection.Text; if(chkDimensions.Active) { @@ -1637,15 +1694,16 @@ namespace osrepodbmgr if(chkRound.Active) { Metadata.Dimensions.DiameterSpecified = true; - Metadata.Dimensions.Diameter = spDiameter.Value; + Metadata.Dimensions.Diameter = spDiameter.Value; } else { Metadata.Dimensions.HeightSpecified = true; - Metadata.Dimensions.WidthSpecified = true; - Metadata.Dimensions.Height = spHeight.Value; - Metadata.Dimensions.Width = spWidth.Value; + Metadata.Dimensions.WidthSpecified = true; + Metadata.Dimensions.Height = spHeight.Value; + Metadata.Dimensions.Width = spWidth.Value; } + Metadata.Dimensions.Thickness = spThickness.Value; } @@ -1654,17 +1712,18 @@ namespace osrepodbmgr List partitions = new List(); do { - PartitionType partition = new PartitionType(); - partition.Sequence = (int)lstPartitions.GetValue(outIter, 0); - partition.StartSector = (int)lstPartitions.GetValue(outIter, 1); - partition.EndSector = (int)lstPartitions.GetValue(outIter, 2); - partition.Type = (string)lstPartitions.GetValue(outIter, 3); - partition.Name = (string)lstPartitions.GetValue(outIter, 4); - partition.Description = (string)lstPartitions.GetValue(outIter, 5); + PartitionType partition = new PartitionType + { + Sequence = (int)lstPartitions.GetValue(outIter, 0), + StartSector = (int)lstPartitions.GetValue(outIter, 1), + EndSector = (int)lstPartitions.GetValue(outIter, 2), + Type = (string)lstPartitions.GetValue(outIter, 3), + Name = (string)lstPartitions.GetValue(outIter, 4), + Description = (string)lstPartitions.GetValue(outIter, 5) + }; ListStore lstFilesystems = (ListStore)lstPartitions.GetValue(outIter, 6); - TreeIter fsIter; - if(lstFilesystems.GetIterFirst(out fsIter)) + if(lstFilesystems.GetIterFirst(out TreeIter fsIter)) { List fss = new List(); do @@ -1673,12 +1732,14 @@ namespace osrepodbmgr fss.Add(fs); } while(lstFilesystems.IterNext(ref fsIter)); + partition.FileSystems = fss.ToArray(); } partitions.Add(partition); } while(lstPartitions.IterNext(ref outIter)); + Metadata.FileSystemInformation = partitions.ToArray(); } @@ -1687,47 +1748,49 @@ namespace osrepodbmgr List dumps = new List(); do { - DumpHardwareType dump = new DumpHardwareType(); - dump.Software = new SoftwareType(); - ListStore lstExtents; - TreeIter extIter; + DumpHardwareType dump = new DumpHardwareType + { + Software = new SoftwareType(), + Manufacturer = (string)lstDumpHw.GetValue(outIter, 0), + Model = (string)lstDumpHw.GetValue(outIter, 1), + Revision = (string)lstDumpHw.GetValue(outIter, 2), + Firmware = (string)lstDumpHw.GetValue(outIter, 3), + Serial = (string)lstDumpHw.GetValue(outIter, 4) + }; - dump.Manufacturer = (string)lstDumpHw.GetValue(outIter, 0); - dump.Model = (string)lstDumpHw.GetValue(outIter, 1); - dump.Revision = (string)lstDumpHw.GetValue(outIter, 2); - dump.Firmware = (string)lstDumpHw.GetValue(outIter, 3); - dump.Serial = (string)lstDumpHw.GetValue(outIter, 4); - dump.Software.Name = (string)lstDumpHw.GetValue(outIter, 5); - dump.Software.Version = (string)lstDumpHw.GetValue(outIter, 6); - dump.Software.OperatingSystem = (string)lstDumpHw.GetValue(outIter, 7); - lstExtents = (ListStore)lstDumpHw.GetValue(outIter, 8); + dump.Software.Name = (string)lstDumpHw.GetValue(outIter, 5); + dump.Software.Version = (string)lstDumpHw.GetValue(outIter, 6); + dump.Software.OperatingSystem = (string)lstDumpHw.GetValue(outIter, 7); + ListStore lstExtents = (ListStore)lstDumpHw.GetValue(outIter, 8); - if(lstExtents.GetIterFirst(out extIter)) + if(lstExtents.GetIterFirst(out TreeIter extIter)) { List extents = new List(); do { - ExtentType extent = new ExtentType(); - extent.Start = (ulong)lstExtents.GetValue(extIter, 0); - extent.End = (ulong)lstExtents.GetValue(extIter, 1); + ExtentType extent = new ExtentType + { + Start = (ulong)lstExtents.GetValue(extIter, 0), + End = (ulong)lstExtents.GetValue(extIter, 1) + }; extents.Add(extent); } while(lstExtents.IterNext(ref extIter)); + dump.Extents = extents.ToArray(); } dumps.Add(dump); } while(lstDumpHw.IterNext(ref outIter)); + Metadata.DumpHardwareArray = dumps.ToArray(); } - if(!string.IsNullOrWhiteSpace(txtMediaType.Text)) - Metadata.DiskType = txtMediaType.Text; - if(!string.IsNullOrWhiteSpace(txtMediaSubtype.Text)) - Metadata.DiskSubType = txtMediaSubtype.Text; + if(!string.IsNullOrWhiteSpace(txtMediaType.Text)) Metadata.DiskType = txtMediaType.Text; + if(!string.IsNullOrWhiteSpace(txtMediaSubtype.Text)) Metadata.DiskSubType = txtMediaSubtype.Text; buttonOk.Click(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgFilesystem.cs b/osrepodbmgr/dlgFilesystem.cs index dc4f12d..a0c76c2 100644 --- a/osrepodbmgr/dlgFilesystem.cs +++ b/osrepodbmgr/dlgFilesystem.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using Gtk; using Schemas; @@ -42,63 +43,57 @@ namespace osrepodbmgr public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - if(Metadata.Type != null) - txtType.Text = Metadata.Type; + if(Metadata.Type != null) txtType.Text = Metadata.Type; if(Metadata.CreationDateSpecified) { - chkCreationDate.Active = true; + chkCreationDate.Active = true; cldCreationDate.Sensitive = true; - cldCreationDate.Date = Metadata.CreationDate; + cldCreationDate.Date = Metadata.CreationDate; } + if(Metadata.ModificationDateSpecified) { - chkModificationDate.Active = true; + chkModificationDate.Active = true; cldModificationDate.Sensitive = true; - cldModificationDate.Date = Metadata.ModificationDate; + cldModificationDate.Date = Metadata.ModificationDate; } + if(Metadata.BackupDateSpecified) { - chkBackupDate.Active = true; + chkBackupDate.Active = true; cldBackupDate.Sensitive = true; - cldBackupDate.Date = Metadata.BackupDate; + cldBackupDate.Date = Metadata.BackupDate; } - spClusterSize.Value = Metadata.ClusterSize; - txtClusters.Text = Metadata.Clusters.ToString(); - if(Metadata.FilesSpecified) - txtFiles.Text = Metadata.Files.ToString(); - chkBootable.Active = Metadata.Bootable; - if(Metadata.VolumeSerial != null) - txtSerial.Text = Metadata.VolumeSerial; - if(Metadata.VolumeName != null) - txtLabel.Text = Metadata.VolumeName; - if(Metadata.FreeClustersSpecified) - txtFreeClusters.Text = Metadata.FreeClusters.ToString(); - chkDirty.Active = Metadata.Dirty; + + spClusterSize.Value = Metadata.ClusterSize; + txtClusters.Text = Metadata.Clusters.ToString(); + if(Metadata.FilesSpecified) txtFiles.Text = Metadata.Files.ToString(); + chkBootable.Active = Metadata.Bootable; + if(Metadata.VolumeSerial != null) txtSerial.Text = Metadata.VolumeSerial; + if(Metadata.VolumeName != null) txtLabel.Text = Metadata.VolumeName; + if(Metadata.FreeClustersSpecified) txtFreeClusters.Text = Metadata.FreeClusters.ToString(); + chkDirty.Active = Metadata.Dirty; if(Metadata.ExpirationDateSpecified) { - chkExpirationDate.Active = true; + chkExpirationDate.Active = true; cldExpirationDate.Sensitive = true; - cldExpirationDate.Date = Metadata.ExpirationDate; + cldExpirationDate.Date = Metadata.ExpirationDate; } + if(Metadata.EffectiveDateSpecified) { - chkEffectiveDate.Active = true; + chkEffectiveDate.Active = true; cldEffectiveDate.Sensitive = true; - cldEffectiveDate.Date = Metadata.EffectiveDate; + cldEffectiveDate.Date = Metadata.EffectiveDate; } - if(Metadata.SystemIdentifier != null) - txtSysId.Text = Metadata.SystemIdentifier; - if(Metadata.VolumeSetIdentifier != null) - txtVolId.Text = Metadata.VolumeSetIdentifier; - if(Metadata.PublisherIdentifier != null) - txtPubId.Text = Metadata.PublisherIdentifier; - if(Metadata.DataPreparerIdentifier != null) - txtDataId.Text = Metadata.DataPreparerIdentifier; - if(Metadata.ApplicationIdentifier != null) - txtAppId.Text = Metadata.ApplicationIdentifier; + + if(Metadata.SystemIdentifier != null) txtSysId.Text = Metadata.SystemIdentifier; + if(Metadata.VolumeSetIdentifier != null) txtVolId.Text = Metadata.VolumeSetIdentifier; + if(Metadata.PublisherIdentifier != null) txtPubId.Text = Metadata.PublisherIdentifier; + if(Metadata.DataPreparerIdentifier != null) txtDataId.Text = Metadata.DataPreparerIdentifier; + if(Metadata.ApplicationIdentifier != null) txtAppId.Text = Metadata.ApplicationIdentifier; } protected void OnChkCreationDateToggled(object sender, EventArgs e) @@ -126,9 +121,7 @@ namespace osrepodbmgr cldBackupDate.Sensitive = chkBackupDate.Active; } - protected void OnButtonOkClicked(object sender, EventArgs e) - { - } + protected void OnButtonOkClicked(object sender, EventArgs e) { } protected void OnBtnCancelClicked(object sender, EventArgs e) { @@ -138,11 +131,11 @@ namespace osrepodbmgr protected void OnBtnSaveClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - long temp; if(string.IsNullOrWhiteSpace(txtType.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Filesystem type cannot be empty"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Filesystem type cannot be empty"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -150,15 +143,17 @@ namespace osrepodbmgr if(spClusterSize.ValueAsInt < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Clusters must be bigger than 0 bytes"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Clusters must be bigger than 0 bytes"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(!long.TryParse(txtClusters.Text, out temp)) + if(!long.TryParse(txtClusters.Text, out long temp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Clusters must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Clusters must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -166,7 +161,8 @@ namespace osrepodbmgr if(temp < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Filesystem must have more than 0 clusters"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Filesystem must have more than 0 clusters"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -174,7 +170,8 @@ namespace osrepodbmgr if(!string.IsNullOrWhiteSpace(txtFiles.Text) && !long.TryParse(txtFiles.Text, out temp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Files must be a number, or empty for unknown"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Files must be a number, or empty for unknown"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -182,7 +179,8 @@ namespace osrepodbmgr if(!string.IsNullOrWhiteSpace(txtFiles.Text) && temp < 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Files must be positive"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Files must be positive"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -190,7 +188,8 @@ namespace osrepodbmgr if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text) && !long.TryParse(txtFreeClusters.Text, out temp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Free clusters must be a number or empty for unknown"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Free clusters must be a number or empty for unknown"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -198,69 +197,69 @@ namespace osrepodbmgr if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text) && temp < 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Free clusters must be positive"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Free clusters must be positive"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - Metadata = new FileSystemType(); - Metadata.Type = txtType.Text; + Metadata = new FileSystemType {Type = txtType.Text}; if(chkCreationDate.Active) { Metadata.CreationDateSpecified = true; - Metadata.CreationDate = cldCreationDate.Date; + Metadata.CreationDate = cldCreationDate.Date; } + if(chkModificationDate.Active) { Metadata.ModificationDateSpecified = true; - Metadata.ModificationDate = cldModificationDate.Date; + Metadata.ModificationDate = cldModificationDate.Date; } + if(chkBackupDate.Active) { Metadata.BackupDateSpecified = true; - Metadata.BackupDate = cldBackupDate.Date; + Metadata.BackupDate = cldBackupDate.Date; } + Metadata.ClusterSize = (int)spClusterSize.Value; - Metadata.Clusters = long.Parse(txtClusters.Text); + Metadata.Clusters = long.Parse(txtClusters.Text); if(!string.IsNullOrWhiteSpace(txtFiles.Text)) { Metadata.FilesSpecified = true; - Metadata.Files = long.Parse(txtFiles.Text); + Metadata.Files = long.Parse(txtFiles.Text); } - Metadata.Bootable = chkBootable.Active; - if(!string.IsNullOrWhiteSpace(txtSerial.Text)) - Metadata.VolumeSerial = txtSerial.Text; - if(!string.IsNullOrWhiteSpace(txtLabel.Text)) - Metadata.VolumeName = txtLabel.Text; + + Metadata.Bootable = chkBootable.Active; + if(!string.IsNullOrWhiteSpace(txtSerial.Text)) Metadata.VolumeSerial = txtSerial.Text; + if(!string.IsNullOrWhiteSpace(txtLabel.Text)) Metadata.VolumeName = txtLabel.Text; if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text)) { Metadata.FreeClustersSpecified = true; - Metadata.FreeClusters = long.Parse(txtFreeClusters.Text); + Metadata.FreeClusters = long.Parse(txtFreeClusters.Text); } + Metadata.Dirty = chkDirty.Active; if(chkExpirationDate.Active) { Metadata.ExpirationDateSpecified = true; - Metadata.ExpirationDate = cldExpirationDate.Date; + Metadata.ExpirationDate = cldExpirationDate.Date; } + if(chkEffectiveDate.Active) { Metadata.EffectiveDateSpecified = true; - Metadata.EffectiveDate = cldEffectiveDate.Date; + Metadata.EffectiveDate = cldEffectiveDate.Date; } - if(!string.IsNullOrWhiteSpace(txtSysId.Text)) - Metadata.SystemIdentifier = txtSysId.Text; - if(!string.IsNullOrWhiteSpace(txtVolId.Text)) - Metadata.VolumeSetIdentifier = txtVolId.Text; - if(!string.IsNullOrWhiteSpace(txtPubId.Text)) - Metadata.PublisherIdentifier = txtPubId.Text; - if(!string.IsNullOrWhiteSpace(txtDataId.Text)) - Metadata.DataPreparerIdentifier = txtDataId.Text; - if(!string.IsNullOrWhiteSpace(txtAppId.Text)) - Metadata.ApplicationIdentifier = txtAppId.Text; + + if(!string.IsNullOrWhiteSpace(txtSysId.Text)) Metadata.SystemIdentifier = txtSysId.Text; + if(!string.IsNullOrWhiteSpace(txtVolId.Text)) Metadata.VolumeSetIdentifier = txtVolId.Text; + if(!string.IsNullOrWhiteSpace(txtPubId.Text)) Metadata.PublisherIdentifier = txtPubId.Text; + if(!string.IsNullOrWhiteSpace(txtDataId.Text)) Metadata.DataPreparerIdentifier = txtDataId.Text; + if(!string.IsNullOrWhiteSpace(txtAppId.Text)) Metadata.ApplicationIdentifier = txtAppId.Text; buttonOk.Click(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgHelp.cs b/osrepodbmgr/dlgHelp.cs index 24a91c1..9ccf011 100644 --- a/osrepodbmgr/dlgHelp.cs +++ b/osrepodbmgr/dlgHelp.cs @@ -25,11 +25,13 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; +using Gtk; namespace osrepodbmgr { - public partial class dlgHelp : Gtk.Dialog + public partial class dlgHelp : Dialog { public dlgHelp() { @@ -41,4 +43,4 @@ namespace osrepodbmgr btnDialog.Click(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgMetadata.cs b/osrepodbmgr/dlgMetadata.cs index 7243a22..c7d3181 100644 --- a/osrepodbmgr/dlgMetadata.cs +++ b/osrepodbmgr/dlgMetadata.cs @@ -25,8 +25,10 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using Gtk; using osrepodbmgr.Core; @@ -36,84 +38,84 @@ namespace osrepodbmgr { public partial class dlgMetadata : Dialog { - public CICMMetadataType Metadata; + AdvertisementType[] adverts; + AudioMediaType[] audiomedias; + BookType[] books; + LinearMediaType[] linearmedias; + ListStore lstArchitectures; + ListStore lstArchitecturesTypes; + ListStore lstBarcodes; + ListStore lstBarcodeTypes; + ListStore lstCategories; + ListStore lstDiscs; + ListStore lstDisks; + ListStore lstFilesForDisc; + ListStore lstFilesForDisk; ListStore lstKeywords; - ListStore lstBarcodes; - ListStore lstCategories; - ListStore lstSubcategories; ListStore lstLanguages; - ListStore lstSystems; - ListStore lstArchitectures; - ListStore lstDiscs; - ListStore lstDisks; + ListStore lstLanguageTypes; ListStore lstReleaseTypes; - ListStore lstBarcodeTypes; - ListStore lstLanguageTypes; - ListStore lstArchitecturesTypes; - ListStore lstFilesForDisc; - ListStore lstFilesForDisk; - - Thread thdDisc; - Thread thdDisk; - bool stopped; + ListStore lstSubcategories; + ListStore lstSystems; // TODO: Add the options to edit these fields - MagazineType[] magazines; - BookType[] books; + MagazineType[] magazines; + public CICMMetadataType Metadata; + PCIType[] pcis; RequiredOperatingSystemType[] requiredOses; + bool stopped; + + Thread thdDisc; + Thread thdDisk; UserManualType[] usermanuals; - AdvertisementType[] adverts; - LinearMediaType[] linearmedias; - PCIType[] pcis; - AudioMediaType[] audiomedias; public dlgMetadata() { Build(); - lstKeywords = new ListStore(typeof(string)); - lstBarcodes = new ListStore(typeof(string), typeof(string)); - lstCategories = new ListStore(typeof(string)); + lstKeywords = new ListStore(typeof(string)); + lstBarcodes = new ListStore(typeof(string), typeof(string)); + lstCategories = new ListStore(typeof(string)); lstSubcategories = new ListStore(typeof(string)); - lstLanguages = new ListStore(typeof(string)); - lstSystems = new ListStore(typeof(string)); + lstLanguages = new ListStore(typeof(string)); + lstSystems = new ListStore(typeof(string)); lstArchitectures = new ListStore(typeof(string)); - lstDiscs = new ListStore(typeof(string), typeof(OpticalDiscType)); - lstDisks = new ListStore(typeof(string), typeof(BlockMediaType)); + lstDiscs = new ListStore(typeof(string), typeof(OpticalDiscType)); + lstDisks = new ListStore(typeof(string), typeof(BlockMediaType)); - CellRendererText keywordsCell = new CellRendererText(); - CellRendererText barcodesCell = new CellRendererText(); - CellRendererText barcodesTypeCell = new CellRendererText(); - CellRendererText categoriesCell = new CellRendererText(); + CellRendererText keywordsCell = new CellRendererText(); + CellRendererText barcodesCell = new CellRendererText(); + CellRendererText barcodesTypeCell = new CellRendererText(); + CellRendererText categoriesCell = new CellRendererText(); CellRendererText subcategoriesCell = new CellRendererText(); - CellRendererText languagesCell = new CellRendererText(); - CellRendererText systemsCell = new CellRendererText(); + CellRendererText languagesCell = new CellRendererText(); + CellRendererText systemsCell = new CellRendererText(); CellRendererText architecturesCell = new CellRendererText(); - CellRendererText discsCell = new CellRendererText(); - CellRendererText disksCell = new CellRendererText(); + CellRendererText discsCell = new CellRendererText(); + CellRendererText disksCell = new CellRendererText(); - TreeViewColumn keywordsColumn = new TreeViewColumn("Keyword", keywordsCell, "text", 0); - TreeViewColumn barcodesColumn = new TreeViewColumn("Barcode", barcodesCell, "text", 0); - TreeViewColumn barcodesTypeColumn = new TreeViewColumn("Type", barcodesTypeCell, "text", 1); - TreeViewColumn categoriesColumn = new TreeViewColumn("Category", categoriesCell, "text", 0); - TreeViewColumn subcategoriesColumn = new TreeViewColumn("Subcategory", subcategoriesCell, "text", 0); - TreeViewColumn languagesColumn = new TreeViewColumn("Language", languagesCell, "text", 0); - TreeViewColumn systemsColumn = new TreeViewColumn("System", systemsCell, "text", 0); + TreeViewColumn keywordsColumn = new TreeViewColumn("Keyword", keywordsCell, "text", 0); + TreeViewColumn barcodesColumn = new TreeViewColumn("Barcode", barcodesCell, "text", 0); + TreeViewColumn barcodesTypeColumn = new TreeViewColumn("Type", barcodesTypeCell, "text", 1); + TreeViewColumn categoriesColumn = new TreeViewColumn("Category", categoriesCell, "text", 0); + TreeViewColumn subcategoriesColumn = new TreeViewColumn("Subcategory", subcategoriesCell, "text", 0); + TreeViewColumn languagesColumn = new TreeViewColumn("Language", languagesCell, "text", 0); + TreeViewColumn systemsColumn = new TreeViewColumn("System", systemsCell, "text", 0); TreeViewColumn architecturesColumn = new TreeViewColumn("Architecture", architecturesCell, "text", 0); - TreeViewColumn discsColumn = new TreeViewColumn("File", discsCell, "text", 0); - TreeViewColumn disksColumn = new TreeViewColumn("File", disksCell, "text", 0); + TreeViewColumn discsColumn = new TreeViewColumn("File", discsCell, "text", 0); + TreeViewColumn disksColumn = new TreeViewColumn("File", disksCell, "text", 0); - treeKeywords.Model = lstKeywords; - treeBarcodes.Model = lstBarcodes; - treeCategories.Model = lstCategories; + treeKeywords.Model = lstKeywords; + treeBarcodes.Model = lstBarcodes; + treeCategories.Model = lstCategories; treeSubcategories.Model = lstSubcategories; - treeLanguages.Model = lstLanguages; - treeSystems.Model = lstSystems; + treeLanguages.Model = lstLanguages; + treeSystems.Model = lstSystems; treeArchitectures.Model = lstArchitectures; - treeDiscs.Model = lstDiscs; - treeDisks.Model = lstDisks; + treeDiscs.Model = lstDiscs; + treeDisks.Model = lstDisks; treeKeywords.AppendColumn(keywordsColumn); treeBarcodes.AppendColumn(barcodesColumn); @@ -126,15 +128,15 @@ namespace osrepodbmgr treeDiscs.AppendColumn(discsColumn); treeDisks.AppendColumn(disksColumn); - treeKeywords.Selection.Mode = SelectionMode.Single; - treeBarcodes.Selection.Mode = SelectionMode.Single; - treeCategories.Selection.Mode = SelectionMode.Single; + treeKeywords.Selection.Mode = SelectionMode.Single; + treeBarcodes.Selection.Mode = SelectionMode.Single; + treeCategories.Selection.Mode = SelectionMode.Single; treeSubcategories.Selection.Mode = SelectionMode.Single; - treeLanguages.Selection.Mode = SelectionMode.Single; - treeSystems.Selection.Mode = SelectionMode.Single; + treeLanguages.Selection.Mode = SelectionMode.Single; + treeSystems.Selection.Mode = SelectionMode.Single; treeArchitectures.Selection.Mode = SelectionMode.Single; - treeDiscs.Selection.Mode = SelectionMode.Single; - treeDisks.Selection.Mode = SelectionMode.Single; + treeDiscs.Selection.Mode = SelectionMode.Single; + treeDisks.Selection.Mode = SelectionMode.Single; CellRendererText textCell = new CellRendererText(); @@ -227,7 +229,7 @@ namespace osrepodbmgr void FillFilesCombos() { - foreach(KeyValuePair files in Context.hashes) + foreach(KeyValuePair files in Context.Hashes) { lstFilesForDisc.AppendValues(files.Key); lstFilesForDisk.AppendValues(files.Key); @@ -238,330 +240,235 @@ namespace osrepodbmgr { // TODO: Check that files are not already added as disks lstFilesForDisc.Clear(); - foreach(KeyValuePair files in Context.hashes) - lstFilesForDisc.AppendValues(files.Key); + foreach(KeyValuePair files in Context.Hashes) lstFilesForDisc.AppendValues(files.Key); } void FillDiskCombos() { // TODO: Check that files are not already added as discs lstFilesForDisk.Clear(); - foreach(KeyValuePair files in Context.hashes) - lstFilesForDisk.AppendValues(files.Key); + foreach(KeyValuePair files in Context.Hashes) lstFilesForDisk.AppendValues(files.Key); } public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; if(Metadata.Developer != null) - { foreach(string developer in Metadata.Developer) { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) - txtDeveloper.Text += ","; - txtDeveloper.Text += developer; + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; } - } if(Metadata.Publisher != null) - { foreach(string publisher in Metadata.Publisher) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += publisher; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += publisher; } - } if(Metadata.Author != null) - { foreach(string author in Metadata.Author) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += author; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += author; } - } if(Metadata.Performer != null) - { foreach(string performer in Metadata.Performer) { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) - txtPublisher.Text += ","; - txtPublisher.Text += performer; + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += performer; } - } - txtName.Text = Metadata.Name; - txtVersion.Text = Metadata.Version; - txtPartNumber.Text = Metadata.PartNumber; + txtName.Text = Metadata.Name; + txtVersion.Text = Metadata.Version; + txtPartNumber.Text = Metadata.PartNumber; txtSerialNumber.Text = Metadata.SerialNumber; if(Metadata.ReleaseTypeSpecified) { chkBoxUnknownReleaseType.Active = false; - cmbReleaseType.Sensitive = true; - TreeIter iter; - cmbReleaseType.Model.GetIterFirst(out iter); + cmbReleaseType.Sensitive = true; + cmbReleaseType.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbReleaseType.Model.GetValue(iter, 0) == Metadata.ReleaseType.ToString()) - { - cmbReleaseType.SetActiveIter(iter); - break; - } + if((string)cmbReleaseType.Model.GetValue(iter, 0) != Metadata.ReleaseType.ToString()) continue; + + cmbReleaseType.SetActiveIter(iter); + break; } while(cmbReleaseType.Model.IterNext(ref iter)); } if(Metadata.ReleaseDateSpecified) { - chkReleaseDate.Active = false; + chkReleaseDate.Active = false; cldReleaseDate.Sensitive = true; - cldReleaseDate.Date = Metadata.ReleaseDate; + cldReleaseDate.Date = Metadata.ReleaseDate; } if(Metadata.Keywords != null) - { foreach(string keyword in Metadata.Keywords) lstKeywords.AppendValues(keyword); - } if(Metadata.Categories != null) - { foreach(string category in Metadata.Categories) lstCategories.AppendValues(category); - } if(Metadata.Subcategories != null) - { foreach(string subcategory in Metadata.Subcategories) lstSubcategories.AppendValues(subcategory); - } if(Metadata.Languages != null) - { foreach(LanguagesTypeLanguage language in Metadata.Languages) { lstLanguages.AppendValues(language.ToString()); - TreeIter iter; - cmbLanguages.Model.GetIterFirst(out iter); + cmbLanguages.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbLanguages.Model.GetValue(iter, 0) == language.ToString()) - { - lstLanguageTypes.Remove(ref iter); - break; - } + if((string)cmbLanguages.Model.GetValue(iter, 0) != language.ToString()) continue; + + lstLanguageTypes.Remove(ref iter); + break; } while(cmbLanguages.Model.IterNext(ref iter)); } - } if(Metadata.Systems != null) - { foreach(string system in Metadata.Systems) lstSystems.AppendValues(system); - } if(Metadata.Architectures != null) - { foreach(ArchitecturesTypeArchitecture architecture in Metadata.Architectures) { lstArchitectures.AppendValues(architecture.ToString()); - TreeIter iter; - cmbArchitectures.Model.GetIterFirst(out iter); + cmbArchitectures.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbArchitectures.Model.GetValue(iter, 0) == architecture.ToString()) - { - lstArchitecturesTypes.Remove(ref iter); - break; - } + if((string)cmbArchitectures.Model.GetValue(iter, 0) != architecture.ToString()) continue; + + lstArchitecturesTypes.Remove(ref iter); + break; } while(cmbArchitectures.Model.IterNext(ref iter)); } - } if(Metadata.OpticalDisc != null) - { foreach(OpticalDiscType disc in Metadata.OpticalDisc) { lstDiscs.AppendValues(disc.Image.Value, disc); - List files = new List(); - files.Add(disc.Image.Value); - if(disc.ADIP != null) - files.Add(disc.ADIP.Image); - if(disc.ATIP != null) - files.Add(disc.ATIP.Image); - if(disc.BCA != null) - files.Add(disc.BCA.Image); - if(disc.CMI != null) - files.Add(disc.CMI.Image); - if(disc.DCB != null) - files.Add(disc.DCB.Image); - if(disc.DDS != null) - files.Add(disc.DDS.Image); - if(disc.DMI != null) - files.Add(disc.DMI.Image); - if(disc.LastRMD != null) - files.Add(disc.LastRMD.Image); - if(disc.LeadIn != null) - { - foreach(BorderType border in disc.LeadIn) - files.Add(border.Image); - } - if(disc.LeadInCdText != null) - files.Add(disc.LeadInCdText.Image); - if(disc.LeadOut != null) - { - foreach(BorderType border in disc.LeadOut) - files.Add(border.Image); - } - if(disc.MediaID != null) - files.Add(disc.MediaID.Image); - if(disc.PAC != null) - files.Add(disc.PAC.Image); - if(disc.PFI != null) - files.Add(disc.PFI.Image); - if(disc.PFIR != null) - files.Add(disc.PFIR.Image); - if(disc.PMA != null) - files.Add(disc.PMA.Image); - if(disc.PRI != null) - files.Add(disc.PRI.Image); - if(disc.SAI != null) - files.Add(disc.SAI.Image); - if(disc.TOC != null) - files.Add(disc.TOC.Image); - if(disc.Track != null) - { - foreach(TrackType track in disc.Track) - files.Add(track.Image.Value); - } + List files = new List {disc.Image.Value}; + if(disc.ADIP != null) files.Add(disc.ADIP.Image); + if(disc.ATIP != null) files.Add(disc.ATIP.Image); + if(disc.BCA != null) files.Add(disc.BCA.Image); + if(disc.CMI != null) files.Add(disc.CMI.Image); + if(disc.DCB != null) files.Add(disc.DCB.Image); + if(disc.DDS != null) files.Add(disc.DDS.Image); + if(disc.DMI != null) files.Add(disc.DMI.Image); + if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); + if(disc.LeadIn != null) files.AddRange(disc.LeadIn.Select(border => border.Image)); + if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) files.AddRange(disc.LeadOut.Select(border => border.Image)); + if(disc.MediaID != null) files.Add(disc.MediaID.Image); + if(disc.PAC != null) files.Add(disc.PAC.Image); + if(disc.PFI != null) files.Add(disc.PFI.Image); + if(disc.PFIR != null) files.Add(disc.PFIR.Image); + if(disc.PMA != null) files.Add(disc.PMA.Image); + if(disc.PRI != null) files.Add(disc.PRI.Image); + if(disc.SAI != null) files.Add(disc.SAI.Image); + if(disc.TOC != null) files.Add(disc.TOC.Image); + if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); foreach(string file in files) { - TreeIter iter; - cmbFilesForNewDisc.Model.GetIterFirst(out iter); + cmbFilesForNewDisc.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisc.SetActiveIter(iter); - cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); - break; - } + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; } while(cmbFilesForNewDisc.Model.IterNext(ref iter)); cmbFilesForNewDisk.Model.GetIterFirst(out iter); do { - if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisk.SetActiveIter(iter); - cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); - break; - } + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; } while(cmbFilesForNewDisk.Model.IterNext(ref iter)); } } - } if(Metadata.BlockMedia != null) - { foreach(BlockMediaType disk in Metadata.BlockMedia) { lstDisks.AppendValues(disk.Image.Value, disk); - List files = new List(); - files.Add(disk.Image.Value); - if(disk.ATA != null && disk.ATA.Identify != null) - files.Add(disk.ATA.Identify.Image); - if(disk.MAM != null) - files.Add(disk.MAM.Image); - if(disk.PCI != null && disk.PCI.ExpansionROM != null) - files.Add(disk.PCI.ExpansionROM.Image.Value); - if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) - files.Add(disk.PCMCIA.CIS.Image); - if(disk.SCSI != null) + List files = new List {disk.Image.Value}; + if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) files.Add(disk.MAM.Image); + if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image); + if(disk.SCSI != null) { - if(disk.SCSI.Inquiry != null) - files.Add(disk.SCSI.Inquiry.Image); - if(disk.SCSI.LogSense != null) - files.Add(disk.SCSI.LogSense.Image); - if(disk.SCSI.ModeSense != null) - files.Add(disk.SCSI.ModeSense.Image); - if(disk.SCSI.ModeSense10 != null) - files.Add(disk.SCSI.ModeSense10.Image); - if(disk.SCSI.EVPD != null) - { - foreach(EVPDType evpd in disk.SCSI.EVPD) - files.Add(evpd.Image); - } + if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); + if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); + if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); + if(disk.SCSI.EVPD != null) files.AddRange(disk.SCSI.EVPD.Select(evpd => evpd.Image)); } + if(disk.SecureDigital != null) { - if(disk.SecureDigital.CID != null) - files.Add(disk.SecureDigital.CID.Image); - if(disk.SecureDigital.CSD != null) - files.Add(disk.SecureDigital.CSD.Image); - if(disk.MultiMediaCard.ExtendedCSD != null) - files.Add(disk.MultiMediaCard.ExtendedCSD.Image); + if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); + if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); } + if(disk.TapeInformation != null) - { - foreach(TapePartitionType tapePart in disk.TapeInformation) - files.Add(tapePart.Image.Value); - } - if(disk.Track != null) - { - foreach(BlockTrackType track in disk.Track) - files.Add(track.Image.Value); - } - if(disk.USB != null && disk.USB.Descriptors != null) - files.Add(disk.USB.Descriptors.Image); + files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); + if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); + if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); foreach(string file in files) { - TreeIter iter; - cmbFilesForNewDisc.Model.GetIterFirst(out iter); + cmbFilesForNewDisc.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisc.SetActiveIter(iter); - cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); - break; - } + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; } while(cmbFilesForNewDisc.Model.IterNext(ref iter)); cmbFilesForNewDisk.Model.GetIterFirst(out iter); do { - if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisk.SetActiveIter(iter); - cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); - break; - } + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; } while(cmbFilesForNewDisk.Model.IterNext(ref iter)); } } - } - magazines = Metadata.Magazine; - books = Metadata.Book; + magazines = Metadata.Magazine; + books = Metadata.Book; requiredOses = Metadata.RequiredOperatingSystems; - usermanuals = Metadata.UserManual; - adverts = Metadata.Advertisement; + usermanuals = Metadata.UserManual; + adverts = Metadata.Advertisement; linearmedias = Metadata.LinearMedia; - pcis = Metadata.PCICard; - audiomedias = Metadata.AudioMedia; + pcis = Metadata.PCICard; + audiomedias = Metadata.AudioMedia; } protected void OnChkBoxUnknownReleaseTypeToggled(object sender, EventArgs e) @@ -582,9 +489,7 @@ namespace osrepodbmgr protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeKeywords.Selection.GetSelected(out selectedIter)) - lstKeywords.Remove(ref selectedIter); + if(treeKeywords.Selection.GetSelected(out TreeIter selectedIter)) lstKeywords.Remove(ref selectedIter); } protected void OnBtnClearKeywordsClicked(object sender, EventArgs e) @@ -594,12 +499,10 @@ namespace osrepodbmgr protected void OnBtnAddBarcodeClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(cmbBarcodes.GetActiveIter(out selectedIter)) - { - lstBarcodes.AppendValues(txtNewBarcode.Text, (string)cmbBarcodes.Model.GetValue(selectedIter, 0)); - txtNewBarcode.Text = ""; - } + if(!cmbBarcodes.GetActiveIter(out TreeIter selectedIter)) return; + + lstBarcodes.AppendValues(txtNewBarcode.Text, (string)cmbBarcodes.Model.GetValue(selectedIter, 0)); + txtNewBarcode.Text = ""; } protected void OnBtnClearBarcodesClicked(object sender, EventArgs e) @@ -609,9 +512,7 @@ namespace osrepodbmgr protected void OnBtnRemoveBarcodeClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeBarcodes.Selection.GetSelected(out selectedIter)) - lstBarcodes.Remove(ref selectedIter); + if(treeBarcodes.Selection.GetSelected(out TreeIter selectedIter)) lstBarcodes.Remove(ref selectedIter); } protected void OnBtnAddCategoryClicked(object sender, EventArgs e) @@ -628,8 +529,7 @@ namespace osrepodbmgr protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeSubcategories.Selection.GetSelected(out selectedIter)) + if(treeSubcategories.Selection.GetSelected(out TreeIter selectedIter)) lstSubcategories.Remove(ref selectedIter); } @@ -640,9 +540,7 @@ namespace osrepodbmgr protected void OnBtnRemoveCategoryClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeCategories.Selection.GetSelected(out selectedIter)) - lstCategories.Remove(ref selectedIter); + if(treeCategories.Selection.GetSelected(out TreeIter selectedIter)) lstCategories.Remove(ref selectedIter); } protected void OnBtnClearCategoriesClicked(object sender, EventArgs e) @@ -652,23 +550,19 @@ namespace osrepodbmgr protected void OnBtnAddLanguagesClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(cmbLanguages.GetActiveIter(out selectedIter)) - { - lstLanguages.AppendValues((string)cmbLanguages.Model.GetValue(selectedIter, 0)); - cmbLanguages.SetActiveIter(selectedIter); - lstLanguageTypes.Remove(ref selectedIter); - } + if(!cmbLanguages.GetActiveIter(out TreeIter selectedIter)) return; + + lstLanguages.AppendValues((string)cmbLanguages.Model.GetValue(selectedIter, 0)); + cmbLanguages.SetActiveIter(selectedIter); + lstLanguageTypes.Remove(ref selectedIter); } protected void OnBtnRemoveLanguageClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeLanguages.Selection.GetSelected(out selectedIter)) - { - lstLanguageTypes.AppendValues((string)lstLanguages.GetValue(selectedIter, 0)); - lstLanguages.Remove(ref selectedIter); - } + if(!treeLanguages.Selection.GetSelected(out TreeIter selectedIter)) return; + + lstLanguageTypes.AppendValues((string)lstLanguages.GetValue(selectedIter, 0)); + lstLanguages.Remove(ref selectedIter); } protected void OnBtnClearLanguagesClicked(object sender, EventArgs e) @@ -690,20 +584,16 @@ namespace osrepodbmgr protected void OnBtnRemoveSystemsClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeSystems.Selection.GetSelected(out selectedIter)) - lstSystems.Remove(ref selectedIter); + if(treeSystems.Selection.GetSelected(out TreeIter selectedIter)) lstSystems.Remove(ref selectedIter); } protected void OnBtnAddArchitectureClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(cmbArchitectures.GetActiveIter(out selectedIter)) - { - lstArchitectures.AppendValues((string)cmbArchitectures.Model.GetValue(selectedIter, 0)); - cmbArchitectures.SetActiveIter(selectedIter); - lstArchitecturesTypes.Remove(ref selectedIter); - } + if(!cmbArchitectures.GetActiveIter(out TreeIter selectedIter)) return; + + lstArchitectures.AppendValues((string)cmbArchitectures.Model.GetValue(selectedIter, 0)); + cmbArchitectures.SetActiveIter(selectedIter); + lstArchitecturesTypes.Remove(ref selectedIter); } protected void OnBtnClearArchitecturesClicked(object sender, EventArgs e) @@ -714,47 +604,44 @@ namespace osrepodbmgr protected void OnBtnRemoveArchitectureClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeArchitectures.Selection.GetSelected(out selectedIter)) - { - lstArchitecturesTypes.AppendValues((string)lstArchitectures.GetValue(selectedIter, 0)); - lstArchitectures.Remove(ref selectedIter); - } + if(!treeArchitectures.Selection.GetSelected(out TreeIter selectedIter)) return; + + lstArchitecturesTypes.AppendValues((string)lstArchitectures.GetValue(selectedIter, 0)); + lstArchitectures.Remove(ref selectedIter); } protected void OnBtnAddDiscClicked(object sender, EventArgs e) { - Context.selectedFile = cmbFilesForNewDisc.ActiveText; - notebook3.GetNthPage(0).Visible = false; - notebook3.GetNthPage(1).Visible = false; - notebook3.GetNthPage(2).Visible = false; - notebook3.GetNthPage(3).Visible = false; - notebook3.GetNthPage(4).Visible = false; - notebook3.GetNthPage(5).Visible = false; - notebook3.GetNthPage(6).Visible = false; - notebook3.GetNthPage(8).Visible = false; - prgAddDisc1.Visible = true; - prgAddDisc2.Visible = true; - buttonCancel.Visible = false; - buttonOk.Visible = false; - btnEditDisc.Visible = false; - btnClearDiscs.Visible = false; - Core.Workers.Failed += OnDiscAddFailed; - Core.Workers.Finished += OnDiscAddFinished; - Core.Workers.UpdateProgress += UpdateDiscProgress1; - Core.Workers.UpdateProgress2 += UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = true; - btnAddDisc.Visible = false; - btnRemoveDiscs.Visible = false; - thdDisc = new Thread(Core.Workers.AddMedia); + Context.SelectedFile = cmbFilesForNewDisc.ActiveText; + notebook3.GetNthPage(0).Visible = false; + notebook3.GetNthPage(1).Visible = false; + notebook3.GetNthPage(2).Visible = false; + notebook3.GetNthPage(3).Visible = false; + notebook3.GetNthPage(4).Visible = false; + notebook3.GetNthPage(5).Visible = false; + notebook3.GetNthPage(6).Visible = false; + notebook3.GetNthPage(8).Visible = false; + prgAddDisc1.Visible = true; + prgAddDisc2.Visible = true; + buttonCancel.Visible = false; + buttonOk.Visible = false; + btnEditDisc.Visible = false; + btnClearDiscs.Visible = false; + Workers.Failed += OnDiscAddFailed; + Workers.Finished += OnDiscAddFinished; + Workers.UpdateProgress += UpdateDiscProgress1; + Workers.UpdateProgress2 += UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = true; + btnAddDisc.Visible = false; + btnRemoveDiscs.Visible = false; + thdDisc = new Thread(Workers.AddMedia); thdDisc.Start(); } protected void OnBtnStopAddDiscClicked(object sender, EventArgs e) { - if(thdDisc != null) - thdDisc.Abort(); + thdDisc?.Abort(); stopped = true; OnDiscAddFailed(null); } @@ -763,11 +650,9 @@ namespace osrepodbmgr { Application.Invoke(delegate { - prgAddDisc1.Text = text + inner; - if(maximum > 0) - prgAddDisc1.Fraction = current / (double)maximum; - else - prgAddDisc1.Pulse(); + prgAddDisc1.Text = text + inner; + if(maximum > 0) prgAddDisc1.Fraction = current / (double)maximum; + else prgAddDisc1.Pulse(); }); } @@ -775,11 +660,9 @@ namespace osrepodbmgr { Application.Invoke(delegate { - prgAddDisc2.Text = text + inner; - if(maximum > 0) - prgAddDisc2.Fraction = current / (double)maximum; - else - prgAddDisc2.Pulse(); + prgAddDisc2.Text = text + inner; + if(maximum > 0) prgAddDisc2.Fraction = current / (double)maximum; + else prgAddDisc2.Pulse(); }); } @@ -789,34 +672,36 @@ namespace osrepodbmgr { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - Context.selectedFile = ""; - notebook3.GetNthPage(0).Visible = true; - notebook3.GetNthPage(1).Visible = true; - notebook3.GetNthPage(2).Visible = true; - notebook3.GetNthPage(3).Visible = true; - notebook3.GetNthPage(4).Visible = true; - notebook3.GetNthPage(5).Visible = true; - notebook3.GetNthPage(6).Visible = true; - notebook3.GetNthPage(8).Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - buttonCancel.Visible = true; - buttonOk.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; - Core.Workers.Failed -= OnDiscAddFailed; - Core.Workers.Finished -= OnDiscAddFinished; - Core.Workers.UpdateProgress -= UpdateDiscProgress1; - Core.Workers.UpdateProgress2 -= UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDiscs.Visible = true; - thdDisc = null; + + Context.SelectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(8).Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + buttonCancel.Visible = true; + buttonOk.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; + Workers.Failed -= OnDiscAddFailed; + Workers.Finished -= OnDiscAddFinished; + Workers.UpdateProgress -= UpdateDiscProgress1; + Workers.UpdateProgress2 -= UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDiscs.Visible = true; + thdDisc = null; }); } @@ -824,116 +709,83 @@ namespace osrepodbmgr { Application.Invoke(delegate { - if(Context.workingDisc == null) - return; + if(Context.WorkingDisc == null) return; - OpticalDiscType disc = Context.workingDisc; + OpticalDiscType disc = Context.WorkingDisc; - lstDiscs.AppendValues(Context.selectedFile, disc); + lstDiscs.AppendValues(Context.SelectedFile, disc); List files = new List(); files.Add(disc.Image.Value); - if(disc.ADIP != null) - files.Add(disc.ADIP.Image); - if(disc.ATIP != null) - files.Add(disc.ATIP.Image); - if(disc.BCA != null) - files.Add(disc.BCA.Image); - if(disc.CMI != null) - files.Add(disc.CMI.Image); - if(disc.DCB != null) - files.Add(disc.DCB.Image); - if(disc.DDS != null) - files.Add(disc.DDS.Image); - if(disc.DMI != null) - files.Add(disc.DMI.Image); - if(disc.LastRMD != null) - files.Add(disc.LastRMD.Image); - if(disc.LeadIn != null) - { - foreach(BorderType border in disc.LeadIn) - files.Add(border.Image); - } - if(disc.LeadInCdText != null) - files.Add(disc.LeadInCdText.Image); - if(disc.LeadOut != null) - { - foreach(BorderType border in disc.LeadOut) - files.Add(border.Image); - } - if(disc.MediaID != null) - files.Add(disc.MediaID.Image); - if(disc.PAC != null) - files.Add(disc.PAC.Image); - if(disc.PFI != null) - files.Add(disc.PFI.Image); - if(disc.PFIR != null) - files.Add(disc.PFIR.Image); - if(disc.PMA != null) - files.Add(disc.PMA.Image); - if(disc.PRI != null) - files.Add(disc.PRI.Image); - if(disc.SAI != null) - files.Add(disc.SAI.Image); - if(disc.TOC != null) - files.Add(disc.TOC.Image); - if(disc.Track != null) - { - foreach(TrackType track in disc.Track) - files.Add(track.Image.Value); - } + if(disc.ADIP != null) files.Add(disc.ADIP.Image); + if(disc.ATIP != null) files.Add(disc.ATIP.Image); + if(disc.BCA != null) files.Add(disc.BCA.Image); + if(disc.CMI != null) files.Add(disc.CMI.Image); + if(disc.DCB != null) files.Add(disc.DCB.Image); + if(disc.DDS != null) files.Add(disc.DDS.Image); + if(disc.DMI != null) files.Add(disc.DMI.Image); + if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); + if(disc.LeadIn != null) files.AddRange(disc.LeadIn.Select(border => border.Image)); + if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) files.AddRange(disc.LeadOut.Select(border => border.Image)); + if(disc.MediaID != null) files.Add(disc.MediaID.Image); + if(disc.PAC != null) files.Add(disc.PAC.Image); + if(disc.PFI != null) files.Add(disc.PFI.Image); + if(disc.PFIR != null) files.Add(disc.PFIR.Image); + if(disc.PMA != null) files.Add(disc.PMA.Image); + if(disc.PRI != null) files.Add(disc.PRI.Image); + if(disc.SAI != null) files.Add(disc.SAI.Image); + if(disc.TOC != null) files.Add(disc.TOC.Image); + if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); foreach(string file in files) { - TreeIter iter; - cmbFilesForNewDisc.Model.GetIterFirst(out iter); + cmbFilesForNewDisc.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisc.SetActiveIter(iter); - cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); - break; - } + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; } while(cmbFilesForNewDisc.Model.IterNext(ref iter)); cmbFilesForNewDisk.Model.GetIterFirst(out iter); do { - if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisk.SetActiveIter(iter); - cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); - break; - } + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; } while(cmbFilesForNewDisk.Model.IterNext(ref iter)); } - Context.selectedFile = ""; - notebook3.GetNthPage(0).Visible = true; - notebook3.GetNthPage(1).Visible = true; - notebook3.GetNthPage(2).Visible = true; - notebook3.GetNthPage(3).Visible = true; - notebook3.GetNthPage(4).Visible = true; - notebook3.GetNthPage(5).Visible = true; - notebook3.GetNthPage(6).Visible = true; - notebook3.GetNthPage(8).Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - buttonCancel.Visible = true; - buttonOk.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; - Core.Workers.Failed -= OnDiscAddFailed; - Core.Workers.Finished -= OnDiscAddFinished; - Core.Workers.UpdateProgress -= UpdateDiscProgress1; - Core.Workers.UpdateProgress2 -= UpdateDiscProgress2; - Context.workingDisc = null; - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDiscs.Visible = true; - thdDisc = null; + Context.SelectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(8).Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + buttonCancel.Visible = true; + buttonOk.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; + Workers.Failed -= OnDiscAddFailed; + Workers.Finished -= OnDiscAddFinished; + Workers.UpdateProgress -= UpdateDiscProgress1; + Workers.UpdateProgress2 -= UpdateDiscProgress2; + Context.WorkingDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDiscs.Visible = true; + thdDisc = null; }); } @@ -945,48 +797,45 @@ namespace osrepodbmgr protected void OnBtnRemoveDiscsClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeDiscs.Selection.GetSelected(out selectedIter)) - { - cmbFilesForNewDisc.AppendText((string)lstDiscs.GetValue(selectedIter, 0)); - cmbFilesForNewDisk.AppendText((string)lstDiscs.GetValue(selectedIter, 0)); - lstDiscs.Remove(ref selectedIter); - } + if(!treeDiscs.Selection.GetSelected(out TreeIter selectedIter)) return; + + cmbFilesForNewDisc.AppendText((string)lstDiscs.GetValue(selectedIter, 0)); + cmbFilesForNewDisk.AppendText((string)lstDiscs.GetValue(selectedIter, 0)); + lstDiscs.Remove(ref selectedIter); } protected void OnBtnAddDiskClicked(object sender, EventArgs e) { - Context.selectedFile = cmbFilesForNewDisk.ActiveText; - notebook3.GetNthPage(0).Visible = false; - notebook3.GetNthPage(1).Visible = false; - notebook3.GetNthPage(2).Visible = false; - notebook3.GetNthPage(3).Visible = false; - notebook3.GetNthPage(4).Visible = false; - notebook3.GetNthPage(5).Visible = false; - notebook3.GetNthPage(6).Visible = false; - notebook3.GetNthPage(7).Visible = false; - prgAddDisk1.Visible = true; - prgAddDisk2.Visible = true; - buttonCancel.Visible = false; - buttonOk.Visible = false; - btnEditDisk.Visible = false; - btnClearDisks.Visible = false; - Core.Workers.Failed += OnDiskAddFailed; - Core.Workers.Finished += OnDiskAddFinished; - Core.Workers.UpdateProgress += UpdateDiskProgress1; - Core.Workers.UpdateProgress2 += UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = true; - btnAddDisk.Visible = false; - btnRemoveDisk.Visible = false; - thdDisk = new Thread(Core.Workers.AddMedia); + Context.SelectedFile = cmbFilesForNewDisk.ActiveText; + notebook3.GetNthPage(0).Visible = false; + notebook3.GetNthPage(1).Visible = false; + notebook3.GetNthPage(2).Visible = false; + notebook3.GetNthPage(3).Visible = false; + notebook3.GetNthPage(4).Visible = false; + notebook3.GetNthPage(5).Visible = false; + notebook3.GetNthPage(6).Visible = false; + notebook3.GetNthPage(7).Visible = false; + prgAddDisk1.Visible = true; + prgAddDisk2.Visible = true; + buttonCancel.Visible = false; + buttonOk.Visible = false; + btnEditDisk.Visible = false; + btnClearDisks.Visible = false; + Workers.Failed += OnDiskAddFailed; + Workers.Finished += OnDiskAddFinished; + Workers.UpdateProgress += UpdateDiskProgress1; + Workers.UpdateProgress2 += UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = true; + btnAddDisk.Visible = false; + btnRemoveDisk.Visible = false; + thdDisk = new Thread(Workers.AddMedia); thdDisk.Start(); } protected void OnBtnStopAddDiskClicked(object sender, EventArgs e) { - if(thdDisk != null) - thdDisk.Abort(); + thdDisk?.Abort(); stopped = true; OnDiskAddFailed(null); } @@ -995,11 +844,9 @@ namespace osrepodbmgr { Application.Invoke(delegate { - prgAddDisk1.Text = text + inner; - if(maximum > 0) - prgAddDisk1.Fraction = current / (double)maximum; - else - prgAddDisk1.Pulse(); + prgAddDisk1.Text = text + inner; + if(maximum > 0) prgAddDisk1.Fraction = current / (double)maximum; + else prgAddDisk1.Pulse(); }); } @@ -1007,11 +854,9 @@ namespace osrepodbmgr { Application.Invoke(delegate { - prgAddDisk2.Text = text + inner; - if(maximum > 0) - prgAddDisk2.Fraction = current / (double)maximum; - else - prgAddDisk2.Pulse(); + prgAddDisk2.Text = text + inner; + if(maximum > 0) prgAddDisk2.Fraction = current / (double)maximum; + else prgAddDisk2.Pulse(); }); } @@ -1021,34 +866,36 @@ namespace osrepodbmgr { if(!stopped) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); } - Context.selectedFile = ""; - notebook3.GetNthPage(0).Visible = true; - notebook3.GetNthPage(1).Visible = true; - notebook3.GetNthPage(2).Visible = true; - notebook3.GetNthPage(3).Visible = true; - notebook3.GetNthPage(4).Visible = true; - notebook3.GetNthPage(5).Visible = true; - notebook3.GetNthPage(6).Visible = true; - notebook3.GetNthPage(7).Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - buttonCancel.Visible = true; - buttonOk.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; - Core.Workers.Failed -= OnDiskAddFailed; - Core.Workers.Finished -= OnDiskAddFinished; - Core.Workers.UpdateProgress -= UpdateDiskProgress1; - Core.Workers.UpdateProgress2 -= UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + + Context.SelectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(7).Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + buttonCancel.Visible = true; + buttonOk.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; + Workers.Failed -= OnDiskAddFailed; + Workers.Finished -= OnDiskAddFinished; + Workers.UpdateProgress -= UpdateDiskProgress1; + Workers.UpdateProgress2 -= UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } @@ -1056,112 +903,89 @@ namespace osrepodbmgr { Application.Invoke(delegate { - if(Context.workingDisk == null) - return; + if(Context.WorkingDisk == null) return; - BlockMediaType disk = Context.workingDisk; + BlockMediaType disk = Context.WorkingDisk; lstDisks.AppendValues(disk.Image.Value, disk); List files = new List(); files.Add(disk.Image.Value); - if(disk.ATA != null && disk.ATA.Identify != null) - files.Add(disk.ATA.Identify.Image); - if(disk.MAM != null) - files.Add(disk.MAM.Image); - if(disk.PCI != null && disk.PCI.ExpansionROM != null) - files.Add(disk.PCI.ExpansionROM.Image.Value); - if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) - files.Add(disk.PCMCIA.CIS.Image); - if(disk.SCSI != null) + if(disk.ATA != null && disk.ATA.Identify != null) files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) files.Add(disk.MAM.Image); + if(disk.PCI != null && disk.PCI.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA != null && disk.PCMCIA.CIS != null) files.Add(disk.PCMCIA.CIS.Image); + if(disk.SCSI != null) { - if(disk.SCSI.Inquiry != null) - files.Add(disk.SCSI.Inquiry.Image); - if(disk.SCSI.LogSense != null) - files.Add(disk.SCSI.LogSense.Image); - if(disk.SCSI.ModeSense != null) - files.Add(disk.SCSI.ModeSense.Image); - if(disk.SCSI.ModeSense10 != null) - files.Add(disk.SCSI.ModeSense10.Image); - if(disk.SCSI.EVPD != null) - { + if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); + if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); + if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); + if(disk.SCSI.EVPD != null) foreach(EVPDType evpd in disk.SCSI.EVPD) files.Add(evpd.Image); - } } + if(disk.SecureDigital != null) { - if(disk.SecureDigital.CID != null) - files.Add(disk.SecureDigital.CID.Image); - if(disk.SecureDigital.CSD != null) - files.Add(disk.SecureDigital.CSD.Image); - if(disk.MultiMediaCard.ExtendedCSD != null) - files.Add(disk.MultiMediaCard.ExtendedCSD.Image); + if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); + if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); } + if(disk.TapeInformation != null) - { - foreach(TapePartitionType tapePart in disk.TapeInformation) - files.Add(tapePart.Image.Value); - } - if(disk.Track != null) - { - foreach(BlockTrackType track in disk.Track) - files.Add(track.Image.Value); - } - if(disk.USB != null && disk.USB.Descriptors != null) - files.Add(disk.USB.Descriptors.Image); + files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); + if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); + if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); foreach(string file in files) { - TreeIter iter; - cmbFilesForNewDisc.Model.GetIterFirst(out iter); + cmbFilesForNewDisc.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisc.SetActiveIter(iter); - cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); - break; - } + if((string)cmbFilesForNewDisc.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisc.SetActiveIter(iter); + cmbFilesForNewDisc.RemoveText(cmbFilesForNewDisc.Active); + break; } while(cmbFilesForNewDisc.Model.IterNext(ref iter)); cmbFilesForNewDisk.Model.GetIterFirst(out iter); do { - if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) == file) - { - cmbFilesForNewDisk.SetActiveIter(iter); - cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); - break; - } + if((string)cmbFilesForNewDisk.Model.GetValue(iter, 0) != file) continue; + + cmbFilesForNewDisk.SetActiveIter(iter); + cmbFilesForNewDisk.RemoveText(cmbFilesForNewDisk.Active); + break; } while(cmbFilesForNewDisk.Model.IterNext(ref iter)); } - Context.selectedFile = ""; - notebook3.GetNthPage(0).Visible = true; - notebook3.GetNthPage(1).Visible = true; - notebook3.GetNthPage(2).Visible = true; - notebook3.GetNthPage(3).Visible = true; - notebook3.GetNthPage(4).Visible = true; - notebook3.GetNthPage(5).Visible = true; - notebook3.GetNthPage(6).Visible = true; - notebook3.GetNthPage(7).Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - buttonCancel.Visible = true; - buttonOk.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; - Core.Workers.Failed -= OnDiskAddFailed; - Core.Workers.Finished -= OnDiskAddFinished; - Core.Workers.UpdateProgress -= UpdateDiskProgress1; - Core.Workers.UpdateProgress2 -= UpdateDiskProgress2; - Context.workingDisk = null; - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + Context.SelectedFile = ""; + notebook3.GetNthPage(0).Visible = true; + notebook3.GetNthPage(1).Visible = true; + notebook3.GetNthPage(2).Visible = true; + notebook3.GetNthPage(3).Visible = true; + notebook3.GetNthPage(4).Visible = true; + notebook3.GetNthPage(5).Visible = true; + notebook3.GetNthPage(6).Visible = true; + notebook3.GetNthPage(7).Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + buttonCancel.Visible = true; + buttonOk.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; + Workers.Failed -= OnDiskAddFailed; + Workers.Finished -= OnDiskAddFinished; + Workers.UpdateProgress -= UpdateDiskProgress1; + Workers.UpdateProgress2 -= UpdateDiskProgress2; + Context.WorkingDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } @@ -1173,179 +997,133 @@ namespace osrepodbmgr protected void OnBtnRemoveDiskClicked(object sender, EventArgs e) { - TreeIter selectedIter; - if(treeDisks.Selection.GetSelected(out selectedIter)) - { - cmbFilesForNewDisk.AppendText((string)lstDisks.GetValue(selectedIter, 0)); - cmbFilesForNewDisc.AppendText((string)lstDisks.GetValue(selectedIter, 0)); - lstDisks.Remove(ref selectedIter); - } + if(!treeDisks.Selection.GetSelected(out TreeIter selectedIter)) return; + + cmbFilesForNewDisk.AppendText((string)lstDisks.GetValue(selectedIter, 0)); + cmbFilesForNewDisc.AppendText((string)lstDisks.GetValue(selectedIter, 0)); + lstDisks.Remove(ref selectedIter); } protected void OnButtonOkClicked(object sender, EventArgs e) { - Metadata = new CICMMetadataType(); + Metadata = new CICMMetadataType(); List architectures = new List(); - List barcodes = new List(); - List disks = new List(); - List categories = new List(); - List keywords = new List(); - List languages = new List(); - List discs = new List(); - List subcategories = new List(); - List systems = new List(); + List barcodes = new List(); + List disks = new List(); + List categories = new List(); + List keywords = new List(); + List languages = new List(); + List discs = new List(); + List subcategories = new List(); + List systems = new List(); - if(!string.IsNullOrEmpty(txtAuthor.Text)) - Metadata.Author = txtAuthor.Text.Split(','); - if(!string.IsNullOrEmpty(txtDeveloper.Text)) - Metadata.Developer = txtDeveloper.Text.Split(','); - if(!string.IsNullOrEmpty(txtName.Text)) - Metadata.Name = txtName.Text; - if(!string.IsNullOrEmpty(txtPartNumber.Text)) - Metadata.PartNumber = txtPartNumber.Text; - if(!string.IsNullOrEmpty(txtPerformer.Text)) - Metadata.Performer = txtPerformer.Text.Split(','); - if(!string.IsNullOrEmpty(txtPublisher.Text)) - Metadata.Publisher = txtPublisher.Text.Split(','); - if(!string.IsNullOrEmpty(txtSerialNumber.Text)) - Metadata.SerialNumber = txtSerialNumber.Text; - if(!string.IsNullOrEmpty(txtVersion.Text)) - Metadata.Version = txtVersion.Text; + if(!string.IsNullOrEmpty(txtAuthor.Text)) Metadata.Author = txtAuthor.Text.Split(','); + if(!string.IsNullOrEmpty(txtDeveloper.Text)) Metadata.Developer = txtDeveloper.Text.Split(','); + if(!string.IsNullOrEmpty(txtName.Text)) Metadata.Name = txtName.Text; + if(!string.IsNullOrEmpty(txtPartNumber.Text)) Metadata.PartNumber = txtPartNumber.Text; + if(!string.IsNullOrEmpty(txtPerformer.Text)) Metadata.Performer = txtPerformer.Text.Split(','); + if(!string.IsNullOrEmpty(txtPublisher.Text)) Metadata.Publisher = txtPublisher.Text.Split(','); + if(!string.IsNullOrEmpty(txtSerialNumber.Text)) Metadata.SerialNumber = txtSerialNumber.Text; + if(!string.IsNullOrEmpty(txtVersion.Text)) Metadata.Version = txtVersion.Text; if(!chkReleaseDate.Active) { - Metadata.ReleaseDate = cldReleaseDate.Date; + Metadata.ReleaseDate = cldReleaseDate.Date; Metadata.ReleaseDateSpecified = true; } + if(!chkBoxUnknownReleaseType.Active) { - Metadata.ReleaseType = (CICMMetadataTypeReleaseType)Enum.Parse(typeof(CICMMetadataTypeReleaseType), cmbReleaseType.ActiveText); + Metadata.ReleaseType = + (CICMMetadataTypeReleaseType)Enum.Parse(typeof(CICMMetadataTypeReleaseType), + cmbReleaseType.ActiveText); Metadata.ReleaseTypeSpecified = true; } - TreeIter iter; - - if(lstArchitectures.GetIterFirst(out iter)) - { + if(lstArchitectures.GetIterFirst(out TreeIter iter)) do - { - architectures.Add((ArchitecturesTypeArchitecture)Enum.Parse(typeof(ArchitecturesTypeArchitecture), (string)lstArchitectures.GetValue(iter, 0))); - } + architectures.Add((ArchitecturesTypeArchitecture)Enum.Parse(typeof(ArchitecturesTypeArchitecture), + (string)lstArchitectures + .GetValue(iter, 0))); while(lstArchitectures.IterNext(ref iter)); - } if(lstBarcodes.GetIterFirst(out iter)) - { do { - BarcodeType barcode = new BarcodeType(); - barcode.type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), (string)lstBarcodes.GetValue(iter, 1)); - barcode.Value = (string)lstBarcodes.GetValue(iter, 0); + BarcodeType barcode = new BarcodeType + { + type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), + (string)lstBarcodes.GetValue(iter, 1)), + Value = (string)lstBarcodes.GetValue(iter, 0) + }; barcodes.Add(barcode); } while(lstBarcodes.IterNext(ref iter)); - } if(lstDisks.GetIterFirst(out iter)) - { do - { disks.Add((BlockMediaType)lstDisks.GetValue(iter, 1)); - } while(lstDisks.IterNext(ref iter)); - } if(lstCategories.GetIterFirst(out iter)) - { do - { categories.Add((string)lstCategories.GetValue(iter, 0)); - } while(lstCategories.IterNext(ref iter)); - } if(lstKeywords.GetIterFirst(out iter)) - { do - { keywords.Add((string)lstKeywords.GetValue(iter, 0)); - } while(lstKeywords.IterNext(ref iter)); - } if(lstLanguages.GetIterFirst(out iter)) - { do - { - languages.Add((LanguagesTypeLanguage)Enum.Parse(typeof(LanguagesTypeLanguage), (string)lstLanguages.GetValue(iter, 0))); - } + languages.Add((LanguagesTypeLanguage)Enum.Parse(typeof(LanguagesTypeLanguage), + (string)lstLanguages.GetValue(iter, 0))); while(lstLanguages.IterNext(ref iter)); - } if(lstDiscs.GetIterFirst(out iter)) - { do - { discs.Add((OpticalDiscType)lstDiscs.GetValue(iter, 1)); - } while(lstDiscs.IterNext(ref iter)); - } if(lstSubcategories.GetIterFirst(out iter)) - { do - { subcategories.Add((string)lstSubcategories.GetValue(iter, 0)); - } while(lstSubcategories.IterNext(ref iter)); - } if(lstSystems.GetIterFirst(out iter)) - { do - { systems.Add((string)lstSystems.GetValue(iter, 0)); - } while(lstSystems.IterNext(ref iter)); - } - if(architectures.Count > 0) - Metadata.Architectures = architectures.ToArray(); - if(barcodes.Count > 0) - Metadata.Barcodes = barcodes.ToArray(); - if(disks.Count > 0) - Metadata.BlockMedia = disks.ToArray(); - if(categories.Count > 0) - Metadata.Categories = categories.ToArray(); - if(keywords.Count > 0) - Metadata.Keywords = keywords.ToArray(); - if(languages.Count > 0) - Metadata.Languages = languages.ToArray(); - if(discs.Count > 0) - Metadata.OpticalDisc = discs.ToArray(); - if(subcategories.Count > 0) - Metadata.Subcategories = subcategories.ToArray(); - if(systems.Count > 0) - Metadata.Systems = systems.ToArray(); + if(architectures.Count > 0) Metadata.Architectures = architectures.ToArray(); + if(barcodes.Count > 0) Metadata.Barcodes = barcodes.ToArray(); + if(disks.Count > 0) Metadata.BlockMedia = disks.ToArray(); + if(categories.Count > 0) Metadata.Categories = categories.ToArray(); + if(keywords.Count > 0) Metadata.Keywords = keywords.ToArray(); + if(languages.Count > 0) Metadata.Languages = languages.ToArray(); + if(discs.Count > 0) Metadata.OpticalDisc = discs.ToArray(); + if(subcategories.Count > 0) Metadata.Subcategories = subcategories.ToArray(); + if(systems.Count > 0) Metadata.Systems = systems.ToArray(); - Metadata.Magazine = magazines; - Metadata.Book = books; + Metadata.Magazine = magazines; + Metadata.Book = books; Metadata.RequiredOperatingSystems = requiredOses; - Metadata.UserManual = usermanuals; - Metadata.Advertisement = adverts; - Metadata.LinearMedia = linearmedias; - Metadata.PCICard = pcis; - Metadata.AudioMedia = audiomedias; + Metadata.UserManual = usermanuals; + Metadata.Advertisement = adverts; + Metadata.LinearMedia = linearmedias; + Metadata.PCICard = pcis; + Metadata.AudioMedia = audiomedias; } protected void OnBtnEditDiscClicked(object sender, EventArgs e) { - TreeIter discIter; - if(!treeDiscs.Selection.GetSelected(out discIter)) - return; + if(!treeDiscs.Selection.GetSelected(out TreeIter discIter)) return; - dlgOpticalDisc _dlgOpticalDisc = new dlgOpticalDisc(); - _dlgOpticalDisc.Title = string.Format("Editing disc metadata for {0}", (string)lstDiscs.GetValue(discIter, 0)); - _dlgOpticalDisc.Metadata = (OpticalDiscType)lstDiscs.GetValue(discIter, 1); + dlgOpticalDisc _dlgOpticalDisc = new dlgOpticalDisc + { + Title = $"Editing disc metadata for {(string)lstDiscs.GetValue(discIter, 0)}", + Metadata = (OpticalDiscType)lstDiscs.GetValue(discIter, 1) + }; _dlgOpticalDisc.FillFields(); if(_dlgOpticalDisc.Run() == (int)ResponseType.Ok) @@ -1359,13 +1137,13 @@ namespace osrepodbmgr protected void OnBtnEditDiskClicked(object sender, EventArgs e) { - TreeIter diskIter; - if(!treeDisks.Selection.GetSelected(out diskIter)) - return; + if(!treeDisks.Selection.GetSelected(out TreeIter diskIter)) return; - dlgBlockMedia _dlgBlockMedia = new dlgBlockMedia(); - _dlgBlockMedia.Title = string.Format("Editing disk metadata for {0}", (string)lstDisks.GetValue(diskIter, 0)); - _dlgBlockMedia.Metadata = (BlockMediaType)lstDisks.GetValue(diskIter, 1); + dlgBlockMedia _dlgBlockMedia = new dlgBlockMedia + { + Title = $"Editing disk metadata for {(string)lstDisks.GetValue(diskIter, 0)}", + Metadata = (BlockMediaType)lstDisks.GetValue(diskIter, 1) + }; _dlgBlockMedia.FillFields(); if(_dlgBlockMedia.Run() == (int)ResponseType.Ok) @@ -1377,4 +1155,4 @@ namespace osrepodbmgr _dlgBlockMedia.Destroy(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgOpticalDisc.cs b/osrepodbmgr/dlgOpticalDisc.cs index 6f77d85..c994959 100644 --- a/osrepodbmgr/dlgOpticalDisc.cs +++ b/osrepodbmgr/dlgOpticalDisc.cs @@ -25,61 +25,62 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using Gtk; using Schemas; +using ImageType = Schemas.ImageType; namespace osrepodbmgr { public partial class dlgOpticalDisc : Dialog { - public OpticalDiscType Metadata; - - TreeIter trackIter; - TreeIter partitionIter; - TreeIter filesystemIter; - TreeIter dumpHwIter; - - ListStore lstDumpHw; - ListStore lstTOC; - ListStore lstCDText; - ListStore lstATIP; - ListStore lstPMA; - ListStore lstPFI; - ListStore lstDMI; - ListStore lstCMI; - ListStore lstBCA; - ListStore lstDCB; - ListStore lstPRI; - ListStore lstMediaID; - ListStore lstPFIR; - ListStore lstLastRMD; - ListStore lstADIP; - ListStore lstDDS; - ListStore lstSAI; - ListStore lstDI; - ListStore lstPAC; - ListStore lstRingCodes; - ListStore lstMasteringSIDs; - ListStore lstToolstamps; - ListStore lstMouldSIDs; - ListStore lstMouldTexts; - ListStore lstLayerTypes; - ListStore lstLayers; - ListStore lstLeadIns; - ListStore lstLeadOuts; - ListStore lstXboxSS; - ListStore lstTracks; - ListStore lstTrackTypes; - - bool editingPartition; - bool editingDumpHw; - // Non-editable fields ChecksumType[] checksums; - CaseType mediaCase; - ScansType scans; + TreeIter dumpHwIter; + bool editingDumpHw; + + bool editingPartition; + TreeIter filesystemIter; + ListStore lstADIP; + ListStore lstATIP; + ListStore lstBCA; + ListStore lstCDText; + ListStore lstCMI; + ListStore lstDCB; + ListStore lstDDS; + ListStore lstDI; + ListStore lstDMI; + + ListStore lstDumpHw; + ListStore lstLastRMD; + ListStore lstLayers; + ListStore lstLayerTypes; + ListStore lstLeadIns; + ListStore lstLeadOuts; + ListStore lstMasteringSIDs; + ListStore lstMediaID; + ListStore lstMouldSIDs; + ListStore lstMouldTexts; + ListStore lstPAC; + ListStore lstPFI; + ListStore lstPFIR; + ListStore lstPMA; + ListStore lstPRI; + ListStore lstRingCodes; + ListStore lstSAI; + ListStore lstTOC; + ListStore lstToolstamps; + ListStore lstTracks; + ListStore lstTrackTypes; + ListStore lstXboxSS; + CaseType mediaCase; + public OpticalDiscType Metadata; + TreeIter partitionIter; + ScansType scans; + + TreeIter trackIter; XboxType xbox; public dlgOpticalDisc() @@ -87,21 +88,20 @@ namespace osrepodbmgr Build(); #region Set partitions table - CellRendererText partSequenceCell = new CellRendererText(); - CellRendererText partStartCell = new CellRendererText(); - CellRendererText partEndCell = new CellRendererText(); - CellRendererText partTypeCell = new CellRendererText(); - CellRendererText partNameCell = new CellRendererText(); + CellRendererText partSequenceCell = new CellRendererText(); + CellRendererText partStartCell = new CellRendererText(); + CellRendererText partEndCell = new CellRendererText(); + CellRendererText partTypeCell = new CellRendererText(); + CellRendererText partNameCell = new CellRendererText(); CellRendererText partDescriptionCell = new CellRendererText(); - TreeViewColumn partSequenceColumn = new TreeViewColumn("Sequence", partSequenceCell, "text", 0); - TreeViewColumn partStartColumn = new TreeViewColumn("Start", partStartCell, "text", 1); - TreeViewColumn partEndColumn = new TreeViewColumn("End", partEndCell, "text", 2); - TreeViewColumn partTypeColumn = new TreeViewColumn("Type", partTypeCell, "text", 3); - TreeViewColumn partNameColumn = new TreeViewColumn("Name", partNameCell, "text", 4); + TreeViewColumn partSequenceColumn = new TreeViewColumn("Sequence", partSequenceCell, "text", 0); + TreeViewColumn partStartColumn = new TreeViewColumn("Start", partStartCell, "text", 1); + TreeViewColumn partEndColumn = new TreeViewColumn("End", partEndCell, "text", 2); + TreeViewColumn partTypeColumn = new TreeViewColumn("Type", partTypeCell, "text", 3); + TreeViewColumn partNameColumn = new TreeViewColumn("Name", partNameCell, "text", 4); TreeViewColumn partDescriptionColumn = new TreeViewColumn("Description", partDescriptionCell, "text", 5); - treePartitions.AppendColumn(partSequenceColumn); treePartitions.AppendColumn(partStartColumn); treePartitions.AppendColumn(partEndColumn); @@ -113,35 +113,36 @@ namespace osrepodbmgr #endregion Set partitions table #region Set filesystems table - CellRendererText fsTypeCell = new CellRendererText(); - CellRendererText fsNameCell = new CellRendererText(); - TreeViewColumn fsTypeColumn = new TreeViewColumn("Type", fsTypeCell, "text", 0); - TreeViewColumn fsNameColumn = new TreeViewColumn("Name", fsNameCell, "text", 1); + CellRendererText fsTypeCell = new CellRendererText(); + CellRendererText fsNameCell = new CellRendererText(); + TreeViewColumn fsTypeColumn = new TreeViewColumn("Type", fsTypeCell, "text", 0); + TreeViewColumn fsNameColumn = new TreeViewColumn("Name", fsNameCell, "text", 1); treeFilesystems.AppendColumn(fsTypeColumn); treeFilesystems.AppendColumn(fsNameColumn); treeFilesystems.Selection.Mode = SelectionMode.Single; #endregion Set filesystems table #region Set dump hardware table - lstDumpHw = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(ListStore)); + lstDumpHw = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(ListStore)); CellRendererText hwManufacturerCell = new CellRendererText(); - CellRendererText hwModelCell = new CellRendererText(); - CellRendererText hwRevisionCell = new CellRendererText(); - CellRendererText hwFirmwareCell = new CellRendererText(); - CellRendererText hwSerialCell = new CellRendererText(); - CellRendererText swNameCell = new CellRendererText(); - CellRendererText swVersionCell = new CellRendererText(); - CellRendererText swOSCell = new CellRendererText(); + CellRendererText hwModelCell = new CellRendererText(); + CellRendererText hwRevisionCell = new CellRendererText(); + CellRendererText hwFirmwareCell = new CellRendererText(); + CellRendererText hwSerialCell = new CellRendererText(); + CellRendererText swNameCell = new CellRendererText(); + CellRendererText swVersionCell = new CellRendererText(); + CellRendererText swOSCell = new CellRendererText(); - TreeViewColumn hwManufacturerColumn = new TreeViewColumn("Manufacturer", hwManufacturerCell, "text", 0); - TreeViewColumn hwModelColumn = new TreeViewColumn("Model", hwModelCell, "text", 1); - TreeViewColumn hwRevisionColumn = new TreeViewColumn("Revision", hwRevisionCell, "text", 2); - TreeViewColumn hwFirmwareColumn = new TreeViewColumn("Firmware", hwFirmwareCell, "text", 3); - TreeViewColumn hwSerialColumn = new TreeViewColumn("Serial", hwSerialCell, "text", 4); - TreeViewColumn swNameColumn = new TreeViewColumn("Software", swNameCell, "text", 5); - TreeViewColumn swVersionColumn = new TreeViewColumn("Version", swVersionCell, "text", 6); - TreeViewColumn swOSColumn = new TreeViewColumn("Operating system", swOSCell, "text", 7); + TreeViewColumn hwManufacturerColumn = new TreeViewColumn("Manufacturer", hwManufacturerCell, "text", 0); + TreeViewColumn hwModelColumn = new TreeViewColumn("Model", hwModelCell, "text", 1); + TreeViewColumn hwRevisionColumn = new TreeViewColumn("Revision", hwRevisionCell, "text", 2); + TreeViewColumn hwFirmwareColumn = new TreeViewColumn("Firmware", hwFirmwareCell, "text", 3); + TreeViewColumn hwSerialColumn = new TreeViewColumn("Serial", hwSerialCell, "text", 4); + TreeViewColumn swNameColumn = new TreeViewColumn("Software", swNameCell, "text", 5); + TreeViewColumn swVersionColumn = new TreeViewColumn("Version", swVersionCell, "text", 6); + TreeViewColumn swOSColumn = new TreeViewColumn("Operating system", swOSCell, "text", 7); treeDumpHardware.Model = lstDumpHw; @@ -156,181 +157,181 @@ namespace osrepodbmgr treeDumpHardware.Selection.Mode = SelectionMode.Single; - CellRendererText extentStartCell = new CellRendererText(); - CellRendererText extentEndCell = new CellRendererText(); - TreeViewColumn extentStartColumn = new TreeViewColumn("Start", extentStartCell, "text", 0); - TreeViewColumn extentEndColumn = new TreeViewColumn("End", extentEndCell, "text", 1); + CellRendererText extentStartCell = new CellRendererText(); + CellRendererText extentEndCell = new CellRendererText(); + TreeViewColumn extentStartColumn = new TreeViewColumn("Start", extentStartCell, "text", 0); + TreeViewColumn extentEndColumn = new TreeViewColumn("End", extentEndCell, "text", 1); treeExtents.AppendColumn(extentStartColumn); treeExtents.AppendColumn(extentEndColumn); treeExtents.Selection.Mode = SelectionMode.Single; #endregion Set dump hardware table - CellRendererText fileCell = new CellRendererText(); - CellRendererText sizeCell = new CellRendererText(); - TreeViewColumn fileColumn = new TreeViewColumn("File", fileCell, "text", 0); - TreeViewColumn sizeColumn = new TreeViewColumn("Size", sizeCell, "text", 1); + CellRendererText fileCell = new CellRendererText(); + CellRendererText sizeCell = new CellRendererText(); + TreeViewColumn fileColumn = new TreeViewColumn("File", fileCell, "text", 0); + TreeViewColumn sizeColumn = new TreeViewColumn("Size", sizeCell, "text", 1); #region Set TOC table - lstTOC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstTOC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeTOC.Model = lstTOC; treeTOC.AppendColumn(fileColumn); treeTOC.AppendColumn(sizeColumn); #endregion Set TOC table #region Set CD-Text table - lstCDText = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstCDText = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeCDText.Model = lstCDText; treeCDText.AppendColumn(fileColumn); treeCDText.AppendColumn(sizeColumn); #endregion Set CD-Text table #region Set ATIP table - lstATIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstATIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeATIP.Model = lstATIP; treeATIP.AppendColumn(fileColumn); treeATIP.AppendColumn(sizeColumn); #endregion Set ATIP table #region Set PMA table - lstPMA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPMA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treePMA.Model = lstPMA; treePMA.AppendColumn(fileColumn); treePMA.AppendColumn(sizeColumn); #endregion Set PMA table #region Set PFI table - lstPFI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPFI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treePFI.Model = lstPFI; treePFI.AppendColumn(fileColumn); treePFI.AppendColumn(sizeColumn); #endregion Set PFI table #region Set DMI table - lstDMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstDMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeDMI.Model = lstDMI; treeDMI.AppendColumn(fileColumn); treeDMI.AppendColumn(sizeColumn); #endregion Set DMI table #region Set CMI table - lstCMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstCMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeCMI.Model = lstCMI; treeCMI.AppendColumn(fileColumn); treeCMI.AppendColumn(sizeColumn); #endregion Set CMI table #region Set BCA table - lstBCA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstBCA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeBCA.Model = lstBCA; treeBCA.AppendColumn(fileColumn); treeBCA.AppendColumn(sizeColumn); #endregion Set BCA table #region Set DCB table - lstDCB = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstDCB = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeDCB.Model = lstDCB; treeDCB.AppendColumn(fileColumn); treeDCB.AppendColumn(sizeColumn); #endregion Set DCB table #region Set PRI table - lstPRI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPRI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treePRI.Model = lstPRI; treePRI.AppendColumn(fileColumn); treePRI.AppendColumn(sizeColumn); #endregion Set PRI table #region Set MediaID table - lstMediaID = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstMediaID = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeMediaID.Model = lstMediaID; treeMediaID.AppendColumn(fileColumn); treeMediaID.AppendColumn(sizeColumn); #endregion Set MediaID table #region Set PFIR table - lstPFIR = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPFIR = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treePFIR.Model = lstPFIR; treePFIR.AppendColumn(fileColumn); treePFIR.AppendColumn(sizeColumn); #endregion Set PFIR table #region Set LastRMD table - lstLastRMD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstLastRMD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeLastRMD.Model = lstLastRMD; treeLastRMD.AppendColumn(fileColumn); treeLastRMD.AppendColumn(sizeColumn); #endregion Set LastRMD table #region Set ADIP table - lstADIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstADIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeADIP.Model = lstADIP; treeADIP.AppendColumn(fileColumn); treeADIP.AppendColumn(sizeColumn); #endregion Set ADIP table #region Set DDS table - lstDDS = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstDDS = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeDDS.Model = lstDDS; treeDDS.AppendColumn(fileColumn); treeDDS.AppendColumn(sizeColumn); #endregion Set DDS table #region Set SAI table - lstSAI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstSAI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeSAI.Model = lstSAI; treeSAI.AppendColumn(fileColumn); treeSAI.AppendColumn(sizeColumn); #endregion Set SAI table #region Set DI table - lstDI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstDI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treeDI.Model = lstDI; treeDI.AppendColumn(fileColumn); treeDI.AppendColumn(sizeColumn); #endregion Set DI table #region Set PAC table - lstPAC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); + lstPAC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[])); treePAC.Model = lstPAC; treePAC.AppendColumn(fileColumn); treePAC.AppendColumn(sizeColumn); #endregion Set PAC table - CellRendererText layerCell = new CellRendererText(); - CellRendererText codeCell = new CellRendererText(); - TreeViewColumn layerColumn = new TreeViewColumn("Layer", layerCell, "text", 0); - TreeViewColumn codeColumn = new TreeViewColumn("Code", codeCell, "text", 1); + CellRendererText layerCell = new CellRendererText(); + CellRendererText codeCell = new CellRendererText(); + TreeViewColumn layerColumn = new TreeViewColumn("Layer", layerCell, "text", 0); + TreeViewColumn codeColumn = new TreeViewColumn("Code", codeCell, "text", 1); #region Set ring code table - lstRingCodes = new ListStore(typeof(int), typeof(string)); + lstRingCodes = new ListStore(typeof(int), typeof(string)); treeRingCodes.Model = lstRingCodes; treeRingCodes.AppendColumn(layerColumn); treeRingCodes.AppendColumn(codeColumn); #endregion Set ring code table #region Set mastering sid table - lstMasteringSIDs = new ListStore(typeof(int), typeof(string)); + lstMasteringSIDs = new ListStore(typeof(int), typeof(string)); treeMasteringSIDs.Model = lstMasteringSIDs; treeMasteringSIDs.AppendColumn(layerColumn); treeMasteringSIDs.AppendColumn(codeColumn); #endregion Set mastering sid table #region Set toolstamp table - lstToolstamps = new ListStore(typeof(int), typeof(string)); + lstToolstamps = new ListStore(typeof(int), typeof(string)); treeToolstamps.Model = lstToolstamps; treeToolstamps.AppendColumn(layerColumn); treeToolstamps.AppendColumn(codeColumn); #endregion Set toolstamp table #region Set mould sid table - lstMouldSIDs = new ListStore(typeof(int), typeof(string)); + lstMouldSIDs = new ListStore(typeof(int), typeof(string)); treeMouldSIDs.Model = lstMouldSIDs; treeMouldSIDs.AppendColumn(layerColumn); treeMouldSIDs.AppendColumn(codeColumn); #endregion Set mould sid table #region Set mould text table - lstMouldTexts = new ListStore(typeof(int), typeof(string)); + lstMouldTexts = new ListStore(typeof(int), typeof(string)); treeMouldTexts.Model = lstMouldTexts; treeMouldTexts.AppendColumn(layerColumn); treeMouldTexts.AppendColumn(codeColumn); @@ -348,19 +349,19 @@ namespace osrepodbmgr #endregion Set layer type combo box #region Set layers table - CellRendererText layerSizeCell = new CellRendererText(); - TreeViewColumn layerSizeColumn = new TreeViewColumn("Sectors", layerSizeCell, "text", 1); - lstLayers = new ListStore(typeof(int), typeof(long)); - treeLayers.Model = lstLayers; + CellRendererText layerSizeCell = new CellRendererText(); + TreeViewColumn layerSizeColumn = new TreeViewColumn("Sectors", layerSizeCell, "text", 1); + lstLayers = new ListStore(typeof(int), typeof(long)); + treeLayers.Model = lstLayers; treeLayers.AppendColumn(layerColumn); treeLayers.AppendColumn(layerSizeColumn); #endregion Set layers table - CellRendererText sessionCell = new CellRendererText(); - TreeViewColumn sessionColumn = new TreeViewColumn("Session", sessionCell, "text", 2); + CellRendererText sessionCell = new CellRendererText(); + TreeViewColumn sessionColumn = new TreeViewColumn("Session", sessionCell, "text", 2); #region Set Lead-In table - lstLeadIns = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[])); + lstLeadIns = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[])); treeLeadIn.Model = lstLeadIns; treeLeadIn.AppendColumn(fileColumn); treeLeadIn.AppendColumn(sizeColumn); @@ -368,7 +369,7 @@ namespace osrepodbmgr #endregion Set Lead-In table #region Set Lead-Out table - lstLeadOuts = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[])); + lstLeadOuts = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[])); treeLeadOut.Model = lstLeadOuts; treeLeadOut.AppendColumn(fileColumn); treeLeadOut.AppendColumn(sizeColumn); @@ -376,35 +377,49 @@ namespace osrepodbmgr #endregion Set Lead-Out table #region Set tracks table - lstTracks = new ListStore(typeof(int), typeof(int), typeof(string), typeof(long), typeof(string), typeof(long), typeof(string), typeof(string), - typeof(long), typeof(long), typeof(string), typeof(int), typeof(string), typeof(ChecksumType[]), typeof(SubChannelType), - typeof(ListStore)); - CellRendererText trackSequenceCell = new CellRendererText(); + lstTracks = new ListStore(typeof(int), typeof(int), typeof(string), typeof(long), typeof(string), + typeof(long), typeof(string), typeof(string), typeof(long), typeof(long), + typeof(string), typeof(int), typeof(string), typeof(ChecksumType[]), + typeof(SubChannelType), typeof(ListStore)); + CellRendererText trackSequenceCell = new CellRendererText(); CellRendererText sessionSequenceCell = new CellRendererText(); - CellRendererText trackFileCell = new CellRendererText(); - CellRendererText trackFileSizeCell = new CellRendererText(); + CellRendererText trackFileCell = new CellRendererText(); + CellRendererText trackFileSizeCell = new CellRendererText(); CellRendererText trackFileFormatCell = new CellRendererText(); CellRendererText trackFileOffsetCell = new CellRendererText(); - CellRendererText trackMSFStartCell = new CellRendererText(); - CellRendererText trackMSFEndCell = new CellRendererText(); - CellRendererText trackStartCell = new CellRendererText(); - CellRendererText trackEndCell = new CellRendererText(); - CellRendererText trackTypeCell = new CellRendererText(); - CellRendererText trackBpsCell = new CellRendererText(); - CellRendererText trackAccoustCell = new CellRendererText(); - TreeViewColumn trackSequenceColumn = new TreeViewColumn("Track", trackSequenceCell, "text", 0); - TreeViewColumn sessionSequenceColumn = new TreeViewColumn("Session", sessionSequenceCell, "text", 1); - TreeViewColumn trackFileColumn = new TreeViewColumn("File", trackFileCell, "text", 2); - TreeViewColumn trackFileSizeColumn = new TreeViewColumn("Size", trackFileSizeCell, "text", 3); - TreeViewColumn trackFileFormatColumn = new TreeViewColumn("Format", trackFileFormatCell, "text", 4); - TreeViewColumn trackFileOffsetColumn = new TreeViewColumn("Offset", trackFileOffsetCell, "text", 5); - TreeViewColumn trackMSFStartColumn = new TreeViewColumn("MSF Start", trackMSFStartCell, "text", 6); - TreeViewColumn trackMSFEndColumn = new TreeViewColumn("MSF End", trackMSFEndCell, "text", 7); - TreeViewColumn trackStartColumn = new TreeViewColumn("LBA Start", trackStartCell, "text", 8); - TreeViewColumn trackEndColumn = new TreeViewColumn("LBA End", trackEndCell, "text", 9); - TreeViewColumn trackTypeColumn = new TreeViewColumn("Type", trackTypeCell, "text", 10); - TreeViewColumn trackBpsColumn = new TreeViewColumn("Bytes per sector", trackBpsCell, "text", 11); - TreeViewColumn trackAccoustColumn = new TreeViewColumn("Accoust ID", trackAccoustCell, "text", 12); + CellRendererText trackMSFStartCell = new CellRendererText(); + CellRendererText trackMSFEndCell = new CellRendererText(); + CellRendererText trackStartCell = new CellRendererText(); + CellRendererText trackEndCell = new CellRendererText(); + CellRendererText trackTypeCell = new CellRendererText(); + CellRendererText trackBpsCell = new CellRendererText(); + CellRendererText trackAccoustCell = new CellRendererText(); + TreeViewColumn trackSequenceColumn = + new TreeViewColumn("Track", trackSequenceCell, "text", 0); + TreeViewColumn sessionSequenceColumn = + new TreeViewColumn("Session", sessionSequenceCell, "text", 1); + TreeViewColumn trackFileColumn = + new TreeViewColumn("File", trackFileCell, "text", 2); + TreeViewColumn trackFileSizeColumn = + new TreeViewColumn("Size", trackFileSizeCell, "text", 3); + TreeViewColumn trackFileFormatColumn = + new TreeViewColumn("Format", trackFileFormatCell, "text", 4); + TreeViewColumn trackFileOffsetColumn = + new TreeViewColumn("Offset", trackFileOffsetCell, "text", 5); + TreeViewColumn trackMSFStartColumn = + new TreeViewColumn("MSF Start", trackMSFStartCell, "text", 6); + TreeViewColumn trackMSFEndColumn = + new TreeViewColumn("MSF End", trackMSFEndCell, "text", 7); + TreeViewColumn trackStartColumn = + new TreeViewColumn("LBA Start", trackStartCell, "text", 8); + TreeViewColumn trackEndColumn = + new TreeViewColumn("LBA End", trackEndCell, "text", 9); + TreeViewColumn trackTypeColumn = + new TreeViewColumn("Type", trackTypeCell, "text", 10); + TreeViewColumn trackBpsColumn = + new TreeViewColumn("Bytes per sector", trackBpsCell, "text", 11); + TreeViewColumn trackAccoustColumn = + new TreeViewColumn("Accoust ID", trackAccoustCell, "text", 12); treeTracks.Model = lstTracks; treeTracks.AppendColumn(trackSequenceColumn); treeTracks.AppendColumn(sessionSequenceColumn); @@ -432,226 +447,224 @@ namespace osrepodbmgr #endregion Set track type combo box spExtentStart.Adjustment.Upper = double.MaxValue; - spExtentEnd.Adjustment.Upper = double.MaxValue; + spExtentEnd.Adjustment.Upper = double.MaxValue; } public void FillFields() { - if(Metadata == null) - return; + if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; - if(Metadata.Image.offsetSpecified) - txtOffset.Text = Metadata.Image.offset.ToString(); - txtSize.Text = Metadata.Size.ToString(); + txtImage.Text = Metadata.Image.Value; + txtFormat.Text = Metadata.Image.format; + if(Metadata.Image.offsetSpecified) txtOffset.Text = Metadata.Image.offset.ToString(); + txtSize.Text = Metadata.Size.ToString(); if(Metadata.Sequence != null) { - lblDiscTitle.Visible = true; - lblDiscTitle.Visible = true; - lblSequence.Visible = true; - spSequence.Visible = true; - lblTotalMedia.Visible = true; - spTotalMedia.Visible = true; - lblSide.Visible = true; - spSide.Visible = true; - lblLayer.Visible = true; - spLayer1.Visible = true; - chkSequence.Active = true; - txtDiscTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; - if(Metadata.Sequence.SideSpecified) - spSide.Value = Metadata.Sequence.Side; - if(Metadata.Sequence.LayerSpecified) - spLayer1.Value = Metadata.Sequence.Layer; + lblDiscTitle.Visible = true; + lblDiscTitle.Visible = true; + lblSequence.Visible = true; + spSequence.Visible = true; + lblTotalMedia.Visible = true; + spTotalMedia.Visible = true; + lblSide.Visible = true; + spSide.Visible = true; + lblLayer.Visible = true; + spLayer1.Visible = true; + chkSequence.Active = true; + txtDiscTitle.Text = Metadata.Sequence.MediaTitle; + spSequence.Value = Metadata.Sequence.MediaSequence; + spTotalMedia.Value = Metadata.Sequence.TotalMedia; + if(Metadata.Sequence.SideSpecified) spSide.Value = Metadata.Sequence.Side; + if(Metadata.Sequence.LayerSpecified) spLayer1.Value = Metadata.Sequence.Layer; } if(Metadata.Layers != null) { - chkLayers.Active = true; + chkLayers.Active = true; frmLayers.Visible = true; - TreeIter layerIter; - cmbLayerType.Model.GetIterFirst(out layerIter); + cmbLayerType.Model.GetIterFirst(out TreeIter layerIter); do { - if((string)cmbLayerType.Model.GetValue(layerIter, 0) == Metadata.Layers.type.ToString()) - { - cmbLayerType.SetActiveIter(layerIter); - break; - } + if((string)cmbLayerType.Model.GetValue(layerIter, 0) != Metadata.Layers.type.ToString()) continue; + + cmbLayerType.SetActiveIter(layerIter); + break; } while(cmbLayerType.Model.IterNext(ref layerIter)); - foreach(SectorsType layer in Metadata.Layers.Sectors) - lstLayers.AppendValues(layer.layer, layer.Value); + foreach(SectorsType layer in Metadata.Layers.Sectors) lstLayers.AppendValues(layer.layer, layer.Value); } checksums = Metadata.Checksums; - xbox = Metadata.Xbox; + xbox = Metadata.Xbox; if(Metadata.RingCode != null) - { foreach(LayeredTextType ringcode in Metadata.RingCode) lstRingCodes.AppendValues(ringcode.layer, ringcode.Value); - } if(Metadata.MasteringSID != null) - { foreach(LayeredTextType masteringsid in Metadata.MasteringSID) lstMasteringSIDs.AppendValues(masteringsid.layer, masteringsid.Value); - } if(Metadata.Toolstamp != null) - { foreach(LayeredTextType toolstamp in Metadata.Toolstamp) lstToolstamps.AppendValues(toolstamp.layer, toolstamp.Value); - } if(Metadata.MouldSID != null) - { foreach(LayeredTextType mouldsid in Metadata.MouldSID) lstMouldSIDs.AppendValues(mouldsid.layer, mouldsid.Value); - } if(Metadata.MouldText != null) - { foreach(LayeredTextType mouldtext in Metadata.MouldText) lstMouldTexts.AppendValues(mouldtext.layer, mouldtext.Value); - } - if(Metadata.DiscType != null) - txtDiscType.Text = Metadata.DiscType; - if(Metadata.DiscSubType != null) - txtDiscSubType.Text = Metadata.DiscSubType; - if(Metadata.OffsetSpecified) - txtWriteOffset.Text = Metadata.Offset.ToString(); - txtMediaTracks.Text = Metadata.Tracks[0].ToString(); - txtMediaSessions.Text = Metadata.Sessions.ToString(); - if(Metadata.CopyProtection != null) - txtCopyProtection.Text = Metadata.CopyProtection; + if(Metadata.DiscType != null) txtDiscType.Text = Metadata.DiscType; + if(Metadata.DiscSubType != null) txtDiscSubType.Text = Metadata.DiscSubType; + if(Metadata.OffsetSpecified) txtWriteOffset.Text = Metadata.Offset.ToString(); + txtMediaTracks.Text = Metadata.Tracks[0].ToString(); + txtMediaSessions.Text = Metadata.Sessions.ToString(); + if(Metadata.CopyProtection != null) txtCopyProtection.Text = Metadata.CopyProtection; if(Metadata.Dimensions != null) { chkDimensions.Active = true; if(Metadata.Dimensions.DiameterSpecified) { - chkRound.Active = true; - lblDiameter.Visible = true; - spDiameter.Visible = true; + chkRound.Active = true; + lblDiameter.Visible = true; + spDiameter.Visible = true; lblDiameterUnits.Visible = true; - spDiameter.Value = Metadata.Dimensions.Diameter; + spDiameter.Value = Metadata.Dimensions.Diameter; } else { - lblHeight.Visible = true; - spHeight.Visible = true; + lblHeight.Visible = true; + spHeight.Visible = true; lblHeightUnits.Visible = true; - spHeight.Value = Metadata.Dimensions.Height; - lblWidth.Visible = true; - spWidth.Visible = true; - lblWidthUnits.Visible = true; - spWidth.Value = Metadata.Dimensions.Width; + spHeight.Value = Metadata.Dimensions.Height; + lblWidth.Visible = true; + spWidth.Visible = true; + lblWidthUnits.Visible = true; + spWidth.Value = Metadata.Dimensions.Width; } - lblThickness.Visible = true; - spThickness.Visible = true; + + lblThickness.Visible = true; + spThickness.Visible = true; lblThicknessUnits.Visible = true; - spThickness.Value = Metadata.Dimensions.Thickness; + spThickness.Value = Metadata.Dimensions.Thickness; } mediaCase = Metadata.Case; - scans = Metadata.Scans; + scans = Metadata.Scans; if(Metadata.PFI != null) { frmPFI.Visible = true; lstPFI.AppendValues(Metadata.PFI.Image, Metadata.PFI.Size, Metadata.PFI.Checksums); } + if(Metadata.DMI != null) { frmDMI.Visible = true; lstDMI.AppendValues(Metadata.DMI.Image, Metadata.DMI.Size, Metadata.DMI.Checksums); } + if(Metadata.CMI != null) { frmCMI.Visible = true; lstCMI.AppendValues(Metadata.CMI.Image, Metadata.CMI.Size, Metadata.CMI.Checksums); } + if(Metadata.BCA != null) { frmBCA.Visible = true; lstBCA.AppendValues(Metadata.BCA.Image, Metadata.BCA.Size, Metadata.BCA.Checksums); } + if(Metadata.ATIP != null) { frmATIP.Visible = true; lstATIP.AppendValues(Metadata.ATIP.Image, Metadata.ATIP.Size, Metadata.ATIP.Checksums); } + if(Metadata.ADIP != null) { frmADIP.Visible = true; lstADIP.AppendValues(Metadata.ADIP.Image, Metadata.ADIP.Size, Metadata.ADIP.Checksums); } + if(Metadata.PMA != null) { frmPMA.Visible = true; lstPMA.AppendValues(Metadata.PMA.Image, Metadata.PMA.Size, Metadata.PMA.Checksums); } + if(Metadata.DDS != null) { frmDDS.Visible = true; lstDDS.AppendValues(Metadata.DDS.Image, Metadata.DDS.Size, Metadata.DDS.Checksums); } + if(Metadata.SAI != null) { frmSAI.Visible = true; lstSAI.AppendValues(Metadata.SAI.Image, Metadata.SAI.Size, Metadata.SAI.Checksums); } + if(Metadata.LastRMD != null) { frmLastRMD.Visible = true; lstLastRMD.AppendValues(Metadata.LastRMD.Image, Metadata.LastRMD.Size, Metadata.LastRMD.Checksums); } + if(Metadata.PRI != null) { frmPRI.Visible = true; lstPRI.AppendValues(Metadata.PRI.Image, Metadata.PRI.Size, Metadata.PRI.Checksums); } + if(Metadata.MediaID != null) { frmMediaID.Visible = true; lstMediaID.AppendValues(Metadata.MediaID.Image, Metadata.MediaID.Size, Metadata.MediaID.Checksums); } + if(Metadata.PFIR != null) { frmPFIR.Visible = true; lstPFIR.AppendValues(Metadata.PFIR.Image, Metadata.PFIR.Size, Metadata.PFIR.Checksums); } + if(Metadata.DCB != null) { frmDCB.Visible = true; lstDCB.AppendValues(Metadata.DCB.Image, Metadata.DCB.Size, Metadata.DCB.Checksums); } + if(Metadata.DI != null) { frmDI.Visible = true; lstDI.AppendValues(Metadata.DI.Image, Metadata.DI.Size, Metadata.DI.Checksums); } + if(Metadata.PAC != null) { frmPAC.Visible = true; lstPAC.AppendValues(Metadata.PAC.Image, Metadata.PAC.Size, Metadata.PAC.Checksums); } + if(Metadata.TOC != null) { frmTOC.Visible = true; lstTOC.AppendValues(Metadata.TOC.Image, Metadata.TOC.Size, Metadata.TOC.Checksums); } + if(Metadata.LeadInCdText != null) { frmCDText.Visible = true; - lstCDText.AppendValues(Metadata.LeadInCdText.Image, Metadata.LeadInCdText.Size, Metadata.LeadInCdText.Checksums); + lstCDText.AppendValues(Metadata.LeadInCdText.Image, Metadata.LeadInCdText.Size, + Metadata.LeadInCdText.Checksums); } if(Metadata.LeadIn != null) @@ -660,6 +673,7 @@ namespace osrepodbmgr foreach(BorderType leadin in Metadata.LeadIn) lstLeadIns.AppendValues(leadin.Image, leadin.Size, leadin.session, leadin.Checksums); } + if(Metadata.LeadOut != null) { frmLeadOuts.Visible = true; @@ -669,106 +683,105 @@ namespace osrepodbmgr if(Metadata.PS3Encryption != null) { - txtPS3Key.Text = Metadata.PS3Encryption.Key; + txtPS3Key.Text = Metadata.PS3Encryption.Key; txtPS3Serial.Text = Metadata.PS3Encryption.Serial; } foreach(TrackType track in Metadata.Track) { - ListStore lstPartitions = new ListStore(typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), typeof(string), typeof(ListStore)); + ListStore lstPartitions = new ListStore(typeof(int), typeof(int), typeof(int), typeof(string), + typeof(string), typeof(string), typeof(ListStore)); if(track.FileSystemInformation != null) - { foreach(PartitionType partition in track.FileSystemInformation) { - ListStore lstFilesystems = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); + ListStore lstFilesystems = + new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); if(partition.FileSystems != null) - { foreach(FileSystemType fs in partition.FileSystems) lstFilesystems.AppendValues(fs.Type, fs.VolumeName, fs); - } - lstPartitions.AppendValues(partition.Sequence, partition.StartSector, partition.EndSector, partition.Type, partition.Name, partition.Description, lstFilesystems); + lstPartitions.AppendValues(partition.Sequence, partition.StartSector, partition.EndSector, + partition.Type, partition.Name, partition.Description, + lstFilesystems); } - } - - lstTracks.AppendValues(track.Sequence.TrackNumber, track.Sequence.Session, track.Image.Value, track.Size, track.Image.format, track.Image.offset, - track.StartMSF, track.EndMSF, track.StartSector, track.EndSector, track.TrackType1.ToString(), track.BytesPerSector, track.AccoustID, - track.Checksums, track.SubChannel, lstPartitions); + lstTracks.AppendValues(track.Sequence.TrackNumber, track.Sequence.Session, track.Image.Value, + track.Size, track.Image.format, track.Image.offset, track.StartMSF, track.EndMSF, + track.StartSector, track.EndSector, track.TrackType1.ToString(), + track.BytesPerSector, track.AccoustID, track.Checksums, track.SubChannel, + lstPartitions); } if(Metadata.DumpHardwareArray != null) { - chkDumpHardware.Active = true; - treeDumpHardware.Visible = true; - btnAddHardware.Visible = true; + chkDumpHardware.Active = true; + treeDumpHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; - btnEditHardware.Visible = true; + btnEditHardware.Visible = true; foreach(DumpHardwareType hw in Metadata.DumpHardwareArray) - { if(hw.Extents != null) { ListStore lstExtents = new ListStore(typeof(ulong), typeof(ulong)); - foreach(ExtentType extent in hw.Extents) - lstExtents.AppendValues(extent.Start, extent.End); + foreach(ExtentType extent in hw.Extents) lstExtents.AppendValues(extent.Start, extent.End); if(hw.Software != null) - lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, hw.Software.Name, hw.Software.Version, hw.Software.OperatingSystem, lstExtents); + lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, + hw.Software.Name, hw.Software.Version, hw.Software.OperatingSystem, + lstExtents); else - lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, null, null, null, lstExtents); + lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, null, + null, null, lstExtents); } - } } - } protected void OnChkSequencedToggled(object sender, EventArgs e) { - lblDiscTitle.Visible = chkSequence.Active; - txtDiscTitle.Visible = chkSequence.Active; - lblSequence.Visible = chkSequence.Active; - spSequence.Visible = chkSequence.Active; + lblDiscTitle.Visible = chkSequence.Active; + txtDiscTitle.Visible = chkSequence.Active; + lblSequence.Visible = chkSequence.Active; + spSequence.Visible = chkSequence.Active; lblTotalMedia.Visible = chkSequence.Active; - spTotalMedia.Visible = chkSequence.Active; - lblSide.Visible = chkSequence.Active; - spSide.Visible = chkSequence.Active; - lblLayer.Visible = chkSequence.Active; - spLayer1.Visible = chkSequence.Active; + spTotalMedia.Visible = chkSequence.Active; + lblSide.Visible = chkSequence.Active; + spSide.Visible = chkSequence.Active; + lblLayer.Visible = chkSequence.Active; + spLayer1.Visible = chkSequence.Active; } protected void OnChkDimensionsToggled(object sender, EventArgs e) { - chkRound.Visible = chkDimensions.Active; - lblThickness.Visible = chkDimensions.Active; - spThickness.Visible = chkDimensions.Active; + chkRound.Visible = chkDimensions.Active; + lblThickness.Visible = chkDimensions.Active; + spThickness.Visible = chkDimensions.Active; lblThicknessUnits.Visible = chkDimensions.Active; - if(chkDimensions.Active) - OnChkRoundToggled(sender, e); + if(chkDimensions.Active) OnChkRoundToggled(sender, e); else { - lblDiameter.Visible = false; - spDiameter.Visible = false; + lblDiameter.Visible = false; + spDiameter.Visible = false; lblDiameterUnits.Visible = false; - lblHeight.Visible = false; - spHeight.Visible = false; - lblHeightUnits.Visible = false; - lblWidth.Visible = false; - spWidth.Visible = false; - lblWidthUnits.Visible = false; + lblHeight.Visible = false; + spHeight.Visible = false; + lblHeightUnits.Visible = false; + lblWidth.Visible = false; + spWidth.Visible = false; + lblWidthUnits.Visible = false; } } protected void OnChkRoundToggled(object sender, EventArgs e) { - lblDiameter.Visible = chkRound.Active; - spDiameter.Visible = chkRound.Active; + lblDiameter.Visible = chkRound.Active; + spDiameter.Visible = chkRound.Active; lblDiameterUnits.Visible = chkRound.Active; - lblHeight.Visible = !chkRound.Active; - spHeight.Visible = !chkRound.Active; - lblHeightUnits.Visible = !chkRound.Active; - lblWidth.Visible = !chkRound.Active; - spWidth.Visible = !chkRound.Active; - lblWidthUnits.Visible = !chkRound.Active; + lblHeight.Visible = !chkRound.Active; + spHeight.Visible = !chkRound.Active; + lblHeightUnits.Visible = !chkRound.Active; + lblWidth.Visible = !chkRound.Active; + spWidth.Visible = !chkRound.Active; + lblWidthUnits.Visible = !chkRound.Active; } protected void OnChkLayersToggled(object sender, EventArgs e) @@ -779,32 +792,35 @@ namespace osrepodbmgr protected void OnBtnAddLayerClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - long ltmp; if(string.IsNullOrWhiteSpace(txtLayerSize.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must not be empty"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Layer size must not be empty"); dlgMsg.Run(); dlgMsg.Destroy(); } - if(!long.TryParse(txtLayerSize.Text, out ltmp)) + if(!long.TryParse(txtLayerSize.Text, out long ltmp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Layer size must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); } if(ltmp < 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be a positive"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Layer size must be a positive"); dlgMsg.Run(); dlgMsg.Destroy(); } if(ltmp == 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Layer size must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); } @@ -814,9 +830,7 @@ namespace osrepodbmgr protected void OnBtnRemoveLayerClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeLayers.Selection.GetSelected(out outIter)) - lstLayers.Remove(ref outIter); + if(treeLayers.Selection.GetSelected(out TreeIter outIter)) lstLayers.Remove(ref outIter); } protected void OnBtnRemovePartitionClicked(object sender, EventArgs e) @@ -827,35 +841,36 @@ namespace osrepodbmgr protected void OnBtnEditPartitionClicked(object sender, EventArgs e) { - if(!treePartitions.Selection.GetSelected(out partitionIter)) - return; + if(!treePartitions.Selection.GetSelected(out partitionIter)) return; spPartitionSequence.Value = (int)((ListStore)treePartitions.Model).GetValue(partitionIter, 0); - txtPartitionStart.Text = ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 1)).ToString(); - txtPartitionEnd.Text = ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 2)).ToString(); - txtPartitionType.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 3); - txtPartitionName.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 4); - txtPartitionDescription.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 5); - treeFilesystems.Model = (ListStore)((ListStore)treePartitions.Model).GetValue(partitionIter, 6); + txtPartitionStart.Text = + ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 1)).ToString(); + txtPartitionEnd.Text = + ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 2)).ToString(); + txtPartitionType.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 3); + txtPartitionName.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 4); + txtPartitionDescription.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 5); + treeFilesystems.Model = (ListStore)((ListStore)treePartitions.Model).GetValue(partitionIter, 6); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; - lblPartitionSequence.Visible = true; - spPartitionSequence.Visible = true; - lblPartitionStart.Visible = true; - txtPartitionStart.Visible = true; - lblPartitionEnd.Visible = true; - txtPartitionEnd.Visible = true; - lblPartitionType.Visible = true; - txtPartitionType.Visible = true; - lblPartitionName.Visible = true; - txtPartitionName.Visible = true; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; + lblPartitionSequence.Visible = true; + spPartitionSequence.Visible = true; + lblPartitionStart.Visible = true; + txtPartitionStart.Visible = true; + lblPartitionEnd.Visible = true; + txtPartitionEnd.Visible = true; + lblPartitionType.Visible = true; + txtPartitionType.Visible = true; + lblPartitionName.Visible = true; + txtPartitionName.Visible = true; lblPartitionDescription.Visible = true; txtPartitionDescription.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = true; } @@ -863,27 +878,29 @@ namespace osrepodbmgr protected void OnBtnApplyPartitionClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - int temp, temp2; if(spPartitionSequence.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition sequence must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition sequence must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(!int.TryParse(txtPartitionStart.Text, out temp)) + if(!int.TryParse(txtPartitionStart.Text, out int temp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition start must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition start must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(!int.TryParse(txtPartitionEnd.Text, out temp2)) + if(!int.TryParse(txtPartitionEnd.Text, out int temp2)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition end must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition end must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -891,66 +908,69 @@ namespace osrepodbmgr if(temp2 <= temp) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition must end after start, and be bigger than 1 sector"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Partition must end after start, and be bigger than 1 sector"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - if(editingPartition) - ((ListStore)treePartitions.Model).Remove(ref partitionIter); + if(editingPartition) ((ListStore)treePartitions.Model).Remove(ref partitionIter); - ((ListStore)treePartitions.Model).AppendValues(spPartitionSequence.ValueAsInt, int.Parse(txtPartitionStart.Text), int.Parse(txtPartitionEnd.Text), txtPartitionType.Text, - txtPartitionName.Text, txtPartitionDescription.Text, (ListStore)treeFilesystems.Model); + ((ListStore)treePartitions.Model).AppendValues(spPartitionSequence.ValueAsInt, + int.Parse(txtPartitionStart.Text), + int.Parse(txtPartitionEnd.Text), txtPartitionType.Text, + txtPartitionName.Text, txtPartitionDescription.Text, + (ListStore)treeFilesystems.Model); - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; - lblPartitionSequence.Visible = false; - spPartitionSequence.Visible = false; - lblPartitionStart.Visible = false; - txtPartitionStart.Visible = false; - lblPartitionEnd.Visible = false; - txtPartitionEnd.Visible = false; - lblPartitionType.Visible = false; - txtPartitionType.Visible = false; - lblPartitionName.Visible = false; - txtPartitionName.Visible = false; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; + lblPartitionSequence.Visible = false; + spPartitionSequence.Visible = false; + lblPartitionStart.Visible = false; + txtPartitionStart.Visible = false; + lblPartitionEnd.Visible = false; + txtPartitionEnd.Visible = false; + lblPartitionType.Visible = false; + txtPartitionType.Visible = false; + lblPartitionName.Visible = false; + txtPartitionName.Visible = false; lblPartitionDescription.Visible = false; txtPartitionDescription.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } protected void OnBtnAddPartitionClicked(object sender, EventArgs e) { - spPartitionSequence.Value = 0; - txtPartitionStart.Text = ""; - txtPartitionEnd.Text = ""; - txtPartitionType.Text = ""; - txtPartitionName.Text = ""; + spPartitionSequence.Value = 0; + txtPartitionStart.Text = ""; + txtPartitionEnd.Text = ""; + txtPartitionType.Text = ""; + txtPartitionName.Text = ""; txtPartitionDescription.Text = ""; - treeFilesystems.Model = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); + treeFilesystems.Model = new ListStore(typeof(string), typeof(string), typeof(FileSystemType)); - btnCancelPartition.Visible = true; - btnApplyPartition.Visible = true; - btnRemovePartition.Visible = false; - btnEditPartition.Visible = false; - btnAddPartition.Visible = false; - lblPartitionSequence.Visible = true; - spPartitionSequence.Visible = true; - lblPartitionStart.Visible = true; - txtPartitionStart.Visible = true; - lblPartitionEnd.Visible = true; - txtPartitionEnd.Visible = true; - lblPartitionType.Visible = true; - txtPartitionType.Visible = true; - lblPartitionName.Visible = true; - txtPartitionName.Visible = true; + btnCancelPartition.Visible = true; + btnApplyPartition.Visible = true; + btnRemovePartition.Visible = false; + btnEditPartition.Visible = false; + btnAddPartition.Visible = false; + lblPartitionSequence.Visible = true; + spPartitionSequence.Visible = true; + lblPartitionStart.Visible = true; + txtPartitionStart.Visible = true; + lblPartitionEnd.Visible = true; + txtPartitionEnd.Visible = true; + lblPartitionType.Visible = true; + txtPartitionType.Visible = true; + lblPartitionName.Visible = true; + txtPartitionName.Visible = true; lblPartitionDescription.Visible = true; txtPartitionDescription.Visible = true; - frmFilesystems.Visible = true; + frmFilesystems.Visible = true; editingPartition = false; } @@ -963,17 +983,20 @@ namespace osrepodbmgr protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) { - if(!treeFilesystems.Selection.GetSelected(out filesystemIter)) - return; + if(!treeFilesystems.Selection.GetSelected(out filesystemIter)) return; - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.Metadata = (FileSystemType)((ListStore)treeFilesystems.Model).GetValue(filesystemIter, 2); + dlgFilesystem _dlgFilesystem = new dlgFilesystem + { + Metadata = (FileSystemType)((ListStore)treeFilesystems.Model).GetValue(filesystemIter, 2) + }; _dlgFilesystem.FillFields(); if(_dlgFilesystem.Run() == (int)ResponseType.Ok) { ((ListStore)treeFilesystems.Model).Remove(ref filesystemIter); - ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata); + ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, + _dlgFilesystem.Metadata.VolumeName, + _dlgFilesystem.Metadata); } _dlgFilesystem.Destroy(); @@ -984,284 +1007,279 @@ namespace osrepodbmgr dlgFilesystem _dlgFilesystem = new dlgFilesystem(); if(_dlgFilesystem.Run() == (int)ResponseType.Ok) - ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata); + ((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, + _dlgFilesystem.Metadata.VolumeName, + _dlgFilesystem.Metadata); _dlgFilesystem.Destroy(); } protected void OnBtnCancelTrackClicked(object sender, EventArgs e) { - btnEditTrack.Visible = true; - btnApplyTrack.Visible = false; - btnCancelTrack.Visible = false; - frmPartitions.Visible = false; - lblTrackStart.Visible = false; - txtTrackStart.Visible = false; - lblTrackEnd.Visible = false; - txtTrackEnd.Visible = false; - lblMSFStart.Visible = false; - txtMSFStart.Visible = false; - lblMSFEnd.Visible = false; - txtMSFEnd.Visible = false; - lblTrackSequence.Visible = false; - txtTrackSequence.Visible = false; + btnEditTrack.Visible = true; + btnApplyTrack.Visible = false; + btnCancelTrack.Visible = false; + frmPartitions.Visible = false; + lblTrackStart.Visible = false; + txtTrackStart.Visible = false; + lblTrackEnd.Visible = false; + txtTrackEnd.Visible = false; + lblMSFStart.Visible = false; + txtMSFStart.Visible = false; + lblMSFEnd.Visible = false; + txtMSFEnd.Visible = false; + lblTrackSequence.Visible = false; + txtTrackSequence.Visible = false; lblSessionSequence.Visible = false; txtSessionSequence.Visible = false; - lblTrackType.Visible = false; - cmbTrackType.Visible = false; - txtBytesPerSector.Visible = false; - lblBytesPerSector.Visible = false; - lblAcoustID.Visible = false; - txtAcoustID.Visible = false; + lblTrackType.Visible = false; + cmbTrackType.Visible = false; + txtBytesPerSector.Visible = false; + lblBytesPerSector.Visible = false; + lblAcoustID.Visible = false; + txtAcoustID.Visible = false; } protected void OnBtnApplyTrackClicked(object sender, EventArgs e) { - string file = (string)lstTracks.GetValue(trackIter, 2); - long filesize = (long)lstTracks.GetValue(trackIter, 3); - string fileformat = (string)lstTracks.GetValue(trackIter, 4); - long fileoffset = (long)lstTracks.GetValue(trackIter, 5); - ChecksumType[] checksums = (ChecksumType[])lstTracks.GetValue(trackIter, 13); + string file = (string)lstTracks.GetValue(trackIter, 2); + long filesize = (long)lstTracks.GetValue(trackIter, 3); + string fileformat = (string)lstTracks.GetValue(trackIter, 4); + long fileoffset = (long)lstTracks.GetValue(trackIter, 5); + ChecksumType[] checksums = (ChecksumType[])lstTracks.GetValue(trackIter, 13); SubChannelType subchannel = (SubChannelType)lstTracks.GetValue(trackIter, 14); - TreeIter typeIter; string trackType; - if(cmbTrackType.GetActiveIter(out typeIter)) - trackType = ((string)cmbTrackType.Model.GetValue(typeIter, 0)); - else - trackType = TrackTypeTrackType.mode1.ToString(); + if(cmbTrackType.GetActiveIter(out TreeIter typeIter)) + trackType = (string)cmbTrackType.Model.GetValue(typeIter, 0); + else trackType = TrackTypeTrackType.mode1.ToString(); lstTracks.Remove(ref trackIter); - lstTracks.AppendValues(int.Parse(txtTrackSequence.Text), int.Parse(txtSessionSequence.Text), file, filesize, fileformat, fileoffset, - txtMSFStart.Text, txtMSFEnd.Text, long.Parse(txtTrackStart.Text), long.Parse(txtTrackEnd.Text), trackType, - int.Parse(txtBytesPerSector.Text), txtAcoustID.Text, checksums, subchannel, (ListStore)treePartitions.Model); + lstTracks.AppendValues(int.Parse(txtTrackSequence.Text), int.Parse(txtSessionSequence.Text), file, filesize, + fileformat, fileoffset, txtMSFStart.Text, txtMSFEnd.Text, + long.Parse(txtTrackStart.Text), long.Parse(txtTrackEnd.Text), trackType, + int.Parse(txtBytesPerSector.Text), txtAcoustID.Text, checksums, subchannel, + (ListStore)treePartitions.Model); - btnEditTrack.Visible = true; - btnApplyTrack.Visible = false; - btnCancelTrack.Visible = false; - frmPartitions.Visible = false; - lblTrackStart.Visible = false; - txtTrackStart.Visible = false; - lblTrackEnd.Visible = false; - txtTrackEnd.Visible = false; - lblMSFStart.Visible = false; - txtMSFStart.Visible = false; - lblMSFEnd.Visible = false; - txtMSFEnd.Visible = false; - lblTrackSequence.Visible = false; - txtTrackSequence.Visible = false; + btnEditTrack.Visible = true; + btnApplyTrack.Visible = false; + btnCancelTrack.Visible = false; + frmPartitions.Visible = false; + lblTrackStart.Visible = false; + txtTrackStart.Visible = false; + lblTrackEnd.Visible = false; + txtTrackEnd.Visible = false; + lblMSFStart.Visible = false; + txtMSFStart.Visible = false; + lblMSFEnd.Visible = false; + txtMSFEnd.Visible = false; + lblTrackSequence.Visible = false; + txtTrackSequence.Visible = false; lblSessionSequence.Visible = false; txtSessionSequence.Visible = false; - lblTrackType.Visible = false; - cmbTrackType.Visible = false; - txtBytesPerSector.Visible = false; - lblBytesPerSector.Visible = false; - lblAcoustID.Visible = false; - txtAcoustID.Visible = false; + lblTrackType.Visible = false; + cmbTrackType.Visible = false; + txtBytesPerSector.Visible = false; + lblBytesPerSector.Visible = false; + lblAcoustID.Visible = false; + txtAcoustID.Visible = false; } protected void OnBtnEditTrackClicked(object sender, EventArgs e) { - if(!treeTracks.Selection.GetSelected(out trackIter)) - return; + if(!treeTracks.Selection.GetSelected(out trackIter)) return; - txtTrackSequence.Text = ((int)lstTracks.GetValue(trackIter, 0)).ToString(); - txtSessionSequence.Text = ((int)lstTracks.GetValue(trackIter, 1)).ToString(); - txtMSFStart.Text = (string)lstTracks.GetValue(trackIter, 6); - txtMSFEnd.Text = (string)lstTracks.GetValue(trackIter, 7); - txtTrackStart.Text = ((long)lstTracks.GetValue(trackIter, 8)).ToString(); - txtTrackEnd.Text = ((long)lstTracks.GetValue(trackIter, 9)).ToString(); - string tracktype = (string)lstTracks.GetValue(trackIter, 10); - txtBytesPerSector.Text = ((int)lstTracks.GetValue(trackIter, 11)).ToString(); - txtAcoustID.Text = (string)lstTracks.GetValue(trackIter, 12); - treePartitions.Model = (ListStore)lstTracks.GetValue(trackIter, 15); + txtTrackSequence.Text = ((int)lstTracks.GetValue(trackIter, 0)).ToString(); + txtSessionSequence.Text = ((int)lstTracks.GetValue(trackIter, 1)).ToString(); + txtMSFStart.Text = (string)lstTracks.GetValue(trackIter, 6); + txtMSFEnd.Text = (string)lstTracks.GetValue(trackIter, 7); + txtTrackStart.Text = ((long)lstTracks.GetValue(trackIter, 8)).ToString(); + txtTrackEnd.Text = ((long)lstTracks.GetValue(trackIter, 9)).ToString(); + string tracktype = (string)lstTracks.GetValue(trackIter, 10); + txtBytesPerSector.Text = ((int)lstTracks.GetValue(trackIter, 11)).ToString(); + txtAcoustID.Text = (string)lstTracks.GetValue(trackIter, 12); + treePartitions.Model = (ListStore)lstTracks.GetValue(trackIter, 15); - TreeIter typeIter; - cmbTrackType.Model.GetIterFirst(out typeIter); + cmbTrackType.Model.GetIterFirst(out TreeIter typeIter); do { - if((string)cmbTrackType.Model.GetValue(typeIter, 0) == tracktype) - { - cmbTrackType.SetActiveIter(typeIter); - break; - } + if((string)cmbTrackType.Model.GetValue(typeIter, 0) != tracktype) continue; + + cmbTrackType.SetActiveIter(typeIter); + break; } while(cmbTrackType.Model.IterNext(ref typeIter)); - btnEditTrack.Visible = false; - btnApplyTrack.Visible = true; - btnCancelTrack.Visible = true; - frmPartitions.Visible = true; - lblTrackStart.Visible = true; - txtTrackStart.Visible = true; - lblTrackEnd.Visible = true; - txtTrackEnd.Visible = true; - lblMSFStart.Visible = true; - txtMSFStart.Visible = true; - lblMSFEnd.Visible = true; - txtMSFEnd.Visible = true; - lblTrackSequence.Visible = true; - txtTrackSequence.Visible = true; + btnEditTrack.Visible = false; + btnApplyTrack.Visible = true; + btnCancelTrack.Visible = true; + frmPartitions.Visible = true; + lblTrackStart.Visible = true; + txtTrackStart.Visible = true; + lblTrackEnd.Visible = true; + txtTrackEnd.Visible = true; + lblMSFStart.Visible = true; + txtMSFStart.Visible = true; + lblMSFEnd.Visible = true; + txtMSFEnd.Visible = true; + lblTrackSequence.Visible = true; + txtTrackSequence.Visible = true; lblSessionSequence.Visible = true; txtSessionSequence.Visible = true; - lblTrackType.Visible = true; - cmbTrackType.Visible = true; - txtBytesPerSector.Visible = true; - lblBytesPerSector.Visible = true; - lblAcoustID.Visible = true; - txtAcoustID.Visible = true; + lblTrackType.Visible = true; + cmbTrackType.Visible = true; + txtBytesPerSector.Visible = true; + lblBytesPerSector.Visible = true; + lblAcoustID.Visible = true; + txtAcoustID.Visible = true; } protected void OnChkKnownDumpHWToggled(object sender, EventArgs e) { - treeDumpHardware.Visible = chkDumpHardware.Active; - btnAddHardware.Visible = chkDumpHardware.Active; + treeDumpHardware.Visible = chkDumpHardware.Active; + btnAddHardware.Visible = chkDumpHardware.Active; btnRemoveHardware.Visible = chkDumpHardware.Active; - btnEditHardware.Visible = chkDumpHardware.Active; + btnEditHardware.Visible = chkDumpHardware.Active; btnCancelHardware.Visible = false; - btnApplyHardware.Visible = false; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnCancelDumpHWClicked(object sender, EventArgs e) { - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnRemoveDumpHWClicked(object sender, EventArgs e) { - TreeIter dumphwIter; - if(treeDumpHardware.Selection.GetSelected(out dumphwIter)) - lstDumpHw.Remove(ref dumphwIter); + if(treeDumpHardware.Selection.GetSelected(out TreeIter dumphwIter)) lstDumpHw.Remove(ref dumphwIter); } protected void OnBtnApplyDumpHWClicked(object sender, EventArgs e) { - if(editingDumpHw) - lstDumpHw.Remove(ref dumpHwIter); + if(editingDumpHw) lstDumpHw.Remove(ref dumpHwIter); - lstDumpHw.AppendValues(txtHWManufacturer.Text, txtHWModel.Text, txtHWRevision.Text, txtHWFirmware.Text, txtHWSerial.Text, txtSoftwareName.Text, - txtSoftwareVersion.Text, txtSoftwareOS.Text, (ListStore)treeExtents.Model); + lstDumpHw.AppendValues(txtHWManufacturer.Text, txtHWModel.Text, txtHWRevision.Text, txtHWFirmware.Text, + txtHWSerial.Text, txtSoftwareName.Text, txtSoftwareVersion.Text, txtSoftwareOS.Text, + (ListStore)treeExtents.Model); - btnAddHardware.Visible = true; + btnAddHardware.Visible = true; btnRemoveHardware.Visible = true; btnCancelHardware.Visible = false; - btnEditHardware.Visible = true; - btnApplyHardware.Visible = false; + btnEditHardware.Visible = true; + btnApplyHardware.Visible = false; lblHWManufacturer.Visible = false; txtHWManufacturer.Visible = false; - lblHWModel.Visible = false; - txtHWModel.Visible = false; - lblHWRevision.Visible = false; - txtHWRevision.Visible = false; - lblHWFirmware.Visible = false; - txtHWFirmware.Visible = false; - lblHWSerial.Visible = false; - txtHWSerial.Visible = false; - frmExtents.Visible = false; - frmDumpSoftware.Visible = false; + lblHWModel.Visible = false; + txtHWModel.Visible = false; + lblHWRevision.Visible = false; + txtHWRevision.Visible = false; + lblHWFirmware.Visible = false; + txtHWFirmware.Visible = false; + lblHWSerial.Visible = false; + txtHWSerial.Visible = false; + frmExtents.Visible = false; + frmDumpSoftware.Visible = false; } protected void OnBtnAddDumpHWClicked(object sender, EventArgs e) { - txtHWManufacturer.Text = ""; - txtHWModel.Text = ""; - txtHWRevision.Text = ""; - txtHWFirmware.Text = ""; - txtHWSerial.Text = ""; - txtSoftwareName.Text = ""; + txtHWManufacturer.Text = ""; + txtHWModel.Text = ""; + txtHWRevision.Text = ""; + txtHWFirmware.Text = ""; + txtHWSerial.Text = ""; + txtSoftwareName.Text = ""; txtSoftwareVersion.Text = ""; - txtSoftwareOS.Text = ""; - treeExtents.Model = new ListStore(typeof(int), typeof(int)); + txtSoftwareOS.Text = ""; + treeExtents.Model = new ListStore(typeof(int), typeof(int)); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; lblHWManufacturer.Visible = true; txtHWManufacturer.Visible = true; - lblHWModel.Visible = true; - txtHWModel.Visible = true; - lblHWRevision.Visible = true; - txtHWRevision.Visible = true; - lblHWFirmware.Visible = true; - txtHWFirmware.Visible = true; - lblHWSerial.Visible = true; - txtHWSerial.Visible = true; - frmExtents.Visible = true; - frmDumpSoftware.Visible = true; + lblHWModel.Visible = true; + txtHWModel.Visible = true; + lblHWRevision.Visible = true; + txtHWRevision.Visible = true; + lblHWFirmware.Visible = true; + txtHWFirmware.Visible = true; + lblHWSerial.Visible = true; + txtHWSerial.Visible = true; + frmExtents.Visible = true; + frmDumpSoftware.Visible = true; editingDumpHw = false; } protected void OnBtnRemoveExtentClicked(object sender, EventArgs e) { - TreeIter extentIter; - if(treeExtents.Selection.GetSelected(out extentIter)) + if(treeExtents.Selection.GetSelected(out TreeIter extentIter)) ((ListStore)treeExtents.Model).Remove(ref extentIter); } protected void OnBtnEditDumpHWClicked(object sender, EventArgs e) { - if(!treeDumpHardware.Selection.GetSelected(out dumpHwIter)) - return; + if(!treeDumpHardware.Selection.GetSelected(out dumpHwIter)) return; - txtHWManufacturer.Text = (string)lstDumpHw.GetValue(dumpHwIter, 0); - txtHWModel.Text = (string)lstDumpHw.GetValue(dumpHwIter, 1); - txtHWRevision.Text = (string)lstDumpHw.GetValue(dumpHwIter, 2); - txtHWFirmware.Text = (string)lstDumpHw.GetValue(dumpHwIter, 3); - txtHWSerial.Text = (string)lstDumpHw.GetValue(dumpHwIter, 4); - txtSoftwareName.Text = (string)lstDumpHw.GetValue(dumpHwIter, 5); - txtSoftwareVersion.Text = (string)lstDumpHw.GetValue(dumpHwIter, 6); - txtSoftwareOS.Text = (string)lstDumpHw.GetValue(dumpHwIter, 7); - treeExtents.Model = (ListStore)lstDumpHw.GetValue(dumpHwIter, 8); + txtHWManufacturer.Text = (string)lstDumpHw.GetValue(dumpHwIter, 0); + txtHWModel.Text = (string)lstDumpHw.GetValue(dumpHwIter, 1); + txtHWRevision.Text = (string)lstDumpHw.GetValue(dumpHwIter, 2); + txtHWFirmware.Text = (string)lstDumpHw.GetValue(dumpHwIter, 3); + txtHWSerial.Text = (string)lstDumpHw.GetValue(dumpHwIter, 4); + txtSoftwareName.Text = (string)lstDumpHw.GetValue(dumpHwIter, 5); + txtSoftwareVersion.Text = (string)lstDumpHw.GetValue(dumpHwIter, 6); + txtSoftwareOS.Text = (string)lstDumpHw.GetValue(dumpHwIter, 7); + treeExtents.Model = (ListStore)lstDumpHw.GetValue(dumpHwIter, 8); - btnAddHardware.Visible = false; + btnAddHardware.Visible = false; btnRemoveHardware.Visible = false; btnCancelHardware.Visible = true; - btnEditHardware.Visible = false; - btnApplyHardware.Visible = true; + btnEditHardware.Visible = false; + btnApplyHardware.Visible = true; lblHWManufacturer.Visible = true; txtHWManufacturer.Visible = true; - lblHWModel.Visible = true; - txtHWModel.Visible = true; - lblHWRevision.Visible = true; - txtHWRevision.Visible = true; - lblHWFirmware.Visible = true; - txtHWFirmware.Visible = true; - lblHWSerial.Visible = true; - txtHWSerial.Visible = true; - frmExtents.Visible = true; - frmDumpSoftware.Visible = true; + lblHWModel.Visible = true; + txtHWModel.Visible = true; + lblHWRevision.Visible = true; + txtHWRevision.Visible = true; + lblHWFirmware.Visible = true; + txtHWFirmware.Visible = true; + lblHWSerial.Visible = true; + txtHWSerial.Visible = true; + frmExtents.Visible = true; + frmDumpSoftware.Visible = true; editingDumpHw = true; } @@ -1278,9 +1296,7 @@ namespace osrepodbmgr protected void OnBtnRemoveRingCodeClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeRingCodes.Selection.GetSelected(out outIter)) - lstRingCodes.Remove(ref outIter); + if(treeRingCodes.Selection.GetSelected(out TreeIter outIter)) lstRingCodes.Remove(ref outIter); } protected void OnBtnAddMasteringSIDClicked(object sender, EventArgs e) @@ -1290,9 +1306,7 @@ namespace osrepodbmgr protected void OnBtnRemoveMasteringSIDClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeMasteringSIDs.Selection.GetSelected(out outIter)) - lstMasteringSIDs.Remove(ref outIter); + if(treeMasteringSIDs.Selection.GetSelected(out TreeIter outIter)) lstMasteringSIDs.Remove(ref outIter); } protected void OnBtnAddToolstampClicked(object sender, EventArgs e) @@ -1302,9 +1316,7 @@ namespace osrepodbmgr protected void OnBtnRemoveToolstampClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeToolstamps.Selection.GetSelected(out outIter)) - lstToolstamps.Remove(ref outIter); + if(treeToolstamps.Selection.GetSelected(out TreeIter outIter)) lstToolstamps.Remove(ref outIter); } protected void OnBtnAddMouldSIDClicked(object sender, EventArgs e) @@ -1314,9 +1326,7 @@ namespace osrepodbmgr protected void OnBtnRemoveMouldSIDClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeMouldSIDs.Selection.GetSelected(out outIter)) - lstMouldSIDs.Remove(ref outIter); + if(treeMouldSIDs.Selection.GetSelected(out TreeIter outIter)) lstMouldSIDs.Remove(ref outIter); } protected void OnBtnAddMouldTextClicked(object sender, EventArgs e) @@ -1326,25 +1336,20 @@ namespace osrepodbmgr protected void OnBtnRemoveMouldTextClicked(object sender, EventArgs e) { - TreeIter outIter; - if(treeMouldTexts.Selection.GetSelected(out outIter)) - lstMouldTexts.Remove(ref outIter); + if(treeMouldTexts.Selection.GetSelected(out TreeIter outIter)) lstMouldTexts.Remove(ref outIter); } - protected void OnButtonOkClicked(object sender, EventArgs e) - { - - } + protected void OnButtonOkClicked(object sender, EventArgs e) { } protected void OnBtnSaveClicked(object sender, EventArgs e) { MessageDialog dlgMsg; - long ltmp; #region Sanity checks if(string.IsNullOrEmpty(txtFormat.Text)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Image format cannot be null"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Image format cannot be null"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1354,7 +1359,8 @@ namespace osrepodbmgr { if(spSequence.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Media sequence must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1362,7 +1368,8 @@ namespace osrepodbmgr if(spTotalMedia.Value < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Total medias must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Total medias must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1370,16 +1377,18 @@ namespace osrepodbmgr if(spSequence.Value > spTotalMedia.Value) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence cannot be bigger than total medias"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Media sequence cannot be bigger than total medias"); dlgMsg.Run(); dlgMsg.Destroy(); return; } } - if(!string.IsNullOrEmpty(txtWriteOffset.Text) && !long.TryParse(txtWriteOffset.Text, out ltmp)) + if(!string.IsNullOrEmpty(txtWriteOffset.Text) && !long.TryParse(txtWriteOffset.Text, out long ltmp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Write offset must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Write offset must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1387,7 +1396,8 @@ namespace osrepodbmgr if(string.IsNullOrEmpty(txtMediaTracks.Text) || !long.TryParse(txtMediaTracks.Text, out ltmp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Tracks must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Tracks must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1395,7 +1405,8 @@ namespace osrepodbmgr if(ltmp < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Tracks must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Tracks must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1403,7 +1414,8 @@ namespace osrepodbmgr if(string.IsNullOrEmpty(txtMediaSessions.Text) || !long.TryParse(txtMediaSessions.Text, out ltmp)) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Sessions must be a number"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Sessions must be a number"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1411,7 +1423,8 @@ namespace osrepodbmgr if(ltmp < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Sessions must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Sessions must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1423,7 +1436,8 @@ namespace osrepodbmgr { if(spDiameter.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Diameter must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Diameter must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1433,22 +1447,27 @@ namespace osrepodbmgr { if(spHeight.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Height must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Height must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } + if(spWidth.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Width must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Width must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; } } + if(spThickness.ValueAsInt <= 0) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Thickness must be bigger than 0"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Thickness must be bigger than 0"); dlgMsg.Run(); dlgMsg.Destroy(); return; @@ -1456,45 +1475,48 @@ namespace osrepodbmgr } if(chkDumpHardware.Active) - { if(lstDumpHw.IterNChildren() < 1) { - dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "If dump hardware is known at least an entry must be created"); + dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "If dump hardware is known at least an entry must be created"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - } #endregion Sanity checks TreeIter outIter; Metadata = new OpticalDiscType(); - Metadata.Image = new Schemas.ImageType(); - Metadata.Image.Value = txtImage.Text; + Metadata.Image = new ImageType(); + Metadata.Image.Value = txtImage.Text; Metadata.Image.format = txtFormat.Text; if(!string.IsNullOrWhiteSpace(txtOffset.Text) && long.TryParse(txtOffset.Text, out ltmp)) { Metadata.Image.offsetSpecified = true; - Metadata.Image.offset = long.Parse(txtOffset.Text); + Metadata.Image.offset = long.Parse(txtOffset.Text); } + Metadata.Size = long.Parse(txtSize.Text); if(chkSequence.Active) { - Metadata.Sequence = new SequenceType(); - Metadata.Sequence.MediaTitle = txtDiscTitle.Text; - Metadata.Sequence.MediaSequence = spSequence.ValueAsInt; - Metadata.Sequence.TotalMedia = spTotalMedia.ValueAsInt; + Metadata.Sequence = new SequenceType + { + MediaTitle = txtDiscTitle.Text, + MediaSequence = spSequence.ValueAsInt, + TotalMedia = spTotalMedia.ValueAsInt + }; if(spSide.ValueAsInt > 0) { Metadata.Sequence.SideSpecified = true; - Metadata.Sequence.Side = spSide.ValueAsInt; + Metadata.Sequence.Side = spSide.ValueAsInt; } + if(spLayer1.ValueAsInt > 0) { Metadata.Sequence.LayerSpecified = true; - Metadata.Sequence.Layer = spLayer1.ValueAsInt; + Metadata.Sequence.Layer = spLayer1.ValueAsInt; } } @@ -1503,7 +1525,8 @@ namespace osrepodbmgr Metadata.Layers = new LayersType(); if(cmbLayerType.GetActiveIter(out outIter)) { - Metadata.Layers.type = (LayersTypeType)Enum.Parse(typeof(LayersTypeType), (string)lstLayerTypes.GetValue(outIter, 0)); + Metadata.Layers.type = + (LayersTypeType)Enum.Parse(typeof(LayersTypeType), (string)lstLayerTypes.GetValue(outIter, 0)); Metadata.Layers.typeSpecified = true; } @@ -1512,38 +1535,42 @@ namespace osrepodbmgr List sectors = new List(); do { - SectorsType sector = new SectorsType(); - sector.layer = (int)lstLayers.GetValue(outIter, 0); - sector.Value = (long)lstLayers.GetValue(outIter, 1); + SectorsType sector = new SectorsType + { + layer = (int)lstLayers.GetValue(outIter, 0), + Value = (long)lstLayers.GetValue(outIter, 1) + }; - if(sector.layer > 0 || lstLayers.IterNChildren() > 1) - sector.layerSpecified = true; + if(sector.layer > 0 || lstLayers.IterNChildren() > 1) sector.layerSpecified = true; sectors.Add(sector); } while(lstLayers.IterNext(ref outIter)); + Metadata.Layers.Sectors = sectors.ToArray(); } } Metadata.Checksums = checksums; - Metadata.Xbox = xbox; + Metadata.Xbox = xbox; if(lstRingCodes.GetIterFirst(out outIter)) { List codes = new List(); do { - LayeredTextType code = new LayeredTextType(); - code.layer = (int)lstRingCodes.GetValue(outIter, 0); - code.Value = (string)lstRingCodes.GetValue(outIter, 1); + LayeredTextType code = new LayeredTextType + { + layer = (int)lstRingCodes.GetValue(outIter, 0), + Value = (string)lstRingCodes.GetValue(outIter, 1) + }; - if(code.layer > 0 || lstLayers.IterNChildren() > 1) - code.layerSpecified = true; + if(code.layer > 0 || lstLayers.IterNChildren() > 1) code.layerSpecified = true; codes.Add(code); } while(lstRingCodes.IterNext(ref outIter)); + Metadata.RingCode = codes.ToArray(); } @@ -1552,16 +1579,18 @@ namespace osrepodbmgr List codes = new List(); do { - LayeredTextType code = new LayeredTextType(); - code.layer = (int)lstMasteringSIDs.GetValue(outIter, 0); - code.Value = (string)lstMasteringSIDs.GetValue(outIter, 1); + LayeredTextType code = new LayeredTextType + { + layer = (int)lstMasteringSIDs.GetValue(outIter, 0), + Value = (string)lstMasteringSIDs.GetValue(outIter, 1) + }; - if(code.layer > 0 || lstLayers.IterNChildren() > 1) - code.layerSpecified = true; + if(code.layer > 0 || lstLayers.IterNChildren() > 1) code.layerSpecified = true; codes.Add(code); } while(lstMasteringSIDs.IterNext(ref outIter)); + Metadata.MasteringSID = codes.ToArray(); } @@ -1570,16 +1599,18 @@ namespace osrepodbmgr List codes = new List(); do { - LayeredTextType code = new LayeredTextType(); - code.layer = (int)lstToolstamps.GetValue(outIter, 0); - code.Value = (string)lstToolstamps.GetValue(outIter, 1); + LayeredTextType code = new LayeredTextType + { + layer = (int)lstToolstamps.GetValue(outIter, 0), + Value = (string)lstToolstamps.GetValue(outIter, 1) + }; - if(code.layer > 0 || lstLayers.IterNChildren() > 1) - code.layerSpecified = true; + if(code.layer > 0 || lstLayers.IterNChildren() > 1) code.layerSpecified = true; codes.Add(code); } while(lstToolstamps.IterNext(ref outIter)); + Metadata.Toolstamp = codes.ToArray(); } @@ -1588,16 +1619,18 @@ namespace osrepodbmgr List codes = new List(); do { - LayeredTextType code = new LayeredTextType(); - code.layer = (int)lstMouldSIDs.GetValue(outIter, 0); - code.Value = (string)lstMouldSIDs.GetValue(outIter, 1); + LayeredTextType code = new LayeredTextType + { + layer = (int)lstMouldSIDs.GetValue(outIter, 0), + Value = (string)lstMouldSIDs.GetValue(outIter, 1) + }; - if(code.layer > 0 || lstLayers.IterNChildren() > 1) - code.layerSpecified = true; + if(code.layer > 0 || lstLayers.IterNChildren() > 1) code.layerSpecified = true; codes.Add(code); } while(lstMouldSIDs.IterNext(ref outIter)); + Metadata.MouldSID = codes.ToArray(); } @@ -1606,41 +1639,37 @@ namespace osrepodbmgr List codes = new List(); do { - LayeredTextType code = new LayeredTextType(); - code.layer = (int)lstMouldTexts.GetValue(outIter, 0); - code.Value = (string)lstMouldTexts.GetValue(outIter, 1); + LayeredTextType code = new LayeredTextType + { + layer = (int)lstMouldTexts.GetValue(outIter, 0), + Value = (string)lstMouldTexts.GetValue(outIter, 1) + }; - if(code.layer > 0 || lstLayers.IterNChildren() > 1) - code.layerSpecified = true; + if(code.layer > 0 || lstLayers.IterNChildren() > 1) code.layerSpecified = true; codes.Add(code); } while(lstMouldTexts.IterNext(ref outIter)); + Metadata.MouldText = codes.ToArray(); } - if(!string.IsNullOrWhiteSpace(txtDiscType.Text)) - Metadata.DiscType = txtDiscType.Text; - if(!string.IsNullOrWhiteSpace(txtDiscSubType.Text)) - Metadata.DiscSubType = txtDiscSubType.Text; + if(!string.IsNullOrWhiteSpace(txtDiscType.Text)) Metadata.DiscType = txtDiscType.Text; + if(!string.IsNullOrWhiteSpace(txtDiscSubType.Text)) Metadata.DiscSubType = txtDiscSubType.Text; if(!string.IsNullOrWhiteSpace(txtWriteOffset.Text)) { - Metadata.Offset = int.Parse(txtWriteOffset.Text); + Metadata.Offset = int.Parse(txtWriteOffset.Text); Metadata.OffsetSpecified = true; } - if(!string.IsNullOrWhiteSpace(txtMediaTracks.Text)) - Metadata.Tracks = new int[] { int.Parse(txtMediaTracks.Text) }; - else - Metadata.Tracks = new int[] { 1 }; + Metadata.Tracks = !string.IsNullOrWhiteSpace(txtMediaTracks.Text) + ? new[] {int.Parse(txtMediaTracks.Text)} + : new[] {1}; - if(!string.IsNullOrWhiteSpace(txtMediaSessions.Text)) - Metadata.Sessions = int.Parse(txtMediaSessions.Text); - else - Metadata.Sessions = 1; + Metadata.Sessions = + !string.IsNullOrWhiteSpace(txtMediaSessions.Text) ? int.Parse(txtMediaSessions.Text) : 1; - if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) - Metadata.CopyProtection = txtCopyProtection.Text; + if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text)) Metadata.CopyProtection = txtCopyProtection.Text; if(chkDimensions.Active) { @@ -1648,167 +1677,169 @@ namespace osrepodbmgr if(chkRound.Active) { Metadata.Dimensions.DiameterSpecified = true; - Metadata.Dimensions.Diameter = spDiameter.Value; + Metadata.Dimensions.Diameter = spDiameter.Value; } else { Metadata.Dimensions.HeightSpecified = true; - Metadata.Dimensions.WidthSpecified = true; - Metadata.Dimensions.Height = spHeight.Value; - Metadata.Dimensions.Width = spWidth.Value; + Metadata.Dimensions.WidthSpecified = true; + Metadata.Dimensions.Height = spHeight.Value; + Metadata.Dimensions.Width = spWidth.Value; } + Metadata.Dimensions.Thickness = spThickness.Value; } - Metadata.Case = mediaCase; + Metadata.Case = mediaCase; Metadata.Scans = scans; if(lstPFI.GetIterFirst(out outIter)) - { - Metadata.PFI = new DumpType(); - Metadata.PFI.Image = (string)lstPFI.GetValue(outIter, 0); - Metadata.PFI.Size = (int)lstPFI.GetValue(outIter, 1); - Metadata.PFI.Checksums = (ChecksumType[])lstPFI.GetValue(outIter, 2); - } + Metadata.PFI = new DumpType + { + Image = (string)lstPFI.GetValue(outIter, 0), + Size = (int)lstPFI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPFI.GetValue(outIter, 2) + }; if(lstDMI.GetIterFirst(out outIter)) - { - Metadata.DMI = new DumpType(); - Metadata.DMI.Image = (string)lstDMI.GetValue(outIter, 0); - Metadata.DMI.Size = (int)lstDMI.GetValue(outIter, 1); - Metadata.DMI.Checksums = (ChecksumType[])lstDMI.GetValue(outIter, 2); - } + Metadata.DMI = new DumpType + { + Image = (string)lstDMI.GetValue(outIter, 0), + Size = (int)lstDMI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstDMI.GetValue(outIter, 2) + }; if(lstCMI.GetIterFirst(out outIter)) - { - Metadata.CMI = new DumpType(); - Metadata.CMI.Image = (string)lstCMI.GetValue(outIter, 0); - Metadata.CMI.Size = (int)lstCMI.GetValue(outIter, 1); - Metadata.CMI.Checksums = (ChecksumType[])lstCMI.GetValue(outIter, 2); - } + Metadata.CMI = new DumpType + { + Image = (string)lstCMI.GetValue(outIter, 0), + Size = (int)lstCMI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstCMI.GetValue(outIter, 2) + }; if(lstBCA.GetIterFirst(out outIter)) - { - Metadata.BCA = new DumpType(); - Metadata.BCA.Image = (string)lstBCA.GetValue(outIter, 0); - Metadata.BCA.Size = (int)lstBCA.GetValue(outIter, 1); - Metadata.BCA.Checksums = (ChecksumType[])lstBCA.GetValue(outIter, 2); - } + Metadata.BCA = new DumpType + { + Image = (string)lstBCA.GetValue(outIter, 0), + Size = (int)lstBCA.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstBCA.GetValue(outIter, 2) + }; if(lstATIP.GetIterFirst(out outIter)) - { - Metadata.ATIP = new DumpType(); - Metadata.ATIP.Image = (string)lstATIP.GetValue(outIter, 0); - Metadata.ATIP.Size = (int)lstATIP.GetValue(outIter, 1); - Metadata.ATIP.Checksums = (ChecksumType[])lstATIP.GetValue(outIter, 2); - } + Metadata.ATIP = new DumpType + { + Image = (string)lstATIP.GetValue(outIter, 0), + Size = (int)lstATIP.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstATIP.GetValue(outIter, 2) + }; if(lstADIP.GetIterFirst(out outIter)) - { - Metadata.ADIP = new DumpType(); - Metadata.ADIP.Image = (string)lstADIP.GetValue(outIter, 0); - Metadata.ADIP.Size = (int)lstADIP.GetValue(outIter, 1); - Metadata.ADIP.Checksums = (ChecksumType[])lstADIP.GetValue(outIter, 2); - } + Metadata.ADIP = new DumpType + { + Image = (string)lstADIP.GetValue(outIter, 0), + Size = (int)lstADIP.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstADIP.GetValue(outIter, 2) + }; if(lstPMA.GetIterFirst(out outIter)) - { - Metadata.PMA = new DumpType(); - Metadata.PMA.Image = (string)lstPMA.GetValue(outIter, 0); - Metadata.PMA.Size = (int)lstPMA.GetValue(outIter, 1); - Metadata.PMA.Checksums = (ChecksumType[])lstPMA.GetValue(outIter, 2); - } + Metadata.PMA = new DumpType + { + Image = (string)lstPMA.GetValue(outIter, 0), + Size = (int)lstPMA.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPMA.GetValue(outIter, 2) + }; if(lstDDS.GetIterFirst(out outIter)) - { - Metadata.DDS = new DumpType(); - Metadata.DDS.Image = (string)lstDDS.GetValue(outIter, 0); - Metadata.DDS.Size = (int)lstDDS.GetValue(outIter, 1); - Metadata.DDS.Checksums = (ChecksumType[])lstDDS.GetValue(outIter, 2); - } + Metadata.DDS = new DumpType + { + Image = (string)lstDDS.GetValue(outIter, 0), + Size = (int)lstDDS.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstDDS.GetValue(outIter, 2) + }; if(lstSAI.GetIterFirst(out outIter)) - { - Metadata.SAI = new DumpType(); - Metadata.SAI.Image = (string)lstSAI.GetValue(outIter, 0); - Metadata.SAI.Size = (int)lstSAI.GetValue(outIter, 1); - Metadata.SAI.Checksums = (ChecksumType[])lstSAI.GetValue(outIter, 2); - } + Metadata.SAI = new DumpType + { + Image = (string)lstSAI.GetValue(outIter, 0), + Size = (int)lstSAI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstSAI.GetValue(outIter, 2) + }; if(lstLastRMD.GetIterFirst(out outIter)) - { - Metadata.LastRMD = new DumpType(); - Metadata.LastRMD.Image = (string)lstLastRMD.GetValue(outIter, 0); - Metadata.LastRMD.Size = (int)lstLastRMD.GetValue(outIter, 1); - Metadata.LastRMD.Checksums = (ChecksumType[])lstLastRMD.GetValue(outIter, 2); - } + Metadata.LastRMD = new DumpType + { + Image = (string)lstLastRMD.GetValue(outIter, 0), + Size = (int)lstLastRMD.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstLastRMD.GetValue(outIter, 2) + }; if(lstPRI.GetIterFirst(out outIter)) - { - Metadata.PRI = new DumpType(); - Metadata.PRI.Image = (string)lstPRI.GetValue(outIter, 0); - Metadata.PRI.Size = (int)lstPRI.GetValue(outIter, 1); - Metadata.PRI.Checksums = (ChecksumType[])lstPRI.GetValue(outIter, 2); - } + Metadata.PRI = new DumpType + { + Image = (string)lstPRI.GetValue(outIter, 0), + Size = (int)lstPRI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPRI.GetValue(outIter, 2) + }; if(lstMediaID.GetIterFirst(out outIter)) - { - Metadata.MediaID = new DumpType(); - Metadata.MediaID.Image = (string)lstMediaID.GetValue(outIter, 0); - Metadata.MediaID.Size = (int)lstMediaID.GetValue(outIter, 1); - Metadata.MediaID.Checksums = (ChecksumType[])lstMediaID.GetValue(outIter, 2); - } + Metadata.MediaID = new DumpType + { + Image = (string)lstMediaID.GetValue(outIter, 0), + Size = (int)lstMediaID.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstMediaID.GetValue(outIter, 2) + }; if(lstPFIR.GetIterFirst(out outIter)) - { - Metadata.PFIR = new DumpType(); - Metadata.PFIR.Image = (string)lstPFIR.GetValue(outIter, 0); - Metadata.PFIR.Size = (int)lstPFIR.GetValue(outIter, 1); - Metadata.PFIR.Checksums = (ChecksumType[])lstPFIR.GetValue(outIter, 2); - } + Metadata.PFIR = new DumpType + { + Image = (string)lstPFIR.GetValue(outIter, 0), + Size = (int)lstPFIR.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPFIR.GetValue(outIter, 2) + }; if(lstDCB.GetIterFirst(out outIter)) - { - Metadata.DCB = new DumpType(); - Metadata.DCB.Image = (string)lstDCB.GetValue(outIter, 0); - Metadata.DCB.Size = (int)lstDCB.GetValue(outIter, 1); - Metadata.DCB.Checksums = (ChecksumType[])lstDCB.GetValue(outIter, 2); - } + Metadata.DCB = new DumpType + { + Image = (string)lstDCB.GetValue(outIter, 0), + Size = (int)lstDCB.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstDCB.GetValue(outIter, 2) + }; if(lstDI.GetIterFirst(out outIter)) - { - Metadata.DI = new DumpType(); - Metadata.DI.Image = (string)lstDI.GetValue(outIter, 0); - Metadata.DI.Size = (int)lstDI.GetValue(outIter, 1); - Metadata.DI.Checksums = (ChecksumType[])lstDI.GetValue(outIter, 2); - } + Metadata.DI = new DumpType + { + Image = (string)lstDI.GetValue(outIter, 0), + Size = (int)lstDI.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstDI.GetValue(outIter, 2) + }; if(lstPAC.GetIterFirst(out outIter)) - { - Metadata.PAC = new DumpType(); - Metadata.PAC.Image = (string)lstPAC.GetValue(outIter, 0); - Metadata.PAC.Size = (int)lstPAC.GetValue(outIter, 1); - Metadata.PAC.Checksums = (ChecksumType[])lstPAC.GetValue(outIter, 2); - } + Metadata.PAC = new DumpType + { + Image = (string)lstPAC.GetValue(outIter, 0), + Size = (int)lstPAC.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstPAC.GetValue(outIter, 2) + }; if(lstTOC.GetIterFirst(out outIter)) - { - Metadata.TOC = new DumpType(); - Metadata.TOC.Image = (string)lstTOC.GetValue(outIter, 0); - Metadata.TOC.Size = (int)lstTOC.GetValue(outIter, 1); - Metadata.TOC.Checksums = (ChecksumType[])lstTOC.GetValue(outIter, 2); - } + Metadata.TOC = new DumpType + { + Image = (string)lstTOC.GetValue(outIter, 0), + Size = (int)lstTOC.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstTOC.GetValue(outIter, 2) + }; if(lstCDText.GetIterFirst(out outIter)) - { - Metadata.LeadInCdText = new DumpType(); - Metadata.LeadInCdText.Image = (string)lstCDText.GetValue(outIter, 0); - Metadata.LeadInCdText.Size = (int)lstCDText.GetValue(outIter, 1); - Metadata.LeadInCdText.Checksums = (ChecksumType[])lstCDText.GetValue(outIter, 2); - } + Metadata.LeadInCdText = new DumpType + { + Image = (string)lstCDText.GetValue(outIter, 0), + Size = (int)lstCDText.GetValue(outIter, 1), + Checksums = (ChecksumType[])lstCDText.GetValue(outIter, 2) + }; if(lstLeadIns.GetIterFirst(out outIter)) { List leadins = new List(); do { - BorderType leadin = new BorderType(); - leadin.Image = (string)lstLeadIns.GetValue(outIter, 0); - leadin.Size = (long)lstLeadIns.GetValue(outIter, 1); - leadin.session = (int)lstLeadIns.GetValue(outIter, 2); - leadin.Checksums = (ChecksumType[])lstLeadIns.GetValue(outIter, 3); + BorderType leadin = new BorderType + { + Image = (string)lstLeadIns.GetValue(outIter, 0), + Size = (long)lstLeadIns.GetValue(outIter, 1), + session = (int)lstLeadIns.GetValue(outIter, 2), + Checksums = (ChecksumType[])lstLeadIns.GetValue(outIter, 3) + }; - if(leadin.session > Metadata.Sessions) - Metadata.Sessions = leadin.session; - if(leadin.session > 0 || Metadata.Sessions > 0) - leadin.sessionSpecified = true; + if(leadin.session > Metadata.Sessions) Metadata.Sessions = leadin.session; + if(leadin.session > 0 || Metadata.Sessions > 0) leadin.sessionSpecified = true; leadins.Add(leadin); } while(lstLeadIns.IterNext(ref outIter)); + Metadata.LeadIn = leadins.ToArray(); } @@ -1817,29 +1848,26 @@ namespace osrepodbmgr List leadouts = new List(); do { - BorderType leadout = new BorderType(); - leadout.Image = (string)lstLeadOuts.GetValue(outIter, 0); - leadout.Size = (long)lstLeadOuts.GetValue(outIter, 1); - leadout.session = (int)lstLeadOuts.GetValue(outIter, 2); - leadout.Checksums = (ChecksumType[])lstLeadOuts.GetValue(outIter, 3); + BorderType leadout = new BorderType + { + Image = (string)lstLeadOuts.GetValue(outIter, 0), + Size = (long)lstLeadOuts.GetValue(outIter, 1), + session = (int)lstLeadOuts.GetValue(outIter, 2), + Checksums = (ChecksumType[])lstLeadOuts.GetValue(outIter, 3) + }; - if(leadout.session > Metadata.Sessions) - Metadata.Sessions = leadout.session; - if(leadout.session > 0 || Metadata.Sessions > 0) - leadout.sessionSpecified = true; + if(leadout.session > Metadata.Sessions) Metadata.Sessions = leadout.session; + if(leadout.session > 0 || Metadata.Sessions > 0) leadout.sessionSpecified = true; leadouts.Add(leadout); } while(lstLeadOuts.IterNext(ref outIter)); + Metadata.LeadOut = leadouts.ToArray(); } if(!string.IsNullOrWhiteSpace(txtPS3Key.Text) && !string.IsNullOrWhiteSpace(txtPS3Serial.Text)) - { - Metadata.PS3Encryption = new PS3EncryptionType(); - Metadata.PS3Encryption.Key = txtPS3Key.Text; - Metadata.PS3Encryption.Serial = txtPS3Serial.Text; - } + Metadata.PS3Encryption = new PS3EncryptionType {Key = txtPS3Key.Text, Serial = txtPS3Serial.Text}; if(lstTracks.GetIterFirst(out outIter)) { @@ -1847,47 +1875,54 @@ namespace osrepodbmgr do { - TreeIter partIter; - ListStore lstPartitions; - TrackType track = new TrackType(); - track.Sequence = new TrackSequenceType(); - track.Image = new Schemas.ImageType(); + TrackType track = new TrackType + { + Sequence = + new TrackSequenceType + { + TrackNumber = (int)lstTracks.GetValue(outIter, 0), + Session = (int)lstTracks.GetValue(outIter, 1) + }, + Image = + new ImageType + { + Value = (string)lstTracks.GetValue(outIter, 2), + format = (string)lstTracks.GetValue(outIter, 4), + offset = (long)lstTracks.GetValue(outIter, 5) + }, + Size = (long)lstTracks.GetValue(outIter, 3), + StartMSF = (string)lstTracks.GetValue(outIter, 6), + EndMSF = (string)lstTracks.GetValue(outIter, 7), + StartSector = (long)lstTracks.GetValue(outIter, 8), + EndSector = (long)lstTracks.GetValue(outIter, 9), + TrackType1 = + (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), + (string)lstTracks.GetValue(outIter, 10)), + BytesPerSector = (int)lstTracks.GetValue(outIter, 11), + AccoustID = (string)lstTracks.GetValue(outIter, 12), + Checksums = (ChecksumType[])lstTracks.GetValue(outIter, 13), + SubChannel = (SubChannelType)lstTracks.GetValue(outIter, 14) + }; + ListStore lstPartitions = (ListStore)lstTracks.GetValue(outIter, 15); + if(track.Image.offset > 0) track.Image.offsetSpecified = true; - track.Sequence.TrackNumber = (int)lstTracks.GetValue(outIter, 0); - track.Sequence.Session = (int)lstTracks.GetValue(outIter, 1); - track.Image.Value = (string)lstTracks.GetValue(outIter, 2); - track.Size = (long)lstTracks.GetValue(outIter, 3); - track.Image.format = (string)lstTracks.GetValue(outIter, 4); - track.Image.offset = (long)lstTracks.GetValue(outIter, 5); - if(track.Image.offset > 0) - track.Image.offsetSpecified = true; - track.StartMSF = (string)lstTracks.GetValue(outIter, 6); - track.EndMSF = (string)lstTracks.GetValue(outIter, 7); - track.StartSector = (long)lstTracks.GetValue(outIter, 8); - track.EndSector = (long)lstTracks.GetValue(outIter, 9); - track.TrackType1 = (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), (string)lstTracks.GetValue(outIter, 10)); - track.BytesPerSector = (int)lstTracks.GetValue(outIter, 11); - track.AccoustID = (string)lstTracks.GetValue(outIter, 12); - track.Checksums = (ChecksumType[])lstTracks.GetValue(outIter, 13); - track.SubChannel = (SubChannelType)lstTracks.GetValue(outIter, 14); - lstPartitions = (ListStore)lstTracks.GetValue(outIter, 15); - - if(lstPartitions.GetIterFirst(out partIter)) + if(lstPartitions.GetIterFirst(out TreeIter partIter)) { List partitions = new List(); do { - PartitionType partition = new PartitionType(); - partition.Sequence = (int)lstPartitions.GetValue(partIter, 0); - partition.StartSector = (int)lstPartitions.GetValue(partIter, 1); - partition.EndSector = (int)lstPartitions.GetValue(partIter, 2); - partition.Type = (string)lstPartitions.GetValue(partIter, 3); - partition.Name = (string)lstPartitions.GetValue(partIter, 4); - partition.Description = (string)lstPartitions.GetValue(partIter, 5); + PartitionType partition = new PartitionType + { + Sequence = (int)lstPartitions.GetValue(partIter, 0), + StartSector = (int)lstPartitions.GetValue(partIter, 1), + EndSector = (int)lstPartitions.GetValue(partIter, 2), + Type = (string)lstPartitions.GetValue(partIter, 3), + Name = (string)lstPartitions.GetValue(partIter, 4), + Description = (string)lstPartitions.GetValue(partIter, 5) + }; ListStore lstFilesystems = (ListStore)lstPartitions.GetValue(partIter, 6); - TreeIter fsIter; - if(lstFilesystems.GetIterFirst(out fsIter)) + if(lstFilesystems.GetIterFirst(out TreeIter fsIter)) { List fss = new List(); do @@ -1896,12 +1931,14 @@ namespace osrepodbmgr fss.Add(fs); } while(lstFilesystems.IterNext(ref fsIter)); + partition.FileSystems = fss.ToArray(); } partitions.Add(partition); } while(lstPartitions.IterNext(ref partIter)); + track.FileSystemInformation = partitions.ToArray(); } @@ -1917,38 +1954,44 @@ namespace osrepodbmgr List dumps = new List(); do { - DumpHardwareType dump = new DumpHardwareType(); - dump.Software = new SoftwareType(); - ListStore lstExtents; - TreeIter extIter; + DumpHardwareType dump = new DumpHardwareType + { + Manufacturer = (string)lstDumpHw.GetValue(outIter, 0), + Model = (string)lstDumpHw.GetValue(outIter, 1), + Revision = (string)lstDumpHw.GetValue(outIter, 2), + Firmware = (string)lstDumpHw.GetValue(outIter, 3), + Serial = (string)lstDumpHw.GetValue(outIter, 4), + Software = new SoftwareType + { + Name = (string)lstDumpHw.GetValue(outIter, 5), + Version = (string)lstDumpHw.GetValue(outIter, 6), + OperatingSystem = (string)lstDumpHw.GetValue(outIter, 7) + } + }; - dump.Manufacturer = (string)lstDumpHw.GetValue(outIter, 0); - dump.Model = (string)lstDumpHw.GetValue(outIter, 1); - dump.Revision = (string)lstDumpHw.GetValue(outIter, 2); - dump.Firmware = (string)lstDumpHw.GetValue(outIter, 3); - dump.Serial = (string)lstDumpHw.GetValue(outIter, 4); - dump.Software.Name = (string)lstDumpHw.GetValue(outIter, 5); - dump.Software.Version = (string)lstDumpHw.GetValue(outIter, 6); - dump.Software.OperatingSystem = (string)lstDumpHw.GetValue(outIter, 7); - lstExtents = (ListStore)lstDumpHw.GetValue(outIter, 8); + ListStore lstExtents = (ListStore)lstDumpHw.GetValue(outIter, 8); - if(lstExtents.GetIterFirst(out extIter)) + if(lstExtents.GetIterFirst(out TreeIter extIter)) { List extents = new List(); do { - ExtentType extent = new ExtentType(); - extent.Start = (ulong)lstExtents.GetValue(extIter, 0); - extent.End = (ulong)lstExtents.GetValue(extIter, 1); + ExtentType extent = new ExtentType + { + Start = (ulong)lstExtents.GetValue(extIter, 0), + End = (ulong)lstExtents.GetValue(extIter, 1) + }; extents.Add(extent); } while(lstExtents.IterNext(ref extIter)); + dump.Extents = extents.ToArray(); } dumps.Add(dump); } while(lstDumpHw.IterNext(ref outIter)); + Metadata.DumpHardwareArray = dumps.ToArray(); } @@ -1962,24 +2005,24 @@ namespace osrepodbmgr protected void OnBtnCancelPartitionClicked(object sender, EventArgs e) { - btnCancelPartition.Visible = false; - btnApplyPartition.Visible = false; - btnRemovePartition.Visible = true; - btnEditPartition.Visible = true; - btnAddPartition.Visible = true; - lblPartitionSequence.Visible = false; - spPartitionSequence.Visible = false; - lblPartitionStart.Visible = false; - txtPartitionStart.Visible = false; - lblPartitionEnd.Visible = false; - txtPartitionEnd.Visible = false; - lblPartitionType.Visible = false; - txtPartitionType.Visible = false; - lblPartitionName.Visible = false; - txtPartitionName.Visible = false; + btnCancelPartition.Visible = false; + btnApplyPartition.Visible = false; + btnRemovePartition.Visible = true; + btnEditPartition.Visible = true; + btnAddPartition.Visible = true; + lblPartitionSequence.Visible = false; + spPartitionSequence.Visible = false; + lblPartitionStart.Visible = false; + txtPartitionStart.Visible = false; + lblPartitionEnd.Visible = false; + txtPartitionEnd.Visible = false; + lblPartitionType.Visible = false; + txtPartitionType.Visible = false; + lblPartitionName.Visible = false; + txtPartitionName.Visible = false; lblPartitionDescription.Visible = false; txtPartitionDescription.Visible = false; - frmFilesystems.Visible = false; + frmFilesystems.Visible = false; } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/dlgSettings.cs b/osrepodbmgr/dlgSettings.cs index 361c5d1..447b548 100644 --- a/osrepodbmgr/dlgSettings.cs +++ b/osrepodbmgr/dlgSettings.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.IO; using System.Threading; @@ -40,13 +41,12 @@ namespace osrepodbmgr public dlgSettings() { Build(); - txtTmp.Text = Core.Settings.Current.TemporaryFolder; - txtUnar.Text = Core.Settings.Current.UnArchiverPath; - txtDatabase.Text = Core.Settings.Current.DatabasePath; + txtTmp.Text = Core.Settings.Current.TemporaryFolder; + txtUnar.Text = Core.Settings.Current.UnArchiverPath; + txtDatabase.Text = Core.Settings.Current.DatabasePath; txtRepository.Text = Core.Settings.Current.RepositoryPath; - if(!string.IsNullOrWhiteSpace(txtUnar.Text)) - CheckUnar(); + if(!string.IsNullOrWhiteSpace(txtUnar.Text)) CheckUnar(); CellRendererText textCell = new CellRendererText(); cmbCompAlg.Clear(); @@ -56,45 +56,43 @@ namespace osrepodbmgr cmbCompAlg.Model = lstCompAlgs; lstCompAlgs.Clear(); - foreach(AlgoEnum type in Enum.GetValues(typeof(AlgoEnum))) - lstCompAlgs.AppendValues(type.ToString()); + foreach(AlgoEnum type in Enum.GetValues(typeof(AlgoEnum))) lstCompAlgs.AppendValues(type.ToString()); cmbCompAlg.Active = 0; - TreeIter iter; - cmbCompAlg.Model.GetIterFirst(out iter); + cmbCompAlg.Model.GetIterFirst(out TreeIter iter); do { - if((string)cmbCompAlg.Model.GetValue(iter, 0) == Core.Settings.Current.CompressionAlgorithm.ToString()) - { - cmbCompAlg.SetActiveIter(iter); - break; - } + if((string)cmbCompAlg.Model.GetValue(iter, 0) != + Core.Settings.Current.CompressionAlgorithm.ToString()) continue; + + cmbCompAlg.SetActiveIter(iter); + break; } while(cmbCompAlg.Model.IterNext(ref iter)); - spClamdPort.Value = 3310; + spClamdPort.Value = 3310; chkAntivirus.Active = Core.Settings.Current.UseAntivirus; - frmClamd.Visible = chkAntivirus.Active; + frmClamd.Visible = chkAntivirus.Active; if(Core.Settings.Current.UseAntivirus && Core.Settings.Current.UseClamd) { - chkClamd.Active = Core.Settings.Current.UseClamd; - txtClamdHost.Text = Core.Settings.Current.ClamdHost; - spClamdPort.Value = Core.Settings.Current.ClamdPort; - chkClamdIsLocal.Active = Core.Settings.Current.ClamdIsLocal; - chkClamd.Sensitive = true; + chkClamd.Active = Core.Settings.Current.UseClamd; + txtClamdHost.Text = Core.Settings.Current.ClamdHost; + spClamdPort.Value = Core.Settings.Current.ClamdPort; + chkClamdIsLocal.Active = Core.Settings.Current.ClamdIsLocal; + chkClamd.Sensitive = true; chkClamdIsLocal.Sensitive = true; - txtClamdHost.Sensitive = true; - spClamdPort.Sensitive = true; - btnClamdTest.Sensitive = true; - } - if(Core.Settings.Current.UseAntivirus && Core.Settings.Current.UseVirusTotal) - { - chkVirusTotal.Active = true; - chkVirusTotal.Sensitive = true; - txtVirusTotal.Sensitive = true; - txtVirusTotal.Text = Core.Settings.Current.VirusTotalKey; - btnVirusTotal.Sensitive = true; + txtClamdHost.Sensitive = true; + spClamdPort.Sensitive = true; + btnClamdTest.Sensitive = true; } + + if(!Core.Settings.Current.UseAntivirus || !Core.Settings.Current.UseVirusTotal) return; + + chkVirusTotal.Active = true; + chkVirusTotal.Sensitive = true; + txtVirusTotal.Sensitive = true; + txtVirusTotal.Text = Core.Settings.Current.VirusTotalKey; + btnVirusTotal.Sensitive = true; } protected void OnBtnCancelClicked(object sender, EventArgs e) @@ -105,65 +103,65 @@ namespace osrepodbmgr protected void OnBtnApplyClicked(object sender, EventArgs e) { if(chkAntivirus.Active && chkClamd.Active) - { if(string.IsNullOrEmpty(txtClamdHost.Text)) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "clamd host cannot be empty"); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "clamd host cannot be empty"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - } - // TODO: Check sanity - Core.Settings.Current.TemporaryFolder = txtTmp.Text; - Core.Settings.Current.UnArchiverPath = txtUnar.Text; - Core.Settings.Current.DatabasePath = txtDatabase.Text; - Core.Settings.Current.RepositoryPath = txtRepository.Text; - Core.Settings.Current.UseAntivirus = chkAntivirus.Active; - Core.Settings.Current.UseClamd = chkClamd.Active; - Core.Settings.Current.ClamdHost = txtClamdHost.Text; - Core.Settings.Current.ClamdPort = (ushort)spClamdPort.Value; - Core.Settings.Current.ClamdIsLocal = chkClamdIsLocal.Active; + Core.Settings.Current.TemporaryFolder = txtTmp.Text; + Core.Settings.Current.UnArchiverPath = txtUnar.Text; + Core.Settings.Current.DatabasePath = txtDatabase.Text; + Core.Settings.Current.RepositoryPath = txtRepository.Text; + Core.Settings.Current.UseAntivirus = chkAntivirus.Active; + Core.Settings.Current.UseClamd = chkClamd.Active; + Core.Settings.Current.ClamdHost = txtClamdHost.Text; + Core.Settings.Current.ClamdPort = (ushort)spClamdPort.Value; + Core.Settings.Current.ClamdIsLocal = chkClamdIsLocal.Active; Core.Settings.Current.CompressionAlgorithm = (AlgoEnum)Enum.Parse(typeof(AlgoEnum), cmbCompAlg.ActiveText); if(!chkClamd.Active || !chkAntivirus.Active) { - Core.Settings.Current.UseClamd = false; - Core.Settings.Current.ClamdHost = null; - Core.Settings.Current.ClamdPort = 3310; + Core.Settings.Current.UseClamd = false; + Core.Settings.Current.ClamdHost = null; + Core.Settings.Current.ClamdPort = 3310; Core.Settings.Current.ClamdIsLocal = false; } + if(chkVirusTotal.Active && chkAntivirus.Active) { Core.Settings.Current.UseVirusTotal = true; Core.Settings.Current.VirusTotalKey = txtVirusTotal.Text; - Core.Workers.InitVirusTotal(Core.Settings.Current.VirusTotalKey); + Workers.InitVirusTotal(Core.Settings.Current.VirusTotalKey); } else { Core.Settings.Current.UseVirusTotal = false; Core.Settings.Current.VirusTotalKey = null; } + Core.Settings.SaveSettings(); - Core.Workers.CloseDB(); - Core.Workers.InitDB(); - Context.clamdVersion = null; - Core.Workers.InitClamd(); + Workers.CloseDB(); + Workers.InitDB(); + Context.ClamdVersion = null; + Workers.InitClamd(); Context.CheckUnar(); btnDialog.Click(); } protected void OnBtnUnarClicked(object sender, EventArgs e) { - FileChooserDialog dlgFile = new FileChooserDialog("Choose UnArchiver executable", this, FileChooserAction.Open, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFile.SelectMultiple = false; + FileChooserDialog dlgFile = + new FileChooserDialog("Choose UnArchiver executable", this, FileChooserAction.Open, "Cancel", + ResponseType.Cancel, "Choose", ResponseType.Accept) {SelectMultiple = false}; dlgFile.SetCurrentFolder(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); if(dlgFile.Run() == (int)ResponseType.Accept) { - txtUnar.Text = dlgFile.Filename; + txtUnar.Text = dlgFile.Filename; lblUnarVersion.Visible = false; CheckUnar(); } @@ -173,39 +171,33 @@ namespace osrepodbmgr protected void OnBtnTmpClicked(object sender, EventArgs e) { - FileChooserDialog dlgFolder = new FileChooserDialog("Choose temporary folder", this, FileChooserAction.SelectFolder, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + FileChooserDialog dlgFolder = + new FileChooserDialog("Choose temporary folder", this, FileChooserAction.SelectFolder, "Cancel", + ResponseType.Cancel, "Choose", ResponseType.Accept) {SelectMultiple = false}; dlgFolder.SetCurrentFolder(System.IO.Path.GetTempPath()); - if(dlgFolder.Run() == (int)ResponseType.Accept) - { - txtTmp.Text = dlgFolder.Filename; - } + if(dlgFolder.Run() == (int)ResponseType.Accept) txtTmp.Text = dlgFolder.Filename; dlgFolder.Destroy(); } protected void OnBtnRepositoryClicked(object sender, EventArgs e) { - FileChooserDialog dlgFolder = new FileChooserDialog("Choose repository folder", this, FileChooserAction.SelectFolder, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + FileChooserDialog dlgFolder = + new FileChooserDialog("Choose repository folder", this, FileChooserAction.SelectFolder, "Cancel", + ResponseType.Cancel, "Choose", ResponseType.Accept) {SelectMultiple = false}; dlgFolder.SetCurrentFolder(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); - if(dlgFolder.Run() == (int)ResponseType.Accept) - { - txtRepository.Text = dlgFolder.Filename; - } + if(dlgFolder.Run() == (int)ResponseType.Accept) txtRepository.Text = dlgFolder.Filename; dlgFolder.Destroy(); } protected void OnBtnDatabaseClicked(object sender, EventArgs e) { - FileChooserDialog dlgFile = new FileChooserDialog("Choose database to open/create", this, FileChooserAction.Save, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFile.SelectMultiple = false; + FileChooserDialog dlgFile = + new FileChooserDialog("Choose database to open/create", this, FileChooserAction.Save, "Cancel", + ResponseType.Cancel, "Choose", ResponseType.Accept) {SelectMultiple = false}; dlgFile.SetCurrentFolder(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); dlgFile.SetFilename("Core.db"); @@ -213,50 +205,45 @@ namespace osrepodbmgr { if(File.Exists(dlgFile.Filename)) { - DBCore _dbCore = new SQLite(); - bool notDb = false; + DbCore dbCore = new SQLite(); + bool notDb = false; - try - { - notDb |= !_dbCore.OpenDB(dlgFile.Filename, null, null, null); - } - catch - { - notDb = true; - } + try { notDb |= !dbCore.OpenDb(dlgFile.Filename, null, null, null); } + catch { notDb = true; } if(notDb) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Cannot open specified file as a database, please choose another."); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, + ButtonsType.Ok, + "Cannot open specified file as a database, please choose another."); dlgMsg.Run(); dlgMsg.Destroy(); dlgFile.Destroy(); return; } - _dbCore.CloseDB(); + + dbCore.CloseDb(); } - else { - DBCore _dbCore = new SQLite(); - bool notDb = false; + else + { + DbCore dbCore = new SQLite(); + bool notDb = false; - try - { - notDb |= !_dbCore.CreateDB(dlgFile.Filename, null, null, null); - } - catch - { - notDb = true; - } + try { notDb |= !dbCore.CreateDb(dlgFile.Filename, null, null, null); } + catch { notDb = true; } if(notDb) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Cannot create a database in the specified file as a database."); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, + ButtonsType.Ok, + "Cannot create a database in the specified file as a database."); dlgMsg.Run(); dlgMsg.Destroy(); dlgFile.Destroy(); return; } - _dbCore.CloseDB(); + + dbCore.CloseDb(); } txtDatabase.Text = dlgFile.Filename; @@ -267,12 +254,12 @@ namespace osrepodbmgr void CheckUnar() { - Core.Workers.FinishedWithText += CheckUnarFinished; - Core.Workers.Failed += CheckUnarFailed; + Workers.FinishedWithText += CheckUnarFinished; + Workers.Failed += CheckUnarFailed; - oldUnarPath = Core.Settings.Current.UnArchiverPath; + oldUnarPath = Core.Settings.Current.UnArchiverPath; Core.Settings.Current.UnArchiverPath = txtUnar.Text; - Thread thdCheckUnar = new Thread(Core.Workers.CheckUnar); + Thread thdCheckUnar = new Thread(Workers.CheckUnar); thdCheckUnar.Start(); } @@ -280,11 +267,11 @@ namespace osrepodbmgr { Application.Invoke(delegate { - Core.Workers.FinishedWithText -= CheckUnarFinished; - Core.Workers.Failed -= CheckUnarFailed; + Workers.FinishedWithText -= CheckUnarFinished; + Workers.Failed -= CheckUnarFailed; - lblUnarVersion.Text = text; - lblUnarVersion.Visible = true; + lblUnarVersion.Text = text; + lblUnarVersion.Visible = true; Core.Settings.Current.UnArchiverPath = oldUnarPath; }); } @@ -293,15 +280,13 @@ namespace osrepodbmgr { Application.Invoke(delegate { - Core.Workers.FinishedWithText -= CheckUnarFinished; - Core.Workers.Failed -= CheckUnarFailed; + Workers.FinishedWithText -= CheckUnarFinished; + Workers.Failed -= CheckUnarFailed; - if(string.IsNullOrWhiteSpace(oldUnarPath)) - txtUnar.Text = ""; - else - txtUnar.Text = oldUnarPath; + txtUnar.Text = string.IsNullOrWhiteSpace(oldUnarPath) ? "" : oldUnarPath; Core.Settings.Current.UnArchiverPath = oldUnarPath; - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); }); @@ -309,16 +294,16 @@ namespace osrepodbmgr protected void OnChkAntivirusToggled(object sender, EventArgs e) { - frmClamd.Visible = chkAntivirus.Active; + frmClamd.Visible = chkAntivirus.Active; frmVirusTotal.Visible = chkAntivirus.Active; } protected void OnChkClamdToggled(object sender, EventArgs e) { - txtClamdHost.Sensitive = chkClamd.Active; - spClamdPort.Sensitive = chkClamd.Active; - btnClamdTest.Sensitive = chkClamd.Active; - lblClamdVersion.Visible = false; + txtClamdHost.Sensitive = chkClamd.Active; + spClamdPort.Sensitive = chkClamd.Active; + btnClamdTest.Sensitive = chkClamd.Active; + lblClamdVersion.Visible = false; chkClamdIsLocal.Sensitive = chkClamd.Active; } @@ -328,17 +313,18 @@ namespace osrepodbmgr if(string.IsNullOrEmpty(txtClamdHost.Text)) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "clamd host cannot be empty"); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "clamd host cannot be empty"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - string oldVersion = Context.clamdVersion; - Context.clamdVersion = null; + string oldVersion = Context.ClamdVersion; + Context.ClamdVersion = null; - string oldHost = Core.Settings.Current.ClamdHost; - ushort oldPort = Core.Settings.Current.ClamdPort; + string oldHost = Core.Settings.Current.ClamdHost; + ushort oldPort = Core.Settings.Current.ClamdPort; Core.Settings.Current.ClamdHost = txtClamdHost.Text; Core.Settings.Current.ClamdPort = (ushort)spClamdPort.Value; @@ -347,16 +333,17 @@ namespace osrepodbmgr Core.Settings.Current.ClamdHost = oldHost; Core.Settings.Current.ClamdPort = oldPort; - if(string.IsNullOrEmpty(Context.clamdVersion)) + if(string.IsNullOrEmpty(Context.ClamdVersion)) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Cannot connect to clamd"); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Cannot connect to clamd"); dlgMsg.Run(); dlgMsg.Destroy(); return; } - lblClamdVersion.Text = Context.clamdVersion; - Context.clamdVersion = oldVersion; + lblClamdVersion.Text = Context.ClamdVersion; + Context.ClamdVersion = oldVersion; lblClamdVersion.Visible = true; } @@ -364,17 +351,16 @@ namespace osrepodbmgr { txtVirusTotal.Sensitive = chkVirusTotal.Active; btnVirusTotal.Sensitive = chkVirusTotal.Active; - lblVirusTotal.Visible = false; + lblVirusTotal.Visible = false; } protected void OnBtnVirusTotalClicked(object sender, EventArgs e) { Workers.Failed += VirusTotalTestFailed; - if(Workers.TestVirusTotal(txtVirusTotal.Text)) - { - lblVirusTotal.Visible = true; - lblVirusTotal.Text = "Working!"; - } + if(!Workers.TestVirusTotal(txtVirusTotal.Text)) return; + + lblVirusTotal.Visible = true; + lblVirusTotal.Text = "Working!"; } void VirusTotalTestFailed(string text) @@ -384,4 +370,4 @@ namespace osrepodbmgr dlgMsg.Destroy(); } } -} +} \ No newline at end of file diff --git a/osrepodbmgr/frmMain.cs b/osrepodbmgr/frmMain.cs index 5e209f4..a61200b 100644 --- a/osrepodbmgr/frmMain.cs +++ b/osrepodbmgr/frmMain.cs @@ -25,6 +25,7 @@ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // + using System; using System.Collections.Generic; using System.Threading; @@ -35,59 +36,60 @@ namespace osrepodbmgr { public partial class frmMain : Window { - ListStore osView; ListStore fileView; - Thread thdPulseProgress; - Thread thdPopulateOSes; - Thread thdCompressTo; - Thread thdSaveAs; - Thread thdPopulateFiles; - bool populatingFiles; - bool scanningFiles; - Thread thdScanFile; - TreeIter outIter; - Thread thdCleanFiles; - int infectedFiles; + int infectedFiles; + ListStore osView; + TreeIter outIter; + bool populatingFiles; + bool scanningFiles; + Thread thdCleanFiles; + Thread thdCompressTo; + Thread thdPopulateFiles; + Thread thdPopulateOSes; + Thread thdPulseProgress; + Thread thdSaveAs; + Thread thdScanFile; - public frmMain() : - base(WindowType.Toplevel) + public frmMain() : base(WindowType.Toplevel) { Build(); Workers.InitDB(); - CellRendererText developerCell = new CellRendererText(); - CellRendererText productCell = new CellRendererText(); - CellRendererText versionCell = new CellRendererText(); - CellRendererText languagesCell = new CellRendererText(); - CellRendererText architectureCell = new CellRendererText(); - CellRendererText machineCell = new CellRendererText(); - CellRendererText formatCell = new CellRendererText(); - CellRendererText descriptionCell = new CellRendererText(); - CellRendererToggle oemCell = new CellRendererToggle(); - CellRendererToggle upgradeCell = new CellRendererToggle(); - CellRendererToggle updateCell = new CellRendererToggle(); - CellRendererToggle sourceCell = new CellRendererToggle(); - CellRendererToggle filesCell = new CellRendererToggle(); - CellRendererToggle netinstallCell = new CellRendererToggle(); + CellRendererText developerCell = new CellRendererText(); + CellRendererText productCell = new CellRendererText(); + CellRendererText versionCell = new CellRendererText(); + CellRendererText languagesCell = new CellRendererText(); + CellRendererText architectureCell = new CellRendererText(); + CellRendererText machineCell = new CellRendererText(); + CellRendererText formatCell = new CellRendererText(); + CellRendererText descriptionCell = new CellRendererText(); + CellRendererToggle oemCell = new CellRendererToggle(); + CellRendererToggle upgradeCell = new CellRendererToggle(); + CellRendererToggle updateCell = new CellRendererToggle(); + CellRendererToggle sourceCell = new CellRendererToggle(); + CellRendererToggle filesCell = new CellRendererToggle(); + CellRendererToggle netinstallCell = new CellRendererToggle(); - TreeViewColumn developerColumn = new TreeViewColumn("Developer", developerCell, "text", 0); - TreeViewColumn productColumn = new TreeViewColumn("Product", productCell, "text", 1); - TreeViewColumn versionColumn = new TreeViewColumn("Version", versionCell, "text", 2); - TreeViewColumn languagesColumn = new TreeViewColumn("Languages", languagesCell, "text", 3); + TreeViewColumn developerColumn = new TreeViewColumn("Developer", developerCell, "text", 0); + TreeViewColumn productColumn = new TreeViewColumn("Product", productCell, "text", 1); + TreeViewColumn versionColumn = new TreeViewColumn("Version", versionCell, "text", 2); + TreeViewColumn languagesColumn = new TreeViewColumn("Languages", languagesCell, "text", 3); TreeViewColumn architectureColumn = new TreeViewColumn("Architecture", architectureCell, "text", 4); - TreeViewColumn machineColumn = new TreeViewColumn("Machine", machineCell, "text", 5); - TreeViewColumn formatColumn = new TreeViewColumn("Format", formatCell, "text", 6); - TreeViewColumn descriptionColumn = new TreeViewColumn("Description", descriptionCell, "text"); - TreeViewColumn oemColumn = new TreeViewColumn("OEM?", oemCell, "active", 8); - TreeViewColumn upgradeColumn = new TreeViewColumn("Upgrade?", upgradeCell, "active", 9); - TreeViewColumn updateColumn = new TreeViewColumn("Update?", updateCell, "active", 10); - TreeViewColumn sourceColumn = new TreeViewColumn("Source?", sourceCell, "active", 11); - TreeViewColumn filesColumn = new TreeViewColumn("Files?", filesCell, "active", 12); - TreeViewColumn netinstallColumn = new TreeViewColumn("NetInstall?", netinstallCell, "active", 13); + TreeViewColumn machineColumn = new TreeViewColumn("Machine", machineCell, "text", 5); + TreeViewColumn formatColumn = new TreeViewColumn("Format", formatCell, "text", 6); + TreeViewColumn descriptionColumn = new TreeViewColumn("Description", descriptionCell, "text"); + TreeViewColumn oemColumn = new TreeViewColumn("OEM?", oemCell, "active", 8); + TreeViewColumn upgradeColumn = new TreeViewColumn("Upgrade?", upgradeCell, "active", 9); + TreeViewColumn updateColumn = new TreeViewColumn("Update?", updateCell, "active", 10); + TreeViewColumn sourceColumn = new TreeViewColumn("Source?", sourceCell, "active", 11); + TreeViewColumn filesColumn = new TreeViewColumn("Files?", filesCell, "active", 12); + TreeViewColumn netinstallColumn = new TreeViewColumn("NetInstall?", netinstallCell, "active", 13); - osView = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), - typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(long), typeof(string)); + osView = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(bool), typeof(bool), + typeof(bool), typeof(bool), typeof(bool), typeof(bool), typeof(long), + typeof(string)); treeOSes.Model = osView; treeOSes.AppendColumn(developerColumn); @@ -107,24 +109,33 @@ namespace osrepodbmgr treeOSes.Selection.Mode = SelectionMode.Single; - CellRendererText hashCell = new CellRendererText(); - CellRendererText lengthCell = new CellRendererText(); - CellRendererToggle crackCell = new CellRendererToggle(); + CellRendererText hashCell = new CellRendererText(); + CellRendererText lengthCell = new CellRendererText(); + CellRendererToggle crackCell = new CellRendererToggle(); CellRendererToggle hasvirusCell = new CellRendererToggle(); - CellRendererText clamtimeCell = new CellRendererText(); - CellRendererText vtottimeCell = new CellRendererText(); - CellRendererText virusCell = new CellRendererText(); + CellRendererText clamtimeCell = new CellRendererText(); + CellRendererText vtottimeCell = new CellRendererText(); + CellRendererText virusCell = new CellRendererText(); - TreeViewColumn hashColumn = new TreeViewColumn("SHA256", hashCell, "text", 0, "background", 7, "foreground", 8); - TreeViewColumn lengthColumn = new TreeViewColumn("Length", lengthCell, "text", 1, "background", 7, "foreground", 8); - TreeViewColumn crackColumn = new TreeViewColumn("Crack?", crackCell, "active", 2); - TreeViewColumn hasvirusColumn = new TreeViewColumn("Has virus?", hasvirusCell, "active", 3, "inconsistent", 9); - TreeViewColumn clamtimeColumn = new TreeViewColumn("Last scanned with clamd", clamtimeCell, "text", 4, "background", 7, "foreground", 8); - TreeViewColumn vtottimeColumn = new TreeViewColumn("Last checked on VirusTotal", vtottimeCell, "text", 5, "background", 7, "foreground", 8); - TreeViewColumn virusColumn = new TreeViewColumn("Virus", virusCell, "text", 6, "background", 7, "foreground", 8); + TreeViewColumn hashColumn = + new TreeViewColumn("SHA256", hashCell, "text", 0, "background", 7, "foreground", 8); + TreeViewColumn lengthColumn = + new TreeViewColumn("Length", lengthCell, "text", 1, "background", 7, + "foreground", 8); + TreeViewColumn crackColumn = new TreeViewColumn("Crack?", crackCell, "active", 2); + TreeViewColumn hasvirusColumn = + new TreeViewColumn("Has virus?", hasvirusCell, "active", 3, "inconsistent", 9); + TreeViewColumn clamtimeColumn = + new TreeViewColumn("Last scanned with clamd", clamtimeCell, "text", 4, "background", 7, "foreground", + 8); + TreeViewColumn vtottimeColumn = new TreeViewColumn("Last checked on VirusTotal", vtottimeCell, "text", 5, + "background", 7, "foreground", 8); + TreeViewColumn virusColumn = + new TreeViewColumn("Virus", virusCell, "text", 6, "background", 7, "foreground", 8); - fileView = new ListStore(typeof(string), typeof(long), typeof(bool), typeof(bool), typeof(string), typeof(string), - typeof(string), typeof(string), typeof(string), typeof(bool), typeof(bool)); + fileView = new ListStore(typeof(string), typeof(long), typeof(bool), typeof(bool), typeof(string), + typeof(string), typeof(string), typeof(string), typeof(string), typeof(bool), + typeof(bool)); treeFiles.Model = fileView; treeFiles.AppendColumn(hashColumn); @@ -135,27 +146,24 @@ namespace osrepodbmgr treeFiles.AppendColumn(vtottimeColumn); treeFiles.AppendColumn(virusColumn); - treeFiles.Selection.Mode = SelectionMode.Single; + treeFiles.Selection.Mode = SelectionMode.Single; treeFiles.Selection.Changed += treeFilesSelectionChanged; thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgress.Pulse(); - }); + Application.Invoke(delegate { prgProgress.Pulse(); }); Thread.Sleep(66); } }); - Workers.Failed += LoadOSesFailed; - Workers.Finished += LoadOSesFinished; + Workers.Failed += LoadOSesFailed; + Workers.Finished += LoadOSesFinished; Workers.UpdateProgress += UpdateProgress; - Workers.AddOS += AddOS; - Workers.AddFile += AddFile; - Workers.AddFiles += AddFiles; - thdPopulateOSes = new Thread(Workers.GetAllOSes); + Workers.AddOS += AddOs; + Workers.AddFile += AddFile; + Workers.AddFiles += AddFiles; + thdPopulateOSes = new Thread(Workers.GetAllOSes); thdPopulateOSes.Start(); } @@ -164,22 +172,24 @@ namespace osrepodbmgr Application.Invoke(delegate { MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, - string.Format("Error {0} when populating OSes tree, exiting...", text)); + $"Error {text} when populating OSes tree, exiting..."); dlgMsg.Run(); dlgMsg.Destroy(); - Workers.Failed -= LoadOSesFailed; - Workers.Finished -= LoadOSesFinished; + Workers.Failed -= LoadOSesFailed; + Workers.Finished -= LoadOSesFinished; Workers.UpdateProgress -= UpdateProgress; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateOSes != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } + Application.Quit(); }); } @@ -188,60 +198,58 @@ namespace osrepodbmgr { Application.Invoke(delegate { - Workers.Failed -= LoadOSesFailed; - Workers.Finished -= LoadOSesFinished; + Workers.Failed -= LoadOSesFailed; + Workers.Finished -= LoadOSesFinished; Workers.UpdateProgress -= UpdateProgress; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateOSes != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } + lblProgress.Visible = false; prgProgress.Visible = false; - treeOSes.Sensitive = true; - btnAdd.Visible = true; - btnRemove.Visible = true; + treeOSes.Sensitive = true; + btnAdd.Visible = true; + btnRemove.Visible = true; btnCompress.Visible = true; - btnSave.Visible = true; - btnHelp.Visible = true; + btnSave.Visible = true; + btnHelp.Visible = true; btnSettings.Visible = true; lblOSStatus.Visible = true; - lblOSStatus.Text = string.Format("{0} operating systems", osView.IterNChildren()); + lblOSStatus.Text = $"{osView.IterNChildren()} operating systems"; }); } - public void UpdateProgress(string text, string inner, long current, long maximum) + void UpdateProgress(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgress.Text = text; - prgProgress.Text = inner; - if(maximum > 0) - prgProgress.Fraction = current / (double)maximum; - else - prgProgress.Pulse(); + lblProgress.Text = text; + prgProgress.Text = inner; + if(maximum > 0) prgProgress.Fraction = current / (double)maximum; + else prgProgress.Pulse(); }); } - public void UpdateProgress2(string text, string inner, long current, long maximum) + void UpdateProgress2(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgress2.Text = text; - prgProgress2.Text = inner; - if(maximum > 0) - prgProgress2.Fraction = current / (double)maximum; - else - prgProgress2.Pulse(); + lblProgress2.Text = text; + prgProgress2.Text = inner; + if(maximum > 0) prgProgress2.Fraction = current / (double)maximum; + else prgProgress2.Pulse(); }); } - void AddOS(DBEntry os) + void AddOs(DbEntry os) { Application.Invoke(delegate { @@ -251,20 +259,20 @@ namespace osrepodbmgr thdPulseProgress = null; } - osView.AppendValues(os.developer, os.product, os.version, os.languages, os.architecture, os.machine, - os.format, os.description, os.oem, os.upgrade, os.update, os.source, - os.files, os.netinstall, os.id, os.mdid); + osView.AppendValues(os.Developer, os.Product, os.Version, os.Languages, os.Architecture, os.Machine, + os.Format, os.Description, os.Oem, os.Upgrade, os.Update, os.Source, os.Files, + os.Netinstall, os.Id, os.Mdid); }); } protected void OnBtnAddClicked(object sender, EventArgs e) { - dlgAdd _dlgAdd = new dlgAdd(); - _dlgAdd.OnAddedOS += (os) => + dlgAdd _dlgAdd = new dlgAdd(); + _dlgAdd.OnAddedOS += os => { - osView.AppendValues(os.developer, os.product, os.version, os.languages, os.architecture, os.machine, - os.format, os.description, os.oem, os.upgrade, os.update, os.source, - os.files, os.netinstall, os.id, os.mdid); + osView.AppendValues(os.Developer, os.Product, os.Version, os.Languages, os.Architecture, os.Machine, + os.Format, os.Description, os.Oem, os.Upgrade, os.Update, os.Source, os.Files, + os.Netinstall, os.Id, os.Mdid); }; _dlgAdd.Run(); _dlgAdd.Destroy(); @@ -272,92 +280,89 @@ namespace osrepodbmgr protected void OnBtnRemoveClicked(object sender, EventArgs e) { - TreeIter osIter; - if(treeOSes.Selection.GetSelected(out osIter)) + if(!treeOSes.Selection.GetSelected(out TreeIter osIter)) return; + + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, + "Are you sure you want to remove the selected OS?"); + + if(dlgMsg.Run() == (int)ResponseType.Yes) { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, - "Are you sure you want to remove the selected OS?"); - - if(dlgMsg.Run() == (int)ResponseType.Yes) - { - Workers.RemoveOS((long)osView.GetValue(osIter, 14), (string)osView.GetValue(osIter, 15)); - osView.Remove(ref osIter); - } - - dlgMsg.Destroy(); + Workers.RemoveOS((long)osView.GetValue(osIter, 14), (string)osView.GetValue(osIter, 15)); + osView.Remove(ref osIter); } + + dlgMsg.Destroy(); } protected void OnBtnSaveClicked(object sender, EventArgs e) { - TreeIter osIter; - if(treeOSes.Selection.GetSelected(out osIter)) + if(!treeOSes.Selection.GetSelected(out TreeIter osIter)) return; + + Context.DbInfo.Id = (long)osView.GetValue(osIter, 14); + + FileChooserDialog dlgFolder = + new FileChooserDialog("Save to...", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, + "Choose", ResponseType.Accept) {SelectMultiple = false}; + + if(dlgFolder.Run() == (int)ResponseType.Accept) { - Context.dbInfo.id = (long)osView.GetValue(osIter, 14); + Context.Path = dlgFolder.Filename; - FileChooserDialog dlgFolder = new FileChooserDialog("Save to...", this, FileChooserAction.SelectFolder, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + dlgFolder.Destroy(); - if(dlgFolder.Run() == (int)ResponseType.Accept) + lblProgress.Visible = true; + prgProgress.Visible = true; + lblProgress2.Visible = true; + prgProgress2.Visible = true; + treeOSes.Sensitive = false; + btnAdd.Visible = false; + btnRemove.Visible = false; + btnCompress.Visible = false; + btnSave.Visible = false; + btnHelp.Visible = false; + btnSettings.Visible = false; + btnStop.Visible = true; + + if(thdPulseProgress != null) { - Context.path = dlgFolder.Filename; - - dlgFolder.Destroy(); - - lblProgress.Visible = true; - prgProgress.Visible = true; - lblProgress2.Visible = true; - prgProgress2.Visible = true; - treeOSes.Sensitive = false; - btnAdd.Visible = false; - btnRemove.Visible = false; - btnCompress.Visible = false; - btnSave.Visible = false; - btnHelp.Visible = false; - btnSettings.Visible = false; - btnStop.Visible = true; - - if(thdPulseProgress != null) - { - thdPulseProgress.Abort(); - thdPulseProgress = null; - } - Workers.Failed += SaveAsFailed; - Workers.Finished += SaveAsFinished; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; - thdSaveAs = new Thread(Workers.SaveAs); - thdSaveAs.Start(); + thdPulseProgress.Abort(); + thdPulseProgress = null; } - else - dlgFolder.Destroy(); + + Workers.Failed += SaveAsFailed; + Workers.Finished += SaveAsFinished; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; + thdSaveAs = new Thread(Workers.SaveAs); + thdSaveAs.Start(); } + else dlgFolder.Destroy(); } - public void SaveAsFailed(string text) + void SaveAsFailed(string text) { Application.Invoke(delegate { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); - lblProgress.Visible = false; - prgProgress.Visible = false; + lblProgress.Visible = false; + prgProgress.Visible = false; lblProgress2.Visible = false; prgProgress2.Visible = false; - treeOSes.Sensitive = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = true; - btnSave.Visible = true; - btnHelp.Visible = true; - btnSettings.Visible = true; - btnStop.Visible = false; + treeOSes.Sensitive = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = true; + btnSave.Visible = true; + btnHelp.Visible = true; + btnSettings.Visible = true; + btnStop.Visible = false; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= SaveAsFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= SaveAsFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdPulseProgress != null) @@ -365,35 +370,36 @@ namespace osrepodbmgr thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdSaveAs != null) { thdSaveAs.Abort(); thdSaveAs = null; } - Context.path = null; + Context.Path = null; }); } - public void SaveAsFinished() + void SaveAsFinished() { Application.Invoke(delegate { - lblProgress.Visible = false; - prgProgress.Visible = false; + lblProgress.Visible = false; + prgProgress.Visible = false; lblProgress2.Visible = false; prgProgress2.Visible = false; - treeOSes.Sensitive = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = true; - btnSave.Visible = true; - btnHelp.Visible = true; - btnSettings.Visible = true; - btnStop.Visible = false; + treeOSes.Sensitive = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = true; + btnSave.Visible = true; + btnHelp.Visible = true; + btnSettings.Visible = true; + btnStop.Visible = false; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= SaveAsFinished; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= SaveAsFinished; Workers.UpdateProgress -= UpdateProgress; if(thdPulseProgress != null) @@ -401,6 +407,7 @@ namespace osrepodbmgr thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdSaveAs != null) { thdSaveAs.Abort(); @@ -408,11 +415,11 @@ namespace osrepodbmgr } MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, - string.Format("Correctly saved to {0}", Context.path)); + $"Correctly saved to {Context.Path}"); dlgMsg.Run(); dlgMsg.Destroy(); - Context.path = null; + Context.Path = null; }); } @@ -438,13 +445,13 @@ namespace osrepodbmgr protected void OnBtnStopClicked(object sender, EventArgs e) { - Workers.Failed -= CompressToFailed; - Workers.Failed -= LoadOSesFailed; - Workers.Failed -= SaveAsFailed; - Workers.Finished -= CompressToFinished; - Workers.Finished -= LoadOSesFinished; - Workers.Finished -= SaveAsFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= CompressToFailed; + Workers.Failed -= LoadOSesFailed; + Workers.Failed -= SaveAsFailed; + Workers.Finished -= CompressToFinished; + Workers.Finished -= LoadOSesFinished; + Workers.Finished -= SaveAsFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdPulseProgress != null) @@ -452,21 +459,23 @@ namespace osrepodbmgr thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateOSes != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } + if(thdCompressTo != null) { thdPopulateOSes.Abort(); thdPopulateOSes = null; } - if(thdSaveAs != null) - { - thdSaveAs.Abort(); - thdSaveAs = null; - } + + if(thdSaveAs == null) return; + + thdSaveAs.Abort(); + thdSaveAs = null; } protected void OnDeleteEvent(object sender, DeleteEventArgs e) @@ -476,75 +485,74 @@ namespace osrepodbmgr protected void OnBtnCompressClicked(object sender, EventArgs e) { - TreeIter osIter; - if(treeOSes.Selection.GetSelected(out osIter)) + if(!treeOSes.Selection.GetSelected(out TreeIter osIter)) return; + + Context.DbInfo.Id = (long)osView.GetValue(osIter, 14); + + FileChooserDialog dlgFolder = + new FileChooserDialog("Compress to...", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, + "Choose", ResponseType.Accept) {SelectMultiple = false}; + + if(dlgFolder.Run() == (int)ResponseType.Accept) { - Context.dbInfo.id = (long)osView.GetValue(osIter, 14); + Context.Path = dlgFolder.Filename; - FileChooserDialog dlgFolder = new FileChooserDialog("Compress to...", this, FileChooserAction.Save, - "Cancel", ResponseType.Cancel, "Choose", ResponseType.Accept); - dlgFolder.SelectMultiple = false; + dlgFolder.Destroy(); - if(dlgFolder.Run() == (int)ResponseType.Accept) + lblProgress.Visible = true; + prgProgress.Visible = true; + lblProgress2.Visible = true; + prgProgress2.Visible = true; + treeOSes.Sensitive = false; + btnAdd.Visible = false; + btnRemove.Visible = false; + btnCompress.Visible = false; + btnSave.Visible = false; + btnHelp.Visible = false; + btnSettings.Visible = false; + btnStop.Visible = true; + + if(thdPulseProgress != null) { - Context.path = dlgFolder.Filename; - - dlgFolder.Destroy(); - - lblProgress.Visible = true; - prgProgress.Visible = true; - lblProgress2.Visible = true; - prgProgress2.Visible = true; - treeOSes.Sensitive = false; - btnAdd.Visible = false; - btnRemove.Visible = false; - btnCompress.Visible = false; - btnSave.Visible = false; - btnHelp.Visible = false; - btnSettings.Visible = false; - btnStop.Visible = true; - - if(thdPulseProgress != null) - { - thdPulseProgress.Abort(); - thdPulseProgress = null; - } - Workers.Failed += CompressToFailed; - Workers.Finished += CompressToFinished; - Workers.UpdateProgress += UpdateProgress; - Workers.UpdateProgress2 += UpdateProgress2; - thdCompressTo = new Thread(Workers.CompressTo); - thdCompressTo.Start(); + thdPulseProgress.Abort(); + thdPulseProgress = null; } - else - dlgFolder.Destroy(); + + Workers.Failed += CompressToFailed; + Workers.Finished += CompressToFinished; + Workers.UpdateProgress += UpdateProgress; + Workers.UpdateProgress2 += UpdateProgress2; + thdCompressTo = new Thread(Workers.CompressTo); + thdCompressTo.Start(); } + else dlgFolder.Destroy(); } public void CompressToFailed(string text) { Application.Invoke(delegate { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); - lblProgress.Visible = false; + lblProgress.Visible = false; lblProgress2.Visible = false; - prgProgress.Visible = false; + prgProgress.Visible = false; prgProgress2.Visible = false; - treeOSes.Sensitive = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = true; - btnSave.Visible = true; - btnHelp.Visible = true; - btnSettings.Visible = true; - btnStop.Visible = false; + treeOSes.Sensitive = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = true; + btnSave.Visible = true; + btnHelp.Visible = true; + btnSettings.Visible = true; + btnStop.Visible = false; - Workers.Failed -= CompressToFailed; - Workers.Finished -= CompressToFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= CompressToFailed; + Workers.Finished -= CompressToFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdPulseProgress != null) @@ -552,13 +560,14 @@ namespace osrepodbmgr thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdCompressTo != null) { thdCompressTo.Abort(); thdCompressTo = null; } - Context.path = null; + Context.Path = null; }); } @@ -566,22 +575,22 @@ namespace osrepodbmgr { Application.Invoke(delegate { - lblProgress.Visible = false; + lblProgress.Visible = false; lblProgress2.Visible = false; - prgProgress.Visible = false; + prgProgress.Visible = false; prgProgress2.Visible = false; - treeOSes.Sensitive = true; - btnAdd.Visible = true; - btnRemove.Visible = true; - btnCompress.Visible = true; - btnSave.Visible = true; - btnHelp.Visible = true; - btnSettings.Visible = true; - btnStop.Visible = false; + treeOSes.Sensitive = true; + btnAdd.Visible = true; + btnRemove.Visible = true; + btnCompress.Visible = true; + btnSave.Visible = true; + btnHelp.Visible = true; + btnSettings.Visible = true; + btnStop.Visible = false; - Workers.Failed -= CompressToFailed; - Workers.Finished -= CompressToFinished; - Workers.UpdateProgress -= UpdateProgress; + Workers.Failed -= CompressToFailed; + Workers.Finished -= CompressToFinished; + Workers.UpdateProgress -= UpdateProgress; Workers.UpdateProgress2 -= UpdateProgress2; if(thdPulseProgress != null) @@ -589,6 +598,7 @@ namespace osrepodbmgr thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdCompressTo != null) { thdCompressTo.Abort(); @@ -596,11 +606,11 @@ namespace osrepodbmgr } MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, - string.Format("Correctly compressed as {0}", Context.path)); + $"Correctly compressed as {Context.Path}"); dlgMsg.Run(); dlgMsg.Destroy(); - Context.path = null; + Context.Path = null; }); } @@ -608,16 +618,17 @@ namespace osrepodbmgr { if(populatingFiles) { - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; - Workers.AddFile -= AddFile; + Workers.AddFile -= AddFile; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateFiles != null) { thdPopulateFiles.Abort(); @@ -625,131 +636,124 @@ namespace osrepodbmgr } fileView.Clear(); - btnStopFiles.Visible = false; + btnStopFiles.Visible = false; btnPopulateFiles.Visible = true; } if(scanningFiles) - { if(thdScanFile != null) { thdScanFile.Abort(); thdScanFile = null; } - } + AllClamdFinished(); } protected void OnBtnToggleCrackClicked(object sender, EventArgs e) { - TreeIter fileIter; - if(treeFiles.Selection.GetSelected(out fileIter)) - { - string hash = (string)fileView.GetValue(fileIter, 0); - long length = (long)fileView.GetValue(fileIter, 1); - bool crack = !(bool)fileView.GetValue(fileIter, 2); - bool hasvirus = (bool)fileView.GetValue(fileIter, 3); - string clamtime = (string)fileView.GetValue(fileIter, 4); - string vttime = (string)fileView.GetValue(fileIter, 5); - string virus = (string)fileView.GetValue(fileIter, 6); - string color = (string)fileView.GetValue(fileIter, 7); - bool viruschecked = (bool)fileView.GetValue(fileIter, 9); + if(!treeFiles.Selection.GetSelected(out TreeIter fileIter)) return; - Workers.ToggleCrack(hash, crack); + string hash = (string)fileView.GetValue(fileIter, 0); + long length = (long)fileView.GetValue(fileIter, 1); + bool crack = !(bool)fileView.GetValue(fileIter, 2); + bool hasvirus = (bool)fileView.GetValue(fileIter, 3); + string clamtime = (string)fileView.GetValue(fileIter, 4); + string vttime = (string)fileView.GetValue(fileIter, 5); + string virus = (string)fileView.GetValue(fileIter, 6); + string color = (string)fileView.GetValue(fileIter, 7); + bool viruschecked = (bool)fileView.GetValue(fileIter, 9); - fileView.Remove(ref fileIter); - fileView.AppendValues(hash, length, crack, hasvirus, clamtime, vttime, virus, color, "black", viruschecked); - } + Workers.ToggleCrack(hash, crack); + + fileView.Remove(ref fileIter); + fileView.AppendValues(hash, length, crack, hasvirus, clamtime, vttime, virus, color, "black", viruschecked); } protected void OnBtnScanWithClamdClicked(object sender, EventArgs e) { - if(treeFiles.Selection.GetSelected(out outIter)) + if(!treeFiles.Selection.GetSelected(out outIter)) return; + + DbFile file = Workers.GetDBFile((string)fileView.GetValue(outIter, 0)); + + if(file == null) { - DBFile file = Workers.GetDBFile((string)fileView.GetValue(outIter, 0)); - - if(file == null) - { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, - "Cannot get file from database"); - dlgMsg.Run(); - dlgMsg.Destroy(); - return; - } - - treeFiles.Sensitive = false; - btnToggleCrack.Sensitive = false; - btnScanWithClamd.Sensitive = false; - btnCheckInVirusTotal.Sensitive = false; - prgProgressFiles1.Visible = true; - Workers.Failed += ClamdFailed; - Workers.ScanFinished += ClamdFinished; - Workers.UpdateProgress += UpdateVirusProgress; - - prgProgressFiles1.Text = "Scanning file with clamd."; - thdPulseProgress = new Thread(() => - { - while(true) - { - Application.Invoke(delegate - { - prgProgressFiles1.Pulse(); - }); - Thread.Sleep(66); - } - }); - thdPulseProgress.Start(); - thdScanFile = new Thread(() => Workers.ClamScanFileFromRepo(file)); - thdScanFile.Start(); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Cannot get file from database"); + dlgMsg.Run(); + dlgMsg.Destroy(); + return; } + + treeFiles.Sensitive = false; + btnToggleCrack.Sensitive = false; + btnScanWithClamd.Sensitive = false; + btnCheckInVirusTotal.Sensitive = false; + prgProgressFiles1.Visible = true; + Workers.Failed += ClamdFailed; + Workers.ScanFinished += ClamdFinished; + Workers.UpdateProgress += UpdateVirusProgress; + + prgProgressFiles1.Text = "Scanning file with clamd."; + thdPulseProgress = new Thread(() => + { + while(true) + { + Application.Invoke(delegate { prgProgressFiles1.Pulse(); }); + Thread.Sleep(66); + } + }); + thdPulseProgress.Start(); + thdScanFile = new Thread(() => Workers.ClamScanFileFromRepo(file)); + thdScanFile.Start(); } void ClamdFailed(string text) { Application.Invoke(delegate { - treeFiles.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnScanWithClamd.Sensitive = true; - btnCheckInVirusTotal.Sensitive = true; - prgProgressFiles1.Visible = false; - Workers.Failed -= ClamdFailed; - Workers.ScanFinished -= ClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - prgProgressFiles1.Text = ""; + treeFiles.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnScanWithClamd.Sensitive = true; + btnCheckInVirusTotal.Sensitive = true; + prgProgressFiles1.Visible = false; + Workers.Failed -= ClamdFailed; + Workers.ScanFinished -= ClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + prgProgressFiles1.Text = ""; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } - if(thdScanFile != null) - { - thdScanFile.Abort(); - thdScanFile = null; - } + + if(thdScanFile == null) return; + + thdScanFile.Abort(); + thdScanFile = null; }); } - void ClamdFinished(DBFile file) + void ClamdFinished(DbFile file) { Application.Invoke(delegate { - treeFiles.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnScanWithClamd.Sensitive = true; - btnCheckInVirusTotal.Sensitive = true; - Workers.Failed -= ClamdFailed; - Workers.ScanFinished -= ClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - prgProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; + treeFiles.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnScanWithClamd.Sensitive = true; + btnCheckInVirusTotal.Sensitive = true; + Workers.Failed -= ClamdFailed; + Workers.ScanFinished -= ClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + prgProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } - if(thdScanFile != null) - thdScanFile = null; + + if(thdScanFile != null) thdScanFile = null; if(!(bool)fileView.GetValue(outIter, 3) && file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; @@ -757,101 +761,100 @@ namespace osrepodbmgr fileView.Remove(ref outIter); AddFile(file); - lblFileStatus.Text = string.Format("{0} files ({1} infected)", fileView.IterNChildren(), infectedFiles); + lblFileStatus.Text = $"{fileView.IterNChildren()} files ({infectedFiles} infected)"; }); } protected void OnBtnCheckInVirusTotalClicked(object sender, EventArgs e) { - if(treeFiles.Selection.GetSelected(out outIter)) + if(!treeFiles.Selection.GetSelected(out outIter)) return; + + DbFile file = Workers.GetDBFile((string)fileView.GetValue(outIter, 0)); + + if(file == null) { - DBFile file = Workers.GetDBFile((string)fileView.GetValue(outIter, 0)); - - if(file == null) - { - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, - "Cannot get file from database"); - dlgMsg.Run(); - dlgMsg.Destroy(); - return; - } - - treeFiles.Sensitive = false; - btnToggleCrack.Sensitive = false; - btnScanWithClamd.Sensitive = false; - btnCheckInVirusTotal.Sensitive = false; - prgProgressFiles1.Visible = true; - Workers.Failed += VirusTotalFailed; - Workers.ScanFinished += VirusTotalFinished; - Workers.UpdateProgress += UpdateVirusProgress; - - prgProgressFiles1.Text = "Scanning file with VirusTotal."; - thdPulseProgress = new Thread(() => - { - while(true) - { - Application.Invoke(delegate - { - prgProgressFiles1.Pulse(); - }); - Thread.Sleep(66); - } - }); - thdPulseProgress.Start(); - thdScanFile = new Thread(() => Workers.VirusTotalFileFromRepo(file)); - thdScanFile.Start(); + MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, + "Cannot get file from database"); + dlgMsg.Run(); + dlgMsg.Destroy(); + return; } + + treeFiles.Sensitive = false; + btnToggleCrack.Sensitive = false; + btnScanWithClamd.Sensitive = false; + btnCheckInVirusTotal.Sensitive = false; + prgProgressFiles1.Visible = true; + Workers.Failed += VirusTotalFailed; + Workers.ScanFinished += VirusTotalFinished; + Workers.UpdateProgress += UpdateVirusProgress; + + prgProgressFiles1.Text = "Scanning file with VirusTotal."; + thdPulseProgress = new Thread(() => + { + while(true) + { + Application.Invoke(delegate { prgProgressFiles1.Pulse(); }); + Thread.Sleep(66); + } + }); + thdPulseProgress.Start(); + thdScanFile = new Thread(() => Workers.VirusTotalFileFromRepo(file)); + thdScanFile.Start(); } void VirusTotalFailed(string text) { Application.Invoke(delegate { - treeFiles.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnScanWithClamd.Sensitive = true; - btnCheckInVirusTotal.Sensitive = true; - prgProgressFiles1.Visible = false; - Workers.Failed -= VirusTotalFailed; - Workers.ScanFinished -= VirusTotalFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - prgProgressFiles1.Text = ""; + treeFiles.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnScanWithClamd.Sensitive = true; + btnCheckInVirusTotal.Sensitive = true; + prgProgressFiles1.Visible = false; + Workers.Failed -= VirusTotalFailed; + Workers.ScanFinished -= VirusTotalFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + prgProgressFiles1.Text = ""; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdScanFile != null) { thdScanFile.Abort(); thdScanFile = null; } - MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); + + MessageDialog dlgMsg = + new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, text); dlgMsg.Run(); dlgMsg.Destroy(); }); } - void VirusTotalFinished(DBFile file) + void VirusTotalFinished(DbFile file) { Application.Invoke(delegate { - treeFiles.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnScanWithClamd.Sensitive = true; - btnCheckInVirusTotal.Sensitive = true; - Workers.Failed -= VirusTotalFailed; - Workers.ScanFinished -= VirusTotalFinished; - Workers.UpdateProgress -= UpdateVirusProgress; - prgProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; + treeFiles.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnScanWithClamd.Sensitive = true; + btnCheckInVirusTotal.Sensitive = true; + Workers.Failed -= VirusTotalFailed; + Workers.ScanFinished -= VirusTotalFinished; + Workers.UpdateProgress -= UpdateVirusProgress; + prgProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } - if(thdScanFile != null) - thdScanFile = null; + + if(thdScanFile != null) thdScanFile = null; if(!(bool)fileView.GetValue(outIter, 3) && file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; @@ -859,78 +862,68 @@ namespace osrepodbmgr fileView.Remove(ref outIter); AddFile(file); - lblFileStatus.Text = string.Format("{0} files ({1} infected)", fileView.IterNChildren(), infectedFiles); + lblFileStatus.Text = $"{fileView.IterNChildren()} files ({infectedFiles} infected)"; }); } - public void UpdateVirusProgress(string text, string inner, long current, long maximum) + void UpdateVirusProgress(string text, string inner, long current, long maximum) { - Application.Invoke(delegate - { - prgProgressFiles1.Text = text; - }); + Application.Invoke(delegate { prgProgressFiles1.Text = text; }); } protected void OnBtnPopulateFilesClicked(object sender, EventArgs e) { fileView.Clear(); notebook1.GetNthPage(0).Sensitive = false; - btnStopFiles.Visible = true; - btnPopulateFiles.Visible = false; + btnStopFiles.Visible = true; + btnPopulateFiles.Visible = false; thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgressFiles1.Pulse(); - }); + Application.Invoke(delegate { prgProgressFiles1.Pulse(); }); Thread.Sleep(66); } }); - lblProgressFiles1.Text = "Loading files from database"; - lblProgressFiles1.Visible = true; - lblProgressFiles2.Visible = true; - prgProgressFiles1.Visible = true; - prgProgressFiles2.Visible = true; - Workers.Failed += LoadFilesFailed; - Workers.Finished += LoadFilesFinished; - Workers.UpdateProgress += UpdateFileProgress2; - populatingFiles = true; - infectedFiles = 0; + lblProgressFiles1.Text = "Loading files from database"; + lblProgressFiles1.Visible = true; + lblProgressFiles2.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + Workers.Failed += LoadFilesFailed; + Workers.Finished += LoadFilesFinished; + Workers.UpdateProgress += UpdateFileProgress2; + populatingFiles = true; + infectedFiles = 0; thdPulseProgress.Start(); thdPopulateFiles = new Thread(Workers.GetFilesFromDb); thdPopulateFiles.Start(); } - public void UpdateFileProgress(string text, string inner, long current, long maximum) + void UpdateFileProgress(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgressFiles1.Text = text; - prgProgressFiles1.Text = inner; - if(maximum > 0) - prgProgressFiles1.Fraction = current / (double)maximum; - else - prgProgressFiles1.Pulse(); + lblProgressFiles1.Text = text; + prgProgressFiles1.Text = inner; + if(maximum > 0) prgProgressFiles1.Fraction = current / (double)maximum; + else prgProgressFiles1.Pulse(); }); } - public void UpdateFileProgress2(string text, string inner, long current, long maximum) + void UpdateFileProgress2(string text, string inner, long current, long maximum) { Application.Invoke(delegate { - lblProgressFiles2.Text = text; - prgProgressFiles2.Text = inner; - if(maximum > 0) - prgProgressFiles2.Fraction = current / (double)maximum; - else - prgProgressFiles2.Pulse(); + lblProgressFiles2.Text = text; + prgProgressFiles2.Text = inner; + if(maximum > 0) prgProgressFiles2.Fraction = current / (double)maximum; + else prgProgressFiles2.Pulse(); }); } - void AddFile(DBFile file) + void AddFile(DbFile file) { Application.Invoke(delegate { @@ -942,24 +935,19 @@ namespace osrepodbmgr string color; - if(file.HasVirus.HasValue) - { - color = file.HasVirus.Value ? "red" : "green"; - } - else - color = "yellow"; + if(file.HasVirus.HasValue) color = file.HasVirus.Value ? "red" : "green"; + else color = "yellow"; - if(file.HasVirus.HasValue && file.HasVirus.Value) - infectedFiles++; + if(file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; - fileView.AppendValues(file.Sha256, file.Length, file.Crack, file.HasVirus.HasValue ? file.HasVirus.Value : false, - file.ClamTime == null ? "Never" : file.ClamTime.Value.ToString(), - file.VirusTotalTime == null ? "Never" : file.VirusTotalTime.Value.ToString(), + fileView.AppendValues(file.Sha256, file.Length, file.Crack, file.HasVirus ?? false, + file.ClamTime?.ToString() ?? "Never", + file.VirusTotalTime?.ToString() ?? "Never", file.Virus, color, "black", !file.HasVirus.HasValue); }); } - void AddFiles(List files) + void AddFiles(List files) { Application.Invoke(delegate { @@ -969,24 +957,20 @@ namespace osrepodbmgr thdPulseProgress = null; } - foreach(DBFile file in files) + foreach(DbFile file in files) { string color; - if(file.HasVirus.HasValue) - { - color = file.HasVirus.Value ? "red" : "green"; - } - else - color = "yellow"; + if(file.HasVirus.HasValue) color = file.HasVirus.Value ? "red" : "green"; + else color = "yellow"; - if(file.HasVirus.HasValue && file.HasVirus.Value) - infectedFiles++; + if(file.HasVirus.HasValue && file.HasVirus.Value) infectedFiles++; - fileView.AppendValues(file.Sha256, file.Length, file.Crack, file.HasVirus.HasValue ? file.HasVirus.Value : false, - file.ClamTime == null ? "Never" : file.ClamTime.Value.ToString(), - file.VirusTotalTime == null ? "Never" : file.VirusTotalTime.Value.ToString(), - file.Virus, color, "black", !file.HasVirus.HasValue); + fileView.AppendValues(file.Sha256, file.Length, file.Crack, + file.HasVirus.HasValue ? file.HasVirus.Value : false, + file.ClamTime?.ToString() ?? "Never", + file.VirusTotalTime?.ToString() ?? "Never", file.Virus, color, "black", + !file.HasVirus.HasValue); } }); } @@ -996,27 +980,29 @@ namespace osrepodbmgr Application.Invoke(delegate { MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, - string.Format("Error {0} when populating files, exiting...", text)); + $"Error {text} when populating files, exiting..."); dlgMsg.Run(); dlgMsg.Destroy(); - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateFiles != null) { thdPopulateFiles.Abort(); thdPopulateFiles = null; } + notebook1.GetNthPage(0).Sensitive = true; fileView.Clear(); - btnStopFiles.Visible = false; + btnStopFiles.Visible = false; btnPopulateFiles.Visible = true; - populatingFiles = false; + populatingFiles = false; }); } @@ -1024,75 +1010,70 @@ namespace osrepodbmgr { Application.Invoke(delegate { - Workers.Failed -= LoadFilesFailed; - Workers.Finished -= LoadFilesFinished; + Workers.Failed -= LoadFilesFailed; + Workers.Finished -= LoadFilesFinished; Workers.UpdateProgress -= UpdateFileProgress2; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } + if(thdPopulateFiles != null) { thdPopulateFiles.Abort(); thdPopulateFiles = null; } - lblProgressFiles1.Visible = false; - lblProgressFiles2.Visible = false; - prgProgressFiles1.Visible = false; - prgProgressFiles2.Visible = false; - btnToggleCrack.Visible = true; - btnScanWithClamd.Visible = true; - btnCheckInVirusTotal.Visible = true; - btnStopFiles.Visible = false; - btnPopulateFiles.Visible = false; - btnScanAllPending.Visible = true; - populatingFiles = false; - treeFiles.Sensitive = true; + + lblProgressFiles1.Visible = false; + lblProgressFiles2.Visible = false; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Visible = false; + btnToggleCrack.Visible = true; + btnScanWithClamd.Visible = true; + btnCheckInVirusTotal.Visible = true; + btnStopFiles.Visible = false; + btnPopulateFiles.Visible = false; + btnScanAllPending.Visible = true; + populatingFiles = false; + treeFiles.Sensitive = true; notebook1.GetNthPage(0).Sensitive = true; - btnCleanFiles.Visible = true; - lblFileStatus.Visible = true; - lblFileStatus.Text = string.Format("{0} files ({1} infected)", fileView.IterNChildren(), infectedFiles); + btnCleanFiles.Visible = true; + lblFileStatus.Visible = true; + lblFileStatus.Text = $"{fileView.IterNChildren()} files ({infectedFiles} infected)"; }); } void treeFilesSelectionChanged(object sender, EventArgs e) { - TreeIter fileIter; - if(treeFiles.Selection.GetSelected(out fileIter)) - { - if((bool)fileView.GetValue(fileIter, 2)) - btnToggleCrack.Label = "Mark as not crack"; - else - btnToggleCrack.Label = "Mark as crack"; - } + if(!treeFiles.Selection.GetSelected(out TreeIter fileIter)) return; + + if((bool)fileView.GetValue(fileIter, 2)) btnToggleCrack.Label = "Mark as not crack"; + else btnToggleCrack.Label = "Mark as crack"; } protected void OnBtnScanAllPendingClicked(object sender, EventArgs e) { - treeFiles.Sensitive = false; - btnToggleCrack.Sensitive = false; - btnScanWithClamd.Sensitive = false; - btnCheckInVirusTotal.Sensitive = false; - lblProgressFiles1.Visible = true; - prgProgressFiles1.Visible = true; - prgProgressFiles2.Visible = true; - btnScanAllPending.Sensitive = false; - Workers.Finished += AllClamdFinished; - Workers.UpdateProgress += UpdateVirusProgress2; - Workers.UpdateProgress2 += UpdateFileProgress; - btnStopFiles.Visible = true; - scanningFiles = true; + treeFiles.Sensitive = false; + btnToggleCrack.Sensitive = false; + btnScanWithClamd.Sensitive = false; + btnCheckInVirusTotal.Sensitive = false; + lblProgressFiles1.Visible = true; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Visible = true; + btnScanAllPending.Sensitive = false; + Workers.Finished += AllClamdFinished; + Workers.UpdateProgress += UpdateVirusProgress2; + Workers.UpdateProgress2 += UpdateFileProgress; + btnStopFiles.Visible = true; + scanningFiles = true; prgProgressFiles2.Text = "Scanning file with clamd."; - thdPulseProgress = new Thread(() => + thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgressFiles2.Pulse(); - }); + Application.Invoke(delegate { prgProgressFiles2.Pulse(); }); Thread.Sleep(66); } }); @@ -1105,75 +1086,69 @@ namespace osrepodbmgr { Application.Invoke(delegate { - treeFiles.Sensitive = true; - btnToggleCrack.Sensitive = true; - btnScanWithClamd.Sensitive = true; - btnCheckInVirusTotal.Sensitive = true; - btnScanAllPending.Sensitive = true; - Workers.Finished -= AllClamdFinished; - Workers.UpdateProgress -= UpdateVirusProgress2; - Workers.UpdateProgress2 -= UpdateFileProgress; - prgProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - prgProgressFiles2.Text = ""; - prgProgressFiles2.Visible = false; - btnStopFiles.Visible = false; - scanningFiles = false; + treeFiles.Sensitive = true; + btnToggleCrack.Sensitive = true; + btnScanWithClamd.Sensitive = true; + btnCheckInVirusTotal.Sensitive = true; + btnScanAllPending.Sensitive = true; + Workers.Finished -= AllClamdFinished; + Workers.UpdateProgress -= UpdateVirusProgress2; + Workers.UpdateProgress2 -= UpdateFileProgress; + prgProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Text = ""; + prgProgressFiles2.Visible = false; + btnStopFiles.Visible = false; + scanningFiles = false; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } - if(thdScanFile != null) - thdScanFile = null; + + if(thdScanFile != null) thdScanFile = null; OnBtnPopulateFilesClicked(null, new EventArgs()); }); } - public void UpdateVirusProgress2(string text, string inner, long current, long maximum) + void UpdateVirusProgress2(string text, string inner, long current, long maximum) { - Application.Invoke(delegate - { - prgProgressFiles2.Text = text; - }); + Application.Invoke(delegate { prgProgressFiles2.Text = text; }); } protected void OnBtnCleanFilesClicked(object sender, EventArgs e) { MessageDialog dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Warning, ButtonsType.YesNo, - "This option will search the database for any known file that doesn't\n" + - "belong to any OS and remove it from the database.\n\n" + + "This option will search the database for any known file that doesn't\n" + + "belong to any OS and remove it from the database.\n\n" + "It will then search the repository for any file not on the database and remove it.\n\n" + - "THIS OPERATION MAY VERY LONG, CANNOT BE CANCELED AND REMOVES DATA ON DISK.\n\n" + + "THIS OPERATION MAY VERY LONG, CANNOT BE CANCELED AND REMOVES DATA ON DISK.\n\n" + "Are you sure to continue?"); if(dlgMsg.Run() == (int)ResponseType.Yes) { dlgMsg.Destroy(); - btnCleanFiles.Visible = false; - btnToggleCrack.Visible = false; - btnScanWithClamd.Visible = false; - btnScanAllPending.Visible = false; - btnCheckInVirusTotal.Visible = false; - notebook1.GetNthPage(0).Sensitive = false; - treeFiles.Sensitive = false; - Workers.Finished += CleanFilesFinished; - Workers.UpdateProgress += UpdateFileProgress; - Workers.UpdateProgress2 += UpdateFileProgress2; - prgProgressFiles1.Text = ""; - prgProgressFiles1.Visible = true; - prgProgressFiles2.Text = ""; - prgProgressFiles2.Visible = true; - btnStopFiles.Visible = false; - thdPulseProgress = new Thread(() => + btnCleanFiles.Visible = false; + btnToggleCrack.Visible = false; + btnScanWithClamd.Visible = false; + btnScanAllPending.Visible = false; + btnCheckInVirusTotal.Visible = false; + notebook1.GetNthPage(0).Sensitive = false; + treeFiles.Sensitive = false; + Workers.Finished += CleanFilesFinished; + Workers.UpdateProgress += UpdateFileProgress; + Workers.UpdateProgress2 += UpdateFileProgress2; + prgProgressFiles1.Text = ""; + prgProgressFiles1.Visible = true; + prgProgressFiles2.Text = ""; + prgProgressFiles2.Visible = true; + btnStopFiles.Visible = false; + thdPulseProgress = new Thread(() => { while(true) { - Application.Invoke(delegate - { - prgProgressFiles2.Pulse(); - }); + Application.Invoke(delegate { prgProgressFiles2.Pulse(); }); Thread.Sleep(66); } }); @@ -1181,35 +1156,34 @@ namespace osrepodbmgr thdCleanFiles = new Thread(Workers.CleanFiles); thdCleanFiles.Start(); } - else - dlgMsg.Destroy(); + else dlgMsg.Destroy(); } void CleanFilesFinished() { Application.Invoke(delegate { - btnCleanFiles.Visible = true; - btnToggleCrack.Visible = true; - btnScanWithClamd.Visible = true; - btnScanAllPending.Visible = true; - btnCheckInVirusTotal.Visible = true; - notebook1.GetNthPage(0).Sensitive = true; - treeFiles.Sensitive = true; - Workers.Finished -= CleanFilesFinished; - Workers.UpdateProgress -= UpdateFileProgress; - Workers.UpdateProgress2 -= UpdateFileProgress2; - prgProgressFiles1.Text = ""; - prgProgressFiles1.Visible = false; - prgProgressFiles2.Text = ""; - prgProgressFiles2.Visible = false; + btnCleanFiles.Visible = true; + btnToggleCrack.Visible = true; + btnScanWithClamd.Visible = true; + btnScanAllPending.Visible = true; + btnCheckInVirusTotal.Visible = true; + notebook1.GetNthPage(0).Sensitive = true; + treeFiles.Sensitive = true; + Workers.Finished -= CleanFilesFinished; + Workers.UpdateProgress -= UpdateFileProgress; + Workers.UpdateProgress2 -= UpdateFileProgress2; + prgProgressFiles1.Text = ""; + prgProgressFiles1.Visible = false; + prgProgressFiles2.Text = ""; + prgProgressFiles2.Visible = false; if(thdPulseProgress != null) { thdPulseProgress.Abort(); thdPulseProgress = null; } - if(thdCleanFiles != null) - thdCleanFiles = null; + + if(thdCleanFiles != null) thdCleanFiles = null; OnBtnPopulateFilesClicked(null, new EventArgs()); });