|
|
|
#include "calculateconfig.h"
|
|
|
|
|
|
|
|
#include <QProcess>
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
#include <QtXml>
|
|
|
|
|
|
|
|
|
|
|
|
CalculateConfig* CalculateConfig::_instance = 0;
|
|
|
|
|
|
|
|
CalculateConfig::CalculateConfig()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
CalculateConfig::~CalculateConfig()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
CalculateConfig* CalculateConfig::instance()
|
|
|
|
{
|
|
|
|
if ( !_instance )
|
|
|
|
_instance = new CalculateConfig();
|
|
|
|
return _instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool CalculateConfig::getDefaultConfig()
|
|
|
|
{
|
|
|
|
m_Config.clear();
|
|
|
|
|
|
|
|
// start cl-install -v and parse out
|
|
|
|
QProcess cl_install;
|
|
|
|
|
|
|
|
qDebug() << "Start cl-install -v --xml";
|
|
|
|
cl_install.start("cl-install", QStringList() << "-v" << "--xml");
|
|
|
|
|
|
|
|
if ( !cl_install.waitForStarted() )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
if ( !cl_install.waitForFinished() )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
QString outVars = cl_install.readAll();
|
|
|
|
|
|
|
|
QDomDocument xmlVars;
|
|
|
|
QString errMsg;
|
|
|
|
int errLine;
|
|
|
|
int errColumn;
|
|
|
|
|
|
|
|
if ( xmlVars.setContent(outVars, true, &errMsg, &errLine, &errColumn) )
|
|
|
|
{
|
|
|
|
QDomElement domRoot = xmlVars.documentElement();
|
|
|
|
if (domRoot.tagName() == "variables") {
|
|
|
|
parseVariables(domRoot);
|
|
|
|
} else {
|
|
|
|
qDebug() << "Section \"variables\" not found";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// installer settings
|
|
|
|
// gui_partitioning - install type: auto, manual
|
|
|
|
m_Config["gui_install_language"] = m_Config["os_locale_lang"];
|
|
|
|
m_Config["gui_os_device_dev"] = m_Config["os_device_dev"].toStringList().at(0);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CalculateConfig::parseVariables(const QDomNode& node)
|
|
|
|
{
|
|
|
|
QDomNode domNode = node.firstChild();
|
|
|
|
while ( !domNode.isNull() )
|
|
|
|
{
|
|
|
|
if ( domNode.isElement() )
|
|
|
|
{
|
|
|
|
QDomElement domElement = domNode.toElement();
|
|
|
|
if ( !domElement.isNull() )
|
|
|
|
{
|
|
|
|
if (domElement.tagName() == "var")
|
|
|
|
{
|
|
|
|
if (domElement.attribute("type") == "var")
|
|
|
|
{
|
|
|
|
parseVar(domElement);
|
|
|
|
}
|
|
|
|
else if (domElement.attribute("type") == "list")
|
|
|
|
{
|
|
|
|
parseVarList(domElement);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
domNode = domNode.nextSibling();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CalculateConfig::parseVar(const QDomNode& node)
|
|
|
|
{
|
|
|
|
QString name = node.toElement().attribute("name");
|
|
|
|
QDomNode domNode = node.firstChild();
|
|
|
|
|
|
|
|
while ( !domNode.isNull() )
|
|
|
|
{
|
|
|
|
if ( domNode.isElement() )
|
|
|
|
{
|
|
|
|
QDomElement domElement = domNode.toElement();
|
|
|
|
if ( !domElement.isNull() )
|
|
|
|
{
|
|
|
|
if (domElement.tagName() == "value")
|
|
|
|
{
|
|
|
|
//qDebug() << "var " << name << " = " << domElement.text();
|
|
|
|
m_Config[name] = QVariant( domElement.text() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
domNode = domNode.nextSibling();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CalculateConfig::parseVarList(const QDomNode& node)
|
|
|
|
{
|
|
|
|
QStringList resList;
|
|
|
|
QString name = node.toElement().attribute("name");
|
|
|
|
QDomNode domNode = node.firstChild();
|
|
|
|
|
|
|
|
while ( !domNode.isNull() )
|
|
|
|
{
|
|
|
|
if ( domNode.isElement() )
|
|
|
|
{
|
|
|
|
QDomElement domElement = domNode.toElement();
|
|
|
|
if ( !domElement.isNull() )
|
|
|
|
{
|
|
|
|
if (domElement.tagName() == "value")
|
|
|
|
{
|
|
|
|
//qDebug() << "list " << name << " = " << domElement.text();
|
|
|
|
resList << domElement.text();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
domNode = domNode.nextSibling();
|
|
|
|
}
|
|
|
|
if ( !resList.isEmpty() )
|
|
|
|
{
|
|
|
|
m_Config[name] = QVariant( resList );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CalculateConfig::setValue ( const QString& key, const QVariant& value )
|
|
|
|
{
|
|
|
|
if ( m_Config.contains(key) )
|
|
|
|
m_Config.remove(key);
|
|
|
|
|
|
|
|
m_Config[key] = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CalculateConfig::showInstallParameters()
|
|
|
|
{
|
|
|
|
QStringList params = getInstallParameters();
|
|
|
|
|
|
|
|
emit sendParameters(params);
|
|
|
|
}
|
|
|
|
|
|
|
|
QStringList CalculateConfig::getInstallParameters()
|
|
|
|
{
|
|
|
|
QStringList params;
|
|
|
|
|
|
|
|
// disks
|
|
|
|
if ( m_Config["--disk"].toStringList().count() > 0 )
|
|
|
|
{
|
|
|
|
foreach(const QString& disk, m_Config["--disk"].toStringList())
|
|
|
|
{
|
|
|
|
QString disk_t(disk);
|
|
|
|
disk_t.replace(" ", "");
|
|
|
|
params << QString("--disk ") + disk_t;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( !m_Config["--swap"].toString().isEmpty() )
|
|
|
|
params << QString("--swap ") + m_Config["--swap"].toString();
|
|
|
|
|
|
|
|
// mbr
|
|
|
|
if ( !m_Config["gui_os_device_dev"].toString().isEmpty() )
|
|
|
|
params << QString("--mbr /dev/") + m_Config["gui_os_device_dev"].toString();
|
|
|
|
|
|
|
|
// config
|
|
|
|
if ( !m_Config["os_install_net_hostname"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_net_hostname=" + m_Config["os_install_net_hostname"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_net_domain"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_net_domain=" + m_Config["os_install_net_domain"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_clock_timezone"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_clock_timezone=" + m_Config["os_install_clock_timezone"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_x11_video_drv"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_x11_video_drv=" + m_Config["os_install_x11_video_drv"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_x11_composite"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_x11_composite=" + m_Config["os_install_x11_composite"].toString();
|
|
|
|
|
|
|
|
if ( m_Config["gui_expert_mode"].toString() == "on" )
|
|
|
|
{
|
|
|
|
if ( !m_Config["os_install_makeopts"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_makeopts=" + m_Config["os_install_makeopts"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_proxy"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_proxy=" + m_Config["os_install_proxy"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_ntp"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_ntp=" + m_Config["os_install_ntp"].toString();
|
|
|
|
|
|
|
|
if ( !m_Config["os_install_clock_type"].toString().isEmpty() )
|
|
|
|
params << "--set os_install_clock_type=" + m_Config["os_install_clock_type"].toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
// lang
|
|
|
|
if ( !m_Config["gui_install_language"].toString().isEmpty() )
|
|
|
|
params << "--lang " + m_Config["gui_install_language"].toString();
|
|
|
|
|
|
|
|
return params;
|
|
|
|
}
|