optimise ProfileLoader
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									3c673beed1
								
							
						
					
					
						commit
						2f135cd373
					
				
					 1 changed files with 42 additions and 24 deletions
				
			
		|  | @ -16,18 +16,22 @@ | ||||||
| * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
| *****************************************************************************/ | *****************************************************************************/ | ||||||
| 
 | 
 | ||||||
| #include "ProfileLoader.h" |  | ||||||
| #include "SnapmaticPicture.h" | #include "SnapmaticPicture.h" | ||||||
|  | #include "ProfileLoader.h" | ||||||
| #include "SavegameData.h" | #include "SavegameData.h" | ||||||
| #include "CrewDatabase.h" | #include "CrewDatabase.h" | ||||||
| #include "wrapper.h" | #include "wrapper.h" | ||||||
| #include <QStringBuilder> | #include <QStringBuilder> | ||||||
| #include <QStringList> | #include <QVector> | ||||||
| #include <QString> | #include <QString> | ||||||
| #include <QThread> |  | ||||||
| #include <QList> |  | ||||||
| #include <QFile> | #include <QFile> | ||||||
|  | #ifdef Q_OS_WIN | ||||||
| #include <QDir> | #include <QDir> | ||||||
|  | #include <QList> | ||||||
|  | #else | ||||||
|  | #include "sys/types.h" | ||||||
|  | #include "dirent.h" | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| ProfileLoader::ProfileLoader(QString profileFolder, CrewDatabase *crewDB, QObject *parent) : QThread(parent), profileFolder(profileFolder), crewDB(crewDB) | ProfileLoader::ProfileLoader(QString profileFolder, CrewDatabase *crewDB, QObject *parent) : QThread(parent), profileFolder(profileFolder), crewDB(crewDB) | ||||||
| { | { | ||||||
|  | @ -36,30 +40,44 @@ ProfileLoader::ProfileLoader(QString profileFolder, CrewDatabase *crewDB, QObjec | ||||||
| void ProfileLoader::run() | void ProfileLoader::run() | ||||||
| { | { | ||||||
|     int curFile = 1; |     int curFile = 1; | ||||||
|     QDir profileDir; |     int maximumV = 0; | ||||||
|     QList<int> crewList; |     QVector<int> crewList; | ||||||
|     profileDir.setPath(profileFolder); |     QVector<QString> savegameFiles; | ||||||
|  |     QVector<QString> snapmaticPics; | ||||||
| 
 | 
 | ||||||
|     // Seek pictures and savegames
 | #ifdef Q_OS_WIN | ||||||
|     profileDir.setNameFilters(QStringList("SGTA5*")); |     QDir dir(profileFolder); | ||||||
|     QStringList SavegameFiles = profileDir.entryList(QDir::Files | QDir::NoDot, QDir::NoSort); |     const QStringList files = dir.entryList(); | ||||||
|     QStringList BackupFiles = SavegameFiles.filter(".bak", Qt::CaseInsensitive); |     for (const QString &fileName : files) { | ||||||
|     profileDir.setNameFilters(QStringList("PGTA5*")); |         if (fileName.startsWith("SGTA5") && !fileName.endsWith(".bak")) { | ||||||
|     QStringList SnapmaticPics = profileDir.entryList(QDir::Files | QDir::NoDot, QDir::NoSort); |             savegameFiles << fileName; | ||||||
|     BackupFiles += SnapmaticPics.filter(".bak", Qt::CaseInsensitive); |             maximumV++; | ||||||
| 
 |         } | ||||||
|     SavegameFiles.removeDuplicates(); |         if (fileName.startsWith("PGTA5") && !fileName.endsWith(".bak")) { | ||||||
|     SnapmaticPics.removeDuplicates(); |             snapmaticPics << fileName; | ||||||
|     for (const QString &BackupFile : qAsConst(BackupFiles)) { |             maximumV++; | ||||||
|         SavegameFiles.removeAll(BackupFile); |         } | ||||||
|         SnapmaticPics.removeAll(BackupFile); |  | ||||||
|     } |     } | ||||||
| 
 | #else | ||||||
|     int maximumV = SavegameFiles.length() + SnapmaticPics.length(); |     DIR *dirp = opendir(profileFolder.toUtf8().constData()); | ||||||
|  |     struct dirent *dp; | ||||||
|  |     while ((dp = readdir(dirp)) != 0) { | ||||||
|  |         const QString fileName = QString::fromUtf8(dp->d_name); | ||||||
|  |         if (fileName.startsWith("SGTA5") && !fileName.endsWith(".bak")) { | ||||||
|  |             savegameFiles << fileName; | ||||||
|  |             maximumV++; | ||||||
|  |         } | ||||||
|  |         if (fileName.startsWith("PGTA5") && !fileName.endsWith(".bak")) { | ||||||
|  |             snapmaticPics << fileName; | ||||||
|  |             maximumV++; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     closedir(dirp); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     // Loading pictures and savegames
 |     // Loading pictures and savegames
 | ||||||
|     emit loadingProgress(curFile, maximumV); |     emit loadingProgress(curFile, maximumV); | ||||||
|     for (const QString &SavegameFile : qAsConst(SavegameFiles)) { |     for (const QString &SavegameFile : qAsConst(savegameFiles)) { | ||||||
|         emit loadingProgress(curFile, maximumV); |         emit loadingProgress(curFile, maximumV); | ||||||
|         const QString sgdPath = profileFolder % "/" % SavegameFile; |         const QString sgdPath = profileFolder % "/" % SavegameFile; | ||||||
|         SavegameData *savegame = new SavegameData(sgdPath); |         SavegameData *savegame = new SavegameData(sgdPath); | ||||||
|  | @ -68,7 +86,7 @@ void ProfileLoader::run() | ||||||
|         } |         } | ||||||
|         curFile++; |         curFile++; | ||||||
|     } |     } | ||||||
|     for (const QString &SnapmaticPic : qAsConst(SnapmaticPics)) { |     for (const QString &SnapmaticPic : qAsConst(snapmaticPics)) { | ||||||
|         emit loadingProgress(curFile, maximumV); |         emit loadingProgress(curFile, maximumV); | ||||||
|         const QString picturePath = profileFolder % "/" % SnapmaticPic; |         const QString picturePath = profileFolder % "/" % SnapmaticPic; | ||||||
|         SnapmaticPicture *picture = new SnapmaticPicture(picturePath); |         SnapmaticPicture *picture = new SnapmaticPicture(picturePath); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue