#include "systeminstaller.h" #include #include #include #include #include "pagemanager.h" #include "pagelanguage.h" #include "pagelicense.h" #include "pagepartitioning.h" #include "pageconfiguration.h" #include "pageinstall.h" #include "pagefinish.h" #include "pagecfdisk.h" SystemInstaller::SystemInstaller(QWidget *parent) : QMainWindow(parent) { // need for QMainWindow QWidget* centralWidget = new QWidget(this); // buttons QHBoxLayout* hbox_buttons = new QHBoxLayout; m_butPrev = new QPushButton( tr("Prevoius") ); m_butNext = new QPushButton( tr("Next") ); hbox_buttons->addStretch(); hbox_buttons->addWidget( m_butPrev ); hbox_buttons->addWidget( m_butNext ); // right pannel = widget for pages + buttons QStackedWidget* stackPages = new QStackedWidget; QVBoxLayout* vbox_1 = new QVBoxLayout; QGroupBox* group_box_page = new QGroupBox; QVBoxLayout* group_box_page_l = new QVBoxLayout; group_box_page_l->addWidget( stackPages ); group_box_page->setLayout( group_box_page_l ); vbox_1->addWidget( group_box_page ); vbox_1->addLayout( hbox_buttons ); // left pannel QLabel* labelPages = new QLabel; QGroupBox* group_box_list = new QGroupBox; QVBoxLayout* group_box_list_l = new QVBoxLayout; group_box_list_l->addWidget( labelPages ); group_box_list->setLayout( group_box_list_l ); // left + right pannels QHBoxLayout* hbox_2 = new QHBoxLayout; hbox_2->addWidget( group_box_list, 2 ); hbox_2->addLayout( vbox_1, 9); // all window QVBoxLayout* vbox_2 = new QVBoxLayout(centralWidget); m_labelImage = new QLabel(""); m_labelImage->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); // logo QImage logo( ":/img/calculate-logo.png" ); m_labelImage->setPixmap( QPixmap::fromImage(logo) ); vbox_2->addWidget( m_labelImage ); vbox_2->addLayout( hbox_2 ); setCentralWidget( centralWidget ); // minimum size for window TODO: remove magic numbers setMinimumSize(800, 600); QRect scr = QApplication::desktop()->screenGeometry(); move( scr.width() - scr.width()/2 - 800/2, scr.height() - scr.height()/2 - 600/2 ); // create PageManager and pages m_PageManager = new PageManager(stackPages, labelPages, this); PageLanguage* pageLanguage = new PageLanguage( tr("Language") ); connect( pageLanguage, SIGNAL(changeLanguage(int)), this, SLOT(changedLanguage(int)) ); m_PageManager->addPage(pageLanguage); PageLicense* pageLicense = new PageLicense( tr("License") ); connect( pageLicense, SIGNAL(changeNext(bool)), this, SLOT(changedNext(bool)) ); m_PageManager->addPage(pageLicense); PagePartitioning* pagePartitoning = new PagePartitioning( tr("Partitioning") ); connect( pagePartitoning, SIGNAL(manualyPartitioning(QString)), this, SLOT(doPartitioning(QString)) ); connect( pagePartitoning, SIGNAL(selectedVolume(QString)), this, SLOT(volumeSelect(QString)) ); m_PageManager->addPage(pagePartitoning); PageConfiguration* pageConfiguration = new PageConfiguration( tr("Configuring") ); connect( pageConfiguration, SIGNAL(selectedSettings(InstallerSettings)), this, SLOT(configurationSelect(InstallerSettings)) ); m_PageManager->addPage(pageConfiguration); PageInstall* pageInstall = new PageInstall( tr("Installing"), &m_InstallSettings ); // connect( this, ) connect( pageInstall, SIGNAL(changeNext(bool)), this, SLOT(changedNext(bool)) ); connect( pageInstall, SIGNAL(changePrev(bool)), this, SLOT(changedPrev(bool)) ); m_PageManager->addPage(pageInstall); PageFinish* pageFinish = new PageFinish( tr("Complete") ); m_PageManager->addPage(pageFinish); m_PageManager->showFirst(); connect( m_butNext, SIGNAL(clicked()), m_PageManager, SLOT(showNext()) ); connect( m_butPrev, SIGNAL(clicked()), m_PageManager, SLOT(showPrevious()) ); } SystemInstaller::~SystemInstaller() { delete m_PageManager; } void SystemInstaller::changedNext(bool state) { m_butNext->setEnabled(state); } void SystemInstaller::changedPrev(bool state) { m_butPrev->setEnabled(state); } void SystemInstaller::changedLanguage(int lang) { Q_UNUSED(lang); } void SystemInstaller::doPartitioning(QString disk) { m_PageCfdisk = new PageCfdisk("Partitioning", disk); m_PageManager->showOnce(m_PageCfdisk); connect( m_PageCfdisk, SIGNAL(completed()), this, SLOT(completePartitioning()) ); } void SystemInstaller::completePartitioning() { delete m_PageCfdisk; m_PageManager->showPrevious(); } void SystemInstaller::volumeSelect(QString volume) { qDebug() << "Selected volume is " << volume; m_InstallSettings.disk = volume; } void SystemInstaller::configurationSelect(InstallerSettings settings) { qDebug() << "Selected settings: "; qDebug() << "Host: " << settings.host; qDebug() << "FS: " << settings.fs; qDebug() << "Language: " << settings.language; qDebug() << "Timezone: " << settings.timezone; // replace selected volume settings.disk = m_InstallSettings.disk; m_InstallSettings = settings; }