Change system tabs to required operating systems tab in metadata dialog.

This commit is contained in:
2018-03-16 15:44:58 +00:00
parent 1d05a81d2d
commit 700814600c
3 changed files with 133 additions and 82 deletions

View File

@@ -55,20 +55,19 @@ namespace apprepodbmgr.Eto
ObservableCollection<DiskEntry> lstDisks;
ObservableCollection<string> lstFilesForMedia;
ObservableCollection<StringEntry> lstKeywords;
ObservableCollection<StringEntry> lstLanguages;
ObservableCollection<string> lstLanguageTypes;
ObservableCollection<StringEntry> lstSubcategories;
ObservableCollection<StringEntry> lstSystems;
ObservableCollection<StringEntry> lstKeywords;
ObservableCollection<StringEntry> lstLanguages;
ObservableCollection<string> lstLanguageTypes;
ObservableCollection<TargetOsEntry> lstOses;
ObservableCollection<StringEntry> lstSubcategories;
// TODO: Add the options to edit these fields
MagazineType[] magazines;
public CICMMetadataType Metadata;
public bool Modified;
PCIType[] pcis;
RequiredOperatingSystemType[] requiredOses;
bool stopped;
public bool Modified;
PCIType[] pcis;
bool stopped;
Thread thdDisc;
Thread thdDisk;
@@ -80,7 +79,7 @@ namespace apprepodbmgr.Eto
Modified = false;
cmbReleaseType = new EnumDropDown<CICMMetadataTypeReleaseType>();
cmbReleaseType = new EnumDropDown<CICMMetadataTypeReleaseType>();
stkReleaseType.Items.Add(new StackLayoutItem {Control = cmbReleaseType, Expand = true});
lstKeywords = new ObservableCollection<StringEntry>();
@@ -88,7 +87,7 @@ namespace apprepodbmgr.Eto
lstCategories = new ObservableCollection<StringEntry>();
lstSubcategories = new ObservableCollection<StringEntry>();
lstLanguages = new ObservableCollection<StringEntry>();
lstSystems = new ObservableCollection<StringEntry>();
lstOses = new ObservableCollection<TargetOsEntry>();
lstArchitectures = new ObservableCollection<StringEntry>();
lstDiscs = new ObservableCollection<DiscEntry>();
lstDisks = new ObservableCollection<DiskEntry>();
@@ -126,10 +125,15 @@ namespace apprepodbmgr.Eto
DataCell = new TextBoxCell {Binding = Binding.Property<StringEntry, string>(r => r.str)},
HeaderText = "Language"
});
treeSystems.Columns.Add(new GridColumn
treeOses.Columns.Add(new GridColumn
{
DataCell = new TextBoxCell {Binding = Binding.Property<StringEntry, string>(r => r.str)},
HeaderText = "System"
DataCell = new TextBoxCell {Binding = Binding.Property<TargetOsEntry, string>(r => r.name)},
HeaderText = "Name"
});
treeOses.Columns.Add(new GridColumn
{
DataCell = new TextBoxCell {Binding = Binding.Property<TargetOsEntry, string>(r => r.version)},
HeaderText = "Version"
});
treeArchitectures.Columns.Add(new GridColumn
{
@@ -152,7 +156,7 @@ namespace apprepodbmgr.Eto
treeCategories.DataStore = lstCategories;
treeSubcategories.DataStore = lstSubcategories;
treeLanguages.DataStore = lstLanguages;
treeSystems.DataStore = lstSystems;
treeOses.DataStore = lstOses;
treeArchitectures.DataStore = lstArchitectures;
treeDiscs.DataStore = lstDiscs;
treeDisks.DataStore = lstDisks;
@@ -162,7 +166,7 @@ namespace apprepodbmgr.Eto
treeCategories.AllowMultipleSelection = false;
treeSubcategories.AllowMultipleSelection = false;
treeLanguages.AllowMultipleSelection = false;
treeSystems.AllowMultipleSelection = false;
treeOses.AllowMultipleSelection = false;
treeArchitectures.AllowMultipleSelection = false;
treeDiscs.AllowMultipleSelection = false;
treeDisks.AllowMultipleSelection = false;
@@ -229,28 +233,28 @@ namespace apprepodbmgr.Eto
foreach(string developer in Metadata.Developer)
{
if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ",";
txtDeveloper.Text += developer;
txtDeveloper.Text += developer;
}
if(Metadata.Publisher != null)
foreach(string publisher in Metadata.Publisher)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
txtPublisher.Text += publisher;
txtPublisher.Text += publisher;
}
if(Metadata.Author != null)
foreach(string author in Metadata.Author)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
txtPublisher.Text += author;
txtPublisher.Text += author;
}
if(Metadata.Performer != null)
foreach(string performer in Metadata.Performer)
{
if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ",";
txtPublisher.Text += performer;
txtPublisher.Text += performer;
}
txtName.Text = Metadata.Name;
@@ -289,9 +293,10 @@ namespace apprepodbmgr.Eto
lstLanguageTypes.Remove(language.ToString());
}
if(Metadata.Systems != null)
foreach(string system in Metadata.Systems)
lstSystems.Add(new StringEntry {str = system});
if(Metadata.RequiredOperatingSystems != null)
foreach(RequiredOperatingSystemType reqos in Metadata.RequiredOperatingSystems)
foreach(string reqver in reqos.Version)
lstOses.Add(new TargetOsEntry {name = reqos.Name, version = reqver});
if(Metadata.Architectures != null)
foreach(ArchitecturesTypeArchitecture architecture in Metadata.Architectures)
@@ -304,7 +309,7 @@ namespace apprepodbmgr.Eto
foreach(OpticalDiscType disc in Metadata.OpticalDisc)
{
lstDiscs.Add(new DiscEntry {path = disc.Image.Value, disc = disc});
List<string> files = new List<string> {disc.Image.Value};
List<string> files = new List<string> {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);
@@ -313,11 +318,11 @@ namespace apprepodbmgr.Eto
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)
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)
if(disc.LeadOut != null)
foreach(BorderType border in disc.LeadOut)
files.Add(border.Image);
if(disc.MediaID != null) files.Add(disc.MediaID.Image);
@@ -339,12 +344,12 @@ namespace apprepodbmgr.Eto
foreach(BlockMediaType disk in Metadata.BlockMedia)
{
lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk});
List<string> files = new List<string> {disk.Image.Value};
List<string> files = new List<string> {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 != null)
{
if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image);
if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image);
@@ -372,7 +377,6 @@ namespace apprepodbmgr.Eto
magazines = Metadata.Magazine;
books = Metadata.Book;
requiredOses = Metadata.RequiredOperatingSystems;
usermanuals = Metadata.UserManual;
adverts = Metadata.Advertisement;
linearmedias = Metadata.LinearMedia;
@@ -393,7 +397,7 @@ namespace apprepodbmgr.Eto
protected void OnBtnAddKeywordClicked(object sender, EventArgs e)
{
lstKeywords.Add(new StringEntry {str = txtNewKeyword.Text});
txtNewKeyword.Text = "";
txtNewKeyword.Text = "";
}
protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e)
@@ -431,13 +435,13 @@ namespace apprepodbmgr.Eto
protected void OnBtnAddCategoryClicked(object sender, EventArgs e)
{
lstCategories.Add(new StringEntry {str = txtNewCategory.Text});
txtNewCategory.Text = "";
txtNewCategory.Text = "";
}
protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e)
{
lstSubcategories.Add(new StringEntry {str = txtNewSubcategory.Text});
txtNewSubcategory.Text = "";
txtNewSubcategory.Text = "";
}
protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e)
@@ -483,20 +487,33 @@ namespace apprepodbmgr.Eto
FillLanguagesCombo();
}
protected void OnBtnAddSystemClicked(object sender, EventArgs e)
protected void OnBtnAddNewOsClicked(object sender, EventArgs e)
{
lstSystems.Add(new StringEntry {str = txtNewSystem.Text});
txtNewSystem.Text = "";
if(string.IsNullOrWhiteSpace(txtNewOsName.Text))
{
MessageBox.Show("Operating system name cannot be empty.", MessageBoxType.Error);
return;
}
if(string.IsNullOrWhiteSpace(txtNewOsVersion.Text))
{
MessageBox.Show("Operating system version cannot be empty.", MessageBoxType.Error);
return;
}
lstOses.Add(new TargetOsEntry {name = txtNewOsName.Text, version = txtNewOsVersion.Text});
txtNewOsName.Text = "";
txtNewOsVersion.Text = "";
}
protected void OnBtnClearSystemsClicked(object sender, EventArgs e)
protected void OnBtnClearOsesClicked(object sender, EventArgs e)
{
lstSystems.Clear();
lstOses.Clear();
}
protected void OnBtnRemoveSystemClicked(object sender, EventArgs e)
protected void OnBtnRemoveOsClicked(object sender, EventArgs e)
{
if(treeSystems.SelectedItem != null) lstSystems.Remove((StringEntry)treeSystems.SelectedItem);
if(treeOses.SelectedItem != null) lstOses.Remove((TargetOsEntry)treeOses.SelectedItem);
}
protected void OnBtnAddArchitectureClicked(object sender, EventArgs e)
@@ -529,7 +546,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = false;
tabCategories.Visible = false;
tabLanguages.Visible = false;
tabSystems.Visible = false;
tabTargetOs.Visible = false;
tabArchitectures.Visible = false;
tabDisks.Visible = false;
prgAddDisc1.Visible = true;
@@ -616,7 +633,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
tabSystems.Visible = true;
tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDisks.Visible = true;
prgAddDisc1.Visible = false;
@@ -648,7 +665,7 @@ namespace apprepodbmgr.Eto
OpticalDiscType disc = Context.WorkingDisc;
lstDiscs.Add(new DiscEntry {path = Context.SelectedFile, disc = disc});
List<string> files = new List<string> {disc.Image.Value};
List<string> files = new List<string> {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);
@@ -678,7 +695,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
tabSystems.Visible = true;
tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDisks.Visible = true;
prgAddDisc1.Visible = false;
@@ -724,7 +741,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = false;
tabCategories.Visible = false;
tabLanguages.Visible = false;
tabSystems.Visible = false;
tabTargetOs.Visible = false;
tabArchitectures.Visible = false;
tabDiscs.Visible = false;
prgAddDisk1.Visible = true;
@@ -811,7 +828,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
tabSystems.Visible = true;
tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDiscs.Visible = true;
prgAddDisk1.Visible = false;
@@ -843,12 +860,12 @@ namespace apprepodbmgr.Eto
BlockMediaType disk = Context.WorkingDisk;
lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk});
List<string> files = new List<string> {disk.Image.Value};
List<string> files = new List<string> {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 != null)
{
if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image);
if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image);
@@ -877,7 +894,7 @@ namespace apprepodbmgr.Eto
tabBarcodes.Visible = true;
tabCategories.Visible = true;
tabLanguages.Visible = true;
tabSystems.Visible = true;
tabTargetOs.Visible = true;
tabArchitectures.Visible = true;
tabDiscs.Visible = true;
prgAddDisk1.Visible = false;
@@ -923,7 +940,7 @@ namespace apprepodbmgr.Eto
protected void OnBtnOKClicked(object sender, EventArgs e)
{
Metadata = new CICMMetadataType();
Metadata = new CICMMetadataType();
List<ArchitecturesTypeArchitecture> architectures = new List<ArchitecturesTypeArchitecture>();
List<BarcodeType> barcodes = new List<BarcodeType>();
List<BlockMediaType> disks = new List<BlockMediaType>();
@@ -977,7 +994,31 @@ namespace apprepodbmgr.Eto
foreach(StringEntry entry in lstSubcategories) subcategories.Add(entry.str);
foreach(StringEntry entry in lstSystems) systems.Add(entry.str);
if(lstOses.Count > 0)
{
Dictionary<string, List<string>> osesDict = new Dictionary<string, List<string>>();
foreach(TargetOsEntry entry in lstOses.OrderBy(t => t.name).ThenBy(t => t.version))
{
osesDict.TryGetValue(entry.name, out List<string> versList);
if(versList == null) versList = new List<string>();
if(versList.Contains(entry.version)) continue;
versList.Add(entry.version);
versList.Sort();
osesDict.Remove(entry.name);
osesDict.Add(entry.name, versList);
}
Metadata.RequiredOperatingSystems = osesDict
.OrderBy(t => t.Key)
.Select(entry => new RequiredOperatingSystemType
{
Name = entry.Key,
Version = entry.Value.ToArray()
}).ToArray();
}
if(architectures.Count > 0) Metadata.Architectures = architectures.ToArray();
if(barcodes.Count > 0) Metadata.Barcodes = barcodes.ToArray();
@@ -989,14 +1030,13 @@ namespace apprepodbmgr.Eto
if(subcategories.Count > 0) Metadata.Subcategories = subcategories.ToArray();
if(systems.Count > 0) Metadata.Systems = systems.ToArray();
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.Magazine = magazines;
Metadata.Book = books;
Metadata.UserManual = usermanuals;
Metadata.Advertisement = adverts;
Metadata.LinearMedia = linearmedias;
Metadata.PCICard = pcis;
Metadata.AudioMedia = audiomedias;
Modified = true;
Close();
@@ -1069,9 +1109,10 @@ namespace apprepodbmgr.Eto
TabPage tabLanguages;
ComboBox cmbLanguages;
GridView treeLanguages;
TabPage tabSystems;
TextBox txtNewSystem;
GridView treeSystems;
TabPage tabTargetOs;
TextBox txtNewOsName;
TextBox txtNewOsVersion;
GridView treeOses;
TabPage tabArchitectures;
ComboBox cmbArchitectures;
GridView treeArchitectures;