1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #include "filesystem.h"
- #include <QDebug>
- #include <QSettings>
- 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;
- }
|