Add filemanager

This commit is contained in:
2025-07-21 20:16:34 +02:00
parent b58559a18a
commit a88f05a9fe
11 changed files with 338 additions and 5 deletions
+57
View File
@@ -0,0 +1,57 @@
#ifndef FILEMANAGER_H
#define FILEMANAGER_H
#include <QMainWindow>
#include <QCache>
#include <QFileSystemModel>
#include <QTreeView>
#include "imageinfodata.h"
namespace Ui {
class FileManager;
}
class FileManager : public QMainWindow
{
Q_OBJECT
public:
explicit FileManager(const QSet<QString> &openFilter, QWidget *parent = nullptr);
~FileManager();
signals:
void openFile(const QString &path);
private:
Ui::FileManager *ui;
};
class DirFileSystemModel : public QFileSystemModel
{
mutable QCache<QString, ImageInfoData> *_cache = nullptr;
static QCache<QString, ImageInfoData>* getCacheInstance();
QModelIndex _dir;
public:
explicit DirFileSystemModel(QObject *parent = nullptr);
void setDir(const QString &path);
QString dir() const;
Qt::ItemFlags flags(const QModelIndex &index) const override;
int columnCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &index, int role) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
bool hasChildren(const QModelIndex &parent) const override;
};
class DirView : public QTreeView
{
Q_OBJECT
DirFileSystemModel *_dirFileSystemModel = nullptr;
QSet<QString> _openFilter;
public:
explicit DirView(QWidget *parent = nullptr);
void setDir(const QString &path);
QString dir() const;
void setOpenFilter(const QSet<QString> &openFilter);
signals:
void dirChanged(const QString &path);
void openFile(const QString &path);
};
#endif // FILEMANAGER_H