Implemented a simple logger

pull/136/head
pvdk 11 years ago
parent eb04fa85b7
commit 10d2ca82f7

@ -19,7 +19,6 @@ Wizard::ExistingInstallationPage::ExistingInstallationPage(MainWizard *wizard) :
installationsList->addItem(mEmptyItem);
mEmptyItem->setHidden(true);
connect(installationsList, SIGNAL(currentTextChanged(QString)),
this, SLOT(textChanged(QString)));

@ -80,6 +80,9 @@ void Wizard::InstallationPage::startInstallation()
connect(mUnshield, SIGNAL(textChanged(QString)),
logTextEdit, SLOT(appendPlainText(QString)), Qt::QueuedConnection);
connect(mUnshield, SIGNAL(textChanged(QString)),
mWizard, SLOT(addLogText(QString)), Qt::QueuedConnection);
connect(mUnshield, SIGNAL(progressChanged(int)),
installProgressBar, SLOT(setValue(int)), Qt::QueuedConnection);
@ -153,6 +156,8 @@ void Wizard::InstallationPage::showFileDialog(Wizard::Component component)
if (path.isEmpty()) {
logTextEdit->appendHtml(tr("<p><br/><span style=\"color:red;\"> \
<b>Error: The installation was aborted by the user</b></p>"));
mWizard->addLogText(QLatin1String("Error: The installation was aborted by the user"));
mWizard->mError = true;
emit completeChanged();
@ -185,6 +190,10 @@ void Wizard::InstallationPage::installationError(const QString &text, const QStr
logTextEdit->appendHtml(tr("<p><span style=\"color:red;\"> \
<b>%1</b></p>").arg(details));
mWizard->addLogText(QLatin1String("Error: ") + text);
mWizard->addLogText(details);
mWizard->mError = true;
QMessageBox msgBox;
msgBox.setWindowTitle(tr("An error occurred"));
msgBox.setIcon(QMessageBox::Critical);
@ -196,7 +205,7 @@ void Wizard::InstallationPage::installationError(const QString &text, const QStr
msgBox.setDetailedText(details);
msgBox.exec();
mWizard->mError = true;
emit completeChanged();
}

@ -4,6 +4,8 @@
#include <QDebug>
#include <QTime>
#include <QDateTime>
#include <QCloseEvent>
#include <QMessageBox>
#include <QTextCodec>
@ -40,11 +42,53 @@ Wizard::MainWizard::MainWizard(QWidget *parent) :
setDefaultProperty("ComponentListWidget", "mCheckedItems", "checkedItemsChanged");
setupLog();
setupGameSettings();
setupInstallations();
setupPages();
}
void Wizard::MainWizard::setupLog()
{
QString logPath(QString::fromUtf8(mCfgMgr.getLogPath().string().c_str()));
logPath.append(QLatin1String("wizard.log"));
QString message(tr("<html><head/><body><p><b>Could not open %1 for writing</b></p> \
<p>Please make sure you have the right permissions \
and try again.</p></body></html>"));
QFile *file = new QFile(logPath);
if (!file->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
QMessageBox msgBox;
msgBox.setWindowTitle(tr("Error opening Wizard log file"));
msgBox.setIcon(QMessageBox::Critical);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setText(message.arg(file->fileName()));
msgBox.exec();
return qApp->quit();
}
qDebug() << logPath;
mLog = new QTextStream(file);
mLog->setCodec(QTextCodec::codecForName("UTF-8"));
//addLogText(QLatin1String("test test 123 test"));
}
void Wizard::MainWizard::addLogText(const QString &text)
{
qDebug() << "AddLogText called! " << text;
if (!text.isEmpty()) {
qDebug() << "logging " << text;
*mLog << text << endl;
}
// file.close();
}
void Wizard::MainWizard::setupGameSettings()
{
QString userPath(QString::fromUtf8(mCfgMgr.getUserConfigPath().string().c_str()));

@ -46,8 +46,12 @@ namespace Wizard
bool mError;
public slots:
void addLogText(const QString &text);
private:
void setupLog();
void setupGameSettings();
void setupInstallations();
void setupPages();
@ -56,6 +60,8 @@ namespace Wizard
Config::GameSettings mGameSettings;
QTextStream *mLog;
private slots:
void accept();
void reject();

@ -153,37 +153,39 @@ void Wizard::UnshieldWorker::setIniCodec(QTextCodec *codec)
mIniCodec = codec;
}
void Wizard::UnshieldWorker::setupSettings()
bool Wizard::UnshieldWorker::setupSettings()
{
// Create Morrowind.ini settings map
if (getIniPath().isEmpty())
return;
return false;
QFile file(getIniPath());
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
emit error(tr("Failed to open Morrowind configuration file!"),
tr("Opening %1 failed: %2.").arg(getIniPath(), file.errorString()));
return;
return false;
}
QTextStream stream(&file);
stream.setCodec(mIniCodec);
mIniSettings.readFile(stream);
return true;
}
void Wizard::UnshieldWorker::writeSettings()
bool Wizard::UnshieldWorker::writeSettings()
{
if (getIniPath().isEmpty())
return;
return false;
QFile file(getIniPath());
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
emit error(tr("Failed to open Morrowind configuration file!"),
tr("Opening %1 failed: %2.").arg(getIniPath(), file.errorString()));
return;
return false;
}
QTextStream stream(&file);
@ -192,7 +194,10 @@ void Wizard::UnshieldWorker::writeSettings()
if (!mIniSettings.writeFile(getIniPath(), stream)) {
emit error(tr("Failed to write Morrowind configuration file!"),
tr("Writing to %1 failed: %2.").arg(getIniPath(), file.errorString()));
return false;
}
return true;
}
bool Wizard::UnshieldWorker::removeDirectory(const QString &dirName)
@ -383,7 +388,8 @@ void Wizard::UnshieldWorker::extract()
}
// Write the settings to the Morrowind config file
writeSettings();
if (!writeSettings())
return false;
// Remove the temporary directory
removeDirectory(getPath() + QDir::separator() + QLatin1String("extract-temp"));
@ -626,7 +632,9 @@ bool Wizard::UnshieldWorker::installComponent(Component component, const QString
// Setup Morrowind configuration
setIniPath(getPath() + QDir::separator() + QLatin1String("Morrowind.ini"));
setupSettings();
if (!setupSettings())
return false;
}
if (component == Wizard::Component_Tribunal)

@ -42,11 +42,11 @@ namespace Wizard
void setIniCodec(QTextCodec *codec);
void setupSettings();
bool setupSettings();
private:
void writeSettings();
bool writeSettings();
bool getInstallComponent(Component component);
@ -114,7 +114,6 @@ namespace Wizard
void requestFileDialog(Wizard::Component component);
void textChanged(const QString &text);
void logTextChanged(const QString &text);
void error(const QString &text, const QString &details);
void progressChanged(int progress);

Loading…
Cancel
Save