Skip to content

Commit

Permalink
WinGui: Minor tweaks around menu rendering for presets.
Browse files Browse the repository at this point in the history
  • Loading branch information
sr55 committed Aug 29, 2021
1 parent b0eb026 commit c9603ca
Showing 1 changed file with 42 additions and 24 deletions.
66 changes: 42 additions & 24 deletions win/CS/HandBrakeWPF/Converters/PresetsMenuConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ namespace HandBrakeWPF.Converters
public class PresetsMenuConverter : IValueConverter
{
private readonly IUserSettingService userSettingService;

public PresetsMenuConverter()
{
this.userSettingService = IoC.Get<IUserSettingService>();
Expand Down Expand Up @@ -77,19 +77,6 @@ public object Convert(object value, Type targetType, object parameter, CultureIn


groupedMenu.Add(new Separator());

MenuItem presetLabelMenuItem = new MenuItem
{
Header = "Presets:",
Tag = null,
IsEnabled = false,
FontSize = 12,
Margin = new Thickness(0,2,0,2)
};

presetLabelMenuItem.FontWeight = FontWeights.Bold;
presetLabelMenuItem.FontStyle = FontStyles.Normal;
groupedMenu.Add(presetLabelMenuItem);
}

IEnumerable<IPresetObject> presetObjects = presets.ToList();
Expand All @@ -103,39 +90,51 @@ public object Convert(object value, Type targetType, object parameter, CultureIn
break;

case PresetDisplayMode.Partial:
GenerateTopUserPresets(groupedMenu, presetObjects.FirstOrDefault(p => p.Category == PresetService.UserPresetCategoryName));
GeneratePresets(groupedMenu, presetObjects.ToList());
GenerateUserPresets(groupedMenu, presetObjects.FirstOrDefault(p => p.Category == PresetService.UserPresetCategoryName));
GeneratePresets(groupedMenu, presetObjects.ToList(), mode);
break;

case PresetDisplayMode.Category:
GeneratePresets(groupedMenu, presetObjects.ToList());
GeneratePresets(groupedMenu, presetObjects.ToList(), mode);
break;
}

return groupedMenu;
}

private void GenerateTopUserPresets(List<object> groupedMenu, IPresetObject userPresets)
private void GenerateUserPresets(List<object> groupedMenu, IPresetObject userPresets)
{
PresetDisplayCategory category = userPresets as PresetDisplayCategory;
if (category != null)
{
foreach (var preset in category.Presets.TakeLast(8).Reverse())
if (category.Presets.Count != 0)
{
groupedMenu.Add(GeneratePresetMenuItem(preset));
groupedMenu.Add(GenerateMenuHeader(category.Category));
groupedMenu.Add(new Separator());
}

if (category.Presets.Count != 0)
foreach (var preset in category.Presets.Reverse())
{
groupedMenu.Add(new Separator());
groupedMenu.Add(GeneratePresetMenuItem(preset));
}
}
}

private void GeneratePresets(List<object> groupedMenu, IList<IPresetObject> userPresets)
private void GeneratePresets(List<object> groupedMenu, IList<IPresetObject> userPresets, PresetDisplayMode displayMode)
{
if (displayMode == PresetDisplayMode.Partial)
{
groupedMenu.Add(GenerateMenuHeader(Resources.Main_Presets));
groupedMenu.Add(new Separator());
}

foreach (IPresetObject presetCategory in userPresets)
{
if (displayMode == PresetDisplayMode.Partial && PresetService.UserPresetCategoryName.Equals(presetCategory.Category))
{
continue; // In Partially Flat mode, we show the user presets flat so no need to include the category.
}

PresetDisplayCategory category = presetCategory as PresetDisplayCategory;
if (category != null)
{
Expand All @@ -148,7 +147,6 @@ private MenuItem GeneratePresetGroup(PresetDisplayCategory category)
{
MenuItem group = new MenuItem();
group.Header = category.Category;

foreach (var preset in category.Presets)
{
group.Items.Add(GeneratePresetMenuItem(preset));
Expand All @@ -164,6 +162,8 @@ private void GenerateFlatList(List<object> groupedMenu, IList<IPresetObject> use
PresetDisplayCategory category = presetCategory as PresetDisplayCategory;
if (category != null)
{
groupedMenu.Add(GenerateMenuHeader(category.Category));

if (groupedMenu.Count != 0 && groupedMenu.LastOrDefault()?.GetType() != typeof(Separator))
{
groupedMenu.Add(new Separator());
Expand Down Expand Up @@ -195,6 +195,24 @@ private MenuItem GeneratePresetMenuItem(Preset preset)
return newMenuItem;
}

private MenuItem GenerateMenuHeader(string name)
{
MenuItem presetLabelMenuItem = new MenuItem
{
Header = name,
Tag = null,
IsEnabled = false,
FontSize = 12.5,
Margin = new Thickness(0, 2, 0, 2)
};

presetLabelMenuItem.FontWeight = FontWeights.Bold;
presetLabelMenuItem.FontStyle = FontStyles.Normal;
presetLabelMenuItem.Margin = new Thickness(0, 4, 0, 0);

return presetLabelMenuItem;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
Expand Down

0 comments on commit c9603ca

Please sign in to comment.