diff options
Diffstat (limited to 'pokemodr/ValidationDialog.cpp')
| -rw-r--r-- | pokemodr/ValidationDialog.cpp | 70 |
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; +} |
