summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivemodel.cpp33
-rw-r--r--archivemodel.h2
-rw-r--r--filestreemodel.cpp12
-rw-r--r--filestreemodel.h1
-rw-r--r--mappingtableeditor.cpp5
-rw-r--r--mappingtableeditor.h1
-rw-r--r--mappingtablemodel.cpp12
-rw-r--r--mappingtablemodel.h1
-rw-r--r--mappingtreemodel.cpp14
-rw-r--r--mappingtreemodel.h1
-rw-r--r--newmoviewizard.h1
-rw-r--r--newpicsdialog.cpp5
-rw-r--r--newpicsdialog.h1
-rw-r--r--picfilesmodel.cpp7
-rw-r--r--picfilesmodel.h1
-rw-r--r--seriesmetadatamodel.cpp8
-rw-r--r--seriesmetadatamodel.h1
-rw-r--r--seriestreemodel.cpp18
-rw-r--r--seriestreemodel.h1
-rw-r--r--shemov.cpp1
-rw-r--r--smdirmodel.cpp6
-rw-r--r--smdirmodel.h1
-rw-r--r--smdirwatcher.cpp18
-rw-r--r--smdirwatcher.h3
-rw-r--r--statisticsdialog.h1
25 files changed, 50 insertions, 105 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 28a9cbb..4ca9f1c 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -878,7 +878,7 @@ void ArchiveFilesModel::readConfig(){
/*
* ArchiveCollector BEGIN */
-ArchiveCollector::ArchiveCollector(int numFields, int order, QObject *parent) : QThread(parent), mRootItem(0), mNumFields(numFields), mSortOrder(order) {
+ArchiveCollector::ArchiveCollector(int numFields, int order, QObject *parent) : QThread(parent), mRootItem(0), mNumFields(numFields), mSortOrder(order), mCancelled(false) {
QString dbName = QString("%1").arg((qint64(this)));
mDb = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), dbName);
mDb.open();
@@ -919,7 +919,9 @@ void ArchiveCollector::run(){
void ArchiveCollector::populateBySeriesName() {
fetchSeries(QVariant(), mRootItem);
for(int i = 0; i < mRootItem->childCount(); ++i){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
fetchParts(QVariant(), mRootItem->child(i));
}
}
@@ -927,7 +929,9 @@ void ArchiveCollector::populateBySeriesName() {
void ArchiveCollector::populateByGenre(){
QSqlQuery genreIdQuery = QSqlQuery("SELECT igenres_id, tgenrename FROM genres ORDER BY tgenrename", mDb);
while(genreIdQuery.next()){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
QList<QVariant> genreIdData;
genreIdData << genreIdQuery.value(1) << genreIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::GenreNode << false << QVariant() << QVariant();
SmTreeItem *genreIdItem = new SmTreeItem(genreIdData, mRootItem);
@@ -939,7 +943,9 @@ void ArchiveCollector::populateByGenre(){
void ArchiveCollector::populateByActor(){
QSqlQuery actorIdQuery = QSqlQuery("SELECT iactors_id, tactorname FROM actors ORDER BY tactorname", mDb);
while(actorIdQuery.next()){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
QList<QVariant> actorIdData;
actorIdData << actorIdQuery.value(1) << actorIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::ActorNode << false << QVariant() << QVariant();
SmTreeItem *actorIdItem = new SmTreeItem(actorIdData, mRootItem);
@@ -950,7 +956,9 @@ void ArchiveCollector::populateByActor(){
void ArchiveCollector::fetchChildren(SmTreeItem *parent){
for(int i = 0; i < parent->childCount(); ++i){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
fetchSeries(parent->child(i)->data(ArchiveModel::GenericId), parent->child(i));
for(int j = 0; j < parent->child(i)->childCount(); ++j){
checkCancelled();
@@ -983,7 +991,9 @@ void ArchiveCollector::fetchSeries(const QVariant &id, SmTreeItem *parent){
return;
}
while(seriesIdQuery.next()){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
QList<QVariant> seriesData;
seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::SeriesNode << false << QVariant() << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(seriesData, parent);
@@ -1009,7 +1019,9 @@ void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){
}
partsQuery.exec();
while(partsQuery.next()){
- checkCancelled();
+ if(checkCancelled()){
+ return;
+ }
QList<QVariant> partData;
partData << parent->data(ArchiveModel::Name) << parent->data(ArchiveModel::GenericId) << partsQuery.value(0) << partsQuery.value(1) << ArchiveModel::SeriesPartNode << partsQuery.value(2) << partsQuery.value(3) << QVariant();
SmTreeItem *partItem = new SmTreeItem(partData, parent);
@@ -1018,10 +1030,7 @@ void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){
parent->setData(ArchiveModel::Count, parent->childCount());
}
-void ArchiveCollector::checkCancelled(){
+bool ArchiveCollector::checkCancelled(){
QMutexLocker l(&mCancelledMx);
- if(mCancelled){
- mCancelled = false;
- quit();
- }
+ return mCancelled;
}
diff --git a/archivemodel.h b/archivemodel.h
index 8e0d853..f14dd30 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -131,7 +131,7 @@ class ArchiveCollector : public QThread {
void fetchChildren(SmTreeItem *parent);
void fetchSeries(const QVariant &id, SmTreeItem *parent);
void fetchParts(const QVariant &id, SmTreeItem *parent);
- void checkCancelled();
+ bool checkCancelled();
QSqlDatabase mDb;
SmTreeItem *mRootItem;
QMutex mAccessMx;
diff --git a/filestreemodel.cpp b/filestreemodel.cpp
index b6738af..2b4ad6d 100644
--- a/filestreemodel.cpp
+++ b/filestreemodel.cpp
@@ -67,18 +67,6 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo
mDvdSize = SmGlobals::instance()->dvdSize();
}
-FilesTreeModel::~FilesTreeModel(){
- delete mUpdateDvdQuery;
- delete mUpdateQualityQuery;
- delete mUpdatePartNoQuery;
- delete mUpdateFileTypeQuery;
- delete mInsertFileQuery;
- delete mFilesQuery;
- delete mDeleteFileQuery;
- delete mFileTypeQuery;
- mDb = QSqlDatabase();
-}
-
void FilesTreeModel::setIds(const QList<int> &seriesPartIds){
mDisplayMode = Ids;
mCurrentIds = seriesPartIds;
diff --git a/filestreemodel.h b/filestreemodel.h
index cce75fe..3b7924b 100644
--- a/filestreemodel.h
+++ b/filestreemodel.h
@@ -35,7 +35,6 @@ class FilesTreeModel : public SmTreeModel {
void setMode(int mode) { mMode = mode; }
int displayMode() const { return mDisplayMode; }
void setDisplayMode(int mode) { mDisplayMode = mode; }
- ~FilesTreeModel();
//data + flags
void setIds(const QList<int> &seriesPartIds);
diff --git a/mappingtableeditor.cpp b/mappingtableeditor.cpp
index 1f6d19d..d1fe985 100644
--- a/mappingtableeditor.cpp
+++ b/mappingtableeditor.cpp
@@ -144,11 +144,6 @@ MappingTableEditorModel::MappingTableEditorModel(const QString &table, const QSt
populate();
}
-MappingTableEditorModel::~MappingTableEditorModel(){
- delete mDataQuery;
- mDb = QSqlDatabase();
-}
-
Qt::ItemFlags MappingTableEditorModel::flags(const QModelIndex &index) const{
if(!index.isValid()){
return 0;
diff --git a/mappingtableeditor.h b/mappingtableeditor.h
index cbdacf9..f09483e 100644
--- a/mappingtableeditor.h
+++ b/mappingtableeditor.h
@@ -56,7 +56,6 @@ class MappingTableEditorModel : public SmTreeModel {
enum Roles { NameRole = Qt::UserRole + 1, CountRole = Qt::UserRole +2, IdRole = Qt::UserRole + 3 };
enum Fields { Name = 0, Count = 1, Id = 2 };
explicit MappingTableEditorModel(const QString &table, const QStringList &headers, QObject *parent = 0);
- virtual ~MappingTableEditorModel();
virtual Qt::ItemFlags flags(const QModelIndex &idx) const;
virtual QVariant data(const QModelIndex &index, int role) const;
virtual bool setData(const QModelIndex &idx, const QVariant &value, int role);
diff --git a/mappingtablemodel.cpp b/mappingtablemodel.cpp
index 0724c00..8d3752f 100644
--- a/mappingtablemodel.cpp
+++ b/mappingtablemodel.cpp
@@ -50,18 +50,6 @@ MappingTableModel::MappingTableModel(QStringList &headers, const QString &table,
populate();
}
-MappingTableModel::~MappingTableModel(){
- delete mUpdateItemNameQuery;
- delete mInsertItemQuery;
- delete mDeleteItemQuery;
- delete mAddMappingQuery;
- delete mRemoveMappingQuery;
- delete mMappingQuery;
- delete mAllItemsQuery;
- delete mItemCountQuery;
- mDb = QSqlDatabase();
-}
-
Qt::ItemFlags MappingTableModel::flags(const QModelIndex &index) const{
if(!index.isValid()){
return 0;
diff --git a/mappingtablemodel.h b/mappingtablemodel.h
index 1c264ff..8f3793b 100644
--- a/mappingtablemodel.h
+++ b/mappingtablemodel.h
@@ -23,7 +23,6 @@ class MappingTableModel : public SmTreeModel{
enum CustomRoles { ItemNameRole = Qt::UserRole + 1, ItemIdRole = Qt::UserRole + 2 };
enum Fields { ItemName = 0, ItemId = 1 };
explicit MappingTableModel(QStringList &headers, const QString &table, QObject *parent = 0);
- virtual ~MappingTableModel();
//data + flags
virtual Qt::ItemFlags flags(const QModelIndex &index) const;
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 9c6be13..650a21d 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -43,20 +43,6 @@ MappingTreeModel::MappingTreeModel(QStringList &headers, QObject *parent) : SmTr
mDescriptionQ->prepare("SELECT tdescription_name, idescription_id FROM mapping_description WHERE idescription_type = :type");
}
-MappingTreeModel::~MappingTreeModel(){
- delete mTypesQ;
- delete mUpdateTypeQ;
- delete mUpdateChildQ;
- delete mAddMappingTypeQ;
- delete mDeleteMappingTypeQ;
- delete mAddDescriptionQ;
- delete mSelectDescriptionQ;
- delete mAddParentQ;
- delete mUpdateParentQ;
- delete mDescriptionQ;
- mDb = QSqlDatabase();
-}
-
QStringList MappingTreeModel::mappingTypeNames() const {
QStringList retval;
foreach(mappingType t, mMappingTypes){
diff --git a/mappingtreemodel.h b/mappingtreemodel.h
index 247c96d..4665e07 100644
--- a/mappingtreemodel.h
+++ b/mappingtreemodel.h
@@ -25,7 +25,6 @@ class MappingTreeModel : public SmTreeModel {
enum Fields { Name = 0, MappingId = 1, DescAdded = 2, DescId = 3, MappingParentId = 4 };
enum { NumFields = 5 };
MappingTreeModel(QStringList &headers, QObject *parent = 0);
- ~MappingTreeModel();
//model type convenience functions
QStringList mappingTypeNames() const;
diff --git a/newmoviewizard.h b/newmoviewizard.h
index 0aae2d2..5f4d385 100644
--- a/newmoviewizard.h
+++ b/newmoviewizard.h
@@ -117,7 +117,6 @@ class WizardTreeModel : public SmTreeModel {
enum { NumFields = 5 };
enum Types { Movie = 1, FrontCover = 2, BackCover = 3, GeneralCover = 4 };
explicit WizardTreeModel(QStringList &headers, QObject *parent = 0);
- virtual ~WizardTreeModel() {}
//data + flags
virtual QVariant data(const QModelIndex &index, int role) const;
diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp
index 36fdfe1..31e14c4 100644
--- a/newpicsdialog.cpp
+++ b/newpicsdialog.cpp
@@ -173,11 +173,6 @@ NewPicFilesModel::NewPicFilesModel(const QStringList &header, QObject *parent) :
mMd5Query->prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :md5");
}
-NewPicFilesModel::~NewPicFilesModel(){
- delete mMd5Query;
- mDb = QSqlDatabase();
-}
-
Qt::ItemFlags NewPicFilesModel::flags(const QModelIndex &index) const{
Q_UNUSED(index);
return (Qt::ItemIsSelectable | Qt::ItemIsEnabled);
diff --git a/newpicsdialog.h b/newpicsdialog.h
index 87db4f3..67068df 100644
--- a/newpicsdialog.h
+++ b/newpicsdialog.h
@@ -59,7 +59,6 @@ class NewPicFilesModel : public SmTreeModel {
enum Fields { FileName = 0, Size = 1, Valid = 2, Md5Sum = 3, MimeType = 4, FullPath = 5 };
enum { NumFields = 6 };
explicit NewPicFilesModel(const QStringList &header, QObject *parent = 0);
- ~NewPicFilesModel();
//data
Qt::ItemFlags flags(const QModelIndex &index) const;
diff --git a/picfilesmodel.cpp b/picfilesmodel.cpp
index 6b8153f..cb54503 100644
--- a/picfilesmodel.cpp
+++ b/picfilesmodel.cpp
@@ -32,13 +32,6 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr
}
-PicFilesModel::~PicFilesModel(){
- delete mDeleteFileQ;
- delete mDeleteMappingsQ;
- delete mAddMappingsQ;
- mDb = QSqlDatabase::database();
-}
-
void PicFilesModel::setMapping(int pMapId){
QList<QVariant> ids = mMappingTreeModel->childList(pMapId, MappingTreeModel::MappingId);
mMappingIds.clear();
diff --git a/picfilesmodel.h b/picfilesmodel.h
index a27372d..6a033c1 100644
--- a/picfilesmodel.h
+++ b/picfilesmodel.h
@@ -18,7 +18,6 @@ class PicFilesModel : public SmTreeModel {
enum Fields { FileName = 0, Size = 1, MimeType = 2, FullPath = 3, Id = 4, Added = 5, Md5Sum = 6, SizeDisplay = 7 };
enum { NumFields = 8 };
explicit PicFilesModel(const QStringList &headers, QObject *parent = 0);
- ~PicFilesModel();
void setMapping(int pMapId);
//some data
diff --git a/seriesmetadatamodel.cpp b/seriesmetadatamodel.cpp
index 21a9c3d..383c77b 100644
--- a/seriesmetadatamodel.cpp
+++ b/seriesmetadatamodel.cpp
@@ -56,14 +56,6 @@ SeriesMetadataModel::SeriesMetadataModel(const QStringList &headers, QObject *pa
mDisplayColumnNames.insert(Added, "Date added");
}
-SeriesMetadataModel::~SeriesMetadataModel(){
- delete mPopulateQuery;
- delete mPresentQuery;
- delete mUpdateAllQuery;
- delete mInsertQuery;
- mDb = QSqlDatabase();
-}
-
QVariant SeriesMetadataModel::data(int column) const {
if((column < 0 ) || (column >= mDataFields)){
return QVariant();
diff --git a/seriesmetadatamodel.h b/seriesmetadatamodel.h
index 4aaa3e1..8c25c6b 100644
--- a/seriesmetadatamodel.h
+++ b/seriesmetadatamodel.h
@@ -28,7 +28,6 @@ class SeriesMetadataModel : public SmTreeModel {
public:
enum Fields { ReleaseYear = 0, SourceMedium = 1, Subject = 2, ReleaseGroup = 3, EncoderOpts = 4, Comment = 5, Passes = 6, Added = 7 };
explicit SeriesMetadataModel(const QStringList &headers, QObject *parent = 0);
- virtual ~SeriesMetadataModel();
//data
int currentId() const { return mCurrentId; }
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index 4ec9f3f..ac1a381 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -56,24 +56,6 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
populate();
}
-SeriesTreeModel::~SeriesTreeModel(){
- delete mSeriesPartsQuery;
- delete mUpdateSeriesIdQuery;
- delete mUpdateSeriesNameQuery;
- delete mDeleteSeriesQuery;
- delete mDeleteSeriesPartQuery;
- delete mSeriesInsertQuery;
- delete mSeriesFilesQuery;
- delete mSeriesPartFilesQuery;
- delete mSeriesPartInsertQuery;
- delete mSortedMovieListQuery;
- delete mNextDvdNoQuery;
- delete mGenreFilterQuery;
- delete mFavoriteSeriesIdQuery;
- delete mFavoriteSeriesPartsQuery;
- mDb = QSqlDatabase();
-}
-
Qt::ItemFlags SeriesTreeModel::flags(const QModelIndex &index) const{
if(!index.isValid()){
return 0;
diff --git a/seriestreemodel.h b/seriestreemodel.h
index 55add52..19b496f 100644
--- a/seriestreemodel.h
+++ b/seriestreemodel.h
@@ -27,7 +27,6 @@ class SeriesTreeModel : public SmTreeModel {
enum { NumFields = 8 };
enum RowFilter { All = 0, Archived = 1, Local = 2 };
explicit SeriesTreeModel(QStringList &headers, QObject *parent = 0);
- ~SeriesTreeModel();
//data + flags
Qt::ItemFlags flags(const QModelIndex &index) const;
diff --git a/shemov.cpp b/shemov.cpp
index 40ad231..9d4d585 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -162,6 +162,7 @@ void SheMov::closeEvent(QCloseEvent *event){
writeSettings();
SmGlobals *globals = SmGlobals::instance();
delete globals;
+ QSqlDatabase::database("treedb").close();
event->accept();
}
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 16caf02..23e76fa 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -30,6 +30,12 @@ SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeMode
connect(mCollector, SIGNAL(newData(QList<QVariant>,int)), this, SLOT(dirEvent(QList<QVariant>,int)), Qt::BlockingQueuedConnection);
}
+SmDirModel::~SmDirModel(){
+ if(mWatch->isRunning()){
+ mWatch->stop();
+ }
+}
+
QVariant SmDirModel::data(const QModelIndex &index, int role) const{
if(!index.isValid()){
return QVariant();
diff --git a/smdirmodel.h b/smdirmodel.h
index 8522662..21aab40 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -27,6 +27,7 @@ class SmDirModel : public SmTreeModel {
enum { NumFields = 9 };
enum FileDate { Access, Modified, Status };
explicit SmDirModel(const QStringList &headers, QObject *parent = 0);
+ virtual ~SmDirModel();
virtual QVariant data(const QModelIndex &index, int role) const;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role);
bool isDir(const QModelIndex &idx) const;
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index a6163c2..371e7cf 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -86,7 +86,17 @@ void SmDirWatcher::run(){
}
}
-SmDataColletor::SmDataColletor(const int numFields, QObject *parent) : QThread(parent), mSemFree(0), mSemUsed(0), mDataQueue(0), mNumFields(numFields), mCheckForPresent(true) {
+void SmDirWatcher::stop(){
+ mSemFree->acquire();
+ mCollector->stop();
+ mSemUsed->release();
+ if(mCollector->isRunning()){
+ mCollector->wait();
+ }
+ quit();
+}
+
+SmDataColletor::SmDataColletor(const int numFields, QObject *parent) : QThread(parent), mSemFree(0), mSemUsed(0), mDataQueue(0), mNumFields(numFields), mCheckForPresent(true), mCancel(false) {
QSqlDatabase db = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), "collectordb");
db.open();
mPicPresentQ = new QSqlQuery(db);
@@ -109,6 +119,11 @@ void SmDataColletor::setCheckForPresent(bool present){
void SmDataColletor::run(){
forever {
mSemUsed->acquire();
+ if(mCancel){
+ QSqlDatabase::database("collectordb").close();
+ mSemFree->release();
+ break;
+ }
QPair<QString, SmDirWatcher::DWEvent> cur = mDataQueue->dequeue();
if(cur.second == SmDirWatcher::Populate){
SmTreeItem *i = populate(cur.first);
@@ -123,6 +138,7 @@ void SmDataColletor::run(){
emit newData(fd, cur.second);
mSemFree->release();
}
+ quit();
}
SmTreeItem * SmDataColletor::populate(const QString &dir){
diff --git a/smdirwatcher.h b/smdirwatcher.h
index b0edd2f..77d0d97 100644
--- a/smdirwatcher.h
+++ b/smdirwatcher.h
@@ -34,6 +34,7 @@ class SmDirWatcher : public QThread {
public slots:
void run();
+ void stop();
void setDir(const QString &dir);
private:
@@ -57,6 +58,7 @@ class SmDataColletor : public QThread {
public slots:
void setCheckForPresent(bool present);
void run();
+ void stop() { mCancel = true; }
signals:
void newData(const QList<QVariant>,int);
@@ -73,6 +75,7 @@ class SmDataColletor : public QThread {
int mMode;
const int mNumFields;
bool mCheckForPresent;
+ bool mCancel;
QMutex mCheckForPresentMx;
QSqlQuery *mPicPresentQ;
QSqlQuery *mMovPresentQ;
diff --git a/statisticsdialog.h b/statisticsdialog.h
index 27de9fa..c9441c3 100644
--- a/statisticsdialog.h
+++ b/statisticsdialog.h
@@ -22,7 +22,6 @@ class StatisticsDialog : public SmDialog {
Q_OBJECT
public:
StatisticsDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
- ~StatisticsDialog() {}
private:
QList<QList<QVariant> > queryData(const QString &query) const;