From 2d832326bd1b6257849b23a86527c12a19d120b9 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 23 Apr 2013 13:09:38 +0200 Subject: fix messageboxhandler with help of new autotests - fix setDefaultAction (use std::reverse directly) - fix missing Ok MessageBox value in script context Change-Id: I82fa5a06d83b6c8659c60a3e56a1d4bd91e70c14 Reviewed-by: Karsten Heimrich --- src/libs/installer/messageboxhandler.cpp | 74 +++++++------------------------- 1 file changed, 16 insertions(+), 58 deletions(-) (limited to 'src/libs/installer/messageboxhandler.cpp') diff --git a/src/libs/installer/messageboxhandler.cpp b/src/libs/installer/messageboxhandler.cpp index 832a96e85..2ae4c351d 100644 --- a/src/libs/installer/messageboxhandler.cpp +++ b/src/libs/installer/messageboxhandler.cpp @@ -49,49 +49,26 @@ #include #include +#include QScriptValue QInstaller::registerMessageBox(QScriptEngine *scriptEngine) { // register QMessageBox::StandardButton enum in the script connection QScriptValue messageBox = scriptEngine->newQObject(MessageBoxHandler::instance()); - messageBox.setProperty(QLatin1String("Ok"), - scriptEngine->newVariant(static_cast(QMessageBox::Yes))); - messageBox.setProperty(QLatin1String("Open"), - scriptEngine->newVariant(static_cast(QMessageBox::Open))); - messageBox.setProperty(QLatin1String("Save"), - scriptEngine->newVariant(static_cast(QMessageBox::Save))); - messageBox.setProperty(QLatin1String("Cancel"), - scriptEngine->newVariant(static_cast(QMessageBox::Cancel))); - messageBox.setProperty(QLatin1String("Close"), - scriptEngine->newVariant(static_cast(QMessageBox::Close))); - messageBox.setProperty(QLatin1String("Discard"), - scriptEngine->newVariant(static_cast(QMessageBox::Discard))); - messageBox.setProperty(QLatin1String("Apply"), - scriptEngine->newVariant(static_cast(QMessageBox::Apply))); - messageBox.setProperty(QLatin1String("Reset"), - scriptEngine->newVariant(static_cast(QMessageBox::Reset))); - messageBox.setProperty(QLatin1String("RestoreDefaults"), - scriptEngine->newVariant(static_cast(QMessageBox::RestoreDefaults))); - messageBox.setProperty(QLatin1String("Help"), - scriptEngine->newVariant(static_cast(QMessageBox::Help))); - messageBox.setProperty(QLatin1String("SaveAll"), - scriptEngine->newVariant(static_cast(QMessageBox::SaveAll))); - messageBox.setProperty(QLatin1String("Yes"), - scriptEngine->newVariant(static_cast(QMessageBox::Yes))); - messageBox.setProperty(QLatin1String("YesToAll"), - scriptEngine->newVariant(static_cast(QMessageBox::YesToAll))); - messageBox.setProperty(QLatin1String("No"), - scriptEngine->newVariant(static_cast(QMessageBox::No))); - messageBox.setProperty(QLatin1String("NoToAll"), - scriptEngine->newVariant(static_cast(QMessageBox::NoToAll))); - messageBox.setProperty(QLatin1String("Abort"), - scriptEngine->newVariant(static_cast(QMessageBox::Abort))); - messageBox.setProperty(QLatin1String("Retry"), - scriptEngine->newVariant(static_cast(QMessageBox::Retry))); - messageBox.setProperty(QLatin1String("Ignore"), - scriptEngine->newVariant(static_cast(QMessageBox::Ignore))); - messageBox.setProperty(QLatin1String("NoButton"), - scriptEngine->newVariant(static_cast(QMessageBox::NoButton))); + + const QMetaObject &messageBoxMetaObject = QMessageBox::staticMetaObject; + int index = messageBoxMetaObject.indexOfEnumerator("StandardButtons"); + + QMetaEnum metaEnum = messageBoxMetaObject.enumerator(index); + for (int i = 0; i < metaEnum.keyCount(); i++) { + int enumValue = metaEnum.value(i); + if (enumValue < QMessageBox::FirstButton) + continue; + messageBox.setProperty(QString::fromLatin1(metaEnum.valueToKey(metaEnum.value(i))), + scriptEngine->newVariant(enumValue)); + if (enumValue == QMessageBox::LastButton) + break; + } scriptEngine->globalObject().setProperty(QLatin1String("QMessageBox"), messageBox); return messageBox; @@ -99,25 +76,6 @@ QScriptValue QInstaller::registerMessageBox(QScriptEngine *scriptEngine) using namespace QInstaller; -template -static QList reversed(const QList &list) -{ - qFatal("This seems to be broken, check this!!!!"); - // TODO: Figure out what should happen here. See setDefaultAction(...). -#if 1 - // Note: This does not what the function name implies??? - QList res = list; - qCopyBackward(list.begin(), list.end(), res.end()); - return res; -#else - // Note: This does what the function name implies, but we need to check if this is what we want. - QList res = list; - std::reverse(res.begin(), res.end()); - return res; -#endif -} - - // -- MessageBoxHandler MessageBoxHandler *MessageBoxHandler::m_instance = 0; @@ -178,7 +136,7 @@ void MessageBoxHandler::setDefaultAction(DefaultAction defaultAction) if (m_defaultAction == Reject) { // If we want to reject everything, we need the lowest button. For example, if Cancel is existing it // could use Cancel, but if Close is existing it will use Close. - m_buttonOrder = reversed(m_buttonOrder); + std::reverse(m_buttonOrder.begin(), m_buttonOrder.end()); } } -- cgit v1.2.3