From 4418146f8553c670be2548ad4e5c1d024e91e2ad Mon Sep 17 00:00:00 2001 From: Renaud G Date: Wed, 1 Apr 2020 00:48:15 +0200 Subject: New Api for string result subclass dice result. --- result/stringresult.cpp | 62 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 14 deletions(-) (limited to 'result/stringresult.cpp') 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 StringResult::StringResult() { m_highlight= true; m_resultTypes= static_cast(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; } -- cgit v1.2.3-70-g09d2