DiagramDesigner/diagramCavas/source/util/selectorManager.cpp

94 lines
3.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "util/selectorManager.h"
#include "util/creatingSelector.h"
#include "util/movingSelector.h"
#include "util/subMovingSelector.h"
#include "util/linkMovingSelector.h"
#include "util/rotationSelector.h"
#include "util/scalingSelector.h"
#include "util/editingSelector.h"
#include "util/connectingSelector.h"
SelectorManager::SelectorManager(FixedPortsModel* model,QObject *parent)
: _graphModel(model)
,QObject(parent)
{
//创建所有的selector
BaseSelector* baseSelector = new BaseSelector(model,this);
connect(baseSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(baseSelector);
CreatingSelector* creatingSelector = new CreatingSelector(model,this);
connect(creatingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(creatingSelector);
MovingSelector* movingSelector = new MovingSelector(model,this);
connect(movingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(movingSelector);
SubMovingSelector* subMovSelector = new SubMovingSelector(model,this);
connect(subMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(subMovSelector);
LinkMovingSelector* linkMovSelector = new LinkMovingSelector(model,this);
connect(linkMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(linkMovSelector);
RotationSelector* rotationSelector = new RotationSelector(model,this);
connect(rotationSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(rotationSelector);
ScalingSelector* scalingSelector = new ScalingSelector(model,this);
connect(scalingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(scalingSelector);
EditingSelector* editingSelector = new EditingSelector(model,this);
connect(editingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(editingSelector);
ConnectingSelector* connectingSelector = new ConnectingSelector(model,this);
connect(connectingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(connectingSelector);
m_curSelector = ST_base;
}
SelectorManager::~SelectorManager()
{
//析构所有的selector因为是通过基类指针析构所以基类的析构函数必须为虚函数
// for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
// delete (*it);
}
BaseSelector* SelectorManager::getWorkingSelector()
{
for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
{
if((*it)->getSelectorType()==m_curSelector)
{
return (*it);
}
}
return nullptr;
}
void SelectorManager::setDrawGraphicsItem(modelStateInfo& info)
{
for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
{
if((*it)->getSelectorType()==ST_cerating)
{
CreatingSelector* creatingSelector = dynamic_cast<CreatingSelector*>(*it);
creatingSelector->setCreatingItem(info);
}
}
}
void SelectorManager::setName(const QString& str)
{
for(auto iter:m_vecSelectors)
{
iter->setSceneName(str);
}
}
void SelectorManager::onSignal_setWorkingSelector(SelectorType s)
{
setWorkingSelector(s);
}