Integrated file selection dialogue with the main code. Improved the
[openvpnui.git] / src / filebrowse / fileinfo.h
1 #ifndef FILEINFO_H
2 #define FILEINFO_H
3
4 #include <QObject>
5 #include <QDir>
6 #include <QProcess>
7 #include <QVariantList>
8
9 /**
10 * @brief The FileInfo class provides access to one file.
11 */
12 class FileInfo : public QObject
13 {
14 Q_OBJECT
15 Q_PROPERTY(QString file READ file() WRITE setFile(QString) NOTIFY fileChanged())
16 Q_PROPERTY(bool isDir READ isDir() NOTIFY isDirChanged())
17 Q_PROPERTY(QString kind READ kind() NOTIFY kindChanged())
18 Q_PROPERTY(QString icon READ icon() NOTIFY iconChanged())
19 Q_PROPERTY(QString permissions READ permissions() NOTIFY permissionsChanged())
20 Q_PROPERTY(QString owner READ owner() NOTIFY ownerChanged())
21 Q_PROPERTY(QString group READ group() NOTIFY groupChanged())
22 Q_PROPERTY(QString size READ size() NOTIFY sizeChanged())
23 Q_PROPERTY(QString modified READ modified() NOTIFY modifiedChanged())
24 Q_PROPERTY(QString created READ created() NOTIFY createdChanged())
25 Q_PROPERTY(QString absolutePath READ absolutePath() NOTIFY absolutePathChanged())
26 Q_PROPERTY(QString name READ name() NOTIFY nameChanged())
27 Q_PROPERTY(QString suffix READ suffix() NOTIFY suffixChanged())
28 Q_PROPERTY(QString symLinkTarget READ symLinkTarget() NOTIFY symLinkTargetChanged())
29 Q_PROPERTY(QString errorMessage READ errorMessage() NOTIFY errorMessageChanged())
30 Q_PROPERTY(QString processOutput READ processOutput() NOTIFY processOutputChanged())
31
32 public:
33 explicit FileInfo(QObject *parent = 0);
34 ~FileInfo();
35
36 // property accessors
37 QString file() const { return m_file; }
38 void setFile(QString file);
39
40 bool isDir() const;
41 QString kind() const;
42 QString icon() const;
43 QString permissions() const;
44 QString owner() const;
45 QString group() const;
46 QString size() const;
47 QString modified() const;
48 QString created() const;
49 QString absolutePath() const;
50 QString name() const;
51 QString suffix() const;
52 QString symLinkTarget() const;
53 QString errorMessage() const;
54 QString processOutput() const;
55
56 // methods accessible from QML
57 Q_INVOKABLE void refresh();
58 Q_INVOKABLE void executeCommand(QString command, QStringList arguments);
59
60 signals:
61 void fileChanged();
62 void isDirChanged();
63 void kindChanged();
64 void iconChanged();
65 void permissionsChanged();
66 void ownerChanged();
67 void groupChanged();
68 void sizeChanged();
69 void modifiedChanged();
70 void createdChanged();
71 void nameChanged();
72 void suffixChanged();
73 void absolutePathChanged();
74 void symLinkTargetChanged();
75 void errorMessageChanged();
76
77 void processOutputChanged();
78 void processExited(int exitCode);
79
80 private slots:
81 void readProcessChannels();
82 void handleProcessFinish(int exitCode, QProcess::ExitStatus status);
83 void handleProcessError(QProcess::ProcessError error);
84
85 private:
86 void readFile();
87
88 QString m_file;
89 QFileInfo m_fileInfo;
90 QString m_errorMessage;
91 QProcess *m_process;
92 QString m_processOutput;
93 };
94
95 #endif // FILEINFO_H