import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import FishUI 1.0 as FishUI import Cutefish.TextEditor 1.0 FishUI.Window { id: root width: 640 height: 480 minimumWidth: 300 minimumHeight: 300 visible: true title: qsTr("Text Editor") FileHelper { id: fileHelper onNewPath: { _tabView.addTab(textEditorCompeont, { fileUrl: path }) } } headerItem: Item { Rectangle { anchors.fill: parent color: FishUI.Theme.backgroundColor } FishUI.TabBar { id: _tabbar anchors.fill: parent anchors.margins: FishUI.Units.smallSpacing / 2 anchors.rightMargin: FishUI.Units.largeSpacing * 4 model: _tabView.count currentIndex : _tabView.currentIndex onNewTabClicked: { addTab() } delegate: FishUI.TabButton { id: _tabBtn text: _tabView.contentModel.get(index).tabName implicitHeight: _tabbar.height implicitWidth: Math.min(_tabbar.width / _tabbar.count, _tabBtn.contentWidth) ToolTip.delay: 1000 ToolTip.timeout: 5000 checked: _tabView.currentIndex === index ToolTip.visible: hovered ToolTip.text: _tabView.contentModel.get(index).fileUrl onClicked: { _tabView.currentIndex = index _tabView.currentItem.forceActiveFocus() } onCloseClicked: { _tabView.closeTab(index) } } } } DropArea { id: _dropArea anchors.fill: parent onDropped: { if (drop.hasUrls) { for (var i = 0; i < drop.urls.length; ++i) { fileHelper.addPath(drop.urls[i]) } } } } ColumnLayout { anchors.fill: parent spacing: 0 FishUI.TabView { id: _tabView Layout.fillWidth: true Layout.fillHeight: true } Item { id: _bottomItem z: 999 Layout.fillWidth: true Layout.preferredHeight: 20 + FishUI.Units.smallSpacing Rectangle { anchors.fill: parent color: FishUI.Theme.backgroundColor } ColumnLayout { anchors.fill: parent anchors.leftMargin: FishUI.Units.smallSpacing anchors.rightMargin: FishUI.Units.smallSpacing anchors.bottomMargin: FishUI.Units.smallSpacing Label { text: _tabView.currentItem ? qsTr("Characters %1").arg(_tabView.currentItem.characterCount) : "" } } } } function addPath(path) { _tabView.addTab(textEditorCompeont, { fileUrl: path }) } function addTab() { _tabView.addTab(textEditorCompeont, {}) } Component { id: textEditorCompeont TextEditor { fileUrl: "file:///home/cutefish/桌面/winepath" } } Component.onCompleted: { // addTab() } }