src/hbwidgets/popups/hbprogressdialog.cpp
changeset 28 b7da29130b0e
parent 21 4633027730f5
child 30 80e4d18b72f5
--- a/src/hbwidgets/popups/hbprogressdialog.cpp	Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbwidgets/popups/hbprogressdialog.cpp	Fri Sep 17 08:32:10 2010 +0300
@@ -26,13 +26,14 @@
 #include <hbprogressdialog.h>
 #include <hbprogressdialog_p.h>
 #include <hbstyleoptionprogressdialog_p.h>
-
 #include <hbnamespace_p.h>
 #include <hbaction.h>
 #include <hbpopup.h>
 #include <hbtextitem.h>
 #include <QGraphicsItem>
-
+#include <hbstyleprimitivedata.h>
+#include <hbstyleiconprimitivedata.h>
+#include <hbstyletextprimitivedata.h>
 /*
     \internal
     HbProgressDialogContentWidget class
@@ -48,9 +49,9 @@
     
     public:
     
-    QGraphicsItem *mIconItem;
+    QGraphicsObject  *mIconItem;
     HbProgressBar *mProgressBar;
-    QGraphicsItem *mTextItem;
+    QGraphicsObject  *mTextItem;
     HbProgressDialogPrivate *d;
     
     enum { Type = HbPrivate::ItemType_ProgressDialogContentWidget };
@@ -111,9 +112,9 @@
         mContentWidget->mProgressBar->setRange(0,100);
     }
     
-    HbAction *action = new HbAction(hbTrId("txt_common_button_cancel"), q);
-    QObject::connect(action, SIGNAL(triggered()), q, SLOT(_q_userCancel()));
-    q->addAction(action);
+    mAction = new HbAction(hbTrId("txt_common_button_cancel"), q);
+    QObject::connect(mAction, SIGNAL(triggered()), q, SLOT(_q_userCancel()));
+    q->addAction(mAction);
     
     mMinDuration = 1500;
     mDelayTime = 1000;
@@ -134,20 +135,19 @@
  */
 void HbProgressDialogPrivate::createPrimitives()
 {
+    Q_Q(HbProgressDialog);
     if( !mContentWidget->mProgressBar ){
             mContentWidget->mProgressBar = new HbProgressBar(mContentWidget);
             HbStyle::setItemName(mContentWidget->mProgressBar, "pbar");
     }
 
     if ( !mContentWidget->mTextItem ) {
-        mContentWidget->mTextItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressDialog_text,mContentWidget);
-        HbStyle::setItemName(mContentWidget->mTextItem, "text");
+        mContentWidget->mTextItem = q->style()->createPrimitive(HbStyle::PT_TextItem, "text", mContentWidget);
     }
 
     if ( !mIcon.isNull() ) {
         if ( !mContentWidget->mIconItem ) {
-            mContentWidget->mIconItem = HbStylePrivate::createPrimitive(HbStylePrivate::P_ProgressDialog_icon, mContentWidget); 
-            HbStyle::setItemName(mContentWidget->mIconItem, "icon");
+            mContentWidget->mIconItem = q->style()->createPrimitive(HbStyle::PT_IconItem, "icon", mContentWidget);
         }
     } else {
         if( mContentWidget->mIconItem ){
@@ -194,7 +194,8 @@
     else if(flags.testFlag(HbProgressDialogPrivate::Closetimer)){
         flags &= ~HbProgressDialogPrivate::Closetimer;
         if(flags.testFlag(HbProgressDialogPrivate::Closepending)){
-            q->close();
+             flags &= ~HbProgressDialogPrivate::Closepending;
+             q->close();            
         }
     }
 }
@@ -207,8 +208,11 @@
 void HbProgressDialogPrivate::_q_progressValueChanged(int value)
 {
     Q_Q(HbProgressDialog);
-    
+    if(value >= mContentWidget->mProgressBar->maximum() && !(q->autoClose())){
+        mAction->setText(hbTrId("txt_common_button_close"));
+    }
     if(value >= mContentWidget->mProgressBar->maximum() && q->autoClose()){
+        
         if(flags.testFlag(HbProgressDialogPrivate::Closetimer)){
             flags |= HbProgressDialogPrivate::Closepending;
             flags &= ~HbProgressDialogPrivate::Showtimer;
@@ -611,14 +615,30 @@
     option->textAlignment = d->mAlign;
 }
 
+void HbProgressDialog::initPrimitiveData(HbStylePrimitiveData *primitiveData, const QGraphicsObject *primitive)
+{
+    HbWidgetBase::initPrimitiveData(primitiveData, primitive);
+    QString itemName = HbStyle::itemName(primitive);
+    if (itemName == QLatin1String("text")) {
+        HbStyleTextPrimitiveData *data = hbstyleprimitivedata_cast<HbStyleTextPrimitiveData*>(primitiveData);
+        data->text = text();
+        data->textWrapping = Hb::TextWordWrap;
+    }
+
+    if (itemName == QLatin1String("icon")) {
+        HbStyleIconPrimitiveData *data = hbstyleprimitivedata_cast<HbStyleIconPrimitiveData*>(primitiveData);
+        data->icon = icon();        
+    }
+}
+
 /*!
     \reimp
  */
 void HbProgressDialog::showEvent(QShowEvent *event)
 {
     Q_D(HbProgressDialog);
-    
     d->mContentWidget->mProgressBar->show();
+    d->mAction->setText(hbTrId("txt_common_button_cancel"));
     HbDialog::showEvent(event);   
 }
 
@@ -660,9 +680,9 @@
 
         if(d->mContentWidget->mTextItem)
         {
-            HbStyleOptionProgressDialog progressDialogOption;
-            initStyleOption(&progressDialogOption);
-            HbStylePrivate::updatePrimitive(d->mContentWidget->mTextItem, HbStylePrivate::P_ProgressDialog_text, &progressDialogOption);
+            HbStyleTextPrimitiveData data;
+            initPrimitiveData(&data, d->mContentWidget->mTextItem);
+            style()->updatePrimitive(d->mContentWidget->mTextItem, &data, this);
         }
     }
 }
@@ -698,10 +718,10 @@
 
         if (d->mContentWidget->mIconItem) {
             d->mContentWidget->setProperty("icon",true);
+            HbStyleIconPrimitiveData data;
+            initPrimitiveData(&data, d->mContentWidget->mIconItem);
+            style()->updatePrimitive(d->mContentWidget->mIconItem, &data, this);
 
-            HbStyleOptionProgressDialog progressDialogOption;
-            initStyleOption(&progressDialogOption);
-            HbStylePrivate::updatePrimitive(d->mContentWidget->mIconItem, HbStylePrivate::P_ProgressDialog_icon, &progressDialogOption);
         }
         else
         {
@@ -724,7 +744,42 @@
 
     return d->mIcon;
 }
-
+/*!
+    updation of pri
+ */
+void HbProgressDialog::updatePrimitives()
+{
+    Q_D(HbProgressDialog); 
+    HbDialog::updatePrimitives();
+    if (d->mContentWidget->mIconItem) {
+        HbStyleIconPrimitiveData data;
+        initPrimitiveData(&data, d->mContentWidget->mIconItem);
+        style()->updatePrimitive(d->mContentWidget->mIconItem, &data, this);
+    }    
+    
+    if (d->mContentWidget->mTextItem) {
+        HbStyleTextPrimitiveData data;
+        initPrimitiveData(&data, d->mContentWidget->mTextItem);
+        style()->updatePrimitive(d->mContentWidget->mTextItem, &data, this);
+    }   
+}
+/*!
+    Recreaction of all the primitives.
+ */
+void HbProgressDialog::recreatePrimitives()
+{
+    Q_D(HbProgressDialog);
+    if (d->mContentWidget->mIconItem) {
+        delete d->mContentWidget->mIconItem;
+        d->mContentWidget->mIconItem = 0;
+        d->mContentWidget->mIconItem = style()->createPrimitive(HbStyle::PT_IconItem, "icon",d->mContentWidget);
+    }
+    if (d->mContentWidget->mTextItem) {
+        delete d->mContentWidget->mTextItem;
+        d->mContentWidget->mTextItem = 0;
+        d->mContentWidget->mTextItem = style()->createPrimitive(HbStyle::PT_TextItem, "text",d->mContentWidget);
+    }
+}
 
 #include "moc_hbprogressdialog.cpp"
 #include "hbprogressdialog.moc"