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