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.
140 lines
3.0 KiB
140 lines
3.0 KiB
import QtQuick 2.0
|
|
import QtQuick.Window 2.0
|
|
import QtQuick.Layouts 1.0
|
|
import QtQuick.Controls 1.0
|
|
|
|
Item {
|
|
property bool renameMode: false;
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
Text {
|
|
Layout.fillWidth: true
|
|
color: "blue"
|
|
text: projectModel.projectTitle
|
|
horizontalAlignment: Text.AlignHCenter
|
|
visible: !projectModel.isEmpty;
|
|
}
|
|
ListView {
|
|
id: projectList
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
model: projectModel.listModel
|
|
|
|
delegate: renderDelegate
|
|
highlight: Rectangle {
|
|
color: "lightsteelblue";
|
|
}
|
|
highlightFollowsCurrentItem: true
|
|
focus: true
|
|
clip: true
|
|
|
|
onCurrentIndexChanged: {
|
|
if (currentIndex >= 0 && currentIndex < projectModel.listModel.count)
|
|
projectModel.openDocument(projectModel.listModel.get(currentIndex).documentId);
|
|
}
|
|
}
|
|
Menu {
|
|
id: contextMenu
|
|
MenuItem {
|
|
text: qsTr("Rename")
|
|
onTriggered: {
|
|
renameMode = true;
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Delete")
|
|
onTriggered: {
|
|
projectModel.removeDocument(projectList.model.get(projectList.currentIndex).documentId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: renderDelegate
|
|
Item {
|
|
id: wrapperItem
|
|
height: 20
|
|
width: parent.width
|
|
RowLayout {
|
|
anchors.fill: parent
|
|
visible: !(index === projectList.currentIndex) || !renameMode
|
|
Text {
|
|
id: nameText
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
text: name
|
|
font.pointSize: 12
|
|
verticalAlignment: Text.AlignBottom
|
|
}
|
|
}
|
|
|
|
TextInput {
|
|
id: textInput
|
|
text: nameText.text
|
|
visible: (index === projectList.currentIndex) && renameMode
|
|
MouseArea {
|
|
id: textMouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
z:2
|
|
onClicked: {
|
|
textInput.forceActiveFocus();
|
|
}
|
|
}
|
|
|
|
onVisibleChanged: {
|
|
if (visible) {
|
|
selectAll();
|
|
forceActiveFocus();
|
|
}
|
|
}
|
|
|
|
onAccepted: close(true);
|
|
onCursorVisibleChanged: {
|
|
if (!cursorVisible)
|
|
close(false);
|
|
}
|
|
onFocusChanged: {
|
|
if (!focus)
|
|
close(false);
|
|
}
|
|
function close(accept) {
|
|
renameMode = false;
|
|
if (accept)
|
|
projectModel.renameDocument(projectList.model.get(projectList.currentIndex).documentId, textInput.text);
|
|
}
|
|
}
|
|
MouseArea {
|
|
id: mouseArea
|
|
z: 1
|
|
hoverEnabled: false
|
|
anchors.fill: parent
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
onClicked:{
|
|
projectList.currentIndex = index;
|
|
if (mouse.button === Qt.RightButton && !projectList.model.get(index).isContract)
|
|
contextMenu.popup();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Connections {
|
|
target: projectModel
|
|
onProjectLoaded: {
|
|
projectList.currentIndex = 0;
|
|
if (projectList.currentIndex >= 0 && projectList.currentIndex < projectModel.listModel.count)
|
|
projectModel.openDocument(projectModel.listModel.get(projectList.currentIndex).documentId);
|
|
|
|
}
|
|
onProjectClosed: {
|
|
projectList.currentIndex = -1;
|
|
}
|
|
onDocumentOpened: {
|
|
if (projectList.currentItem.documentId !== document.documentId)
|
|
projectList.currentIndex = projectModel.getDocumentIndex(document.documentId);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|