From 1a86d131e8a2e47d60da40ae31b47bdf91c4f1af Mon Sep 17 00:00:00 2001 From: Ivan Loskutov Date: Sun, 22 Aug 2010 21:31:36 +0400 Subject: [PATCH] Added debug log. Fixed language list. Fixed install output. --- src/calculateconfig.cpp | 17 +++++++++- src/commons.h | 12 +++++++ src/main.cpp | 52 +++++++++++++++++++++++++++---- src/pageconfiguration.cpp | 35 ++++++++++++++++++++- src/pageconfiguration.h | 3 ++ src/pageinstall.cpp | 33 +++++++++++++++----- src/pagemountpoints.cpp | 2 +- src/pagepartitioning.cpp | 5 ++- translations/cl-install-gui_ru.ts | 8 ++--- 9 files changed, 143 insertions(+), 24 deletions(-) diff --git a/src/calculateconfig.cpp b/src/calculateconfig.cpp index d40c9c0..2ad6cdd 100644 --- a/src/calculateconfig.cpp +++ b/src/calculateconfig.cpp @@ -60,8 +60,23 @@ bool CalculateConfig::getDefaultConfig() // installer settings // gui_partitioning - install type: auto, manual m_Config["gui_install_language"] = m_Config["os_locale_lang"]; + + QStringList devs = m_Config["os_device_dev"].toStringList(); + QStringList::iterator dev = devs.begin(); + + while ( dev != devs.end() ) + { + *dev = "/dev/"+*dev; + ++dev; + } + + m_Config.remove("os_device_dev"); + m_Config["os_device_dev"] = devs; + m_Config["gui_os_device_dev"] = m_Config["os_device_dev"].toStringList().at(0); + //CalculateConfig::instance()->getValue("os_device_dev").toStringList() + return true; } @@ -178,7 +193,7 @@ QStringList CalculateConfig::getInstallParameters() // mbr if ( !m_Config["gui_os_device_dev"].toString().isEmpty() ) - params << QString("--mbr /dev/") + m_Config["gui_os_device_dev"].toString(); + params << QString("--mbr ") + m_Config["gui_os_device_dev"].toString(); // config if ( !m_Config["os_install_net_hostname"].toString().isEmpty() ) diff --git a/src/commons.h b/src/commons.h index 95c6e0d..027a665 100644 --- a/src/commons.h +++ b/src/commons.h @@ -1,5 +1,7 @@ #pragma once +#include + class QString; struct UserInfo @@ -22,3 +24,13 @@ struct MountPoint { MountPoint() : /*bind(false),*/ format(false) {}; }; + +template +class InitializableMap: public QMap +{ +public: + InitializableMap& operator<< (const QPair& t) + { + insert(t.first, t.second); return *this; + } +}; diff --git a/src/main.cpp b/src/main.cpp index 3350693..8aab5ed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,10 +4,18 @@ #include #include #include -#include +#include +#include + +#include #include "systeminstaller.h" +static QFile debugLog; + +void toDebugLog(const QString& str); +void MsgHandler(QtMsgType type, const char *msg); + int main(int argc, char** argv) { QTextCodec::setCodecForLocale( QTextCodec::codecForName("UTF-8") ); @@ -16,18 +24,50 @@ int main(int argc, char** argv) QApplication app(argc, argv); + qInstallMsgHandler( MsgHandler ); + + debugLog.setFileName("/var/log/calculate/cl-install-gui-debug.log"); + if ( debugLog.open(QIODevice::Append | QIODevice::WriteOnly | QIODevice::Text | QIODevice::Unbuffered) ) + { + qDebug() << "Installation started"; + } + SystemInstaller installer; -/* + if ( getuid() != 0) { - QMessageBox::critical( 0, QObject::tr("Error"), - QObject::tr("You do not have administrative privileges.") - ); + QMessageBox::critical( + 0, + QObject::tr("Error"), + QObject::tr("You do not have administrative privileges.") + ); return -1; } -*/ + + + + installer.show(); return app.exec(); } +void MsgHandler(QtMsgType type, const char *msg) +{ + switch (type) { + case QtDebugMsg: + toDebugLog( QString(msg) ); + break; + default: + break; + } +} + +void toDebugLog(const QString& str) +{ + if (debugLog.isOpen()) + debugLog.write( + ("[" + QDateTime::currentDateTime().toString(Qt::ISODate) + "] " + + str + "\r").toLocal8Bit() + ); +} diff --git a/src/pageconfiguration.cpp b/src/pageconfiguration.cpp index 2d0bb9f..8704d89 100644 --- a/src/pageconfiguration.cpp +++ b/src/pageconfiguration.cpp @@ -13,6 +13,31 @@ #include "calculateconfig.h" + +#include + +InitializableMap PageConfiguration::m_langMap = + InitializableMap() + << QPair( "be_BY", tr("Belarusian") ) + << QPair( "bg_BG", tr("Bulgarian") ) + << QPair( "da_DK", tr("Danish") ) + << QPair( "en_GB", tr("English GB") ) + << QPair( "en_US", tr("English USA") ) + << QPair( "fr_BE", tr("French [fr_BE]") ) + << QPair( "fr_CA", tr("French [fr_CA]") ) + << QPair( "fr_FR", tr("French [fr_FR]") ) + << QPair( "de_DE", tr("German") ) + << QPair( "is_IS", tr("Icelandic") ) + << QPair( "it_IT", tr("Italian") ) + << QPair( "pl_PL", tr("Polish") ) + << QPair( "pt_BR", tr("Portuguese") ) + << QPair( "ru_RU", tr("Russian") ) + << QPair( "sv_SE", tr("Swedish") ) + << QPair( "es_ES", tr("Spanish") ) + << QPair( "nn_NO", tr("Norwegian Nynorsk") ) + << QPair( "uk_UA", tr("Ukrainian") ) +; + PageConfiguration::PageConfiguration() : InstallerPage() { @@ -205,6 +230,14 @@ void PageConfiguration::retranslateUi() m_labelLanguage->setText( tr("Language:") ); m_cmbboxLanguage->clear(); + foreach(QString lang, CalculateConfig::instance()->getValue("os_install_lang").toStringList() ) + { + if ( !m_langMap[lang].isEmpty() ) + m_cmbboxLanguage->addItem( m_langMap[lang], QVariant(lang) ); + else + qDebug() << "Unsupported language " << lang; + } +/* m_cmbboxLanguage->addItem( tr("English"), QVariant("en_US") ); m_cmbboxLanguage->addItem( tr("German"), QVariant("de_DE") ); m_cmbboxLanguage->addItem( tr("Spanish"), QVariant("es_ES") ); @@ -214,7 +247,7 @@ void PageConfiguration::retranslateUi() m_cmbboxLanguage->addItem( tr("Brazilian Portugal"), QVariant("pt_BR") ); m_cmbboxLanguage->addItem( tr("Russian"), QVariant("ru_RU") ); m_cmbboxLanguage->addItem( tr("Ukraine"), QVariant("uk_UA") ); - +*/ m_labelTimezone->setText( tr("Timezone:") ); setupTimezones(); diff --git a/src/pageconfiguration.h b/src/pageconfiguration.h index 4fcbbeb..af6baa7 100644 --- a/src/pageconfiguration.h +++ b/src/pageconfiguration.h @@ -2,6 +2,7 @@ #include "installerpage.h" #include "tools.h" +#include "commons.h" class QComboBox; class QLineEdit; @@ -70,5 +71,7 @@ private: QLabel* m_labelClockType; QComboBox* m_cmbboxClockType; + + static InitializableMap m_langMap; }; diff --git a/src/pageinstall.cpp b/src/pageinstall.cpp index 36bcec1..40981d4 100644 --- a/src/pageinstall.cpp +++ b/src/pageinstall.cpp @@ -1,13 +1,14 @@ #include "pageinstall.h" -#include -#include - #include #include #include #include +#include + +#include + #include "calculateconfig.h" PageInstall::PageInstall() : @@ -21,6 +22,10 @@ void PageInstall::setupUi() { m_Output = new QTextEdit; m_Output->setReadOnly(true); + QFont font = m_Output->currentFont(); + font.setFamily("Droid Sans Mono"); + m_Output->setFont( font ); + m_Output->setLineWrapMode( QTextEdit::NoWrap ); m_LabelEta = new QLabel; m_Progress = new QProgressBar(0); @@ -66,19 +71,24 @@ void PageInstall::show() QStringList args = CalculateConfig::instance()->getInstallParameters(); qDebug() << "Start: cl-install "; - + foreach(const QString& arg, args) qDebug() << arg; - - m_clProc->setStandardErrorFile("/home/guest/cl-install-gui-err.log"); + + m_clProc->setStandardErrorFile("/var/log/calculate/cl-install-gui-err.log"); //m_clProc->setStandardOutputFile("/home/guest/cl-install-gui-out.log"); - + m_clProc->start( "cl-install -f --color never " + args.join(" ") ); + + m_Progress->setMinimum(0); + m_Progress->setMaximum(0); } } void PageInstall::onError(QProcess::ProcessError error) { + m_Progress->setMinimum(0); + m_Progress->setMaximum(100); qDebug() << "failed to run process 'calculate' error=" << error ; onFinish(-error); } @@ -90,6 +100,8 @@ void PageInstall::showStdOut() // debug QString str = m_clProc->readAllStandardOutput(); + qDebug() << "stdout : " << str.toLocal8Bit().toHex(); + QFile debug("/tmp/cl-install-gui_stdout.txt"); if ( debug.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Unbuffered | QIODevice::Text) ) debug.write(str.toLocal8Bit()); @@ -138,18 +150,23 @@ void PageInstall::onFinish(int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "install onFinish() " << exitCode; + m_Progress->setMinimum(0); + m_Progress->setMaximum(100); + emit changeNext(true); emit changePrev(true); if (exitCode == 0) { + m_Progress->setValue(100); + // instalation complete emit changePrev(false); } else { m_Output->insertPlainText("Error: "); - + QString str = m_clProc->readAllStandardOutput(); QString strErr = m_clProc->readAllStandardError(); diff --git a/src/pagemountpoints.cpp b/src/pagemountpoints.cpp index 7cf6352..d5712a7 100644 --- a/src/pagemountpoints.cpp +++ b/src/pagemountpoints.cpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include "calculateconfig.h" #include "mountpointdialog.h" diff --git a/src/pagepartitioning.cpp b/src/pagepartitioning.cpp index c0abc19..156c87d 100644 --- a/src/pagepartitioning.cpp +++ b/src/pagepartitioning.cpp @@ -5,11 +5,10 @@ #include #include #include - #include - #include -#include + +#include #include "calculateconfig.h" diff --git a/translations/cl-install-gui_ru.ts b/translations/cl-install-gui_ru.ts index 06b3373..38462e9 100644 --- a/translations/cl-install-gui_ru.ts +++ b/translations/cl-install-gui_ru.ts @@ -139,15 +139,15 @@ Video driver: - + Видеодрайвер: Use desktop effects - + Использовать эфекты рабочего стола: Expert settings - + Экспертные настройки: @@ -390,7 +390,7 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> Copy - + Копировать