You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/FITK_Kernel/FITKEasyParam/FITKParameter.cpp

202 lines
7.3 KiB
C++

#include "FITKParameter.h"
#include "FITKParamBool.h"
#include "FITKParamInt.h"
#include "FITKParamDouble.h"
#include "FITKParamDoubleList.h"
#include "FITKParamCombox.h"
#include "FITKParamString.h"
#include "FITKParamLabel.h"
#include "FITKParamRadioGroup.h"
#include "FITKParamBoolGroup.h"
namespace Core
{
FITKParameter::~FITKParameter()
{
}
void FITKParameter::copyPara(FITKParameter* data)
{
if (!data)return;
this->clear();
this->appendPara(data);
}
void FITKParameter::appendPara(FITKParameter* data)
{
if (!data)return;
for (int i = 0; i < data->getDataCount(); i++) {
FITKAbstractEasyParam* oldData = data->getDataByIndex(i);
if(oldData == nullptr)continue;
this->copyAppendPara(oldData);
}
}
QList<FITKAbstractEasyParam*> FITKParameter::getParameter()
{
QList<FITKAbstractEasyParam*> list;
for (int i = 0; i < this->getDataCount(); ++i)
{
list.append(getDataByIndex(i));
}
return list;
}
FITKParamInt* FITKParameter::createIntParameter(QString name, int value, int upperLimit, int lowerLimit)
{
FITKParamInt* propInt = new FITKParamInt;
propInt->setDataObjectName(name);
propInt->setValue(value);
int range[2]{ lowerLimit, upperLimit };
propInt->setRange(range);
appendDataObj(propInt);
return propInt;
}
FITKParamDouble* FITKParameter::createDoubleParameter(QString name, double value, double upperLimit, double lowerLimit)
{
FITKParamDouble* propDouble = new FITKParamDouble;
propDouble->setDataObjectName(name);
propDouble->setValue(value);
double range[2]{ lowerLimit, upperLimit };
propDouble->setRange(range);
appendDataObj(propDouble);
return propDouble;
}
FITKParamDoubleList* FITKParameter::createDoubleListParameter(QString name, QList<double> value, double upperLimit, double lowerLimit)
{
FITKParamDoubleList* propDoubleList = new FITKParamDoubleList;
propDoubleList->setDataObjectName(name);
propDoubleList->setValue(value);
double range[2]{ lowerLimit, upperLimit };
propDoubleList->setRange(range);
appendDataObj(propDoubleList);
return propDoubleList;
}
FITKParamString* FITKParameter::createStringParameter(QString name, QString value)
{
FITKParamString* propString = new FITKParamString;
propString->setDataObjectName(name);
propString->setValue(value);
appendDataObj(propString);
return propString;
}
FITKParamBool* FITKParameter::createBoolParameter(QString name, bool value)
{
FITKParamBool* propBool = new FITKParamBool;
propBool->setDataObjectName(name);
propBool->setValue(value);
appendDataObj(propBool);
return propBool;
}
FITKParamBoolGroup* FITKParameter::createBoolGroupParameter(QString name, bool value)
{
FITKParamBoolGroup* propBool = new FITKParamBoolGroup;
propBool->setDataObjectName(name);
propBool->setValue(value);
appendDataObj(propBool);
return propBool;
}
FITKParamCombox* FITKParameter::createComboxParameter(QString name, QStringList value, int index)
{
FITKParamCombox* propCombox = new FITKParamCombox;
propCombox->setDataObjectName(name);
propCombox->setValue(value);
propCombox->setIndex(index);
appendDataObj(propCombox);
return propCombox;
}
FITKParamRadioGroup* FITKParameter::createRadioGroupParameter(QString name)
{
FITKParamRadioGroup* propRadioGroup = new FITKParamRadioGroup;
propRadioGroup->setDataObjectName(name);
appendDataObj(propRadioGroup);
return propRadioGroup;
}
void FITKParameter::onlyKeepPara(FITKParameter* data)
{
if (!data) return;
QString nameList;
int count = data->getDataCount();
for (int i = 0; i < count; ++i)
{
FITKAbstractEasyParam* d = data->getDataByIndex(i);
if (d) nameList.append(d->getDataObjectName());
}
for (int i = this->getDataCount() - 1; i >= 0; --i)
{
FITKAbstractEasyParam* d = this->getDataByIndex(i);
if (d && nameList.contains(d->getDataObjectName())) continue;
if (d) delete d;
this->removeDataByIndex(i);
}
}
void FITKParameter::copyAppendPara(FITKAbstractEasyParam* oldData)
{
if (!oldData)return;
FITKAbstractEasyParam* newData = nullptr;
if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPBool)
newData = new FITKParamBool;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPCombox)
newData = new FITKParamCombox;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPDouble)
newData = new FITKParamDouble;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPInt)
newData = new FITKParamInt;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPLabel)
newData = new FITKParamLabel;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPString)
newData = new FITKParamString;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPRadioGroup)
newData = new FITKParamRadioGroup;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPDoubleList)
newData = new FITKParamDoubleList;
else if (oldData->getParamType() == FITKAbstractEasyParam::FITKEasyParamType::FEPBoolGroup)
newData = new FITKParamBoolGroup;
if (!newData)return;
newData->copyParaData(oldData);
this->appendDataObj(newData);
}
double FITKParameter::getDoubleParaByName(QString name, bool& ok)
{
ok = false;
FITKParamDouble* data = dynamic_cast<FITKParamDouble*>(this->getDataByName(name));
if (!data)return 0.0;
ok = true;
return data->getValue();
}
int FITKParameter::getIntParaByName(QString name, bool& ok)
{
ok = false;
FITKParamInt* data = dynamic_cast<FITKParamInt*>(this->getDataByName(name));
if (!data)return 0;
ok = true;
return data->getValue();
}
bool FITKParameter::getBoolParaByName(QString name, bool& ok)
{
ok = false;
FITKParamBool* data = dynamic_cast<FITKParamBool*>(this->getDataByName(name));
if (!data)return false;
ok = true;
return data->getValue();
}
QString FITKParameter::getStringParaByName(QString name, bool& ok)
{
ok = false;
FITKParamString* data = dynamic_cast<FITKParamString*>(this->getDataByName(name));
if (!data)return QString();
ok = true;
return data->getValue();
}
QString FITKParameter::getComboxCurrentParaByName(QString name, bool& ok)
{
ok = false;
FITKParamCombox* data = dynamic_cast<FITKParamCombox*>(this->getDataByName(name));
if (!data)return QString();
ok = true;
return data->getCurrentValue();
}
}