diff options
Diffstat (limited to 'ui/qt5/horizonwizard.cc')
-rw-r--r-- | ui/qt5/horizonwizard.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc new file mode 100644 index 0000000..72b4239 --- /dev/null +++ b/ui/qt5/horizonwizard.cc @@ -0,0 +1,79 @@ +#include "horizonwizard.hh" +#include "horizonhelpwindow.hh" + +#include <QDebug> +#include <QFile> +#include <QMessageBox> +#include <map> +#include <string> + +#include "intropage.hh" +#include "networkingpage.hh" +#include "netsimplewifipage.hh" + +using std::map; +using std::string; + +static map<int, string> help_id_map = { + {HorizonWizard::Page_Intro, "intro"}, + {HorizonWizard::Page_Input, "input"}, + {HorizonWizard::Page_Partition, "partition"}, +#ifdef NON_LIBRE_FIRMWARE + {HorizonWizard::Page_Firmware, "firmware"}, +#endif /* NON_LIBRE_FIRMWARE */ + {HorizonWizard::Page_Network, "network-start"}, + {HorizonWizard::Page_Network_Iface, "network-iface"}, + {HorizonWizard::Page_Network_Wireless, "network-wifi"}, + {HorizonWizard::Page_Network_DHCP, "none"}, + {HorizonWizard::Page_Network_Portal, "network-portal"}, + {HorizonWizard::Page_Network_Manual, "network-manual"}, + {HorizonWizard::Page_DateTime, "datetime"}, + {HorizonWizard::Page_Hostname, "hostname"}, + {HorizonWizard::Page_PkgSimple, "packages-simple"}, + {HorizonWizard::Page_PkgCustom, "packages-custom"}, + {HorizonWizard::Page_Boot, "startup"}, + {HorizonWizard::Page_Root, "rootpw"}, + {HorizonWizard::Page_Accounts, "accounts"}, +#ifndef HAS_INSTALL_ENV + {HorizonWizard::Page_Write, "writeout"}, +#else /* HAS_INSTALL_ENV */ + {HorizonWizard::Page_Commit, "commit"} +#endif /* !HAS_INSTALL_ENV */ +}; + +HorizonWizard::HorizonWizard(QWidget *parent) : QWizard(parent) { + setWindowTitle(tr("Adélie Linux System Installation")); + + setFixedSize(QSize(650, 450)); + + setOption(DisabledBackButtonOnLastPage); + setOption(HaveHelpButton); + setOption(NoCancelButton); + + setSizeGripEnabled(false); + + setPage(Page_Intro, new IntroPage); + setPage(Page_Network, new NetworkingPage); + + QObject::connect(this, static_cast<void (QWizard:: *)(void)>(&QWizard::helpRequested), + [=](void) { + if(help_id_map.find(currentId()) == help_id_map.end()) { + qDebug() << "no help available for " << currentId(); + QMessageBox nohelp(QMessageBox::Warning, + tr("No Help Available"), + tr("Help is not available for the current page." + " Consult the Installation Guide for more " + "information."), + QMessageBox::Ok, + this); + nohelp.exec(); + return; + } + string helppath = ":/wizard_help/resources/" + + help_id_map.at(currentId()) + "-help.txt"; + QFile helpfile(helppath.c_str()); + helpfile.open(QFile::ReadOnly); + HorizonHelpWindow help(&helpfile, this); + help.exec(); + }); +} |