summaryrefslogtreecommitdiffstats
path: root/smdirmodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2014-12-07 22:40:10 +0100
committerArno <am@disconnect.de>2014-12-07 22:40:10 +0100
commit3adf6f859dd4d5df8e8fceacce74487814867e61 (patch)
tree5725a517b379ceeb30eda09fbe6a7405e5f6bbe8 /smdirmodel.cpp
parent51bc87ebc73b5777ad36e35ec20445b07a0d7639 (diff)
downloadSheMov-3adf6f859dd4d5df8e8fceacce74487814867e61.tar.gz
SheMov-3adf6f859dd4d5df8e8fceacce74487814867e61.tar.bz2
SheMov-3adf6f859dd4d5df8e8fceacce74487814867e61.zip
Major revamp of the file Manager
Nothing is async any more. Didn't work, anyway. Instead show a QProgressDialog when gathering data. Was kinda surprising that processEvents has to be called explicitly... Well, done!
Diffstat (limited to 'smdirmodel.cpp')
-rw-r--r--smdirmodel.cpp69
1 files changed, 11 insertions, 58 deletions
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index b520d07..4f6968a 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -26,11 +26,7 @@ SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeMode
mRefreshTimer = new QTimer(this);
readSettings();
- connect(this, SIGNAL(modelReset()), mWatch, SLOT(startAsyncJobs()));
connect(mWatch, SIGNAL(population(SmTreeItem*)), this, SLOT(populate(SmTreeItem*)));
- connect(mWatch, SIGNAL(setMd5Sum(QString,QString)), this, SLOT(setMd5Sum(QString,QString)));
- connect(mWatch, SIGNAL(setFfmpeg(QString,QVariantMap)), this, SLOT(setFfmpeg(QString,QVariantMap)));
- connect(mWatch, SIGNAL(setPicSize(QString,QVariant)), this, SLOT(setPicSize(QString,QVariant)));
connect(mWatch, SIGNAL(newData(QList<QVariant>,int)), this, SLOT(dirEvent(QList<QVariant>,int)));
}
@@ -78,8 +74,15 @@ QVariant SmDirModel::data(const QModelIndex &index, int role) const{
}
}
case Qt::ForegroundRole:
- if(index.column() == 0 && i->data(Present).toInt() > 0){
- return QVariant(QColor(Qt::darkGreen));
+ if(index.column() == 0){
+ if((i->data(Present).toInt() == InFiles) || (i->data(Present).toInt() == InPictures)){
+ return QVariant(QColor(Qt::darkGreen));
+ }
+ else if(i->data(Present).toInt() == InOrigin){
+ return QVariant(QColor(Qt::darkRed));
+ }else{
+ return SmTreeModel::data(index, role);
+ }
}
return SmTreeModel::data(index, role);
default:
@@ -150,13 +153,10 @@ void SmDirModel::dirEvent(const QList<QVariant> &data, int e){
if(e == SmDirWatcher::Deleted){
removeRow(idx.row());
}
- if(e == SmDirWatcher::Modified || e == SmDirWatcher::CloseWrite){
+ if(e == SmDirWatcher::CloseWrite){
for(int i = 0; i < mHeaders.count(); ++i){
QModelIndex c = index(idx.row(), i, QModelIndex());
setData(c, data.at(i), Qt::EditRole);
- if(e == SmDirWatcher::CloseWrite){
- mWatch->gatherAsync(data.at(FullPath).toString());
- }
}
}
}
@@ -183,53 +183,9 @@ void SmDirModel::refresh(){
setDir(mCurrentDir);
}
-void SmDirModel::setMd5Sum(QString path, QString md5){
- QModelIndex idx = find(path, FullPath);
- if(idx.isValid()){
- QModelIndex md5Idx = createIndex(idx.column(), Md5sum, idx.internalPointer());
- setData(md5Idx, md5, Qt::EditRole);
- QString mimeType = idx.data(TypeRole).toString();
- int present = 0;
- QSqlQuery presentQ(mDb);
- if(mimeType.startsWith("video")){
- presentQ.prepare("SELECT COUNT(*) FROM files WHERE cmd5sum = :md5");
- }else if(mimeType.startsWith("image")){
- presentQ.prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :md5");
- }else{
- return;
- }
- presentQ.bindValue(":md5", md5);
- presentQ.exec();
- while(presentQ.next()){
- present = presentQ.value(0).toInt();
- }
- if(present){
- QModelIndex presentIdx = createIndex(idx.column(), Present, idx.internalPointer());
- setData(presentIdx, present, Qt::EditRole);
- }
- }
-}
-
-void SmDirModel::setFfmpeg(QString path, QVariantMap data){
- QModelIndex idx = find(path, FullPath);
- if(idx.isValid()){
- QModelIndex durIdx = createIndex(idx.column(), DurSize, idx.internalPointer());
- setData(durIdx, data["duration"].toDouble(), Qt::EditRole);
- QModelIndex bitrateIdx = createIndex(idx.column(), Bitrate, idx.internalPointer());
- setData(bitrateIdx, data["bit_rate"], Qt::EditRole);
- }
-}
-
-void SmDirModel::setPicSize(QString path, QVariant data){
- QModelIndex idx = find(path, FullPath);
- if(idx.isValid()){
- QModelIndex psIdx = createIndex(idx.column(), DurSize, idx.internalPointer());
- setData(psIdx, data, Qt::EditRole);
- }
-}
-
void SmDirModel::populate(SmTreeItem *root){
setRoot(root);
+ //mWatch->startAsyncJobs();
emit needResize();
}
@@ -247,9 +203,6 @@ void SmDirModel::addFile(const QList<QVariant> &data){
beginResetModel();
root()->insertChild(w, newItem);
endResetModel();
- if(!data.at(Md5sum).isValid() || !data.at(DurSize).isValid()){
- mWatch->gatherAsync(data.at(FullPath).toString());
- }
return;
}