clock/clockui/clockwidget/clockwidgetimpl/src/clockwidget.cpp
changeset 50 579cc610882e
parent 26 a949c2543c15
child 58 ef813d54df51
--- a/clock/clockui/clockwidget/clockwidgetimpl/src/clockwidget.cpp	Wed Jun 23 18:11:28 2010 +0300
+++ b/clock/clockui/clockwidget/clockwidgetimpl/src/clockwidget.cpp	Tue Jul 06 14:14:56 2010 +0300
@@ -21,6 +21,7 @@
 // User includes
 #include "clockwidget.h"
 #include "analogclockwidget.h"
+#include "digitalclockwidget.h"
 
 /*!
     \class ClockWidget
@@ -33,7 +34,7 @@
  */
 ClockWidget::ClockWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
     : HbWidget(parent, flags),
-      mClockType(ClockTypeAnalog)
+      mClockType(ClockTypeDigital)
 {    
     loadClockWidget();
 }
@@ -59,10 +60,16 @@
 */
 void ClockWidget::setClockType(const ClockType &type)
 {
-    if (type == ClockTypeDigital) {
-        mClockType = ClockTypeDigital;
+    if (type == ClockTypeAnalog) {
+        if(type != mClockType){
+	        mClockType = ClockTypeAnalog;
+	        updateClockWidget();
+        }
     } else {
-        mClockType = ClockTypeAnalog;
+        if(type != mClockType){
+            mClockType = ClockTypeDigital;
+            updateClockWidget();
+        }      
     }
 }
 
@@ -73,6 +80,8 @@
 {
     if (mClockType == ClockTypeAnalog) {  
         mAnalogClock->tick();    
+    } else {
+    	mDigitalClock->updatePrimitives();
     }
 }
 
@@ -81,13 +90,57 @@
 */
 void ClockWidget::loadClockWidget()
 {
+    mLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    mLayout->setContentsMargins(0,0,0,0); 
+
     if (mClockType == ClockTypeAnalog) {
-        mAnalogClock = new AnalogClockWidget(this);        
-        mLayout = new QGraphicsLinearLayout(Qt::Vertical);
-        mLayout->setContentsMargins(0,0,0,0);
+	    mAnalogClock = new AnalogClockWidget(this);        
+	    mLayout->addItem(mAnalogClock);
+    } else {
+	    bool useAmPm = false;
+	    mDigitalClock = new DigitalClockWidget(useAmPm, this);
+	    mLayout->addItem(mDigitalClock);
+    }
+    setLayout(mLayout);  
+}
+
+/*!
+    Constructs the clockwidget based upon its type.
+*/
+void ClockWidget::updateClockWidget()
+{
+    if (mClockType == ClockTypeAnalog) {        
+        mLayout->removeItem(mDigitalClock);
+        delete mDigitalClock;
+        if (!mAnalogClock) {
+        	mAnalogClock = new AnalogClockWidget(this);
+        }
         mLayout->addItem(mAnalogClock);
-        setLayout(mLayout);
+    } else {
+        mLayout->removeItem(mAnalogClock);
+        delete mAnalogClock;
+        if(!mDigitalClock){
+        bool useAmPm = false; // find out this fronm the settings utility
+        mDigitalClock = new DigitalClockWidget(useAmPm, this);
+    }
+    mLayout->addItem(mDigitalClock);
+    }           
+}
+
+ClockWidget::TimeFormat ClockWidget::timeFormat() const
+{
+    return mTimeFormat;
+}
+
+void ClockWidget::setTimeFormat(const TimeFormat &timeFormat)
+{
+    if(mDigitalClock){
+	    mTimeFormat = timeFormat;
+		if (timeFormat == ClockWidget::TimeFormat12Hrs) {
+			mDigitalClock->setAmPm(true);
+		} else {
+			mDigitalClock->setAmPm(false);
+		}
     }
 }
-
 // End of file  --Don't remove this.