X-Git-Url: https://www.flypig.org.uk/git/?p=openvpnui.git;a=blobdiff_plain;f=src%2Ffilebrowse%2Fengine.h;fp=src%2Ffilebrowse%2Fengine.h;h=c98495886576c21604419407ec5b020750ebec1e;hp=0000000000000000000000000000000000000000;hb=e24363e314aca32e7bee952f02f517a04a8dc5f2;hpb=ee3968ffa08d4e0fcbad87765efa3aeb32ff0554 diff --git a/src/filebrowse/engine.h b/src/filebrowse/engine.h new file mode 100644 index 0000000..c984958 --- /dev/null +++ b/src/filebrowse/engine.h @@ -0,0 +1,98 @@ +#ifndef ENGINE_H +#define ENGINE_H + +#include +#include + +class FileWorker; + +/** + * @brief Engine to handle file operations, settings and other generic functionality. + */ +class Engine : public QObject +{ + Q_OBJECT + Q_PROPERTY(int clipboardCount READ clipboardCount() NOTIFY clipboardCountChanged()) + Q_PROPERTY(int clipboardContainsCopy READ clipboardContainsCopy() NOTIFY clipboardContainsCopyChanged()) + Q_PROPERTY(int progress READ progress() NOTIFY progressChanged()) + Q_PROPERTY(QString progressFilename READ progressFilename() NOTIFY progressFilenameChanged()) + Q_PROPERTY(QString selectedFilename READ selectedFilename() WRITE setSelectedFilename() NOTIFY selectedFilenameChanged()) + Q_PROPERTY(QString extensionFilter READ extensionFilter() WRITE setExtensionFilter() NOTIFY extensionFilterChanged()) + +public: + explicit Engine(QObject *parent = 0); + ~Engine(); + + int clipboardCount() const { return m_clipboardFiles.count(); } + bool clipboardContainsCopy() const { return m_clipboardContainsCopy; } + int progress() const { return m_progress; } + QString progressFilename() const { return m_progressFilename; } + QString selectedFilename() const { return m_selectedFilename; } + QString extensionFilter() const { return m_extensionFilter; } + + // methods accessible from QML + + // asynch methods send signals when done or error occurs + Q_INVOKABLE void deleteFiles(QStringList filenames); + Q_INVOKABLE void cutFiles(QStringList filenames); + Q_INVOKABLE void copyFiles(QStringList filenames); + Q_INVOKABLE void pasteFiles(QString destDirectory); + + // cancel asynch methods + Q_INVOKABLE void cancel(); + + // returns error msg + Q_INVOKABLE QString errorMessage() const { return m_errorMessage; } + + // sync methods + Q_INVOKABLE QString homeFolder() const; + Q_INVOKABLE bool exists(QString filename); + Q_INVOKABLE QStringList diskSpace(QString path); + Q_INVOKABLE QStringList readFile(QString filename); + Q_INVOKABLE QString mkdir(QString path, QString name); + Q_INVOKABLE QStringList rename(QString fullOldFilename, QString newName); + Q_INVOKABLE QString chmod(QString path, + bool ownerRead, bool ownerWrite, bool ownerExecute, + bool groupRead, bool groupWrite, bool groupExecute, + bool othersRead, bool othersWrite, bool othersExecute); + + // access settings + Q_INVOKABLE QString readSetting(QString key, QString defaultValue = QString()); + Q_INVOKABLE void writeSetting(QString key, QString value); + Q_INVOKABLE int startDepth() const; + + Q_INVOKABLE void setSelectedFilename(QString selectedFilename); + Q_INVOKABLE void setExtensionFilter(QString extensionFilter); + + +signals: + void clipboardCountChanged(); + void clipboardContainsCopyChanged(); + void progressChanged(); + void progressFilenameChanged(); + void selectedFilenameChanged(); + void extensionFilterChanged(); + void workerDone(); + void workerErrorOccurred(QString message, QString filename); + void fileDeleted(QString fullname); + + void settingsChanged(); + +private slots: + void setProgress(int progress, QString filename); + +private: + QString createHexDump(char *buffer, int size, int bytesPerLine); + QStringList makeStringList(QString msg, QString str = QString()); + + QStringList m_clipboardFiles; + bool m_clipboardContainsCopy; + int m_progress; + QString m_progressFilename; + QString m_errorMessage; + FileWorker *m_fileWorker; + QString m_selectedFilename; + QString m_extensionFilter; +}; + +#endif // ENGINE_H