diff options
Diffstat (limited to 'result/stringresult.cpp')
| -rw-r--r-- | result/stringresult.cpp | 62 |
1 files changed, 48 insertions, 14 deletions
diff --git a/result/stringresult.cpp b/result/stringresult.cpp index b5c490c..201d1f3 100644 --- a/result/stringresult.cpp +++ b/result/stringresult.cpp @@ -1,33 +1,39 @@ #include "stringresult.h" +#include <QDebug> StringResult::StringResult() { m_highlight= true; m_resultTypes= static_cast<int>(Dice::RESULT_TYPE::STRING); } -void StringResult::setText(QString text) +void StringResult::addText(QString text) { - m_value= text; + m_value.append(text); } StringResult::~StringResult() {} bool StringResult::hasResultOfType(Dice::RESULT_TYPE resultType) const { + bool val= false; - if(resultType == Dice::RESULT_TYPE::STRING) + switch(resultType) { - return true; - } - else if(resultType == Dice::RESULT_TYPE::SCALAR) - { - bool ok= false; - getText().toInt(&ok); - return ok; + case Dice::RESULT_TYPE::STRING: + val= !isDigitOnly(); + break; + case Dice::RESULT_TYPE::SCALAR: + val= isDigitOnly(); + break; + case Dice::RESULT_TYPE::DICE_LIST: + val= (isDigitOnly() && m_value.size() > 1); + break; + default: + break; } - return false; + return val; } QString StringResult::getText() const { - return m_value; + return m_value.join(","); } QVariant StringResult::getResult(Dice::RESULT_TYPE type) { @@ -36,7 +42,7 @@ QVariant StringResult::getResult(Dice::RESULT_TYPE type) case Dice::RESULT_TYPE::STRING: return getText(); case Dice::RESULT_TYPE::SCALAR: - return getText().toInt(); + return getScalarResult(); default: return QVariant(); } @@ -61,11 +67,39 @@ bool StringResult::hasHighLight() const { return m_highlight; } + +void StringResult::finished() +{ + if(isDigitOnly()) + { + std::for_each(m_value.begin(), m_value.end(), [this](const QString& str) { + auto die= new Die(); + die->setMaxValue(m_stringCount); + die->setValue(str.toInt()); + insertResult(die); + }); + } +} + +void StringResult::setStringCount(int count) +{ + m_stringCount= count; +} + +bool StringResult::isDigitOnly() const +{ + return std::all_of(m_value.begin(), m_value.end(), [](const QString& str) { + bool ok= false; + str.toInt(&ok); + return ok; + }); +} + Result* StringResult::getCopy() const { auto copy= new StringResult(); copy->setPrevious(getPrevious()); copy->setHighLight(m_highlight); - copy->setText(m_value); + std::for_each(m_value.begin(), m_value.end(), [copy](const QString& str) { copy->addText(str); }); return copy; } |