Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Nikse.SubtitleEdit.Core.SubtitleFormats;
using Nikse.SubtitleEdit.Features.Main;
using Nikse.SubtitleEdit.Features.Shared;
using Nikse.SubtitleEdit.Features.Shared.FindText;
using Nikse.SubtitleEdit.Logic;
using Nikse.SubtitleEdit.Logic.Config;
using Nikse.SubtitleEdit.Logic.Media;
Expand Down Expand Up @@ -40,6 +41,7 @@ public partial class PointSyncViaOtherViewModel : ObservableObject
private readonly IWindowService _windowService;

private string _videoFileName;
private List<SubtitleLineViewModel> _originalSubtitles;

public PointSyncViaOtherViewModel(IFileHelper fileHelper, IWindowService windowService)
{
Expand All @@ -53,12 +55,14 @@ public PointSyncViaOtherViewModel(IFileHelper fileHelper, IWindowService windowS
FileNameOther = string.Empty;
_videoFileName = string.Empty;
SyncedSubtitles = new List<SubtitleLineViewModel>();
_originalSubtitles = new List<SubtitleLineViewModel>();
}

public void Initialize(List<SubtitleLineViewModel> subtitles, string videoFileName, string fileName)
{
Subtitles.Clear();
Subtitles.AddRange(subtitles);
_originalSubtitles = subtitles.Select(s => new SubtitleLineViewModel(s)).ToList();
FileName = fileName;
_videoFileName = videoFileName;

Expand Down Expand Up @@ -152,10 +156,65 @@ private void DeleteSelectedPointSync()
IsOkEnabled = SyncPoints.Count > 0;
}

[RelayCommand]
private void Apply()
{
if (SyncPoints.Count == 0)
{
return;
}

// Re-preview from the original timings so repeated Apply clicks don't stack.
var synced = PointSyncer.PointSync(_originalSubtitles, SyncPoints.ToList());
for (var i = 0; i < Subtitles.Count && i < synced.Count; i++)
{
Subtitles[i].StartTime = synced[i].StartTime;
Subtitles[i].EndTime = synced[i].EndTime;
}
}

[RelayCommand]
private async Task FindTextLeft()
{
if (Window == null)
{
return;
}

var result = await _windowService.ShowDialogAsync<FindTextWindow, FindTextViewModel>(Window, vm =>
{
vm.Initialize(Subtitles.ToList(), string.Format(Se.Language.General.FindTextX, FileName));
});

if (result.OkPressed && result.SelectedSubtitle != null)
{
SelectedSubtitle = result.SelectedSubtitle;
}
}

[RelayCommand]
private async Task FindTextOther()
{
if (Window == null || Othersubtitles.Count == 0)
{
return;
}

var result = await _windowService.ShowDialogAsync<FindTextWindow, FindTextViewModel>(Window, vm =>
{
vm.Initialize(Othersubtitles.ToList(), string.Format(Se.Language.General.FindTextX, FileNameOther));
});

if (result.OkPressed && result.SelectedSubtitle != null)
{
SelectedOtherSubtitle = result.SelectedSubtitle;
}
}

[RelayCommand]
private void Ok()
{
SyncedSubtitles = PointSyncer.PointSync(Subtitles.ToList(), SyncPoints.ToList());
SyncedSubtitles = PointSyncer.PointSync(_originalSubtitles, SyncPoints.ToList());
OkPressed = true;
Close();
}
Expand Down
34 changes: 31 additions & 3 deletions src/ui/Features/Sync/PointSyncViaOther/PointSyncViaOtherWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ public PointSyncViaOtherWindow(PointSyncViaOtherViewModel vm)
var controlView = MakeControlView(vm);
var subtitleOtherView = MakeSubtitleOtherView(vm);

var buttonApply = UiUtil.MakeButton(Se.Language.General.Apply, vm.ApplyCommand).WithBindIsEnabled(nameof(vm.IsOkEnabled));
var buttonOk = UiUtil.MakeButtonOk(vm.OkCommand).WithBindIsEnabled(nameof(vm.IsOkEnabled));
var buttonCancel = UiUtil.MakeButtonCancel(vm.CancelCommand);
var panelButtons = UiUtil.MakeButtonBar(buttonOk, buttonCancel);
var panelButtons = UiUtil.MakeButtonBar(buttonApply, buttonOk, buttonCancel);

var grid = new Grid
{
Expand Down Expand Up @@ -141,6 +142,19 @@ private static Grid MakeSubtitleView(PointSyncViaOtherViewModel vm)
};

var labelFileName = UiUtil.MakeLabel(string.Empty).WithBindText(vm, nameof(vm.FileName));
labelFileName.VerticalAlignment = VerticalAlignment.Center;
var buttonFindText = UiUtil.MakeButton(Se.Language.Sync.FindText, vm.FindTextLeftCommand);
buttonFindText.HorizontalAlignment = HorizontalAlignment.Right;
var panelHeader = new Grid
{
ColumnDefinitions =
{
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) },
},
};
panelHeader.Add(labelFileName, 0, 0);
panelHeader.Add(buttonFindText, 0, 1);

var fullTimeConverter = new TimeSpanToDisplayFullConverter();
var shortTimeConverter = new TimeSpanToDisplayShortConverter();
Expand Down Expand Up @@ -184,7 +198,7 @@ private static Grid MakeSubtitleView(PointSyncViaOtherViewModel vm)
};
dataGrid.Bind(DataGrid.SelectedItemProperty, new Binding(nameof(vm.SelectedSubtitle)));

grid.Add(labelFileName, 0);
grid.Add(panelHeader, 0);
grid.Add(UiUtil.MakeBorderForControlNoPadding(dataGrid), 1);

return grid;
Expand All @@ -209,11 +223,25 @@ private static Grid MakeSubtitleOtherView(PointSyncViaOtherViewModel vm)

var buttonBrowseOther = UiUtil.MakeButtonBrowse(vm.BrowseOtherCommand);
var labelOtherFileName = UiUtil.MakeLabel(string.Empty).WithBindText(vm, nameof(vm.FileNameOther));
labelOtherFileName.VerticalAlignment = VerticalAlignment.Center;
var panelOtherBrowse = new StackPanel
{
Orientation = Orientation.Horizontal,
VerticalAlignment = VerticalAlignment.Center,
Children = { buttonBrowseOther, labelOtherFileName },
};
var buttonFindTextOther = UiUtil.MakeButton(Se.Language.Sync.FindText, vm.FindTextOtherCommand);
buttonFindTextOther.HorizontalAlignment = HorizontalAlignment.Right;
var panelOtherHeader = new Grid
{
ColumnDefinitions =
{
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) },
},
};
panelOtherHeader.Add(panelOtherBrowse, 0, 0);
panelOtherHeader.Add(buttonFindTextOther, 0, 1);

var fullTimeConverter = new TimeSpanToDisplayFullConverter();
var shortTimeConverter = new TimeSpanToDisplayShortConverter();
Expand Down Expand Up @@ -257,7 +285,7 @@ private static Grid MakeSubtitleOtherView(PointSyncViaOtherViewModel vm)
};
dataGridSubtitle.Bind(DataGrid.SelectedItemProperty, new Binding(nameof(vm.SelectedOtherSubtitle)));

grid.Add(panelOtherBrowse, 0);
grid.Add(panelOtherHeader, 0);
grid.Add(UiUtil.MakeBorderForControlNoPadding(dataGridSubtitle), 1);

return grid;
Expand Down