summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrakeWPF
diff options
context:
space:
mode:
authorsr55 <[email protected]>2018-07-07 12:20:34 +0100
committersr55 <[email protected]>2018-07-07 12:20:34 +0100
commitfb1fe80d8cc9c65a1e3a030c0c61a81134c5efe2 (patch)
tree9d5b794fe33f84fd70930de1f3659819a4105095 /win/CS/HandBrakeWPF
parent29e80bc54f423afefd45881e5e11a45bc002af6c (diff)
WinGui: Tidyup around the Scan Objects. Complete some incomplete models. Introduce a factory for Title objects.
Diffstat (limited to 'win/CS/HandBrakeWPF')
-rw-r--r--win/CS/HandBrakeWPF/HandBrakeWPF.csproj2
-rw-r--r--win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs1
-rw-r--r--win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs37
-rw-r--r--win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs122
-rw-r--r--win/CS/HandBrakeWPF/Services/Scan/LibScan.cs83
-rw-r--r--win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs86
-rw-r--r--win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs6
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs39
-rw-r--r--win/CS/HandBrakeWPF/Views/MetaDataView.xaml38
9 files changed, 274 insertions, 140 deletions
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
index 3fe2ab917..83969f7a0 100644
--- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
+++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
@@ -238,10 +238,12 @@
<Compile Include="Services\Queue\Model\QueueTask.cs" />
<Compile Include="Services\Scan\EventArgs\ScanCompletedEventArgs.cs" />
<Compile Include="Services\Scan\EventArgs\ScanProgressEventArgs.cs" />
+ <Compile Include="Services\Scan\Factories\TitleFactory.cs" />
<Compile Include="Services\Scan\Interfaces\IScan.cs" />
<Compile Include="Services\Scan\LibScan.cs" />
<Compile Include="Services\Scan\Model\Audio.cs" />
<Compile Include="Services\Scan\Model\Chapter.cs" />
+ <Compile Include="Services\Scan\Model\Metadata.cs" />
<Compile Include="Services\Scan\Model\Source.cs" />
<Compile Include="Services\Scan\Model\Subtitle.cs" />
<Compile Include="Services\Scan\Model\Title.cs" />
diff --git a/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs b/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs
index 8396a584f..3e133c5fa 100644
--- a/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs
+++ b/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs
@@ -611,6 +611,7 @@ namespace HandBrakeWPF.Services.Encode.Factories
if (job.MetaData != null)
{
metaData.Artist = job.MetaData.Artist;
+ metaData.Album = job.MetaData.Album;
metaData.AlbumArtist = job.MetaData.AlbumArtist;
metaData.Comment = job.MetaData.Comment;
metaData.Composer = job.MetaData.Composer;
diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs
index e86212a39..02dc02ffb 100644
--- a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs
+++ b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs
@@ -9,13 +9,13 @@
namespace HandBrakeWPF.Services.Encode.Model.Models
{
+ using HandBrakeWPF.Services.Scan.Model;
+
/// <summary>
/// The meta data.
/// </summary>
public class MetaData
{
- private string albumArtist;
-
/// <summary>
/// Initializes a new instance of the <see cref="MetaData"/> class.
/// </summary>
@@ -34,6 +34,7 @@ namespace HandBrakeWPF.Services.Encode.Model.Models
if (metadata != null)
{
this.AlbumArtist = metadata.AlbumArtist;
+ this.Album = metadata.Album;
this.Artist = metadata.Artist;
this.Comment = metadata.Comment;
this.Composer = metadata.Composer;
@@ -45,22 +46,34 @@ namespace HandBrakeWPF.Services.Encode.Model.Models
}
}
- /// <summary>
- /// Gets or sets the album artist.
- /// </summary>
- public string AlbumArtist
+ public MetaData(Metadata metadata)
{
- get
- {
- return this.albumArtist;
- }
- set
+ if (metadata != null)
{
- this.albumArtist = value;
+ this.AlbumArtist = metadata.AlbumArtist;
+ this.Album = metadata.Album;
+ this.Artist = metadata.Artist;
+ this.Comment = metadata.Comment;
+ this.Composer = metadata.Composer;
+ this.Description = metadata.Description;
+ this.Genre = metadata.Genre;
+ this.LongDescription = metadata.LongDescription;
+ this.Name = metadata.Name;
+ this.ReleaseDate = metadata.ReleaseDate;
}
}
/// <summary>
+ /// Gets or sets the album artist.
+ /// </summary>
+ public string AlbumArtist { get; set; }
+
+ /// <summary>
+ /// Gets or sets the album.
+ /// </summary>
+ public string Album { get; set; }
+
+ /// <summary>
/// Gets or sets the artist.
/// </summary>
public string Artist { get; set; }
diff --git a/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs b/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs
new file mode 100644
index 000000000..b985c40d8
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs
@@ -0,0 +1,122 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="TitleFactory.cs" company="">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the TitleFactory type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Services.Scan.Factories
+{
+ using System;
+
+ using HandBrake.Interop.Interop.HbLib;
+ using HandBrake.Interop.Interop.Json.Scan;
+ using HandBrake.Interop.Interop.Model;
+
+ using HandBrakeWPF.Services.Encode.Model.Models;
+ using HandBrakeWPF.Services.Scan.Model;
+
+ public class TitleFactory
+ {
+ public Title CreateTitle(SourceTitle title, int mainFeature)
+ {
+ Title converted = new Title
+ {
+ TitleNumber = title.Index,
+ Duration = new TimeSpan(0, title.Duration.Hours, title.Duration.Minutes, title.Duration.Seconds),
+ Resolution = new Size(title.Geometry.Width, title.Geometry.Height),
+ AngleCount = title.AngleCount,
+ ParVal = new Size(title.Geometry.PAR.Num, title.Geometry.PAR.Den),
+ AutoCropDimensions = new Cropping
+ {
+ Top = title.Crop[0],
+ Bottom = title.Crop[1],
+ Left = title.Crop[2],
+ Right = title.Crop[3]
+ },
+ Fps = ((double)title.FrameRate.Num) / title.FrameRate.Den,
+ SourceName = title.Path,
+ MainTitle = mainFeature == title.Index,
+ Playlist = title.Type == 1 ? string.Format(" {0:d5}.MPLS", title.Playlist).Trim() : null,
+ FramerateNumerator = title.FrameRate.Num,
+ FramerateDenominator = title.FrameRate.Den,
+ Type = title.Type
+ };
+
+ int currentTrack = 1;
+ foreach (SourceChapter chapter in title.ChapterList)
+ {
+ string chapterName = !string.IsNullOrEmpty(chapter.Name) ? chapter.Name : string.Empty;
+ converted.Chapters.Add(new Chapter(currentTrack, chapterName, new TimeSpan(chapter.Duration.Hours, chapter.Duration.Minutes, chapter.Duration.Seconds)));
+ currentTrack++;
+ }
+
+ int currentAudioTrack = 1;
+ foreach (SourceAudioTrack track in title.AudioList)
+ {
+ converted.AudioTracks.Add(new Audio(currentAudioTrack, track.Language, track.LanguageCode, track.Description, track.Codec, track.SampleRate, track.BitRate, track.ChannelLayout));
+ currentAudioTrack++;
+ }
+
+ int currentSubtitleTrack = 1;
+ foreach (SourceSubtitleTrack track in title.SubtitleList)
+ {
+ SubtitleType convertedType = new SubtitleType();
+
+ switch (track.Source)
+ {
+ case 0:
+ convertedType = SubtitleType.VobSub;
+ break;
+ case 4:
+ convertedType = SubtitleType.UTF8Sub;
+ break;
+ case 5:
+ convertedType = SubtitleType.TX3G;
+ break;
+ case 6:
+ convertedType = SubtitleType.SSA;
+ break;
+ case 1:
+ convertedType = SubtitleType.SRT;
+ break;
+ case 2:
+ convertedType = SubtitleType.CC;
+ break;
+ case 3:
+ convertedType = SubtitleType.CC;
+ break;
+ case 7:
+ convertedType = SubtitleType.PGS;
+ break;
+ }
+
+ bool canBurn = HBFunctions.hb_subtitle_can_burn(track.Source) > 0;
+ bool canSetForcedOnly = HBFunctions.hb_subtitle_can_force(track.Source) > 0;
+
+ converted.Subtitles.Add(new Subtitle(track.Source, currentSubtitleTrack, track.Language, track.LanguageCode, convertedType, canBurn, canSetForcedOnly));
+ currentSubtitleTrack++;
+ }
+
+ SourceMetadata metadata = title.MetaData;
+ if (title.MetaData != null)
+ {
+ converted.Metadata = new Metadata(
+ metadata.AlbumArtist,
+ metadata.Album,
+ metadata.Artist,
+ metadata.Comment,
+ metadata.Composer,
+ metadata.Description,
+ metadata.Genre,
+ metadata.LongDescription,
+ metadata.Name,
+ metadata.ReleaseDate);
+ }
+
+ return converted;
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs b/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs
index d17a5d3c9..598758073 100644
--- a/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs
+++ b/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs
@@ -26,6 +26,7 @@ namespace HandBrakeWPF.Services.Scan
using HandBrakeWPF.Services.Encode.Model;
using HandBrakeWPF.Services.Encode.Model.Models;
using HandBrakeWPF.Services.Scan.EventArgs;
+ using HandBrakeWPF.Services.Scan.Factories;
using HandBrakeWPF.Services.Scan.Interfaces;
using HandBrakeWPF.Services.Scan.Model;
using HandBrakeWPF.Utilities;
@@ -47,6 +48,7 @@ namespace HandBrakeWPF.Services.Scan
#region Private Variables
private readonly ILog log = LogService.GetLogger();
+ private TitleFactory titleFactory = new TitleFactory();
private string currentSourceScanPath;
private IHandBrakeInstance instance;
private Action<bool, Source> postScanOperation;
@@ -365,89 +367,12 @@ namespace HandBrakeWPF.Services.Scan
/// <returns>
/// The convert titles.
/// </returns>
- private static List<Title> ConvertTitles(JsonScanObject titles)
+ private List<Title> ConvertTitles(JsonScanObject titles)
{
List<Title> titleList = new List<Title>();
foreach (SourceTitle title in titles.TitleList)
{
- Title converted = new Title
- {
- TitleNumber = title.Index,
- Duration = new TimeSpan(0, title.Duration.Hours, title.Duration.Minutes, title.Duration.Seconds),
- Resolution = new Size(title.Geometry.Width, title.Geometry.Height),
- AngleCount = title.AngleCount,
- ParVal = new Size(title.Geometry.PAR.Num, title.Geometry.PAR.Den),
- AutoCropDimensions = new Cropping
- {
- Top = title.Crop[0],
- Bottom = title.Crop[1],
- Left = title.Crop[2],
- Right = title.Crop[3]
- },
- Fps = ((double)title.FrameRate.Num) / title.FrameRate.Den,
- SourceName = title.Path,
- MainTitle = titles.MainFeature == title.Index,
- Playlist = title.Type == 1 ? string.Format(" {0:d5}.MPLS", title.Playlist).Trim() : null,
- FramerateNumerator = title.FrameRate.Num,
- FramerateDenominator = title.FrameRate.Den,
- Type = title.Type
- };
-
- int currentTrack = 1;
- foreach (SourceChapter chapter in title.ChapterList)
- {
- string chapterName = !string.IsNullOrEmpty(chapter.Name) ? chapter.Name : string.Empty;
- converted.Chapters.Add(new Chapter(currentTrack, chapterName, new TimeSpan(chapter.Duration.Hours, chapter.Duration.Minutes, chapter.Duration.Seconds)));
- currentTrack++;
- }
-
- int currentAudioTrack = 1;
- foreach (SourceAudioTrack track in title.AudioList)
- {
- converted.AudioTracks.Add(new Audio(currentAudioTrack, track.Language, track.LanguageCode, track.Description, track.Codec, track.SampleRate, track.BitRate, track.ChannelLayout));
- currentAudioTrack++;
- }
-
- int currentSubtitleTrack = 1;
- foreach (SourceSubtitleTrack track in title.SubtitleList)
- {
- SubtitleType convertedType = new SubtitleType();
-
- switch (track.Source)
- {
- case 0:
- convertedType = SubtitleType.VobSub;
- break;
- case 4:
- convertedType = SubtitleType.UTF8Sub;
- break;
- case 5:
- convertedType = SubtitleType.TX3G;
- break;
- case 6:
- convertedType = SubtitleType.SSA;
- break;
- case 1:
- convertedType = SubtitleType.SRT;
- break;
- case 2:
- convertedType = SubtitleType.CC;
- break;
- case 3:
- convertedType = SubtitleType.CC;
- break;
- case 7:
- convertedType = SubtitleType.PGS;
- break;
- }
-
- bool canBurn = HBFunctions.hb_subtitle_can_burn(track.Source) > 0;
- bool canSetForcedOnly = HBFunctions.hb_subtitle_can_force(track.Source) > 0;
-
- converted.Subtitles.Add(new Subtitle(track.Source, currentSubtitleTrack, track.Language, track.LanguageCode, convertedType, canBurn, canSetForcedOnly));
- currentSubtitleTrack++;
- }
-
+ Title converted = this.titleFactory.CreateTitle(title, titles.MainFeature);
titleList.Add(converted);
}
diff --git a/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs b/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs
new file mode 100644
index 000000000..36d955870
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs
@@ -0,0 +1,86 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="MetaData.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// An MetaData Class
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Services.Scan.Model
+{
+ /// <summary>
+ /// The meta data.
+ /// </summary>
+ public class Metadata
+ {
+ public Metadata()
+ {
+ }
+
+ public Metadata(string albumArtist, string album, string artist, string comment, string composer, string description, string genre, string longDescription, string name, string releaseDate)
+ {
+ this.AlbumArtist = albumArtist;
+ this.Album = album;
+ this.Artist = artist;
+ this.Comment = comment;
+ this.Composer = composer;
+ this.Description = description;
+ this.Genre = genre;
+ this.LongDescription = longDescription;
+ this.Name = name;
+ this.ReleaseDate = releaseDate;
+ }
+
+ /// <summary>
+ /// Gets the album artist.
+ /// </summary>
+ public string AlbumArtist { get; }
+
+
+ /// <summary>
+ /// Gets the album.
+ /// </summary>
+ public string Album { get; }
+
+ /// <summary>
+ /// Gets the artist.
+ /// </summary>
+ public string Artist { get; }
+
+ /// <summary>
+ /// Gets the comment.
+ /// </summary>
+ public string Comment { get; }
+
+ /// <summary>
+ /// Gets the composer.
+ /// </summary>
+ public string Composer { get; }
+
+ /// <summary>
+ /// Gets the description.
+ /// </summary>
+ public string Description { get; }
+
+ /// <summary>
+ /// Gets the genre.
+ /// </summary>
+ public string Genre { get; }
+
+ /// <summary>
+ /// Gets the long description.
+ /// </summary>
+ public string LongDescription { get; }
+
+ /// <summary>
+ /// Gets the name.
+ /// </summary>
+ public string Name { get; }
+
+ /// <summary>
+ /// Gets the release date.
+ /// </summary>
+ public string ReleaseDate { get; }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
index 144a1ed26..2fd980eeb 100644
--- a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
+++ b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
@@ -16,9 +16,6 @@ namespace HandBrakeWPF.Services.Scan.Model
using HandBrake.Interop.Interop.Model;
- using HandBrakeWPF.Model;
- using HandBrakeWPF.Utilities;
-
/// <summary>
/// An object that represents a single Title of a DVD
/// </summary>
@@ -32,6 +29,7 @@ namespace HandBrakeWPF.Services.Scan.Model
this.AudioTracks = new List<Audio>();
this.Chapters = new List<Chapter>();
this.Subtitles = new List<Subtitle>();
+ this.Metadata = new Metadata();
}
#region Properties
@@ -51,6 +49,8 @@ namespace HandBrakeWPF.Services.Scan.Model
/// </summary>
public List<Subtitle> Subtitles { get; set; }
+ public Metadata Metadata { get; set; }
+
/// <summary>
/// Gets or sets The track number of this Title
/// </summary>
diff --git a/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs
index ec4fa6d78..e6f3b17fc 100644
--- a/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs
@@ -27,7 +27,6 @@ namespace HandBrakeWPF.ViewModels
public class MetaDataViewModel : ViewModelBase, IMetaDataViewModel
{
private EncodeTask task;
- private MetaData metaData;
/// <summary>
/// Initializes a new instance of the <see cref="MetaDataViewModel"/> class.
@@ -40,45 +39,24 @@ namespace HandBrakeWPF.ViewModels
/// </param>
public MetaDataViewModel(IWindowManager windowManager, IUserSettingService userSettingService)
{
- this.Task = new EncodeTask();
+ this.task = new EncodeTask();
}
public event EventHandler<TabStatusEventArgs> TabStatusChanged;
/// <summary>
- /// The Current Job
- /// </summary>
- public EncodeTask Task
- {
- get
- {
- return this.task;
- }
- set
- {
- this.task = value;
-
- if (this.task != null)
- {
- this.MetaData = this.task.MetaData;
- }
-
- this.NotifyOfPropertyChange(() => this.Task);
- }
- }
-
- /// <summary>
/// Gets or sets the meta data.
/// </summary>
public MetaData MetaData
{
get
{
- return this.metaData;
+ return this.task.MetaData;
}
+
set
{
- this.metaData = value;
+ this.task.MetaData = value;
this.NotifyOfPropertyChange(() => this.MetaData);
}
}
@@ -100,7 +78,10 @@ namespace HandBrakeWPF.ViewModels
/// </param>
public void SetSource(Source source, Title selectedTitle, Preset currentPreset, EncodeTask encodeTask)
{
- this.Task = encodeTask;
+ return; // Disabled for now.
+ this.task = encodeTask;
+ this.task.MetaData = new MetaData(selectedTitle.Metadata);
+ this.NotifyOfPropertyChange(() => this.MetaData);
}
/// <summary>
@@ -114,7 +95,6 @@ namespace HandBrakeWPF.ViewModels
/// </param>
public void SetPreset(Preset preset, EncodeTask encodeTask)
{
- this.Task = encodeTask;
}
/// <summary>
@@ -125,7 +105,8 @@ namespace HandBrakeWPF.ViewModels
/// </param>
public void UpdateTask(EncodeTask encodeTask)
{
- this.Task = encodeTask;
+ this.task = encodeTask;
+ this.NotifyOfPropertyChange(() => this.MetaData);
}
public bool MatchesPreset(Preset preset)
diff --git a/win/CS/HandBrakeWPF/Views/MetaDataView.xaml b/win/CS/HandBrakeWPF/Views/MetaDataView.xaml
index 975305f82..34c328529 100644
--- a/win/CS/HandBrakeWPF/Views/MetaDataView.xaml
+++ b/win/CS/HandBrakeWPF/Views/MetaDataView.xaml
@@ -36,6 +36,7 @@
<RowDefinition Height="Auto" MinHeight="25" />
<RowDefinition Height="Auto" MinHeight="25" />
<RowDefinition Height="Auto" MinHeight="25" />
+ <RowDefinition Height="Auto" MinHeight="25" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
@@ -45,30 +46,33 @@
<TextBlock Text="Album Artist:" Grid.Row="0" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding MetaData.AlbumArtist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
-
- <TextBlock Text="Artist:" Grid.Row="1" Grid.Column="0" />
- <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MetaData.Artist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+
+ <TextBlock Text="Album:" Grid.Row="1" Grid.Column="0" />
+ <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MetaData.Album, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+
+ <TextBlock Text="Artist:" Grid.Row="2" Grid.Column="0" />
+ <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MetaData.Artist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Comment:" Grid.Row="2" Grid.Column="0" />
- <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MetaData.Comment, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Comment:" Grid.Row="3" Grid.Column="0" />
+ <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MetaData.Comment, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Composer:" Grid.Row="3" Grid.Column="0" />
- <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MetaData.Composer, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Composer:" Grid.Row="4" Grid.Column="0" />
+ <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding MetaData.Composer, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Description:" Grid.Row="4" Grid.Column="0" />
- <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding MetaData.Description, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Description:" Grid.Row="5" Grid.Column="0" />
+ <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding MetaData.Description, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Genre:" Grid.Row="5" Grid.Column="0" />
- <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding MetaData.Genre, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Genre:" Grid.Row="6" Grid.Column="0" />
+ <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding MetaData.Genre, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Long Description:" Grid.Row="6" Grid.Column="0" />
- <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding MetaData.LongDescription, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Long Description:" Grid.Row="7" Grid.Column="0" />
+ <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding MetaData.LongDescription, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Name:" Grid.Row="7" Grid.Column="0" />
- <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding MetaData.Name, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Name:" Grid.Row="8" Grid.Column="0" />
+ <TextBox Grid.Row="8" Grid.Column="1" Text="{Binding MetaData.Name, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
- <TextBlock Text="Release Date:" Grid.Row="8" Grid.Column="0" />
- <TextBox Grid.Row="8" Grid.Column="1" Text="{Binding MetaData.ReleaseDate, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
+ <TextBlock Text="Release Date:" Grid.Row="9" Grid.Column="0" />
+ <TextBox Grid.Row="9" Grid.Column="1" Text="{Binding MetaData.ReleaseDate, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" />
</Grid>
</Grid>