107 lines
2.8 KiB
C++
107 lines
2.8 KiB
C++
#ifndef FILEMANAGER_H
|
|
#define FILEMANAGER_H
|
|
|
|
#include <QMainWindow>
|
|
#include <QCache>
|
|
#include <QFileSystemModel>
|
|
#include <QTreeView>
|
|
#include <QDialog>
|
|
#include <QTabBar>
|
|
#include <QHBoxLayout>
|
|
#include "imageinfodata.h"
|
|
|
|
namespace Ui {
|
|
class FileManager;
|
|
class FITSKeyword;
|
|
}
|
|
|
|
class PathTabBar : public QTabBar
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit PathTabBar(const QStringList &tabs);
|
|
QHBoxLayout* createLayout();
|
|
const QStringList& tabPaths() const;
|
|
QString currentTabPath() const;
|
|
public slots:
|
|
void pathChanged(const QString &path);
|
|
signals:
|
|
void tabChanged(const QString &path);
|
|
private:
|
|
QStringList _tabs;
|
|
};
|
|
|
|
class FITSSelection : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
FITSSelection(const QStringList &keywords, QWidget *parent = nullptr);
|
|
~FITSSelection();
|
|
QStringList FITSKeywords() const;
|
|
private:
|
|
Ui::FITSKeyword *ui;
|
|
};
|
|
|
|
class FileManager : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit FileManager(const QSet<QString> &openFilter, QWidget *parent = nullptr);
|
|
~FileManager();
|
|
public slots:
|
|
void selectFITSKeywords();
|
|
protected slots:
|
|
void addTab();
|
|
signals:
|
|
void openFile(const QString &path);
|
|
private:
|
|
Ui::FileManager *ui;
|
|
PathTabBar *_leftTabBar;
|
|
PathTabBar *_rightTabBar;
|
|
};
|
|
|
|
class DirFileSystemModel : public QFileSystemModel
|
|
{
|
|
Q_OBJECT
|
|
mutable QCache<QString, ImageInfoData> *_cache = nullptr;
|
|
static QCache<QString, ImageInfoData>* getCacheInstance();
|
|
QModelIndex _dir;
|
|
QStringList _fitsKeywords;
|
|
bool _loadFitsKeywords = true;
|
|
public:
|
|
explicit DirFileSystemModel(QObject *parent = nullptr);
|
|
void setDir(const QString &path);
|
|
QString dir() const;
|
|
void setFITSKeywords(const QStringList &keywords);
|
|
const QStringList& FITSKeywords() 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;
|
|
public slots:
|
|
void loadFitsKeywords(bool enable);
|
|
};
|
|
|
|
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);
|
|
void setFITSKeywords(const QStringList &keywords);
|
|
const QStringList& FITSKeywords() const;
|
|
public slots:
|
|
void headerContextMenu(const QPoint &pos);
|
|
void loadFitsKeywords(bool enable);
|
|
signals:
|
|
void dirChanged(const QString &path);
|
|
void openFile(const QString &path);
|
|
};
|
|
|
|
#endif // FILEMANAGER_H
|