src/hbwidgets/popups/hbmessagebox.cpp
changeset 23 e6ad4ef83b23
parent 21 4633027730f5
child 28 b7da29130b0e
--- a/src/hbwidgets/popups/hbmessagebox.cpp	Wed Aug 18 10:05:37 2010 +0300
+++ b/src/hbwidgets/popups/hbmessagebox.cpp	Thu Sep 02 20:44:51 2010 +0300
@@ -39,6 +39,8 @@
 #include <QTimer>
 #include <QGraphicsLinearLayout>
 #include <QTextDocument>
+#include <hbstyleprimitivedata.h>
+#include <hbstyleiconprimitivedata.h>
 
 #ifdef Q_OS_SYMBIAN
 #include <systemtoneservice.h>
@@ -50,12 +52,11 @@
 {
     Q_OBJECT
     public:        
-        HbLabel *mTextEdit;
         HbMessageBoxWidget(QGraphicsItem* parent =0):HbLabel(parent){
             setTextWrapping(Hb::TextWordWrap);
         }
         HbMessageBoxWidget(const QString& text, QGraphicsItem *parent=0):HbLabel(text, parent){
-			HbStyle::setItemName(this, "text");
+            HbStyle::setItemName(this, "text");
         }
 };
 class HbMessageBoxScrollArea : public HbScrollArea
@@ -85,17 +86,16 @@
     Q_OBJECT
     public:
     HbMessageBoxPrivate *d;
-    QGraphicsItem *mIconItem;
+    QGraphicsObject *mIconItem;
     HbMessageBoxScrollArea *mScrollArea;
 
     HbMessageBoxContentWidget(HbMessageBoxPrivate *priv,
     QGraphicsItem* parent =0) : HbWidget(parent),d(priv),mIconItem(0),mScrollArea(0) 
     {
          mScrollArea = new HbMessageBoxScrollArea(this);        
-         mIconItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_MessageBox_icon, this);
+        mIconItem = style()->createPrimitive(HbStyle::PT_IconItem, "icon", this);
          setProperty("hasIcon",true);
          HbStyle::setItemName(mScrollArea, "scrollArea");
-         HbStyle::setItemName(mIconItem, "icon");
     }
 
     void triggerPolish()
@@ -367,6 +367,44 @@
      option->messageBoxType = d->mMessageBoxType;
 }
 
+void HbMessageBox::initPrimitiveData(HbStylePrimitiveData *primitiveData, const QGraphicsObject *primitive)
+{
+    Q_D(HbMessageBox);
+    HbWidgetBase::initPrimitiveData(primitiveData, primitive);
+    QString itemName = HbStyle::itemName(primitive);
+    if (itemName == QLatin1String("icon")) {
+        HbStyleIconPrimitiveData *data = hbstyleprimitivedata_cast<HbStyleIconPrimitiveData*>(primitiveData);
+        data->icon = icon();
+                        
+        if (data->icon.value().isNull()) {
+            switch (d->mMessageBoxType) {
+            case HbStyleOptionMessageBox::MessageTypeInformation:
+                data->icon = HbIcon(QLatin1String("qtg_large_info"));
+                break;
+            case HbStyleOptionMessageBox::MessageTypeQuestion:
+                data->icon = HbIcon(QLatin1String("qtg_large_help"));
+                break;
+            case HbStyleOptionMessageBox::MessageTypeWarning:
+                data->icon = HbIcon(QLatin1String("qtg_large_warning"));
+                break;
+            default:
+                break;
+            }
+        }
+    }
+}
+
+void HbMessageBox::recreatePrimitives()
+{
+    Q_D(HbMessageBox);
+    if (d->mMessageBoxContentWidget->mIconItem) {
+        delete d->mMessageBoxContentWidget->mIconItem;
+        d->mMessageBoxContentWidget->mIconItem = 0;
+        d->mMessageBoxContentWidget->mIconItem = style()->createPrimitive(HbStyle::PT_IconItem, "icon",d->mMessageBoxContentWidget);
+        d->mMessageBoxContentWidget->setProperty("hasIcon",true);
+    }
+}
+
 /*!
    \reimp
 */
@@ -374,11 +412,13 @@
 {
     Q_D(HbMessageBox); 
     HbDialog::updatePrimitives();
-    HbStyleOptionMessageBox option;
-    initStyleOption(&option);
+
     if (d->mMessageBoxContentWidget->mIconItem) {
-         HbStylePrivate::updatePrimitive(d->mMessageBoxContentWidget->mIconItem, HbStylePrivate::P_MessageBox_icon, &option);
+        HbStyleIconPrimitiveData data;
+        initPrimitiveData(&data, d->mMessageBoxContentWidget->mIconItem);
+        style()->updatePrimitive(d->mMessageBoxContentWidget->mIconItem, &data, this);
     }
+   
 }
 
 /*!
@@ -426,16 +466,15 @@
     if (icon != d->mIcon){
         d->mIcon = icon;
         if (d->mMessageBoxContentWidget->mIconItem) {
-            HbStyleOptionMessageBox option;
-            initStyleOption(&option);
-            HbStylePrivate::updatePrimitive(d->mMessageBoxContentWidget->mIconItem, HbStylePrivate::P_MessageBox_icon, &option);
+            HbStyleIconPrimitiveData data;
+            initPrimitiveData(&data, d->mMessageBoxContentWidget->mIconItem);
+            style()->updatePrimitive(d->mMessageBoxContentWidget->mIconItem, &data, this);
         }
         if(iconVisible() ) {
             d->mMessageBoxContentWidget->mIconItem->show();
             d->mMessageBoxContentWidget->setProperty("hasIcon",true);
         }
     }
-
 }
 
 /*!