calendarui/views/dayview/src/calendaycontentwidget.cpp
changeset 75 7ac58b2aae6f
parent 63 a3cb48f6c889
--- a/calendarui/views/dayview/src/calendaycontentwidget.cpp	Mon Sep 06 15:58:44 2010 +0530
+++ b/calendarui/views/dayview/src/calendaycontentwidget.cpp	Mon Sep 20 12:44:39 2010 +0530
@@ -17,13 +17,10 @@
 
 // System includes
 #include <QGraphicsLinearLayout>
-#include <HbModelIterator>
 
 // User includes
-#include "calendaymodelmanager.h"
 #include "calendaycontentwidget.h"
 #include "calendayitemview.h"
-#include "calendaycontentscrollarea.h"
 
 /*!
  \class CalenDayContentWidget
@@ -33,16 +30,12 @@
 /*!
  \brief Constructor
  
- \param modelManager Day View model manager
  \param parent The parent of central widget
  */
-CalenDayContentWidget::CalenDayContentWidget(
-    CalenDayModelManager &modelManager,
-    QGraphicsItem *parent) :
-    HbWidget(parent), mLayout(NULL), mModelManager(modelManager)
+CalenDayContentWidget::CalenDayContentWidget(QGraphicsItem *parent) :
+    HbWidget(parent), mLayout(NULL)
 {
     mWidgets.clear();
-    initializeViews();
 }
 
 /*!
@@ -62,32 +55,34 @@
  \param item Widget to be added
  \param where Place where widget should be added (as first/last item)
  */
-void CalenDayContentWidget::add(HbWidget* item, CalenWidgetPosition where)
+void CalenDayContentWidget::add(HbWidget *item, CalenWidgetPosition where)
 {
-    // Create linear, horizontal layout if not exist
-    if (!mLayout) {
-        mLayout = new QGraphicsLinearLayout(Qt::Horizontal, NULL);
-        mLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
-        mLayout->setSpacing(0.0);
-    }
+    if (item) {
+        // Create linear, horizontal layout if not exist
+        if (!mLayout) {
+            mLayout = new QGraphicsLinearLayout(Qt::Horizontal, NULL);
+            mLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
+            mLayout->setSpacing(0.0);
+        }
 
-    switch (where) {
-        case ECalenFirstWidget: {
-            mLayout->insertItem(0, item);
-            mWidgets.insert(0, item);
-            break;
+        switch (where) {
+            case ECalenFirstWidget: {
+                mLayout->insertItem(0, item);
+                mWidgets.insert(0, item);
+                break;
+            }
+            case ECalenLastWidget:
+            default: {
+                mLayout->addItem(item);
+                mWidgets.append(item);
+            }
         }
-        case ECalenLastWidget:
-        default: {
-            mLayout->addItem(item);
-            mWidgets.append(item);
+
+        // If layout has no parent - apply it to central widget
+        if (mLayout && !mLayout->parentLayoutItem()) {
+            setLayout(mLayout);
         }
     }
-
-    // If layout has no parent - apply it to central widget
-    if (mLayout && !mLayout->parentLayoutItem()) {
-        setLayout(mLayout);
-    }
 }
 
 /*!
@@ -100,24 +95,27 @@
  */
 HbWidget* CalenDayContentWidget::take(CalenWidgetPosition which)
 {
-    Q_ASSERT(mLayout);
-
-    HbWidget* itemToTake = NULL;
-    switch (which) {
-        case ECalenFirstWidget: {
-            itemToTake = mWidgets.takeFirst();
-            break;
+    HbWidget *itemToTake = NULL;
+    if (mWidgets.count() > 0) {
+        switch (which) {
+            case ECalenFirstWidget: {
+                itemToTake = mWidgets.takeFirst();
+                break;
+            }
+            case ECalenLastWidget: {
+                itemToTake = mWidgets.takeLast();
+                break;
+            }
+            default: {
+                // do nothing
+            }
         }
-        case ECalenLastWidget:
-        default: {
-            itemToTake = mWidgets.takeLast();
+
+        if (mLayout && itemToTake) {
+            mLayout->removeItem(itemToTake);
         }
     }
 
-    if (itemToTake) {
-        mLayout->removeItem(itemToTake);
-    }
-
     return itemToTake;
 }
 
@@ -130,22 +128,8 @@
  */
 void CalenDayContentWidget::remove(CalenWidgetPosition which)
 {
-    Q_ASSERT(mLayout);
-
-    HbWidget* itemToRemove = NULL;
-    switch (which) {
-        case ECalenFirstWidget: {
-            itemToRemove = mWidgets.takeFirst();
-            break;
-        }
-        case ECalenLastWidget:
-        default: {
-            itemToRemove = mWidgets.takeLast();
-        }
-    }
-
+    HbWidget *itemToRemove = take(which);
     if (itemToRemove) {
-        mLayout->removeItem(itemToRemove);
         delete itemToRemove;
     }
 }
@@ -163,18 +147,21 @@
  */
 void CalenDayContentWidget::relayoutWidgets(CalenScrollDirection scrollTo)
 {
-    HbWidget* widget = NULL;
+    HbWidget *widget = NULL;
     switch (scrollTo) {
         case ECalenScrollToNext: {
             widget = take(ECalenFirstWidget);
             add(widget, ECalenLastWidget);
             break;
         }
-        case ECalenScrollToPrev:
-        default: {
+        case ECalenScrollToPrev: {
             widget = take(ECalenLastWidget);
             add(widget, ECalenFirstWidget);
         }
+        case ECalenScrollNoDayChange: 
+        default: {
+            // do nothing
+        }
     }
     emit widgetsRelayoutFinished(scrollTo);
 }
@@ -194,53 +181,4 @@
     emit scrollPositionChanged(newPos);
 }
 
-/*!
- \brief Initializes content widgets and adds them to layout.
- 
- \param parent Parent object 
- */
-void CalenDayContentWidget::initializeViews()
-{
-    // Create item views
-    HbModelIterator *iterator(0);
-
-    iterator = new HbModelIterator(&mModelManager.getModel(
-        CalenDayModelManager::PreviousDay));
-    CalenDayItemView *prevItemView = new CalenDayItemView(
-        mModelManager.getServices(), iterator, 0);
-
-    iterator = new HbModelIterator(&mModelManager.getModel(
-        CalenDayModelManager::CurrentDay));
-    CalenDayItemView *currItemView = new CalenDayItemView(
-        mModelManager.getServices(), iterator, 0);
-
-    iterator = new HbModelIterator(&mModelManager.getModel(
-        CalenDayModelManager::NextDay));
-    CalenDayItemView *nextItemView = new CalenDayItemView(
-        mModelManager.getServices(), iterator, 0);
-
-    // Connecting views with widgetScrolled SLOT 
-    // to support simultanous vertical scrolling
-    connect(prevItemView, SIGNAL(scrollPositionChanged(const QPointF&)), this,
-        SLOT(widgetScrolled(const QPointF&)));
-    connect(currItemView, SIGNAL(scrollPositionChanged(const QPointF&)), this,
-        SLOT(widgetScrolled(const QPointF&)));
-    connect(nextItemView, SIGNAL(scrollPositionChanged(const QPointF&)), this,
-        SLOT(widgetScrolled(const QPointF&)));
-
-    if (parentItem()) {
-        // Install event filters to receive events necessary for gesture handling
-        CalenDayContentScrollArea* scrollArea =
-            static_cast<CalenDayContentScrollArea*> (parentItem());
-        prevItemView->installEventFilter(scrollArea);
-        currItemView->installEventFilter(scrollArea);
-        nextItemView->installEventFilter(scrollArea);
-    }
-
-    // Add views to layout
-    add(prevItemView);
-    add(currItemView);
-    add(nextItemView);
-}
-
 // End of File