import QtQuick 2.0 import QtQuick.Window 2.0 import QtQuick.Layouts 1.0 import QtQuick.Controls 1.0 import QtQuick.Controls.Styles 1.3 import Qt.labs.settings 1.0 import "." Item { property bool renameMode: false; property alias sections: sectionRepeater ProjectFilesStyle { id: projectFilesStyle } ColumnLayout { anchors.fill: parent id: filesCol spacing: 0 SourceSansProLight { id: srcSansProLight } Rectangle { color: projectFilesStyle.title.background height: projectFilesStyle.title.height Layout.fillWidth: true Image { id: projectIcon source: "qrc:/qml/img/dappProjectIcon.png" anchors.right: projectTitle.left anchors.verticalCenter: parent.verticalCenter anchors.rightMargin: 6 fillMode: Image.PreserveAspectFit width: 32 height: 32 } Text { id: projectTitle color: projectFilesStyle.title.color text: projectModel.projectTitle anchors.verticalCenter: parent.verticalCenter visible: !projectModel.isEmpty; anchors.left: parent.left anchors.leftMargin: projectFilesStyle.general.leftMargin font.family: srcSansProLight.name font.pointSize: projectFilesStyle.title.fontSize font.weight: Font.Light } Text { text: "-" anchors.right: parent.right anchors.rightMargin: 15 font.family: srcSansProLight.name font.pointSize: projectFilesStyle.title.fontSize anchors.verticalCenter: parent.verticalCenter font.weight: Font.Light } } Rectangle { Layout.fillWidth: true height: 3 color: projectFilesStyle.documentsList.background } Rectangle { Layout.fillWidth: true Layout.fillHeight: true color: projectFilesStyle.documentsList.background ColumnLayout { anchors.top: parent.top width: parent.width spacing: 0 Repeater { model: [qsTr("Contracts"), qsTr("Javascript"), qsTr("Web Pages"), qsTr("Styles"), qsTr("Images"), qsTr("Misc")]; signal selected(string doc, string groupName) signal isCleanChanged(string doc, string groupName, var isClean) property int incr: -1; id: sectionRepeater FilesSection { id: section; sectionName: modelData index: { for (var k in sectionRepeater.model) { if (sectionRepeater.model[k] === modelData) return k; } } model: sectionModel selManager: sectionRepeater onDocumentSelected: { selManager.selected(doc, groupName); } ListModel { id: sectionModel } Connections { target: codeModel onContractRenamed: { if (modelData === "Contracts") { var ci = 0; for (var si = 0; si < projectModel.listModel.count; si++) { var document = projectModel.listModel.get(si); if (document.isContract) { var compiledDoc = codeModel.contractByDocumentId(document.documentId); if (_documentId === document.documentId && _newName !== document.name) { document.name = _newName; projectModel.listModel.set(si, document); sectionModel.set(ci, document); } ci++; } } } } onCompilationComplete: { if (modelData === "Contracts") { var ci = 0; for (var si = 0; si < projectModel.listModel.count; si++) { var document = projectModel.listModel.get(si); if (document.isContract) { var compiledDoc = codeModel.contractByDocumentId(document.documentId); if (compiledDoc && compiledDoc.documentId === document.documentId && compiledDoc.contract.name !== document.name) { document.name = compiledDoc.contract.name; projectModel.listModel.set(si, document); sectionModel.set(ci, document); } ci++; } } } } } Connections { id: projectModelConnection target: projectModel function addDocToSubModel() { for (var k = 0; k < projectModel.listModel.count; k++) { var item = projectModel.listModel.get(k); if (item.groupName === modelData) sectionModel.append(item); } } onIsCleanChanged: { for (var si = 0; si < sectionModel.count; si++) { var document = sectionModel.get(si); if (documentId === document.documentId && document.groupName === modelData) { selManager.isCleanChanged(documentId, modelData, isClean); break; } } } onDocumentOpened: { if (document.groupName === modelData) sectionRepeater.selected(document.documentId, modelData); } onNewProject: { sectionModel.clear(); } onProjectClosed: { sectionModel.clear(); } onProjectLoaded: { sectionModel.clear(); addDocToSubModel(); if (modelData === "Contracts") { var selItem = projectModel.listModel.get(0); projectModel.openDocument(selItem.documentId); sectionRepeater.selected(selItem.documentId, modelData); } } onDocumentAdded: { var newDoc = projectModel.getDocument(documentId); if (newDoc.groupName === modelData) { sectionModel.append(newDoc); projectModel.openDocument(newDoc.documentId); sectionRepeater.selected(newDoc.documentId, modelData); } } } } } } } } }