From 7cbb28ca532d652a942e4917a2799c387778ea61 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 30 Mar 2024 17:45:23 +0100 Subject: [PATCH] Gui: fix computing status value and use enum to avoid magic numbers --- src/Gui/Tree.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 0f74fbd49e..9b7feee726 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -5127,6 +5127,17 @@ void DocumentObjectItem::testStatus(bool resetStatus) testStatus(resetStatus, icon, icon2); } +namespace { +enum Status { + Visible = 1 << 0, + Recompute = 1 << 1, + Error = 1 << 2, + Hidden = 1 << 3, + External = 1 << 4, + Freezed = 1 << 5 +}; +} + void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2) { App::DocumentObject* pObject = object()->getObject(); @@ -5166,8 +5177,8 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 bool freezed = pObject->isFreezed(); int currentStatus = - ((freezed ? 0 : 1) << 5) | - ((external ? 0 : 1) << 4) | + ((freezed ? 1 : 0) << 5) | + ((external ? 1 : 0) << 4) | ((object()->showInTree() ? 0 : 1) << 3) | ((pObject->isError() ? 1 : 0) << 2) | ((pObject->isTouched() || pObject->mustExecute() == 1 ? 1 : 0) << 1) | @@ -5183,7 +5194,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 previousStatus = currentStatus; QIcon::Mode mode = QIcon::Normal; - if (isVisibilityIconEnabled() || (currentStatus & 1)) { // visible + if (isVisibilityIconEnabled() || (currentStatus & Status::Visible)) { // Note: By default the foreground, i.e. text color is invalid // to make use of the default color of the tree widget's palette. // If we temporarily set this color to dark and reset to an invalid @@ -5210,7 +5221,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 if (icon.isNull()) { Timing(getIcon); QPixmap px; - if (currentStatus & 4) { + if (currentStatus & Status::Error) { static QPixmap pxError; if (pxError.isNull()) { // object is in error state @@ -5218,7 +5229,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 } px = pxError; } - else if (currentStatus & 2) { + else if (currentStatus & Status::Recompute) { static QPixmap pxRecompute; if (pxRecompute.isNull()) { // object must be recomputed @@ -5252,7 +5263,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 pxOn = icon_org.pixmap(w, w, mode, QIcon::On); } - if (currentStatus & 8) {// hidden item + if (currentStatus & Status::Hidden) { static QPixmap pxHidden; if (pxHidden.isNull()) { pxHidden = Gui::BitmapFactory().pixmapFromSvg("TreeItemVisible", QSize(10, 10)); @@ -5261,7 +5272,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 pxOn = BitmapFactory().merge(pxOn, pxHidden, BitmapFactoryInst::TopLeft); } - if (external) {// external item + if (currentStatus & Status::External) { static QPixmap pxExternal; if (pxExternal.isNull()) { pxExternal = Gui::BitmapFactory().pixmapFromSvg("LinkOverlay", @@ -5271,7 +5282,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 pxOn = BitmapFactory().merge(pxOn, pxExternal, BitmapFactoryInst::BottomRight); } - if (freezed) { + if (currentStatus & Status::Freezed) { static QPixmap pxFreeze; if (pxFreeze.isNull()) { // object is in freezed state @@ -5306,7 +5317,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2 QPainter pt; pt.begin(&px); pt.setPen(Qt::NoPen); - pt.drawPixmap(0, 0, px_org.width(), px_org.height(), (currentStatus & 1) ? pxVisible : pxInvisible); + pt.drawPixmap(0, 0, px_org.width(), px_org.height(), (currentStatus & Status::Visible) ? pxVisible : pxInvisible); pt.drawPixmap(px_org.width(), 0, px_org.width(), px_org.height(), px_org); pt.end();