* overview bundles imitate style of bundled node type * removed bundle for built-in types * show contents of overview bundle in vertical list layouted with new ListLayouter * nodes starting with the same letter are grouped with the letter displayed above * pressing the letter key will scroll to the group * also use this list layouting for namespace & package contents * renamed BucketGrid to BucketLayouter * moved used functions of GraphPostProcessor to GraphViewStyle and removed GraphPostProcessor fortune cookie message = Don't be afraid to take that big step
83 lines
1.7 KiB
C++
83 lines
1.7 KiB
C++
#include "qt/view/graphElements/QtGraphNodeBundle.h"
|
|
|
|
#include <QBrush>
|
|
#include <QPen>
|
|
|
|
#include "utility/messaging/type/MessageGraphNodeBundleSplit.h"
|
|
|
|
#include "component/view/GraphViewStyle.h"
|
|
#include "qt/graphics/QtCountCircleItem.h"
|
|
|
|
QtGraphNodeBundle::QtGraphNodeBundle(Id tokenId, size_t nodeCount, Node::NodeType type, std::string name)
|
|
: QtGraphNode()
|
|
, m_tokenId(tokenId)
|
|
, m_type(type)
|
|
{
|
|
this->setName(name);
|
|
|
|
m_circle = new QtCountCircleItem(this);
|
|
m_circle->setNumber(nodeCount);
|
|
|
|
this->setAcceptHoverEvents(true);
|
|
|
|
this->setToolTip("bundle");
|
|
}
|
|
|
|
QtGraphNodeBundle::~QtGraphNodeBundle()
|
|
{
|
|
}
|
|
|
|
bool QtGraphNodeBundle::isBundleNode() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
Id QtGraphNodeBundle::getTokenId() const
|
|
{
|
|
return m_tokenId;
|
|
}
|
|
|
|
void QtGraphNodeBundle::onClick()
|
|
{
|
|
MessageGraphNodeBundleSplit(
|
|
m_tokenId,
|
|
m_type != Node::NODE_UNDEFINED && getName() != "Anonymous Namespaces",
|
|
m_type != Node::NODE_UNDEFINED
|
|
).dispatch();
|
|
}
|
|
|
|
void QtGraphNodeBundle::updateStyle()
|
|
{
|
|
GraphViewStyle::NodeStyle style;
|
|
if (m_type != Node::NODE_UNDEFINED)
|
|
{
|
|
style = GraphViewStyle::getStyleForNodeType(m_type, true, false, m_isHovering, false, false);
|
|
}
|
|
else
|
|
{
|
|
style = GraphViewStyle::getStyleOfBundleNode(m_isHovering);
|
|
}
|
|
setStyle(style);
|
|
|
|
m_circle->setPosition(Vec2f(m_rect->rect().right() - 3, m_rect->rect().top() + 3));
|
|
|
|
GraphViewStyle::NodeStyle accessStyle = GraphViewStyle::getStyleOfCountCircle();
|
|
m_circle->setStyle(
|
|
accessStyle.color.fill.c_str(),
|
|
accessStyle.color.text.c_str(),
|
|
accessStyle.color.border.c_str(),
|
|
style.borderWidth
|
|
);
|
|
}
|
|
|
|
|
|
void QtGraphNodeBundle::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
|
|
{
|
|
focusIn();
|
|
}
|
|
|
|
void QtGraphNodeBundle::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
|
|
{
|
|
focusOut();
|
|
}
|