Skip to content

Commit 4e5800e

Browse files
committed
[Update] Enhance Tree class with icon provider, context menu, and file filtering
1 parent 031ed89 commit 4e5800e

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/Tree.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
#include "CodeEditor.h"
44

55
#include <QFileDialog>
6-
#include <QAbstractItemView>
76
#include <QFileInfo>
7+
#include <QFileIconProvider>
8+
#include <QTreeView>
89

910
Tree::Tree(QSplitter *splitter, MainWindow *mainWindow) : QObject(splitter), mainWindow(mainWindow)
1011
{
@@ -22,6 +23,9 @@ Tree::~Tree() {}
2223
void Tree::setupModel()
2324
{
2425
model->setRootPath(getDirectoryPath());
26+
model->setIconProvider(new QFileIconProvider);
27+
model->setFilter(QDir::AllEntries | QDir::Hidden | QDir::NoDotAndDotDot);
28+
2529
}
2630

2731
void Tree::setupTree()
@@ -34,6 +38,9 @@ void Tree::setupTree()
3438
tree->setSortingEnabled(false);
3539
tree->sortByColumn(1, Qt::AscendingOrder);
3640

41+
tree->setContextMenuPolicy(Qt::CustomContextMenu);
42+
connect(tree, &QTreeView::customContextMenuRequested, this, &Tree::showContextMenu);
43+
3744
for (int i = 1; i <= 3; ++i)
3845
{
3946
tree->setColumnHidden(i, true);
@@ -52,8 +59,20 @@ void Tree::openFile(const QModelIndex &index)
5259
QString filePath = model->filePath(index);
5360
QFileInfo fileInfo(filePath);
5461

55-
if (fileInfo.isFile()) // Ensure it's a file, not a folder
62+
// Ensure it's a file, not a folder before loading
63+
if (fileInfo.isFile())
5664
{
5765
mainWindow->loadFileInEditor(filePath);
5866
}
5967
}
68+
69+
void Tree::showContextMenu(const QPoint &pos)
70+
{
71+
// TO_DO: Implement delete a file
72+
// TO_DO: Implement rename a file
73+
// TO_DO: Implement create a new file
74+
// TO_DO: Implement create a new folder
75+
76+
// use pos param for testing purpose for now
77+
tree->indexAt(pos);
78+
}

0 commit comments

Comments
 (0)