Add executing calculate installer.

new_installer
ivan 14 years ago
parent 178992ce38
commit 13aee9e089

@ -24,7 +24,8 @@ PageConfiguration::PageConfiguration(const QString& title) :
QLabel* langText = new QLabel( tr("Language:") );
m_Language = new QComboBox;
m_Language->addItem("en_EN");
//"en_US", "de_DE", "es_ES", "fr_FR", "it_IT", "pl_PL", "pt_BR", "ru_RU", "uk_UA"
m_Language->addItem("en_US");
m_Language->addItem("ru_RU");
hbox_2->addWidget(langText);
@ -73,6 +74,20 @@ PageConfiguration::PageConfiguration(const QString& title) :
bool PageConfiguration::validate()
{
return true;
if ( !m_Hostname->text().isEmpty() )
{
InstallerSettings settings;
settings.host = m_Hostname->text();
settings.language = m_Language->currentText();
settings.fs = m_Format->currentText();
settings.timezone = m_Timezone->currentText();
emit selectedSettings(settings);
return true;
} else {
return false;
}
}

@ -1,6 +1,7 @@
#pragma once
#include "installerpage.h"
#include "tools.h"
class QComboBox;
class QLineEdit;
@ -15,6 +16,9 @@ public:
public slots:
signals:
void selectedSettings(InstallerSettings);
private:
QLineEdit* m_Hostname;
QComboBox* m_Language;

@ -1,12 +1,16 @@
#include "pageinstall.h"
#include <QtDebug>
#include <QBoxLayout>
#include <QLabel>
#include <QTextEdit>
#include <QProgressBar>
PageInstall::PageInstall(const QString& title) :
InstallerPage(title)
PageInstall::PageInstall(const QString& title, InstallerSettings* settings) :
InstallerPage(title),
m_Settings(settings),
m_clProc(0)
{
//QLabel* label = new QLabel( tr("") )
@ -24,8 +28,32 @@ PageInstall::PageInstall(const QString& title) :
void PageInstall::show()
{
// emit changeNext(false);
// emit changePrev(false);
emit changeNext(false);
emit changePrev(false);
qDebug() << "install show()";
emit changeNext(false);
emit changePrev(false);
if ( !m_clProc )
{
m_clProc = new QProcess(this);
connect( m_clProc, SIGNAL(error(QProcess::ProcessError)), this, SLOT(onError(QProcess::ProcessError)) );
connect( m_clProc, SIGNAL(readyReadStandardOutput()), this, SLOT(showStdOut()) );
connect( m_clProc, SIGNAL(readyReadStandardError()), this, SLOT(showStdErr()) );
connect( m_clProc, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(onFinish(int,QProcess::ExitStatus)) );
QStringList args;
args << QString("--disk=%1").arg(m_Settings->disk);
args << QString("--set-hostname=%1").arg(m_Settings->host);
args << QString("--set-format=%1").arg(m_Settings->fs);
args << QString("--set-lang=%1").arg(m_Settings->language);
args << QString("--set-timezone=%1").arg(m_Settings->timezone);
m_clProc->start("calculate");
}
}
bool PageInstall::validate()
@ -33,3 +61,36 @@ bool PageInstall::validate()
return true;
}
void PageInstall::onError(QProcess::ProcessError error)
{
qDebug() << "failed to run process 'calculate' error=" << error ;
onFinish(-error);
}
void PageInstall::showStdOut()
{
// debug
QString str = m_clProc->readAllStandardOutput();
qDebug() << "cl out: " << str;
if (m_clProc)
m_Output->insertPlainText( str );
}
void PageInstall::showStdErr()
{
if (m_clProc)
qDebug() << tr("Process Error: ") << m_clProc->readAllStandardError();
}
void PageInstall::onFinish(int exitCode, QProcess::ExitStatus exitStatus)
{
qDebug() << "install onFinish()";
emit changeNext(true);
emit changePrev(true);
delete m_clProc;
m_clProc = 0;
}

@ -1,6 +1,9 @@
#pragma once
#include "installerpage.h"
#include "tools.h"
#include <QProcess>
class QTextEdit;
class QProgressBar;
@ -9,13 +12,19 @@ class PageInstall : public InstallerPage
{
Q_OBJECT
public:
explicit PageInstall(const QString& title);
explicit PageInstall(const QString& title, InstallerSettings* settings);
bool validate();
public slots:
void show();
private slots:
void onError(QProcess::ProcessError error);
void showStdOut();
void showStdErr();
void onFinish(int exitCode, QProcess::ExitStatus exitStatus = QProcess::NormalExit);
signals:
void changeNext(bool);
void changePrev(bool);
@ -24,5 +33,7 @@ private:
QTextEdit* m_Output;
QProgressBar* m_Progress;
InstallerSettings* m_Settings;
QProcess* m_clProc;
};

@ -146,6 +146,7 @@ void PagePartitioning::updatePartitions(int num)
}
}
}
void PagePartitioning::partitioningCurrentDisk()
{
if (m_Disks->count() != 0)

@ -100,9 +100,15 @@ SystemInstaller::SystemInstaller(QWidget *parent) :
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") );
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") );
@ -151,4 +157,18 @@ void SystemInstaller::completePartitioning()
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;
}

@ -1,6 +1,9 @@
#pragma once
#include <QMainWindow>
#include <QString>
#include "tools.h"
class QPushButton;
class QLabel;
@ -28,6 +31,10 @@ private slots:
void completePartitioning();
void volumeSelect(QString volume);
void configurationSelect(InstallerSettings settings);
signals:
void selecteConfiguration(InstallerSettings settings);
private:
// ui
@ -39,5 +46,7 @@ private:
PageManager* m_PageManager;
PageCfdisk* m_PageCfdisk;
InstallerSettings m_InstallSettings;
};

@ -2,4 +2,13 @@
#include <QString>
struct InstallerSettings
{
QString disk;
QString host;
QString language;
QString fs;
QString timezone;
};
QString LoadTextFile(const QString& name);

Loading…
Cancel
Save