RetroShare/retroshare-gui/src/gui/common/vmessagebox.cpp

173 lines
6.3 KiB
C++

/****************************************************************
* This file is distributed under the following license:
*
* Copyright (c) 2008, defnax
* Copyright (c) 2008, Matt Edman, Justin Hipple
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
/*
** \file vmessagebox.cpp
** \version $Id: vmessagebox.cpp 2362 2008-02-29 04:30:11Z edmanm $
** \brief Provides a custom Vidalia mesage box
*/
#include "html.h"
#include "vmessagebox.h"
/** Default constructor. */
VMessageBox::VMessageBox(QWidget *parent)
: QMessageBox(parent)
{
}
/** Returns the button (0, 1, or 2) that is OR-ed with QMessageBox::Default,
* or 0 if none are. */
int
VMessageBox::defaultButton(int button0, int button1, int button2)
{
Q_UNUSED(button0);
int defaultButton = 0;
if (button1 & QMessageBox::Default) {
defaultButton = 1;
} else if (button2 & QMessageBox::Default) {
defaultButton = 2;
}
return defaultButton;
}
/** Returns the button (0, 1, or 2) that is OR-ed with QMessageBox::Escape,
* or -1 if none are. */
int
VMessageBox::escapeButton(int button0, int button1, int button2)
{
int escapeButton = -1;
if (button0 & QMessageBox::Escape) {
escapeButton = 0;
} else if (button1 & QMessageBox::Escape) {
escapeButton = 1;
} else if (button2 & QMessageBox::Escape) {
escapeButton = 2;
}
return escapeButton;
}
/** Returns the Button enum value from the given return value. */
int
VMessageBox::selected(int ret, int button0, int button1, int button2)
{
if (ret == 0) {
return (button0 & QMessageBox::ButtonMask);
} else if (ret == 1) {
return (button1 & QMessageBox::ButtonMask);
}
return (button2 & QMessageBox::ButtonMask);
}
/** Converts a Button enum value to a translated string. */
QString
VMessageBox::buttonText(int btn)
{
QString text;
int button = (btn & ~QMessageBox::FlagMask);
switch (button) {
case Ok: text = tr("OK"); break;
case Cancel: text = tr("Cancel"); break;
case Yes: text = tr("Yes"); break;
case No: text = tr("No"); break;
case Help: text = tr("Help"); break;
case Retry: text = tr("Retry"); break;
case ShowLog: text = tr("Show Log"); break;
case ShowSettings: text = tr("Show Settings"); break;
case Continue: text = tr("Continue"); break;
case Quit: text = tr("Quit"); break;
case Browse: text = tr("Browse"); break;
default: break;
}
return text;
}
/** Displays a critical message box with the given caption, message text, and
* visible buttons. To specify a button as a default button or an escape
* button, OR the Button enum value with QMessageBox::Default or
* QMessageBox::Escape, respectively. */
int
VMessageBox::critical(QWidget *parent, QString caption, QString text,
int button0, int button1, int button2)
{
int ret = QMessageBox::critical(parent, caption, p(text),
VMessageBox::buttonText(button0),
VMessageBox::buttonText(button1),
VMessageBox::buttonText(button2),
VMessageBox::defaultButton(button0, button1, button2),
VMessageBox::escapeButton(button0, button1, button2));
return VMessageBox::selected(ret, button0, button1, button2);
}
/** Displays an question message box with the given caption, message text, and
* visible buttons. To specify a button as a default button or an escape
* button, OR the Button enum value with QMessageBox::Default or
* QMessageBox::Escape, respectively. */
int
VMessageBox::question(QWidget *parent, QString caption, QString text,
int button0, int button1, int button2)
{
int ret = QMessageBox::question(parent, caption, p(text),
VMessageBox::buttonText(button0),
VMessageBox::buttonText(button1),
VMessageBox::buttonText(button2),
VMessageBox::defaultButton(button0, button1, button2),
VMessageBox::escapeButton(button0, button1, button2));
return VMessageBox::selected(ret, button0, button1, button2);
}
/** Displays an information message box with the given caption, message text, and
* visible buttons. To specify a button as a default button or an escape
* button, OR the Button enum value with QMessageBox::Default or
* QMessageBox::Escape, respectively. */
int
VMessageBox::information(QWidget *parent, QString caption, QString text,
int button0, int button1, int button2)
{
int ret = QMessageBox::information(parent, caption, p(text),
VMessageBox::buttonText(button0),
VMessageBox::buttonText(button1),
VMessageBox::buttonText(button2),
VMessageBox::defaultButton(button0, button1, button2),
VMessageBox::escapeButton(button0, button1, button2));
return VMessageBox::selected(ret, button0, button1, button2);
}
/** Displays a warning message box with the given caption, message text, and
* visible buttons. To specify a button as a default button or an escape
* button, OR the Button enum value with QMessageBox::Default or
* QMessageBox::Escape, respectively. */
int
VMessageBox::warning(QWidget *parent, QString caption, QString text,
int button0, int button1, int button2)
{
int ret = QMessageBox::warning(parent, caption, p(text),
VMessageBox::buttonText(button0),
VMessageBox::buttonText(button1),
VMessageBox::buttonText(button2),
VMessageBox::defaultButton(button0, button1, button2),
VMessageBox::escapeButton(button0, button1, button2));
return VMessageBox::selected(ret, button0, button1, button2);
}