• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDEUI

  • kdeui
  • dialogs
kmessagebox.cpp
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 Copyright (C) 1999 Waldo Bastian (bastian@kde.org)
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; version 2
7 of the License.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#include "kmessagebox.h"
21
22#include <QtCore/QPointer>
23#include <QtGui/QCheckBox>
24#include <QtGui/QGroupBox>
25#include <QtGui/QLabel>
26#include <QtGui/QLayout>
27#include <QtGui/QListWidget>
28#include <QtGui/QScrollArea>
29#include <QtGui/QScrollBar>
30#include <QtGui/QTextDocumentFragment>
31
32#include <kapplication.h>
33#include <kconfig.h>
34#include <kdialog.h>
35#include <kdialogqueue_p.h>
36#include <kglobalsettings.h>
37#include <klocale.h>
38#include <knotification.h>
39#include <kiconloader.h>
40#include <kconfiggroup.h>
41#include <ktextedit.h>
42#include <ksqueezedtextlabel.h>
43#include <kwindowsystem.h>
44
45// Some i18n filters, that standard button texts are piped through
46// (the new KGuiItem object with filtered text is created from the old one).
47
48// i18n: Filter for the Yes-button text in standard message dialogs,
49// after the message caption/text have been translated.
50#define I18N_FILTER_BUTTON_YES(src, dst) \
51 KGuiItem dst(src); \
52 dst.setText( i18nc( "@action:button filter-yes", "%1", src.text() ) );
53
54// i18n: Filter for the No-button text in standard message dialogs,
55// after the message caption/text have been translated.
56#define I18N_FILTER_BUTTON_NO(src, dst) \
57 KGuiItem dst(src); \
58 dst.setText( i18nc( "@action:button filter-no", "%1", src.text() ) );
59
60// i18n: Filter for the Continue-button text in standard message dialogs,
61// after the message caption/text have been translated.
62#define I18N_FILTER_BUTTON_CONTINUE(src, dst) \
63 KGuiItem dst(src); \
64 dst.setText( i18nc( "@action:button filter-continue", "%1", src.text() ) );
65
66// i18n: Filter for the Cancel-button text in standard message dialogs,
67// after the message caption/text have been translated.
68#define I18N_FILTER_BUTTON_CANCEL(src, dst) \
69 KGuiItem dst(src); \
70 dst.setText( i18nc( "@action:button filter-cancel", "%1", src.text() ) );
71
72// i18n: Called after the button texts in standard message dialogs
73// have been filtered by the messages above. Not visible to user.
74#define I18N_POST_BUTTON_FILTER \
75 i18nc( "@action:button post-filter", "." );
76
77static bool KMessageBox_queue = false;
78KConfig* KMessageBox_againConfig = 0;
79
80
81static QIcon themedMessageBoxIcon(QMessageBox::Icon icon)
82{
83 QString icon_name;
84
85 switch (icon) {
86 case QMessageBox::NoIcon:
87 return QIcon();
88 break;
89 case QMessageBox::Information:
90 icon_name = "dialog-information";
91 break;
92 case QMessageBox::Warning:
93 icon_name = "dialog-warning";
94 break;
95 case QMessageBox::Critical:
96 icon_name = "dialog-error";
97 break;
98 default:
99 break;
100 }
101
102 QIcon ret = KIconLoader::global()->loadIcon(icon_name, KIconLoader::NoGroup, KIconLoader::SizeHuge, KIconLoader::DefaultState, QStringList(), 0, true);
103
104 if (ret.isNull()) {
105 return QMessageBox::standardIcon(icon);
106 } else {
107 return ret;
108 }
109}
110
111static void sendNotification( QString message, //krazy:exclude=passbyvalue
112 const QStringList& strlist,
113 QMessageBox::Icon icon,
114 WId parent_id )
115{
116 // create the message for KNotify
117 QString messageType;
118 switch (icon) {
119 case QMessageBox::Warning:
120 messageType = "messageWarning";
121 break;
122 case QMessageBox::Critical:
123 messageType = "messageCritical";
124 break;
125 case QMessageBox::Question:
126 messageType = "messageQuestion";
127 break;
128 default:
129 messageType = "messageInformation";
130 break;
131 }
132
133 if ( !strlist.isEmpty() ) {
134 for ( QStringList::ConstIterator it = strlist.begin(); it != strlist.end(); ++it ) {
135 message += '\n' + *it;
136 }
137 }
138
139 if ( !message.isEmpty() ) {
140 KNotification::event( messageType, message, QPixmap(), QWidget::find( parent_id ),
141 KNotification::DefaultEvent | KNotification::CloseOnTimeout );
142 }
143}
144
145static void applyOptions( KDialog* dialog, KMessageBox::Options options )
146{
147 if ( options & KMessageBox::WindowModal ) {
148 dialog->setWindowModality( Qt::WindowModal );
149 }
150 dialog->setModal( true );
151}
152
153int KMessageBox::createKMessageBox(KDialog *dialog, QMessageBox::Icon icon,
154 const QString &text, const QStringList &strlist,
155 const QString &ask, bool *checkboxReturn,
156 Options options, const QString &details)
157{
158 return createKMessageBox(dialog, themedMessageBoxIcon(icon), text, strlist,
159 ask, checkboxReturn, options, details, icon);
160}
161
162
163int KMessageBox::createKMessageBox(KDialog *dialog, const QIcon &icon,
164 const QString &text, const QStringList &strlist,
165 const QString &ask, bool *checkboxReturn, Options options,
166 const QString &details, QMessageBox::Icon notifyType)
167{
168 QWidget *mainWidget = new QWidget(dialog);
169 QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
170 mainLayout->setSpacing(KDialog::spacingHint() * 2); // provide extra spacing
171 mainLayout->setMargin(0);
172
173 QHBoxLayout *hLayout = new QHBoxLayout();
174 hLayout->setMargin(0);
175 hLayout->setSpacing(-1); // use default spacing
176 mainLayout->addLayout(hLayout,5);
177
178 QLabel *iconLabel = new QLabel(mainWidget);
179
180 if (!icon.isNull()) {
181 QStyleOption option;
182 option.initFrom(mainWidget);
183 iconLabel->setPixmap(icon.pixmap(mainWidget->style()->pixelMetric(QStyle::PM_MessageBoxIconSize, &option, mainWidget)));
184 }
185
186 QVBoxLayout *iconLayout = new QVBoxLayout();
187 iconLayout->addStretch(1);
188 iconLayout->addWidget(iconLabel);
189 iconLayout->addStretch(5);
190
191 hLayout->addLayout(iconLayout,0);
192 hLayout->addSpacing(KDialog::spacingHint());
193
194 QLabel *messageLabel = new QLabel(text, mainWidget);
195 messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
196 Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard;
197 if (options & KMessageBox::AllowLink) {
198 flags |= Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard;
199 }
200 messageLabel->setTextInteractionFlags(flags);
201
202 QRect desktop = KGlobalSettings::desktopGeometry(dialog);
203 bool usingSqueezedTextLabel = false;
204 if (messageLabel->sizeHint().width() > desktop.width() * 0.5) {
205 // enable automatic wrapping of messages which are longer than 50% of screen width
206 messageLabel->setWordWrap(true);
207 // display a text widget with scrollbar if still too wide
208 usingSqueezedTextLabel = messageLabel->sizeHint().width() > desktop.width() * 0.85;
209 if (usingSqueezedTextLabel)
210 {
211 delete messageLabel;
212 messageLabel = new KSqueezedTextLabel(text, mainWidget);
213 messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
214 messageLabel->setTextInteractionFlags(flags);
215 }
216 }
217
218 QPalette messagePal(messageLabel->palette());
219 messagePal.setColor(QPalette::Window, Qt::transparent);
220 messageLabel->setPalette(messagePal);
221
222
223 bool usingScrollArea=desktop.height() / 3 < messageLabel->sizeHint().height();
224 if (usingScrollArea)
225 {
226 QScrollArea* messageScrollArea = new QScrollArea(mainWidget);
227 messageScrollArea->setWidget(messageLabel);
228 messageScrollArea->setFrameShape(QFrame::NoFrame);
229 messageScrollArea->setWidgetResizable(true);
230 QPalette scrollPal(messageScrollArea->palette());
231 scrollPal.setColor(QPalette::Window, Qt::transparent);
232 messageScrollArea->viewport()->setPalette(scrollPal);
233 hLayout->addWidget(messageScrollArea,5);
234 }
235 else
236 hLayout->addWidget(messageLabel,5);
237
238
239 const bool usingListWidget=!strlist.isEmpty();
240 if (usingListWidget) {
241 // enable automatic wrapping since the listwidget has already a good initial width
242 messageLabel->setWordWrap(true);
243 QListWidget *listWidget = new QListWidget(mainWidget);
244 listWidget->addItems(strlist);
245
246 QStyleOptionViewItem styleOption;
247 styleOption.initFrom(listWidget);
248 QFontMetrics fm(styleOption.font);
249 int w = listWidget->width();
250 Q_FOREACH(const QString &str, strlist) {
251 w = qMax(w, fm.width(str));
252 }
253 const int borderWidth = listWidget->width() - listWidget->viewport()->width() + listWidget->verticalScrollBar()->height();
254 w += borderWidth;
255 if (w > desktop.width() * 0.85) { // limit listWidget size to 85% of screen width
256 w = qRound(desktop.width() * 0.85);
257 }
258 listWidget->setMinimumWidth(w);
259
260 mainLayout->addWidget(listWidget,usingScrollArea?10:50);
261 listWidget->setSelectionMode(QListWidget::NoSelection);
262 messageLabel->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Minimum);
263 }
264 else if (!usingScrollArea)
265 mainLayout->addStretch(15);
266
267
268 QPointer<QCheckBox> checkbox = 0;
269 if (!ask.isEmpty()) {
270 checkbox = new QCheckBox(ask, mainWidget);
271 mainLayout->addWidget(checkbox);
272 if (checkboxReturn) {
273 checkbox->setChecked(*checkboxReturn);
274 }
275 }
276
277 if (!details.isEmpty()) {
278 QGroupBox *detailsGroup = new QGroupBox(i18n("Details"));
279 QVBoxLayout *detailsLayout = new QVBoxLayout(detailsGroup);
280 if (details.length() < 512) {
281 QLabel *detailsLabel = new QLabel(details);
282 detailsLabel->setOpenExternalLinks(options & KMessageBox::AllowLink);
283 Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard;
284 if ( options & KMessageBox::AllowLink )
285 flags |= Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard;;
286 detailsLabel->setTextInteractionFlags(flags);
287 detailsLabel->setWordWrap(true);
288 detailsLayout->addWidget(detailsLabel,50);
289 } else {
290 KTextEdit *detailTextEdit = new KTextEdit(details);
291 detailTextEdit->setReadOnly(true);
292 detailTextEdit->setMinimumHeight(detailTextEdit->fontMetrics().lineSpacing() * 11);
293 detailsLayout->addWidget(detailTextEdit,50);
294 }
295 if (!usingListWidget)
296 mainLayout->setStretchFactor(hLayout,10);
297 dialog->setDetailsWidget(detailsGroup);
298 }
299
300 dialog->setMainWidget(mainWidget);
301 if (!usingListWidget && !usingScrollArea && !usingSqueezedTextLabel && details.isEmpty())
302 dialog->setFixedSize(dialog->sizeHint() + QSize( 10, 10 ));
303 else if (!details.isEmpty() && dialog->minimumHeight()<iconLabel->sizeHint().height()*2)//strange bug...
304 {
305 if (!usingScrollArea)
306 dialog->setMinimumSize(300,qMax(150,qMax(iconLabel->sizeHint().height(),messageLabel->sizeHint().height())));
307 else
308 dialog->setMinimumSize(300,qMax(150,iconLabel->sizeHint().height()));
309 }
310
311
312 if ((options & KMessageBox::Dangerous)) {
313 if (dialog->isButtonEnabled(KDialog::Cancel))
314 dialog->setDefaultButton(KDialog::Cancel);
315 else if (dialog->isButtonEnabled(KDialog::No))
316 dialog->setDefaultButton(KDialog::No);
317 }
318
319 KDialog::ButtonCode defaultCode = dialog->defaultButton();
320 if (defaultCode != KDialog::NoDefault) {
321 dialog->setButtonFocus(defaultCode);
322 }
323
324#ifndef Q_WS_WIN // FIXME problems with KNotify on Windows
325 if ((options & KMessageBox::Notify)) {
326 sendNotification(text, strlist, notifyType, dialog->topLevelWidget()->winId());
327 }
328#endif
329
330 if (KMessageBox_queue) {
331 KDialogQueue::queueDialog(dialog);
332 return KMessageBox::Cancel; // We have to return something.
333 }
334
335 if ((options & KMessageBox::NoExec)) {
336 return KMessageBox::Cancel; // We have to return something.
337 }
338
339 // We use a QPointer because the dialog may get deleted
340 // during exec() if the parent of the dialog gets deleted.
341 // In that case the QPointer will reset to 0.
342 QPointer<KDialog> guardedDialog = dialog;
343
344 const int result = guardedDialog->exec();
345 if (checkbox && checkboxReturn) {
346 *checkboxReturn = checkbox->isChecked();
347 }
348
349 delete (KDialog *) guardedDialog;
350 return result;
351}
352
353int KMessageBox::questionYesNo(QWidget *parent, const QString &text,
354 const QString &caption,
355 const KGuiItem &buttonYes,
356 const KGuiItem &buttonNo,
357 const QString &dontAskAgainName,
358 Options options)
359{
360 return questionYesNoList(parent, text, QStringList(), caption,
361 buttonYes, buttonNo, dontAskAgainName, options);
362}
363
364int KMessageBox::questionYesNoWId(WId parent_id, const QString &text,
365 const QString &caption,
366 const KGuiItem &buttonYes,
367 const KGuiItem &buttonNo,
368 const QString &dontAskAgainName,
369 Options options)
370{
371 return questionYesNoListWId(parent_id, text, QStringList(), caption,
372 buttonYes, buttonNo, dontAskAgainName, options);
373}
374
375bool KMessageBox::shouldBeShownYesNo(const QString &dontShowAgainName,
376 ButtonCode &result)
377{
378 if ( dontShowAgainName.isEmpty() ) {
379 return true;
380 }
381 KConfigGroup cg( KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
382 const QString dontAsk = cg.readEntry(dontShowAgainName, QString()).toLower();
383 if (dontAsk == "yes" || dontAsk == "true") {
384 result = Yes;
385 return false;
386 }
387 if (dontAsk == "no" || dontAsk == "false") {
388 result = No;
389 return false;
390 }
391 return true;
392}
393
394bool KMessageBox::shouldBeShownContinue(const QString &dontShowAgainName)
395{
396 if ( dontShowAgainName.isEmpty() ) {
397 return true;
398 }
399 KConfigGroup cg( KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
400 return cg.readEntry(dontShowAgainName, true);
401}
402
403void KMessageBox::saveDontShowAgainYesNo(const QString &dontShowAgainName,
404 ButtonCode result)
405{
406 if ( dontShowAgainName.isEmpty() ) {
407 return;
408 }
409 KConfigGroup::WriteConfigFlags flags = KConfig::Persistent;
410 if (dontShowAgainName[0] == ':') {
411 flags |= KConfigGroup::Global;
412 }
413 KConfigGroup cg( KMessageBox_againConfig? KMessageBox_againConfig : KGlobal::config().data(), "Notification Messages" );
414 cg.writeEntry( dontShowAgainName, result==Yes, flags );
415 cg.sync();
416}
417
418void KMessageBox::saveDontShowAgainContinue(const QString &dontShowAgainName)
419{
420 if ( dontShowAgainName.isEmpty() ) {
421 return;
422 }
423 KConfigGroup::WriteConfigFlags flags = KConfigGroup::Persistent;
424 if (dontShowAgainName[0] == ':') {
425 flags |= KConfigGroup::Global;
426 }
427 KConfigGroup cg( KMessageBox_againConfig? KMessageBox_againConfig: KGlobal::config().data(), "Notification Messages" );
428 cg.writeEntry( dontShowAgainName, false, flags );
429 cg.sync();
430}
431
432void KMessageBox::setDontShowAskAgainConfig(KConfig* cfg)
433{
434 KMessageBox_againConfig = cfg;
435}
436
437int KMessageBox::questionYesNoList(QWidget *parent, const QString &text,
438 const QStringList &strlist,
439 const QString &caption,
440 const KGuiItem &buttonYes,
441 const KGuiItem &buttonNo,
442 const QString &dontAskAgainName,
443 Options options)
444{ // in order to avoid code duplication, convert to WId, it will be converted back
445 return questionYesNoListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
446 caption, buttonYes, buttonNo, dontAskAgainName, options );
447}
448
449int KMessageBox::questionYesNoListWId(WId parent_id, const QString &text,
450 const QStringList &strlist,
451 const QString &caption,
452 const KGuiItem &buttonYes_,
453 const KGuiItem &buttonNo_,
454 const QString &dontAskAgainName,
455 Options options)
456{
457 ButtonCode res;
458 if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
459 return res;
460 }
461
462 I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
463 I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
464 I18N_POST_BUTTON_FILTER
465
466 QWidget* parent = QWidget::find( parent_id );
467 KDialog *dialog = new KDialog(parent, Qt::Dialog);
468 dialog->setCaption( caption.isEmpty() ? i18n("Question") : caption );
469 dialog->setButtons( KDialog::Yes | KDialog::No );
470 dialog->setObjectName( "questionYesNo" );
471 dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
472 dialog->setButtonGuiItem( KDialog::No, buttonNo );
473 dialog->setDefaultButton( KDialog::Yes );
474 dialog->setEscapeButton( KDialog::No );
475 applyOptions( dialog, options );
476 if ( options & KMessageBox::PlainCaption ) {
477 dialog->setPlainCaption( caption );
478 }
479 if ( parent == NULL && parent_id ) {
480 KWindowSystem::setMainWindow( dialog, parent_id );
481 }
482
483 bool checkboxResult = false;
484 const int result = createKMessageBox(dialog, QMessageBox::Information, text, strlist,
485 dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
486 &checkboxResult, options);
487 res = (result==KDialog::Yes ? Yes : No);
488
489 if (checkboxResult) {
490 saveDontShowAgainYesNo(dontAskAgainName, res);
491 }
492 return res;
493}
494
495int KMessageBox::questionYesNoCancel(QWidget *parent,
496 const QString &text,
497 const QString &caption,
498 const KGuiItem &buttonYes,
499 const KGuiItem &buttonNo,
500 const KGuiItem &buttonCancel,
501 const QString &dontAskAgainName,
502 Options options)
503{
504 return questionYesNoCancelWId( parent ? parent->effectiveWinId() : 0, text, caption, buttonYes, buttonNo, buttonCancel,
505 dontAskAgainName, options );
506}
507
508int KMessageBox::questionYesNoCancelWId(WId parent_id,
509 const QString &text,
510 const QString &caption,
511 const KGuiItem &buttonYes_,
512 const KGuiItem &buttonNo_,
513 const KGuiItem &buttonCancel_,
514 const QString &dontAskAgainName,
515 Options options)
516{
517 ButtonCode res;
518 if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
519 return res;
520 }
521
522 I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
523 I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
524 I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
525 I18N_POST_BUTTON_FILTER
526
527 QWidget* parent = QWidget::find( parent_id );
528 KDialog *dialog= new KDialog(parent, Qt::Dialog);
529 dialog->setCaption( caption.isEmpty() ? i18n("Question") : caption );
530 dialog->setButtons( KDialog::Yes | KDialog::No | KDialog::Cancel );
531 dialog->setObjectName( "questionYesNoCancel" );
532 dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
533 dialog->setButtonGuiItem( KDialog::No, buttonNo );
534 dialog->setButtonGuiItem( KDialog::Cancel, buttonCancel );
535 dialog->setDefaultButton( KDialog::Yes );
536 applyOptions( dialog, options );
537 if ( options & KMessageBox::PlainCaption ) {
538 dialog->setPlainCaption( caption );
539 }
540 if ( parent == NULL && parent_id ) {
541 KWindowSystem::setMainWindow( dialog, parent_id );
542 }
543
544 bool checkboxResult = false;
545 const int result = createKMessageBox(dialog, QMessageBox::Information,
546 text, QStringList(),
547 dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
548 &checkboxResult, options);
549
550 if ( result == KDialog::Yes ) {
551 res = Yes;
552 } else if ( result == KDialog::No ) {
553 res = No;
554 } else {
555 return Cancel;
556 }
557
558 if (checkboxResult) {
559 saveDontShowAgainYesNo(dontAskAgainName, res);
560 }
561 return res;
562}
563
564int KMessageBox::warningYesNo(QWidget *parent, const QString &text,
565 const QString &caption,
566 const KGuiItem &buttonYes,
567 const KGuiItem &buttonNo,
568 const QString &dontAskAgainName,
569 Options options)
570{
571 return warningYesNoList(parent, text, QStringList(), caption,
572 buttonYes, buttonNo, dontAskAgainName, options);
573}
574
575int KMessageBox::warningYesNoWId(WId parent_id, const QString &text,
576 const QString &caption,
577 const KGuiItem &buttonYes,
578 const KGuiItem &buttonNo,
579 const QString &dontAskAgainName,
580 Options options)
581{
582 return warningYesNoListWId(parent_id, text, QStringList(), caption,
583 buttonYes, buttonNo, dontAskAgainName, options);
584}
585
586int KMessageBox::warningYesNoList(QWidget *parent, const QString &text,
587 const QStringList &strlist,
588 const QString &caption,
589 const KGuiItem &buttonYes,
590 const KGuiItem &buttonNo,
591 const QString &dontAskAgainName,
592 Options options)
593{
594 return warningYesNoListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption,
595 buttonYes, buttonNo, dontAskAgainName, options );
596}
597
598int KMessageBox::warningYesNoListWId(WId parent_id, const QString &text,
599 const QStringList &strlist,
600 const QString &caption,
601 const KGuiItem &buttonYes_,
602 const KGuiItem &buttonNo_,
603 const QString &dontAskAgainName,
604 Options options)
605{
606 ButtonCode res;
607 if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
608 return res;
609 }
610
611 I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
612 I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
613 I18N_POST_BUTTON_FILTER
614
615 QWidget* parent = QWidget::find( parent_id );
616 KDialog *dialog = new KDialog(parent, Qt::Dialog);
617 dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
618 dialog->setButtons( KDialog::Yes | KDialog::No );
619 dialog->setObjectName( "warningYesNoList" );
620 dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
621 dialog->setButtonGuiItem( KDialog::No, buttonNo );
622 dialog->setDefaultButton( KDialog::No );
623 dialog->setEscapeButton( KDialog::No );
624 applyOptions( dialog, options );
625 if ( options & KMessageBox::PlainCaption ) {
626 dialog->setPlainCaption( caption );
627 }
628 if ( parent == NULL && parent_id ) {
629 KWindowSystem::setMainWindow( dialog, parent_id );
630 }
631
632 bool checkboxResult = false;
633 const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
634 dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
635 &checkboxResult, options);
636 res = (result==KDialog::Yes ? Yes : No);
637
638 if (checkboxResult) {
639 saveDontShowAgainYesNo(dontAskAgainName, res);
640 }
641 return res;
642}
643
644int KMessageBox::warningContinueCancel(QWidget *parent,
645 const QString &text,
646 const QString &caption,
647 const KGuiItem &buttonContinue,
648 const KGuiItem &buttonCancel,
649 const QString &dontAskAgainName,
650 Options options)
651{
652 return warningContinueCancelList(parent, text, QStringList(), caption,
653 buttonContinue, buttonCancel, dontAskAgainName, options);
654}
655
656int KMessageBox::warningContinueCancelWId(WId parent_id,
657 const QString &text,
658 const QString &caption,
659 const KGuiItem &buttonContinue,
660 const KGuiItem &buttonCancel,
661 const QString &dontAskAgainName,
662 Options options)
663{
664 return warningContinueCancelListWId(parent_id, text, QStringList(), caption,
665 buttonContinue, buttonCancel, dontAskAgainName, options);
666}
667
668int KMessageBox::warningContinueCancelList(QWidget *parent, const QString &text,
669 const QStringList &strlist,
670 const QString &caption,
671 const KGuiItem &buttonContinue,
672 const KGuiItem &buttonCancel,
673 const QString &dontAskAgainName,
674 Options options)
675{
676 return warningContinueCancelListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
677 caption, buttonContinue, buttonCancel, dontAskAgainName, options );
678}
679
680int KMessageBox::warningContinueCancelListWId(WId parent_id, const QString &text,
681 const QStringList &strlist,
682 const QString &caption,
683 const KGuiItem &buttonContinue_,
684 const KGuiItem &buttonCancel_,
685 const QString &dontAskAgainName,
686 Options options)
687{
688 if ( !shouldBeShownContinue(dontAskAgainName) )
689 return Continue;
690
691 I18N_FILTER_BUTTON_CONTINUE(buttonContinue_, buttonContinue)
692 I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
693 I18N_POST_BUTTON_FILTER
694
695 QWidget* parent = QWidget::find( parent_id );
696 KDialog *dialog = new KDialog(parent, Qt::Dialog);
697 dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
698 dialog->setButtons( KDialog::Yes | KDialog::No );
699 dialog->setObjectName( "warningYesNo" );
700 dialog->setButtonGuiItem( KDialog::Yes, buttonContinue );
701 dialog->setButtonGuiItem( KDialog::No, buttonCancel );
702 dialog->setDefaultButton( KDialog::Yes );
703 dialog->setEscapeButton( KDialog::No );
704 applyOptions( dialog, options );
705 if ( options & KMessageBox::PlainCaption ) {
706 dialog->setPlainCaption( caption );
707 }
708 if ( parent == NULL && parent_id ) {
709 KWindowSystem::setMainWindow( dialog, parent_id );
710 }
711
712 bool checkboxResult = false;
713 const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
714 dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
715 &checkboxResult, options);
716
717 if ( result != KDialog::Yes ) {
718 return Cancel;
719 }
720 if (checkboxResult) {
721 saveDontShowAgainContinue(dontAskAgainName);
722 }
723 return Continue;
724}
725
726int KMessageBox::warningYesNoCancel(QWidget *parent, const QString &text,
727 const QString &caption,
728 const KGuiItem &buttonYes,
729 const KGuiItem &buttonNo,
730 const KGuiItem &buttonCancel,
731 const QString &dontAskAgainName,
732 Options options)
733{
734 return warningYesNoCancelList(parent, text, QStringList(), caption,
735 buttonYes, buttonNo, buttonCancel, dontAskAgainName, options);
736}
737
738int KMessageBox::warningYesNoCancelWId(WId parent_id, const QString &text,
739 const QString &caption,
740 const KGuiItem &buttonYes,
741 const KGuiItem &buttonNo,
742 const KGuiItem &buttonCancel,
743 const QString &dontAskAgainName,
744 Options options)
745{
746 return warningYesNoCancelListWId(parent_id, text, QStringList(), caption,
747 buttonYes, buttonNo, buttonCancel, dontAskAgainName, options);
748}
749
750int KMessageBox::warningYesNoCancelList(QWidget *parent, const QString &text,
751 const QStringList &strlist,
752 const QString &caption,
753 const KGuiItem &buttonYes,
754 const KGuiItem &buttonNo,
755 const KGuiItem &buttonCancel,
756 const QString &dontAskAgainName,
757 Options options)
758{
759 return warningYesNoCancelListWId( parent ? parent->effectiveWinId() : 0, text, strlist,
760 caption, buttonYes, buttonNo, buttonCancel, dontAskAgainName, options );
761}
762
763int KMessageBox::warningYesNoCancelListWId(WId parent_id, const QString &text,
764 const QStringList &strlist,
765 const QString &caption,
766 const KGuiItem &buttonYes_,
767 const KGuiItem &buttonNo_,
768 const KGuiItem &buttonCancel_,
769 const QString &dontAskAgainName,
770 Options options)
771{
772 ButtonCode res;
773 if ( !shouldBeShownYesNo(dontAskAgainName, res) ) {
774 return res;
775 }
776
777 I18N_FILTER_BUTTON_YES(buttonYes_, buttonYes)
778 I18N_FILTER_BUTTON_NO(buttonNo_, buttonNo)
779 I18N_FILTER_BUTTON_CANCEL(buttonCancel_, buttonCancel)
780 I18N_POST_BUTTON_FILTER
781
782 QWidget* parent = QWidget::find( parent_id );
783 KDialog *dialog = new KDialog(parent, Qt::Dialog);
784 dialog->setCaption( caption.isEmpty() ? i18n("Warning") : caption );
785 dialog->setButtons( KDialog::Yes | KDialog::No | KDialog::Cancel );
786 dialog->setObjectName( "warningYesNoCancel" );
787 dialog->setButtonGuiItem( KDialog::Yes, buttonYes );
788 dialog->setButtonGuiItem( KDialog::No, buttonNo );
789 dialog->setButtonGuiItem( KDialog::Cancel, buttonCancel );
790 dialog->setDefaultButton( KDialog::Yes );
791 applyOptions( dialog, options );
792 if ( options & KMessageBox::PlainCaption ) {
793 dialog->setPlainCaption( caption );
794 }
795 if ( parent == NULL && parent_id ) {
796 KWindowSystem::setMainWindow( dialog, parent_id );
797 }
798
799 bool checkboxResult = false;
800 const int result = createKMessageBox(dialog, QMessageBox::Warning, text, strlist,
801 dontAskAgainName.isEmpty() ? QString() : i18n("Do not ask again"),
802 &checkboxResult, options);
803
804 if ( result == KDialog::Yes ) {
805 res = Yes;
806 } else if ( result == KDialog::No ) {
807 res = No;
808 } else {
809 return Cancel;
810 }
811
812 if (checkboxResult) {
813 saveDontShowAgainYesNo(dontAskAgainName, res);
814 }
815 return res;
816}
817
818void KMessageBox::error(QWidget *parent, const QString &text,
819 const QString &caption, Options options)
820{
821 return errorListWId( parent ? parent->effectiveWinId() : 0, text, QStringList(), caption, options );
822}
823
824void KMessageBox::errorWId(WId parent_id, const QString &text,
825 const QString &caption, Options options)
826{
827 errorListWId( parent_id, text, QStringList(), caption, options );
828}
829
830void KMessageBox::errorList(QWidget *parent, const QString &text, const QStringList &strlist,
831 const QString &caption, Options options)
832{
833 return errorListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption, options );
834}
835
836void KMessageBox::errorListWId(WId parent_id, const QString &text, const QStringList &strlist,
837 const QString &caption, Options options)
838{
839 QWidget* parent = QWidget::find( parent_id );
840 KDialog *dialog = new KDialog(parent, Qt::Dialog);
841 dialog->setCaption( caption.isEmpty() ? i18n("Error") : caption );
842 dialog->setButtons( KDialog::Ok );
843 dialog->setObjectName( "error" );
844 dialog->setDefaultButton( KDialog::Ok );
845 dialog->setEscapeButton( KDialog::Ok );
846 applyOptions( dialog, options );
847 if ( options & KMessageBox::PlainCaption ) {
848 dialog->setPlainCaption( caption );
849 }
850 if ( parent == NULL && parent_id ) {
851 KWindowSystem::setMainWindow( dialog, parent_id );
852 }
853
854 createKMessageBox(dialog, QMessageBox::Critical, text, strlist, QString(), 0, options);
855}
856
857void
858KMessageBox::detailedError(QWidget *parent, const QString &text,
859 const QString &details,
860 const QString &caption, Options options)
861{
862 return detailedErrorWId( parent ? parent->effectiveWinId() : 0, text, details, caption, options );
863}
864
865void KMessageBox::detailedErrorWId(WId parent_id, const QString &text,
866 const QString &details,
867 const QString &caption, Options options)
868{
869 QWidget* parent = QWidget::find( parent_id );
870 KDialog *dialog = new KDialog(parent, Qt::Dialog);
871 dialog->setCaption( caption.isEmpty() ? i18n("Error") : caption );
872 dialog->setButtons( KDialog::Ok | KDialog::Details );
873 dialog->setObjectName( "error" );
874 dialog->setDefaultButton( KDialog::Ok );
875 dialog->setEscapeButton( KDialog::Ok );
876 applyOptions( dialog, options );
877 if ( options & KMessageBox::PlainCaption ) {
878 dialog->setPlainCaption( caption );
879 }
880 if ( parent == NULL && parent_id ) {
881 KWindowSystem::setMainWindow( dialog, parent_id );
882 }
883
884 createKMessageBox(dialog, QMessageBox::Critical, text, QStringList(), QString(), 0, options, details);
885}
886
887void KMessageBox::queuedDetailedError(QWidget *parent, const QString &text,
888 const QString &details,
889 const QString &caption)
890{
891 return queuedDetailedErrorWId( parent ? parent->effectiveWinId() : 0, text, details, caption );
892}
893
894void KMessageBox::queuedDetailedErrorWId(WId parent_id, const QString &text,
895 const QString &details,
896 const QString &caption)
897{
898 KMessageBox_queue = true;
899 (void) detailedErrorWId(parent_id, text, details, caption);
900 KMessageBox_queue = false;
901}
902
903
904void KMessageBox::sorry(QWidget *parent, const QString &text,
905 const QString &caption, Options options)
906{
907 return sorryWId( parent ? parent->effectiveWinId() : 0, text, caption, options );
908}
909
910void KMessageBox::sorryWId(WId parent_id, const QString &text,
911 const QString &caption, Options options)
912{
913 QWidget* parent = QWidget::find( parent_id );
914 KDialog *dialog = new KDialog(parent, Qt::Dialog);
915 dialog->setCaption( caption.isEmpty() ? i18n("Sorry") : caption );
916 dialog->setButtons( KDialog::Ok );
917 dialog->setObjectName( "sorry" );
918 dialog->setDefaultButton( KDialog::Ok );
919 dialog->setEscapeButton( KDialog::Ok );
920 applyOptions( dialog, options );
921 if ( options & KMessageBox::PlainCaption ) {
922 dialog->setPlainCaption( caption );
923 }
924 if ( parent == NULL && parent_id ) {
925 KWindowSystem::setMainWindow( dialog, parent_id );
926 }
927
928 createKMessageBox(dialog, QMessageBox::Warning, text, QStringList(), QString(), 0, options);
929}
930
931void KMessageBox::detailedSorry(QWidget *parent, const QString &text,
932 const QString &details,
933 const QString &caption, Options options)
934{
935 return detailedSorryWId( parent ? parent->effectiveWinId() : 0, text, details, caption, options );
936}
937
938void KMessageBox::detailedSorryWId(WId parent_id, const QString &text,
939 const QString &details,
940 const QString &caption, Options options)
941{
942 QWidget* parent = QWidget::find( parent_id );
943 KDialog *dialog = new KDialog(parent, Qt::Dialog);
944 dialog->setCaption( caption.isEmpty() ? i18n("Sorry") : caption );
945 dialog->setButtons( KDialog::Ok | KDialog::Details );
946 dialog->setObjectName( "sorry" );
947 dialog->setDefaultButton( KDialog::Ok );
948 dialog->setEscapeButton( KDialog::Ok );
949 applyOptions( dialog, options );
950 if ( options & KMessageBox::PlainCaption ) {
951 dialog->setPlainCaption( caption );
952 }
953 if ( parent == NULL && parent_id ) {
954 KWindowSystem::setMainWindow( dialog, parent_id );
955 }
956
957 createKMessageBox(dialog, QMessageBox::Warning, text, QStringList(), QString(), 0, options, details);
958}
959
960void KMessageBox::information(QWidget *parent,const QString &text,
961 const QString &caption, const QString &dontShowAgainName, Options options)
962{
963 informationList(parent, text, QStringList(), caption, dontShowAgainName, options);
964}
965
966void KMessageBox::informationWId(WId parent_id,const QString &text,
967 const QString &caption, const QString &dontShowAgainName, Options options)
968{
969 informationListWId(parent_id, text, QStringList(), caption, dontShowAgainName, options);
970}
971
972void KMessageBox::informationList(QWidget *parent,const QString &text, const QStringList & strlist,
973 const QString &caption, const QString &dontShowAgainName, Options options)
974{
975 return informationListWId( parent ? parent->effectiveWinId() : 0, text, strlist, caption,
976 dontShowAgainName, options );
977}
978
979void KMessageBox::informationListWId(WId parent_id,const QString &text, const QStringList & strlist,
980 const QString &caption, const QString &dontShowAgainName, Options options)
981{
982 if ( !shouldBeShownContinue(dontShowAgainName) ) {
983 return;
984 }
985
986 QWidget* parent = QWidget::find( parent_id );
987 KDialog *dialog = new KDialog(parent, Qt::Dialog);
988 dialog->setCaption( caption.isEmpty() ? i18n("Information") : caption );
989 dialog->setButtons( KDialog::Ok );
990 dialog->setObjectName( "information" );
991 dialog->setDefaultButton( KDialog::Ok );
992 dialog->setEscapeButton( KDialog::Ok);
993 applyOptions( dialog, options );
994 if ( options & KMessageBox::PlainCaption ) {
995 dialog->setPlainCaption( caption );
996 }
997 if ( parent == NULL && parent_id ) {
998 KWindowSystem::setMainWindow( dialog, parent_id );
999 }
1000
1001 bool checkboxResult = false;
1002
1003 createKMessageBox(dialog, QMessageBox::Information, text, strlist,
1004 dontShowAgainName.isEmpty() ? QString() : i18n("Do not show this message again"),
1005 &checkboxResult, options);
1006
1007 if (checkboxResult) {
1008 saveDontShowAgainContinue(dontShowAgainName);
1009 }
1010}
1011
1012void KMessageBox::enableAllMessages()
1013{
1014 KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data();
1015 if (!config->hasGroup("Notification Messages")) {
1016 return;
1017 }
1018
1019 KConfigGroup cg(config, "Notification Messages" );
1020
1021 typedef QMap<QString, QString> configMap;
1022
1023 const configMap map = cg.entryMap();
1024
1025 configMap::ConstIterator it;
1026 for (it = map.begin(); it != map.end(); ++it) {
1027 cg.deleteEntry( it.key() );
1028 }
1029}
1030
1031void KMessageBox::enableMessage(const QString &dontShowAgainName)
1032{
1033 KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KGlobal::config().data();
1034 if (!config->hasGroup("Notification Messages")) {
1035 return;
1036 }
1037
1038 KConfigGroup cg( config, "Notification Messages" );
1039
1040 cg.deleteEntry(dontShowAgainName);
1041 config->sync();
1042}
1043
1044void KMessageBox::about(QWidget *parent, const QString &text,
1045 const QString &caption, Options options)
1046{
1047 QString _caption = caption;
1048 if (_caption.isEmpty()) {
1049 _caption = i18n("About %1", KGlobal::caption());
1050 }
1051
1052 KDialog *dialog = new KDialog(parent, Qt::Dialog);
1053 dialog->setCaption( caption );
1054 dialog->setButtons( KDialog::Ok );
1055 dialog->setObjectName( "about" );
1056 applyOptions( dialog, options );
1057 dialog->setDefaultButton( KDialog::Ok );
1058 dialog->setEscapeButton( KDialog::Ok );
1059 if (qApp->windowIcon().isNull()) {
1060 QPixmap ret = QMessageBox::standardIcon(QMessageBox::Information);
1061 dialog->setWindowIcon(ret);
1062 }
1063
1064 createKMessageBox(dialog, qApp->windowIcon(), text, QStringList(), QString(), 0, options);
1065 return;
1066}
1067
1068int KMessageBox::messageBox( QWidget *parent, DialogType type, const QString &text,
1069 const QString &caption, const KGuiItem &buttonYes,
1070 const KGuiItem &buttonNo, const KGuiItem &buttonCancel,
1071 const QString &dontShowAskAgainName, Options options )
1072{
1073 return messageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption,
1074 buttonYes, buttonNo, buttonCancel, dontShowAskAgainName, options );
1075}
1076
1077int KMessageBox::messageBoxWId( WId parent_id, DialogType type, const QString &text,
1078 const QString &caption, const KGuiItem &buttonYes,
1079 const KGuiItem &buttonNo, const KGuiItem &buttonCancel,
1080 const QString &dontShow, Options options )
1081{
1082 switch (type) {
1083 case QuestionYesNo:
1084 return KMessageBox::questionYesNoWId( parent_id,
1085 text, caption, buttonYes, buttonNo, dontShow, options );
1086 case QuestionYesNoCancel:
1087 return KMessageBox::questionYesNoCancelWId( parent_id,
1088 text, caption, buttonYes, buttonNo, buttonCancel, dontShow, options );
1089 case WarningYesNo:
1090 return KMessageBox::warningYesNoWId( parent_id,
1091 text, caption, buttonYes, buttonNo, dontShow, options );
1092 case WarningContinueCancel:
1093 return KMessageBox::warningContinueCancelWId( parent_id,
1094 text, caption, KGuiItem(buttonYes.text()), buttonCancel, dontShow, options );
1095 case WarningYesNoCancel:
1096 return KMessageBox::warningYesNoCancelWId( parent_id,
1097 text, caption, buttonYes, buttonNo, buttonCancel, dontShow, options );
1098 case Information:
1099 KMessageBox::informationWId( parent_id,
1100 text, caption, dontShow, options );
1101 return KMessageBox::Ok;
1102
1103 case Error:
1104 KMessageBox::errorWId( parent_id, text, caption, options );
1105 return KMessageBox::Ok;
1106
1107 case Sorry:
1108 KMessageBox::sorryWId( parent_id, text, caption, options );
1109 return KMessageBox::Ok;
1110 }
1111 return KMessageBox::Cancel;
1112}
1113
1114void KMessageBox::queuedMessageBox( QWidget *parent, DialogType type, const QString &text, const QString &caption, Options options )
1115{
1116 return queuedMessageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption, options );
1117}
1118
1119void KMessageBox::queuedMessageBoxWId( WId parent_id, DialogType type, const QString &text, const QString &caption, Options options )
1120{
1121 KMessageBox_queue = true;
1122 (void) messageBoxWId(parent_id, type, text, caption, KStandardGuiItem::yes(),
1123 KStandardGuiItem::no(), KStandardGuiItem::cancel(), QString(), options);
1124 KMessageBox_queue = false;
1125}
1126
1127void KMessageBox::queuedMessageBox( QWidget *parent, DialogType type, const QString &text, const QString &caption )
1128{
1129 return queuedMessageBoxWId( parent ? parent->effectiveWinId() : 0, type, text, caption );
1130}
1131
1132void KMessageBox::queuedMessageBoxWId( WId parent_id, DialogType type, const QString &text, const QString &caption )
1133{
1134 KMessageBox_queue = true;
1135 (void) messageBoxWId(parent_id, type, text, caption);
1136 KMessageBox_queue = false;
1137}
KConfigBase::Persistent
Persistent
KConfigBase::Global
Global
KConfigGroup
KConfigGroup::deleteEntry
void deleteEntry(const char *pKey, WriteConfigFlags pFlags=Normal)
KConfigGroup::writeEntry
void writeEntry(const char *key, const char *value, WriteConfigFlags pFlags=Normal)
KConfigGroup::readEntry
QString readEntry(const char *key, const char *aDefault=0) const
KConfigGroup::sync
void sync()
KConfigGroup::entryMap
QMap< QString, QString > entryMap() const
KConfig
KDialog
A dialog base class with standard buttons and predefined layouts.
Definition: kdialog.h:129
KDialog::setButtonGuiItem
void setButtonGuiItem(ButtonCode id, const KGuiItem &item)
Sets the KGuiItem directly for the button instead of using 3 methods to set the text,...
Definition: kdialog.cpp:699
KDialog::setMainWidget
void setMainWidget(QWidget *widget)
Sets the main widget of the dialog.
Definition: kdialog.cpp:338
KDialog::setButtonFocus
void setButtonFocus(ButtonCode id)
Sets the focus to the button of the passed id.
Definition: kdialog.cpp:798
KDialog::setPlainCaption
virtual void setPlainCaption(const QString &caption)
Make a plain caption without any modifications.
Definition: kdialog.cpp:488
KDialog::sizeHint
virtual QSize sizeHint() const
Reimplemented from QDialog.
Definition: kdialog.cpp:359
KDialog::spacingHint
static int spacingHint()
Returns the number of pixels that should be used between widgets inside a dialog according to the KDE...
Definition: kdialog.cpp:432
KDialog::setButtons
void setButtons(ButtonCodes buttonMask)
Creates (or recreates) the button box and all the buttons in it.
Definition: kdialog.cpp:206
KDialog::ButtonCode
ButtonCode
Definition: kdialog.h:137
KDialog::NoDefault
@ NoDefault
Used when specifying a default button; indicates that no button should be marked by default.
Definition: kdialog.h:153
KDialog::Details
@ Details
Show Details button. (this button will show the detail widget set with setDetailsWidget)
Definition: kdialog.h:149
KDialog::Ok
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition: kdialog.h:141
KDialog::Yes
@ Yes
Show Yes button. (this button closes the dialog and sets the result to KDialog::Yes)
Definition: kdialog.h:147
KDialog::Cancel
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition: kdialog.h:144
KDialog::No
@ No
Show No button. (this button closes the dialog and sets the result to KDialog::No)
Definition: kdialog.h:146
KDialog::setEscapeButton
void setEscapeButton(ButtonCode id)
Sets the button that will be activated when the Escape key is pressed.
Definition: kdialog.cpp:282
KDialog::setDetailsWidget
void setDetailsWidget(QWidget *detailsWidget)
Sets the widget that gets shown when "Details" is enabled.
Definition: kdialog.cpp:806
KDialog::setDefaultButton
void setDefaultButton(ButtonCode id)
Sets the button that will be activated when the Enter key is pressed.
Definition: kdialog.cpp:287
KDialog::defaultButton
ButtonCode defaultButton() const
Returns the button code of the default button, or NoDefault if there is no default button.
Definition: kdialog.cpp:324
KDialog::setCaption
virtual void setCaption(const QString &caption)
Make a KDE compliant caption.
Definition: kdialog.cpp:469
KDialog::isButtonEnabled
bool isButtonEnabled(ButtonCode id) const
Returns whether any button is enabled.
Definition: kdialog.cpp:668
KGlobalSettings::desktopGeometry
static QRect desktopGeometry(const QPoint &point)
This function returns the desktop geometry for an application that needs to set the geometry of a wid...
Definition: kglobalsettings.cpp:732
KGuiItem
An abstract class for GUI data such as ToolTip and Icon.
Definition: kguiitem.h:37
KGuiItem::text
QString text() const
Definition: kguiitem.cpp:117
KIconLoader::NoGroup
@ NoGroup
No group.
Definition: kiconloader.h:129
KIconLoader::global
static KIconLoader * global()
Returns the global icon loader initialized with the global KComponentData.
KIconLoader::DefaultState
@ DefaultState
The default state.
Definition: kiconloader.h:172
KIconLoader::SizeHuge
@ SizeHuge
huge sized icons for iconviews
Definition: kiconloader.h:163
KIconLoader::loadIcon
QPixmap loadIcon(const QString &name, KIconLoader::Group group, int size=0, int state=KIconLoader::DefaultState, const QStringList &overlays=QStringList(), QString *path_store=0L, bool canReturnNull=false) const
Loads an icon.
Definition: kiconloader.cpp:1100
KMessageBox::warningYesNoCancel
static int warningYesNoCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a Yes/No/Cancel "warning" dialog.
Definition: kmessagebox.cpp:726
KMessageBox::detailedErrorWId
static void detailedErrorWId(WId parent_id, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:865
KMessageBox::warningContinueCancelList
static int warningContinueCancelList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a "warning" dialog with a listbox to show information to the user.
Definition: kmessagebox.cpp:668
KMessageBox::error
static void error(QWidget *parent, const QString &text, const QString &caption=QString(), Options options=Notify)
Display an "Error" dialog.
Definition: kmessagebox.cpp:818
KMessageBox::warningYesNoCancelListWId
static int warningYesNoCancelListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:763
KMessageBox::detailedSorry
static void detailedSorry(QWidget *parent, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
Displays a "Sorry" dialog with a "Details >>" button.
Definition: kmessagebox.cpp:931
KMessageBox::warningContinueCancelWId
static int warningContinueCancelWId(WId parent_id, const QString &text, const QString &caption=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:656
KMessageBox::setDontShowAskAgainConfig
static void setDontShowAskAgainConfig(KConfig *cfg)
Use cfg for all settings related to the dontShowAgainName feature.
Definition: kmessagebox.cpp:432
KMessageBox::queuedDetailedError
static void queuedDetailedError(QWidget *parent, const QString &text, const QString &details, const QString &caption=QString())
Like detailedError.
Definition: kmessagebox.cpp:887
KMessageBox::warningYesNoCancelWId
static int warningYesNoCancelWId(WId parent_id, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:738
KMessageBox::warningContinueCancel
static int warningContinueCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a "warning" dialog.
Definition: kmessagebox.cpp:644
KMessageBox::informationWId
static void informationWId(WId parent_id, const QString &text, const QString &caption=QString(), const QString &dontShowAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:966
KMessageBox::detailedError
static void detailedError(QWidget *parent, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
Displays an "Error" dialog with a "Details >>" button.
Definition: kmessagebox.cpp:858
KMessageBox::saveDontShowAgainYesNo
static void saveDontShowAgainYesNo(const QString &dontShowAgainName, ButtonCode result)
Save the fact that the yes/no message box should not be shown again.
Definition: kmessagebox.cpp:403
KMessageBox::saveDontShowAgainContinue
static void saveDontShowAgainContinue(const QString &dontShowAgainName)
Save the fact that the continue/cancel message box should not be shown again.
Definition: kmessagebox.cpp:418
KMessageBox::shouldBeShownYesNo
static bool shouldBeShownYesNo(const QString &dontShowAgainName, ButtonCode &result)
Definition: kmessagebox.cpp:375
KMessageBox::questionYesNoListWId
static int questionYesNoListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:449
KMessageBox::questionYesNoList
static int questionYesNoList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a "question" dialog with a listbox to show information to the user.
Definition: kmessagebox.cpp:437
KMessageBox::warningYesNoListWId
static int warningYesNoListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:598
KMessageBox::enableAllMessages
static void enableAllMessages()
Enable all messages which have been turned off with the dontShowAgainName feature.
Definition: kmessagebox.cpp:1012
KMessageBox::warningContinueCancelListWId
static int warningContinueCancelListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:680
KMessageBox::queuedMessageBoxWId
static void queuedMessageBoxWId(WId parent_id, DialogType type, const QString &text, const QString &caption, Options options)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:1119
KMessageBox::errorWId
static void errorWId(WId parent_id, const QString &text, const QString &caption=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:824
KMessageBox::informationList
static void informationList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), const QString &dontShowAgainName=QString(), Options options=Notify)
Display an "Information" dialog with a listbox.
Definition: kmessagebox.cpp:972
KMessageBox::errorList
static void errorList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), Options options=Notify)
Display an "Error" dialog with a listbox.
Definition: kmessagebox.cpp:830
KMessageBox::messageBoxWId
static int messageBoxWId(WId parent_id, DialogType type, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontShowAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:1077
KMessageBox::questionYesNoCancelWId
static int questionYesNoCancelWId(WId parent_id, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:508
KMessageBox::sorryWId
static void sorryWId(WId parent_id, const QString &text, const QString &caption=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:910
KMessageBox::ButtonCode
ButtonCode
Button types.
Definition: kmessagebox.h:69
KMessageBox::Yes
@ Yes
Definition: kmessagebox.h:72
KMessageBox::Continue
@ Continue
Definition: kmessagebox.h:74
KMessageBox::No
@ No
Definition: kmessagebox.h:73
KMessageBox::Cancel
@ Cancel
Definition: kmessagebox.h:71
KMessageBox::Ok
@ Ok
Definition: kmessagebox.h:70
KMessageBox::questionYesNoWId
static int questionYesNoWId(WId parent_id, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:364
KMessageBox::warningYesNoWId
static int warningYesNoWId(WId parent_id, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:575
KMessageBox::shouldBeShownContinue
static bool shouldBeShownContinue(const QString &dontShowAgainName)
Definition: kmessagebox.cpp:394
KMessageBox::queuedMessageBox
static void queuedMessageBox(QWidget *parent, DialogType type, const QString &text, const QString &caption, Options options)
Like messageBox.
Definition: kmessagebox.cpp:1114
KMessageBox::queuedDetailedErrorWId
static void queuedDetailedErrorWId(WId parent_id, const QString &text, const QString &details, const QString &caption=QString())
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:894
KMessageBox::createKMessageBox
static int createKMessageBox(KDialog *dialog, QMessageBox::Icon icon, const QString &text, const QStringList &strlist, const QString &ask, bool *checkboxReturn, Options options, const QString &details=QString())
Create content and layout of a standard dialog.
Definition: kmessagebox.cpp:153
KMessageBox::informationListWId
static void informationListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), const QString &dontShowAgainName=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:979
KMessageBox::errorListWId
static void errorListWId(WId parent_id, const QString &text, const QStringList &strlist, const QString &caption=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:836
KMessageBox::detailedSorryWId
static void detailedSorryWId(WId parent_id, const QString &text, const QString &details, const QString &caption=QString(), Options options=Notify)
This function accepts the window id of the parent window, instead of QWidget*.
Definition: kmessagebox.cpp:938
KMessageBox::warningYesNoCancelList
static int warningYesNoCancelList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a Yes/No/Cancel "warning" dialog with a listbox to show information to the user.
Definition: kmessagebox.cpp:750
KMessageBox::sorry
static void sorry(QWidget *parent, const QString &text, const QString &caption=QString(), Options options=Notify)
Display an "Sorry" dialog.
Definition: kmessagebox.cpp:904
KMessageBox::messageBox
static int messageBox(QWidget *parent, DialogType type, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontShowAskAgainName=QString(), Options options=Notify)
Alternate method to show a messagebox:
Definition: kmessagebox.cpp:1068
KMessageBox::information
static void information(QWidget *parent, const QString &text, const QString &caption=QString(), const QString &dontShowAgainName=QString(), Options options=Notify)
Display an "Information" dialog.
Definition: kmessagebox.cpp:960
KMessageBox::Notify
@ Notify
Emit a KNotify event.
Definition: kmessagebox.h:92
KMessageBox::PlainCaption
@ PlainCaption
Do not use KApplication::makeStdCaption()
Definition: kmessagebox.h:95
KMessageBox::WindowModal
@ WindowModal
The window is to be modal relative to its parent. By default, it is application modal.
Definition: kmessagebox.h:97
KMessageBox::NoExec
@ NoExec
Do not call exec() in createKMessageBox()
Definition: kmessagebox.h:96
KMessageBox::Dangerous
@ Dangerous
The action to be confirmed by the dialog is a potentially destructive one. The default button will be...
Definition: kmessagebox.h:94
KMessageBox::AllowLink
@ AllowLink
The message may contain links.
Definition: kmessagebox.h:93
KMessageBox::questionYesNoCancel
static int questionYesNoCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a simple "question" dialog.
Definition: kmessagebox.cpp:495
KMessageBox::DialogType
DialogType
Definition: kmessagebox.h:78
KMessageBox::Error
@ Error
Definition: kmessagebox.h:86
KMessageBox::QuestionYesNoCancel
@ QuestionYesNoCancel
Definition: kmessagebox.h:87
KMessageBox::WarningContinueCancel
@ WarningContinueCancel
Definition: kmessagebox.h:81
KMessageBox::WarningYesNoCancel
@ WarningYesNoCancel
Definition: kmessagebox.h:82
KMessageBox::Sorry
@ Sorry
Definition: kmessagebox.h:85
KMessageBox::QuestionYesNo
@ QuestionYesNo
Definition: kmessagebox.h:79
KMessageBox::WarningYesNo
@ WarningYesNo
Definition: kmessagebox.h:80
KMessageBox::Information
@ Information
Definition: kmessagebox.h:83
KMessageBox::questionYesNo
static int questionYesNo(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Notify)
Display a simple "question" dialog.
Definition: kmessagebox.cpp:353
KMessageBox::warningYesNoList
static int warningYesNoList(QWidget *parent, const QString &text, const QStringList &strlist, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
Display a "warning" dialog with a listbox to show information to the user.
Definition: kmessagebox.cpp:586
KMessageBox::about
static void about(QWidget *parent, const QString &text, const QString &caption=QString(), Options options=Notify)
Display an "About" dialog.
Definition: kmessagebox.cpp:1044
KMessageBox::warningYesNo
static int warningYesNo(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
Display a "warning" dialog.
Definition: kmessagebox.cpp:564
KMessageBox::enableMessage
static void enableMessage(const QString &dontShowAgainName)
Re-enable a specific dontShowAgainName messages that had previously been turned off.
Definition: kmessagebox.cpp:1031
KNotification::event
static KNotification * event(const QString &eventId, const QString &title, const QString &text, const QPixmap &pixmap=QPixmap(), QWidget *widget=0L, const NotificationFlags &flags=CloseOnTimeout, const KComponentData &componentData=KComponentData())
emit an event
Definition: knotification.cpp:291
KNotification::CloseOnTimeout
@ CloseOnTimeout
The notification will be automatically closed after a timeout.
Definition: knotification.h:219
KNotification::DefaultEvent
@ DefaultEvent
Definition: knotification.h:247
KSharedPtr::data
T * data()
KSqueezedTextLabel
A replacement for QLabel that squeezes its text.
Definition: ksqueezedtextlabel.h:47
KTextEdit
A KDE'ified QTextEdit.
Definition: ktextedit.h:91
KTextEdit::setReadOnly
virtual void setReadOnly(bool readOnly)
Reimplemented to set a proper "deactivated" background color.
Definition: ktextedit.cpp:807
KWindowSystem::setMainWindow
static void setMainWindow(QWidget *subwindow, WId mainwindow)
Sets the parent window of subwindow to be mainwindow.
Definition: kwindowsystem_mac.cpp:412
QGroupBox
QLabel
QListWidget
QMap
QWidget
kapplication.h
kconfig.h
kconfiggroup.h
kdialog.h
kglobalsettings.h
kiconloader.h
klocale.h
i18n
QString i18n(const char *text)
I18N_FILTER_BUTTON_CANCEL
#define I18N_FILTER_BUTTON_CANCEL(src, dst)
Definition: kmessagebox.cpp:68
applyOptions
static void applyOptions(KDialog *dialog, KMessageBox::Options options)
Definition: kmessagebox.cpp:145
I18N_FILTER_BUTTON_NO
#define I18N_FILTER_BUTTON_NO(src, dst)
Definition: kmessagebox.cpp:56
I18N_FILTER_BUTTON_CONTINUE
#define I18N_FILTER_BUTTON_CONTINUE(src, dst)
Definition: kmessagebox.cpp:62
I18N_POST_BUTTON_FILTER
#define I18N_POST_BUTTON_FILTER
Definition: kmessagebox.cpp:74
themedMessageBoxIcon
static QIcon themedMessageBoxIcon(QMessageBox::Icon icon)
Definition: kmessagebox.cpp:81
KMessageBox_queue
static bool KMessageBox_queue
Definition: kmessagebox.cpp:77
I18N_FILTER_BUTTON_YES
#define I18N_FILTER_BUTTON_YES(src, dst)
Definition: kmessagebox.cpp:50
sendNotification
static void sendNotification(QString message, const QStringList &strlist, QMessageBox::Icon icon, WId parent_id)
Definition: kmessagebox.cpp:111
KMessageBox_againConfig
KConfig * KMessageBox_againConfig
Definition: kmessagebox.cpp:78
kmessagebox.h
knotification.h
ksqueezedtextlabel.h
ktextedit.h
kwindowsystem.h
caption
QString caption()
KGlobal::config
KSharedConfigPtr config()
message
void message(KMessage::MessageType messageType, const QString &text, const QString &caption=QString())
KStandardGuiItem::yes
KGuiItem yes()
Returns the 'Yes' gui item.
Definition: kstandardguiitem.cpp:118
KStandardGuiItem::no
KGuiItem no()
Returns the 'No' gui item.
Definition: kstandardguiitem.cpp:123
KStandardGuiItem::cancel
KGuiItem cancel()
Returns the 'Cancel' gui item.
Definition: kstandardguiitem.cpp:113
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal