kexi

kexiguimsghandler.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
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; either
7 version 2 of the License, or (at your option) any later version.
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 "kexiguimsghandler.h"
21
22#include "kexi.h"
23#include <kexidb/utils.h>
24#include <kexiutils/utils.h>
25
26#include <tdemessagebox.h>
27#include <kdialogbase.h>
28
29KexiGUIMessageHandler::KexiGUIMessageHandler(TQWidget *parent)
30: KexiDB::MessageHandler(parent)
31{
32}
33
34KexiGUIMessageHandler::~KexiGUIMessageHandler()
35{
36}
37
38/*virtual*/
39void
40KexiGUIMessageHandler::showErrorMessage(KexiDB::Object *obj,
41 const TQString& msg)
42{
43 TQString _msg(msg);
44 if (!obj) {
45 showErrorMessage(_msg);
46 return;
47 }
48 TQString details;
49 KexiDB::getHTMLErrorMesage(obj, _msg, details);
50 showErrorMessage(_msg, details);
51}
52
53/*virtual*/
54void
55KexiGUIMessageHandler::showErrorMessage(const TQString &title, const TQString &details)
56{
57 showMessage(Error, title, details);
58}
59
60void
61KexiGUIMessageHandler::showSorryMessage(const TQString &title, const TQString &details)
62{
63 showMessage(Sorry, title, details);
64}
65
66void KexiGUIMessageHandler::showErrorMessage(const TQString &msg, const TQString &details,
67 KexiDB::Object *obj)
68{
69 TQString _msg(msg);
70 if (!obj) {
71 showErrorMessage(_msg, details);
72 return;
73 }
74 TQString _details(details);
75 KexiDB::getHTMLErrorMesage(obj, _msg, _details);
76 showErrorMessage(_msg, _details);
77}
78
79void
80KexiGUIMessageHandler::showErrorMessage(Kexi::ObjectStatus *status)
81{
82 showErrorMessage("", status);
83}
84
85void
86KexiGUIMessageHandler::showErrorMessage(const TQString &message, Kexi::ObjectStatus *status)
87{
88 if (status && status->error()) {
89 TQString msg(message);
90 if (msg.isEmpty() || msg==status->message) {
91 msg = status->message;
92 status->message = status->description;
93 status->description = "";
94 }
95 TQString desc;
96 if (!status->message.isEmpty()) {
97 if (status->description.isEmpty()) {
98 desc = status->message;
99 } else {
100 msg += (TQString("<br><br>") + status->message);
101 desc = status->description;
102 }
103 }
104 showErrorMessage(msg, desc, status->dbObject());
105 }
106 else {
107 showErrorMessage(message);
108 }
109 status->clearStatus();
110}
111
112void
113KexiGUIMessageHandler::showMessage(MessageType type,
114 const TQString &title, const TQString &details, const TQString& dontShowAgainName)
115{
116 if (!m_enableMessages)
117 return;
118
119 //'wait' cursor is a nonsense now
121
122 TQString msg(title);
123 if (title.isEmpty())
124 msg = i18n("Unknown error");
125 msg = "<qt><p>"+msg+"</p>";
126 if (!details.isEmpty()) {
127 switch (type) {
128 case Error:
129 KMessageBox::detailedError(m_messageHandlerParentWidget, msg, details);
130 break;
131 case Warning:
132 showWarningContinueMessage(title, details, dontShowAgainName);
133 break;
134 default: //Sorry
135 KMessageBox::detailedSorry(m_messageHandlerParentWidget, msg, details);
136 }
137 }
138 else {
139 KMessageBox::messageBox(m_messageHandlerParentWidget,
140 type==Error ? KMessageBox::Error : KMessageBox::Sorry, msg);
141 }
142}
143
144void KexiGUIMessageHandler::showWarningContinueMessage(const TQString &title, const TQString &details,
145 const TQString& dontShowAgainName)
146{
147 if (!KMessageBox::shouldBeShownContinue(dontShowAgainName))
148 return;
149 KDialogBase *dialog = new KDialogBase(
150 i18n("Warning"), KDialogBase::Yes, KDialogBase::Yes, KDialogBase::No,
151 m_messageHandlerParentWidget, "warningContinue", true, true, KStdGuiItem::cont() );
152 bool checkboxResult = false;
153 KMessageBox::createKMessageBox(dialog, TQMessageBox::Warning,
154 title + (details.isEmpty() ? TQString() : (TQString("\n")+details)), TQStringList(),
155 dontShowAgainName.isEmpty() ? TQString() : i18n("Do not show this message again"),
156 &checkboxResult, 0);
157 if (checkboxResult)
158 KMessageBox::saveDontShowAgainContinue(dontShowAgainName);
159}
160
161int KexiGUIMessageHandler::askQuestion( const TQString& message,
162 KMessageBox::DialogType dlgType, KMessageBox::ButtonCode defaultResult,
163 const KGuiItem &buttonYes,
164 const KGuiItem &buttonNo,
165 const TQString &dontShowAskAgainName,
166 int options )
167{
168 Q_UNUSED(defaultResult);
169 if (KMessageBox::WarningContinueCancel == dlgType)
170 return KMessageBox::warningContinueCancel(m_messageHandlerParentWidget,
171 message, TQString(), buttonYes, dontShowAskAgainName, options);
172 else
173 return KMessageBox::messageBox(m_messageHandlerParentWidget,
174 dlgType, message, TQString(), buttonYes, buttonNo, dontShowAskAgainName, options);
175}
176
High-level database connectivity library with database backend drivers.
KEXI_DB_EXPORT void getHTMLErrorMesage(Object *obj, TQString &msg, TQString &details)
KEXIUTILS_EXPORT void removeWaitCursor()