diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-07-10 12:56:38 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-07-10 13:03:47 +0200 |
commit | 2d8d458f1043b132c73d179a3d75576552a5eddd (patch) | |
tree | 56d673d073ee4fd8d3e041d8de08014fede9564c /src | |
parent | 519cf01c4e99fed3315a2d11829a70254ca88dd7 (diff) |
Add/remove/implement/reorder methods to match Qt5.
Unify if statements for better reading. Implement missing methods.
Adjust {extension, supportsExtension} to tell that our remote does
not support any extensions but our local file engine does probably.
Change-Id: I6c1c392b531e4060cf12bde8b32eb6c6ec8f1037
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/protocol.h | 3 | ||||
-rw-r--r-- | src/libs/installer/remotefileengine.cpp | 98 | ||||
-rw-r--r-- | src/libs/installer/remotefileengine.h | 71 | ||||
-rw-r--r-- | src/libs/installer/remoteserverconnection.cpp | 19 |
4 files changed, 121 insertions, 70 deletions
diff --git a/src/libs/installer/protocol.h b/src/libs/installer/protocol.h index 8279cc640..4011e3ed8 100644 --- a/src/libs/installer/protocol.h +++ b/src/libs/installer/protocol.h @@ -166,6 +166,9 @@ const char QAbstractFileEngineSize[] = "QAbstractFileEngine::size"; const char QAbstractFileEngineSupportsExtension[] = "QAbstractFileEngine::supportsExtension"; const char QAbstractFileEngineExtension[] = "QAbstractFileEngine::extension"; const char QAbstractFileEngineWrite[] = "QAbstractFileEngine::write"; +const char QAbstractFileEngineSyncToDisk[] = "QAbstractFileEngine::syncToDisk"; +const char QAbstractFileEngineRenameOverwrite[] = "QAbstractFileEngine::renameOverwrite"; +const char QAbstractFileEngineFileTime[] = "QAbstractFileEngine::fileTime"; } // namespace Protocol } // namespace QInstaller diff --git a/src/libs/installer/remotefileengine.cpp b/src/libs/installer/remotefileengine.cpp index 776f8301e..02469be34 100644 --- a/src/libs/installer/remotefileengine.cpp +++ b/src/libs/installer/remotefileengine.cpp @@ -144,9 +144,20 @@ bool RemoteFileEngine::atEnd() const QAbstractFileEngine::Iterator* RemoteFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) { - QStringList entries = entryList(filters, filterNames); - entries.removeAll(QString()); - return new RemoteFileEngineIterator(filters, filterNames, entries); + if (connectToServer()) { + QStringList entries = entryList(filters, filterNames); + entries.removeAll(QString()); + return new RemoteFileEngineIterator(filters, filterNames, entries); + } + return m_fileEngine.beginEntryList(filters, filterNames); + +} + +QAbstractFileEngine::Iterator* RemoteFileEngine::endEntryList() +{ + if (connectToServer()) + return 0; // right now all other implementations return 0 too + return m_fileEngine.endEntryList(); } /*! @@ -219,14 +230,8 @@ QString RemoteFileEngine::errorString() const */ bool RemoteFileEngine::extension(Extension extension, const ExtensionOption *eo, ExtensionReturn *er) { - return false; - if (extension == UnMapExtension || extension == MapExtension) + if (connectToServer()) return false; - - if (connectToServer()) { - return callRemoteMethod<bool>(QString::fromLatin1(Protocol::QAbstractFileEngineExtension), - static_cast<qint32> (extension)); - } return m_fileEngine.extension(extension, eo, er); } @@ -460,8 +465,7 @@ qint64 RemoteFileEngine::size() const */ bool RemoteFileEngine::supportsExtension(Extension extension) const { - return false; - if (extension == UnMapExtension || extension == MapExtension) + if ((const_cast<RemoteFileEngine *>(this))->connectToServer()) return false; return m_fileEngine.supportsExtension(extension); } @@ -471,18 +475,18 @@ bool RemoteFileEngine::supportsExtension(Extension extension) const */ qint64 RemoteFileEngine::read(char *data, qint64 maxlen) { - if (!connectToServer()) - return m_fileEngine.read(data, maxlen); + if (connectToServer()) { + QPair<qint64, QByteArray> result = callRemoteMethod<QPair<qint64, QByteArray> > + (QString::fromLatin1(Protocol::QAbstractFileEngineRead), maxlen); - QPair<qint64, QByteArray> result = callRemoteMethod<QPair<qint64, QByteArray> > - (QString::fromLatin1(Protocol::QAbstractFileEngineRead), maxlen); + if (result.first <= 0) + return result.first; - if (result.first <= 0) + QDataStream dataStream(result.second); + dataStream.readRawData(data, result.first); return result.first; - - QDataStream dataStream(result.second); - dataStream.readRawData(data, result.first); - return result.first; + } + return m_fileEngine.read(data, maxlen); } /*! @@ -490,18 +494,18 @@ qint64 RemoteFileEngine::read(char *data, qint64 maxlen) */ qint64 RemoteFileEngine::readLine(char *data, qint64 maxlen) { - if (!connectToServer()) - return m_fileEngine.readLine(data, maxlen); + if (connectToServer()) { + QPair<qint64, QByteArray> result = callRemoteMethod<QPair<qint64, QByteArray> > + (QString::fromLatin1(Protocol::QAbstractFileEngineReadLine), maxlen); - QPair<qint64, QByteArray> result = callRemoteMethod<QPair<qint64, QByteArray> > - (QString::fromLatin1(Protocol::QAbstractFileEngineReadLine), maxlen); + if (result.first <= 0) + return result.first; - if (result.first <= 0) + QDataStream dataStream(result.second); + dataStream.readRawData(data, result.first); return result.first; - - QDataStream dataStream(result.second); - dataStream.readRawData(data, result.first); - return result.first; + } + return m_fileEngine.readLine(data, maxlen); } /*! @@ -509,11 +513,37 @@ qint64 RemoteFileEngine::readLine(char *data, qint64 maxlen) */ qint64 RemoteFileEngine::write(const char *data, qint64 len) { - if (!connectToServer()) - return m_fileEngine.write(data, len); + if (connectToServer()) { + QByteArray ba(data, len); + return callRemoteMethod<qint64>(QString::fromLatin1(Protocol::QAbstractFileEngineWrite), ba); + } + return m_fileEngine.write(data, len); +} + +bool RemoteFileEngine::syncToDisk() +{ + if (connectToServer()) + return callRemoteMethod<bool>(QString::fromLatin1(Protocol::QAbstractFileEngineSyncToDisk)); + return m_fileEngine.syncToDisk(); +} + +bool RemoteFileEngine::renameOverwrite(const QString &newName) +{ + if (connectToServer()) { + return callRemoteMethod<bool> + (QString::fromLatin1(Protocol::QAbstractFileEngineRenameOverwrite), newName); + } + return m_fileEngine.renameOverwrite(newName); +} - QByteArray ba(data, len); - return callRemoteMethod<qint64>(QString::fromLatin1(Protocol::QAbstractFileEngineWrite), ba); +QDateTime RemoteFileEngine::fileTime(FileTime time) const +{ + if ((const_cast<RemoteFileEngine *>(this))->connectToServer()) { + return callRemoteMethod<QDateTime> + (QString::fromLatin1(Protocol::QAbstractFileEngineFileTime), + static_cast<qint32> (time)); + } + return m_fileEngine.fileTime(time); } } // namespace QInstaller diff --git a/src/libs/installer/remotefileengine.h b/src/libs/installer/remotefileengine.h index 3e57d963a..79d8fda68 100644 --- a/src/libs/installer/remotefileengine.h +++ b/src/libs/installer/remotefileengine.h @@ -66,39 +66,50 @@ public: RemoteFileEngine(); ~RemoteFileEngine(); + bool open(QIODevice::OpenMode mode) Q_DECL_OVERRIDE; + bool close() Q_DECL_OVERRIDE; + bool flush() Q_DECL_OVERRIDE; + bool syncToDisk() Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; + bool seek(qint64 offset) Q_DECL_OVERRIDE; + bool isSequential() const Q_DECL_OVERRIDE; + bool remove() Q_DECL_OVERRIDE; + bool copy(const QString &newName) Q_DECL_OVERRIDE; + bool rename(const QString &newName) Q_DECL_OVERRIDE; + bool renameOverwrite(const QString &newName) Q_DECL_OVERRIDE; + bool link(const QString &newName) Q_DECL_OVERRIDE; + bool mkdir(const QString &dirName, bool createParentDirectories) const Q_DECL_OVERRIDE; + bool rmdir(const QString &dirName, bool recurseParentDirectories) const Q_DECL_OVERRIDE; + bool setSize(qint64 size) Q_DECL_OVERRIDE; + bool caseSensitive() const Q_DECL_OVERRIDE; + bool isRelativePath() const Q_DECL_OVERRIDE; + QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; + FileFlags fileFlags(FileFlags type = FileInfoAll) const Q_DECL_OVERRIDE; + bool setPermissions(uint perms) Q_DECL_OVERRIDE; + QString fileName(FileName file = DefaultName) const Q_DECL_OVERRIDE; + uint ownerId(FileOwner owner) const Q_DECL_OVERRIDE; + QString owner(FileOwner owner) const Q_DECL_OVERRIDE; + QDateTime fileTime(FileTime time) const Q_DECL_OVERRIDE; + void setFileName(const QString &fileName) Q_DECL_OVERRIDE; + int handle() const Q_DECL_OVERRIDE; bool atEnd() const; - Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); - bool caseSensitive() const; - bool close(); - bool copy(const QString &newName); - QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; + uchar *map(qint64, qint64, QFile::MemoryMapFlags) { return 0; } + bool unmap(uchar *) { return true; } + + Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; + Iterator *endEntryList() Q_DECL_OVERRIDE; + + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 readLine(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 write(const char *data, qint64 len) Q_DECL_OVERRIDE; + QFile::FileError error() const; QString errorString() const; - bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); - FileFlags fileFlags(FileFlags type = FileInfoAll) const; - QString fileName(FileName file = DefaultName) const; - bool flush(); - int handle() const; - bool isRelativePath() const; - bool isSequential() const; - bool link(const QString &newName); - bool mkdir(const QString &dirName, bool createParentDirectories) const; - bool open(QIODevice::OpenMode mode); - QString owner(FileOwner owner) const; - uint ownerId(FileOwner owner) const; - qint64 pos() const; - qint64 read(char *data, qint64 maxlen); - qint64 readLine(char *data, qint64 maxlen); - bool remove(); - bool rename(const QString &newName); - bool rmdir(const QString &dirName, bool recurseParentDirectories) const; - bool seek(qint64 offset); - void setFileName(const QString &fileName); - bool setPermissions(uint perms); - bool setSize(qint64 size); - qint64 size() const; - bool supportsExtension(Extension extension) const; - qint64 write(const char *data, qint64 len); + + bool extension(Extension extension, const ExtensionOption *option = 0, + ExtensionReturn *output = 0) Q_DECL_OVERRIDE; + bool supportsExtension(Extension extension) const Q_DECL_OVERRIDE; private: QFSFileEngine m_fileEngine; diff --git a/src/libs/installer/remoteserverconnection.cpp b/src/libs/installer/remoteserverconnection.cpp index 9a2f2e7b0..6acde1d7b 100644 --- a/src/libs/installer/remoteserverconnection.cpp +++ b/src/libs/installer/remoteserverconnection.cpp @@ -507,16 +507,23 @@ void RemoteServerConnection::handleQFSFileEngine(const QString &command, QDataSt sendData(stream, m_engine->setSize(size)); } else if (command == QLatin1String(Protocol::QAbstractFileEngineSize)) { sendData(stream, m_engine->size()); - } else if (command == QLatin1String(Protocol::QAbstractFileEngineSupportsExtension)) { - // Implemented client side - } else if (command == QLatin1String(Protocol::QAbstractFileEngineExtension)) { - qint32 extension; - data >>extension; - sendData(stream, m_engine->extension(static_cast<QAbstractFileEngine::Extension> (extension))); + } else if ((command == QLatin1String(Protocol::QAbstractFileEngineSupportsExtension)) + || (command == QLatin1String(Protocol::QAbstractFileEngineExtension))) { + // Implemented client side. } else if (command == QLatin1String(Protocol::QAbstractFileEngineWrite)) { QByteArray content; data >> content; sendData(stream, m_engine->write(content.data(), content.size())); + } else if (command == QLatin1String(Protocol::QAbstractFileEngineSyncToDisk)) { + sendData(stream, m_engine->syncToDisk()); + } else if (command == QLatin1String(Protocol::QAbstractFileEngineRenameOverwrite)) { + QString newFilename; + data >> newFilename; + sendData(stream, m_engine->renameOverwrite(newFilename)); + } else if (command == QLatin1String(Protocol::QAbstractFileEngineFileTime)) { + qint32 filetime; + data >> filetime; + sendData(stream, m_engine->fileTime(static_cast<QAbstractFileEngine::FileTime> (filetime))); } else if (!command.isEmpty()) { qDebug() << "Unknown QAbstractFileEngine command:" << command; } |