Working copy/move operation
This commit is contained in:
+50
-6
@@ -8,6 +8,7 @@
|
||||
#include <QDialog>
|
||||
#include <QTabBar>
|
||||
#include <QHBoxLayout>
|
||||
#include <QMessageBox>
|
||||
#include "imageinfodata.h"
|
||||
|
||||
namespace Ui {
|
||||
@@ -15,6 +16,34 @@ class FileManager;
|
||||
class FITSKeyword;
|
||||
}
|
||||
|
||||
class FileManager;
|
||||
|
||||
class FileTransfer: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FileTransfer(FileManager *fm);
|
||||
~FileTransfer();
|
||||
public slots:
|
||||
void copy(const QStringList &src, const QString &dst);
|
||||
void move(const QStringList &src, const QString &dst);
|
||||
void cancel();
|
||||
signals:
|
||||
void progress(int percent);
|
||||
void finished();
|
||||
void error(const QString &title, const QString &text);
|
||||
private:
|
||||
void perform(const QStringList &src, const QString &dst, bool copy);
|
||||
struct Action
|
||||
{
|
||||
QString src;
|
||||
QString dst;
|
||||
bool dir = false;
|
||||
};
|
||||
FileManager *_fm;
|
||||
bool _run = true;
|
||||
};
|
||||
|
||||
class PathTabBar : public QTabBar
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -51,25 +80,28 @@ public:
|
||||
~FileManager();
|
||||
public slots:
|
||||
void selectFITSKeywords();
|
||||
void copySelectedFilesPaths();
|
||||
void pathEdited();
|
||||
void copyMoveFiles(Qt::DropAction action, const QStringList &src, const QString &dst);
|
||||
QMessageBox::StandardButton overwrite(const QString &dst);
|
||||
void errorMessage(const QString &title, const QString &text);
|
||||
signals:
|
||||
void openFile(const QString &path);
|
||||
void copy(const QStringList &src, const QString &dst);
|
||||
void move(const QStringList &src, const QString &dst);
|
||||
private:
|
||||
Ui::FileManager *ui;
|
||||
PathTabBar *_leftTabBar;
|
||||
PathTabBar *_rightTabBar;
|
||||
QThread *_thread;
|
||||
FileTransfer *_fileTransfer;
|
||||
};
|
||||
|
||||
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);
|
||||
explicit DirFileSystemModel(QWidget *parentWidget);
|
||||
void setDir(const QString &path);
|
||||
QString dir() const;
|
||||
void setFITSKeywords(const QStringList &keywords);
|
||||
@@ -79,8 +111,18 @@ public:
|
||||
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;
|
||||
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
|
||||
public slots:
|
||||
void loadFitsKeywords(bool enable);
|
||||
signals:
|
||||
void filesAction(Qt::DropAction action, const QStringList &src, const QString &dst);
|
||||
private:
|
||||
mutable QCache<QString, ImageInfoData> *_cache = nullptr;
|
||||
static QCache<QString, ImageInfoData>* getCacheInstance();
|
||||
QModelIndex _dir;
|
||||
QStringList _fitsKeywords;
|
||||
bool _loadFitsKeywords = true;
|
||||
QWidget *_parentWidget = nullptr;
|
||||
};
|
||||
|
||||
class DirView : public QTreeView
|
||||
@@ -98,9 +140,11 @@ public:
|
||||
public slots:
|
||||
void headerContextMenu(const QPoint &pos);
|
||||
void loadFitsKeywords(bool enable);
|
||||
void copySelectedFilesPathsToClipboard() const;
|
||||
signals:
|
||||
void dirChanged(const QString &path);
|
||||
void openFile(const QString &path);
|
||||
void filesAction(Qt::DropAction action, const QStringList &src, const QString &dst);
|
||||
};
|
||||
|
||||
#endif // FILEMANAGER_H
|
||||
|
||||
Reference in New Issue
Block a user