summaryrefslogtreecommitdiffstats
path: root/pokemodr/ValidationDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/ValidationDialog.cpp')
-rw-r--r--pokemodr/ValidationDialog.cpp70
1 files changed, 52 insertions, 18 deletions
diff --git a/pokemodr/ValidationDialog.cpp b/pokemodr/ValidationDialog.cpp
index a9310c7e..f2b765ec 100644
--- a/pokemodr/ValidationDialog.cpp
+++ b/pokemodr/ValidationDialog.cpp
@@ -33,25 +33,57 @@
Pokemodr::ValidationDialog::ValidationDialog(Pokemod::Object* object, QWidget* parent) :
QWidget(parent),
- m_valTree(new QTreeWidget),
- m_errors(0),
- m_warnings(0)
+ m_processed(false),
+ m_object(object),
+ m_valTree(new QTreeWidget)
{
- KProgressDialog* progress = new KProgressDialog(this, "Validating", "Please wait");
- progress->progressBar()->setRange(0, 0);
- progress->setAllowCancel(false);
- progress->setModal(true);
- progress->show();
m_valTree->setHeaderHidden(true);
- m_parents.push(ObjectErrorCount(m_valTree->invisibleRootItem(), 0));
- connect(object, SIGNAL(valMessage(QString)), this, SLOT(addMessage(QString)));
- connect(object, SIGNAL(valWarning(QString)), this, SLOT(addWarning(QString)));
- connect(object, SIGNAL(valError(QString)), this, SLOT(addError(QString)));
- object->validate();
- delete progress;
- if (m_parents.top().second)
+ connect(m_object, SIGNAL(changed()), this, SLOT(objectChanged()));
+}
+
+int Pokemodr::ValidationDialog::errors() const
+{
+ return m_errors;
+}
+
+int Pokemodr::ValidationDialog::warnings() const
+{
+ return m_warnings;
+}
+
+void Pokemodr::ValidationDialog::process()
+{
+ if (!m_processed)
{
+ m_errors = 0;
+ m_warnings = 0;
+ m_valTree->clear();
+ m_parents.clear();
+ m_parents.push(ObjectErrorCount(m_valTree->invisibleRootItem(), 0));
+ KProgressDialog* progress = new KProgressDialog(this, "Validating", "Please wait");
+ progress->progressBar()->setRange(0, 0);
+ progress->setAllowCancel(false);
+ progress->setModal(true);
+ progress->show();
+ connect(m_object, SIGNAL(valMessage(QString)), this, SLOT(addMessage(QString)));
+ connect(m_object, SIGNAL(valWarning(QString)), this, SLOT(addWarning(QString)));
+ connect(m_object, SIGNAL(valError(QString)), this, SLOT(addError(QString)));
+ m_object->validate();
+ disconnect(m_object, SIGNAL(valMessage(QString)), this, SLOT(addMessage(QString)));
+ disconnect(m_object, SIGNAL(valWarning(QString)), this, SLOT(addWarning(QString)));
+ disconnect(m_object, SIGNAL(valError(QString)), this, SLOT(addError(QString)));
+ delete progress;
m_valTree->addTopLevelItem(m_parents.top().first);
+ }
+ m_processed = true;
+}
+
+void Pokemodr::ValidationDialog::show()
+{
+ if (!m_processed)
+ process();
+ if (m_parents.top().second)
+ {
KDialog* dialog = new KDialog(this);
dialog->setCaption("Validation Messages");
dialog->setButtons(KDialog::Ok);
@@ -65,9 +97,6 @@ Pokemodr::ValidationDialog::ValidationDialog(Pokemod::Object* object, QWidget* p
}
else
KMessageBox::information(this, "No messages", "Validation");
- disconnect(object, SIGNAL(valMessage(QString)), this, SLOT(addMessage(QString)));
- disconnect(object, SIGNAL(valWarning(QString)), this, SLOT(addWarning(QString)));
- disconnect(object, SIGNAL(valError(QString)), this, SLOT(addError(QString)));
}
void Pokemodr::ValidationDialog::insertMessage(const QString& msg, const QBrush& brush)
@@ -105,3 +134,8 @@ void Pokemodr::ValidationDialog::addWarning(const QString& msg)
insertMessage(msg, KStatefulBrush(KColorScheme::View, KColorScheme::NeutralBackground).brush(QPalette::Normal));
++m_warnings;
}
+
+void Pokemodr::ValidationDialog::objectChanged()
+{
+ m_processed = false;
+}