aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/result/stringresult.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'result/stringresult.cpp')
-rw-r--r--result/stringresult.cpp62
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;
}