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.
81 lines
1.6 KiB
81 lines
1.6 KiB
import QtQuick 2.10
|
|
import QtQuick.Controls 2.3
|
|
import QtQuick.Controls.Material 2.3
|
|
import QtQuick.Layouts 1.3
|
|
import de.skycoder42.QtMvvm.Core 1.0
|
|
import de.skycoder42.QtMvvm.Quick 1.0
|
|
import de.skycoder42.QtMvvm.Sample 1.0
|
|
|
|
Page {
|
|
id: tabView
|
|
property TabViewModel viewModel: null
|
|
|
|
header: ContrastToolBar {
|
|
height: 56 + tabBar.height
|
|
|
|
GridLayout {
|
|
anchors.fill: parent
|
|
rowSpacing: 0
|
|
columnSpacing: 0
|
|
columns: 2
|
|
|
|
ActionButton {
|
|
text: "≣"
|
|
display: AbstractButton.TextOnly
|
|
onClicked: QuickPresenter.toggleDrawer()
|
|
}
|
|
|
|
ToolBarLabel {
|
|
text: qsTr("Sample Tabs")
|
|
Layout.fillWidth: true
|
|
Layout.preferredHeight: 56
|
|
}
|
|
|
|
TabBar {
|
|
id: tabBar
|
|
Layout.columnSpan: 2
|
|
Layout.fillWidth: true
|
|
onCurrentIndexChanged: swipe.setCurrentIndex(currentIndex)
|
|
Material.background: Material.primary
|
|
|
|
TabButton {
|
|
text: "+"
|
|
onClicked: viewModel.addTab();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
PresenterProgress {}
|
|
|
|
SwipeView {
|
|
id: swipe
|
|
anchors.fill: parent
|
|
onCurrentIndexChanged: tabBar.setCurrentIndex(currentIndex)
|
|
}
|
|
|
|
Component {
|
|
id: _newTab
|
|
TabButton {
|
|
property TabItemViewModel viewModel: null
|
|
|
|
text: viewModel.title
|
|
}
|
|
}
|
|
|
|
function presentTab(item) {
|
|
console.log("here");
|
|
tabBar.insertItem(tabBar.count - 1, _newTab.createObject(tabBar, {viewModel: item.viewModel}));
|
|
item.parent = swipe;
|
|
swipe.addItem(item);
|
|
tabBar.setCurrentIndex(tabBar.count - 2);
|
|
return true;
|
|
}
|
|
|
|
function afterPop() {
|
|
while(tabBar.count > 0)
|
|
tabBar.takeItem(0).destroy();
|
|
while(swipe.count > 0)
|
|
swipe.takeItem(0).destroy();
|
|
}
|
|
}
|
|
|