Skip to content

Commit 666b857

Browse files
committed
Added two additional stream select options
1 parent f5bab95 commit 666b857

File tree

3 files changed

+109
-46
lines changed

3 files changed

+109
-46
lines changed

ff-utils-winforms/Forms/MainForm.Designer.cs

Lines changed: 57 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ff-utils-winforms/Forms/MainForm.StreamList.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,6 @@ private void streamList_Leave(object sender, EventArgs e)
120120
QuickConvertUi.LoadMetadataGrid();
121121
}
122122

123-
private void streamList_MouseDown(object sender, MouseEventArgs e)
124-
{
125-
//if (streamList.IndexFromPoint(new Point(e.X, e.Y)) <= -1) // if no item was clicked
126-
// streamList.SelectedItems.Clear();
127-
128-
//UpdateTrackListUpDownBtnsState();
129-
}
130-
131123
private void trackListMoveUpBtn_Click(object sender, EventArgs e)
132124
{
133125
UiUtils.MoveListViewItem(streamList, UiUtils.MoveDirection.Up);
@@ -172,5 +164,15 @@ private void checkAllSubtitleTracksToolStripMenuItem_Click(object sender, EventA
172164
{
173165
TrackList.CheckTracksOfType(Stream.StreamType.Subtitle);
174166
}
167+
168+
private void checkFirstTrackOfEachTypeToolStripMenuItem_Click(object sender, EventArgs e)
169+
{
170+
TrackList.CheckFirstOfEachType();
171+
}
172+
173+
private void checkFirstTrackOfEachLanguagePerTypeToolStripMenuItem_Click(object sender, EventArgs e)
174+
{
175+
TrackList.CheckFirstOfEachLangOfEachType();
176+
}
175177
}
176178
}

ff-utils-winforms/UI/TrackList.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,48 @@ public static void CheckTracksOfType(Stream.StreamType type)
278278
Program.mainForm.OnCheckedStreamsChange();
279279
}
280280

281+
public static void CheckFirstOfEachType()
282+
{
283+
ListView list = Program.mainForm.streamList;
284+
var firstVid = list.Items.Cast<ListViewItem>().Where(x => ((MediaStreamListEntry)x.Tag).Stream.Type == Stream.StreamType.Video).FirstOrDefault();
285+
var firstAud = list.Items.Cast<ListViewItem>().Where(x => ((MediaStreamListEntry)x.Tag).Stream.Type == Stream.StreamType.Audio).FirstOrDefault();
286+
var firstSub = list.Items.Cast<ListViewItem>().Where(x => ((MediaStreamListEntry)x.Tag).Stream.Type == Stream.StreamType.Subtitle).FirstOrDefault();
287+
288+
for (int i = 0; i < list.Items.Count; i++)
289+
{
290+
Program.mainForm.ignoreStreamListCheck = i < (list.Items.Count - 1);
291+
list.Items[i].Checked = list.Items[i] == firstVid || list.Items[i] == firstAud || list.Items[i] == firstSub;
292+
}
293+
294+
Program.mainForm.OnCheckedStreamsChange();
295+
}
296+
297+
public static void CheckFirstOfEachLangOfEachType()
298+
{
299+
ListView list = Program.mainForm.streamList;
300+
List<string> checkedLangs = new List<string>();
301+
302+
for (int i = 0; i < list.Items.Count; i++)
303+
{
304+
Program.mainForm.ignoreStreamListCheck = i < (list.Items.Count - 1);
305+
306+
MediaStreamListEntry entry = (MediaStreamListEntry)list.Items[i].Tag;
307+
string hash = $"{entry.Stream.Type}{entry.Stream.Language}";
308+
309+
if (checkedLangs.Contains(hash))
310+
{
311+
list.Items[i].Checked = false;
312+
}
313+
else
314+
{
315+
list.Items[i].Checked = true;
316+
checkedLangs.Add(hash);
317+
}
318+
}
319+
320+
Program.mainForm.OnCheckedStreamsChange();
321+
}
322+
281323
#endregion
282324
}
283325
}

0 commit comments

Comments
 (0)