pragma Singleton pragma ComponentBehavior: Bound import QtQuick import Weave.Controls import Weave.Templates as T ModalDialog { id: dialog property T.TableView view title: qsTr("Manage columns") dismissible: true interactionHandles: ModalDialog.RightHandle | ModalDialog.BottomHandle verticalFitPolicy: ModalDialog.PreferResize implicitWidth: Math.max( Theme.component.modal.minWidth, implicitContentWidth + leftPadding + rightPadding) messageContent: TableLayoutColumn { horizontalItemFillMode: TableLayout.Preferred Search { style: Search.Line onSearch: (searchText) => { searchFilter.text = searchText } onStopSearch: { searchFilter.text = "" } } T.ListView { id: view TableLayout.verticalFillMode: TableLayout.Preferred TableLayout.topMargin: Theme.component.modal.headerContainer.paddingBottom model: dialog.view?.columnVisibilityModel filter: SearchFilter { id: searchFilter } delegate: ItemDelegate { id: delegate required property bool columnVisible required property int column required text leftPadding: 0 rightPadding: 0 hoverEnabled: true indicator: SwitchIndicator { checked: delegate.columnVisible pressed: delegate.pressed hovered: delegate.hovered visualFocus: delegate.visualFocus } onClicked: dialog.view.setColumnVisible(column, !columnVisible) } } } footer: TableLayoutRow { horizontalItemFillMode: TableLayout.Preferred verticalItemFillMode: TableLayout.Preferred topMargin: Theme.component.modal.actionsContainer.paddingTop bottomMargin: Theme.component.modal.actionsContainer.paddingBottom leftMargin: Theme.component.modal.actionsContainer.paddingLeft rightMargin: Theme.component.modal.actionsContainer.paddingRight Button { text: qsTr("Hide All") style: Button.Flat onClicked: dialog.view.hideAllColumns() } Button { text: qsTr("Show All") style: Button.Flat onClicked: dialog.view.showAllColumns() } } }