Compare commits

..

No commits in common. "0fac2b71ab777a3e4d4cd9627eae4cd59a66b147" and "048d40eb83e548aceac0c86b95c8daf2ee4238a1" have entirely different histories.

8 changed files with 129 additions and 165 deletions

View File

@ -19,6 +19,8 @@ And of course, [Rust](https://www.rust-lang.org/tools/install).
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
``` ```
## Dependencies
This project requires at least Qt 6.7. To check your Qt version This project requires at least Qt 6.7. To check your Qt version
```bash ```bash
@ -142,7 +144,6 @@ Some helpful links for reading up on QML if you're just getting started.
* [All QML Controls Types](https://doc.qt.io/qt-6/qtquick-controls-qmlmodule.html) * [All QML Controls Types](https://doc.qt.io/qt-6/qtquick-controls-qmlmodule.html)
* [KDAB CXX-Qt Book](https://kdab.github.io/cxx-qt/book/) * [KDAB CXX-Qt Book](https://kdab.github.io/cxx-qt/book/)
* [github.com/KDAB/cxx-qt](https://github.com/KDAB/cxx-qt) * [github.com/KDAB/cxx-qt](https://github.com/KDAB/cxx-qt)
* [QML and C++ Intergration](https://doc.qt.io/qt-6/qtqml-cppintegration-overview.html)
### Plugins ### Plugins

View File

@ -18,7 +18,6 @@ fn main() {
.qt_module("Gui") .qt_module("Gui")
.qt_module("Svg") .qt_module("Svg")
.qt_module("Xml") .qt_module("Xml")
.qrc("./resources.qrc")
.files(["src/gui/colors.rs", "src/gui/filesystem.rs"]) .files(["src/gui/colors.rs", "src/gui/filesystem.rs"])
.build(); .build();
} }

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -31,7 +31,7 @@ ApplicationWindow {
anchors.top: parent.top anchors.top: parent.top
anchors.margins: 20 anchors.margins: 20
source: "qrc:/images/kilroy.png" source: "../icons/kilroy-256.png"
sourceSize.width: 80 sourceSize.width: 80
sourceSize.height: 80 sourceSize.height: 80
fillMode: Image.PreserveAspectFit fillMode: Image.PreserveAspectFit

View File

@ -43,26 +43,11 @@ SplitView {
SplitView.preferredWidth: 200 SplitView.preferredWidth: 200
SplitView.maximumWidth: 250 SplitView.maximumWidth: 250
ColumnLayout { StackLayout {
spacing: 2 anchors.fill: parent
Rectangle {
width: navigationView.width
height: breadCrumb.height + 5
color: RustColors.explorer_text
Text {
id: breadCrumb
text: clideTreeView.rootDirectory
elide: Text.ElideLeft
horizontalAlignment: Text.AlignHCenter
}
}
ClideTreeView { ClideTreeView {
id: clideTreeView id: clideTreeView
onFileClicked: path => root.projectDir = path onFileClicked: path => root.projectDir = path
width: navigationView.width
height: navigationView.height
// Path to the directory opened in the file explorer. // Path to the directory opened in the file explorer.
rootDirectory: root.projectDir rootDirectory: root.projectDir

View File

@ -3,36 +3,41 @@
// SPDX-License-Identifier: GNU General Public License v3.0 or later // SPDX-License-Identifier: GNU General Public License v3.0 or later
import QtQuick import QtQuick
import QtQuick.Effects
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Layouts
import clide.module 1.0 import clide.module 1.0
TreeView { Rectangle {
id: fileSystemTreeView id: root
model: FileSystem color: RustColors.explorer_background
property int lastIndex: -1
required property string rootDirectory required property string rootDirectory
signal fileClicked(string filePath) signal fileClicked(string filePath)
TreeView {
id: fileSystemTreeView
anchors.margins: 15
rootIndex: FileSystem.rootIndex property int lastIndex: -1
leftMargin: 5
model: FileSystem
anchors.fill: parent
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
boundsMovement: Flickable.StopAtBounds boundsMovement: Flickable.StopAtBounds
clip: true clip: true
rootIndex: FileSystem.rootIndex
Component.onCompleted: { Component.onCompleted: {
FileSystem.rootIndex = FileSystem.setDirectory(fileSystemTreeView.rootDirectory) FileSystem.setDirectory(root.rootDirectory)
fileSystemTreeView.expandRecursively(0, -1)
} }
// The delegate represents a single entry in the filesystem. // The delegate represents a single entry in the filesystem.
delegate: TreeViewDelegate { delegate: TreeViewDelegate {
id: treeDelegate id: treeDelegate
indentation: 6 indentation: 8
implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250 implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250
implicitHeight: 25 implicitHeight: 25
@ -88,29 +93,8 @@ TreeView {
} }
} }
MultiEffect {
id: iconOverlay
anchors.fill: directoryIcon
source: directoryIcon
colorization: 1.0
brightness: 1.0
colorizationColor: {
const isFile = !treeDelegate.hasChildren;
if (isFile)
return Qt.lighter(RustColors.explorer_folder, 2)
const isExpandedFolder = treeDelegate.expanded && treeDelegate.hasChildren;
if (isExpandedFolder)
return Qt.darker(RustColors.explorer_folder, 2)
else
return RustColors.explorer_folder
}
}
HoverHandler { HoverHandler {
id: hoverHandler id: hoverHandler
acceptedDevices: PointerDevice.Mouse
} }
TapHandler { TapHandler {
@ -145,8 +129,7 @@ TreeView {
Action { Action {
text: qsTr("Reset root index") text: qsTr("Reset root index")
onTriggered: { onTriggered: {
console.log("Reset root index") FileSystem.rootIndex = FileSystem.setDirectory(root.rootDirectory)
FileSystem.rootIndex = FileSystem.setDirectory(fileSystemTreeView.rootDirectory)
} }
} }
} }
@ -172,3 +155,4 @@ TreeView {
} }
} }
} }
}

View File

@ -1,5 +0,0 @@
<RCC>
<qresource prefix="/images">
<file alias="kilroy.png">images/kilroy-256.png</file>
</qresource>
</RCC>

View File

@ -88,10 +88,10 @@ impl Default for RustColorsImpl {
gutter: QColor::try_from("#1e1f22").unwrap(), gutter: QColor::try_from("#1e1f22").unwrap(),
explorer_hovered: QColor::try_from("#4c5053").unwrap(), explorer_hovered: QColor::try_from("#4c5053").unwrap(),
explorer_text: QColor::try_from("#3b3b3b").unwrap(), explorer_text: QColor::try_from("#3b3b3b").unwrap(),
explorer_text_selected: QColor::try_from("#262626").unwrap(), explorer_text_selected: QColor::try_from("#8b8b8b").unwrap(),
explorer_background: QColor::try_from("#1E1F22").unwrap(), explorer_background: QColor::try_from("#676c70").unwrap(),
explorer_folder: QColor::try_from("#54585b").unwrap(), explorer_folder: QColor::try_from("#54585b").unwrap(),
explorer_folder_open: QColor::try_from("#2b2b2b").unwrap(), explorer_folder_open: QColor::try_from("#FFF").unwrap(),
} }
} }
} }