WARNING: USE THIS SOFTWARE AT YOUR OWN RISK! THIS IS EXPERIMENTAL SOFTWARE NOT INTENDED FOR PRODUCTION USE! Zuble is currently an early stage prototype. As such Zuble is minimally tested and inherently unstable. It is provided for experimental, development, and demonstration purposes only. Zuble QML Types   |  Zuble C++ Classes   |  Zuble Overview
Zuble  0.1
Zuble Framework C++/QML extension API
ZFileInfo.cpp
Go to the documentation of this file.
1 /*
2  * Zuble - A run-time system for QML/Javascript applications
3  * Copyright (C) 2013, 2014 Bob Dinitto
4  *
5  * ZFileInfo.cpp
6  *
7  * Created: Jan 13, 2012
8  * Author: Bob Dinitto
9  *
10  * Zuble is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 2.1 of the License, or (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this library; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
26 #include "zglobal.h"
27 #include "ZFileInfo.h"
28 #include "ZblException.h"
29 #include "ZblThreadErr.h"
30 #include "ZDir.h"
31 #include <QDateTime>
32 
33 namespace Zbl
34 {
35 
36 #ifdef Z_PROPGET_IMPL
37 #undef Z_PROPGET_IMPL
38 #endif
39 
40 // special version of Z_PROPGET_IMPL calls checkIndex();
41 #define Z_PROPGET_IMPL(className, propName, propType, failedValue) \
42 propType className::propName(){ \
43  ZBL_SLOT_BEGIN_TRY \
44  checkIndex(); \
45  ZBL_SLOT_END_RETURN(m_fi.at(m_i).propName(), failedValue, \
46  Z_FAC_JS, className::propName, propName failed) \
47 }
48 
49 
50 ZFileInfo::ZFileInfo(QObject* parent) : QObject(parent), m_i(0)
51 {
52  qDebug("ZFileInfo::ZFileInfo");
53  //Z8_CLASSNAME(Zbl::ZFileInfo);
54  //m_ptrInfo = ptrInfo;
55 }
56 
58 {
59  qDebug("ZFileInfo::~ZFileInfo");
60 }
61 
62 void ZFileInfo::setInfoList(QFileInfoList infoList)
63 {
64  m_fi = infoList;
65 }
66 
67 int ZFileInfo::count()
68 {
69  return m_fi.count();
70 }
71 
73 {
75 
76  if(m_i == -1)
77  throw ZblException("Index out of range");
78 
79  m_i++;
80 
81  if(m_i >= m_fi.count())
82  {
83  m_i = -1;
84  throw ZblException("Attempt to increment index beyond valid range");
85  }
86 
88  Z_FAC_JS, ZFileInfo::incrementIndex, incrementIndex failed)
89 }
90 
92 {
94 
97 }
98 
100 {
102 if(index >= m_fi.count())
103 throw ZblException("Attempt to set index beyond valid range");
104 m_i = index;
106 }
107 
108 void ZFileInfo::setFile(const QString &file)
109 {
111 
112  m_i = -1;
113  m_fi.clear();
114  m_fi.append(QFileInfo(file));
115  m_i = 0;
116 
118 
119 }
120 
122 {
124  checkIndex();
125  m_fi[m_i].refresh();
127 }
128 
129 
131 {
133  checkIndex();
136 }
137 
139 {
141  checkIndex();
144 }
145 
147 {
149  checkIndex();
150  m_fi[m_i].setCaching(on);
152 }
153 
154 QObject* ZFileInfo::dir() const
155 {
157  checkIndex();
158  ZBL_SLOT_END_RETURN(new ZDir(m_fi[m_i].dir()), NULL,
159  Z_FAC_JS, ZFileInfo::dir, dir failed)
160 }
161 
162 
163 QObject* ZFileInfo::absoluteDir() const
164 {
166  checkIndex();
169 }
170 
171 QVariant ZFileInfo::size() const
172 {
174  checkIndex();
175  ZBL_SLOT_END_RETURN(QVariant(m_fi[m_i].size()), QVariant(),
176  Z_FAC_JS, ZFileInfo::size, size failed)
177 }
178 
179 QVariant ZFileInfo::created() const
180 {
182  checkIndex();
183  ZBL_SLOT_END_RETURN(QVariant(m_fi[m_i].created()), QVariant(),
185 }
186 
187 QVariant ZFileInfo::lastModified() const
188 {
190  checkIndex();
191  ZBL_SLOT_END_RETURN(QVariant(m_fi[m_i].lastModified()), QVariant(),
193 }
194 
195 QVariant ZFileInfo::lastRead() const
196 {
198  checkIndex();
199  ZBL_SLOT_END_RETURN(QVariant(m_fi[m_i].lastRead()), QVariant(),
201 }
202 
204 {
206  checkIndex();
208  m_fi[m_i].permission(static_cast<QFileDevice::Permissions>(permissions)),
209  false, Z_FAC_JS, ZFileInfo::permission, permission failed)
210 }
211 
212 int ZFileInfo::permissions() const
213 {
215  checkIndex();
217  static_cast<int>(m_fi[m_i].permissions()),
219 }
220 
221 
222 Z_PROPGET_IMPL(ZFileInfo, absoluteFilePath, QString, QString())
223 Z_PROPGET_IMPL(ZFileInfo, canonicalFilePath, QString, QString())
224 Z_PROPGET_IMPL(ZFileInfo, baseName, QString, QString())
225 Z_PROPGET_IMPL(ZFileInfo, completeBaseName, QString, QString())
226 Z_PROPGET_IMPL(ZFileInfo, suffix, QString, QString())
227 Z_PROPGET_IMPL(ZFileInfo, bundleName, QString, QString())
228 Z_PROPGET_IMPL(ZFileInfo, completeSuffix, QString, QString())
229 Z_PROPGET_IMPL(ZFileInfo, path, QString, QString())
230 Z_PROPGET_IMPL(ZFileInfo, absolutePath, QString, QString())
231 Z_PROPGET_IMPL(ZFileInfo, canonicalPath, QString, QString())
232 Z_PROPGET_IMPL(ZFileInfo, filePath, QString, QString())
233 Z_PROPGET_IMPL(ZFileInfo, fileName, QString, QString())
234 
235 
236 Z_PROPGET_IMPL(ZFileInfo, exists, bool, false)
237 Z_PROPGET_IMPL(ZFileInfo, isReadable, bool, false)
238 Z_PROPGET_IMPL(ZFileInfo, isWritable, bool, false)
239 Z_PROPGET_IMPL(ZFileInfo, isExecutable, bool, false)
240 Z_PROPGET_IMPL(ZFileInfo, isNativePath, bool, false)
241 Z_PROPGET_IMPL(ZFileInfo, isRelative, bool, false)
242 Z_PROPGET_IMPL(ZFileInfo, isAbsolute, bool, false)
243 Z_PROPGET_IMPL(ZFileInfo, isFile, bool, false)
244 Z_PROPGET_IMPL(ZFileInfo, isDir, bool, false)
245 Z_PROPGET_IMPL(ZFileInfo, isSymLink, bool, false)
246 Z_PROPGET_IMPL(ZFileInfo, isBundle, bool, false)
247 Z_PROPGET_IMPL(ZFileInfo, isHidden, bool, false)
248 Z_PROPGET_IMPL(ZFileInfo, isRoot, bool, false)
249 
250 
251 Z_PROPGET_IMPL(ZFileInfo, readLink, QString, QString())
252 Z_PROPGET_IMPL(ZFileInfo, symLinkTarget, QString, QString())
253 Z_PROPGET_IMPL(ZFileInfo, owner, QString, QString())
254 Z_PROPGET_IMPL(ZFileInfo, ownerId, uint, 0)
255 Z_PROPGET_IMPL(ZFileInfo, group, QString, QString())
256 Z_PROPGET_IMPL(ZFileInfo, groupId, uint, 0)
257 
258 } // Zbl
259 
int permissions() const
Q_INVOKABLE void setFile(const QString &file)
Definition: ZFileInfo.cpp:108
void checkIndex() const
Definition: ZFileInfo.h:135
QVariant lastModified() const
Q_INVOKABLE bool permission(int permissions) const
Definition: ZFileInfo.cpp:203
#define Z_FAC_JS
Definition: zglobal.h:123
friend class ZDir
Definition: ZFileInfo.h:50
void setIndex(int index)
Definition: ZFileInfo.cpp:99
bool getCaching()
Definition: ZFileInfo.cpp:138
ZFileInfo(QObject *parent=0)
Definition: ZFileInfo.cpp:50
Q_INVOKABLE QObject * dir() const
Definition: ZFileInfo.cpp:154
Q_INVOKABLE bool makeAbsolute()
Definition: ZFileInfo.cpp:130
QFileInfoList m_fi
Definition: ZFileInfo.h:131
QVariant created() const
Definition: ZAndGate.cpp:6
void setInfoList(QFileInfoList infoList)
Definition: ZFileInfo.cpp:62
#define ZBL_SLOT_BEGIN_TRY
Definition: zglobal.h:128
Q_INVOKABLE int inc()
Definition: ZFileInfo.cpp:72
#define ZBL_SLOT_END_VOID(facility, code, error_message)
Definition: zglobal.h:134
#define Z_PROPGET_IMPL(className, propName, propType, failedValue)
Definition: ZFileInfo.cpp:41
QVariant lastRead() const
Q_INVOKABLE void refresh()
Definition: ZFileInfo.cpp:121
void setCaching(bool on)
Definition: ZFileInfo.cpp:146
A Javascript object for passing Zuble file information from C++ to Javascript. This is a wrapper clas...
Definition: ZFileInfo.h:48
Zuble&#39;s Qt Exception Object.
Definition: ZblException.h:45
virtual ~ZFileInfo()
Definition: ZFileInfo.cpp:57
QVariant size() const
Q_INVOKABLE QObject * absoluteDir() const
Definition: ZFileInfo.cpp:163
#define ZBL_SLOT_END_RETURN(return_success, return_failed, facility, code, error_message)
Definition: zglobal.h:141