- enhancement: resort files in the files view after rename

This commit is contained in:
Roy Qu 2022-07-06 19:44:44 +08:00
parent 262b4916fd
commit 898d5f4e08
5 changed files with 38 additions and 1 deletions

View File

@ -12,7 +12,8 @@ Red Panda C++ Version 1.1.4
- enhancement: prevent group undo when caret position changed
- fix: undo link break may lose leading spaces
- fix: correctly restore editor's modified status when undo/redo
- enhancement: set current index to the folder after new folder created in the file view
- enhancement: set current index to the folder after new folder created in the files view
- enhancement: resort files in the files view after rename
Red Panda C++ Version 1.1.3

View File

@ -298,6 +298,8 @@ MainWindow::MainWindow(QWidget *parent)
//files view
ui->treeFiles->setModel(&mFileSystemModel);
connect(&mFileSystemModel, &QFileSystemModel::layoutChanged,
this, &MainWindow::onFileSystemModelLayoutChanged, Qt::QueuedConnection);
mFileSystemModel.setReadOnly(false);
mFileSystemModel.setIconProvider(&mFileSystemModelIconProvider);
@ -4391,6 +4393,11 @@ void MainWindow::on_EditorTabsRight_tabCloseRequested(int index)
mEditorList->closeEditor(editor);
}
void MainWindow::onFileSystemModelLayoutChanged()
{
ui->treeFiles->scrollTo(ui->treeFiles->currentIndex(),QTreeView::PositionAtCenter);
}
void MainWindow::on_actionOpen_triggered()
{
try {

View File

@ -351,6 +351,8 @@ private slots:
void on_EditorTabsLeft_tabCloseRequested(int index);
void on_EditorTabsRight_tabCloseRequested(int index);
void onFileSystemModelLayoutChanged();
void on_actionOpen_triggered();
void on_actionSave_triggered();

View File

@ -20,6 +20,25 @@
CustomFileSystemModel::CustomFileSystemModel(QObject *parent) : QFileSystemModel(parent)
{
connect(this, &QFileSystemModel::fileRenamed,
this, &CustomFileSystemModel::delaySort);
connect(this, &CustomFileSystemModel::rowsInserted,
this, &CustomFileSystemModel::delaySort);
connect(&mDelayedSortTimer, &QTimer::timeout,
this, &CustomFileSystemModel::performDelayedSort, Qt::QueuedConnection);
mDelayedSortTimer.setSingleShot(true);
}
void CustomFileSystemModel::delaySort()
{
if (!mDelayedSortTimer.isActive())
mDelayedSortTimer.start(0);
}
void CustomFileSystemModel::performDelayedSort()
{
sort(1);
sort(0);
}

View File

@ -18,6 +18,7 @@
#define CUSTOMFILESYSTEMMODEL_H
#include <QFileSystemModel>
#include <QTimer>
class GitRepository;
class GitManager;
@ -27,6 +28,13 @@ class CustomFileSystemModel : public QFileSystemModel
public:
explicit CustomFileSystemModel(QObject *parent = nullptr);
public slots:
void delaySort();
protected slots:
void performDelayedSort();
private:
QTimer mDelayedSortTimer;
};
#endif // CUSTOMFILESYSTEMMODEL_H