diff options
Diffstat (limited to 'rbutil/rbutilqt/gui')
-rw-r--r-- | rbutil/rbutilqt/gui/selectiveinstallwidget.cpp | 40 |
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 | ||
486 | static 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 | ||
487 | void SelectiveInstallWidget::installGamefiles(void) | 499 | void 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 | |||