summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/gui
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/gui')
-rw-r--r--rbutil/rbutilqt/gui/selectiveinstallwidget.cpp40
1 files changed, 34 insertions, 6 deletions
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
index 843fa63cad..ffc5d98d72 100644
--- a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
+++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
@@ -483,22 +483,51 @@ void SelectiveInstallWidget::installThemes(void)
483 } 483 }
484} 484}
485 485
486static const struct {
487 const char *name;
488 const char *pluginpath;
489 SystemInfo::SystemInfos zipurl; // add new games to SystemInfo
490} GamesList[] = {
491 { "Doom", "/.rockbox/rocks/games/doom.rock", SystemInfo::DoomUrl },
492 { "Duke3D", "/.rockbox/rocks/games/duke3d.rock", SystemInfo::Duke3DUrl },
493 { "Quake", "/.rockbox/rocks/games/quake.rock", SystemInfo::QuakeUrl },
494 { "Puzzles fonts", "/.rockbox/rocks/games/sgt-blackbox.rock", SystemInfo::PuzzFontsUrl },
495 { "Wolf3D", "/.rockbox/rocks/games/wolf3d.rock", SystemInfo::Wolf3DUrl },
496 { "XWorld", "/.rockbox/rocks/games/xworld.rock", SystemInfo::XWorldUrl },
497};
486 498
487void SelectiveInstallWidget::installGamefiles(void) 499void SelectiveInstallWidget::installGamefiles(void)
488{ 500{
489 if(ui.gamefileCheckbox->isChecked()) { 501 if(ui.gamefileCheckbox->isChecked()) {
490 // check if installed Rockbox has doom plugin. If not disable doom. 502 // build a list of zip urls that we need, then install
491 if(!QFileInfo(m_mountpoint + "/.rockbox/rocks/games/doom.rock").exists()) { 503 QStringList gameUrls;
492 m_logger->addItem(tr("Your installation doesn't require game files, skipping."), LOGINFO); 504 QStringList gameNames;
505
506 for(unsigned int i = 0; i < sizeof(GamesList) / sizeof(GamesList[0]); i++)
507 {
508 // check if installed Rockbox has this plugin.
509 if(QFileInfo(m_mountpoint + GamesList[i].pluginpath).exists()) {
510 gameNames.append(GamesList[i].name);
511 gameUrls.append(SystemInfo::value(GamesList[i].zipurl).toString());
512 LOG_INFO() << gameUrls.at(gameUrls.size() - 1);
513 }
514 }
515
516 if(gameUrls.size() == 0)
517 {
518 m_logger->addItem(tr("Your installation doesn't require any game files, skipping."), LOGINFO);
493 emit installSkipped(false); 519 emit installSkipped(false);
520 return;
494 } 521 }
522
495 LOG_INFO() << "installing gamefiles"; 523 LOG_INFO() << "installing gamefiles";
524
496 // create new zip installer 525 // create new zip installer
497 if(m_zipinstaller != NULL) m_zipinstaller->deleteLater(); 526 if(m_zipinstaller != NULL) m_zipinstaller->deleteLater();
498 m_zipinstaller = new ZipInstaller(this); 527 m_zipinstaller = new ZipInstaller(this);
499 528
500 m_zipinstaller->setUrl(SystemInfo::value(SystemInfo::DoomUrl).toString()); 529 m_zipinstaller->setUrl(gameUrls);
501 m_zipinstaller->setLogSection("Game Addons"); 530 m_zipinstaller->setLogSection(gameNames);
502 m_zipinstaller->setLogVersion(); 531 m_zipinstaller->setLogVersion();
503 m_zipinstaller->setMountPoint(m_mountpoint); 532 m_zipinstaller->setMountPoint(m_mountpoint);
504 if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) 533 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
@@ -523,4 +552,3 @@ void SelectiveInstallWidget::changeEvent(QEvent *e)
523 QWidget::changeEvent(e); 552 QWidget::changeEvent(e);
524 } 553 }
525} 554}
526