/* This file is part of the KDE project Copyright (C) 2004 Jaroslaw Staniek 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; either version 2 of the License, or (at your option) any later version. 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 "kexiguimsghandler.h" #include "kexi.h" #include #include #include #include KexiGUIMessageHandler::KexiGUIMessageHandler(TQWidget *parent) : KexiDB::MessageHandler(parent) { } KexiGUIMessageHandler::~KexiGUIMessageHandler() { } /*virtual*/ void KexiGUIMessageHandler::showErrorMessage(KexiDB::Object *obj, const TQString& msg) { TQString _msg(msg); if (!obj) { showErrorMessage(_msg); return; } TQString details; KexiDB::getHTMLErrorMesage(obj, _msg, details); showErrorMessage(_msg, details); } /*virtual*/ void KexiGUIMessageHandler::showErrorMessage(const TQString &title, const TQString &details) { showMessage(Error, title, details); } void KexiGUIMessageHandler::showSorryMessage(const TQString &title, const TQString &details) { showMessage(Sorry, title, details); } void KexiGUIMessageHandler::showErrorMessage(const TQString &msg, const TQString &details, KexiDB::Object *obj) { TQString _msg(msg); if (!obj) { showErrorMessage(_msg, details); return; } TQString _details(details); KexiDB::getHTMLErrorMesage(obj, _msg, _details); showErrorMessage(_msg, _details); } void KexiGUIMessageHandler::showErrorMessage(Kexi::ObjectStatus *status) { showErrorMessage("", status); } void KexiGUIMessageHandler::showErrorMessage(const TQString &message, Kexi::ObjectStatus *status) { if (status && status->error()) { TQString msg(message); if (msg.isEmpty() || msg==status->message) { msg = status->message; status->message = status->description; status->description = ""; } TQString desc; if (!status->message.isEmpty()) { if (status->description.isEmpty()) { desc = status->message; } else { msg += (TQString("

") + status->message); desc = status->description; } } showErrorMessage(msg, desc, status->dbObject()); } else { showErrorMessage(message); } status->clearStatus(); } void KexiGUIMessageHandler::showMessage(MessageType type, const TQString &title, const TQString &details, const TQString& dontShowAgainName) { if (!m_enableMessages) return; //'wait' cursor is a nonsense now KexiUtils::removeWaitCursor(); TQString msg(title); if (title.isEmpty()) msg = i18n("Unknown error"); msg = "

"+msg+"

"; if (!details.isEmpty()) { switch (type) { case Error: KMessageBox::detailedError(m_messageHandlerParentWidget, msg, details); break; case Warning: showWarningContinueMessage(title, details, dontShowAgainName); break; default: //Sorry KMessageBox::detailedSorry(m_messageHandlerParentWidget, msg, details); } } else { KMessageBox::messageBox(m_messageHandlerParentWidget, type==Error ? KMessageBox::Error : KMessageBox::Sorry, msg); } } void KexiGUIMessageHandler::showWarningContinueMessage(const TQString &title, const TQString &details, const TQString& dontShowAgainName) { if (!KMessageBox::shouldBeShownContinue(dontShowAgainName)) return; KDialogBase *dialog = new KDialogBase( i18n("Warning"), KDialogBase::Yes, KDialogBase::Yes, KDialogBase::No, m_messageHandlerParentWidget, "warningContinue", true, true, KStdGuiItem::cont() ); bool checkboxResult = false; KMessageBox::createKMessageBox(dialog, TQMessageBox::Warning, title + (details.isEmpty() ? TQString() : (TQString("\n")+details)), TQStringList(), dontShowAgainName.isEmpty() ? TQString() : i18n("Do not show this message again"), &checkboxResult, 0); if (checkboxResult) KMessageBox::saveDontShowAgainContinue(dontShowAgainName); } int KexiGUIMessageHandler::askQuestion( const TQString& message, KMessageBox::DialogType dlgType, KMessageBox::ButtonCode defaultResult, const KGuiItem &buttonYes, const KGuiItem &buttonNo, const TQString &dontShowAskAgainName, int options ) { Q_UNUSED(defaultResult); if (KMessageBox::WarningContinueCancel == dlgType) return KMessageBox::warningContinueCancel(m_messageHandlerParentWidget, message, TQString(), buttonYes, dontShowAskAgainName, options); else return KMessageBox::messageBox(m_messageHandlerParentWidget, dlgType, message, TQString(), buttonYes, buttonNo, dontShowAskAgainName, options); }