Aragas/Bannerlord.MBOptionScreen

View on GitHub
src/MCM.UI/GUI/Prefabs/SettingsPropertyGroupView.xml

Summary

Maintainability
Test Coverage
<Prefab>
  <Window>

    <ListPanel HeightSizePolicy="CoverChildren" WidthSizePolicy="StretchToParent" LayoutImp.LayoutMethod="VerticalBottomToTop" VerticalAlignment="Top"
               HorizontalAlignment="Left" UpdateChildrenStates="true" IsVisible="@IsGroupVisible">
      <Children>

        <!-- Group display section -->
        <Widget HeightSizePolicy="Fixed" SuggestedHeight="42" WidthSizePolicy="StretchToParent" VerticalAlignment="Top"  MarginTop="20">
          <Children>

            <ListPanel HeightSizePolicy="StretchToParent" WidthSizePolicy="StretchToParent" VerticalAlignment="Top" HorizontalAlignment="Left"
                       LayoutImp.LayoutMethod="HorizontalLeftToRight">
              <Children>

                <!-- Enable toggle -->
                <Widget WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" VerticalAlignment="Center" HorizontalAlignment="Left"
                        IsVisible="@HasGroupToggle" UpdateChildrenStates="true">
                  <Children>
                    <ButtonWidget DoNotPassEventsToChildren="true" WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="40" SuggestedHeight="40"
                                  Brush="MCM.Input.Bool.Empty" ButtonType="Toggle" IsSelected="@GroupToggle"
                                  ToggleIndicator="ToggleIndicator" UpdateChildrenStates="true">
                      <Children>
                        <ImageWidget Id="ToggleIndicator" WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" Brush="MCM.Input.Bool.Full" />
                      </Children>
                    </ButtonWidget>
                  </Children>
                </Widget>

                <!-- Group Name and Expander arrow -->
                <ButtonWidget UpdateChildrenStates="true" HeightSizePolicy="StretchToParent" WidthSizePolicy="StretchToParent" HorizontalAlignment="Left"
                              MarginLeft="10" MarginRight="10" Command.Click="OnGroupClick" DoNotPassEventsToChildren="true" IsSelected="@IsExpanded"
                              IsEnabled="@GroupToggle">
                  <Children>

                    <RichTextWidget Text="@GroupNameDisplay" HeightSizePolicy="CoverChildren" WidthSizePolicy="CoverChildren" HorizontalAlignment="Left"
                                    VerticalAlignment="Center" Brush="MCM.Group.Text" IsEnabled="@GroupToggle"/>

                    <ImageWidget HeightSizePolicy="Fixed" WidthSizePolicy="Fixed" SuggestedWidth="40" SuggestedHeight="40" HorizontalAlignment="Right"
                                 Brush="MCM.ExpandIndicator" VerticalAlignment="Center" IsVisible="@GroupToggle"/>

                  </Children>
                </ButtonWidget>

              </Children>
            </ListPanel>

            <HintWidget WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" Command.HoverBegin="OnHover" Command.HoverEnd="OnHoverEnd"/>

          </Children>
        </Widget>

        <!-- Divider -->
        <Widget WidthSizePolicy="StretchToParent" HeightSizePolicy="Fixed" SuggestedHeight="2" VerticalAlignment="Top" Sprite="GradientDivider_9" AlphaFactor="0.4" MarginTop="4"/>

        <!-- SettingProperties List -->
        <ListPanel DataSource="{SettingProperties}" HeightSizePolicy="CoverChildren" WidthSizePolicy="StretchToParent" MarginLeft="10" MarginRight="10"
                   LayoutImp.LayoutMethod="VerticalBottomToTop" HorizontalAlignment="Left" MarginTop="10">
          <ItemTemplate>
            <SettingsPropertyView />
          </ItemTemplate>
        </ListPanel>

        <!-- Subgroups List -->
        <ListPanel DataSource="{SettingPropertyGroups}" HeightSizePolicy="CoverChildren" WidthSizePolicy="StretchToParent" MarginLeft="25" MarginRight="25"
                   LayoutImp.LayoutMethod="VerticalBottomToTop" HorizontalAlignment="Left">
          <ItemTemplate>
            <SettingsPropertyGroupView />
          </ItemTemplate>
        </ListPanel>

      </Children>
    </ListPanel>

  </Window>
</Prefab>