summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--api/logic/CMakeLists.txt2
-rw-r--r--api/logic/java/launch/CheckJava.cpp20
-rw-r--r--api/logic/java/launch/CheckJava.h1
-rw-r--r--application/pages/global/MultiMCPage.cpp39
-rw-r--r--application/pages/global/MultiMCPage.h5
-rw-r--r--application/pages/global/MultiMCPage.ui4
-rw-r--r--application/setupwizard/SetupWizard.cpp93
-rw-r--r--application/setupwizard/SetupWizard.h3
-rw-r--r--libraries/ganalytics/CMakeLists.txt18
-rw-r--r--libraries/systeminfo/CMakeLists.txt27
-rw-r--r--libraries/systeminfo/include/sys.h (renamed from libraries/ganalytics/include/sys.h)0
-rw-r--r--libraries/systeminfo/src/sys_apple.cpp (renamed from libraries/ganalytics/src/sys_apple.cpp)0
-rw-r--r--libraries/systeminfo/src/sys_test.cpp (renamed from libraries/ganalytics/src/sys_test.cpp)0
-rw-r--r--libraries/systeminfo/src/sys_unix.cpp (renamed from libraries/ganalytics/src/sys_unix.cpp)0
-rw-r--r--libraries/systeminfo/src/sys_win32.cpp (renamed from libraries/ganalytics/src/sys_win32.cpp)0
16 files changed, 131 insertions, 82 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 69827ee1..d3dcac78 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -93,6 +93,7 @@ set(NBT_NAME MultiMC_nbt++)
add_subdirectory(libraries/libnbtplusplus)
add_subdirectory(libraries/ganalytics) # google analytics library
+add_subdirectory(libraries/systeminfo) # system information library
add_subdirectory(libraries/hoedown) # markdown parser
add_subdirectory(libraries/launcher) # java based launcher part for Minecraft
add_subdirectory(libraries/javacheck) # java compatibility checker
diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt
index ffecb073..bcf4b65a 100644
--- a/api/logic/CMakeLists.txt
+++ b/api/logic/CMakeLists.txt
@@ -490,7 +490,7 @@ set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISI
generate_export_header(MultiMC_logic)
# Link
-target_link_libraries(MultiMC_logic xz-embedded unpack200 ${QUAZIP_LIBRARIES} ${NBT_NAME} ${ZLIB_LIBRARIES})
+target_link_libraries(MultiMC_logic xz-embedded unpack200 systeminfo ${QUAZIP_LIBRARIES} ${NBT_NAME} ${ZLIB_LIBRARIES})
qt5_use_modules(MultiMC_logic Core Xml Network Concurrent)
add_dependencies(MultiMC_logic QuaZIP)
diff --git a/api/logic/java/launch/CheckJava.cpp b/api/logic/java/launch/CheckJava.cpp
index 41bb6398..717fad49 100644
--- a/api/logic/java/launch/CheckJava.cpp
+++ b/api/logic/java/launch/CheckJava.cpp
@@ -18,6 +18,7 @@
#include <FileSystem.h>
#include <QStandardPaths>
#include <QFileInfo>
+#include <sys.h>
void CheckJava::executeTask()
{
@@ -83,6 +84,7 @@ void CheckJava::checkJavaFinished(JavaCheckResult result)
emit logLine(tr("Could not start java:"), MessageLevel::Error);
emit logLines(result.errorLog.split('\n'), MessageLevel::Error);
emit logLine("\nCheck your MultiMC Java settings.", MessageLevel::MultiMC);
+ printSystemInfo(false, false);
emitFailed(tr("Could not start java!"));
}
else
@@ -99,4 +101,22 @@ void CheckJava::checkJavaFinished(JavaCheckResult result)
void CheckJava::printJavaInfo(const QString& version, const QString& architecture)
{
emit logLine(tr("Java is version %1, using %2-bit architecture.\n\n").arg(version, architecture), MessageLevel::MultiMC);
+ printSystemInfo(true, architecture == "64");
+}
+
+void CheckJava::printSystemInfo(bool javaIsKnown, bool javaIs64bit)
+{
+ auto cpu64 = Sys::isCPU64bit();
+ auto system64 = Sys::isSystem64bit();
+ if(cpu64 != system64)
+ {
+ emit logLine(tr("Your CPU architecture is not matching your system architecture. You might want to install a 64bit Operating System.\n\n"), MessageLevel::Error);
+ }
+ if(javaIsKnown)
+ {
+ if(javaIs64bit != system64)
+ {
+ emit logLine(tr("Your Java architecture is not matching your system architecture. You might want to install a 64bit Java version.\n\n"), MessageLevel::Error);
+ }
+ }
}
diff --git a/api/logic/java/launch/CheckJava.h b/api/logic/java/launch/CheckJava.h
index 7126f4c4..9e16cbd2 100644
--- a/api/logic/java/launch/CheckJava.h
+++ b/api/logic/java/launch/CheckJava.h
@@ -36,6 +36,7 @@ private slots:
private:
void printJavaInfo(const QString & version, const QString & architecture);
+ void printSystemInfo(bool javaIsKnown, bool javaIs64bit);
private:
QString m_javaPath;
diff --git a/application/pages/global/MultiMCPage.cpp b/application/pages/global/MultiMCPage.cpp
index 11129d86..b2ef325d 100644
--- a/application/pages/global/MultiMCPage.cpp
+++ b/application/pages/global/MultiMCPage.cpp
@@ -55,6 +55,7 @@ MultiMCPage::MultiMCPage(QWidget *parent) : QWidget(parent), ui(new Ui::MultiMCP
defaultFormat = new QTextCharFormat(ui->fontPreview->currentCharFormat());
+ m_languageModel = MMC->translations();
loadSettings();
if(BuildConfig.UPDATER_ENABLED)
@@ -82,6 +83,7 @@ MultiMCPage::MultiMCPage(QWidget *parent) : QWidget(parent), ui(new Ui::MultiMCP
}
connect(ui->fontSizeBox, SIGNAL(valueChanged(int)), SLOT(refreshFontPreview()));
connect(ui->consoleFont, SIGNAL(currentFontChanged(QFont)), SLOT(refreshFontPreview()));
+ connect(ui->languageBox, SIGNAL(currentIndexChanged(int)), SLOT(languageIndexChanged(int)));
}
MultiMCPage::~MultiMCPage()
@@ -190,6 +192,19 @@ void MultiMCPage::on_lwjglDirBrowseBtn_clicked()
}
}
+void MultiMCPage::languageIndexChanged(int index)
+{
+ auto languageCode = ui->languageBox->itemData(ui->languageBox->currentIndex()).toString();
+ if(languageCode.isEmpty())
+ {
+ qWarning() << "Unknown language at index" << index;
+ return;
+ }
+ auto translations = MMC->translations();
+ translations->selectLanguage(languageCode);
+ translations->updateLanguage(languageCode);
+}
+
void MultiMCPage::refreshUpdateChannelList()
{
// Stop listening for selection changes. It's going to change a lot while we update it and
@@ -363,29 +378,7 @@ void MultiMCPage::loadSettings()
auto s = MMC->settings();
// Language
{
- using LanguageItem = std::pair<QString, QString>;
- std::vector<LanguageItem> items;
-
- QLocale english("en");
- items.push_back(std::make_pair(english.nativeLanguageName(), "en"));
- for(QString lang: QDir("translations").entryList(QStringList() << "*.qm", QDir::Files))
- {
- lang.remove(".qm");
- lang.remove("mmc_");
- QLocale locale(lang);
- QString fullLangName = locale.nativeLanguageName();
- qDebug() << fullLangName << lang;
- items.push_back(std::make_pair(fullLangName, lang));
- }
- std::sort(items.begin(), items.end(), [](const LanguageItem & a, const LanguageItem & b)
- {
- return a.first.localeAwareCompare(b.first) < 0;
- });
- ui->languageBox->clear();
- for(auto & item: items)
- {
- ui->languageBox->addItem(item.first, item.second);
- }
+ ui->languageBox->setModel(m_languageModel.get());
ui->languageBox->setCurrentIndex(ui->languageBox->findData(s->get("Language").toString()));
}
diff --git a/application/pages/global/MultiMCPage.h b/application/pages/global/MultiMCPage.h
index 5d4f048e..ed280171 100644
--- a/application/pages/global/MultiMCPage.h
+++ b/application/pages/global/MultiMCPage.h
@@ -22,6 +22,7 @@
#include "pages/BasePage.h"
#include <MultiMC.h>
#include "ColorCache.h"
+#include <translations/TranslationsModel.h>
class QTextCharFormat;
class SettingsObject;
@@ -71,6 +72,8 @@ slots:
void on_lwjglDirBrowseBtn_clicked();
void on_iconsDirBrowseBtn_clicked();
+ void languageIndexChanged(int index);
+
/*!
* Updates the list of update channels in the combo box.
*/
@@ -100,4 +103,6 @@ private:
QTextCharFormat *defaultFormat;
std::unique_ptr<LogColorCache> m_colors;
+
+ std::shared_ptr<TranslationsModel> m_languageModel;
};
diff --git a/application/pages/global/MultiMCPage.ui b/application/pages/global/MultiMCPage.ui
index f9d74a38..bf2b4da7 100644
--- a/application/pages/global/MultiMCPage.ui
+++ b/application/pages/global/MultiMCPage.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>458</width>
+ <width>467</width>
<height>614</height>
</rect>
</property>
@@ -320,7 +320,7 @@
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
- <string>Language (needs restart):</string>
+ <string>Language:</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
diff --git a/application/setupwizard/SetupWizard.cpp b/application/setupwizard/SetupWizard.cpp
index af6b8c8e..3c87759f 100644
--- a/application/setupwizard/SetupWizard.cpp
+++ b/application/setupwizard/SetupWizard.cpp
@@ -67,7 +67,27 @@ public:
languageView->setCurrentIndex(index);
connect(languageView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &LanguageWizardPage::languageRowChanged);
}
- virtual ~LanguageWizardPage() {};
+
+ virtual ~LanguageWizardPage()
+ {
+ };
+
+ bool validatePage() override
+ {
+ auto settings = MMC->settings();
+ auto translations = MMC->translations();
+ QString key = translations->data(languageView->currentIndex(), Qt::UserRole).toString();
+ settings->set("Language", key);
+ return true;
+ }
+
+ static bool isRequired()
+ {
+ auto settings = MMC->settings();
+ if (settings->get("Language").toString().isEmpty())
+ return true;
+ return false;
+ }
protected:
void retranslate() override
@@ -116,7 +136,35 @@ public:
verticalLayout_3->addWidget(checkBox);
retranslate();
}
- virtual ~AnalyticsWizardPage() {};
+
+ virtual ~AnalyticsWizardPage()
+ {
+ };
+
+ bool validatePage() override
+ {
+ auto settings = MMC->settings();
+ auto analytics = MMC->analytics();
+ auto status = checkBox->isChecked();
+ settings->set("AnalyticsSeen", analytics->version());
+ settings->set("Analytics", status);
+ return true;
+ }
+
+ static bool isRequired()
+ {
+ auto settings = MMC->settings();
+ auto analytics = MMC->analytics();
+ if(!settings->get("Analytics").toBool())
+ {
+ return false;
+ }
+ if(settings->get("AnalyticsSeen").toInt() < analytics->version())
+ {
+ return true;
+ }
+ return false;
+ }
protected:
void retranslate() override
@@ -149,20 +197,12 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent)
{
setObjectName(QStringLiteral("SetupWizard"));
resize(615, 659);
- setOptions(QWizard::NoCancelButton);
- if (languageIsRequired())
+ setOptions(QWizard::NoCancelButton | QWizard::IndependentPages);
+ if (LanguageWizardPage::isRequired())
{
setPage(Page::Language, new LanguageWizardPage(this));
}
- if(javaIsRequired())
- {
- // set up java selection
- }
- else
- {
- removePage(Page::Java);
- }
- if(analyticsIsRequired())
+ if(AnalyticsWizardPage::isRequired())
{
setPage(Page::Analytics, new AnalyticsWizardPage(this));
}
@@ -189,14 +229,7 @@ SetupWizard::~SetupWizard()
{
}
-bool SetupWizard::languageIsRequired()
-{
- auto settings = MMC->settings();
- if (settings->get("Language").toString().isEmpty())
- return true;
- return false;
-}
-
+/*
bool SetupWizard::javaIsRequired()
{
QString currentHostName = QHostInfo::localHostName();
@@ -214,25 +247,13 @@ bool SetupWizard::javaIsRequired()
}
return false;
}
-
-bool SetupWizard::analyticsIsRequired()
-{
- auto settings = MMC->settings();
- auto analytics = MMC->analytics();
- if(settings->get("AnalyticsSeen").toInt() < analytics->version())
- {
- return true;
- }
- return false;
-}
+*/
bool SetupWizard::isRequired()
{
- if (languageIsRequired())
- return true;
- if (javaIsRequired())
+ if (LanguageWizardPage::isRequired())
return true;
- if (analyticsIsRequired())
+ if (AnalyticsWizardPage::isRequired())
return true;
return false;
}
diff --git a/application/setupwizard/SetupWizard.h b/application/setupwizard/SetupWizard.h
index e5c8ad77..adf254c7 100644
--- a/application/setupwizard/SetupWizard.h
+++ b/application/setupwizard/SetupWizard.h
@@ -34,9 +34,6 @@ public: /* con/destructors */
public: /* methods */
static bool isRequired();
- static bool javaIsRequired();
- static bool languageIsRequired();
- static bool analyticsIsRequired();
private: /* methods */
void retranslate();
diff --git a/libraries/ganalytics/CMakeLists.txt b/libraries/ganalytics/CMakeLists.txt
index 9d218c6d..26b1b47c 100644
--- a/libraries/ganalytics/CMakeLists.txt
+++ b/libraries/ganalytics/CMakeLists.txt
@@ -8,26 +8,10 @@ set(ganalytics_SOURCES
src/ganalytics.cpp
src/ganalytics_worker.cpp
src/ganalytics_worker.h
-include/sys.h
include/ganalytics.h
)
-if (WIN32)
- list(APPEND ganalytics_SOURCES src/sys_win32.cpp)
-elseif (UNIX)
- if(APPLE)
- list(APPEND ganalytics_SOURCES src/sys_apple.cpp)
- else()
- list(APPEND ganalytics_SOURCES src/sys_unix.cpp)
- endif()
-endif()
-
add_library(ganalytics STATIC ${ganalytics_SOURCES})
qt5_use_modules(ganalytics Core Gui Network)
target_include_directories(ganalytics PUBLIC include)
-
-include (UnitTest)
-add_unit_test(sys
- SOURCES src/sys_test.cpp
- LIBS ganalytics
-)
+target_link_libraries(ganalytics systeminfo)
diff --git a/libraries/systeminfo/CMakeLists.txt b/libraries/systeminfo/CMakeLists.txt
new file mode 100644
index 00000000..77cba173
--- /dev/null
+++ b/libraries/systeminfo/CMakeLists.txt
@@ -0,0 +1,27 @@
+project(systeminfo)
+
+find_package(Qt5Core)
+
+set(systeminfo_SOURCES
+include/sys.h
+)
+
+if (WIN32)
+ list(APPEND systeminfo_SOURCES src/sys_win32.cpp)
+elseif (UNIX)
+ if(APPLE)
+ list(APPEND systeminfo_SOURCES src/sys_apple.cpp)
+ else()
+ list(APPEND systeminfo_SOURCES src/sys_unix.cpp)
+ endif()
+endif()
+
+add_library(systeminfo STATIC ${systeminfo_SOURCES})
+qt5_use_modules(systeminfo Core Gui Network)
+target_include_directories(systeminfo PUBLIC include)
+
+include (UnitTest)
+add_unit_test(sys
+ SOURCES src/sys_test.cpp
+ LIBS systeminfo
+)
diff --git a/libraries/ganalytics/include/sys.h b/libraries/systeminfo/include/sys.h
index 36f7d9cd..36f7d9cd 100644
--- a/libraries/ganalytics/include/sys.h
+++ b/libraries/systeminfo/include/sys.h
diff --git a/libraries/ganalytics/src/sys_apple.cpp b/libraries/systeminfo/src/sys_apple.cpp
index 49a61165..49a61165 100644
--- a/libraries/ganalytics/src/sys_apple.cpp
+++ b/libraries/systeminfo/src/sys_apple.cpp
diff --git a/libraries/ganalytics/src/sys_test.cpp b/libraries/systeminfo/src/sys_test.cpp
index 6221da45..6221da45 100644
--- a/libraries/ganalytics/src/sys_test.cpp
+++ b/libraries/systeminfo/src/sys_test.cpp
diff --git a/libraries/ganalytics/src/sys_unix.cpp b/libraries/systeminfo/src/sys_unix.cpp
index 866c9fdb..866c9fdb 100644
--- a/libraries/ganalytics/src/sys_unix.cpp
+++ b/libraries/systeminfo/src/sys_unix.cpp
diff --git a/libraries/ganalytics/src/sys_win32.cpp b/libraries/systeminfo/src/sys_win32.cpp
index 502b980d..502b980d 100644
--- a/libraries/ganalytics/src/sys_win32.cpp
+++ b/libraries/systeminfo/src/sys_win32.cpp