From 50adc3e1f496246e0d91a831eebd4fbb730dff1c Mon Sep 17 00:00:00 2001
From: deva <deva>
Date: Thu, 24 Mar 2005 13:07:30 +0000
Subject: Added icon support for the MessageBox.

---
 src/messagebox.cc | 153 +++++++++++++++++++++++++++++++++++++++---------------
 src/messagebox.h  |  18 ++++++-
 2 files changed, 128 insertions(+), 43 deletions(-)

(limited to 'src')

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);
 };
 
-- 
cgit v1.2.3