diff options
author | Arno <arno@disconnect.de> | 2022-04-15 13:27:34 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2022-04-15 13:27:34 +0200 |
commit | 856119c5a43b4781b051b93a0713c152cfd99f85 (patch) | |
tree | 4e2fde4e7a76179cc243e0665091c6ad429ea640 | |
parent | 62d3ca1482b202d2883eeb5e17e72300e8612477 (diff) | |
download | SheMov-856119c5a43b4781b051b93a0713c152cfd99f85.tar.gz SheMov-856119c5a43b4781b051b93a0713c152cfd99f85.tar.bz2 SheMov-856119c5a43b4781b051b93a0713c152cfd99f85.zip |
Make it run with Qt6
This is a huge commit. Changes:
* Obviously, make it compile
* Make it run (only scarcely tested)
* get rid of most of clang's warnings
Let's see what surprises are in store...
46 files changed, 219 insertions, 289 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp index a912eba..a30db3d 100644 --- a/archivebrowser.cpp +++ b/archivebrowser.cpp @@ -22,6 +22,7 @@ #include <QHeaderView> #include <QMenu> #include <QApplication> +#include <qactiongroup.h> #include "archivebrowser.h" #include "archivebrowsermodel.h" @@ -105,7 +106,7 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize if(!mTree->header()->isSectionHidden(hData.value(h))){ a->setChecked(true); } - connect(a, &QAction::triggered, [=] { mTree->toggleHeader(a); }); + connect(a, &QAction::triggered, a, [=] { mTree->toggleHeader(a); }); } QIcon headerIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'H', true, false); QAction *headerA = new QAction(headerIcon, tr("Show headers"), this); @@ -140,6 +141,9 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize } void ArchiveBrowser::browserSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { + if(selected.isEmpty() && deselected.isEmpty()){ + return; + } QModelIndexList selectedIdx = selectedRows(selected); QModelIndexList deselectedIdx = selectedRows(deselected); for(const QModelIndex &sel : selectedIdx){ @@ -191,13 +195,13 @@ void ArchiveBrowser::moveToBurn() { QString dirName = idx.data(ArchiveBrowserModel::NameRole).toString(); dirName.replace(' ', '.'); burnDir.mkdir(dirName); - QString burnDirS = QString("%1/%2").arg(destDirS).arg(dirName); + QString burnDirS = QString("%1/%2").arg(destDirS, dirName); QModelIndex real = mProxy->mapToSource(idx); QModelIndexList children = mModel->children(real); for(const QModelIndex &child : children){ QFileInfo current(child.data(ArchiveBrowserModel::FullPathRole).toString()); int type = child.data(ArchiveBrowserModel::FileTypeRole).toInt(); - QString destination = QString("%1/%2").arg(burnDirS).arg(current.fileName()); + QString destination = QString("%1/%2").arg(burnDirS, current.fileName()); if(type == FT_MOVIE){ QFile::rename(current.absoluteFilePath(), destination); filesToUpdate << child.data(ArchiveBrowserModel::GenericIdRole).toInt(); @@ -230,19 +234,19 @@ void ArchiveBrowser::moveToUSB(){ QString dvdDirS = QString("DVD_%1").arg(QString::number(nextDVDNo)); QDir dest(destDirS); if(dest.exists(dvdDirS)){ - QString msg = QString(tr("Something fishy is going on: %1 already exists in %2!")).arg(dvdDirS).arg(destDirS); + QString msg = QString(tr("Something fishy is going on: %1 already exists in %2!")).arg(dvdDirS, destDirS); QMessageBox::critical(this, tr("Error"), msg); return; } bool mkdir = dest.mkdir(dvdDirS); if(!mkdir){ - QString msg = QString(tr("Failed to create %1 in %2!")).arg(dvdDirS).arg(destDirS); + QString msg = QString(tr("Failed to create %1 in %2!")).arg(dvdDirS, destDirS); QMessageBox::critical(this, tr("Error"), msg); return; } // this one is .../DVD_123 - QString finalDir = QString("%1/%2").arg(destDirS).arg(dvdDirS); - QString msg = QString(tr("<p>This will do the following:</p><p><ul><li>Move %1 file(s) to %2</li><li>Update the DVD no. for %1 files</li></ul></p><p>Continue?</p>")).arg(sel.size()).arg(finalDir); + QString finalDir = QString("%1/%2").arg(destDirS, dvdDirS); + QString msg = QString(tr("<p>This will do the following:</p><p><ul><li>Move %1 file(s) to %2</li><li>Update the DVD no. for %1 files</li></ul></p><p>Continue?</p>")).arg(QString::number(sel.size()), finalDir); int retval = QMessageBox::question(this, tr("Question"), msg, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ mCopyWorker->clear(); @@ -258,7 +262,7 @@ void ArchiveBrowser::moveToUSB(){ for(const QModelIndex &child : children){ QString source = child.data(ArchiveBrowserModel::FullPathRole).toString(); QFileInfo sFi(source); - QString destination = QString("%1/%2/%3").arg(finalDir).arg(dirName).arg(sFi.fileName()); + QString destination = QString("%1/%2/%3").arg(finalDir, dirName, sFi.fileName()); mCopyWorker->enqueue(source, destination); mCopyWorker->appendData(source, child.data(ArchiveBrowserModel::FileTypeRole)); mCopyWorker->appendData(source, child.data(ArchiveBrowserModel::GenericIdRole)); @@ -357,12 +361,14 @@ void ArchiveBrowser::copySuccess(QString success){ if(q == QMessageBox::Yes){ QHash<QString, QList<QVariant> > data = mCopyWorker->data(); QList<int> filesToUpdate; - for(const QString &source : data.keys()){ - int ft = data.value(source).at(0).toInt(); + auto i = data.constBegin(); + while(i != data.constEnd()){ + int ft = i.value().at(0).toInt(); if(ft == FT_MOVIE){ - QFile::remove(source); - filesToUpdate << data.value(source).at(1).toInt(); + QFile::remove(i.key()); + filesToUpdate << i.value().at(1).toInt(); } + ++i; } mModel->updateDVDNo(filesToUpdate); mModel->refresh(); diff --git a/archivebrowsermodel.cpp b/archivebrowsermodel.cpp index 4174f7e..c6e7d08 100644 --- a/archivebrowsermodel.cpp +++ b/archivebrowsermodel.cpp @@ -167,9 +167,9 @@ void ArchiveBrowserModel::populate(){ QList<QVariant> serPartData; QString name; if(localQ.value(2).toInt() > 0){ - name = QString("%1 %2").arg(localQ.value(1).toString()).arg(QString::number(localQ.value(2).toInt())); + name = QString("%1 %2").arg(localQ.value(1).toString(), QString::number(localQ.value(2).toInt())); }else{ - name = QString("%1 - %2").arg(localQ.value(1).toString()).arg(localQ.value(3).toString()); + name = QString("%1 - %2").arg(localQ.value(1).toString(), localQ.value(3).toString()); } serPartData << QChar(0x26A4) << name << localQ.value(4) << SeriesPartNode << QVariant() << QVariant() << QVariant() << QString() << false; SmTreeItem *seriesItem = new SmTreeItem(serPartData, rootItem); diff --git a/archivemodel.cpp b/archivemodel.cpp index 20658e9..8e15dea 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -28,15 +28,15 @@ ArchiveModel::ArchiveModel(const QStringList &headers, QObject *parent) : SmTree mAvailableOrders.insert("Local files", Local); mAvailableOrders.insert("Favorites", FavoriteOrder); ArchiveCollector *c1 = new ArchiveCollector(NumFields, SeriesName, this); - connect(c1, &ArchiveCollector::finished, [=] { collectorFinished(c1) ;}); + connect(c1, &ArchiveCollector::finished, c1, [=] { collectorFinished(c1) ;}); ArchiveCollector *c2 = new ArchiveCollector(NumFields, Actor, this); - connect(c2, &ArchiveCollector::finished, [=] { collectorFinished(c2) ;}); + connect(c2, &ArchiveCollector::finished, c2, [=] { collectorFinished(c2) ;}); ArchiveCollector *c3 = new ArchiveCollector(NumFields, Genre, this); - connect(c3, &ArchiveCollector::finished, [=] { collectorFinished(c3) ;}); + connect(c3, &ArchiveCollector::finished, c3, [=] { collectorFinished(c3) ;}); ArchiveCollector *c4 = new ArchiveCollector(NumFields, Local, this); - connect(c4, &ArchiveCollector::finished, [=] { collectorFinished(c4) ;}); + connect(c4, &ArchiveCollector::finished, c4, [=] { collectorFinished(c4) ;}); ArchiveCollector *c5 = new ArchiveCollector(NumFields, FavoriteOrder, this); - connect(c5, &ArchiveCollector::finished, [=] { collectorFinished(c5) ;}); + connect(c5, &ArchiveCollector::finished, c5, [=] { collectorFinished(c5) ;}); mCollectors << c1 << c2 << c3 << c4 << c5; connect(this, &ArchiveModel::needRefresh, this, &ArchiveModel::refresh); readConfig(); @@ -81,16 +81,16 @@ QVariant ArchiveModel::data(const QModelIndex &index, int role) const{ int childCount = item->data(Count).toInt(); int nodeType = item->data(Type).toInt(); if(nodeType == SeriesNode || nodeType == GenreNode || nodeType == ActorNode){ - retval = QString("%1 (%2)").arg(item->data(Name).toString()).arg(QString::number(childCount)); + retval = QString("%1 (%2)").arg(item->data(Name).toString(), QString::number(childCount)); }else if(nodeType == SeriesPartNode){ retval = item->data(Name).toString(); QString subtitle = item->data(Subtitle).toString(); if(!subtitle.isEmpty() && (part > 0)){ - retval = QString("%1 - %2 - %3").arg(item->data(Name).toString()).arg(subtitle).arg(QString::number(part)); + retval = QString("%1 - %2 - %3").arg(item->data(Name).toString(), subtitle, QString::number(part)); }else if(part > 0){ - retval = QString("%1 %2").arg(item->data(Name).toString()).arg(QString::number(part)); + retval = QString("%1 %2").arg(item->data(Name).toString(), QString::number(part)); }else if(!subtitle.isEmpty()){ - retval = QString("%1 - %2").arg(item->data(Name).toString()).arg(subtitle); + retval = QString("%1 - %2").arg(item->data(Name).toString(), subtitle); } } return retval; @@ -482,7 +482,7 @@ void ArchiveModel::addFiles(int partId, const QStringList files){ durationOrSize = Helper::picSize(file); fileQ.prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, sifiletype, cpicsize) VALUES(:id, :fn, :md5, :size, :type, :durOrSize)"); }else{ - QString msg = QString("Unknown mime type %1 for %2").arg(mimeType).arg(file); + QString msg = QString("Unknown mime type %1 for %2").arg(mimeType, file); emit message(msg); continue; } @@ -665,7 +665,7 @@ void ArchiveModel::collectorFinished(QObject *thread){ void ArchiveModel::emitDatabaseError(const QSqlError &e){ QString databaseText = e.databaseText().isEmpty() ? tr("(none)") : e.databaseText(); QString driverText = e.driverText().isEmpty() ? tr("(none)") : e.driverText(); - QString errormsg = QString(tr("<b>Database error:</b><br/><ul><li>driverText(): %1</li><li>databaseText(): %2</li></ul>")).arg(driverText).arg(databaseText); + QString errormsg = QString(tr("<b>Database error:</b><br/><ul><li>driverText(): %1</li><li>databaseText(): %2</li></ul>")).arg(driverText, databaseText); emit databaseError(errormsg); } @@ -901,7 +901,7 @@ bool ArchiveFilesModel::setData(const QModelIndex &idx, const QVariant &value, i QFile f(idx.data(FullPathRole).toString()); QFileInfo fi(f); QString dir = fi.absolutePath(); - QString newName = QString("%1/%2").arg(dir).arg(value.toString()); + QString newName = QString("%1/%2").arg(dir, value.toString()); success = f.rename(newName); } // check rename, too! diff --git a/archiveview.cpp b/archiveview.cpp index ab64a5f..8d58f68 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -195,7 +195,7 @@ MetadataEditorWidget::MetadataEditorWidget(QWidget *parent) : QWidget(parent){ commentGBL->addWidget(mComment); commentGBL->addWidget(reasonGB); commentGB->setLayout(commentGBL); - connect(clearB, &QPushButton::clicked, [this] { mComment->clear(); }); + connect(clearB, &QPushButton::clicked, this, [this] { mComment->clear(); }); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(captionL); diff --git a/configurationdialog.cpp b/configurationdialog.cpp index e65a4b0..acb7b46 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -28,7 +28,7 @@ #include <QPalette> #include <QStandardItemModel> #include <QStandardItem> -#include <QDesktopWidget> +#include <QScreen> #include <QInputDialog> #include "configurationdialog.h" @@ -287,7 +287,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mClipboardColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mClipboardColor->setScaledContents(true); QPushButton *clipboardButton = new QPushButton(tr("Choose...")); - connect(clipboardButton, &QPushButton::clicked, [=] { chooseColor(mClipboardColor); }); + connect(clipboardButton, &QPushButton::clicked, this, [=] { chooseColor(mClipboardColor); }); colorGrid->addWidget(colorl2, 1, 0); colorGrid->addWidget(mClipboardColor, 1, 1); colorGrid->addWidget(clipboardButton, 1, 2); @@ -296,7 +296,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mBaseColor->setScaledContents(true); mBaseButton = new QPushButton(tr("Choose...")); - connect(mBaseButton, &QPushButton::clicked, [=] { chooseColor(mBaseColor); }); + connect(mBaseButton, &QPushButton::clicked, this, [=] { chooseColor(mBaseColor); }); colorGrid->addWidget(colorl3, 2, 0); colorGrid->addWidget(mBaseColor, 2, 1); colorGrid->addWidget(mBaseButton, 2, 2); @@ -305,7 +305,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mAlternateBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mAlternateBaseColor->setScaledContents(true); mAlternateBaseButton = new QPushButton(tr("Choose...")); - connect(mAlternateBaseButton, &QPushButton::clicked, [=] { chooseColor(mAlternateBaseColor); }); + connect(mAlternateBaseButton, &QPushButton::clicked, this, [=] { chooseColor(mAlternateBaseColor); }); colorGrid->addWidget(colorl4, 3, 0); colorGrid->addWidget(mAlternateBaseColor, 3, 1); colorGrid->addWidget(mAlternateBaseButton, 3, 2); @@ -314,7 +314,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mFontColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mFontColor->setScaledContents(true); QPushButton *fontColorBtn = new QPushButton(tr("Choose...")); - connect(fontColorBtn, &QPushButton::clicked, [=] { chooseColor(mFontColor); }); + connect(fontColorBtn, &QPushButton::clicked, this, [=] { chooseColor(mFontColor); }); colorGrid->addWidget(colorl5, 4, 0); colorGrid->addWidget(mFontColor, 4, 1); colorGrid->addWidget(fontColorBtn, 4, 2); @@ -323,7 +323,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mLocalColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mLocalColor->setScaledContents(true); QPushButton *localColorBtn = new QPushButton(tr("Choose...")); - connect(localColorBtn, &QPushButton::clicked, [=] { chooseColor(mLocalColor); }); + connect(localColorBtn, &QPushButton::clicked, this, [=] { chooseColor(mLocalColor); }); colorGrid->addWidget(colorl6, 5, 0); colorGrid->addWidget(mLocalColor, 5, 1); colorGrid->addWidget(localColorBtn, 5, 2); @@ -332,7 +332,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mArchivedColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mArchivedColor->setScaledContents(true); QPushButton *archivedColorBtn = new QPushButton(tr("Choose...")); - connect(archivedColorBtn, &QPushButton::clicked, [=] { chooseColor(mArchivedColor); }); + connect(archivedColorBtn, &QPushButton::clicked, this, [=] { chooseColor(mArchivedColor); }); colorGrid->addWidget(colorl7, 6, 0); colorGrid->addWidget(mArchivedColor, 6, 1); colorGrid->addWidget(archivedColorBtn, 6, 2); @@ -341,7 +341,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mFavoriteColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mFavoriteColor->setScaledContents(true); QPushButton *favoriteColorBtn = new QPushButton(tr("Choose...")); - connect(favoriteColorBtn, &QPushButton::clicked, [=] { chooseColor(mFavoriteColor); }); + connect(favoriteColorBtn, &QPushButton::clicked, this, [=] { chooseColor(mFavoriteColor); }); colorGrid->addWidget(colorl8, 7, 0); colorGrid->addWidget(mFavoriteColor, 7, 1); colorGrid->addWidget(favoriteColorBtn, 7, 2); @@ -356,7 +356,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mPVBgColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); mPVBgColor->setScaledContents(true); mPVBgButton = new QPushButton(tr("Choose...")); - connect(mPVBgButton, &QPushButton::clicked, [=] { chooseColor(mPVBgColor); }); + connect(mPVBgButton, &QPushButton::clicked, this, [=] { chooseColor(mPVBgColor); }); QGridLayout *pvGrid = new QGridLayout; pvGrid->addWidget(color9, 0, 0); pvGrid->addWidget(mPVBgColor, 0, 1); @@ -574,7 +574,7 @@ bool ConfigurationDialog::checkDvdPath(){ do { line = fStream.readLine(); if(line.contains(path)){ - QStringList fsParts = line.split(QRegExp("\\s+")); + QStringList fsParts = line.split(QRegularExpression("\\s+")); if(fsParts.isEmpty() || (fsParts.size() < 4)){ continue; } diff --git a/consistencycheck.cpp b/consistencycheck.cpp index 24d128c..22c0e55 100644 --- a/consistencycheck.cpp +++ b/consistencycheck.cpp @@ -60,9 +60,9 @@ ConsistencyCheck::ConsistencyCheck(QWidget *parent, Qt::WindowFlags f) : SmDialo // Buttons mCancelExit = new QPushButton(tr("Close")); mCheckDb = new QPushButton(tr("Check database")); - connect(mCheckDb, &QPushButton::clicked, [=] { startChecker(ConsistencyCheck::DbCheck); }); + connect(mCheckDb, &QPushButton::clicked, this, [=] { startChecker(ConsistencyCheck::DbCheck); }); mCheckFs = new QPushButton(tr("Check Filesystem")); - connect(mCheckFs, &QPushButton::clicked, [=] { startChecker(ConsistencyCheck::FsCheck); }); + connect(mCheckFs, &QPushButton::clicked, this, [=] { startChecker(ConsistencyCheck::FsCheck); }); mCleanup = new QPushButton(tr("Cleanup...")); connect(mCleanup, &QPushButton::clicked, this, &ConsistencyCheck::cleanup); mCleanup->setEnabled(false); @@ -209,7 +209,7 @@ void ConsistencyCheck::moveFiles(const QStringList &files){ QString startDir = s.value("paths/selecteddir").toString(); QString targetDir = QFileDialog::getExistingDirectory(this, tr("Move stray files to..."), startDir); if(!targetDir.isEmpty()){ - for(QString file : files){ + for(const auto &file : files){ QFileInfo fi(file); QString tgt = QString("%1%2%3").arg(targetDir).arg(QDir::separator()).arg(fi.fileName()); QFileInfo tfi(tgt); @@ -416,7 +416,7 @@ void ConsistencyChecker::doFsCheck(const QFileInfo &start, const QVector<QString if(start.isDir()){ QDirIterator it(start.absoluteFilePath(), QDir::AllEntries | QDir::NoDotAndDotDot); while(it.hasNext()){ - QFileInfo fi = it.next(); + QFileInfo fi(it.next()); mCancelMutex.lock(); if(mCanceled){ mCancelMutex.unlock(); @@ -428,12 +428,12 @@ void ConsistencyChecker::doFsCheck(const QFileInfo &start, const QVector<QString }else{ QString md5sum = Helper::md5Sum(fi.absoluteFilePath()); if(md5sums.contains(md5sum)){ - emit consistencyMsg(QString(tr("OK: %1 -> %2")).arg(fi.fileName()).arg(md5sum)); + emit consistencyMsg(QString(tr("OK: %1 -> %2")).arg(fi.fileName(), md5sum)); }else{ mStrayFilesMutex.lock(); mStrayFiles << fi.absoluteFilePath(); mStrayFilesMutex.unlock(); - emit consistencyMsg(QString(tr("NOT FOUND: %1 -> %2")).arg(fi.fileName()).arg(md5sum)); + emit consistencyMsg(QString(tr("NOT FOUND: %1 -> %2")).arg(fi.fileName(), md5sum)); } ++mCurCount; if(mCurCount % 50 == 0){ diff --git a/copyworker.cpp b/copyworker.cpp index 0fbc802..22e62f4 100644 --- a/copyworker.cpp +++ b/copyworker.cpp @@ -15,7 +15,7 @@ CopyWorker::CopyWorker(QObject *parent) : QThread(parent), mMax(0) {} void CopyWorker::enqueue(const QString &source, const QString &destination){ QMutexLocker l(&mSourceMx); - QPair<QString, QString> x = qMakePair<QString, QString>(source, destination); + std::pair<QString, QString> x(source, destination); if(!mFiles.contains(x)){ QFileInfo fi(source); mFiles.append(x); @@ -74,7 +74,7 @@ void CopyWorker::run(){ qint64 cur = total / 1024 / 1024; emit bytesRead(cur); } - delete buf; + delete[] buf; } QString s = QString(tr("Done copying %1 file(s)")).arg(QString::number(mFiles.size())); emit success(s); diff --git a/copyworker.h b/copyworker.h index 165f59b..bf477e1 100644 --- a/copyworker.h +++ b/copyworker.h @@ -34,7 +34,7 @@ class CopyWorker : public QThread { void file(QString); private: - QList<QPair<QString, QString> > mFiles; + QList<std::pair<QString, QString> > mFiles; QHash<QString, QList<QVariant> > mData; QMutex mSourceMx; int mMax; diff --git a/filepropertiesdialog.cpp b/filepropertiesdialog.cpp index be5e261..fbef6c2 100644 --- a/filepropertiesdialog.cpp +++ b/filepropertiesdialog.cpp @@ -103,7 +103,7 @@ void FilePropertiesDialog::movieData(){ SmTreeItem *streamItem = new SmTreeItem(2); QJsonArray streamA = obj.value("streams").toArray(); for(int i = 0; i < streamA.size(); ++i){ - QString itemName = QString(tr("Stream %1 [%2]")).arg(QString::number(i + 1)).arg(streamA.at(i).toObject().value("codec_type").toString()); + QString itemName = QString(tr("Stream %1 [%2]")).arg(QString::number(i + 1), streamA.at(i).toObject().value("codec_type").toString()); SmTreeItem *item = new SmTreeItem(QList<QVariant>() << itemName << QVariant(), streamItem); streamItem->appendChild(item); movieDataRecursive(streamA.at(i), item); diff --git a/fswidget.cpp b/fswidget.cpp index 7bae773..79215d3 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -19,10 +19,9 @@ #include <QProcess> #include <QSettings> #include <QApplication> -#include <QMediaPlayer> -#include <QMediaPlaylist> #include <QStringList> #include <QClipboard> +#include <QActionGroup> #include "fswidget.h" #include "helper.h" @@ -34,7 +33,6 @@ #include "fsproxy.h" #include "smview.h" #include "viewer.h" -#include "videoviewer.h" FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { mMovieWizard = new NewMovieWizard(this); @@ -42,9 +40,6 @@ FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { mViewer = new Viewer; mNewPicsDlg = new NewPicsDialog; mPlayer = new QProcess(qApp); - mVideoViewer = new VideoViewer; - mVideoViewer->setVisible(false); - connect(mVideoViewer->player(), &QMediaPlayer::stateChanged, this, &FSWidget::playerStateChanged); connect(mPlayer, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, &FSWidget::doPlay); setPalette(qApp->palette()); setupWidget(); @@ -71,10 +66,10 @@ void FSWidget::setupWidget(){ transform.rotate(-180); QIcon buttplugLeft(buttplug.transformed(transform)); QAction *backA = new QAction(buttplugLeft, tr("Prev. dir"), this); - connect(backA, &QAction::triggered, [=] { advanceDir(-1); }); + connect(backA, &QAction::triggered, this, [=] { advanceDir(-1); }); toolbar->addAction(backA); QAction *forwardA = new QAction(buttplugRight, tr("Next dir"), this); - connect(forwardA, &QAction::triggered, [=] { advanceDir(1); }); + connect(forwardA, &QAction::triggered, this, [=] { advanceDir(1); }); toolbar->addAction(forwardA); QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this); connect(refreshA, &QAction::triggered, this, &FSWidget::refresh); @@ -115,7 +110,7 @@ void FSWidget::setupWidget(){ if(!mFileView->header()->isSectionHidden(i)){ a->setChecked(true); } - connect(a, &QAction::triggered, [=] { mFileView->header()->setSectionHidden(i, a->isChecked() == false); }); + connect(a, &QAction::triggered, this, [=] { mFileView->header()->setSectionHidden(i, a->isChecked() == false); }); headerAG->addAction(a); } QIcon headerIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'H', true, false); @@ -127,14 +122,14 @@ void FSWidget::setupWidget(){ toolbar->addSeparator(); toolbar->addAction(SmGlobals::instance()->globalAction()); QAction *playSelectedA = new QAction(QIcon(":/spreadingpants.png"), tr("Play selected"), this); - connect(playSelectedA, &QAction::triggered, [=] { playSelected(1, QString()); }); + connect(playSelectedA, &QAction::triggered, this, [=] { playSelected(1, QString()); }); playSelectedA->setShortcut(Qt::Key_Return); QMenu *repeatMenu = new QMenu; for(int i = 2; i < 6; ++i){ QString actionStr = QString(tr("Play %1 times")).arg(QString::number(i)); QAction *a = new QAction(actionStr, this); repeatMenu->addAction(a); - connect(a, &QAction::triggered, [=] { playSelected(i, QString()); }); + connect(a, &QAction::triggered, this, [=] { playSelected(i, QString()); }); } QAction *playRepeatMA = new QAction(tr("Play repeat"), this); playRepeatMA->setMenu(repeatMenu); @@ -146,7 +141,7 @@ void FSWidget::setupWidget(){ selectFilterA->setShortcut(tr("CTRL+j")); selectFilterA->setData(SmView::InvisibleAction); QAction *unselectAllA = new QAction(tr("unselect all..."), this); - connect(unselectAllA, &QAction::triggered, [=] { mFileView->selectionModel()->clear(); }); + connect(unselectAllA, &QAction::triggered, this, [=] { mFileView->selectionModel()->clear(); }); unselectAllA->setShortcut(tr("CTRL+k")); unselectAllA->setData(SmView::InvisibleAction); QAction *compareA = new QAction(QIcon(":/compare.png"), tr("Compare..."), this); @@ -159,7 +154,7 @@ void FSWidget::setupWidget(){ mDirCB->setSizeAdjustPolicy(QComboBox::AdjustToContents); connect(mDirCB, &QComboBox::currentTextChanged, this, &FSWidget::gatherData); QAction *addDirA = new QAction(plusIcon, tr("Add dir..."), this); - connect(addDirA, &QAction::triggered, [=] { + connect(addDirA, &QAction::triggered, this, [=] { QString startDir = QDir::homePath(); QDir cDir(mDirCB->currentText()); if(cDir.cdUp()){ @@ -169,7 +164,7 @@ void FSWidget::setupWidget(){ insertItem(mDirCB, newDir); } ); QAction *removeDirA = new QAction(minusIcon, tr("Remove dir."), this); - connect(removeDirA, &QAction::triggered, [=] { removeItem(mDirCB);} ); + connect(removeDirA, &QAction::triggered, this, [=] { removeItem(mDirCB);} ); QToolBar *dirTB = new QToolBar; dirTB->addAction(addDirA); dirTB->addAction(removeDirA); @@ -181,12 +176,12 @@ void FSWidget::setupWidget(){ connect(mFilterCB, &QComboBox::currentTextChanged, this, &FSWidget::filterMime); QAction *addFilterA = new QAction(plusIcon, tr("Add filter..."), this); - connect(addFilterA, &QAction::triggered, [=] { + connect(addFilterA, &QAction::triggered, this, [=] { QString filter = QInputDialog::getText(this, tr("Mime filter"), tr("Filter")); insertItem(mFilterCB, filter); } ); QAction *removeFilterA = new QAction(minusIcon, tr("Remove filter"), this); - connect(removeFilterA, &QAction::triggered, [=] { removeItem(mFilterCB); }); + connect(removeFilterA, &QAction::triggered, this, [=] { removeItem(mFilterCB); }); QToolBar *filterTB = new QToolBar; filterTB->addAction(addFilterA); filterTB->addAction(removeFilterA); @@ -287,11 +282,9 @@ void FSWidget::readSettings(){ pMenu->clear(); for(const QString &p : players){ QAction *a = new QAction(p, this); - connect(a, &QAction::triggered, [=] { playSelected(1, p); }); + connect(a, &QAction::triggered, this, [=] { playSelected(1, p); }); pMenu->addAction(a); } - bool fullScreen = s.value("vw/fullscreen").toBool(); - mVideoViewer->setLastFullScreen(fullScreen); } void FSWidget::writeSettings(){ @@ -311,7 +304,6 @@ void FSWidget::writeSettings(){ s.setValue("fs/filters", filters); s.setValue("fs/curfilter", curFilter); s.setValue("fs/headerdata", mFileView->header()->saveState()); - s.setValue("vw/fullscreen", mVideoViewer->lastFullScreen()); } void FSWidget::insertItem(QComboBox *cb, const QString &text){ @@ -384,7 +376,7 @@ void FSWidget::gatherData(const QString &curDir){ mFileView->setUpdatesEnabled(false); while(it.hasNext()){ QBrush currentBrush = defaultBrush; - QFileInfo fi = it.next(); + QFileInfo fi(it.next()); ++fileCount; QMimeType mimeType = mimedb.mimeTypeForFile(fi); QString mimeName = mimeType.name(); @@ -409,28 +401,28 @@ void FSWidget::gatherData(const QString &curDir){ //do this goto dance to execute as few queries as possible if(mimeName.startsWith("video")){ - if(queryCount(filesMd5Q, md5) > 0){ + if(queryCount(&filesMd5Q, md5) > 0){ currentBrush = greenBrush; presenceStr = tr("Files: MD5"); goto ci; } - if(queryCount(originMd5Q, md5)){ + if(queryCount(&originMd5Q, md5)){ currentBrush = blueBrush; presenceStr = tr("Origin: MD5"); goto ci; } - if(queryCount(filesNameQ, fi.fileName())){ + if(queryCount(&filesNameQ, fi.fileName())){ currentBrush = greenBrush; presenceStr = tr("Files: Name"); goto ci; } - if(queryCount(originNameQ, likeArg)){ + if(queryCount(&originNameQ, likeArg)){ currentBrush = blueBrush; presenceStr = tr("Origin: Name"); goto ci; } }else if(mimeName.startsWith("image")){ - if(queryCount(picsMd5Q, md5) > 0){ + if(queryCount(&picsMd5Q, md5) > 0){ currentBrush = greenBrush; presenceStr = tr("Pics: MD5"); goto ci; @@ -485,7 +477,7 @@ void FSWidget::gatherData(const QString &curDir){ mFileView->setSortingEnabled(true); mFileView->sortByColumn(sc, so); qApp->restoreOverrideCursor(); - QString msg = QString(tr("Analyzed %1 files in %2 ms using %3 queries").arg(QString::number(fileCount)).arg(QString::number(timer.elapsed())).arg(QString::number(mQueryCount))); + QString msg = QString(tr("Analyzed %1 files in %2 ms using %3 queries").arg(QString::number(fileCount), QString::number(timer.elapsed()), QString::number(mQueryCount))); emit message(msg); emit needRefreshFs(); wTitle = QString("Filesystem - [%1]").arg(curDir); @@ -583,12 +575,12 @@ void FSWidget::advanceDir(int by){ mDirCB->setCurrentIndex(nextIdx); } -int FSWidget::queryCount(QSqlQuery &q, const QString &arg){ +int FSWidget::queryCount(QSqlQuery *q, const QString &arg){ int retval = -1; - q.bindValue(":arg", arg); - q.exec(); - while(q.next()){ - retval = q.value(0).toInt(); + q->bindValue(":arg", arg); + q->exec(); + while(q->next()){ + retval = q->value(0).toInt(); } ++mQueryCount; return retval; @@ -600,7 +592,7 @@ void FSWidget::filterMime(const QString &mime){ filter = QString(); } mProxy->setFilterKeyColumn(1); - mProxy->setFilterRegExp(filter); + mProxy->setFilterRegularExpression(filter); mProxy->setFilterCaseSensitivity(Qt::CaseInsensitive); } @@ -679,42 +671,26 @@ void FSWidget::playSelected(int count, QString player){ for(const QModelIndex &idx : selected){ paths << idx.data(FullPathRole).toString(); } - QSettings s; - bool useInternal = s.value("vw/internal").toBool(); - if(useInternal && player.isEmpty()){ - QMediaPlaylist *pl = mVideoViewer->player()->playlist(); - pl->clear(); - for(int i = 0; i < count; ++i){ - for(const QString &p : paths){ - pl->addMedia(QUrl::fromLocalFile(p)); - } - } - pl->setCurrentIndex(0); - mVideoViewer->setVisible(true); - mVideoViewer->setFullScreen(mVideoViewer->lastFullScreen()); - mVideoViewer->player()->play(); - }else{ - if(mPlayer->state() != QProcess::NotRunning){ - int retval = QMessageBox::question(this, tr("Terminate player?"), tr("Terminate running instance?")); - if(retval == QMessageBox::No){ - return; - } - mPlayer->terminate(); - mPlayer->waitForFinished(); - } - if(player.isEmpty()){ - QSettings s; - player = s.value("programs_movieviewer/default").toString(); - } - QPair<QString, QStringList> playerData = Helper::programData("movieviewer", player); - mPlayerArgs = playerData.second; - mPlaylist.clear(); - for(int i = 0; i < count; ++i){ - mPlaylist << paths; + if(mPlayer->state() != QProcess::NotRunning){ + int retval = QMessageBox::question(this, tr("Terminate player?"), tr("Terminate running instance?")); + if(retval == QMessageBox::No){ + return; } - mPlayer->setProgram(playerData.first); - doPlay(); + mPlayer->terminate(); + mPlayer->waitForFinished(); + } + if(player.isEmpty()){ + QSettings s; + player = s.value("programs_movieviewer/default").toString(); + } + QPair<QString, QStringList> playerData = Helper::programData("movieviewer", player); + mPlayerArgs = playerData.second; + mPlaylist.clear(); + for(int i = 0; i < count; ++i){ + mPlaylist << paths; } + mPlayer->setProgram(playerData.first); + doPlay(); } void FSWidget::doPlay(){ @@ -736,10 +712,10 @@ void FSWidget::selectFilter(){ return; } mFileView->selectionModel()->clearSelection(); - QRegExp re(retval); + QRegularExpression re(retval); for(int i = 0; i < mProxy->rowCount(); ++i){ QModelIndex nameIdx = mProxy->index(i, 0); - if(re.indexIn(nameIdx.data().toString()) != -1){ + if(re.match(nameIdx.data().toString()).hasMatch()){ mFileView->selectionModel()->select(nameIdx, QItemSelectionModel::Select | QItemSelectionModel::Rows); } } @@ -762,9 +738,3 @@ void FSWidget::calculateSelectionChanged(){ } emit selectionChanged(count, size, duration); } - -void FSWidget::playerStateChanged(QMediaPlayer::State s){ - if(s == QMediaPlayer::StoppedState){ - mVideoViewer->hide(); - } -} @@ -3,7 +3,6 @@ #include <QWidget> #include <QSqlQuery> -#include <QMediaPlayer> class QComboBox; class QTreeView; @@ -42,7 +41,7 @@ class FSWidget : public QWidget { void archivePics(); void copyMD5(); void advanceDir(int by); - int queryCount(QSqlQuery &q, const QString &arg); + int queryCount(QSqlQuery *q, const QString &arg); void filterMime(const QString &mime); void unpack(); void doubleClicked(const QModelIndex &idx); @@ -52,7 +51,6 @@ class FSWidget : public QWidget { void doPlay(); void selectFilter(); void calculateSelectionChanged(); - void playerStateChanged(QMediaPlayer::State s); signals: void message(QString msg); @@ -76,7 +74,6 @@ class FSWidget : public QWidget { NewMovieWizard *mMovieWizard; NewPicsDialog *mNewPicsDlg; Viewer *mViewer; - VideoViewer *mVideoViewer; int mQueryCount; QAction *mPlayWithA; }; @@ -20,7 +20,6 @@ #include <QRect> #include <QTime> #include <QWidget> -#include <QDesktopWidget> #include <QApplication> #include <QJsonDocument> #include <QJsonObject> @@ -134,7 +133,7 @@ namespace Helper { QFileInfo info(path); QString retval; if(withMd5){ - retval = QString("%1/%2/%3/%4_%5.%6").arg(archiveDir).arg(md5[0]).arg(md5[1]).arg(info.completeBaseName()).arg(md5).arg(info.suffix()); + retval = QString("%1/%2/%3/%4_%5.%6").arg(archiveDir, md5[0], md5[1], info.completeBaseName(), md5, info.suffix()); }else{ retval = QString("%1/%2/%3/%4").arg(archiveDir).arg(md5[0]).arg(md5[1]).arg(info.fileName()); } @@ -152,7 +151,7 @@ namespace Helper { seriesDir.append(QString(" - %1").arg(subtitle)); } seriesDir.replace(' ', '.'); - QString retval = QString("%1/DVD_%2/%3/%4").arg(usbPath).arg(QString::number(dvdNo)).arg(seriesDir).arg(filename); + QString retval = QString("%1/DVD_%2/%3/%4").arg(usbPath, QString::number(dvdNo), seriesDir, filename); return retval; } @@ -165,7 +164,7 @@ namespace Helper { } QHash<QString, QVariant> programData; if(!preferred.isEmpty()){ - if(data.keys().contains(preferred)){ + if(data.contains(preferred)){ programData = data.value(preferred).toHash(); return qMakePair(programData.value("path").toString(), programData.value("args").toStringList()); } @@ -209,7 +208,7 @@ namespace Helper { const QStringList toStringList(const QList<QVariant> &list){ QStringList retval; - for(QVariant v : list){ + for(const auto &v : list){ retval << v.toString(); } return retval; @@ -221,13 +220,6 @@ namespace Helper { return QString::fromLatin1(colString); } - void centerWidget(QWidget *widget){ - QRect widgetRect = widget->rect(); - widgetRect.moveCenter(qApp->desktop()->screenGeometry(widget).center()); - widget->move(widgetRect.topLeft()); - } - - QVariantMap ffmpegData(const QString &path){ QSettings s; QString ffProbe = s.value("paths/ffprobe").toString(); @@ -314,7 +306,7 @@ namespace Helper { QVariant picSize(const QString &path){ Magick::Image img; img.ping(qPrintable(path)); - QString retval = QString("%1x%2").arg(QString::number(img.columns())).arg(QString::number(img.rows())); + QString retval = QString("%1x%2").arg(QString::number(img.columns()), QString::number(img.rows())); return retval; } diff --git a/mappingdata.cpp b/mappingdata.cpp index d2e061a..3253b2d 100644 --- a/mappingdata.cpp +++ b/mappingdata.cpp @@ -11,7 +11,7 @@ MappingData::MappingData() : mappingId(-1), descId(-1) {} -bool MappingData::operator ==(const MappingData &other){ +bool MappingData::operator ==(const MappingData &other) const{ bool retval = ( mappingId == other.mappingId && descId == other.descId && diff --git a/mappingdata.h b/mappingdata.h index 00cf52a..44f2c2c 100644 --- a/mappingdata.h +++ b/mappingdata.h @@ -14,7 +14,7 @@ struct MappingData { MappingData(); - bool operator==(const MappingData &other); + bool operator==(const MappingData &other) const; bool isValid(); int mappingId; int descId; diff --git a/mappingeditwidget.cpp b/mappingeditwidget.cpp index 6e1a60f..255cac2 100644 --- a/mappingeditwidget.cpp +++ b/mappingeditwidget.cpp @@ -9,6 +9,7 @@ #include <QHBoxLayout> #include <QVBoxLayout> #include <QSettings> +#include <QIODevice> #include "mappingeditwidget.h" #include "mappingtreewidget.h" diff --git a/mappingtableeditor.cpp b/mappingtableeditor.cpp index 4c85313..c297e7f 100644 --- a/mappingtableeditor.cpp +++ b/mappingtableeditor.cpp @@ -91,7 +91,7 @@ void MappingTableEditor::removeItem(){ } int count = selected.at(0).data(MappingTableEditorModel::CountRole).toInt(); if(count > 0){ - QString warning = QString(tr("Really remove %1 %2? There are %3 items associated with it.")).arg(mTable).arg(selected.at(0).data(MappingTableEditorModel::NameRole).toString()).arg(QString::number(count)); + QString warning = QString(tr("Really remove %1 %2? There are %3 items associated with it.")).arg(mTable, selected.at(0).data(MappingTableEditorModel::NameRole).toString(), QString::number(count)); int mbRetval = QMessageBox::warning(this, tr("Warning!"), warning, QMessageBox::Yes | QMessageBox::No); if(mbRetval == QMessageBox::No){ return; @@ -140,7 +140,6 @@ MappingTableEditorModel::MappingTableEditorModel(const QString &table, const QSt QString queryString = QString("SELECT t%1name, COUNT(iseriesparts_id), %1s.i%1s_id from %1s, seriesparts_%1map WHERE %1s.i%1s_id = seriesparts_%1map.i%1s_id GROUP BY %1s.t%1name, %1s.i%1s_id ORDER BY t%1name").arg(mTable); mDataQuery = new QSqlQuery(mDb); mDataQuery->prepare(queryString); - QString mergeQuery = QString("UPDATE %1s SET %1s_id = %2 WHERE %1s_id = %3"); populate(); } @@ -206,7 +205,7 @@ bool MappingTableEditorModel::removeData(const QModelIndex &idx){ if(!idx.isValid()){ return false; } - QString removeQuery = QString("DELETE FROM %1s WHERE i%1s_id = %2").arg(mTable).arg(QString::number(idx.data(IdRole).toInt())); + QString removeQuery = QString("DELETE FROM %1s WHERE i%1s_id = %2").arg(mTable, QString::number(idx.data(IdRole).toInt())); QSqlQuery remove(removeQuery, mDb); bool retval = remove.exec(); if(retval){ diff --git a/mappingtablemodel.cpp b/mappingtablemodel.cpp index d472ef8..0c5e511 100644 --- a/mappingtablemodel.cpp +++ b/mappingtablemodel.cpp @@ -21,28 +21,28 @@ MappingTableModel::MappingTableModel(QStringList &headers, const QString &table, mSequenceName = QString("%1_i%1_id__seq").arg(mTable); //queries - QString updateNameQuery = QString("UPDATE %1 set %2 = :name WHERE %3 = :id").arg(mTable).arg(mNameColumnName).arg(mIdColumnName); + QString updateNameQuery = QString("UPDATE %1 set %2 = :name WHERE %3 = :id").arg(mTable, mNameColumnName, mIdColumnName); mUpdateItemNameQuery = new QSqlQuery(mDb); mUpdateItemNameQuery->prepare(updateNameQuery); - QString insertItemQuery = QString("INSERT INTO %1 (%2) VALUES (:name)").arg(mTable).arg(mNameColumnName); + QString insertItemQuery = QString("INSERT INTO %1 (%2) VALUES (:name)").arg(mTable, mNameColumnName); mInsertItemQuery = new QSqlQuery(mDb); mInsertItemQuery->prepare(insertItemQuery); - QString deleteItemQuery = QString("DELETE FROM %1 WHERE %2 = :id").arg(mTable).arg(mIdColumnName); + QString deleteItemQuery = QString("DELETE FROM %1 WHERE %2 = :id").arg(mTable, mIdColumnName); mDeleteItemQuery = new QSqlQuery(mDb); mDeleteItemQuery->prepare(deleteItemQuery); - QString addMappingQuery = QString("INSERT INTO %1 (iseriesparts_id, %2) VALUES (:id1, :id2)").arg(mMappingTable).arg(mIdColumnName); + QString addMappingQuery = QString("INSERT INTO %1 (iseriesparts_id, %2) VALUES (:id1, :id2)").arg(mMappingTable, mIdColumnName); mAddMappingQuery = new QSqlQuery(mDb); mAddMappingQuery->prepare(addMappingQuery); - QString removeMappingQuery = QString("DELETE FROM %1 WHERE iseriesparts_id = :id1 AND %2 = :id2").arg(mMappingTable).arg(mIdColumnName); + QString removeMappingQuery = QString("DELETE FROM %1 WHERE iseriesparts_id = :id1 AND %2 = :id2").arg(mMappingTable, mIdColumnName); mRemoveMappingQuery = new QSqlQuery(mDb); mRemoveMappingQuery->prepare(removeMappingQuery); - QString mappingQuery = QString("SELECT %1 FROM %2, %3 WHERE %2.%4 = %3.%4 AND %3.iseriesparts_id = :id").arg(mNameColumnName).arg(mTable).arg(mMappingTable).arg(mIdColumnName); + QString mappingQuery = QString("SELECT %1 FROM %2, %3 WHERE %2.%4 = %3.%4 AND %3.iseriesparts_id = :id").arg(mNameColumnName, mTable, mMappingTable, mIdColumnName); mMappingQuery = new QSqlQuery(mDb); mMappingQuery->prepare(mappingQuery); - QString allItemsQuery = QString("SELECT %1, %2 FROM %3").arg(mIdColumnName).arg(mNameColumnName).arg(mTable); + QString allItemsQuery = QString("SELECT %1, %2 FROM %3").arg(mIdColumnName, mNameColumnName, mTable); mAllItemsQuery = new QSqlQuery(mDb); mAllItemsQuery->prepare(allItemsQuery); - QString itemCountQuery = QString("SELECT COUNT(*) FROM %1 WHERE %2 = :id").arg(mMappingTable).arg(mIdColumnName); + QString itemCountQuery = QString("SELECT COUNT(*) FROM %1 WHERE %2 = :id").arg(mMappingTable, mIdColumnName); mItemCountQuery = new QSqlQuery(mDb); mItemCountQuery->prepare(itemCountQuery); @@ -244,7 +244,7 @@ void MappingTableModel::deleteItems(const QList<int> &ids){ } void MappingTableModel::populate(){ - QString query = QString("SELECT %1, %2 FROM %3 ORDER BY %2").arg(mIdColumnName).arg(mNameColumnName).arg(mTable); + QString query = QString("SELECT %1, %2 FROM %3 ORDER BY %2").arg(mIdColumnName, mNameColumnName, mTable); QList<QVariant> rootData; mItemNames.clear(); rootData << QString(tr("%1 name")).arg(mTable) << tr("Id"); diff --git a/mappingtablemodel.h b/mappingtablemodel.h index 5901ec4..c383bf8 100644 --- a/mappingtablemodel.h +++ b/mappingtablemodel.h @@ -15,7 +15,6 @@ class QString; class QSqlQuery; -class QStringList; class MappingTableModel : public SmTreeModel{ Q_OBJECT diff --git a/mappingtablewidget.cpp b/mappingtablewidget.cpp index d42fcb9..db5bbe3 100644 --- a/mappingtablewidget.cpp +++ b/mappingtablewidget.cpp @@ -115,7 +115,7 @@ void MappingTableWidget::removeItem(){ if(selected.isEmpty()){ return; } - for(QPersistentModelIndex i : selected){ + for(const auto &i : selected){ QString item = i.data().toString(); mModel->removeRows(i.row(), 1); QModelIndex itemIdx = mMappingModel->find(item); diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp index 4f253c5..f88da64 100644 --- a/mappingtreemodel.cpp +++ b/mappingtreemodel.cpp @@ -205,7 +205,7 @@ bool MappingTreeModel::deleteChild(const QModelIndex &idx){ return false; } -MappingData MappingTreeModel::mappingDataFromItem(SmTreeItem *item) const{ +const MappingData MappingTreeModel::mappingDataFromItem(SmTreeItem *item) const{ MappingData retval; retval.mappingId = item->data(MappingTreeModel::MappingId).toInt(); retval.descId = item->data(MappingTreeModel::DescId).toInt(); diff --git a/mappingtreemodel.h b/mappingtreemodel.h index 643bc7d..04ee167 100644 --- a/mappingtreemodel.h +++ b/mappingtreemodel.h @@ -13,10 +13,10 @@ #include <QMetaType> #include "smtreemodel.h" +#include "mappingdata.h" class QSqlQuery; class SmTreeItem; -class MappingData; class SmTreeItem; class MappingTreeModel : public SmTreeModel { @@ -42,7 +42,7 @@ class MappingTreeModel : public SmTreeModel { bool renameChild(const QModelIndex &idx, const QString newName); bool deleteChild(const QModelIndex &idx); MappingData mappingDataFromIndex(QModelIndex &idx) const; - MappingData mappingDataFromItem(SmTreeItem *item) const; + const MappingData mappingDataFromItem(SmTreeItem *item) const; QList<MappingData> siblingMappingDataFromId(int id); const QSqlError &lastError() const { return mLastError; } diff --git a/mappingtreeproxy.cpp b/mappingtreeproxy.cpp index 077d72a..6758f55 100644 --- a/mappingtreeproxy.cpp +++ b/mappingtreeproxy.cpp @@ -11,12 +11,16 @@ MappingTreeProxy::MappingTreeProxy(QObject *parent) : QSortFilterProxyModel(parent) {} void MappingTreeProxy::setFilter(const QString &filter){ - mFilter = QRegExp(filter); + if(!filter.isEmpty()){ + mFilter = QRegularExpression(filter); + }else{ + mFilter = QRegularExpression(); + } invalidateFilter(); } bool MappingTreeProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const{ - if(mFilter.isEmpty()){ + if(mFilter == QRegularExpression()){ return true; } QModelIndex nameIdx = sourceModel()->index(sourceRow, MappingTreeModel::Name, sourceParent); diff --git a/mappingtreeproxy.h b/mappingtreeproxy.h index 158cde9..0ee6f40 100644 --- a/mappingtreeproxy.h +++ b/mappingtreeproxy.h @@ -22,7 +22,7 @@ class MappingTreeProxy : public QSortFilterProxyModel { virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; private: - QRegExp mFilter; + QRegularExpression mFilter; }; #endif // MAPPINGTREEPROXY_H diff --git a/mappingtreeresultmodel.cpp b/mappingtreeresultmodel.cpp index e2ff75e..cb8d67c 100644 --- a/mappingtreeresultmodel.cpp +++ b/mappingtreeresultmodel.cpp @@ -112,7 +112,7 @@ void MappingTreeResultModel::removeItem(const QModelIndex &idx){ return; } SmTreeItem *curItem = static_cast<SmTreeItem*>(idx.internalPointer()); - MappingData rmData = mSourceModel->mappingDataFromItem(curItem); + const MappingData rmData = mSourceModel->mappingDataFromItem(curItem); beginResetModel(); int row = curItem->row(); SmTreeItem *parent = curItem->parent(); @@ -173,7 +173,7 @@ QList<QVariant> MappingTreeResultModel::columnValuesRecursive(SmTreeItem *parent for(int i = 0; i < parent->childCount(); ++i){ SmTreeItem *child = parent->child(i); QVariant value = child->data(column); - if(value.canConvert(QVariant::Int) && (value.toInt() != -1)){ + if(value.canConvert<int>() && (value.toInt() != -1)){ retval << value; } retval << columnValuesRecursive(child, column); diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index 6c6a495..7fd8071 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -106,7 +106,7 @@ MappingTreeWidget::MappingTreeWidget(QWidget *parent) : QWidget(parent){ //setup actions QAction *addActorA = new QAction(QIcon(":/fire.png"), tr("Add actor..."), this); - addActorA->setShortcut(Qt::CTRL + Qt::Key_A); + addActorA->setShortcut(Qt::CTRL | Qt::Key_A); connect(addActorA, &QAction::triggered, this, &MappingTreeWidget::addActor); mTree->addAction(addActorA); mTree->addAction(Helper::createSeparator(this)); @@ -243,7 +243,7 @@ void MappingTreeWidget::deleteChild(){ QModelIndex sel = selected(); QModelIndex real = mProxy->mapToSource(sel); if(mModel->rowCount(real) > 0){ - QString msg = QString(tr("Cannot delete item %1, because it has %2 children!")).arg(real.data().toString()).arg(QString::number(mModel->rowCount(real))); + QString msg = QString(tr("Cannot delete item %1, because it has %2 children!")).arg(real.data().toString(), QString::number(mModel->rowCount(real))); QMessageBox::critical(this, tr("Error"), msg); return; } @@ -252,7 +252,7 @@ void MappingTreeWidget::deleteChild(){ if(retval == QMessageBox::Yes){ if(!mModel->deleteChild(real)){ QSqlError last = mModel->lastError(); - QString msg = QString(tr("Failed to delete %1. Database said: %2")).arg(real.data().toString()).arg(last.text()); + QString msg = QString(tr("Failed to delete %1. Database said: %2")).arg(real.data().toString(), last.text()); QMessageBox::critical(this, tr("Error"), msg); } } diff --git a/movieinfopage.cpp b/movieinfopage.cpp index 787329f..6ebc1e1 100644 --- a/movieinfopage.cpp +++ b/movieinfopage.cpp @@ -151,13 +151,11 @@ void MovieInfoPage::addFile(const QString &file){ itemData[WizardTreeModel::FileType] = WizardTreeModel::Movie; }else{ QString baseName = fi.completeBaseName(); - QRegExp reFront = QRegExp("front"); - reFront.setCaseSensitivity(Qt::CaseInsensitive); - QRegExp reBack = QRegExp("back"); - reBack.setCaseSensitivity(Qt::CaseInsensitive); - if(baseName.endsWith('f') || (reFront.indexIn(baseName) != -1)){ + QRegularExpression reFront("front", QRegularExpression::CaseInsensitiveOption); + QRegularExpression reBack("back", QRegularExpression::CaseInsensitiveOption); + if(baseName.endsWith('f') || reFront.match(baseName).hasMatch()){ itemData[WizardTreeModel::FileType] = WizardTreeModel::FrontCover; - }else if(baseName.endsWith('b') || (reBack.indexIn(baseName) != -1)){ + }else if(baseName.endsWith('b') || reBack.match(baseName).hasMatch()){ itemData[WizardTreeModel::FileType] = WizardTreeModel::BackCover; }else{ itemData[WizardTreeModel::FileType] = WizardTreeModel::GeneralCover; @@ -254,7 +252,7 @@ void MovieInfoPage::guessOld(const QString &fullPath){ QDirIterator it(fi.dir()); QList<QVariant> itemData; while(it.hasNext()){ - QFileInfo curFi = it.next(); + QFileInfo curFi(it.next()); QString curBaseName = curFi.completeBaseName(); for(int i = 0; i < mFileModel->rowCount(mFileModel->rootIndex()); ++i){ QModelIndex curIdx = mFileModel->index(i, WizardTreeModel::FileName, mFileModel->rootIndex()); diff --git a/moviepropertiesdialog.cpp b/moviepropertiesdialog.cpp index 016c2ee..4042d36 100644 --- a/moviepropertiesdialog.cpp +++ b/moviepropertiesdialog.cpp @@ -75,9 +75,9 @@ void MoviePropertiesDialog::setupDialog(){ mActorM = new QStandardItemModel; mActorV->setModel(mActorM); QAction *addActorA = new QAction(QIcon(":/spreadingpants.png"), tr("Add actor..."), this); - connect(addActorA, &QAction::triggered, [=] { addItem(mActorDlg, mActorM, QIcon(":/diaper.png")); }); + connect(addActorA, &QAction::triggered, this, [=] { addItem(mActorDlg, mActorM, QIcon(":/diaper.png")); }); QAction *removeActorA = new QAction(QIcon(":/delete.png"), tr("Remove actor"), this); - connect(removeActorA, &QAction::triggered, [=] { removeItem(mActorV); }); + connect(removeActorA, &QAction::triggered, this, [=] { removeItem(mActorV); }); mActorV->addActions(QList<QAction*>() << addActorA << removeActorA); QGroupBox *actorsGB = new QGroupBox(tr("Actors")); QHBoxLayout *actorsGBL = new QHBoxLayout; @@ -89,9 +89,9 @@ void MoviePropertiesDialog::setupDialog(){ mGenreM = new QStandardItemModel; mGenreV->setModel(mGenreM); QAction *addGenreA = new QAction(QIcon(":/spreadingpants.png"), tr("Add genre..."), this); - connect(addGenreA, &QAction::triggered, [=] { addItem(mGenreDlg, mGenreM, QIcon(":/dick_in_cage.png")); }); + connect(addGenreA, &QAction::triggered, this, [=] { addItem(mGenreDlg, mGenreM, QIcon(":/dick_in_cage.png")); }); QAction *removeGenreA = new QAction(QIcon(":/delete.png"), tr("Remove genre"), this); - connect(removeGenreA, &QAction::triggered, [=] { removeItem(mGenreV); }); + connect(removeGenreA, &QAction::triggered, this, [=] { removeItem(mGenreV); }); mGenreV->addActions(QList<QAction*>() << addGenreA << removeGenreA); QGroupBox *genresGB = new QGroupBox(tr("Genres")); QHBoxLayout *genresGBL = new QHBoxLayout; diff --git a/moviewidget.cpp b/moviewidget.cpp index fe85e37..cb419ba 100644 --- a/moviewidget.cpp +++ b/moviewidget.cpp @@ -46,10 +46,10 @@ void MovieWidget::setupWidget(){ transform.rotate(-180); QIcon buttplugLeft(buttplug.transformed(transform)); QAction *backA = new QAction(buttplugLeft, tr("Prev. archive selection"), this); - connect(backA, &QAction::triggered, [=] { forwardSelection(-1) ;}); + connect(backA, &QAction::triggered, this, [=] { forwardSelection(-1) ;}); toolbar->addAction(backA); QAction *forwardA = new QAction(buttplugRight, tr("Next archive selection"), this); - connect(forwardA, &QAction::triggered, [=] { forwardSelection(1); }); + connect(forwardA, &QAction::triggered, this, [=] { forwardSelection(1); }); toolbar->addAction(forwardA); toolbar->addSeparator(); QAction *deleteA = new QAction(QIcon(":/delete.png"), tr("Delete"), this); @@ -64,14 +64,14 @@ void MovieWidget::setupWidget(){ QLabel *filterL = new QLabel(tr("Filter")); mFilterLE = new QLineEdit; - connect(mFilterLE, &QLineEdit::returnPressed, [=] { mTopProxy->setFilterRegExp(QRegExp(mFilterLE->text())); }); + connect(mFilterLE, &QLineEdit::returnPressed, this, [=] { mTopProxy->setFilterRegularExpression(mFilterLE->text()); }); QToolBar *filterTB = new QToolBar; QAction *doFilter = new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2245), true, false), tr("Filter"), this); - connect(doFilter, &QAction::triggered, [=] { mTopProxy->setFilterRegExp(QRegExp(mFilterLE->text())); }); + connect(doFilter, &QAction::triggered, this, [=] { mTopProxy->setFilterRegularExpression(mFilterLE->text()); }); QAction *clearFilter = new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false), tr("Clear"), this); - connect(clearFilter, &QAction::triggered, [=] { + connect(clearFilter, &QAction::triggered, this, [=] { mFilterLE->clear(); - mTopProxy->setFilterRegExp(QString()); + mTopProxy->setFilterRegularExpression(QString()); }); filterTB->addAction(doFilter); filterTB->addAction(clearFilter); @@ -80,7 +80,7 @@ void MovieWidget::setupWidget(){ mSelectionCB = new QComboBox; QStringList selections = QStringList() << tr("Actors") << tr("Genres") << tr("Series"); mSelectionCB->addItems(selections); - connect(mSelectionCB, &QComboBox::currentTextChanged, [=] { selectBy(mSelectionCB->currentText()); }); + connect(mSelectionCB, &QComboBox::currentTextChanged, this, [=] { selectBy(mSelectionCB->currentText()); }); QHBoxLayout *topWL = new QHBoxLayout; topWL->addWidget(filterL); @@ -123,11 +123,11 @@ void MovieWidget::setupWidget(){ QAction *editFileA = new QAction(QIcon(":/huge_bra_light.png"), tr("Edit file..."), this); connect(editFileA, &QAction::triggered, this, &MovieWidget::editFile); QAction *filenameToClipA = new QAction(tr("Filename to clip"), this); - connect(filenameToClipA, &QAction::triggered, [=] { copyToClipboard(FilenameRole); }); + connect(filenameToClipA, &QAction::triggered, this, [=] { copyToClipboard(FilenameRole); }); QAction *fullpathToClipA = new QAction(tr("Full path to clip"), this); - connect(fullpathToClipA, &QAction::triggered, [=] { copyToClipboard(FullPathRole); }); + connect(fullpathToClipA, &QAction::triggered, this, [=] { copyToClipboard(FullPathRole); }); QAction *md5ToClipA = new QAction(tr("MD5 to clip"), this); - connect(md5ToClipA, &QAction::triggered, [=] { copyToClipboard(MD5SumRole); }); + connect(md5ToClipA, &QAction::triggered, this, [=] { copyToClipboard(MD5SumRole); }); mBottomView->addActions(QList<QAction*>() << playSelectedA << Helper::createSeparator(this) << editFileA << Helper::createSeparator(this) << filenameToClipA << fullpathToClipA << md5ToClipA); @@ -155,7 +155,7 @@ void MovieWidget::readSettings(){ QString filter = s.value("mw/filter").toString(); mFilterLE->setText(filter); if(!filter.isEmpty()){ - mTopProxy->setFilterRegExp(QRegExp(mFilterLE->text())); + mTopProxy->setFilterRegularExpression(mFilterLE->text()); } } @@ -192,7 +192,7 @@ void MovieWidget::deleteSeries(){ deleteId.prepare("DELETE FROM seriesparts WHERE iseriesparts_id = :id"); deleteId.bindValue(":id", partId); if(deleteId.exec()){ - for(QString f : fullPaths){ + for(const auto &f : fullPaths){ if(!QFile::remove(f)){ db.rollback(); return; diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index c4370f6..d05645f 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -156,7 +156,7 @@ void NewMovieWizard::accept(){ }else{ QPixmap pix(fullPath); - picSize = QString("%1x%2").arg(QString::number(pix.width())).arg(QString::number(pix.height())); + picSize = QString("%1x%2").arg(QString::number(pix.width()), QString::number(pix.height())); } insertFilesQ.bindValue(":ipid", seriesPartId); insertFilesQ.bindValue(":tfn", fi.fileName()); diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index dd59f8e..baaed8f 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -33,7 +33,6 @@ NewPicsDialog::NewPicsDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), mFilesCtr(0) { qRegisterMetaType<MappingData>("MappingData"); - qRegisterMetaTypeStreamOperators<MappingData>("MappingData"); setupDlg(); } @@ -107,7 +106,7 @@ void NewPicsDialog::addFiles(const QStringList &files){ return; } mFilesV->setSortingEnabled(false); - for(QString f : files){ + for(const auto &f : files){ mFilesModel->addFile(f); } mFilesV->setSortingEnabled(true); @@ -127,7 +126,7 @@ void NewPicsDialog::setFile(const QString &file){ void NewPicsDialog::setDir(const QString &dir){ mFiles.clear(); QDir d(dir); - for(QFileInfo fi : d.entryInfoList(QDir::Files, QDir::Name)){ + for(const auto &fi : d.entryInfoList(QDir::Files, QDir::Name)){ mFiles << fi.absoluteFilePath(); } mFilesCtr = 0; @@ -167,7 +166,7 @@ void NewPicsDialog::removeFiles(){ for(QModelIndex i : real){ perm << i; } - for(QPersistentModelIndex pi : perm){ + for(const auto &pi : perm){ mFilesModel->removeRows(pi.row(), 1, pi.parent()); } } @@ -196,7 +195,7 @@ void NewPicsDialog::archive(){ progress.setMinimumWidth(400); progress.show(); int pgctr = 0; - for(FileData d : files){ + for(const auto &d : files){ ++pgctr; progress.setValue(pgctr); qApp->processEvents(); @@ -212,7 +211,7 @@ void NewPicsDialog::archive(){ addFileQ.bindValue(":format", d.mimeType); addFileQ.bindValue(":picsize", d.picSize); if(addFileQ.exec()){ - for(QVariant mpid : mappingParentsIds){ + for(const auto &mpid : mappingParentsIds){ addMappingQ.bindValue(":mapid", mpid); addMappingQ.bindValue(":md5", d.md5sum); addMappingQ.exec(); @@ -313,7 +312,7 @@ bool NewPicFilesModel::setData(const QModelIndex &index, const QVariant &value, void NewPicFilesModel::setFiles(const QStringList &paths) { SmTreeItem *rootItem = new SmTreeItem(NumFields); - for(QString file : paths){ + for(const auto &file : paths){ QFileInfo fi(file); QList<QVariant> fileData; if(!fi.exists()){ diff --git a/picfilesmodel.cpp b/picfilesmodel.cpp index 313c5a5..36d37c5 100644 --- a/picfilesmodel.cpp +++ b/picfilesmodel.cpp @@ -29,7 +29,7 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr void PicFilesModel::setMapping(int pMapId){ QList<QVariant> ids = mMappingTreeModel->childList(pMapId, MappingTreeModel::MappingId); mMappingIds.clear(); - for(QVariant i : ids){ + for(const auto &i : ids){ mMappingIds << i.toInt(); } } @@ -89,7 +89,7 @@ QList<QVariant> PicFilesModel::dataList(const QModelIndex &idx){ } QList<MappingData> mapData = mappingDataFromFile(idx.data(PicFilesModel::IdRole).toInt()); QList<QStringList> mappings; - for(MappingData d : mapData){ + for(const auto &d : mapData){ mappings << d.path; } @@ -145,7 +145,7 @@ bool PicFilesModel::changeMappings(const QList<int> &fileIds, const QList<QVaria if(!deleteMappingsQ.exec()){ goto error; } - for(QVariant pid : parentIds){ + for(const auto &pid : parentIds){ addMappingsQ.bindValue(":pid", fid); addMappingsQ.bindValue(":id", pid); if(!addMappingsQ.exec()){ @@ -329,7 +329,7 @@ void PicFilesModel::selectFromRecent(int days){ void PicFilesModel::selectFromSelection(QList<QVariant> ids){ mAllPics.clear(); QStringList idQS; - for(QVariant i : ids){ + for(const auto &i: ids){ idQS << QString::number(i.toInt()); } QString inPart = idQS.join(','); diff --git a/pictureswidget.cpp b/pictureswidget.cpp index 10ae6b0..7abae64 100644 --- a/pictureswidget.cpp +++ b/pictureswidget.cpp @@ -16,6 +16,7 @@ #include <QHeaderView> #include <QToolBar> #include <QApplication> +#include <QActionGroup> #include "pictureswidget.h" #include "picturelistview.h" @@ -51,7 +52,7 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB void PicturesWidget::setupWidget(){ QToolBar *toolBar = new QToolBar; QAction *showInPicViewerA = new QAction(QIcon(":/snapshot.png"), tr("Show"), this); - connect(showInPicViewerA, &QAction::triggered, [=] { + connect(showInPicViewerA, &QAction::triggered, this, [=] { QModelIndexList r = mPictureListView->selectionModel()->selectedRows(); if(!r.isEmpty()){ showInPicViewer(r.first()); @@ -99,7 +100,7 @@ void PicturesWidget::setupWidget(){ if(!mPictureListView->header()->isSectionHidden(hData.value(h))){ a->setChecked(true); } - connect(a, &QAction::triggered, [=] { mPictureListView->toggleHeader(a); }); + connect(a, &QAction::triggered, this, [=] { mPictureListView->toggleHeader(a); }); } QIcon headerIcon = Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), 'H', true, false); QAction *headerA = new QAction(headerIcon, tr("Show headers"), this); @@ -190,7 +191,7 @@ void PicturesWidget::constructWindowTitle(){ QString windowTitle = mWindowTitleBase; MappingData selected = mMappingTree->selectedItem(); if(!selected.path.isEmpty()){ - windowTitle = QString("%1 - [%2]").arg(mWindowTitleBase).arg(selected.path.join("/")); + windowTitle = QString("%1 - [%2]").arg(mWindowTitleBase, selected.path.join("/")); } emit needWindowTitleChange(windowTitle); } diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index c3cf59e..54ad9e8 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -5,7 +5,6 @@ 2 of the License, or (at your option) any later version. */ -#include <QDesktopWidget> #include <QApplication> #include <QGraphicsScene> #include <QGraphicsPixmapItem> @@ -126,7 +125,7 @@ void PictureViewer2::addFiles(const QStringList &files, bool clear){ return; } PicDataList pd; - for(QString f : files){ + for(const auto &f : files){ pd << picData(f); } addFiles(pd, clear); @@ -140,7 +139,7 @@ void PictureViewer2::addFiles(const QString &dir, bool clear){ PicDataList pd; QDir directory = QDir(dir); QFileInfoList files = directory.entryInfoList(QDir::Files, QDir::Name); - for(QFileInfo fi : files){ + for(const auto &fi : files){ pd << picData(fi.absoluteFilePath()); } addFiles(pd, clear); @@ -288,7 +287,7 @@ void PictureViewer2::deleteCurrent(){ void PictureViewer2::showNewPicsDialog(){ mNewPicsDlg->clearFiles(); QStringList fileList; - for(QVariantList v : mMarkedFiles){ + for(const auto &v : mMarkedFiles){ fileList << v.at(PicFilesModel::FullPath).toString(); } mNewPicsDlg->addFiles(fileList); @@ -335,7 +334,7 @@ void PictureViewer2::doSlide(){ } auto picDataOld = mPicData; mPicData.clear(); - for(auto pd : picDataOld){ + for(const auto &pd : picDataOld){ QList<QVariant> tmp; tmp << Helper::createArchivePath(pd.value(0).toString(), pd.value(1).toString()) << pd.value(2); mPicData << tmp; @@ -533,6 +532,7 @@ void PictureViewer2::constructMappingItem(const PicData &file){ doc->setDocumentMargin(8); QTextCursor *cur = new QTextCursor(doc); docFromTree(mapData, cur, 0); + delete cur; if(mMappingItem){ mMappingPos = mMappingItem->scenePos(); mScene->removeItem(mMappingItem); @@ -580,20 +580,6 @@ void PictureViewer2::setGradient(const QPixmap &pic){ setBackgroundBrush(QBrush(g)); } -QTextDocument *PictureViewer2::treeToString(const SmTreeItem *root) const{ - QTextDocument *retval = new QTextDocument; - retval->setIndentWidth(2); - retval->setDocumentMargin(8); - QTextCursor *cursor = new QTextCursor(retval); - for(int i = 0; i < root->childCount(); ++i){ - treeToStringRecursive(root->child(i), cursor, 0); - QTextBlockFormat fmt; - fmt.setIndent(0); - cursor->insertBlock(fmt); - } - return retval; -} - void PictureViewer2::treeToStringRecursive(const SmTreeItem *parent, QTextCursor *cursor, int indent) const{ QChar bullet(0x2640); if(indent % 2){ @@ -750,12 +736,12 @@ PictureViewer2Item::PictureViewer2Item(const PicData &data, const int numSelecte //prevent QStaticText from wrapping filesnames with spaces //we shouldn't allow this in the first place mTextList << data.at(PicFilesModel::FileName).toString().replace(' ', '_'); - mTextList << QString("%1x%2").arg(QString::number(picSize.width())).arg(QString::number(picSize.height())); + mTextList << QString("%1x%2").arg(QString::number(picSize.width()), QString::number(picSize.height())); QLocale l; mTextList << QString(QObject::tr("%1 bytes")).arg(l.toString(data.at(PicFilesModel::Size).toInt())); mTextList << l.toString(data.at(PicFilesModel::Added).toDate()); mTextList << data.at(PicFilesModel::MimeType).toString(); - mTextList << QString(QObject::tr("%1/%2 files")).arg(QString::number(cur + 1)).arg(QString::number(numSelected)); + mTextList << QString(QObject::tr("%1/%2 files")).arg(QString::number(cur + 1), QString::number(numSelected)); setZValue(1); } diff --git a/pictureviewer2.h b/pictureviewer2.h index 2525133..341b3de 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -93,7 +93,6 @@ class PictureViewer2 : public QGraphicsView { private: void setGradient(const QPixmap &pic); void showNext(); - QTextDocument *treeToString(const SmTreeItem *root) const; void treeToStringRecursive(const SmTreeItem *parent, QTextCursor *cursor, int indent) const; QPointF getPos(QGraphicsItem *item, int pos, const QPointF &movPos); QString constructWindowTitle() const; diff --git a/programconfigurator.cpp b/programconfigurator.cpp index 691c4aa..2edc884 100644 --- a/programconfigurator.cpp +++ b/programconfigurator.cpp @@ -16,7 +16,7 @@ #include <QSettings> #include <QFileSystemModel> #include <QMessageBox> -#include <QRegExp> +#include <QRegularExpression> #include <QFileInfo> #include "programconfigurator.h" @@ -59,12 +59,6 @@ ProgramConfigurator::ProgramConfigurator(const QString &prefix, const QString &d buttonLayout->addWidget(mDefault); buttonLayout->addStretch(); mainLayout->addLayout(buttonLayout, 5, 0, 1, 2, Qt::AlignCenter); - mInternalViewer = new QCheckBox(tr("Use internal Viewer")); - QHBoxLayout *intViewerL = new QHBoxLayout; - intViewerL->addStretch(); - intViewerL->addWidget(mInternalViewer); - intViewerL->addStretch(); - mainLayout->addLayout(intViewerL, 6, 0, 1, 2, Qt::AlignCenter); QVBoxLayout *stretchLayout = new QVBoxLayout; stretchLayout->addStretch(); mainLayout->addLayout(stretchLayout, 6, 0, 1, 2); @@ -84,7 +78,6 @@ void ProgramConfigurator::writeSettings(){ QSettings s; s.setValue(defaultString, mDefautProg); s.setValue(dataString, mData); - s.setValue("vw/internal", mInternalViewer->isChecked()); } void ProgramConfigurator::programChanged(const QString &program){ @@ -100,7 +93,7 @@ void ProgramConfigurator::programChanged(const QString &program){ void ProgramConfigurator::addProgram(){ QString name = mNameEdit->text(); - if(mData.keys().contains(name)){ + if(mData.contains(name)){ QString message = QString(tr("Already have a program with name %1.")).arg(name); QMessageBox::critical(this, tr("Error"), message); return; @@ -122,7 +115,7 @@ void ProgramConfigurator::addProgram(){ void ProgramConfigurator::removeProgram(){ QString name = mProgramSelector->currentText(); - if(mData.keys().contains(name)){ + if(mData.find(name) != mData.end()){ QString message = QString(tr("Really remove %1 from program list?")).arg(name); int retval = QMessageBox::question(this, tr("Question"), message, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ @@ -171,16 +164,17 @@ void ProgramConfigurator::readSettings(){ QSettings s; mData = s.value(dataString).toHash(); QStringList progs; - for(QString p : mData.keys()){ - progs << p; - } - mProgramSelector->addItems(progs); + auto it = mData.constBegin(); + while(it != mData.constEnd()) { + progs << it.key(); + ++it; + } + mProgramSelector->addItems(progs); mDefautProg = s.value(defaultString, tr("[None]")).toString(); int idx = mProgramSelector->findText(mDefautProg); if(idx != -1){ mProgramSelector->setCurrentIndex(idx); } - mInternalViewer->setChecked(s.value("vw/internal").toBool()); setDefault(); } @@ -203,6 +197,6 @@ QStringList ProgramConfigurator::args(const QString &argString){ if(argString.isEmpty()){ return QStringList(); } - QRegExp splitter("\\s+"); + QRegularExpression splitter("\\s+"); return argString.split(splitter, Qt::SkipEmptyParts); } diff --git a/programconfigurator.h b/programconfigurator.h index 3df66a5..543619c 100644 --- a/programconfigurator.h +++ b/programconfigurator.h @@ -16,9 +16,7 @@ class QLineEdit; class QPushButton; class QComboBox; -class QStringList; class QLabel; -class QStringList; class QCheckBox; class ProgramConfigurator : public QWidget { @@ -51,7 +49,6 @@ class ProgramConfigurator : public QWidget { QPushButton *mRemove; QPushButton *mUpdate; QPushButton *mDefault; - QCheckBox *mInternalViewer; QLabel *mDefaultLabel; QHash<QString, QVariant> mData; QString mDefautProg; diff --git a/randomtab.cpp b/randomtab.cpp index 292ae98..b80fd9b 100644 --- a/randomtab.cpp +++ b/randomtab.cpp @@ -222,7 +222,7 @@ QStringList RandomTab::validDvdNos(){ retval << no; } } - logMessage(QString(tr("Found %1 valid Dirs: (%2)")).arg(QString::number(retval.count())).arg(retval.join(','))); + logMessage(QString(tr("Found %1 valid Dirs: (%2)")).arg(QString::number(retval.count()), retval.join(','))); return retval; } @@ -297,7 +297,7 @@ void RandomTab::select(){ QVector<int> gIds; QString gids = genreIds.join(','); logMessage(QString(tr("Genres: (%1)")).arg(gids)); - QString genreQString = QString("SELECT ifiles_id FROM files WHERE iseriespart_id IN (SELECT distinct(iseriesparts_id) FROM seriesparts_genremap WHERE igenres_id IN (%1)) AND sifiletype = 1 AND (idvd = -1 OR idvd IN (%2))").arg(gids).arg(mValidDvds.join(',')); + QString genreQString = QString("SELECT ifiles_id FROM files WHERE iseriespart_id IN (SELECT distinct(iseriesparts_id) FROM seriesparts_genremap WHERE igenres_id IN (%1)) AND sifiletype = 1 AND (idvd = -1 OR idvd IN (%2))").arg(gids, mValidDvds.join(',')); logMessage(genreQString); QSqlQuery gQ(genreQString, mDb); while(gQ.next()){ @@ -316,7 +316,7 @@ void RandomTab::select(){ QVector<int> aIds; QString aids = actorIds.join(','); logMessage(QString(tr("Actors: (%1)")).arg(aids)); - QString actorQString = QString("SELECT ifiles_id FROM files WHERE iseriespart_id IN (SELECT distinct(iseriesparts_id) FROM seriesparts_actormap WHERE iactors_id IN (%1)) AND sifiletype = 1 AND (idvd = -1 OR idvd IN (%2))").arg(aids).arg(mValidDvds.join(',')); + QString actorQString = QString("SELECT ifiles_id FROM files WHERE iseriespart_id IN (SELECT distinct(iseriesparts_id) FROM seriesparts_actormap WHERE iactors_id IN (%1)) AND sifiletype = 1 AND (idvd = -1 OR idvd IN (%2))").arg(aids, mValidDvds.join(',')); logMessage(actorQString); QSqlQuery aQ(actorQString, mDb); while(aQ.next()){ @@ -356,7 +356,7 @@ void RandomTab::select(){ if(finalIds.count() < selCount){ count = finalIds.count();; } - logMessage(QString(tr("Count is %1 out of %2")).arg(QString::number(count)).arg(QString::number(finalIds.count()))); + logMessage(QString(tr("Count is %1 out of %2")).arg(QString::number(count), QString::number(finalIds.count()))); mFileModel->clear(); mFileModel->setHorizontalHeaderLabels(QStringList() << tr("Filename") << tr("Size (MB)") << tr("Dur.") << tr("MD5") << tr("LOC") << tr("Full Path")); @@ -460,13 +460,13 @@ void RandomTab::play(const QStringList &files){ QString program = pgdata.first; QStringList args = pgdata.second; args.append(files); - logMessage(QString(tr("Cmd: %1 %2")).arg(program).arg(args.join(" "))); + logMessage(QString(tr("Cmd: %1 %2")).arg(program, args.join(" "))); QProcess::startDetached(program, args); } void RandomTab::logMessage(const QString &msg){ QDateTime now = QDateTime::currentDateTime(); - QString msg1 = QString("[%1] %2").arg(now.toString()).arg(msg); + QString msg1 = QString("[%1] %2").arg(now.toString(), msg); mLog->append(msg1); } diff --git a/searchdialog.cpp b/searchdialog.cpp index 788c468..87a279e 100644 --- a/searchdialog.cpp +++ b/searchdialog.cpp @@ -44,7 +44,7 @@ FilenamesAndMetadata::FilenamesAndMetadata(QWidget *parent, Qt::WindowFlags flag connect(doSearchA, &QAction::triggered, this, &FilenamesAndMetadata::search); searchTB->addAction(doSearchA); QAction *clearSearchA= new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false), tr("Clear"), this); - connect(clearSearchA, &QAction::triggered, [=] { mSearch->clear(); }); + connect(clearSearchA, &QAction::triggered, this, [=] { mSearch->clear(); }); searchTB->addAction(clearSearchA); QHBoxLayout *topLayout = new QHBoxLayout; topLayout->addWidget(l1); @@ -146,7 +146,7 @@ void FilenamesAndMetadata::search(){ void FilenamesAndMetadata::appendChild(QVariant id, QVariant subject, QVariant name, QVariant sub, SmTreeItem *parent){ QString match; if(!sub.toString().isEmpty()){ - match = QString("%1 - %2").arg(name.toString()).arg(sub.toString()); + match = QString("%1 - %2").arg(name.toString(), sub.toString()); }else{ match = name.toString(); } @@ -173,7 +173,7 @@ ActorsAndMore::ActorsAndMore(QWidget *parent, Qt::WindowFlags flags) : QWidget(p connect(doSearchA, &QAction::triggered, this, &ActorsAndMore::doSearch); searchTB->addAction(doSearchA); QAction *clearSearchA= new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false), tr("Clear"), this); - connect(clearSearchA, &QAction::triggered, [=] { mSearch->clear(); }); + connect(clearSearchA, &QAction::triggered, this, [=] { mSearch->clear(); }); searchTB->addAction(clearSearchA); QHBoxLayout *topHBL = new QHBoxLayout; topHBL->addWidget(typeL); @@ -327,7 +327,7 @@ void ActorsAndMore::getGenresForActor(QStandardItem *actorItem){ res << genreQ.value(0).toString(); } if(!res.isEmpty()){ - for(QString g : res){ + for(const auto &g : res){ QStandardItem *cur = new QStandardItem(g); cur->setIcon(icon); cur->setEditable(false); @@ -477,7 +477,7 @@ void ActorsAndMore::getDataForActor(QModelIndex cur){ if(sub.isEmpty()){ curDisp = QString("%1 - <no sub/part>").arg(displayQ.value(0).toString()); }else{ - curDisp = QString("%1 - %2").arg(displayQ.value(0).toString()).arg(sub); + curDisp = QString("%1 - %2").arg(displayQ.value(0).toString(), sub); } } QStandardItem *cur = new QStandardItem(curDisp); @@ -111,7 +111,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla mFileWidget = new FSWidget; mTab->addTab(mFileWidget, tr("FS")); connect(mFileWidget, &FSWidget::message, this, &SheMov::statusbarMessage); - connect(mFileWidget, &FSWidget::selectionChanged, [=](int count, qint64 size, qint64 duration) { + connect(mFileWidget, &FSWidget::selectionChanged, this, [=](int count, qint64 size, qint64 duration) { updateSelectedCount(count); setSize(size); setDuration(duration, false); @@ -293,9 +293,9 @@ void SheMov::setSize(qint64 size){ QString selectedSize = l.toString(size); QString freeSize = l.toString(free); if(size < DVDSIZE){ - val = QString("<span style=\"color:%1\">%2 (%3)</span>").arg(QColor(Qt::green).name()).arg(selectedSize).arg(freeSize); + val = QString("<span style=\"color:%1\">%2 (%3)</span>").arg(QColor(Qt::green).name(), selectedSize, freeSize); }else{ - val = QString("<span style=\"color:%1\">%2 (%3)</span>").arg(QColor(Qt::red).name()).arg(selectedSize).arg(freeSize); + val = QString("<span style=\"color:%1\">%2 (%3)</span>").arg(QColor(Qt::red).name(), selectedSize, freeSize); } mSelectedSize->setText(val); } @@ -57,7 +57,6 @@ SOURCES = main.cpp \ mappingtreeproxy.cpp \ mappingtreeresultmodel.cpp \ mappingdata.cpp \ - videoviewer.cpp \ wizardtreemodel.cpp \ moviemetadatapage.cpp \ moviemappingpage.cpp \ @@ -113,7 +112,6 @@ HEADERS = \ mappingtreeproxy.h \ mappingtreeresultmodel.h \ mappingdata.h \ - videoviewer.h \ wizardtreemodel.h \ moviemetadatapage.h \ moviemappingpage.h \ diff --git a/smglobals.cpp b/smglobals.cpp index 9577ebf..d0165a9 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -13,7 +13,6 @@ #include "mappingtablemodel.h" #include "mappingtreemodel.h" #include "pictureviewer2.h" -#include "videoviewer.h" #include "picfilesmodel.h" #include "configurationdialog.h" #include "archivebrowsermodel.h" @@ -21,7 +20,7 @@ SmGlobals *SmGlobals::mInstance = nullptr; SmGlobals::~SmGlobals(){ - for(QAbstractItemModel *model : mModels.values()){ + for(const auto &model : qAsConst(mModels)){ model->deleteLater(); } for(QWidget *w : mWidgets){ @@ -99,14 +98,6 @@ PictureViewer2 *SmGlobals::pictureViewer() { return mPictureViewer; } -VideoViewer *SmGlobals::videoViewer() { - if(!mVideoViewer){ - mVideoViewer = new VideoViewer; - mVideoViewer->setHidden(true); - } - return mVideoViewer; -} - QIcon SmGlobals::iconFor(const QString &type){ QString settingsS = QString("ui/%1icon").arg(type); QSettings s; diff --git a/smtreemodel.cpp b/smtreemodel.cpp index 98490fc..f314222 100644 --- a/smtreemodel.cpp +++ b/smtreemodel.cpp @@ -166,7 +166,7 @@ QModelIndex SmTreeModel::findRecursive(const QVariant &value, int column, const return QModelIndex(); } -bool SmTreeModel::matchRecursive(const QModelIndex &pIdx, const QRegExp ®ex, int column) const { +bool SmTreeModel::matchRecursive(const QModelIndex &pIdx, const QRegularExpression ®ex, int column) const { if(!pIdx.isValid()){ return false; } @@ -198,7 +198,7 @@ bool SmTreeModel::matchRecursive(const QModelIndex &pIdx, const QRegExp ®ex, return retval; } -bool SmTreeModel::checkParents(const SmTreeItem *item, const QRegExp ®ex, int column) const { +bool SmTreeModel::checkParents(const SmTreeItem *item, const QRegularExpression ®ex, int column) const { while(item != root()){ QString value = item->data(column).toString(); if(value.contains(regex)){ diff --git a/smtreemodel.h b/smtreemodel.h index cb55186..341eecc 100644 --- a/smtreemodel.h +++ b/smtreemodel.h @@ -38,8 +38,8 @@ class SmTreeModel : public QAbstractItemModel { virtual bool setData(const QModelIndex &index, const QVariant &value, int role); virtual QModelIndex find(const QVariant &value, int column = 0, const QModelIndex &pIdx = QModelIndex()) const; virtual QModelIndex findRecursive(const QVariant &value, int column, const QModelIndex &start) const; - virtual bool matchRecursive(const QModelIndex &pIdx, const QRegExp ®ex, int column = 0) const; - virtual bool checkParents(const SmTreeItem *item, const QRegExp ®ex, int column) const; + virtual bool matchRecursive(const QModelIndex &pIdx, const QRegularExpression ®ex, int column = 0) const; + virtual bool checkParents(const SmTreeItem *item, const QRegularExpression ®ex, int column) const; // root + parent item bool setRoot(SmTreeItem *rootItem); diff --git a/statisticsdialog.cpp b/statisticsdialog.cpp index d533414..ccb513d 100644 --- a/statisticsdialog.cpp +++ b/statisticsdialog.cpp @@ -165,7 +165,7 @@ GraphWidget::GraphWidget(const QList<QList<QVariant> > data, const QString heade //calc max width of data, maxData and total QFontMetrics fmd = QFontMetrics(mDataFont); - for(QList<QVariant> d : mData){ + for(const auto &d : mData){ int width = fmd.size(Qt::TextSingleLine, d.at(0).toString()).width(); if(width > mDescWidth){ mDescWidth = width; @@ -178,9 +178,9 @@ GraphWidget::GraphWidget(const QList<QList<QVariant> > data, const QString heade } //set percentage width - for(QList<QVariant> d : mData){ + for(const auto &d : mData){ auto percentage = d.at(1).toDouble() * 100.0 / static_cast<double>(mTotal); - QString pString = QString("%1 (%2%)").arg(QString::number(d.at(1).toInt())).arg(QString::number(percentage, 'f', 2)); + QString pString = QString("%1 (%2%)").arg(QString::number(d.at(1).toInt()), QString::number(percentage, 'f', 2)); int width = fmd.size(Qt::TextSingleLine, pString).width(); if(width > mPercentageWidth){ mPercentageWidth = width; @@ -278,7 +278,7 @@ void GraphWidget::paintEvent(QPaintEvent *event){ opt.setAlignment(Qt::AlignRight | Qt::AlignVCenter); QTextOption optLeft; opt.setAlignment(Qt::AlignLeft | Qt::AlignVCenter); - for(QList<QVariant> l : mData){ + for(const auto &l : mData){ //draw lead QRect textRect(0, 0, mDescWidth, mBarHeight); p.drawText(textRect, l.at(0).toString(), opt); @@ -297,7 +297,7 @@ void GraphWidget::paintEvent(QPaintEvent *event){ auto pstartx = dataRect.width() + 2 * mMargin + mDescWidth; QRectF percentageRect(pstartx, 0, mPercentageWidth, 20); qreal percent = l.at(1).toInt() * 100.0 / static_cast<double>(mTotal); - QString pString = QString("%1 (%2%)").arg(QString::number(l.at(1).toInt())).arg(QString::number(percent, 'f', 2)); + QString pString = QString("%1 (%2%)").arg(QString::number(l.at(1).toInt()), QString::number(percent, 'f', 2)); p.drawText(percentageRect, pString, optLeft); //translate p.translate(0, mMargin + mBarHeight); diff --git a/videoviewer.cpp b/videoviewer.cpp index 8c7c233..47646c0 100644 --- a/videoviewer.cpp +++ b/videoviewer.cpp @@ -6,23 +6,22 @@ */ #include <QMediaPlayer> -#include <QMediaPlaylist> +//#include <QMediaPlaylist> #include <QKeyEvent> #include <QCloseEvent> #include <QSettings> #include <QApplication> -#include <QDesktopWidget> +//#include <QDesktopWidget> #include "videoviewer.h" #include "smglobals.h" VideoViewer::VideoViewer(QWidget *parent) : QVideoWidget(parent) { resize(1280,1024); - move(qApp->desktop()->availableGeometry(this).center() - rect().center()); mPlayer = new QMediaPlayer(this); mPlayer->setVideoOutput(this); - QMediaPlaylist *playList = new QMediaPlaylist; - mPlayer->setPlaylist(playList); + //QMediaPlaylist *playList = new QMediaPlaylist; + //mPlayer->setPlaylist(playList); readSettings(); } @@ -41,7 +40,7 @@ void VideoViewer::writeSettings(){ } void VideoViewer::keyPressEvent(QKeyEvent *e){ - int keyNum = e->key(); + /*int keyNum = e->key(); if(keyNum == Qt::Key_Q){ player()->stop(); setHidden(true); @@ -94,7 +93,7 @@ void VideoViewer::keyPressEvent(QKeyEvent *e){ curVol = 100; } mPlayer->setVolume(curVol); - } + }*/ } void VideoViewer::closeEvent(QCloseEvent *e){ @@ -56,7 +56,7 @@ void Viewer::preview(const QString &file){ mCurIndex = -1;
QPixmap pm = Helper::preview(file);
mLabel->setPixmap(pm);
- QString winTitle = QString(tr("%1 Viewer: [Preview %2]")).arg(qApp->applicationName()).arg(file);
+ QString winTitle = QString(tr("%1 Viewer: [Preview %2]")).arg(qApp->applicationName(), file);
setWindowTitle(winTitle);
}
@@ -96,6 +96,6 @@ void Viewer::displayFile(int index){ pm = pm.scaled(QSize(width() - 20, height() - 20), Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
mLabel->setPixmap(pm);
- QString winTitle = QString(tr("%1 Viewer [%2]")).arg(qApp->applicationName()).arg(mFiles.at(mCurIndex));
+ QString winTitle = QString(tr("%1 Viewer [%2]")).arg(qApp->applicationName(), mFiles.at(mCurIndex));
setWindowTitle(winTitle);
}
|