MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / extractFinished

Method extractFinished

launcher/modplatform/technic/SolderPackInstallTask.cpp:182–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

180}
181
182void Technic::SolderPackInstallTask::extractFinished()
183{
184 if (!m_extractFuture.result())
185 {
186 emitFailed(tr("Failed to extract modpack"));
187 return;
188 }
189 QDir extractDir(m_stagingPath);
190
191 qDebug() << "Fixing permissions for extracted pack files...";
192 QDirIterator it(extractDir, QDirIterator::Subdirectories);
193 while (it.hasNext())
194 {
195 auto filepath = it.next();
196 QFileInfo file(filepath);
197 auto permissions = QFile::permissions(filepath);
198 auto origPermissions = permissions;
199 if(file.isDir())
200 {
201 // Folder +rwx for current user
202 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser;
203 }
204 else
205 {
206 // File +rw for current user
207 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
208 }
209 if(origPermissions != permissions)
210 {
211 if(!QFile::setPermissions(filepath, permissions))
212 {
213 logWarning(tr("Could not fix permissions for %1").arg(filepath));
214 }
215 else
216 {
217 qDebug() << "Fixed" << filepath;
218 }
219 }
220 }
221
222 shared_qobject_ptr<Technic::TechnicPackProcessor> packProcessor = new Technic::TechnicPackProcessor();
223 connect(packProcessor.get(), &Technic::TechnicPackProcessor::succeeded, this, &Technic::SolderPackInstallTask::emitSucceeded);
224 connect(packProcessor.get(), &Technic::TechnicPackProcessor::failed, this, &Technic::SolderPackInstallTask::emitFailed);
225 packProcessor->run(m_globalSettings, name(), m_instIcon, m_stagingPath, m_minecraftVersion, true);
226}
227
228void Technic::SolderPackInstallTask::extractAborted()
229{

Callers

nothing calls this directly

Calls 4

nextMethod · 0.80
resultMethod · 0.45
getMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected