From 7132b9b0c590574e4d603c605a7307ba23c1151c Mon Sep 17 00:00:00 2001
From: pvdk <pvdkloet@gmail.com>
Date: Fri, 13 Dec 2013 23:48:55 +0100
Subject: [PATCH] Implement default installation path support for all platforms

---
 apps/wizard/componentselectionpage.cpp |  6 +++---
 apps/wizard/installationtargetpage.cpp | 28 +++++++++++++++++++++++++-
 apps/wizard/languageselectionpage.cpp  |  2 ++
 apps/wizard/mainwizard.cpp             |  5 -----
 4 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/apps/wizard/componentselectionpage.cpp b/apps/wizard/componentselectionpage.cpp
index 1ec1380b13..046f340765 100644
--- a/apps/wizard/componentselectionpage.cpp
+++ b/apps/wizard/componentselectionpage.cpp
@@ -52,9 +52,9 @@ void Wizard::ComponentSelectionPage::initializePage()
 
     QString path = field("installation.path").toString();
 
-    QListWidgetItem *morrowindItem = new QListWidgetItem(QString("Morrowind"));
-    QListWidgetItem *tribunalItem = new QListWidgetItem(QString("Tribunal"));
-    QListWidgetItem *bloodmoonItem = new QListWidgetItem(QString("Bloodmoon"));
+    QListWidgetItem *morrowindItem = new QListWidgetItem(QLatin1String("Morrowind"));
+    QListWidgetItem *tribunalItem = new QListWidgetItem(QLatin1String("Tribunal"));
+    QListWidgetItem *bloodmoonItem = new QListWidgetItem(QLatin1String("Bloodmoon"));
 
     if (field("installation.new").toBool() == true)
     {
diff --git a/apps/wizard/installationtargetpage.cpp b/apps/wizard/installationtargetpage.cpp
index 43941f0dca..0952abdcb5 100644
--- a/apps/wizard/installationtargetpage.cpp
+++ b/apps/wizard/installationtargetpage.cpp
@@ -2,6 +2,7 @@
 
 #include <QDebug>
 #include <QFileDialog>
+#include <QDesktopServices>
 
 #include "mainwizard.hpp"
 
@@ -11,12 +12,37 @@ Wizard::InstallationTargetPage::InstallationTargetPage(MainWizard *wizard) :
 {
     setupUi(this);
 
-    registerField("installation.path*", targetLineEdit);
+    registerField(QLatin1String("installation.path*"), targetLineEdit);
 }
 
 void Wizard::InstallationTargetPage::initializePage()
 {
+#ifdef Q_OS_WIN
+    QString path = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
+#endif
 
+#ifdef Q_OS_MAC
+    QString path = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
+#endif
+
+#if defined(Q_OS_LINUX) || defined(Q_OS_UNIX)
+    QString path = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
+
+    if (path.isEmpty())
+        path = QDir::homePath() + QLatin1String("/.local/share");
+#endif
+
+    path.append(QLatin1String("/openmw/data"));
+
+    if (!QFile::exists(path)) {
+        QDir dir;
+        dir.mkpath(path);
+    }
+
+    QDir dir(path);
+    targetLineEdit->setText(QDir::toNativeSeparators(dir.absolutePath()));
+
+    qDebug() << path;
 }
 
 void Wizard::InstallationTargetPage::on_browseButton_clicked()
diff --git a/apps/wizard/languageselectionpage.cpp b/apps/wizard/languageselectionpage.cpp
index dc64f1ae1b..903ab175f4 100644
--- a/apps/wizard/languageselectionpage.cpp
+++ b/apps/wizard/languageselectionpage.cpp
@@ -7,6 +7,8 @@ Wizard::LanguageSelectionPage::LanguageSelectionPage(MainWizard *wizard) :
     mWizard(wizard)
 {
     setupUi(this);
+
+    registerField(QLatin1String("installation.language"), languagesComboBox);
 }
 
 int Wizard::LanguageSelectionPage::nextId() const
diff --git a/apps/wizard/mainwizard.cpp b/apps/wizard/mainwizard.cpp
index 77f17499ef..e6cb140d08 100644
--- a/apps/wizard/mainwizard.cpp
+++ b/apps/wizard/mainwizard.cpp
@@ -26,11 +26,6 @@ Wizard::MainWizard::MainWizard(QWidget *parent) :
     setWindowTitle(tr("OpenMW Wizard"));
     setupInstallations();
     setupPages();
-
-    QDir dir("/home/pvdk/data");
-    QFileInfo info(dir.absoluteFilePath("../Morrowind.ini"));
-
-    qDebug() << "exists? " << info.exists();
 }
 
 void Wizard::MainWizard::setupInstallations()