Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
3.5 KiB

8 years ago
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
import de.skycoder42.QtMvvm.Core 1.1
import de.skycoder42.QtMvvm.Quick 1.1
8 years ago
/*! @brief The view implementation for the QtMvvm::SettingsViewModel
*
* @extends QtQuick.Controls.Page
*
* @details This is the view used to present a settings view model. You can extend the class
* if you need to extend that view.
*
* @sa QtMvvm::SettingsViewModel
*/
8 years ago
Page {
id: _settingsView
/*! @brief The viewmodel to use
*
* @default{<i>Injected</i>}
*
* @accessors{
* @memberAc{viewModel}
* @notifyAc{viewModelChanged()}
* }
*
* @sa QtMvvm::SettingsViewModel
*/
8 years ago
property SettingsViewModel viewModel: null
/*! @brief Specifiy if a back action should always close the full settings
*
* @default{`false`}
*
* The settings view consists of an internal stack view to present settings pages. By
* default only one page is closed at a time. By setting this property to true, a close
* action will always close all of them.
*
* @accessors{
* @memberAc{fullClose}
* @notifyAc{fullCloseChanged()}
* }
*/
8 years ago
property bool fullClose: false
8 years ago
/*! @brief Can be called to try to close a single settings page
*
* @return type:bool `true` if a page was closed, `false` if not
*
* This method is called by the presenter to close the pages of the settings view one at
* a time.
*
* @note if SettingsView::fullClose is true, this method will always return false.
*
* @sa SettingsView::fullClose, PresentingStackView::closeAction
*/
8 years ago
function closeAction() {
8 years ago
return !fullClose && _settingsStack.closeAction();
8 years ago
}
8 years ago
header: ContrastToolBar {
8 years ago
id: _toolBar
RowLayout {
id: _toolLayout
anchors.fill: parent
spacing: 0
SearchBar {
id: _searchBar
8 years ago
Layout.fillWidth: true
8 years ago
Layout.fillHeight: true
8 years ago
title: qsTr("Settings")
allowSearch: _builder.allowSearch
searchToolTip: qsTr("Search in settings")
8 years ago
}
ActionButton {
id: _restoreButton
visible: _builder.allowRestore
icon.source: "qrc:/de/skycoder42/qtmvvm/quick/icons/ic_settings_backup_restore.svg"
8 years ago
text: qsTr("Restore settings")
onClicked: _builder.restoreDefaults()
8 years ago
}
}
}
PresenterProgress {}
StackView {
id: _settingsStack
anchors.fill: parent
function closeAction() {
if(_settingsStack.depth <= 1)
return false;
else {
_settingsStack.pop();
return true;
}
}
}
Component {
id: _overviewComponent
8 years ago
ScrollView {
id: __ovScrollView
8 years ago
property alias model: __ovListView.model
property alias showSections: __ovListView.showSections
clip: true
OverviewListView {
id: __ovListView
builder: _builder
}
Component.onCompleted: _settingsStack.push(__ovScrollView)
}
}
Component {
id: _sectionViewComponent
8 years ago
ScrollView {
id: __secScrollView
8 years ago
property alias model: __secListView.model
clip: true
SectionListView {
id: __secListView
builder: _builder
}
Component.onCompleted: _settingsStack.push(__secScrollView)
}
}
SettingsUiBuilder {
id: _builder
buildView: _settingsView
viewModel: _settingsView.viewModel
filterText: _searchBar.searchText
onPresentOverview: _overviewComponent.incubateObject(_settingsStack, {
model: model,
showSections: hasSections
}, Qt.Synchronous)
onPresentSection: _sectionViewComponent.incubateObject(_settingsStack, {
model: model
}, Qt.Synchronous)
8 years ago
onCloseSettings: {
_settingsView.fullClose = true;
QuickPresenter.popView();
}
}
8 years ago
}