NOISSUE fix up translation selection in settings and add OS/sys arch reporting

This commit is contained in:
Petr Mrázek
2017-01-01 19:59:46 +01:00
parent 722896d41f
commit a666dc0a1a
16 changed files with 131 additions and 82 deletions

View File

@ -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()));
}

View File

@ -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;
};

View File

@ -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>

View File

@ -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())
if (LanguageWizardPage::isRequired())
return true;
if (javaIsRequired())
return true;
if (analyticsIsRequired())
if (AnalyticsWizardPage::isRequired())
return true;
return false;
}

View File

@ -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();