#include "qt/view/graphElements/QtGraphNodeAccess.h" #include #include #include #include "utility/ResourcePaths.h" #include "component/view/GraphViewStyle.h" #include "qt/graphics/QtRoundedRectItem.h" #include "qt/utility/QtDeviceScaledPixmap.h" #include "qt/utility/utilityQt.h" QtGraphNodeAccess::QtGraphNodeAccess(AccessKind accessKind) : QtGraphNode() , m_accessKind(accessKind) , m_accessIcon(nullptr) , m_accessIconSize(16) { std::string accessString = TokenComponentAccess::getAccessString(m_accessKind); this->setName(accessString); m_text->hide(); std::string iconFileName; switch (m_accessKind) { case ACCESS_PUBLIC: iconFileName = "public"; break; case ACCESS_PROTECTED: iconFileName = "protected"; break; case ACCESS_PRIVATE: iconFileName = "private"; break; case ACCESS_DEFAULT: iconFileName = "default"; break; case ACCESS_TEMPLATE_PARAMETER: case ACCESS_TYPE_PARAMETER: iconFileName = "template"; break; default: break; } if (iconFileName.size() > 0) { QtDeviceScaledPixmap pixmap( QString::fromStdString(ResourcePaths::getGuiPath() + "graph_view/images/" + iconFileName + ".png")); pixmap.scaleToHeight(m_accessIconSize); m_accessIcon = new QGraphicsPixmapItem(pixmap.pixmap(), this); m_accessIcon->setTransformationMode(Qt::SmoothTransformation); } } QtGraphNodeAccess::~QtGraphNodeAccess() { } AccessKind QtGraphNodeAccess::getAccessKind() const { return m_accessKind; } bool QtGraphNodeAccess::isAccessNode() const { return true; } void QtGraphNodeAccess::addSubNode(const std::shared_ptr& node) { QtGraphNode::addSubNode(node); m_text->show(); } void QtGraphNodeAccess::updateStyle() { GraphViewStyle::NodeStyle style = GraphViewStyle::getStyleOfAccessNode(); setStyle(style); QFont font = m_text->font(); font.setCapitalization(QFont::AllUppercase); m_text->setFont(font); if (m_accessIcon) { m_text->setPos(style.textOffset.x + m_accessIconSize + 3, style.textOffset.y + m_accessIconSize - style.fontSize); m_accessIcon->setPos(style.textOffset.x, style.textOffset.y); m_accessIcon->setPixmap(utility::colorizePixmap(m_accessIcon->pixmap(), style.color.icon.c_str())); } else { m_text->setPos(style.textOffset.x, style.textOffset.y + m_accessIconSize + 2 - style.fontSize); } } void QtGraphNodeAccess::hideLabel() { m_text->hide(); }