From f09ca72fd0828ed365c1619a91cb93f3211b42d2 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 4 Sep 2016 06:43:19 +0200 Subject: Move some code around: prep for actions * rename itemDoubleClicked to itemSelected * turn cd and fileData into functions * Bugfix: actually exec() mQFiles when gathering data! --- filedisplay.cpp | 6 ++++++ filewidget.cpp | 48 +++++++++++++++++++++++++++++------------------- filewidget.h | 4 +++- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/filedisplay.cpp b/filedisplay.cpp index fe832b1..c3ef2bc 100644 --- a/filedisplay.cpp +++ b/filedisplay.cpp @@ -130,6 +130,12 @@ void DBData::gatherData(){ seriesRes << seriesQ2.value(0) << seriesQ2.value(1) << seriesQ2.value(2) << seriesQ2.value(3); } } + if(seriesRes.isEmpty()){ + mActors->setText(tr("not in database!")); + mGenres->setText(tr("not in database!")); + mSeriesName->clear(); + return; + } QString seriesName(seriesRes.at(0).toString()); if(seriesRes.at(1).isValid()){ seriesName.append(QString(" - %1").arg(seriesRes.at(1).toString())); diff --git a/filewidget.cpp b/filewidget.cpp index 478ab26..5727e88 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -73,7 +73,7 @@ void FileWidget::setupGui(){ mFileView->setSortingEnabled(true); mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); - connect(mFileView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(itemDoubleClicked(QModelIndex))); + connect(mFileView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(itemSelected(QModelIndex))); QGroupBox *filesGB = new QGroupBox(tr("Files")); QHBoxLayout *filesGBL = new QHBoxLayout; filesGBL->addWidget(mFileView); @@ -106,6 +106,11 @@ void FileWidget::setupGui(){ mFileView->setFocus(); } +void FileWidget::fileData(const QString &fullPath, const QString &md5){ + mFileDisplay->setFileData(fullPath, md5); + mFileDisplay->show(); +} + void FileWidget::selectDir(){ QString dir = QFileDialog::getExistingDirectory(this, tr("Select directory"), QDir::homePath()); if(!dir.isEmpty()){ @@ -205,6 +210,7 @@ int FileWidget::md5Count(const QString &md5) { } if(!retval){ mQFiles.bindValue(":md5", md5); + mQFiles.exec(); while(mQFiles.next()){ retval = mQFiles.value(0).toInt(); } @@ -263,24 +269,28 @@ void FileWidget::fileSelectionChanged(const QItemSelection &selected, const QIte emit durationChanged(dur.toString()); } -void FileWidget::itemDoubleClicked(const QModelIndex &idx){ - if(idx.column() == NameColumn){ - int attr = idx.data(AttrsRole).toInt(); - if(attr == ParentDir || attr == Directory){ - QDir d(mDir->text()); - d.cd(idx.data().toString()); - QString newDir = d.absolutePath(); - mDir->setText(QDir::toNativeSeparators(newDir)); - gatherData(); - return; - } - if(attr == Present){ - QString fp = idx.data(FullPathRole).toString(); - QString md5 = idx.data(MD5SumRole).toString(); - mFileDisplay->setFileData(fp, md5); - mFileDisplay->show(); - } +void FileWidget::itemSelected(const QModelIndex &idx){ + QModelIndex name = idx; + QString mime = idx.sibling(idx.row(), MimeColumn).data().toString(); + if(name.column() != NameColumn){ + name = idx.sibling(idx.row(), NameColumn); } + int attr = name.data(AttrsRole).toInt(); + if(attr == ParentDir || attr == Directory){ + cd(name.data().toString()); + return; + } + if(mime.startsWith("video")){ + fileData(name.data(FullPathRole).toString(), name.data(MD5SumRole).toString()); + } +} + +void FileWidget::cd(const QString &to){ + QDir cur(mDir->text()); + cur.cd(to); + QString newDir = cur.absolutePath(); + mDir->setText(QDir::toNativeSeparators(newDir)); + gatherData(); } void FileWidget::keyPressEvent(QKeyEvent *e){ @@ -304,7 +314,7 @@ void FileWidget::keyPressEvent(QKeyEvent *e){ if(mFileView->hasFocus()){ if(e->key() == Qt::Key_Return){ QModelIndex idx = mFileView->selectionModel()->selectedRows(NameColumn).at(0); - itemDoubleClicked(idx); + itemSelected(idx); e->accept(); return; } diff --git a/filewidget.h b/filewidget.h index 6b84b2d..db9799f 100644 --- a/filewidget.h +++ b/filewidget.h @@ -31,19 +31,21 @@ class FileWidget : public QWidget { public slots: void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); + void cd(const QString &to); private slots: void gatherData(); void selectDir(); void filter(); void clearFilter(); - void itemDoubleClicked(const QModelIndex &idx); + void itemSelected(const QModelIndex &idx); protected: virtual void keyPressEvent(QKeyEvent *e); private: void setupGui(); + void fileData(const QString &fullPath, const QString &md5); int md5Count(const QString &md5); void readHeaderData(); void writeHeaderData(); -- cgit v1.2.3-70-g09d2