Integrated file selection dialogue with the main code. Improved the
[openvpnui.git] / src / filebrowse / engine.h
1 #ifndef ENGINE_H
2 #define ENGINE_H
3
4 #include <QDir>
5 #include <QVariant>
6
7 class FileWorker;
8
9 /**
10 * @brief Engine to handle file operations, settings and other generic functionality.
11 */
12 class Engine : public QObject
13 {
14 Q_OBJECT
15 Q_PROPERTY(int clipboardCount READ clipboardCount() NOTIFY clipboardCountChanged())
16 Q_PROPERTY(int clipboardContainsCopy READ clipboardContainsCopy() NOTIFY clipboardContainsCopyChanged())
17 Q_PROPERTY(int progress READ progress() NOTIFY progressChanged())
18 Q_PROPERTY(QString progressFilename READ progressFilename() NOTIFY progressFilenameChanged())
19 Q_PROPERTY(QString selectedFilename READ selectedFilename() WRITE setSelectedFilename() NOTIFY selectedFilenameChanged())
20 Q_PROPERTY(QString extensionFilter READ extensionFilter() WRITE setExtensionFilter() NOTIFY extensionFilterChanged())
21
22 public:
23 explicit Engine(QObject *parent = 0);
24 ~Engine();
25
26 int clipboardCount() const { return m_clipboardFiles.count(); }
27 bool clipboardContainsCopy() const { return m_clipboardContainsCopy; }
28 int progress() const { return m_progress; }
29 QString progressFilename() const { return m_progressFilename; }
30 QString selectedFilename() const { return m_selectedFilename; }
31 QString extensionFilter() const { return m_extensionFilter; }
32
33 // methods accessible from QML
34
35 // asynch methods send signals when done or error occurs
36 Q_INVOKABLE void deleteFiles(QStringList filenames);
37 Q_INVOKABLE void cutFiles(QStringList filenames);
38 Q_INVOKABLE void copyFiles(QStringList filenames);
39 Q_INVOKABLE void pasteFiles(QString destDirectory);
40
41 // cancel asynch methods
42 Q_INVOKABLE void cancel();
43
44 // returns error msg
45 Q_INVOKABLE QString errorMessage() const { return m_errorMessage; }
46
47 // sync methods
48 Q_INVOKABLE QString homeFolder() const;
49 Q_INVOKABLE bool exists(QString filename);
50 Q_INVOKABLE QStringList diskSpace(QString path);
51 Q_INVOKABLE QStringList readFile(QString filename);
52 Q_INVOKABLE QString mkdir(QString path, QString name);
53 Q_INVOKABLE QStringList rename(QString fullOldFilename, QString newName);
54 Q_INVOKABLE QString chmod(QString path,
55 bool ownerRead, bool ownerWrite, bool ownerExecute,
56 bool groupRead, bool groupWrite, bool groupExecute,
57 bool othersRead, bool othersWrite, bool othersExecute);
58
59 // access settings
60 Q_INVOKABLE QString readSetting(QString key, QString defaultValue = QString());
61 Q_INVOKABLE void writeSetting(QString key, QString value);
62 Q_INVOKABLE int startDepth() const;
63
64 Q_INVOKABLE void setSelectedFilename(QString selectedFilename);
65 Q_INVOKABLE void setExtensionFilter(QString extensionFilter);
66
67
68 signals:
69 void clipboardCountChanged();
70 void clipboardContainsCopyChanged();
71 void progressChanged();
72 void progressFilenameChanged();
73 void selectedFilenameChanged();
74 void extensionFilterChanged();
75 void workerDone();
76 void workerErrorOccurred(QString message, QString filename);
77 void fileDeleted(QString fullname);
78
79 void settingsChanged();
80
81 private slots:
82 void setProgress(int progress, QString filename);
83
84 private:
85 QString createHexDump(char *buffer, int size, int bytesPerLine);
86 QStringList makeStringList(QString msg, QString str = QString());
87
88 QStringList m_clipboardFiles;
89 bool m_clipboardContainsCopy;
90 int m_progress;
91 QString m_progressFilename;
92 QString m_errorMessage;
93 FileWorker *m_fileWorker;
94 QString m_selectedFilename;
95 QString m_extensionFilter;
96 };
97
98 #endif // ENGINE_H