Пример #1
0
void SettingsGeneral::loadLanguage()
{
    QStringList langList;
    QFile resLanguage(":/Resources/Language/LangList.ini");
    resLanguage.open(QIODevice::ReadOnly);
    QStringList resourceLanguages=QString(resLanguage.readAll().replace("\r","")).split("\n");
    for(int n=0;n<resourceLanguages.count();n++)if(!resourceLanguages.at(n).isEmpty())langList<<":/Resources/Language/"+resourceLanguages.at(n);
    QStringList folderLangList=QDir(appDataDir+"Language","*.lng").entryList();
    folderLangList.sort();
    for(int n=0;n<folderLangList.count();n++)langList<<appDataDir+"Language/"+folderLangList.at(n);
    int selectedLangId=-1;

    QString preferedLangFile=julyTranslator.lastFile();
    if(!QFile::exists(preferedLangFile))preferedLangFile.clear();
    if(preferedLangFile.isEmpty())preferedLangFile=baseValues.defaultLangFile;

    ui.languageComboBox->clear();
    for(int n=0;n<langList.count();n++)
    {
        JulyTranslator translateName;
        translateName.loadFromFile(langList.at(n));
        QString langName=translateName.translateString("LANGUAGE_NAME","");
        if(langName.isEmpty())continue;
        if(preferedLangFile==langList.at(n))selectedLangId=n;
        ui.languageComboBox->insertItem(ui.languageComboBox->count(),langName,langList.at(n));
    }
    if(selectedLangId>-1)ui.languageComboBox->setCurrentIndex(selectedLangId);
}
TranslationDialog::TranslationDialog(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	ui.buttonSaveAs->setEnabled(false);
	setWindowFlags(Qt::Window);
	setAttribute(Qt::WA_DeleteOnClose,true);
	//setFixedSize(size());

#ifdef GENERATE_LANGUAGE_FILE
	julyTranslator->loadMapFromUi(this);
	julyTranslator->saveToFile("LanguageDefault.lng");
#endif

#ifdef Q_OS_WIN
	if(QtWin::isCompositionEnabled())QtWin::extendFrameIntoClientArea(this);
#endif

	julyTranslator->translateUi(this);

	ui.deleteTranslationButton->setEnabled(!julyTranslator->lastFile().startsWith(":/Resource"));

	ui.languageName->setText(julyTr("LANGUAGE_NAME","Invalid"));
	authorAbout=new TranslationLine;
	ui.authorLayout->addWidget(authorAbout);
	authorAbout->setItemText(julyTr("LANGUAGE_AUTHOR","Invalid"));

	gridLayout=new QGridLayout;
	fonWidget.setLayout(gridLayout);
	ui.scrollArea->setWidget(&fonWidget);

	JulyTranslator defaultTranslation;
	defaultTranslation.loadFromFile(":/Resources/Language/English.lng");

	fillLayoutByMap(&(julyTranslator->labelMap),"Label_",&(defaultTranslation.labelMap));
	fillLayoutByMap(&(julyTranslator->groupBoxMap),"GroupBox_",&(defaultTranslation.groupBoxMap));
	fillLayoutByMap(&(julyTranslator->checkBoxMap),"CheckBox_",&(defaultTranslation.checkBoxMap));
	fillLayoutByMap(&(julyTranslator->buttonMap),"Button_",&(defaultTranslation.buttonMap));
	fillLayoutByMap(&(julyTranslator->spinBoxMap),"SpinBox_",&(defaultTranslation.spinBoxMap));
	fillLayoutByMap(&(julyTranslator->stringMap),"String_",&(defaultTranslation.stringMap));

	setTabOrder(ui.languageName,authorAbout);

	int currentRow=0;
	QWidget *lastWidget=authorAbout;
	for(int n=0;n<lineEdits.count();n++)
		if(lineEdits[n]->isChanged()==false)
		{
			TranslationLine *nextWidget=lineEdits[n];
			gridLayout->addWidget(nextWidget, currentRow++, 0);
			setTabOrder(lastWidget,nextWidget);
			lastWidget=nextWidget;
		}

	for(int n=0;n<lineEdits.count();n++)
		if(lineEdits[n]->isChanged()==true)
		{
			TranslationLine *nextWidget=lineEdits[n];
			gridLayout->addWidget(nextWidget, currentRow++, 0);
			setTabOrder(lastWidget,nextWidget);
			lastWidget=nextWidget;
		}
		setTabOrder(lastWidget,ui.searchLineEdit);

        resize(640,640);
        fixLayout();
	if(mainWindow_)mainWindow.ui.aboutTranslationButton->setEnabled(false);

    QTimer::singleShot(100,this,SLOT(fixLayout()));
}