src/hbwidgets/itemviews/hblistview.cpp
branchGCC_SURGE
changeset 15 f378acbc9cfb
parent 6 c3690ec91ef8
child 21 4633027730f5
--- a/src/hbwidgets/itemviews/hblistview.cpp	Thu Jul 15 14:03:49 2010 +0100
+++ b/src/hbwidgets/itemviews/hblistview.cpp	Thu Jul 22 16:36:53 2010 +0100
@@ -29,7 +29,6 @@
 #include "hblistlayout_p.h"
 #include "hblistviewitem.h"
 #include "hblistitemcontainer_p.h"
-#include "hblistitemcontainer_p.h"
 #include "hbscrollbar.h"
 #include <hbwidgetfeedback.h>
 #include "hbmodeliterator.h"
@@ -202,7 +201,7 @@
 
 /*!
     Returns true if view is in arrange mode. False otherwise.
- */
+*/
 bool HbListView::arrangeMode() const
 {
     Q_D(const HbListView);
@@ -210,8 +209,8 @@
 }
 
 /*!
- * Returns the view item being dragged. This is NULL if no item is being dragged.
- */
+    Returns the view item being dragged. This is NULL if no item is being dragged.
+*/
 HbAbstractViewItem *HbListView::draggedItem() const
 {
     Q_D( const HbListView );
@@ -233,25 +232,12 @@
 {
     Q_D(HbListView);
     if (arrangeMode != d->mArrangeMode) {
-        if (arrangeMode == true) {
-            if (d->mSelectionMode != HbAbstractItemView::NoSelection
-                || !d->mModelIterator->model()
-                || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
-                return false;
+        if (d->mSelectionMode != HbAbstractItemView::NoSelection
+            || !d->mModelIterator->model()
+            || !(d->mModelIterator->model()->supportedDropActions().testFlag(Qt::MoveAction))) {
+            return false;
             }
-            verticalScrollBar()->setInteractive(true);
-        } else {
-            verticalScrollBar()->setInteractive(false);
-        }
-        d->mArrangeMode = arrangeMode;
-        d->mAnimateItems = !d->mArrangeMode;
-
-        if (d->mArrangeMode == true) {
-            d->mOriginalFriction = d->mFrictionEnabled;
-            setFrictionEnabled(false);
-        } else {
-            setFrictionEnabled(d->mOriginalFriction);
-        }
+        d->arrangeModeSetup(arrangeMode);
     }
     return true;
 }
@@ -317,14 +303,20 @@
 
 /*!
     \reimp
+    
+    Derived implementations must respect the d->mMoveOngoing flag and not perform
+    any view actions when the flag is set.
 */
 void HbListView::rowsInserted(const QModelIndex &parent, int start, int end)
 {
     Q_D(HbListView);
 
+    if (d->mMoveOngoing)
+        return;
+
     if (parent == d->mModelIterator->rootIndex()) {
         HbAbstractItemView::rowsInserted(parent, start, end);
-        if (!d->mArrangeMode && d->animationEnabled(true)) {
+        if (d->animationEnabled(true)) {
             d->startAppearEffect("viewitem", "appear", parent, start, end);
         }
     }
@@ -332,11 +324,17 @@
 
 /*!
     \reimp
+    
+    Derived implementations must respect the d->mMoveOngoing flag and not perform
+    any view actions when the flag is set.
 */
 void HbListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
 {
     Q_D(HbListView);
 
+    if (d->mMoveOngoing)
+        return;
+
     if (parent == d->mModelIterator->rootIndex()) {
         for (int i = start; i <= end; i++) {
             HbAbstractViewItem* item = viewItem(i);
@@ -345,7 +343,7 @@
                    d->mDraggedItem = 0;
                 }
 
-                if (!d->mArrangeMode && d->animationEnabled(false)) {
+                if (d->animationEnabled(false)) {
                     d->mItemsAboutToBeDeleted.append(item);
                 }
             }
@@ -355,10 +353,17 @@
 
 /*!
     \reimp
+    
+    Derived implementations must respect the d->mMoveOngoing flag and not perform
+    any view actions when the flag is set.
 */
 void HbListView::rowsRemoved(const QModelIndex &parent, int start, int end)
 {
     Q_D(HbListView);
+
+    if (d->mMoveOngoing)
+        return;
+
     if (parent == d->mModelIterator->rootIndex()) {
         if (d->animationEnabled(false)) {
             for (int i = 0; i < d->mItemsAboutToBeDeleted.count(); i++) {