2014-11-13 01:04:59 +02:00
|
|
|
/* This file is part of the KDE libraries
|
|
|
|
Copyright (C) 1999 Waldo Bastian (bastian@kde.org)
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License as published by the Free Software Foundation; version 2
|
|
|
|
of the License.
|
|
|
|
|
|
|
|
This library 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
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "kmessagebox.h"
|
|
|
|
|
|
|
|
#include <QtCore/QPointer>
|
|
|
|
#include <QtGui/QCheckBox>
|
|
|
|
#include <QtGui/QGroupBox>
|
|
|
|
#include <QtGui/QLabel>
|
|
|
|
#include <QtGui/QLayout>
|
|
|
|
#include <QtGui/QListWidget>
|
|
|
|
#include <QtGui/QScrollArea>
|
|
|
|
#include <QtGui/QScrollBar>
|
|
|
|
#include <QtGui/QTextDocumentFragment>
|
|
|
|
|
|
|
|
#include <kapplication.h>
|
|
|
|
#include <kconfig.h>
|
|
|
|
#include <kdialog.h>
|
|
|
|
#include <kdialogqueue_p.h>
|
|
|
|
#include <kglobalsettings.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <knotification.h>
|
|
|
|
#include <kiconloader.h>
|
|
|
|
#include <kconfiggroup.h>
|
|
|
|
#include <ktextedit.h>
|
|
|
|
#include <ksqueezedtextlabel.h>
|
|
|
|
#include <kwindowsystem.h>
|
|
|
|
|
|
|
|
// Some i18n filters, that standard button texts are piped through
|
|
|
|
// (the new KGuiItem object with filtered text is created from the old one).
|
|
|
|
|
|
|
|
// i18n: Filter for the Yes-button text in standard message dialogs,
|
|
|
|
// after the message caption/text have been translated.
|
|
|
|
#define I18N_FILTER_BUTTON_YES(src, dst) \
|
|
|
|
KGuiItem dst(src); \
|
|
|
|
dst.setText( i18nc( "@action:button filter-yes", "%1", src.text() ) );
|
|
|
|
|
|
|
|
// i18n: Filter for the No-button text in standard message dialogs,
|
|
|
|
// after the message caption/text have been translated.
|
|
|
|
#define I18N_FILTER_BUTTON_NO(src, dst) \
|
|
|
|
KGuiItem dst(src); \
|
|
|
|
dst.setText( i18nc( "@action:button filter-no", "%1", src.text() ) );
|
|
|
|
|
|
|
|
// i18n: Filter for the Continue-button text in standard message dialogs,
|
|
|
|
// after the message caption/text have been translated.
|
|
|
|
#define I18N_FILTER_BUTTON_CONTINUE(src, dst) \
|
|
|
|
KGuiItem dst(src); \
|
|
|
|
dst.setText( i18nc( "@action:button filter-continue", "%1", src.text() ) );
|
|
|
|
|
|
|
|
// i18n: Filter for the Cancel-button text in standard message dialogs,
|
|
|
|
// after the message caption/text have been translated.
|
|
|
|
#define I18N_FILTER_BUTTON_CANCEL(src, dst) \
|
|
|
|
KGuiItem dst(src); \
|
|
|
|
dst.setText( i18nc( "@action:button filter-cancel", "%1", src.text() ) );
|
|
|
|
|
|
|
|
// i18n: Called after the button texts in standard message dialogs
|
|
|
|
// have been filtered by the messages above. Not visible to user.
|
|
|
|
#define I18N_POST_BUTTON_FILTER \
|
|
|
|
i18nc( "@action:button post-filter", "." );
|
|
|
|
|
|
|
|
static bool KMessageBox_queue = false;
|
|
|
|
KConfig* KMessageBox_againConfig = 0;
|
|
|
|
|
|
|
|
|
|
|
|
static QIcon themedMessageBoxIcon(QMessageBox::Icon icon)
|
|
|
|
{
|
|
|
|
QString icon_name;
|
|
|
|
|
|
|
|
switch (icon) {
|
|
|
|
case QMessageBox::NoIcon:
|
|
|
|
return QIcon();
|
|
|
|
break;
|
|
|
|
case QMessageBox::Information:
|
|
|
|
icon_name = "dialog-information";
|
|
|
|
break;
|
|
|
|
case QMessageBox::Warning:
|
|
|
|
icon_name = "dialog-warning";
|
|
|
|
break;
|
|
|
|
case QMessageBox::Critical:
|
|
|
|
icon_name = "dialog-error";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
QIcon ret = KIconLoader::global()->loadIcon(icon_name, KIconLoader::NoGroup, KIconLoader::SizeHuge, KIconLoader::DefaultState, QStringList(), 0, true);
|
|
|
|
|
|
|
|
if (ret.isNull()) {
|
|
|
|
return QMessageBox::standardIcon(icon);
|
|
|
|
} else {
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void sendNotification( QString message, //krazy:exclude=passbyvalue
|
|
|
|
const QStringList& strlist,
|
|
|
|
QMessageBox::Icon icon,
|
|
|
|
WId parent_id )
|
|
|
|
{
|
|
|
|
// create the message for KNotify
|
|
|
|
QString messageType;
|
|
|
|
switch (icon) {
|
|
|
|
case QMessageBox::Warning:
|
|
|
|
messageType = "messageWarning";
|
|
|
|
break;
|
|
|
|
case QMessageBox::Critical:
|
|
|
|
messageType = "messageCritical";
|
|
|
|
break;
|
|
|
|
case QMessageBox::Question:
|
|
|
|
messageType = "messageQuestion";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
messageType = "messageInformation";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( !strlist.isEmpty() ) {
|
|
|
|
for ( QStringList::ConstIterator it = strlist.begin(); it != strlist.end(); ++it ) {
|
|
|
|
message += '\n' + *it;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( !message.isEmpty() ) {
|
|
|
|
KNotification::event( messageType, message, QPixmap(), QWidget::find( parent_id ),
|
|
|
|
KNotification::DefaultEvent | KNotification::CloseOnTimeout );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void applyOptions( KDialog* dialog, KMessageBox::Options options )
|
|
|
|
{
|
|
|
|
if ( options & KMessageBox::WindowModal ) {
|
|
|
|
dialog->setWindowModality( Qt::WindowModal );
|
|
|
|
}
|
|
|
|
dialog->setModal( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::createKMessageBox(KDialog *dialog, QMessageBox::Icon icon,
|
|
|
|
const QString &text, const QStringList &strlist,
|
|
|
|
const QString &ask, bool *checkboxReturn,
|
|
|
|
Options options, const QString &details)
|
|
|
|
{
|
|
|
|
return createKMessageBox(dialog, themedMessageBoxIcon(icon), text, strlist,
|
|
|
|
ask, checkboxReturn, options, details, icon);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int KMessageBox::createKMessageBox(KDialog *dialog, const QIcon &icon,
|
|
|
|
const QString &text, const QStringList &strlist,
|
|
|
|
const QString &ask, bool *checkboxReturn, Options options,
|
|
|
|
const QString &details, QMessageBox::Icon notifyType)
|
|
|
|
{
|
|
|
|
QWidget *mainWidget = new QWidget(dialog);
|
|
|
|
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
|
|
|
|
mainLayout->setSpacing(KDialog::spacingHint() * 2); // provide extra spacing
|
|
|
|
mainLayout->setMargin(0);
|
|
|
|
|
|
|
|
QHBoxLayout *hLayout = new QHBoxLayout();
|
|
|
|
hLayout->setMargin(0);
|
|
|
|
hLayout->setSpacing(-1); // use default spacing
|
|
|
|
mainLayout->addLayout(hLayout,5);
|
|
|
|
|
|
|
|
QLabel *iconLabel = new QLabel(mainWidget);
|
|
|
|
|
|
|
|
if (!icon.isNull()) {
|
|
|
|
QStyleOption option;
|
|
|
|
option.initFrom(mainWidget);
|
|
|
|
iconLabel->setPixmap(icon.pixmap(mainWidget->style()->pixelMetric(QStyle::PM_MessageBoxIconSize, &option, mainWidget)));
|
|
|
|
}
|
|
|
|
|
|
|
|
QVBoxLayout *iconLayout = new QVBoxLayout();
|
|
|
|
iconLayout->addStretch(1);
|
|
|
|
iconLayout->addWidget(iconLabel);
|
|
|
|
iconLayout->addStretch(5);
|
|
|
|
|
|
|
|
hLayout->addLayout(iconLayout,0);
|
|
|
|
hLayout->addSpacing(KDialog::spacingHint());
|
|
|
|
|
|
|
|
QLabel *messageLabel = new QLabel(text, mainWidget);
|
|
|
|
messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
|
|
|
|
Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard;
|
|
|
|
if (options & KMessageBox::AllowLink) {
|
|
|
|
flags |= Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard;
|
|
|
|
}
|
|
|
|
messageLabel->setTextInteractionFlags(flags);
|
|
|
|
|
|
|
|
QRect desktop = KGlobalSettings::desktopGeometry(dialog);
|
|
|
|
bool usingSqueezedTextLabel = false;
|
|
|
|
if (messageLabel->sizeHint().width() > desktop.width() * 0.5) {
|
|
|
|
// enable automatic wrapping of messages which are longer than 50% of screen width
|
|
|
|
messageLabel->setWordWrap(true);
|
|
|
|
// display a text widget with scrollbar if still too wide
|
|
|
|
usingSqueezedTextLabel = messageLabel->sizeHint().width() > desktop.width() * 0.85;
|
|
|
|
if (usingSqueezedTextLabel)
|
|
|
|
{
|
|
|
|
delete messageLabel;
|
|
|
|
messageLabel = new KSqueezedTextLabel(text, mainWidget);
|
|
|
|
messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
|
|
|
|
messageLabel->setTextInteractionFlags(flags);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QPalette messagePal(messageLabel->palette());
|
|
|
|
messagePal.setColor(QPalette::Window, Qt::transparent);
|
|
|
|
messageLabel->setPalette(messagePal);
|
|
|
|
|
|
|
|
|
|
|
|
bool usingScrollArea=desktop.height() / 3 < messageLabel->sizeHint().height();
|
|
|
|
if (usingScrollArea)
|
|
|
|
{
|
|
|
|
QScrollArea* messageScrollArea = new QScrollArea(mainWidget);
|
|
|
|
messageScrollArea->setWidget(messageLabel);
|
|
|
|
messageScrollArea->setFrameShape(QFrame::NoFrame);
|
|
|
|
messageScrollArea->setWidgetResizable(true);
|
|
|
|
QPalette scrollPal(messageScrollArea->palette());
|
|
|
|
scrollPal.setColor(QPalette::Window, Qt::transparent);
|
|
|
|
messageScrollArea->viewport()->setPalette(scrollPal);
|
|
|
|
hLayout->addWidget(messageScrollArea,5);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
hLayout->addWidget(messageLabel,5);
|
|
|
|
|
|
|
|
|
|
|
|
const bool usingListWidget=!strlist.isEmpty();
|
|
|
|
if (usingListWidget) {
|
|
|
|
// enable automatic wrapping since the listwidget has already a good initial width
|
|
|
|
messageLabel->setWordWrap(true);
|
|
|
|
QListWidget *listWidget = new QListWidget(mainWidget);
|
|
|
|
listWidget->addItems(strlist);
|
|
|
|
|
|
|
|
QStyleOptionViewItem styleOption;
|
|
|
|
styleOption.initFrom(listWidget);
|
|
|
|
QFontMetrics fm(styleOption.font);
|
|
|
|
int w = listWidget->width();
|
|
|
|
Q_FOREACH(const QString &str, strlist) {
|
|
|
|
w = qMax(w, fm.width(str));
|
|
|
|
}
|
|
|
|
const int borderWidth = listWidget->width() - listWidget->viewport()->width() + listWidget->verticalScrollBar()->height();
|
|
|
|
w += borderWidth;
|
|
|
|
if (w > desktop.width() * 0.85) { // limit listWidget size to 85% of screen width
|
|
|
|
w = qRound(desktop.width() * 0.85);
|
|
|
|
}
|
|
|
|
listWidget->setMinimumWidth(w);
|
|
|
|
|
|
|
|
mainLayout->addWidget(listWidget,usingScrollArea?10:50);
|
|
|
|
listWidget->setSelectionMode(QListWidget::NoSelection);
|
|
|
|
messageLabel->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Minimum);
|
|
|
|
}
|
|
|
|
else if (!usingScrollArea)
|
|
|
|
mainLayout->addStretch(15);
|
|
|
|
|
|
|
|
|
|
|
|
QPointer<QCheckBox> checkbox = 0;
|
|
|
|
if (!ask.isEmpty()) {
|
|
|
|
checkbox = new QCheckBox(ask, mainWidget);
|
|
|
|
mainLayout->addWidget(checkbox);
|
|
|
|
if (checkboxReturn) {
|
|
|
|
checkbox->setChecked(*checkboxReturn);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!details.isEmpty()) {
|
|
|
|
QGroupBox *detailsGroup = new QGroupBox(i18n("Details"));
|
|
|
|
QVBoxLayout *detailsLayout = new QVBoxLayout(detailsGroup);
|
|
|
|
if (details.length() < 512) {
|
|
|
|
QLabel *detailsLabel = new QLabel(details);
|
|
|
|
detailsLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
|
|
|
|
Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard;
|
|
|
|
if ( options & KMessageBox::AllowLink )
|
|
|
|
flags |= Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard;;
|
|
|
|
detailsLabel->setTextInteractionFlags(flags);
|
|
|
|
detailsLabel->setWordWrap(true);
|
|
|
|
detailsLayout->addWidget(detailsLabel,50);
|
|
|
|
} else {
|
|
|
|
KTextEdit *detailTextEdit = new KTextEdit(details);
|
|
|
|
detailTextEdit->setReadOnly(true);
|
|
|
|
detailTextEdit->setMinimumHeight(detailTextEdit->fontMetrics().lineSpacing() * 11);
|
|
|
|
detailsLayout->addWidget(detailTextEdit,50);
|
|
|
|
}
|
|
|
|
if (!usingListWidget)
|
|
|
|
mainLayout->setStretchFactor(hLayout,10);
|
|
|
|
dialog->setDetailsWidget(detailsGroup);
|
|
|
|
}
|
|
|
|
|
|
|
|
dialog->setMainWidget(mainWidget);
|
|
|
|
if (!usingListWidget && !usingScrollArea && !usingSqueezedTextLabel && details.isEmpty())
|
|
|
|
dialog->setFixedSize(dialog->sizeHint() + QSize( 10, 10 ));
|
|
|
|
else if (!details.isEmpty() && dialog->minimumHeight()<iconLabel->sizeHint().height()*2)//strange bug...
|
|
|
|
{
|
|
|
|
if (!usingScrollArea)
|
|
|
|
dialog->setMinimumSize(300,qMax(150,qMax(iconLabel->sizeHint().height(),messageLabel->sizeHint().height())));
|
|
|
|
else
|
|
|
|
dialog->setMinimumSize(300,qMax(150,iconLabel->sizeHint().height()));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ((options & KMessageBox::Dangerous)) {
|
|
|
|
if (dialog->isButtonEnabled(KDialog::Cancel))
|
|
|
|
dialog->setDefaultButton(KDialog::Cancel);
|
|
|
|
else if (dialog->isButtonEnabled(KDialog::No))
|
|
|
|
dialog->setDefaultButton(KDialog::No);
|
|
|
|
}
|
|
|
|
|
|
|
|
KDialog::ButtonCode defaultCode = dialog->defaultButton();
|
|
|
|
if (defaultCode != KDialog::NoDefault) {
|
|
|
|
dialog->setButtonFocus(defaultCode);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((options & KMessageBox::Notify)) {
|
2019-12-17 01:08:55 +00:00
|
|
|
sendNotification(text, strlist, notifyType, dialog->window()->winId());
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (KMessageBox_queue) {
|
|
|
|
KDialogQueue::queueDialog(dialog);
|
|
|
|
return KMessageBox::Cancel; // We have to return something.
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((options & KMessageBox::NoExec)) {
|
|
|
|
return KMessageBox::Cancel; // We have to return something.
|
|
|
|
}
|
|
|
|
|
|
|
|
// We use a QPointer because the dialog may get deleted
|
|
|
|
// during exec() if the parent of the dialog gets deleted.
|
|
|
|
// In that case the QPointer will reset to 0.
|
|
|
|
QPointer<KDialog> guardedDialog = dialog;
|
|
|
|
|
|
|
|
const int result = guardedDialog->exec();
|
|
|
|
if (checkbox && checkboxReturn) {
|
|
|
|
*checkboxReturn = checkbox->isChecked();
|
|
|
|
}
|
|
|
|
|
|
|
|
delete (KDialog *) guardedDialog;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNo(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return questionYesNoList(parent, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNoWId(WId parent_id, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return questionYesNoListWId(parent_id, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KMessageBox::shouldBeShownYesNo(const QString &dontShowAgainName,
|
|
|
|
ButtonCode &result)
|
|
|
|
{
|
|
|
|
if ( dontShowAgainName.isEmpty() ) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
KConfigGroup cg( KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
|
|
|
|
const QString dontAsk = cg.readEntry(dontShowAgainName, QString()).toLower();
|
|
|
|
if (dontAsk == "yes" || dontAsk == "true") {
|
|
|
|
result = Yes;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (dontAsk == "no" || dontAsk == "false") {
|
|
|
|
result = No;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KMessageBox::shouldBeShownContinue(const QString &dontShowAgainName)
|
|
|
|
{
|
|
|
|
if ( dontShowAgainName.isEmpty() ) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
KConfigGroup cg( KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
|
|
|
|
return cg.readEntry(dontShowAgainName, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::saveDontShowAgainYesNo(const QString &dontShowAgainName,
|
|
|
|
ButtonCode result)
|
|
|
|
{
|
|
|
|
if ( dontShowAgainName.isEmpty() ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
KConfigGroup::WriteConfigFlags flags = KConfig::Persistent;
|
|
|
|
if (dontShowAgainName[0] == ':') {
|
|
|
|
flags |= KConfigGroup::Global;
|
|
|
|
}
|
|
|
|
KConfigGroup cg( KMessageBox_againConfig? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
|
|
|
|
cg.writeEntry( dontShowAgainName, result==Yes, flags );
|
|
|
|
cg.sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::saveDontShowAgainContinue(const QString &dontShowAgainName)
|
|
|
|
{
|
|
|
|
if ( dontShowAgainName.isEmpty() ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
KConfigGroup::WriteConfigFlags flags = KConfigGroup::Persistent;
|
|
|
|
if (dontShowAgainName[0] == ':') {
|
|
|
|
flags |= KConfigGroup::Global;
|
|
|
|
}
|
|
|
|
KConfigGroup cg( KMessageBox_againConfig? KMessageBox_againConfig: KGlobal::config().data(), "Notification Messages" );
|
|
|
|
cg.writeEntry( dontShowAgainName, false, flags );
|
|
|
|
cg.sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::setDontShowAskAgainConfig(KConfig* cfg)
|
|
|
|
{
|
|
|
|
KMessageBox_againConfig = cfg;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNoList(QWidget *parent, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{ // in order to avoid code duplication, convert to WId, it will be converted back
|
|
|
|
return questionYesNoListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
|
|
|
|
caption, buttonYes, buttonNo, dontAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNoListWId(WId parent_id, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes_,
|
|
|
|
const KGuiItem &buttonNo_,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
ButtonCode res;
|
|
|
|
if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
|
|
|
|
I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
|
|
|
|
I18N_POST_BUTTON_FILTER
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Question") : caption );
|
|
|
|
dialog->setButtons( KDialog::Yes | KDialog::No );
|
|
|
|
dialog->setObjectName( "questionYesNo" );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
|
|
|
|
dialog->setButtonGuiItem( KDialog::No, buttonNo );
|
|
|
|
dialog->setDefaultButton( KDialog::Yes );
|
|
|
|
dialog->setEscapeButton( KDialog::No );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
const int result = createKMessageBox(dialog, QMessageBox::Information, text, strlist,
|
|
|
|
dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
res = (result==KDialog::Yes ? Yes : No);
|
|
|
|
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainYesNo(dontAskAgainName, res);
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNoCancel(QWidget *parent,
|
|
|
|
const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return questionYesNoCancelWId( parent ? parent->effectiveWinId() : 0, text, caption, buttonYes, buttonNo, buttonCancel,
|
|
|
|
dontAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::questionYesNoCancelWId(WId parent_id,
|
|
|
|
const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes_,
|
|
|
|
const KGuiItem &buttonNo_,
|
|
|
|
const KGuiItem &buttonCancel_,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
ButtonCode res;
|
|
|
|
if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
|
|
|
|
I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
|
|
|
|
I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
|
|
|
|
I18N_POST_BUTTON_FILTER
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog= new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Question") : caption );
|
|
|
|
dialog->setButtons( KDialog::Yes | KDialog::No | KDialog::Cancel );
|
|
|
|
dialog->setObjectName( "questionYesNoCancel" );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
|
|
|
|
dialog->setButtonGuiItem( KDialog::No, buttonNo );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Cancel, buttonCancel );
|
|
|
|
dialog->setDefaultButton( KDialog::Yes );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
const int result = createKMessageBox(dialog, QMessageBox::Information,
|
|
|
|
text, QStringList(),
|
|
|
|
dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
|
|
|
|
if ( result == KDialog::Yes ) {
|
|
|
|
res = Yes;
|
|
|
|
} else if ( result == KDialog::No ) {
|
|
|
|
res = No;
|
|
|
|
} else {
|
|
|
|
return Cancel;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainYesNo(dontAskAgainName, res);
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNo(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoList(parent, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoWId(WId parent_id, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoListWId(parent_id, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoList(QWidget *parent, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption,
|
|
|
|
buttonYes, buttonNo, dontAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoListWId(WId parent_id, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes_,
|
|
|
|
const KGuiItem &buttonNo_,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
ButtonCode res;
|
|
|
|
if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
|
|
|
|
I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
|
|
|
|
I18N_POST_BUTTON_FILTER
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
|
|
|
|
dialog->setButtons( KDialog::Yes | KDialog::No );
|
|
|
|
dialog->setObjectName( "warningYesNoList" );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
|
|
|
|
dialog->setButtonGuiItem( KDialog::No, buttonNo );
|
|
|
|
dialog->setDefaultButton( KDialog::No );
|
|
|
|
dialog->setEscapeButton( KDialog::No );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
|
|
|
|
dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
res = (result==KDialog::Yes ? Yes : No);
|
|
|
|
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainYesNo(dontAskAgainName, res);
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningContinueCancel(QWidget *parent,
|
|
|
|
const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonContinue,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningContinueCancelList(parent, text, QStringList(), caption,
|
|
|
|
buttonContinue, buttonCancel, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningContinueCancelWId(WId parent_id,
|
|
|
|
const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonContinue,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningContinueCancelListWId(parent_id, text, QStringList(), caption,
|
|
|
|
buttonContinue, buttonCancel, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningContinueCancelList(QWidget *parent, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonContinue,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningContinueCancelListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
|
|
|
|
caption, buttonContinue, buttonCancel, dontAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningContinueCancelListWId(WId parent_id, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonContinue_,
|
|
|
|
const KGuiItem &buttonCancel_,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
if ( !shouldBeShownContinue(dontAskAgainName) )
|
|
|
|
return Continue;
|
|
|
|
|
|
|
|
I18N_FILTER_BUTTON_CONTINUE(buttonContinue_, buttonContinue)
|
|
|
|
I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
|
|
|
|
I18N_POST_BUTTON_FILTER
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
|
|
|
|
dialog->setButtons( KDialog::Yes | KDialog::No );
|
|
|
|
dialog->setObjectName( "warningYesNo" );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Yes, buttonContinue );
|
|
|
|
dialog->setButtonGuiItem( KDialog::No, buttonCancel );
|
|
|
|
dialog->setDefaultButton( KDialog::Yes );
|
|
|
|
dialog->setEscapeButton( KDialog::No );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
|
|
|
|
dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
|
|
|
|
if ( result != KDialog::Yes ) {
|
|
|
|
return Cancel;
|
|
|
|
}
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainContinue(dontAskAgainName);
|
|
|
|
}
|
|
|
|
return Continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoCancel(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoCancelList(parent, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, buttonCancel, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoCancelWId(WId parent_id, const QString &text,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoCancelListWId(parent_id, text, QStringList(), caption,
|
|
|
|
buttonYes, buttonNo, buttonCancel, dontAskAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoCancelList(QWidget *parent, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo,
|
|
|
|
const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
return warningYesNoCancelListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
|
|
|
|
caption, buttonYes, buttonNo, buttonCancel, dontAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::warningYesNoCancelListWId(WId parent_id, const QString &text,
|
|
|
|
const QStringList &strlist,
|
|
|
|
const QString &caption,
|
|
|
|
const KGuiItem &buttonYes_,
|
|
|
|
const KGuiItem &buttonNo_,
|
|
|
|
const KGuiItem &buttonCancel_,
|
|
|
|
const QString &dontAskAgainName,
|
|
|
|
Options options)
|
|
|
|
{
|
|
|
|
ButtonCode res;
|
|
|
|
if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
|
|
|
|
I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
|
|
|
|
I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
|
|
|
|
I18N_POST_BUTTON_FILTER
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
|
|
|
|
dialog->setButtons( KDialog::Yes | KDialog::No | KDialog::Cancel );
|
|
|
|
dialog->setObjectName( "warningYesNoCancel" );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
|
|
|
|
dialog->setButtonGuiItem( KDialog::No, buttonNo );
|
|
|
|
dialog->setButtonGuiItem( KDialog::Cancel, buttonCancel );
|
|
|
|
dialog->setDefaultButton( KDialog::Yes );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
|
|
|
|
dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
|
|
|
|
if ( result == KDialog::Yes ) {
|
|
|
|
res = Yes;
|
|
|
|
} else if ( result == KDialog::No ) {
|
|
|
|
res = No;
|
|
|
|
} else {
|
|
|
|
return Cancel;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainYesNo(dontAskAgainName, res);
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::error(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
return errorListWId( parent ? parent->effectiveWinId() : 0, text, QStringList(), caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::errorWId(WId parent_id, const QString &text,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
errorListWId( parent_id, text, QStringList(), caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::errorList(QWidget *parent, const QString &text, const QStringList &strlist,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
return errorListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::errorListWId(WId parent_id, const QString &text, const QStringList &strlist,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Error") : caption );
|
|
|
|
dialog->setButtons( KDialog::Ok );
|
|
|
|
dialog->setObjectName( "error" );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
createKMessageBox(dialog, QMessageBox::Critical, text, strlist, QString(), 0, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
KMessageBox::detailedError(QWidget *parent, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
return detailedErrorWId( parent ? parent->effectiveWinId() : 0, text, details, caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::detailedErrorWId(WId parent_id, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Error") : caption );
|
|
|
|
dialog->setButtons( KDialog::Ok | KDialog::Details );
|
|
|
|
dialog->setObjectName( "error" );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
createKMessageBox(dialog, QMessageBox::Critical, text, QStringList(), QString(), 0, options, details);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedDetailedError(QWidget *parent, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption)
|
|
|
|
{
|
|
|
|
return queuedDetailedErrorWId( parent ? parent->effectiveWinId() : 0, text, details, caption );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedDetailedErrorWId(WId parent_id, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption)
|
|
|
|
{
|
|
|
|
KMessageBox_queue = true;
|
|
|
|
(void) detailedErrorWId(parent_id, text, details, caption);
|
|
|
|
KMessageBox_queue = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void KMessageBox::sorry(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
return sorryWId( parent ? parent->effectiveWinId() : 0, text, caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::sorryWId(WId parent_id, const QString &text,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Sorry") : caption );
|
|
|
|
dialog->setButtons( KDialog::Ok );
|
|
|
|
dialog->setObjectName( "sorry" );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
createKMessageBox(dialog, QMessageBox::Warning, text, QStringList(), QString(), 0, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::detailedSorry(QWidget *parent, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
return detailedSorryWId( parent ? parent->effectiveWinId() : 0, text, details, caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::detailedSorryWId(WId parent_id, const QString &text,
|
|
|
|
const QString &details,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Sorry") : caption );
|
|
|
|
dialog->setButtons( KDialog::Ok | KDialog::Details );
|
|
|
|
dialog->setObjectName( "sorry" );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
createKMessageBox(dialog, QMessageBox::Warning, text, QStringList(), QString(), 0, options, details);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::information(QWidget *parent,const QString &text,
|
|
|
|
const QString &caption, const QString &dontShowAgainName, Options options)
|
|
|
|
{
|
|
|
|
informationList(parent, text, QStringList(), caption, dontShowAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::informationWId(WId parent_id,const QString &text,
|
|
|
|
const QString &caption, const QString &dontShowAgainName, Options options)
|
|
|
|
{
|
|
|
|
informationListWId(parent_id, text, QStringList(), caption, dontShowAgainName, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::informationList(QWidget *parent,const QString &text, const QStringList & strlist,
|
|
|
|
const QString &caption, const QString &dontShowAgainName, Options options)
|
|
|
|
{
|
|
|
|
return informationListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption,
|
|
|
|
dontShowAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::informationListWId(WId parent_id,const QString &text, const QStringList & strlist,
|
|
|
|
const QString &caption, const QString &dontShowAgainName, Options options)
|
|
|
|
{
|
|
|
|
if ( !shouldBeShownContinue(dontShowAgainName) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
QWidget* parent = QWidget::find( parent_id );
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption.isEmpty() ? i18n("Information") : caption );
|
|
|
|
dialog->setButtons( KDialog::Ok );
|
|
|
|
dialog->setObjectName( "information" );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok);
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
if ( options & KMessageBox::PlainCaption ) {
|
2016-03-26 03:17:36 +00:00
|
|
|
dialog->setWindowTitle( caption );
|
2014-11-13 01:04:59 +02:00
|
|
|
}
|
|
|
|
if ( parent == NULL && parent_id ) {
|
|
|
|
KWindowSystem::setMainWindow( dialog, parent_id );
|
|
|
|
}
|
|
|
|
|
|
|
|
bool checkboxResult = false;
|
|
|
|
|
|
|
|
createKMessageBox(dialog, QMessageBox::Information, text, strlist,
|
|
|
|
dontShowAgainName.isEmpty() ? QString() : i18n("Do not show this message again"),
|
|
|
|
&checkboxResult, options);
|
|
|
|
|
|
|
|
if (checkboxResult) {
|
|
|
|
saveDontShowAgainContinue(dontShowAgainName);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::enableAllMessages()
|
|
|
|
{
|
|
|
|
KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data();
|
|
|
|
if (!config->hasGroup("Notification Messages")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
KConfigGroup cg(config, "Notification Messages" );
|
|
|
|
|
|
|
|
typedef QMap<QString, QString> configMap;
|
|
|
|
|
|
|
|
const configMap map = cg.entryMap();
|
|
|
|
|
|
|
|
configMap::ConstIterator it;
|
|
|
|
for (it = map.begin(); it != map.end(); ++it) {
|
|
|
|
cg.deleteEntry( it.key() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::enableMessage(const QString &dontShowAgainName)
|
|
|
|
{
|
|
|
|
KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data();
|
|
|
|
if (!config->hasGroup("Notification Messages")) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
KConfigGroup cg( config, "Notification Messages" );
|
|
|
|
|
|
|
|
cg.deleteEntry(dontShowAgainName);
|
|
|
|
config->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::about(QWidget *parent, const QString &text,
|
|
|
|
const QString &caption, Options options)
|
|
|
|
{
|
|
|
|
QString _caption = caption;
|
|
|
|
if (_caption.isEmpty()) {
|
|
|
|
_caption = i18n("About %1", KGlobal::caption());
|
|
|
|
}
|
|
|
|
|
|
|
|
KDialog *dialog = new KDialog(parent, Qt::Dialog);
|
|
|
|
dialog->setCaption( caption );
|
|
|
|
dialog->setButtons( KDialog::Ok );
|
|
|
|
dialog->setObjectName( "about" );
|
|
|
|
applyOptions( dialog, options );
|
|
|
|
dialog->setDefaultButton( KDialog::Ok );
|
|
|
|
dialog->setEscapeButton( KDialog::Ok );
|
|
|
|
if (qApp->windowIcon().isNull()) {
|
|
|
|
QPixmap ret = QMessageBox::standardIcon(QMessageBox::Information);
|
|
|
|
dialog->setWindowIcon(ret);
|
|
|
|
}
|
|
|
|
|
|
|
|
createKMessageBox(dialog, qApp->windowIcon(), text, QStringList(), QString(), 0, options);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::messageBox( QWidget *parent, DialogType type, const QString &text,
|
|
|
|
const QString &caption, const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo, const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontShowAskAgainName, Options options )
|
|
|
|
{
|
|
|
|
return messageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption,
|
|
|
|
buttonYes, buttonNo, buttonCancel, dontShowAskAgainName, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
int KMessageBox::messageBoxWId( WId parent_id, DialogType type, const QString &text,
|
|
|
|
const QString &caption, const KGuiItem &buttonYes,
|
|
|
|
const KGuiItem &buttonNo, const KGuiItem &buttonCancel,
|
|
|
|
const QString &dontShow, Options options )
|
|
|
|
{
|
|
|
|
switch (type) {
|
|
|
|
case QuestionYesNo:
|
|
|
|
return KMessageBox::questionYesNoWId( parent_id,
|
|
|
|
text, caption, buttonYes, buttonNo, dontShow, options );
|
|
|
|
case QuestionYesNoCancel:
|
|
|
|
return KMessageBox::questionYesNoCancelWId( parent_id,
|
|
|
|
text, caption, buttonYes, buttonNo, buttonCancel, dontShow, options );
|
|
|
|
case WarningYesNo:
|
|
|
|
return KMessageBox::warningYesNoWId( parent_id,
|
|
|
|
text, caption, buttonYes, buttonNo, dontShow, options );
|
|
|
|
case WarningContinueCancel:
|
|
|
|
return KMessageBox::warningContinueCancelWId( parent_id,
|
|
|
|
text, caption, KGuiItem(buttonYes.text()), buttonCancel, dontShow, options );
|
|
|
|
case WarningYesNoCancel:
|
|
|
|
return KMessageBox::warningYesNoCancelWId( parent_id,
|
|
|
|
text, caption, buttonYes, buttonNo, buttonCancel, dontShow, options );
|
|
|
|
case Information:
|
|
|
|
KMessageBox::informationWId( parent_id,
|
|
|
|
text, caption, dontShow, options );
|
|
|
|
return KMessageBox::Ok;
|
|
|
|
|
|
|
|
case Error:
|
|
|
|
KMessageBox::errorWId( parent_id, text, caption, options );
|
|
|
|
return KMessageBox::Ok;
|
|
|
|
|
|
|
|
case Sorry:
|
|
|
|
KMessageBox::sorryWId( parent_id, text, caption, options );
|
|
|
|
return KMessageBox::Ok;
|
|
|
|
}
|
|
|
|
return KMessageBox::Cancel;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedMessageBox( QWidget *parent, DialogType type, const QString &text, const QString &caption, Options options )
|
|
|
|
{
|
|
|
|
return queuedMessageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption, options );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedMessageBoxWId( WId parent_id, DialogType type, const QString &text, const QString &caption, Options options )
|
|
|
|
{
|
|
|
|
KMessageBox_queue = true;
|
|
|
|
(void) messageBoxWId(parent_id, type, text, caption, KStandardGuiItem::yes(),
|
|
|
|
KStandardGuiItem::no(), KStandardGuiItem::cancel(), QString(), options);
|
|
|
|
KMessageBox_queue = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedMessageBox( QWidget *parent, DialogType type, const QString &text, const QString &caption )
|
|
|
|
{
|
|
|
|
return queuedMessageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption );
|
|
|
|
}
|
|
|
|
|
|
|
|
void KMessageBox::queuedMessageBoxWId( WId parent_id, DialogType type, const QString &text, const QString &caption )
|
|
|
|
{
|
|
|
|
KMessageBox_queue = true;
|
|
|
|
(void) messageBoxWId(parent_id, type, text, caption);
|
|
|
|
KMessageBox_queue = false;
|
|
|
|
}
|