homescreenapp/hsdomainmodel/src/hsscene.cpp
changeset 63 52b0f64eeb51
parent 62 341166945d65
child 69 87476091b3f5
equal deleted inserted replaced
62:341166945d65 63:52b0f64eeb51
   162 
   162 
   163     if (!mPages.contains(page)) {
   163     if (!mPages.contains(page)) {
   164         return true;
   164         return true;
   165     }
   165     }
   166 
   166 
   167     int index = mPages.indexOf(page) + 1;
   167     int nextIndex = mPages.indexOf(page) + 1;
   168 
   168 
   169     HsDatabase *db = HsDatabase::instance();
   169     HsDatabase *db = HsDatabase::instance();
   170     db->transaction();
   170     db->transaction();
   171 
   171     // update page indexes
   172     HsPageData data;
   172     HsPageData data;
   173     for (int i = index; i < mPages.count(); ++i) {
   173     int pageCount(mPages.count());
   174         data.id = mPages.at(i)->databaseId();
   174     for (;nextIndex < pageCount; ++nextIndex) {
   175         data.indexPosition = i - 1;
   175         data.id = mPages.at(nextIndex)->databaseId();
       
   176         data.indexPosition = nextIndex - 1;
   176         if (!db->updatePage(data)) {
   177         if (!db->updatePage(data)) {
   177             db->rollback();
   178             db->rollback();
   178             return false;
   179             return false;
   179         }
   180         }
   180     }
   181     }
   181 
   182     // page will remove itself from database
   182     if (!page->deleteFromDatabase()) {
   183     if (!page->deleteFromDatabase()) {
   183         db->rollback();
   184         db->rollback();
   184         return false;
   185         return false;
   185     }
   186     }
   186 
   187 
   187     db->commit();
   188     db->commit();
   188 
   189     // update internal list
       
   190     int index = mPages.indexOf(page);
       
   191     bool lastPage(mPages.last() == page);
   189     mPages.removeOne(page);
   192     mPages.removeOne(page);
       
   193     if (mPages.isEmpty()) {
       
   194         mActivePage = NULL;
       
   195     }else if (mActivePage == page) {
       
   196         if (lastPage) {
       
   197             index--;
       
   198         }
       
   199         setActivePageIndex(index);
       
   200     }
       
   201     
   190     return true;
   202     return true;
   191 }
   203 }
   192 
   204 
   193 /*!
   205 /*!
   194     Set active page \a page.
   206     Set active page \a page.