12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef FILESYSTEM_H
- #define FILESYSTEM_H
- #include <QObject>
- #include <QFile>
- #include <QDir>
- #include <QFileInfo>
- #include <QCryptographicHash>
- #include <QDebug>
- #include <QSettings>
- namespace FileSystem {
- static bool fileExists(QString path) {
- QFileInfo check_file(path);
- return check_file.exists() && check_file.isFile();
- }
- static bool folderExists(QString path) {
- return QDir(path).exists();
- }
- static QString fileHash(const QString &fileName, QCryptographicHash::Algorithm hashAlgorithm = QCryptographicHash::Md5) {
- QFile file(fileName);
- if (file.open(QIODevice::ReadOnly)) {
- QCryptographicHash hash(hashAlgorithm);
- hash.addData(&file);
- QByteArray hashData = hash.result();
- return hashData.toHex();
- }
- return QByteArray();
- }
- static void 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);
- }
- }
- static QStringList 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(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")) && fileExists(key)){
- QString folder = n.value(key).toString()
- .replace("\\", "/")
- .replace("/TurbineLauncher.exe", "")
- .replace("/LotroLauncher.exe", "")
- .replace("\"", "");
- if(fileExists(folder + "/LotroLauncher.exe"))
- paths.append(folder);
- }
- }
- #else
- // Реализация под Linux
- #endif
- return paths;
- }
- }
- #endif // FILESYSTEM_H
|