diff options
-rw-r--r-- | filesystemfileproxy.cpp | 4 | ||||
-rw-r--r-- | filesystemwidget.cpp | 2 | ||||
-rw-r--r-- | fileview.cpp | 2 | ||||
-rw-r--r-- | smdirmodel.cpp | 28 | ||||
-rw-r--r-- | smdirmodel.h | 6 | ||||
-rw-r--r-- | smdirwatcher.cpp | 8 | ||||
-rw-r--r-- | smtreeview.cpp | 4 |
7 files changed, 26 insertions, 28 deletions
diff --git a/filesystemfileproxy.cpp b/filesystemfileproxy.cpp index 249eeb4..01376da 100644 --- a/filesystemfileproxy.cpp +++ b/filesystemfileproxy.cpp @@ -43,12 +43,12 @@ QVariant FilesystemFileProxy::data(const QModelIndex &index, int role) const{ } } if(role == Qt::TextAlignmentRole){ - if(index.column() == SmDirModel::Size || index.column() == SmDirModel::Duration || index.column() == SmDirModel::Bitrate){ + if(index.column() == SmDirModel::Size || index.column() == SmDirModel::DurSize || index.column() == SmDirModel::Bitrate){ return Qt::AlignRight; } } if(role == Qt::FontRole){ - if(index.column() == SmDirModel::Md5sum || index.column() == SmDirModel::Duration || index.column() == SmDirModel::Bitrate){ + if(index.column() == SmDirModel::Md5sum || index.column() == SmDirModel::DurSize || index.column() == SmDirModel::Bitrate){ return QFont("courier"); } } diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 6204727..a28fea3 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -43,7 +43,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar mIconProvider = new SheMovIconProvider; mModel->setIconProvider(mIconProvider); - QStringList fHeaders = QStringList() << tr("Name") << tr("Size") << tr("Type") << tr("Created") << tr("Md5Sum") << tr("Duration") << tr("Bitrate") << tr("Full Path") << tr("Pic Size"); + QStringList fHeaders = QStringList() << tr("Name") << tr("Size") << tr("Type") << tr("Created") << tr("Md5Sum") << tr("Dur./Size") << tr("Bitrate") << tr("Full Path"); mFileModel = new SmDirModel(fHeaders, this); connect(mFileModel, SIGNAL(needResize()), this, SLOT(resizeFileView())); diff --git a/fileview.cpp b/fileview.cpp index c30a1e5..b6adee0 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -230,7 +230,7 @@ void FileView::selectedFilesChanged(){ Helper::Duration dur; foreach(QModelIndex i, selected){ selSize += i.data(SmDirModel::SizeRole).toLongLong(); - Helper::Duration curDur = i.data(SmDirModel::DurationRole).value<Helper::Duration>(); + Helper::Duration curDur = i.data(SmDirModel::DurSizeRole).value<Helper::Duration>(); dur = dur + curDur; } emit selectedSize(selSize); diff --git a/smdirmodel.cpp b/smdirmodel.cpp index cdec768..8a6c961 100644 --- a/smdirmodel.cpp +++ b/smdirmodel.cpp @@ -51,14 +51,12 @@ QVariant SmDirModel::data(const QModelIndex &index, int role) const{ return i->data(Created); case Md5sumRole: return i->data(Md5sum); - case DurationRole: - return i->data(Duration); + case DurSizeRole: + return i->data(DurSize); case BitrateRole: return i->data(Bitrate); case FullPathRole: return i->data(FullPath); - case PicSizeRole: - return i->data(PicSize); case Qt::DecorationRole: { if(index.column() == 0){ QStringList mime = i->data(Type).toString().split('/'); @@ -72,20 +70,18 @@ QVariant SmDirModel::data(const QModelIndex &index, int role) const{ } } case Qt::DisplayRole: { - if(index.column() == Duration){ - Helper::Duration d = i->data(Duration).value<Helper::Duration>(); - if(d.isNull()){ - return QVariant(); + if(index.column() == DurSize){ + QVariant d = i->data(DurSize); + if(d.canConvert<Helper::Duration>()){ + Helper::Duration dur = d.value<Helper::Duration>(); + return dur.toString(); } - return d.toString(); - } - if(index.column() == PicSize){ - QSize size = i->data(PicSize).value<QSize>(); - if(!size.isValid()){ - return QVariant(); + if(d.canConvert<QSize>()){ + QSize size = d.value<QSize>(); + QString retval = QString(tr("%1x%2 px").arg(QString::number(size.width())).arg(QString::number(size.height()))); + return retval; } - QString retval = QString(tr("%1x%2 px").arg(QString::number(size.width())).arg(QString::number(size.height()))); - return retval; + return QVariant(); } } diff --git a/smdirmodel.h b/smdirmodel.h index a0d4a9d..fac9041 100644 --- a/smdirmodel.h +++ b/smdirmodel.h @@ -22,9 +22,9 @@ class SmDataColletor; class SmDirModel : public SmTreeModel { Q_OBJECT public: - enum CustomRoles { NameRole = Qt::UserRole + 1, SizeRole = Qt::UserRole + 2, TypeRole = Qt::UserRole + 3, CreatedRole = Qt::UserRole + 4, Md5sumRole = Qt::UserRole + 5, DurationRole = Qt::UserRole + 6, BitrateRole = Qt::UserRole + 7, FullPathRole = Qt::UserRole + 8, PicSizeRole = Qt::UserRole + 9 }; - enum Fields { Name = 0, Size = 1, Type = 2, Created = 3, Md5sum = 4, Duration = 5, Bitrate = 6, FullPath = 7, PicSize = 8 }; - enum { NumFields = 9 }; + enum CustomRoles { NameRole = Qt::UserRole + 1, SizeRole = Qt::UserRole + 2, TypeRole = Qt::UserRole + 3, CreatedRole = Qt::UserRole + 4, Md5sumRole = Qt::UserRole + 5, DurSizeRole = Qt::UserRole + 6, BitrateRole = Qt::UserRole + 7, FullPathRole = Qt::UserRole + 8 }; + enum Fields { Name = 0, Size = 1, Type = 2, Created = 3, Md5sum = 4, DurSize = 5, Bitrate = 6, FullPath = 7 }; + enum { NumFields = 8 }; enum FileDate { Access, Modified, Status }; explicit SmDirModel(const QStringList &headers, QObject *parent = 0); ~SmDirModel(); diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp index eaff3b3..2db94d9 100644 --- a/smdirwatcher.cpp +++ b/smdirwatcher.cpp @@ -144,13 +144,11 @@ const QList<QVariant> SmDataColletor::fileData(const QFileInfo &fi) const{ QList<QVariant> si = QList<QVariant>() << QVariant() << QVariant(); if(mime.startsWith("video")){ si = Helper::duration(fi.absoluteFilePath()); + }else if(mime.startsWith("image")){ + QImage img(fi.absoluteFilePath()); + si[0] = img.size(); } data << Helper::md5Sum(fi.absoluteFilePath()); data << si << fi.absoluteFilePath(); - if(mime.startsWith("image")){ - data << QImage(fi.absoluteFilePath()).size(); - }else{ - data << QVariant(); - } return data; } diff --git a/smtreeview.cpp b/smtreeview.cpp index feb64bf..36d7c07 100644 --- a/smtreeview.cpp +++ b/smtreeview.cpp @@ -28,6 +28,10 @@ void SmTreeView::readHeaderConfig(){ headerActions.insert(a->data().toInt(), a); } for(int i = 0; i < hv->count(); ++i){ + // don't crash if header count is smaller than saved... + if(i >= mHeaderGroup->actions().count()){ + continue; + } if(!hv->isSectionHidden(i)){ headerActions.value(i)->setChecked(true); } |