1 #include "File.h" 2 3 namespace ADM_qtScript 4 { 5 static const QFile::Permission qtPermissions[] = 6 { 7 QFile::ReadOwner, QFile::WriteOwner, QFile::ExeOwner, QFile::ReadUser, QFile::WriteUser, QFile::ExeUser, 8 QFile::ReadGroup, QFile::WriteGroup, QFile::ExeGroup, QFile::ReadOther, QFile::WriteOther, QFile::ExeOther 9 }; 10 11 static const File::Permission myPermissions[] = 12 { 13 File::ReadOwner, File::WriteOwner, File::ExeOwner, File::ReadUser, File::WriteUser, File::ExeUser, 14 File::ReadGroup, File::WriteGroup, File::ExeGroup, File::ReadOther, File::WriteOther, File::ExeOther 15 }; 16 17 static const QFile::OpenModeFlag qtOpenModes[] = 18 { 19 QIODevice::ReadOnly, QIODevice::WriteOnly, QIODevice::ReadWrite, QIODevice::Append, QIODevice::Truncate, 20 QIODevice::Text, QIODevice::Unbuffered 21 }; 22 23 static const File::OpenMode myOpenModes[] = 24 { 25 File::ReadOnly, File::WriteOnly, File::ReadWrite, File::Append, File::Truncate, File::Text, File::Unbuffered 26 }; 27 File(const QString & name)28 File::File(const QString& name) 29 { 30 _file.setFileName(name); 31 } 32 constructor(QScriptContext * context,QScriptEngine * engine)33 QScriptValue File::constructor(QScriptContext * context, QScriptEngine * engine) 34 { 35 if (context->isCalledAsConstructor() && context->argumentCount() > 0) 36 { 37 return engine->newQObject(new File(context->argument(0).toString()), QScriptEngine::ScriptOwnership); 38 } 39 40 return engine->undefinedValue(); 41 } 42 atEnd()43 bool File::atEnd() 44 { 45 return _file.atEnd(); 46 } 47 canReadLine()48 bool File::canReadLine() 49 { 50 return _file.canReadLine(); 51 } 52 close()53 void File::close() 54 { 55 _file.close(); 56 } 57 getBytesAvailable()58 qint64 File::getBytesAvailable() 59 { 60 return _file.bytesAvailable(); 61 } 62 getBytesToWrite()63 qint64 File::getBytesToWrite() 64 { 65 return _file.bytesToWrite(); 66 } 67 copy(const QString & newName)68 bool File::copy(const QString & newName) 69 { 70 return _file.copy(newName); 71 } 72 getError()73 File::FileError File::getError() 74 { 75 QFile::FileError fileError = _file.error(); 76 77 switch (fileError) 78 { 79 case QFile::NoError: 80 return File::NoError; 81 82 case QFile::ReadError: 83 return File::ReadError; 84 85 case QFile::WriteError: 86 return File::WriteError; 87 88 case QFile::FatalError: 89 return File::FatalError; 90 91 case QFile::ResourceError: 92 return File::ResourceError; 93 94 case QFile::OpenError: 95 return File::OpenError; 96 97 case QFile::AbortError: 98 return File::AbortError; 99 100 case QFile::TimeOutError: 101 return File::TimeOutError; 102 103 case QFile::RemoveError: 104 return File::RemoveError; 105 106 case QFile::RenameError: 107 return File::RenameError; 108 109 case QFile::PositionError: 110 return File::PositionError; 111 112 case QFile::ResizeError: 113 return File::ResizeError; 114 115 case QFile::PermissionsError: 116 return File::PermissionsError; 117 118 case QFile::CopyError: 119 return File::CopyError; 120 121 default: 122 return File::UnspecifiedError; 123 } 124 } 125 getErrorString()126 QString File::getErrorString() 127 { 128 return _file.errorString(); 129 } 130 exists()131 bool File::exists() 132 { 133 return _file.exists(); 134 } 135 flush()136 bool File::flush() 137 { 138 return _file.flush(); 139 } 140 getFileName()141 QString File::getFileName() 142 { 143 return _file.fileName(); 144 } 145 getOpenMode()146 File::OpenMode File::getOpenMode() 147 { 148 QFile::OpenMode qtMode = _file.openMode(); 149 File::OpenModeFlags myMode = File::NotOpen; 150 151 for (unsigned int i = 0; i < (sizeof(qtOpenModes) / sizeof(QFile::OpenModeFlag)); i++) 152 { 153 if (qtMode.testFlag(qtOpenModes[i])) 154 { 155 myMode |= myOpenModes[i]; 156 } 157 } 158 159 return static_cast<File::OpenMode>(static_cast<int>(myMode)); 160 } 161 getPermissions()162 File::Permissions File::getPermissions() 163 { 164 return File::getPermissions(_file.permissions()); 165 } 166 getPosition()167 qint64 File::getPosition() 168 { 169 return _file.pos(); 170 } 171 getSize()172 qint64 File::getSize() 173 { 174 return _file.size(); 175 } 176 isOpen()177 bool File::isOpen() 178 { 179 return _file.isOpen(); 180 } 181 isReadable()182 bool File::isReadable() 183 { 184 return _file.isReadable(); 185 } 186 isSequential()187 bool File::isSequential() 188 { 189 return _file.isSequential(); 190 } 191 isTextModeEnabled()192 bool File::isTextModeEnabled() 193 { 194 return _file.isTextModeEnabled(); 195 } 196 isWritable()197 bool File::isWritable() 198 { 199 return _file.isWritable(); 200 } 201 link(const QString & linkName)202 bool File::link(const QString& linkName) 203 { 204 return _file.link(linkName); 205 } 206 open(File::OpenMode mode)207 bool File::open(File::OpenMode mode) 208 { 209 QFile::OpenMode qtMode = QFile::NotOpen; 210 File::OpenModeFlags myMode = mode; 211 212 for (unsigned int i = 0; i < (sizeof(myOpenModes) / sizeof(File::OpenMode)); i++) 213 { 214 if (myMode.testFlag(myOpenModes[i])) 215 { 216 qtMode |= qtOpenModes[i]; 217 } 218 } 219 220 return _file.open(qtMode); 221 } 222 peek(qint64 maxSize)223 QString File::peek(qint64 maxSize) 224 { 225 return _file.peek(maxSize).constData(); 226 } 227 read(qint64 maxSize)228 QString File::read(qint64 maxSize) 229 { 230 return _file.read(maxSize).constData(); 231 } 232 readAll()233 QString File::readAll() 234 { 235 return _file.readAll().constData(); 236 } 237 readLine(qint64 maxSize)238 QString File::readLine(qint64 maxSize) 239 { 240 return _file.readLine(maxSize).constData(); 241 } 242 reset()243 bool File::reset() 244 { 245 return _file.reset(); 246 } 247 remove()248 bool File::remove() 249 { 250 return _file.remove(); 251 } 252 rename(const QString & newName)253 bool File::rename(const QString& newName) 254 { 255 return _file.rename(newName); 256 } 257 resize(qint64 sz)258 bool File::resize(qint64 sz) 259 { 260 return _file.resize(sz); 261 } 262 seek(qint64 pos)263 bool File::seek(qint64 pos) 264 { 265 return _file.seek(pos); 266 } 267 setPermissions(File::Permissions permissions)268 bool File::setPermissions(File::Permissions permissions) 269 { 270 return _file.setPermissions(File::getQPermissions(permissions)); 271 } 272 setTextModeEnabled(bool enabled)273 void File::setTextModeEnabled(bool enabled) 274 { 275 _file.setTextModeEnabled(enabled); 276 } 277 symLinkTarget()278 QString File::symLinkTarget() 279 { 280 return _file.symLinkTarget(); 281 } 282 unsetError()283 void File::unsetError() 284 { 285 _file.unsetError(); 286 } 287 write(const QString & data)288 qint64 File::write(const QString& data) 289 { 290 QByteArray array; 291 292 array.append(data); 293 294 return _file.write(array); 295 } 296 getPermissions(QFile::Permissions permissions)297 File::Permissions File::getPermissions(QFile::Permissions permissions) 298 { 299 File::Permissions myPerms; 300 301 for (unsigned int i = 0; i < (sizeof(qtPermissions) / sizeof(QFile::Permission)); i++) 302 { 303 if (permissions.testFlag(qtPermissions[i])) 304 { 305 myPerms |= myPermissions[i]; 306 } 307 } 308 309 return myPerms; 310 } 311 getQPermissions(File::Permissions permissions)312 QFile::Permissions File::getQPermissions(File::Permissions permissions) 313 { 314 QFile::Permissions qtPerms; 315 316 for (unsigned int i = 0; i < (sizeof(qtPermissions) / sizeof(QFile::Permission)); i++) 317 { 318 if (permissions.testFlag(myPermissions[i])) 319 { 320 qtPerms |= qtPermissions[i]; 321 } 322 } 323 324 return qtPerms; 325 } 326 } 327