bookmarks/BookmarksManager.cpp
changeset 12 d26902edeef5
parent 9 1d51612454b5
child 15 5ea3798f1248
equal deleted inserted replaced
11:6078840978b1 12:d26902edeef5
   155     
   155     
   156     if(bookmarkId != FAILURE) {
   156     if(bookmarkId != FAILURE) {
   157         // do some checking on parameters
   157         // do some checking on parameters
   158         QString updatedTitle = title;
   158         QString updatedTitle = title;
   159         QString updatedUrl = normalizeUrl(URL);
   159         QString updatedUrl = normalizeUrl(URL);
       
   160         int soIndex = 1;
   160         if (title.isEmpty()) {
   161         if (title.isEmpty()) {
   161             updatedTitle = "Untitled";
   162             updatedTitle = "Untitled";
   162         }
   163         }
   163         if (m_db.isOpen()) {
   164         if (m_db.isOpen()) {
   164             QSqlQuery query(m_db);
   165             QSqlQuery query(m_db);
   165             query.prepare("INSERT INTO bookmarks (title, url, sortIndex)"
   166             m_db.transaction();
   166                    "select :title, :url, ifnull(max(sortIndex)+1,1) from bookmarks");
   167             if (!query.exec("SELECT count(*) from bookmarks")) {
       
   168                 lastErrMsg(query);
       
   169                 m_db.rollback();
       
   170                 return DATABASEERROR;
       
   171             }
       
   172             if(query.next()) {
       
   173                 query.prepare("UPDATE bookmarks SET sortIndex=sortIndex+1 WHERE sortIndex >= :sIndex");
       
   174                 query.bindValue(":sIndex", soIndex);
       
   175                 if (!query.exec()) {
       
   176                     lastErrMsg(query);
       
   177                     m_db.rollback();
       
   178                     return DATABASEERROR;
       
   179                  }
       
   180            } 
       
   181            query.prepare("INSERT INTO bookmarks (title, url, sortIndex) "
       
   182                                "VALUES (:title, :url, :sIndex)");
   167             query.bindValue(":title", QVariant(updatedTitle));
   183             query.bindValue(":title", QVariant(updatedTitle));
   168             query.bindValue(":url",    QVariant(updatedUrl));
   184             query.bindValue(":url",    QVariant(updatedUrl));
       
   185             query.bindValue(":sIndex",  QVariant(soIndex));
   169             if (!query.exec()) {
   186             if (!query.exec()) {
   170                 lastErrMsg(query);
   187                 lastErrMsg(query);
       
   188                 m_db.rollback();
   171                 return DATABASEERROR;
   189                 return DATABASEERROR;
   172            }
   190            }
   173            // Note: lastInsertId() is not thread-safe
   191            // Note: lastInsertId() is not thread-safe
   174             bookmarkId = query.lastInsertId().toInt();
   192             bookmarkId = query.lastInsertId().toInt();
       
   193             if (!m_db.commit()) {
       
   194                 qDebug() << m_db.lastError().text();
       
   195                 m_db.rollback();
       
   196                return DATABASEERROR;
       
   197             }
   175         } else {
   198         } else {
   176             bookmarkId = FAILURE;
   199             bookmarkId = FAILURE;
   177         }
   200         }
   178     }
   201       }
   179     return bookmarkId;
   202     return bookmarkId;
   180 }
   203 }
   181 
   204 
   182 /**==============================================================
   205 /**==============================================================
   183  * Import bookmarks from an XBEL file. If no filename is 
   206  * Import bookmarks from an XBEL file. If no filename is 
   651     }
   674     }
   652     return results;
   675     return results;
   653 }
   676 }
   654 
   677 
   655 /**==============================================================
   678 /**==============================================================
       
   679  * Description: Finds a bookmark based on a given bookmarkID.
       
   680  * Returns: A pointer to BookmarkFav object or NULL.
       
   681  ===============================================================*/
       
   682 QMap<QString, QString> BookmarksManager::findBookmarks(QString atitle)
       
   683 {      
       
   684     QMap<QString, QString> map;
       
   685     
       
   686     if (m_db.isOpen()) { 
       
   687         QSqlQuery query(m_db);    
       
   688         QString queryStatement = "SELECT url, title FROM bookmarks WHERE title LIKE '%"+atitle+"%' OR url LIKE '%" + atitle + "%'";          
       
   689         query.prepare(queryStatement);
       
   690         if(query.exec()) {    
       
   691            while (query.next()){
       
   692               QString bookmarkUrl = query.value(0).toString();
       
   693               QString bookmarkTitle =   query.value(1).toString();
       
   694               map.insert( bookmarkUrl, bookmarkTitle );
       
   695            }
       
   696         } else {
       
   697             lastErrMsg(query); 
       
   698         }
       
   699     }
       
   700     return map;
       
   701 }
       
   702 
       
   703 /**==============================================================
   656  * Description: Prints a last error message from the query.
   704  * Description: Prints a last error message from the query.
   657  * Returns: Nothing.
   705  * Returns: Nothing.
   658  ===============================================================*/
   706  ===============================================================*/
   659 void BookmarksManager::lastErrMsg(QSqlQuery& query) 
   707 void BookmarksManager::lastErrMsg(QSqlQuery& query) 
   660 {
   708 {