Files
Sourcetrail/src/lib_gui/qt/view/graphElements/QtGraphNodeAccess.cpp
T

104 lines
2.3 KiB
C++

#include "qt/view/graphElements/QtGraphNodeAccess.h"
#include <QBrush>
#include <QFontMetrics>
#include <QPen>
#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<QtGraphNode>& 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();
}