mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-25 15:34:13 +01:00
Make auto_num_locked/potential_isolating case-insensitive
Reviving the still-relevant part of #785, closed 2026-09-10 purely to clear a review backlog, not on merit. Investigated fresh against current master -- one of the original PR's three targets turned out to already be fixed independently: element_nomenclature_view's SQL predicate for exclude_from_bom already does "COALESCE(LOWER(TRIM(ei.exclude_from_bom)), '') NOT IN ('true', '1', 'yes', 'on')" (projectDataBase::createElementNomenclatureView()). auto_num_locked and potential_isolating had no equivalent: five call sites across terminal.cpp, terminalnumberingdialog.cpp and elementinfowidget.cpp compared the raw stored string against the literal "true" with QString::operator==, silently treating "True", "TRUE", a trailing space, or any value written by something other than this app's own checkbox as off -- with no error and no visible difference from the checkbox being genuinely unticked. Added QET::infoFlagIsTrue(), matching the same accepted spellings ("true"/"1"/"yes"/"on", case-insensitive, trimmed) the SQL predicate already uses, and switched all five call sites to it. Verified the exact comparison logic in isolation, outside any QET build: 15 cases including "True", "TRUE", padded whitespace, "1", "yes", "on", and their false counterparts -- all correctly discriminated. Qt 6.10.2, ctest 13/13. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,22 @@ namespace QET {
|
||||
bool orthogonalProjection(const QPointF &, const QLineF &, QPointF * = nullptr);
|
||||
bool attributeIsAnInteger(const QDomElement &, const QString& , int * = nullptr);
|
||||
bool attributeIsAReal(const QDomElement &, const QString& , qreal * = nullptr);
|
||||
/**
|
||||
Whether an elementInformations flag (auto_num_locked,
|
||||
potential_isolating, exclude_from_bom, ...) counts as "on".
|
||||
Case-insensitive and tolerant of surrounding whitespace, and
|
||||
accepts the same set of truthy spellings ("true", "1", "yes",
|
||||
"on") that element_nomenclature_view's SQL predicate for
|
||||
exclude_from_bom already does -- see
|
||||
projectDataBase::createElementNomenclatureView(). These flags
|
||||
are only ever written by this app's own checkboxes as literal
|
||||
"true"/"false" today, but a bare == "true" comparison silently
|
||||
treats anything else -- "True", "TRUE", a trailing space from
|
||||
a hand-edited file, a value some other tool wrote -- as off,
|
||||
with no error and no visible difference from the checkbox
|
||||
being genuinely unticked (discussion #785).
|
||||
*/
|
||||
bool infoFlagIsTrue(const QString &value);
|
||||
QString ElementsAndConductorsSentence(int elements=0,
|
||||
int conductors=0,
|
||||
int indi_texts=0,
|
||||
|
||||
Reference in New Issue
Block a user