summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2022-04-15 13:27:34 +0200
committerArno <arno@disconnect.de>2022-04-15 13:27:34 +0200
commit856119c5a43b4781b051b93a0713c152cfd99f85 (patch)
tree4e2fde4e7a76179cc243e0665091c6ad429ea640 /fswidget.cpp
parent62d3ca1482b202d2883eeb5e17e72300e8612477 (diff)
downloadSheMov-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...
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp120
1 files changed, 45 insertions, 75 deletions
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();
- }
-}