summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filesystemwidget.cpp13
-rw-r--r--newpicsdialog.cpp4
-rw-r--r--picfilesmodel.cpp4
-rw-r--r--smdirmodel.cpp1
-rw-r--r--smdirmodel.h2
-rw-r--r--smdirwatcher.cpp15
-rw-r--r--smdirwatcher.h11
7 files changed, 19 insertions, 31 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 779db2e..60c2d78 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -227,11 +227,18 @@ void FilesystemWidget::fileViewActivated(const QModelIndex &idx){
void FilesystemWidget::parentDir(){
QModelIndex idx = mDirView->currentIndex();
+ QModelIndex prev = idx.sibling(idx.row() - 1, idx.column());
+ QString pName;
+ if(prev.isValid()){
+ pName = idx.data().toString();
+ }
+ QString sel = idx.data().toString();
if(idx.parent().isValid()){
mDirView->setCurrentIndex(idx.parent());
- }
- QString sel = idx.data().toString();
- emit upSelected(sel);
+ }
+ if(!pName.isEmpty()){
+ emit upSelected(sel);
+ }
}
void FilesystemWidget::goBack(){
diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp
index e665f3b..f6057c0 100644
--- a/newpicsdialog.cpp
+++ b/newpicsdialog.cpp
@@ -174,9 +174,7 @@ void NewPicsDialog::accept(){
foreach(QVariant mpid, mappingParentsIds){
addMappingQ.bindValue(":mapid", mpid);
addMappingQ.bindValue(":md5", d.md5sum);
- if(!addMappingQ.exec()){
- return;
- }
+ addMappingQ.exec();
}
mFilesModel->clear();
}
diff --git a/picfilesmodel.cpp b/picfilesmodel.cpp
index 6010e1d..dfe0f2d 100644
--- a/picfilesmodel.cpp
+++ b/picfilesmodel.cpp
@@ -22,7 +22,7 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr
//setup database
mDb = QSqlDatabase::database("treedb");
mPopulateQS = QString("SELECT DISTINCT(pics.ipicsid), pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum, pics.cpicsize FROM pics, pics_mappings WHERE pics_mappings.imappings_parents_id IN (%1) AND pics_mappings.ipics_id = pics.ipicsid ORDER BY pics.tfilename");
- mMappingsQS = QString("SELECT DISTINCT(pics_mappings.imappings_parents_id) FROM pics_mappings, pics WHERE pics_mappings.ipics_id IN (%1)");
+ mMappingsQS = QString("SELECT DISTINCT(pics_mappings.imappings_parents_id) FROM pics_mappings WHERE pics_mappings.ipics_id IN (%1)");
}
void PicFilesModel::setMapping(int pMapId){
@@ -223,7 +223,7 @@ SmTreeItem *PicFilesModel::findRecursive(SmTreeItem *start, const QVariant &name
}
for(int i = 0; i < start->childCount(); ++i){
SmTreeItem *child = start->child(i);
- if(child->data(0) == name && start->data(1) == id){
+ if(child->data(0) == name && child->data(1) == id){
return child;
}
if(child->childCount()){
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 4f6968a..1552044 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -16,7 +16,6 @@
#include "helper.h"
SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mHeaders(headers), mExpensiveOps(true){
- mDb = QSqlDatabase::database("treedb");
mWatch = new SmDirWatcher(NumFields, this);
connect(mWatch, SIGNAL(needRefresh()), this, SLOT(refresh()));
mRunTimer = new QTimer(this);
diff --git a/smdirmodel.h b/smdirmodel.h
index c4cc4ab..a775553 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -9,7 +9,6 @@
#define SMDIRMODEL_H
#include <QDir>
-#include <QSqlDatabase>
#include <smtreemodel.h>
#include <smdirwatcher.h>
@@ -60,7 +59,6 @@ class SmDirModel : public SmTreeModel {
QTimer *mRunTimer;
QTimer *mRefreshTimer;
QMap<QString, QIcon> mIcons;
- QSqlDatabase mDb;
bool mExpensiveOps;
};
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index 24deee1..8c0570e 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -25,6 +25,8 @@ SmDirWatcher::SmDirWatcher(int numFields, QObject *parent) : QThread(parent), mF
mBufLen = 1024 * (sizeof(struct inotify_event) + 16);
mINdata = new char[mBufLen];
mFd = inotify_init();
+ mDb = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), "dirwatcherdb");
+ mDb.open();
}
void SmDirWatcher::setDir(const QString &dir){
@@ -95,8 +97,7 @@ QList<QVariant> SmDirWatcher::generalData(const QString &path){
int SmDirWatcher::presenceData(QString &md5){
int retval = SmDirModel::InNone;
- QSqlDatabase db = QSqlDatabase::database("treedb");
- QSqlQuery present1Q(db);
+ QSqlQuery present1Q(mDb);
present1Q.prepare("SELECT COUNT(*) FROM files WHERE cmd5sum = :md5");
present1Q.bindValue(":md5", md5);
present1Q.exec();
@@ -106,7 +107,7 @@ int SmDirWatcher::presenceData(QString &md5){
retval = SmDirModel::InFiles;
}
}
- QSqlQuery present2Q(db);
+ QSqlQuery present2Q(mDb);
present2Q.prepare("SELECT COUNT(*) from files_origin WHERE cmd5sum = :md5");
present2Q.bindValue(":md5", md5);
while(present2Q.next()){
@@ -115,7 +116,7 @@ int SmDirWatcher::presenceData(QString &md5){
retval = SmDirModel::InOrigin;
}
}
- QSqlQuery present3Q(db);
+ QSqlQuery present3Q(mDb);
present3Q.prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :md5");
present3Q.bindValue(":md5", md5);
while(present3Q.next()){
@@ -127,8 +128,6 @@ int SmDirWatcher::presenceData(QString &md5){
return retval;
}
-#include <QDebug>
-
void SmDirWatcher::run(){
struct pollfd pfd[1];
pfd[0].fd = mFd;
@@ -153,16 +152,12 @@ void SmDirWatcher::run(){
QString name = QString("%1/%2").arg(mCurrent).arg(e->name);
QList<QVariant> d = generalData(name);
if(mask & IN_CREATE || mask & IN_MOVED_TO){
- qDebug() << "Adding" << name;
emit newData(d, Added);
}else if(mask & IN_DELETE || mask & IN_MOVED_FROM){
- qDebug() << "DEL|MOVE" << name;
emit newData(d, Deleted);
}else if(mask & IN_MODIFY){
- qDebug() << "MOD" << name;
emit newData(d, Modified);
}else if(mask & IN_CLOSE_WRITE){
- qDebug() << "CLOSEW" << name;
emit newData(d, CloseWrite);
}
i += sizeof(inotify_event) + e->len;
diff --git a/smdirwatcher.h b/smdirwatcher.h
index 579a4c3..bf89050 100644
--- a/smdirwatcher.h
+++ b/smdirwatcher.h
@@ -9,21 +9,11 @@
#define SMDIRWATCHER_H
#include <QThread>
-#include <QList>
#include <QVariant>
-#include <QFileInfo>
-#include <QQueue>
-#include <QMutex>
#include <QSqlDatabase>
#include <QSqlQuery>
-#include <QThreadPool>
-#include <QRunnable>
class SmTreeItem;
-class QSemaphore;
-class SmDataColletor;
-class AsyncTask;
-class Md5Summer;
class SmDirWatcher : public QThread {
Q_OBJECT
@@ -56,6 +46,7 @@ class SmDirWatcher : public QThread {
int mBufLen;
int mNumFields;
bool mExpensiveOps;
+ QSqlDatabase mDb;
};
#endif // SMDIRWATCHER_H