[GUI] In ImageInfo view only show tabs that contain data.

This commit is contained in:
2025-10-25 20:00:34 +01:00
parent eeadf139fe
commit c5e7db16f0

View File

@@ -237,8 +237,9 @@ public sealed class ImageInfoViewModel : ViewModelBase
} }
if(imageFormat.Info.ReadableMediaTags is { Count: > 0 }) if(imageFormat.Info.ReadableMediaTags is { Count: > 0 })
foreach(MediaTagType tag in imageFormat.Info.ReadableMediaTags.Order()) {
MediaTagsList.Add(tag.Humanize()); foreach(MediaTagType tag in imageFormat.Info.ReadableMediaTags.Order()) MediaTagsList.Add(tag.Humanize());
}
if(imageFormat.Info.ReadableSectorTags is { Count: > 0 }) if(imageFormat.Info.ReadableSectorTags is { Count: > 0 })
{ {
@@ -280,18 +281,25 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(errno == ErrorNumber.NoError) scsiMode = Modes.DecodeMode10(scsiModeSense10, scsiDeviceType); if(errno == ErrorNumber.NoError) scsiMode = Modes.DecodeMode10(scsiModeSense10, scsiDeviceType);
} }
ScsiInfo = new ScsiInfo if(scsiInquiryData != null ||
scsiInquiry != null ||
scsiMode != null ||
scsiModeSense6 != null ||
scsiModeSense10 != null)
{ {
DataContext = new ScsiInfoViewModel(scsiInquiryData, ScsiInfo = new ScsiInfo
scsiInquiry, {
null, DataContext = new ScsiInfoViewModel(scsiInquiryData,
scsiMode, scsiInquiry,
scsiDeviceType, null,
scsiModeSense6, scsiMode,
scsiModeSense10, scsiDeviceType,
null, scsiModeSense6,
view) scsiModeSense10,
}; null,
view)
};
}
byte[] ataIdentify = null; byte[] ataIdentify = null;
byte[] atapiIdentify = null; byte[] atapiIdentify = null;
@@ -436,25 +444,28 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(errno == ErrorNumber.NoError) mediaCatalogueNumber = Encoding.UTF8.GetString(mcn); if(errno == ErrorNumber.NoError) mediaCatalogueNumber = Encoding.UTF8.GetString(mcn);
} }
CompactDiscInfo = new CompactDiscInfo if(toc != null || atip != null || fullToc != null || pma != null)
{ {
DataContext = new CompactDiscInfoViewModel(toc, CompactDiscInfo = new CompactDiscInfo
atip, {
null, DataContext = new CompactDiscInfoViewModel(toc,
null, atip,
fullToc, null,
pma, null,
cdtext, fullToc,
decodedToc, pma,
decodedAtip, cdtext,
null, decodedToc,
decodedFullToc, decodedAtip,
decodedCdText, null,
null, decodedFullToc,
mediaCatalogueNumber, decodedCdText,
null, null,
view) mediaCatalogueNumber,
}; null,
view)
};
}
byte[] dvdPfi = null; byte[] dvdPfi = null;
byte[] dvdDmi = null; byte[] dvdDmi = null;
@@ -482,17 +493,20 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.DVD_BCA) == true) if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.DVD_BCA) == true)
imageFormat.ReadMediaTag(MediaTagType.DVD_BCA, out dvdBca); imageFormat.ReadMediaTag(MediaTagType.DVD_BCA, out dvdBca);
DvdInfo = new DvdInfo if(dvdPfi != null || dvdDmi != null || dvdCmi != null || hddvdCopyrightInformation != null || dvdBca != null)
{ {
DataContext = new DvdInfoViewModel(dvdPfi, DvdInfo = new DvdInfo
dvdDmi, {
dvdCmi, DataContext = new DvdInfoViewModel(dvdPfi,
hddvdCopyrightInformation, dvdDmi,
dvdBca, dvdCmi,
null, hddvdCopyrightInformation,
decodedPfi, dvdBca,
view) null,
}; decodedPfi,
view)
};
}
byte[] dvdRamDds = null; byte[] dvdRamDds = null;
byte[] dvdRamCartridgeStatus = null; byte[] dvdRamCartridgeStatus = null;
@@ -551,26 +565,42 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.DCB) == true) if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.DCB) == true)
imageFormat.ReadMediaTag(MediaTagType.DCB, out dvdPlusDcb); imageFormat.ReadMediaTag(MediaTagType.DCB, out dvdPlusDcb);
DvdWritableInfo = new DvdWritableInfo if(dvdRamDds != null ||
dvdRamCartridgeStatus != null ||
dvdRamSpareArea != null ||
lastBorderOutRmd != null ||
dvdPreRecordedInfo != null ||
dvdrMediaIdentifier != null ||
dvdrPhysicalInformation != null ||
hddvdrMediumStatus != null ||
dvdrLayerCapacity != null ||
dvdrDlMiddleZoneStart != null ||
dvdrDlJumpIntervalSize != null ||
dvdrDlManualLayerJumpStartLba != null ||
dvdPlusAdip != null ||
dvdPlusDcb != null)
{ {
DataContext = new DvdWritableInfoViewModel(dvdRamDds, DvdWritableInfo = new DvdWritableInfo
dvdRamCartridgeStatus, {
dvdRamSpareArea, DataContext = new DvdWritableInfoViewModel(dvdRamDds,
lastBorderOutRmd, dvdRamCartridgeStatus,
dvdPreRecordedInfo, dvdRamSpareArea,
dvdrMediaIdentifier, lastBorderOutRmd,
dvdrPhysicalInformation, dvdPreRecordedInfo,
hddvdrMediumStatus, dvdrMediaIdentifier,
null, dvdrPhysicalInformation,
dvdrLayerCapacity, hddvdrMediumStatus,
dvdrDlMiddleZoneStart, null,
dvdrDlJumpIntervalSize, dvdrLayerCapacity,
dvdrDlManualLayerJumpStartLba, dvdrDlMiddleZoneStart,
null, dvdrDlJumpIntervalSize,
dvdPlusAdip, dvdrDlManualLayerJumpStartLba,
dvdPlusDcb, null,
view) dvdPlusAdip,
}; dvdPlusDcb,
view)
};
}
byte[] blurayBurstCuttingArea = null; byte[] blurayBurstCuttingArea = null;
byte[] blurayCartridgeStatus = null; byte[] blurayCartridgeStatus = null;
@@ -601,19 +631,28 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.MMC_TrackResourcesInformation) == true) if(imageFormat.Info.ReadableMediaTags?.Contains(MediaTagType.MMC_TrackResourcesInformation) == true)
imageFormat.ReadMediaTag(MediaTagType.MMC_TrackResourcesInformation, out blurayTrackResources); imageFormat.ReadMediaTag(MediaTagType.MMC_TrackResourcesInformation, out blurayTrackResources);
BlurayInfo = new BlurayInfo if(blurayDiscInformation != null ||
blurayBurstCuttingArea != null ||
blurayDds != null ||
blurayCartridgeStatus != null ||
bluraySpareAreaInformation != null ||
blurayPowResources != null ||
blurayTrackResources != null)
{ {
DataContext = new BlurayInfoViewModel(blurayDiscInformation, BlurayInfo = new BlurayInfo
blurayBurstCuttingArea, {
blurayDds, DataContext = new BlurayInfoViewModel(blurayDiscInformation,
blurayCartridgeStatus, blurayBurstCuttingArea,
bluraySpareAreaInformation, blurayDds,
blurayPowResources, blurayCartridgeStatus,
blurayTrackResources, bluraySpareAreaInformation,
null, blurayPowResources,
null, blurayTrackResources,
view) null,
}; null,
view)
};
}
byte[] xboxDmi = null; byte[] xboxDmi = null;
byte[] xboxSecuritySector = null; byte[] xboxSecuritySector = null;
@@ -629,10 +668,13 @@ public sealed class ImageInfoViewModel : ViewModelBase
if(errno == ErrorNumber.NoError) decodedXboxSecuritySector = SS.Decode(xboxSecuritySector); if(errno == ErrorNumber.NoError) decodedXboxSecuritySector = SS.Decode(xboxSecuritySector);
} }
XboxInfo = new XboxInfo if(xboxDmi != null || xboxSecuritySector != null)
{ {
DataContext = new XboxInfoViewModel(null, xboxDmi, xboxSecuritySector, decodedXboxSecuritySector, view) XboxInfo = new XboxInfo
}; {
DataContext = new XboxInfoViewModel(null, xboxDmi, xboxSecuritySector, decodedXboxSecuritySector, view)
};
}
errno = ErrorNumber.NoData; errno = ErrorNumber.NoData;
byte[] pcmciaCis = null; byte[] pcmciaCis = null;
@@ -703,19 +745,21 @@ public sealed class ImageInfoViewModel : ViewModelBase
deviceType = DeviceType.MMC; deviceType = DeviceType.MMC;
} }
SdMmcInfo = new SdMmcInfo if(cid != null || csd != null || ocr != null || extendedCsd != null || scr != null)
{ {
DataContext = new SdMmcInfoViewModel(deviceType, cid, csd, ocr, extendedCsd, scr) SdMmcInfo = new SdMmcInfo
}; {
DataContext = new SdMmcInfoViewModel(deviceType, cid, csd, ocr, extendedCsd, scr)
};
}
if(imageFormat is IOpticalMediaImage opticalMediaImage) if(imageFormat is IOpticalMediaImage opticalMediaImage)
{ {
try try
{ {
if(opticalMediaImage.Sessions is { Count: > 0 }) if(opticalMediaImage.Sessions is { Count: > 0 })
{ foreach(Session session in opticalMediaImage.Sessions)
foreach(Session session in opticalMediaImage.Sessions) Sessions.Add(session); Sessions.Add(session);
}
} }
catch(Exception ex) catch(Exception ex)
{ {
@@ -725,9 +769,8 @@ public sealed class ImageInfoViewModel : ViewModelBase
try try
{ {
if(opticalMediaImage.Tracks is { Count: > 0 }) if(opticalMediaImage.Tracks is { Count: > 0 })
{ foreach(Track track in opticalMediaImage.Tracks)
foreach(Track track in opticalMediaImage.Tracks) Tracks.Add(track); Tracks.Add(track);
}
} }
catch(Exception ex) catch(Exception ex)
{ {