1 /*
2 This file is part of the Kasten Framework, made within the KDE community.
3
4 SPDX-FileCopyrightText: 2009, 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9 #include "dialoghandler.hpp"
10
11 // Kasten core
12 #include <Kasten/AbstractDocument>
13 // KF
14 #include <KMessageBox>
15 #include <KLocalizedString>
16 // Qt
17 #include <QUrl>
18
19 namespace Kasten {
20
DialogHandler(QWidget * widget)21 DialogHandler::DialogHandler(QWidget* widget)
22 : mWidget(widget)
23 {}
24
25 DialogHandler::~DialogHandler() = default;
26
setWidget(QWidget * widget)27 void DialogHandler::setWidget(QWidget* widget) { mWidget = widget; }
28
queryOverwrite(const QUrl & url,const QString & title) const29 Answer DialogHandler::queryOverwrite(const QUrl& url, const QString& title) const
30 {
31 const QString message =
32 xi18nc("@info",
33 "There is already a file at<nl/><filename>%1</filename>.<nl/>"
34 "Overwrite?", url.url());
35 const int answer = KMessageBox::warningYesNoCancel(mWidget, message, title,
36 KStandardGuiItem::overwrite(),
37 KStandardGuiItem::back());
38
39 return (answer == KMessageBox::Yes) ? Overwrite :
40 (answer == KMessageBox::No) ? PreviousQuestion :
41 Cancel;
42 }
43
queryDiscardOnReload(const AbstractDocument * document,const QString & title) const44 Answer DialogHandler::queryDiscardOnReload(const AbstractDocument* document, const QString& title) const
45 {
46 const QString message = xi18nc("@info \"%title\" has been modified.",
47 "There are unsaved modifications to <filename>%1</filename>. "
48 "They will be lost if you reload the document.<nl/>"
49 "Do you want to discard them?", document->title());
50
51 const int answer = KMessageBox::warningContinueCancel(mWidget, message, title,
52 KStandardGuiItem::discard());
53
54 return (answer == KMessageBox::Cancel) ? Cancel : Discard;
55 }
56
querySaveDiscard(const AbstractDocument * document,const QString & title) const57 Answer DialogHandler::querySaveDiscard(const AbstractDocument* document, const QString& title) const
58 {
59 const QString message = xi18nc("@info \"%title\" has been modified.",
60 "<filename>%1</filename> has been modified.<nl/>"
61 "Do you want to save your changes or discard them?", document->title());
62
63 const int answer = KMessageBox::warningYesNoCancel(mWidget, message, title,
64 KStandardGuiItem::save(), KStandardGuiItem::discard());
65
66 return (answer == KMessageBox::Yes) ? Save :
67 (answer == KMessageBox::No) ? Discard :
68 Cancel;
69 }
70
queryDiscard(const AbstractDocument * document,const QString & title) const71 Answer DialogHandler::queryDiscard(const AbstractDocument* document, const QString& title) const
72 {
73 const QString message = xi18nc("@info \"%title\" has been modified.",
74 "<filename>%1</filename> has been modified.<nl/>"
75 "Do you want to discard your changes?", document->title());
76
77 const int answer = KMessageBox::warningContinueCancel(mWidget, message, title,
78 KStandardGuiItem::discard());
79
80 return (answer == KMessageBox::Cancel) ? Cancel : Discard;
81 }
82
83 }
84