mirror of https://github.com/cutefishos/texteditor
Add tabbar
parent
ea547b1c36
commit
097b158f38
@ -1,15 +1,127 @@
|
|||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
import QtQuick.Window 2.15
|
import QtQuick.Window 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
import FishUI 1.0 as FishUI
|
import FishUI 1.0 as FishUI
|
||||||
|
|
||||||
FishUI.Window {
|
FishUI.Window {
|
||||||
width: 640
|
width: 640
|
||||||
height: 480
|
height: 480
|
||||||
visible: true
|
visible: true
|
||||||
title: qsTr("Hello World")
|
title: qsTr("Text Editor")
|
||||||
|
|
||||||
TextEditor {
|
headerItem: Item {
|
||||||
|
TabBar {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
currentIndex : _container.currentIndex
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: _repeater
|
||||||
|
model: _container.count
|
||||||
|
|
||||||
|
TabButton {
|
||||||
|
text: _container.contentModel.get(index).fileName
|
||||||
|
implicitHeight: parent.height
|
||||||
|
implicitWidth: Math.max(parent.width / _repeater.count, 200)
|
||||||
|
|
||||||
|
ToolTip.delay: 1000
|
||||||
|
ToolTip.timeout: 5000
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
ToolTip.visible: hovered
|
||||||
|
ToolTip.text: _container.contentModel.get(index).fileUrl
|
||||||
|
|
||||||
|
leftPadding: FishUI.Units.smallSpacing
|
||||||
|
rightPadding: FishUI.Units.smallSpacing
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
_container.currentIndex = index
|
||||||
|
_container.currentItem.forceActiveFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
Container {
|
||||||
|
id: _container
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
contentItem: ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: _view
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
interactive: false
|
||||||
|
orientation: ListView.Horizontal
|
||||||
|
snapMode: ListView.SnapOneItem
|
||||||
|
currentIndex: _container.currentIndex
|
||||||
|
|
||||||
|
model: _container.contentModel
|
||||||
|
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
boundsMovement :Flickable.StopAtBounds
|
||||||
|
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
preferredHighlightBegin: 0
|
||||||
|
preferredHighlightEnd: width
|
||||||
|
|
||||||
|
highlightRangeMode: ListView.StrictlyEnforceRange
|
||||||
|
highlightMoveDuration: 0
|
||||||
|
highlightFollowsCurrentItem: true
|
||||||
|
highlightResizeDuration: 0
|
||||||
|
highlightMoveVelocity: -1
|
||||||
|
highlightResizeVelocity: -1
|
||||||
|
|
||||||
|
maximumFlickVelocity: 4 * width
|
||||||
|
|
||||||
|
cacheBuffer: _view.count * width
|
||||||
|
keyNavigationEnabled : false
|
||||||
|
keyNavigationWraps : false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: 20
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addTab() {
|
||||||
|
const component = textEditorCompeont
|
||||||
|
const object = component.createObject(_container.contentModel)
|
||||||
|
|
||||||
|
_container.addItem(object)
|
||||||
|
_container.currentIndex = Math.max(_container.count - 1, 0)
|
||||||
|
object.forceActiveFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: textEditorCompeont
|
||||||
|
|
||||||
|
TextEditor {
|
||||||
fileUrl: "file:///home/reion/Cutefish/core/notificationd/view.cpp"
|
fileUrl: "file:///home/reion/Cutefish/core/notificationd/view.cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
addTab()
|
||||||
|
addTab()
|
||||||
|
addTab()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue