123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #ifndef FILESYSTEM_H
- #define FILESYSTEM_H
- #include <QObject>
- #include <QFile>
- #include <QDir>
- #include <QFileInfo>
- #include <QCryptographicHash>
- #include <QDebug>
- 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
|