#include "filesystem.h" #include #include bool FileSystem::fileExists(QString path) { QFileInfo check_file(path); bool exists = check_file.exists() && check_file.isFile(); if (exists == false) qWarning("%s:%i: %s%s", __FILE__, __LINE__, "Файл не найден: ", path.toStdString().c_str()); else qInfo("%s:%i: %s%s", __FILE__, __LINE__, "Файл найден: ", path.toStdString().c_str()); return exists; } QString FileSystem::fileHash(const QString &fileName, QCryptographicHash::Algorithm hashAlgorithm){ QFile file(fileName); if (file.open(QIODevice::ReadOnly)) { QByteArray fileData = file.readAll(); QByteArray hashData = QCryptographicHash::hash(fileData, hashAlgorithm); return hashData.toHex(); } return QByteArray(); } void FileSystem::clearFolder(QDir &dir){ //Получаем список файлов QStringList lstFiles = dir.entryList(QDir::Files); //Удаляем файлы foreach (QString entry, lstFiles){ QString entryAbsPath = dir.absolutePath() + "/" + entry; //QFile::setPermissions(entryAbsPath, QFile::ReadOwner | QFile::WriteOwner); qDebug() << dir.absolutePath(); QFile::remove(entryAbsPath); } } QStringList FileSystem::recognizeRegistryLotroPath() { QStringList paths; #ifdef _WIN32 // Windows 8, 10 QSettings n("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\12bbe590-c890-11d9-9669-0800200c9a66_is1", QSettings::NativeFormat); foreach (QString key, n.allKeys()) { qDebug() << key; if(key.contains("InstallLocation") || key.contains("installlocation")){ QString folder = n.value(key).toString() .replace("\\", "/") .replace("/TurbineLauncher.exe", "") .replace("/LotroLauncher.exe", "") .replace("\"", ""); if(FileSystem::fileExists(folder + "/LotroLauncher.exe")) paths.append(folder); } } // Windows 7 QSettings m("HKEY_CLASSES_ROOT\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache", QSettings::NativeFormat); foreach (QString key, m.allKeys()) { if((key.contains("TurbineLauncher.exe") || key.contains("LotroLauncher.exe")) && FileSystem::fileExists(key)){ QString folder = n.value(key).toString() .replace("\\", "/") .replace("/TurbineLauncher.exe", "") .replace("/LotroLauncher.exe", "") .replace("\"", ""); if(FileSystem::fileExists(folder + "/LotroLauncher.exe")) paths.append(folder); } } #else // Реализация под Linux #endif return paths; }