diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/library/cratefeature.cpp ./mixxx-1.10.0/src/library/cratefeature.cpp --- ./mixxx-1.10.0Donttouch/src/library/cratefeature.cpp 2011-12-24 08:23:18.000000000 +0530 +++ ./mixxx-1.10.0/src/library/cratefeature.cpp 2012-03-08 17:12:51.727036497 +0530 @@ -97,8 +97,11 @@ CrateDAO& crateDao = m_pTrackCollection->getCrateDAO(); - if (trackId >= 0) - return crateDao.addTrackToCrate(trackId, crateId); + if (trackId >= 0){ + QList iTrackIdList; + iTrackIdList.append(trackId); + return crateDao.addTrackToCrate(&iTrackIdList, crateId); + } return false; } diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/library/cratetablemodel.cpp ./mixxx-1.10.0/src/library/cratetablemodel.cpp --- ./mixxx-1.10.0Donttouch/src/library/cratetablemodel.cpp 2011-12-24 08:23:18.000000000 +0530 +++ ./mixxx-1.10.0/src/library/cratetablemodel.cpp 2012-03-08 17:15:19.171032463 +0530 @@ -75,7 +75,9 @@ bool success = false; if (iTrackId >= 0) { - success = m_pTrackCollection->getCrateDAO().addTrackToCrate(iTrackId, m_iCrateId); + QList iTrackIdList; + iTrackIdList.append(iTrackId); + success = m_pTrackCollection->getCrateDAO().addTrackToCrate(&iTrackIdList, m_iCrateId); } if (success) { diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/library/dao/cratedao.cpp ./mixxx-1.10.0/src/library/dao/cratedao.cpp --- ./mixxx-1.10.0Donttouch/src/library/dao/cratedao.cpp 2011-12-24 08:23:18.000000000 +0530 +++ ./mixxx-1.10.0/src/library/dao/cratedao.cpp 2012-03-08 17:40:20.892049194 +0530 @@ -178,19 +178,24 @@ return 0; } -bool CrateDAO::addTrackToCrate(int trackId, int crateId) { +bool CrateDAO::addTrackToCrate(QList *m_pTrackIdList, int crateId) { QSqlQuery query(m_database); - query.prepare("INSERT INTO " CRATE_TRACKS_TABLE + m_database.exec("BEGIN TRANSACTION"); + for(int i=0;isize();i++){ + query.prepare("INSERT INTO " CRATE_TRACKS_TABLE " (crate_id, track_id) VALUES (:crate_id, :track_id)"); - query.bindValue(":crate_id", crateId); - query.bindValue(":track_id", trackId); + query.bindValue(":crate_id", crateId); + query.bindValue(":track_id", (int) m_pTrackIdList->at(i)); - if (!query.exec()) { - LOG_FAILED_QUERY(query); - return false; + if (!query.exec()) { + LOG_FAILED_QUERY(query); + return false; + } + emit(trackAdded(crateId,m_pTrackIdList->at(i))); } - emit(trackAdded(crateId, trackId)); + //emit(trackAdded(crateId, trackId)); + m_database.exec("END TRANSACTION"); emit(changed(crateId)); return true; } diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/library/dao/cratedao.h ./mixxx-1.10.0/src/library/dao/cratedao.h --- ./mixxx-1.10.0Donttouch/src/library/dao/cratedao.h 2011-12-24 08:23:18.000000000 +0530 +++ ./mixxx-1.10.0/src/library/dao/cratedao.h 2012-03-08 17:05:33.415044326 +0530 @@ -37,7 +37,7 @@ int getCrateId(int position); QString crateName(int crateId); unsigned int crateSize(int crateId); - bool addTrackToCrate(int trackId, int crateId); + bool addTrackToCrate(QList *m_pTrackIdList, int crateId); void removeTrackFromCrates(int trackId); bool removeTrackFromCrate(int trackId, int crateId); diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/widget/wpreparecratestableview.cpp ./mixxx-1.10.0/src/widget/wpreparecratestableview.cpp --- ./mixxx-1.10.0Donttouch/src/widget/wpreparecratestableview.cpp 2011-12-24 08:23:21.000000000 +0530 +++ ./mixxx-1.10.0/src/widget/wpreparecratestableview.cpp 2012-03-08 18:00:41.959031567 +0530 @@ -83,15 +83,20 @@ //Drag-and-drop from an external widget destIndex = this->indexAt(event->pos()); + QList iTrackIdList; + int crateId; foreach (url, urls) { QModelIndex destIndex = this->indexAt(event->pos()); QString crateName = destIndex.data().toString(); - int crateId = m_pTrackCollection->getCrateDAO().getCrateIdByName(crateName); + crateId = m_pTrackCollection->getCrateDAO().getCrateIdByName(crateName); int trackId = m_pTrackCollection->getTrackDAO().getTrackId(url.toLocalFile()); - if (trackId >= 0) - m_pTrackCollection->getCrateDAO().addTrackToCrate(trackId, crateId); - } + if (trackId >= 0){ + iTrackIdList.append(trackId); + } + } + m_pTrackCollection->getCrateDAO().addTrackToCrate(&iTrackIdList, crateId); + } event->acceptProposedAction(); diff -urN -x '*cscope*' -x '*.orig' -x '*.rej' ./mixxx-1.10.0Donttouch/src/widget/wtracktableview.cpp ./mixxx-1.10.0/src/widget/wtracktableview.cpp --- ./mixxx-1.10.0Donttouch/src/widget/wtracktableview.cpp 2011-12-24 08:23:20.000000000 +0530 +++ ./mixxx-1.10.0/src/widget/wtracktableview.cpp 2012-03-08 17:55:16.223030422 +0530 @@ -873,9 +873,10 @@ } void WTrackTableView::addSelectionToCrate(int iCrateId) { + qDebug()<<"The WTrackTableView addSelectionToCrateCalled"; CrateDAO& crateDao = m_pTrackCollection->getCrateDAO(); TrackModel* trackModel = getTrackModel(); - + QList iTrackIdList; QModelIndexList indices = selectionModel()->selectedRows(); foreach (QModelIndex index, indices) { TrackPointer pTrack; @@ -883,10 +884,11 @@ (pTrack = trackModel->getTrack(index))) { int iTrackId = pTrack->getId(); if (iTrackId != -1) { - crateDao.addTrackToCrate(iTrackId, iCrateId); + iTrackIdList.append(iTrackId); } } } + crateDao.addTrackToCrate(&iTrackIdList, iCrateId); } void WTrackTableView::doSortByColumn(int headerSection) {