clock/clockui/clockwidget/clockwidgetimpl/src/clockwidget.cpp
branchRCL_3
changeset 65 12af337248b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clock/clockui/clockwidget/clockwidgetimpl/src/clockwidget.cpp	Tue Aug 31 15:13:43 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Clockwidget
+*
+*/
+
+// System includes
+#include <QGraphicsLinearLayout>
+
+// User includes
+#include "clockwidget.h"
+#include "analogclockwidget.h"
+#include "digitalclockwidget.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "clockwidgetTraces.h"
+#endif
+
+
+/*!
+    \class ClockWidget
+
+    This is the generic wrapper for the clockwidget which manages analog and ditial clockwidgets.
+ */
+
+/*!
+    Constructor.
+ */
+ClockWidget::ClockWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
+    : HbWidget(parent, flags),
+      mClockType(ClockTypeDigital)
+{    
+    OstTraceFunctionEntry0( CLOCKWIDGET_CLOCKWIDGET_ENTRY );
+    loadClockWidget();
+OstTraceFunctionExit0( CLOCKWIDGET_CLOCKWIDGET_EXIT );
+}
+
+/*!
+    Destructor.
+*/
+ClockWidget::~ClockWidget()
+{    
+    OstTraceFunctionEntry0( DUP1_CLOCKWIDGET_CLOCKWIDGET_ENTRY );
+    
+OstTraceFunctionExit0( DUP1_CLOCKWIDGET_CLOCKWIDGET_EXIT );
+}
+
+/*!
+    Returns the clock type.
+*/
+ClockWidget::ClockType ClockWidget::clockType() const
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_CLOCKTYPE_ENTRY );
+    OstTraceFunctionExit0( CLOCKWIDGET_CLOCKTYPE_EXIT );
+    return mClockType;
+}
+  
+/*!
+    Sets the clock type;
+*/
+void ClockWidget::setClockType(const ClockType &type)
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_SETCLOCKTYPE_ENTRY );
+    if (type == ClockTypeAnalog) {
+        if(type != mClockType){
+	        mClockType = ClockTypeAnalog;
+	        updateClockWidget();
+        }
+    } else {
+        if(type != mClockType){
+            mClockType = ClockTypeDigital;
+            updateClockWidget();
+        }      
+    }
+OstTraceFunctionExit0( CLOCKWIDGET_SETCLOCKTYPE_EXIT );
+}
+
+/*!
+    Updates the clock time with every second
+*/
+void ClockWidget::updateTime()
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_UPDATETIME_ENTRY );
+    if (mClockType == ClockTypeAnalog) {  
+        mAnalogClock->tick();    
+    } else {
+    	mDigitalClock->updatePrimitives();
+    }
+OstTraceFunctionExit0( CLOCKWIDGET_UPDATETIME_EXIT );
+}
+
+/*!
+    Constructs the clockwidget based upon its type.
+*/
+void ClockWidget::loadClockWidget()
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_LOADCLOCKWIDGET_ENTRY );
+    mLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    mLayout->setContentsMargins(0,0,0,0); 
+
+    if (mClockType == ClockTypeAnalog) {
+	    mAnalogClock = new AnalogClockWidget(this);        
+	    mLayout->addItem(mAnalogClock);
+    } else {
+	    bool useAmPm = false;
+	    mDigitalClock = new DigitalClockWidget(useAmPm, this);
+	    mLayout->addItem(mDigitalClock);
+    }
+    setLayout(mLayout);  
+OstTraceFunctionExit0( CLOCKWIDGET_LOADCLOCKWIDGET_EXIT );
+}
+
+/*!
+    Constructs the clockwidget based upon its type.
+*/
+void ClockWidget::updateClockWidget()
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_UPDATECLOCKWIDGET_ENTRY );
+    if (mClockType == ClockTypeAnalog) {        
+        mLayout->removeItem(mDigitalClock);
+        delete mDigitalClock;
+        if (!mAnalogClock) {
+        	mAnalogClock = new AnalogClockWidget(this);
+        }
+        mLayout->addItem(mAnalogClock);
+    } 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);
+    }           
+OstTraceFunctionExit0( CLOCKWIDGET_UPDATECLOCKWIDGET_EXIT );
+}
+
+ClockWidget::TimeFormat ClockWidget::timeFormat() const
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_TIMEFORMAT_ENTRY );
+    OstTraceFunctionExit0( CLOCKWIDGET_TIMEFORMAT_EXIT );
+    return mTimeFormat;
+}
+
+void ClockWidget::setTimeFormat(const TimeFormat &timeFormat)
+{
+    OstTraceFunctionEntry0( CLOCKWIDGET_SETTIMEFORMAT_ENTRY );
+    if(mDigitalClock){
+	    mTimeFormat = timeFormat;
+		if (timeFormat == ClockWidget::TimeFormat12Hrs) {
+			mDigitalClock->setAmPm(true);
+		} else {
+			mDigitalClock->setAmPm(false);
+		}
+    }
+OstTraceFunctionExit0( CLOCKWIDGET_SETTIMEFORMAT_EXIT );
+}
+// End of file  --Don't remove this.