Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ResourcesDevice.h"
- #include <Platform/Logger.h>
- #include <QDateTime>
- #include <QDebug>
- namespace qml
- {
- // -----------------------------------------------------------------------------
- ResourcesEngineHandler::ResourcesEngineHandler()
- {
- mCurrentDir = QDir::current().path() + "/";
- }
- QAbstractFileEngine* ResourcesEngineHandler::create(const QString& fileName) const
- {
- int toto = 0;
- if (fileName.contains("MainLoader.qml"))
- {
- toto = 1;
- }
- QString simplifiedPath = fileName;
- if (simplifiedPath.startsWith("/")) // Path may start with a / if it's marked as absolute
- simplifiedPath.remove(0, 1);
- simplifiedPath.remove(mCurrentDir);
- if (simplifiedPath.length() == 0)
- return nullptr;
- if (platform::Logger::singleton())
- LOG_DEBUG(simplifiedPath.toStdString().c_str());
- QString packageName = simplifiedPath.split("/")[0];
- if (packageReader::Manager::singleton()->isPackageMounted(packageName.toStdString()))
- return new ResourcesEngine(simplifiedPath);
- return nullptr;
- }
- // -----------------------------------------------------------------------------
- ResourcesEngine::ResourcesEngine(const QString& fileName)
- {
- setFileName(fileName);
- }
- bool ResourcesEngine::open(QIODevice::OpenMode openMode)
- {
- Q_ASSERT(mPath.isEmpty() == false);
- LOG_DEBUG(mPath.toStdString().c_str());
- int toto = 0;
- if (mPath.contains("main.1.fr.anuman.HomeDesign3D.obb/qml"))
- {
- toto = 1;
- }
- Q_ASSERT((openMode & QIODevice::ReadOnly) > 0);
- QIODevice::OpenMode elevatedFlags = openMode;
- elevatedFlags |= QIODevice::ReadOnly;
- elevatedFlags |= QIODevice::Text;
- elevatedFlags |= QIODevice::Unbuffered;
- Q_ASSERT((elevatedFlags ^
- (QIODevice::ReadOnly
- | QIODevice::Text
- | QIODevice::Unbuffered)) == 0); // Assert if some filters aren't supported
- return mFile.open(mPath.toStdString());
- }
- bool ResourcesEngine::close()
- {
- mFile.close();
- return true;
- }
- bool ResourcesEngine::flush()
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return true;
- }
- bool ResourcesEngine::syncToDisk()
- {
- Q_ASSERT(false);
- return false;
- }
- qint64 ResourcesEngine::size() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return mFile.size();
- }
- qint64 ResourcesEngine::pos() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return mFile.position();
- }
- bool ResourcesEngine::seek(qint64 pos)
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return mFile.seek(pos);
- }
- bool ResourcesEngine::isSequential() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return false;
- }
- bool ResourcesEngine::remove()
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::copy(const QString& newName)
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::rename(const QString& newName)
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::renameOverwrite(const QString& newName)
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::link(const QString& newName)
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::mkdir(const QString& dirName, bool createParentDirectories) const
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::rmdir(const QString& dirName, bool recurseParentDirectories) const
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::setSize(qint64 size)
- {
- Q_ASSERT(false);
- return false;
- }
- bool ResourcesEngine::caseSensitive() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return true;
- }
- bool ResourcesEngine::isRelativePath() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return false;
- }
- QStringList ResourcesEngine::entryList(QDir::Filters filters, const QStringList& filterNames) const
- {
- Q_ASSERT((filters & QDir::NoDotAndDotDot) > 0);
- Q_ASSERT((filters & (QDir::Files | QDir::Dirs)) > 0);
- LOG_DEBUG(mPath.toStdString().c_str());
- QDir::Filters elevatedFlags = filters;
- elevatedFlags |= QDir::NoDotAndDotDot;
- elevatedFlags |= QDir::Dirs;
- elevatedFlags |= QDir::Files;
- elevatedFlags |= QDir::Readable;
- Q_ASSERT((elevatedFlags ^
- (QDir::NoDotAndDotDot
- | QDir::Dirs
- | QDir::Files
- | QDir::Readable)) == 0); // Assert if some filters aren't supported
- QStringList result;
- std::vector<packageReader::FileInfo> infos;
- infos = packageReader::Manager::singleton()->getFiles(mPath.toStdString());
- for (size_t i = 0; i < infos.size(); i++)
- {
- if (infos[i].isFile() && (filters & QDir::Files) > 0)
- result.push_back(infos[i].filePath().c_str());
- if (infos[i].isDir() && (filters & QDir::Dirs) > 0)
- result.push_back(infos[i].filePath().c_str());
- }
- Q_ASSERT(result.size() > 0);
- return result;
- }
- QAbstractFileEngine::FileFlags ResourcesEngine::fileFlags(FileFlags type) const
- {
- FileFlags flags = 0;
- LOG_DEBUG(mPath.toStdString().c_str());
- int toto = 0;
- if (mPath == "main.1.fr.anuman.HomeDesign3D.obb/qml")
- {
- toto = 1;
- }
- flags |= QAbstractFileEngine::ReadOwnerPerm;
- flags |= QAbstractFileEngine::ReadUserPerm;
- flags |= QAbstractFileEngine::ReadGroupPerm;
- flags |= QAbstractFileEngine::ReadOtherPerm;
- if ((type & (QAbstractFileEngine::FileType
- | QAbstractFileEngine::DirectoryType
- | QAbstractFileEngine::ExistsFlag)) > 0)
- {
- packageReader::FileInfo info = packageReader::Manager::singleton()->getFileInfo(mPath.toStdString());
- if (info.exists())
- flags |= QAbstractFileEngine::ExistsFlag;
- if (info.isFile())
- flags |= QAbstractFileEngine::FileType;
- if (info.isDir())
- flags |= QAbstractFileEngine::DirectoryType;
- }
- return flags & type;
- }
- bool ResourcesEngine::setPermissions(uint perms)
- {
- Q_ASSERT(false);
- return false;
- }
- QString ResourcesEngine::fileName(FileName file) const
- {
- qDebug() << mPath;
- return mPath;
- }
- uint ResourcesEngine::ownerId(FileOwner) const
- {
- return 0;
- }
- QString ResourcesEngine::owner(FileOwner) const
- {
- Q_ASSERT(false);
- return QString();
- }
- QDateTime ResourcesEngine::fileTime(FileTime time) const
- {
- return QDateTime();
- }
- void ResourcesEngine::setFileName(const QString& file)
- {
- mPath = file;
- int toto = 0;
- if (mPath == "main.1.fr.anuman.HomeDesign3D.obb/qml")
- {
- toto = 1;
- }
- LOG_DEBUG(mPath.toStdString().c_str());
- }
- int ResourcesEngine::handle() const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return 0;
- }
- QAbstractFileEngine::Iterator* ResourcesEngine::beginEntryList(QDir::Filters filters, const QStringList& filterNames)
- {
- Q_ASSERT((filters & QDir::NoDotAndDotDot) > 0);
- Q_ASSERT((filters & (QDir::Files | QDir::Dirs)) > 0);
- LOG_DEBUG(mPath.toStdString().c_str());
- QDir::Filters elevatedFlags = filters;
- elevatedFlags |= QDir::NoDotAndDotDot;
- elevatedFlags |= QDir::Dirs;
- elevatedFlags |= QDir::Files;
- elevatedFlags |= QDir::Readable;
- Q_ASSERT((elevatedFlags ^
- (QDir::NoDotAndDotDot
- | QDir::Dirs
- | QDir::Files
- | QDir::Readable)) == 0); // Assert if some filters aren't supported
- std::vector<packageReader::FileInfo> result;
- std::vector<packageReader::FileInfo> infos;
- infos = packageReader::Manager::singleton()->getFiles(mPath.toStdString());
- for (size_t i = 0; i < infos.size(); i++)
- {
- LOG_DEBUG(infos[i].filePath().c_str());
- if (infos[i].isFile() && (filters & QDir::Files) > 0)
- result.push_back(infos[i]);
- if (infos[i].isDir() && (filters & QDir::Dirs) > 0)
- result.push_back(infos[i]);
- }
- Q_ASSERT(result.size() > 0);
- return (new ResourcesEngineIterator(filters, filterNames, result, filters | QDir::Dirs, false));
- }
- QAbstractFileEngine::Iterator* ResourcesEngine::endEntryList()
- {
- Q_ASSERT(false);
- return nullptr;
- // return (new ResourcesEngineIterator(0, QStringList(), false, false));
- }
- qint64 ResourcesEngine::read(char *data, qint64 maxlen)
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return mFile.read(data, maxlen);
- }
- qint64 ResourcesEngine::readLine(char *data, qint64 maxlen)
- {
- Q_ASSERT(false);
- return -1;
- }
- qint64 ResourcesEngine::write(const char *data, qint64 len)
- {
- Q_ASSERT(false);
- return -1;
- }
- bool ResourcesEngine::extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output)
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return false;
- }
- bool ResourcesEngine::supportsExtension(Extension extension) const
- {
- LOG_DEBUG(mPath.toStdString().c_str());
- return false;
- }
- // -----------------------------------------------------------------------------
- /* ResourcesEngineIterator::ResourcesEngineIterator(): mHaveFolders(false)
- , mIsEndIterator(false)
- , mIndex(0)
- {
- }*/
- ResourcesEngineIterator::ResourcesEngineIterator(QDir::Filters filters, const QStringList& nameFilters, const std::vector<packageReader::FileInfo>& infos, bool haveFolders, bool isEndIterator)
- : QAbstractFileEngineIterator(filters, nameFilters)
- , mHaveFolders(haveFolders)
- , mFiles(infos)
- , mIsEndIterator(isEndIterator)
- , mIndex(-1)
- {
- }
- QString ResourcesEngineIterator::next()
- {
- qDebug() << QString::fromStdString(mFiles[mIndex + 1].filePath());
- return QString::fromStdString(mFiles[++mIndex].filePath());
- }
- bool ResourcesEngineIterator::hasNext() const
- {
- return (mIndex < (int)(mFiles.size()) - 1);
- }
- QString ResourcesEngineIterator::currentFileName() const
- {
- qDebug() << QString::fromStdString(mFiles[mIndex].filePath());
- return QString::fromStdString(mFiles[mIndex].filePath());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement