/* Actiona Copyright (C) 2005 Jonathan Mercier-Ganady Actiona is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Actiona is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Contact : jmgr@jmgr.info */ #include "messagebox.h" #include "code/image.h" #include #include namespace Code { QScriptValue MessageBox::constructor(QScriptContext *context, QScriptEngine *engine) { auto messageBox = new MessageBox; messageBox->setupConstructorParameters(context, engine, context->argument(0)); QScriptValueIterator it(context->argument(0)); while(it.hasNext()) { it.next(); if(it.name() == QLatin1String("text")) messageBox->mMessageBox->setText(it.value().toString()); else if(it.name() == QLatin1String("detailedText")) messageBox->mMessageBox->setDetailedText(it.value().toString()); else if(it.name() == QLatin1String("informativeText")) messageBox->mMessageBox->setInformativeText(it.value().toString()); else if(it.name() == QLatin1String("buttons")) messageBox->mMessageBox->setStandardButtons(static_cast(it.value().toInt32())); else if(it.name() == QLatin1String("icon")) messageBox->mMessageBox->setIcon(static_cast(it.value().toInt32())); else if(it.name() == QLatin1String("defaultButton")) messageBox->mMessageBox->setDefaultButton(static_cast(it.value().toInt32())); else if(it.name() == QLatin1String("escapeButton")) messageBox->mMessageBox->setEscapeButton(static_cast(it.value().toInt32())); else if(it.name() == QLatin1String("onClosed")) messageBox->mOnClosed = it.value(); } return CodeClass::constructor(messageBox, context, engine); } MessageBox::MessageBox() : BaseWindow(), mMessageBox(new QMessageBox) { mMessageBox->setWindowFlags(mMessageBox->windowFlags() | Qt::WindowContextHelpButtonHint); setWidget(mMessageBox); connect(mMessageBox, &QMessageBox::finished, this, &MessageBox::finished); } MessageBox::~MessageBox() { delete mMessageBox; } QScriptValue MessageBox::setText(const QString &text) { mMessageBox->setText(text); return thisObject(); } QScriptValue MessageBox::setDetailedText(const QString &detailedText) { mMessageBox->setDetailedText(detailedText); return thisObject(); } QScriptValue MessageBox::setInformativeText(const QString &informativeText) { mMessageBox->setInformativeText(informativeText); return thisObject(); } QScriptValue MessageBox::setButtons(StandardButton buttons) { mMessageBox->setStandardButtons(static_cast(buttons)); return thisObject(); } QScriptValue MessageBox::setIcon(Icon icon) { mMessageBox->setIcon(static_cast(icon)); return thisObject(); } QScriptValue MessageBox::setIconPixmap(const QScriptValue &image) { if(image.isUndefined() || image.isNull()) { mMessageBox->setIconPixmap(QPixmap()); return thisObject(); } QObject *object = image.toQObject(); if(auto otherImage = qobject_cast(object)) { mMessageBox->setIconPixmap(QPixmap::fromImage(otherImage->image())); } else { throwError(QStringLiteral("SetIconPixmapError"), tr("Invalid image")); return thisObject(); } return thisObject(); } QScriptValue MessageBox::setDefaultButton(StandardButton button) { mMessageBox->setDefaultButton(static_cast(button)); return thisObject(); } QScriptValue MessageBox::setEscapeButton(StandardButton button) { mMessageBox->setEscapeButton(static_cast(button)); return thisObject(); } QScriptValue MessageBox::addCustomButton(StandardButton button, const QString &text) { QPushButton *addedButton = mMessageBox->addButton(static_cast(button)); if(!addedButton) { throwError(QStringLiteral("AddCustomButtonError"), tr("Add custom button failed")); return thisObject(); } addedButton->setText(text); return thisObject(); } QScriptValue MessageBox::show() { mMessageBox->open(); return thisObject(); } int MessageBox::showModal() { return mMessageBox->exec(); } void MessageBox::finished(int result) { if(mOnClosed.isValid()) mOnClosed.call(thisObject(), QScriptValueList() << result); } }