Sketcher: filter list strings are updated at language change. By @0penBrain

This commit is contained in:
Paddle
2022-11-21 11:58:13 +01:00
committed by Uwe
parent 378463de03
commit 7788ef185b
2 changed files with 69 additions and 41 deletions

View File

@@ -637,55 +637,48 @@ void ConstraintView::swapNamedOfSelectedItems()
ConstraintFilterList::ConstraintFilterList(QWidget* parent)
: QListWidget(parent)
{
{
QSignalBlocker block(this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "All"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Geometric"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Coincident"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Point on Object"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Vertical"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Horizontal"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Parallel"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Perpendicular"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Tangent"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Equality"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Symmetric"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Block"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Datums"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Horizontal Distance"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Vertical Distance"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Distance"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Radius"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Weight"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Diameter"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Angle"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", " - Snell's Law"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Named"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Reference"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Internal Alignment"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Selected constraints"), this);
new QListWidgetItem(QApplication::translate("ConstraintFilterList", "Associated constraints"), this);
for (auto const& filterItem : filterItems) {
Q_UNUSED(filterItem);
auto it = new QListWidgetItem();
normalFilterCount = count() - 2; //All filter but selected and associated
selectedFilterIndex = normalFilterCount;
associatedFilterIndex = normalFilterCount + 1;
for (int i = 0; i < count(); i++) {
QListWidgetItem* it = item(i);
it->setFlags(it->flags() | Qt::ItemIsUserCheckable);
if(i < normalFilterCount)
it->setCheckState(Qt::Checked);
else //associated and selected should not be checked by default.
it->setCheckState(Qt::Unchecked);
}
it->setFlags(it->flags() | Qt::ItemIsUserCheckable);
if(row(it) < normalFilterCount)
it->setCheckState(Qt::Checked);
else //associated and selected should not be checked by default.
it->setCheckState(Qt::Unchecked);
addItem(it);
}
languageChange();
normalFilterCount = count() - 2; //All filter but selected and associated
selectedFilterIndex = normalFilterCount;
associatedFilterIndex = normalFilterCount + 1;
}
ConstraintFilterList::~ConstraintFilterList()
{
}
void ConstraintFilterList::changeEvent(QEvent* e)
{
if (e->type() == QEvent::LanguageChange)
languageChange();
QWidget::changeEvent(e);
}
void ConstraintFilterList::languageChange()
{
assert(static_cast<int>(filterItems.size()) == count());
int i = 0;
for (auto const& filterItem : filterItems) {
auto text = QStringLiteral(" ").repeated(filterItem.second - 1) +
(filterItem.second > 0 ? QStringLiteral("- ") : QStringLiteral("")) +
tr(filterItem.first);
item(i++)->setText(text);
}
}
FilterValueBitset ConstraintFilterList::getMultiFilter()
{
FilterValueBitset tmpBitset;

View File

@@ -88,6 +88,41 @@ public:
int normalFilterCount; //All filters but selected and associated
int selectedFilterIndex;
int associatedFilterIndex;
protected:
void changeEvent(QEvent* e) override;
virtual void languageChange();
private:
using filterItemRepr = std::pair<const char*, const int>; // {filter item text, filter item level}
inline static const std::vector<filterItemRepr> filterItems = {
{QT_TR_NOOP("All"),0},
{QT_TR_NOOP("Geometric"),0},
{QT_TR_NOOP("Coincident"),1},
{QT_TR_NOOP("Point on Object"),1},
{QT_TR_NOOP("Vertical"),1},
{QT_TR_NOOP("Horizontal"),1},
{QT_TR_NOOP("Parallel"),1},
{QT_TR_NOOP("Perpendicular"),1},
{QT_TR_NOOP("Tangent"),1},
{QT_TR_NOOP("Equality"),1},
{QT_TR_NOOP("Symmetric"),1},
{QT_TR_NOOP("Block"),1},
{QT_TR_NOOP("Datums"),0},
{QT_TR_NOOP("Horizontal Distance"),1},
{QT_TR_NOOP("Vertical Distance"),1},
{QT_TR_NOOP("Distance"),1},
{QT_TR_NOOP("Radius"),1},
{QT_TR_NOOP("Weight"),1},
{QT_TR_NOOP("Diameter"),1},
{QT_TR_NOOP("Angle"),1},
{QT_TR_NOOP("Snell's Law"),1},
{QT_TR_NOOP("Named"),0},
{QT_TR_NOOP("Reference"),0},
{QT_TR_NOOP("Internal Alignment"),0},
{QT_TR_NOOP("Selected constraints"),0},
{QT_TR_NOOP("Associated constraints"),0},
};
};
class TaskSketcherConstraints : public Gui::TaskView::TaskBox, public Gui::SelectionObserver