You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.0 KiB
C++
137 lines
4.0 KiB
C++
#include "coptionsdialog.h"
|
|
#include "ui_coptionsdialog.h"
|
|
|
|
#include "common.h"
|
|
|
|
#include <QStringList>
|
|
#include <QDir>
|
|
#include <QLocale>
|
|
#include <QSettings>
|
|
#include <QPushButton>
|
|
|
|
|
|
cOptionsDialog::cOptionsDialog(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::cOptionsDialog),
|
|
m_lpGeneralItem(0)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
|
|
|
|
m_lpCategoryModel = new QStandardItemModel(0, 1);
|
|
ui->m_lpCategoryList->setModel(m_lpCategoryModel);
|
|
|
|
QIcon icon(":/category/category_core.png");
|
|
m_lpGeneralItem = new QStandardItem(icon, tr("General"));
|
|
m_lpCategoryModel->appendRow(m_lpGeneralItem);
|
|
|
|
ui->m_lpCategoryList->resizeColumnToContents(0);
|
|
|
|
QSettings settings;
|
|
QString szCur = settings.value("main/language", "%SYSTEM%").toString();
|
|
|
|
ui->m_lpLanguage->addItem("AUTO", QString("SYSTEM"));
|
|
if(!szCur.compare("%SYSTEM%", Qt::CaseInsensitive))
|
|
ui->m_lpLanguage->setCurrentIndex(0);
|
|
|
|
QString szLanguage = QLocale::languageToString(QLocale("en").language());
|
|
ui->m_lpLanguage->addItem(szLanguage, QString("en"));
|
|
if(!szCur.compare("en", Qt::CaseInsensitive))
|
|
ui->m_lpLanguage->setCurrentIndex(1);
|
|
|
|
QString szPath = localePath();
|
|
QStringList localeList = QDir(":/locale").entryList(QStringList() << "storyWriter*.qm");
|
|
|
|
for(int z = 0;z < localeList.count();z++)
|
|
{
|
|
QString szLocale = localeList[z];
|
|
szLocale.truncate(szLocale.lastIndexOf("."));
|
|
szLocale.remove(0, szLocale.indexOf('_') + 1);
|
|
szLanguage = QLocale::languageToString(QLocale(szLocale).language());
|
|
|
|
ui->m_lpLanguage->addItem(szLanguage, szLocale);
|
|
}
|
|
|
|
localeList = QDir(szPath).entryList(QStringList() << "storyWriter*.qm");
|
|
|
|
for(int z = 0;z < localeList.count();z++)
|
|
{
|
|
QString szLocale = localeList[z];
|
|
szLocale.truncate(szLocale.lastIndexOf("."));
|
|
szLocale.remove(0, szLocale.indexOf('_') + 1);
|
|
szLanguage = QLocale::languageToString(QLocale(szLocale).language());
|
|
|
|
if(ui->m_lpLanguage->findText(szLanguage) == -1)
|
|
ui->m_lpLanguage->addItem(szLanguage, szLocale);
|
|
}
|
|
|
|
ui->m_lpLanguage->model()->sort(0);
|
|
ui->m_lpLanguage->setCurrentText(szCur);
|
|
|
|
connect(ui->m_lpLanguage, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &cOptionsDialog::onLanguageIndexChanged);
|
|
connect(ui->m_lpButtonBox, QDialogButtonBox::clicked, this, &cOptionsDialog::onButtonClicked);
|
|
|
|
retranslateUI();
|
|
}
|
|
|
|
cOptionsDialog::~cOptionsDialog()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void cOptionsDialog::retranslateUI()
|
|
{
|
|
ui->retranslateUi(this);
|
|
|
|
m_lpGeneralItem->setText(tr("General"));
|
|
// setWindowTitle(windowTitle() + m_lpPart->name());
|
|
}
|
|
|
|
void cOptionsDialog::onLanguageIndexChanged(int /*index*/)
|
|
{
|
|
QString szLanguage = ui->m_lpLanguage->currentData().toString();
|
|
QSettings settings;
|
|
|
|
if(szLanguage == "SYSTEM")
|
|
szLanguage = "%SYSTEM%";
|
|
|
|
if(settings.value("main/language").toString().compare(szLanguage, Qt::CaseInsensitive))
|
|
{
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Apply)->setEnabled(true);
|
|
}
|
|
else
|
|
{
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
|
|
}
|
|
}
|
|
|
|
void cOptionsDialog::onButtonClicked(QAbstractButton* button)
|
|
{
|
|
QString szLanguage = ui->m_lpLanguage->currentData().toString();
|
|
QSettings settings;
|
|
|
|
if(szLanguage == "SYSTEM")
|
|
szLanguage = "%SYSTEM%";
|
|
|
|
settings.setValue("main/language", szLanguage);
|
|
|
|
if(button == ui->m_lpButtonBox->button(QDialogButtonBox::Ok))
|
|
{
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
|
|
onLanguageChanged();
|
|
ui->retranslateUi(this);
|
|
}
|
|
else if(button == ui->m_lpButtonBox->button(QDialogButtonBox::Apply))
|
|
{
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
|
ui->m_lpButtonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
|
|
onLanguageChanged();
|
|
ui->retranslateUi(this);
|
|
}
|
|
}
|