Add function for assigning a settings category name with retranslation
The function is still experimental as there's likely a better way to implement this.
This commit is contained in:
parent
f69ffec06c
commit
0392b27b97
|
@ -155,6 +155,21 @@ void SettingsDialog::showCategory(OptionCategory *category)
|
||||||
updateTabWidget();
|
updateTabWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Allows to set the \a categories display name so that it is retranslated as needed.
|
||||||
|
* \remarks
|
||||||
|
* - The specified \a translator is supposed to return the display name to assign to \a category for the current
|
||||||
|
* locale. The \a translator is called immediately for the initial assignment and on language change events.
|
||||||
|
* - This function is experimental and might change or be removed completely in the next minor release.
|
||||||
|
*/
|
||||||
|
void SettingsDialog::translateCategory(OptionCategory *category, const std::function<QString ()> &translator)
|
||||||
|
{
|
||||||
|
category->setDisplayName(translator());
|
||||||
|
connect(this, &SettingsDialog::retranslationRequired, category, [category, translator = std::move(translator)] {
|
||||||
|
category->setDisplayName(translator());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Enables *single-category mode* to show only the specified \a
|
* \brief Enables *single-category mode* to show only the specified \a
|
||||||
* singleCategory.
|
* singleCategory.
|
||||||
|
@ -339,6 +354,7 @@ bool SettingsDialog::event(QEvent *event)
|
||||||
break;
|
break;
|
||||||
case QEvent::LanguageChange:
|
case QEvent::LanguageChange:
|
||||||
m_ui->retranslateUi(this);
|
m_ui->retranslateUi(this);
|
||||||
|
emit retranslationRequired();
|
||||||
break;
|
break;
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ public:
|
||||||
OptionCategory *category(int categoryIndex) const;
|
OptionCategory *category(int categoryIndex) const;
|
||||||
OptionPage *page(int categoryIndex, int pageIndex) const;
|
OptionPage *page(int categoryIndex, int pageIndex) const;
|
||||||
void showCategory(OptionCategory *category);
|
void showCategory(OptionCategory *category);
|
||||||
|
void translateCategory(OptionCategory *category, const std::function<QString()> &translator);
|
||||||
void setSingleCategory(OptionCategory *singleCategory);
|
void setSingleCategory(OptionCategory *singleCategory);
|
||||||
QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const;
|
QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const;
|
||||||
void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner);
|
void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner);
|
||||||
|
@ -44,6 +45,7 @@ public Q_SLOTS:
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void applied();
|
void applied();
|
||||||
void resetted();
|
void resetted();
|
||||||
|
void retranslationRequired();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool event(QEvent *event) override;
|
bool event(QEvent *event) override;
|
||||||
|
|
Loading…
Reference in New Issue