homescreenapp/hsdomainmodel/src/hsscene.cpp
changeset 63 52b0f64eeb51
parent 62 341166945d65
child 69 87476091b3f5
--- a/homescreenapp/hsdomainmodel/src/hsscene.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsscene.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -164,29 +164,41 @@
         return true;
     }
 
-    int index = mPages.indexOf(page) + 1;
+    int nextIndex = mPages.indexOf(page) + 1;
 
     HsDatabase *db = HsDatabase::instance();
     db->transaction();
-
+    // update page indexes
     HsPageData data;
-    for (int i = index; i < mPages.count(); ++i) {
-        data.id = mPages.at(i)->databaseId();
-        data.indexPosition = i - 1;
+    int pageCount(mPages.count());
+    for (;nextIndex < pageCount; ++nextIndex) {
+        data.id = mPages.at(nextIndex)->databaseId();
+        data.indexPosition = nextIndex - 1;
         if (!db->updatePage(data)) {
             db->rollback();
             return false;
         }
     }
-
+    // page will remove itself from database
     if (!page->deleteFromDatabase()) {
         db->rollback();
         return false;
     }
 
     db->commit();
-
+    // update internal list
+    int index = mPages.indexOf(page);
+    bool lastPage(mPages.last() == page);
     mPages.removeOne(page);
+    if (mPages.isEmpty()) {
+        mActivePage = NULL;
+    }else if (mActivePage == page) {
+        if (lastPage) {
+            index--;
+        }
+        setActivePageIndex(index);
+    }
+    
     return true;
 }