104 lines
2.3 KiB
C++
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();
|
|
}
|