summaryrefslogtreecommitdiff
path: root/client/messagebox.cc
diff options
context:
space:
mode:
authordeva <deva>2009-03-18 13:21:45 +0000
committerdeva <deva>2009-03-18 13:21:45 +0000
commit4696bba0897715cb79eb75fcb14169964e1562e2 (patch)
tree8b8da13a89f2b980e8f25cf7eb36086de34b039d /client/messagebox.cc
parent838fbd870b3ce51fb6a7d8994d3d08f8ab65559c (diff)
Made a messagebox wrapper that does the button translation.
Diffstat (limited to 'client/messagebox.cc')
-rw-r--r--client/messagebox.cc153
1 files changed, 153 insertions, 0 deletions
diff --git a/client/messagebox.cc b/client/messagebox.cc
new file mode 100644
index 0000000..902d2fd
--- /dev/null
+++ b/client/messagebox.cc
@@ -0,0 +1,153 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ * messagebox.cc
+ *
+ * Wed Mar 18 13:33:05 CET 2009
+ * Copyright 2009 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro 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.
+ *
+ * Pracro 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 Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "messagebox.h"
+
+#include <QDialogButtonBox>
+#include <QPushButton>
+/*
+ QString p = tr("KEY", "default vaerdi");
+ printf("\n\n\n#######################\n%s\n\n\n", p.toStdString().c_str());
+*/
+
+static MessageBox::StandardButton showNewMessageBox(QWidget *parent,
+ MessageBox::Icon icon,
+ const QString& title, const QString& text,
+ MessageBox::StandardButtons buttons,
+ MessageBox::StandardButton defaultButton)
+{
+ QMessageBox msgBox(icon, title, text, MessageBox::NoButton, parent);
+ QDialogButtonBox *buttonBox = qFindChild<QDialogButtonBox*>(&msgBox);
+ Q_ASSERT(buttonBox != 0);
+
+ uint mask = MessageBox::FirstButton;
+ while(mask <= MessageBox::LastButton) {
+ uint sb = buttons & mask;
+ mask <<= 1;
+
+ if(!sb) continue;
+
+ QPushButton *button = msgBox.addButton((MessageBox::StandardButton)sb);
+
+ switch(sb) {
+ case MessageBox::Ok: // An "OK" button defined with the AcceptRole.
+ button->setText(QObject::tr("Ok"));
+ break;
+ case MessageBox::Open: // A "Open" button defined with the AcceptRole.
+ button->setText(QObject::tr("Open"));
+ break;
+ case MessageBox::Save: // A "Save" button defined with the AcceptRole.
+ button->setText(QObject::tr("Save"));
+ break;
+ case MessageBox::Cancel: // A "Cancel" button defined with the RejectRole.
+ button->setText(QObject::tr("Cancel"));
+ break;
+ case MessageBox::Close: // A "Close" button defined with the RejectRole.
+ button->setText(QObject::tr("Close"));
+ break;
+ case MessageBox::Discard: // A "Discard" or "Don't Save" button, depending on the platform, defined with the DestructiveRole.
+ button->setText(QObject::tr("Discard"));
+ break;
+ case MessageBox::Apply: // An "Apply" button defined with the ApplyRole.
+ button->setText(QObject::tr("Apply"));
+ break;
+ case MessageBox::Reset: // A "Reset" button defined with the ResetRole.
+ button->setText(QObject::tr("Reset"));
+ break;
+ case MessageBox::RestoreDefaults: // A "Restore Defaults" button defined with the ResetRole.
+ button->setText(QObject::tr("Restore Defaults"));
+ break;
+ case MessageBox::Help: // A "Help" button defined with the HelpRole.
+ button->setText(QObject::tr("Help"));
+ break;
+ case MessageBox::SaveAll: // A "Save All" button defined with the AcceptRole.
+ button->setText(QObject::tr("Save All"));
+ break;
+ case MessageBox::Yes: // A "Yes" button defined with the YesRole.
+ button->setText(QObject::tr("Yes"));
+ break;
+ case MessageBox::YesToAll: // A "Yes to All" button defined with the YesRole.
+ button->setText(QObject::tr("Yes To All"));
+ break;
+ case MessageBox::No: // A "No" button defined with the NoRole.
+ button->setText(QObject::tr("No"));
+ break;
+ case MessageBox::NoToAll: // A "No to All" button defined with the NoRole.
+ button->setText(QObject::tr("No To All"));
+ break;
+ case MessageBox::Abort: // An "Abort" button defined with the RejectRole.
+ button->setText(QObject::tr("Abort"));
+ break;
+ case MessageBox::Retry: // A "Retry" button defined with the AcceptRole.
+ button->setText(QObject::tr("Retry"));
+ break;
+ case MessageBox::Ignore: // An "Ignore" button defined with the AcceptRole.
+ button->setText(QObject::tr("Ignore"));
+ break;
+ case MessageBox::NoButton: // An invalid button.
+ break;
+ }
+
+ // Choose the first accept role as the default
+ if(msgBox.defaultButton()) continue;
+ if((defaultButton == MessageBox::NoButton
+ && buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole)
+ || (defaultButton != MessageBox::NoButton && sb == uint(defaultButton)))
+ msgBox.setDefaultButton(button);
+ }
+
+ if (msgBox.exec() == -1) return MessageBox::Cancel;
+
+ return msgBox.standardButton(msgBox.clickedButton());
+}
+
+MessageBox::StandardButton MessageBox::information(QWidget *parent, const QString &title,
+ const QString& text, StandardButtons buttons,
+ StandardButton defaultButton)
+{
+ return showNewMessageBox(parent, Information, title, text, buttons, defaultButton);
+}
+
+MessageBox::StandardButton MessageBox::question(QWidget *parent, const QString &title,
+ const QString& text, StandardButtons buttons,
+ StandardButton defaultButton)
+{
+ return showNewMessageBox(parent, Question, title, text, buttons, defaultButton);
+}
+MessageBox::StandardButton MessageBox::warning(QWidget *parent, const QString &title,
+ const QString& text, StandardButtons buttons,
+ StandardButton defaultButton)
+{
+ return showNewMessageBox(parent, Warning, title, text, buttons, defaultButton);
+}
+
+MessageBox::StandardButton MessageBox::critical(QWidget *parent, const QString &title,
+ const QString& text, StandardButtons buttons,
+ StandardButton defaultButton)
+{
+ return showNewMessageBox(parent, Critical, title, text, buttons, defaultButton);
+}