summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/messagebox.cc153
-rw-r--r--src/messagebox.h18
2 files changed, 128 insertions, 43 deletions
diff --git a/src/messagebox.cc b/src/messagebox.cc
index 47799b7..a636bd7 100644
--- a/src/messagebox.cc
+++ b/src/messagebox.cc
@@ -31,7 +31,11 @@
* or clear the number.
*/
-MessageBox::MessageBox(QWidget* parent, const char* name, const char* text, msg_type type)
+MessageBox::MessageBox(QWidget* parent,
+ const char* name,
+ const char* text,
+ msg_type type,
+ msg_icon icon)
: QDialog(parent, name, TRUE)
{
QFrame *topf = new QFrame(this);
@@ -41,7 +45,6 @@ MessageBox::MessageBox(QWidget* parent, const char* name, const char* text, msg_
bl->addWidget(topf);
QLabel *lbl_text = new QLabel(topf);
- // text->setText("CPR ikke gyldigt, ønsker du at forsætte?");
lbl_text->setText(text);
lbl_text->setFont(QFont("Lucida", 18));
QFrame *f = new QFrame(topf);
@@ -50,48 +53,114 @@ MessageBox::MessageBox(QWidget* parent, const char* name, const char* text, msg_
blayout->addWidget(lbl_text);
blayout->addWidget(f);
- switch(type) {
- case TYPE_OK: {
- QPushButton *bok = createButton(f, "Ok");
- QGridLayout *glayout = new QGridLayout(f, 1, 1, 20, 20);
- glayout->addWidget(bok, 0, 0);
- connect(bok, SIGNAL( clicked() ), SLOT(bok_clicked()));
- break;
- }
- case TYPE_OK_CANCEL: {
- QPushButton *bok = createButton(f, "Ok");
- QPushButton *bcancel = createButton(f, "Cancel");
- QGridLayout *glayout = new QGridLayout(f, 1, 2, 20, 20);
- glayout->addWidget(bcancel, 0, 1);
- glayout->addWidget(bok, 0, 2);
- connect(bcancel, SIGNAL( clicked() ), SLOT(bcancel_clicked()));
- connect(bok, SIGNAL( clicked() ), SLOT(bok_clicked()));
- break;
- }
- case TYPE_YES_NO: {
- QPushButton *byes = createButton(f, "Ja");
- QPushButton *bno = createButton(f, "Nej");
- QGridLayout *glayout = new QGridLayout(f, 1, 2, 20, 20);
- glayout->addWidget(bno, 0, 0);
- glayout->addWidget(byes, 0, 1);
- connect(byes, SIGNAL( clicked() ), SLOT(byes_clicked()));
- connect(bno, SIGNAL( clicked() ), SLOT(bno_clicked()));
- break;
- }
- case TYPE_YES_NO_CANCEL: {
- QPushButton *byes = createButton(f, "Ja");
- QPushButton *bcancel = createButton(f, "Cancel");
- QPushButton *bno = createButton(f, "Nej");
- QGridLayout *glayout = new QGridLayout(f, 1, 3, 20, 20);
- glayout->addWidget(bno, 0, 0);
- glayout->addWidget(bcancel, 0, 1);
- glayout->addWidget(byes, 0, 2);
- connect(byes, SIGNAL( clicked() ), SLOT(byes_clicked()));
- connect(bcancel, SIGNAL( clicked() ), SLOT(bcancel_clicked()));
- connect(bno, SIGNAL( clicked() ), SLOT(bno_clicked()));
- break;
+ // Setup the icon
+ pix_icon = new QPixmap();
+ switch(icon) {
+ case ICON_NONE: // No icon is used
+ {
+ break;
+ }
+ case ICON_DEFAULT: // An icon matching the buttons is used
+ {
+ switch(type) {
+ case TYPE_OK:
+ printf("using info icon!\n");
+ pix_icon->load( "info.png" );
+ break;
+ case TYPE_OK_CANCEL:
+ printf("using warning icon!\n");
+ pix_icon->load( "warning.png" );
+ break;
+ case TYPE_YES_NO:
+ printf("using question icon!\n");
+ pix_icon->load( "question.png" );
+ break;
+ case TYPE_YES_NO_CANCEL:
+ printf("using question icon!\n");
+ pix_icon->load( "question.png" );
+ break;
+ }
+ break;
+ }
+ case ICON_INFO: // An info icon (matching the ok button)
+ {
+ printf("using info icon!\n");
+ pix_icon->load( "info.png" );
+ break;
+ }
+ case ICON_WARN: // An warning icon (matching the ok/cancel button)
+ {
+ printf("using warning icon!\n");
+ pix_icon->load( "warning.png" );
+ break;
+ }
+ case ICON_ERROR: // An critical error icon
+ {
+ printf("using error icon!\n");
+ pix_icon->load( "error.png" );
+ break;
+ }
+ case ICON_QUESTION:// An question icon (matching the yes/no and yes/no/cancel buttons)
+ {
+ printf("using question icon!\n");
+ pix_icon->load( "question.png" );
+ break;
+ }
}
+
+ // Setup the buttons
+ switch(type) {
+ case TYPE_OK:
+ {
+ QPushButton *bok = createButton(f, "Ok");
+ QGridLayout *glayout = new QGridLayout(f, 1, 1, 20, 20);
+ glayout->addWidget(bok, 0, 0);
+ connect(bok, SIGNAL( clicked() ), SLOT(bok_clicked()));
+ break;
+ }
+ case TYPE_OK_CANCEL:
+ {
+ QPushButton *bok = createButton(f, "Ok");
+ QPushButton *bcancel = createButton(f, "Cancel");
+ QGridLayout *glayout = new QGridLayout(f, 1, 2, 20, 20);
+ glayout->addWidget(bcancel, 0, 1);
+ glayout->addWidget(bok, 0, 2);
+ connect(bcancel, SIGNAL( clicked() ), SLOT(bcancel_clicked()));
+ connect(bok, SIGNAL( clicked() ), SLOT(bok_clicked()));
+ break;
+ }
+ case TYPE_YES_NO:
+ {
+ QPushButton *byes = createButton(f, "Ja");
+ QPushButton *bno = createButton(f, "Nej");
+ QGridLayout *glayout = new QGridLayout(f, 1, 2, 20, 20);
+ glayout->addWidget(bno, 0, 0);
+ glayout->addWidget(byes, 0, 1);
+ connect(byes, SIGNAL( clicked() ), SLOT(byes_clicked()));
+ connect(bno, SIGNAL( clicked() ), SLOT(bno_clicked()));
+ break;
+ }
+ case TYPE_YES_NO_CANCEL:
+ {
+ QPushButton *byes = createButton(f, "Ja");
+ QPushButton *bcancel = createButton(f, "Cancel");
+ QPushButton *bno = createButton(f, "Nej");
+ QGridLayout *glayout = new QGridLayout(f, 1, 3, 20, 20);
+ glayout->addWidget(bno, 0, 0);
+ glayout->addWidget(bcancel, 0, 1);
+ glayout->addWidget(byes, 0, 2);
+ connect(byes, SIGNAL( clicked() ), SLOT(byes_clicked()));
+ connect(bcancel, SIGNAL( clicked() ), SLOT(bcancel_clicked()));
+ connect(bno, SIGNAL( clicked() ), SLOT(bno_clicked()));
+ break;
+ }
}
+
+}
+
+MessageBox::~MessageBox()
+{
+ delete pix_icon;
}
QPushButton *MessageBox::createButton(QWidget *parent, const char *text)
diff --git a/src/messagebox.h b/src/messagebox.h
index 11a1c05..28b06a8 100644
--- a/src/messagebox.h
+++ b/src/messagebox.h
@@ -32,6 +32,16 @@
#include <qlayout.h>
#include <qpushbutton.h>
#include <qlabel.h>
+#include <qpixmap.h>
+
+typedef enum {
+ ICON_NONE, // No icon is used
+ ICON_DEFAULT, // An icon matching the buttons is used
+ ICON_INFO, // An info icon (matching the ok button)
+ ICON_WARN, // An warning icon (matching the ok/cancel button)
+ ICON_ERROR, // An critical error icon
+ ICON_QUESTION // An question icon (matching the yes/no and yes/no/cancel buttons)
+} msg_icon;
typedef enum {
MSG_YES,
@@ -51,7 +61,12 @@ class MessageBox : public QDialog
{
Q_OBJECT
public:
- MessageBox(QWidget* parent = 0, const char* name = "", const char* text = "", msg_type type = TYPE_OK);
+ MessageBox(QWidget* parent = 0,
+ const char* name = "",
+ const char* text = "",
+ msg_type type = TYPE_OK,
+ msg_icon icon = ICON_DEFAULT);
+ ~MessageBox();
public slots:
void bok_clicked();
@@ -60,6 +75,7 @@ public slots:
void bno_clicked();
private:
+ QPixmap *pix_icon;
QPushButton *createButton(QWidget *parent, const char *text);
};