refactor: move file open event handling to standalone file

This commit is contained in:
Gary Wang 2024-12-31 10:57:21 +08:00
parent c227c74e23
commit 101f111209
7 changed files with 63 additions and 23 deletions

View File

@ -68,6 +68,7 @@ set (PPIC_CPP_FILES
app/exiv2wrapper.cpp app/exiv2wrapper.cpp
app/playlistmanager.cpp app/playlistmanager.cpp
app/shortcutedit.cpp app/shortcutedit.cpp
app/fileopeneventhandler.cpp
) )
set (PPIC_HEADER_FILES set (PPIC_HEADER_FILES
@ -88,6 +89,7 @@ set (PPIC_HEADER_FILES
app/exiv2wrapper.h app/exiv2wrapper.h
app/playlistmanager.h app/playlistmanager.h
app/shortcutedit.h app/shortcutedit.h
app/fileopeneventhandler.h
) )
set (PPIC_QRC_FILES set (PPIC_QRC_FILES

View File

@ -0,0 +1,22 @@
// SPDX-FileCopyrightText: 2024 Gary Wang <git@blumia.net>
//
// SPDX-License-Identifier: MIT
#include "fileopeneventhandler.h"
#include <QFileOpenEvent>
FileOpenEventHandler::FileOpenEventHandler(QObject *parent)
: QObject(parent)
{
}
bool FileOpenEventHandler::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::FileOpen) {
QFileOpenEvent *fileOpenEvent = static_cast<QFileOpenEvent *>(event);
emit fileOpen(fileOpenEvent->url());
return true;
}
return QObject::eventFilter(obj, event);
}

View File

@ -0,0 +1,21 @@
// SPDX-FileCopyrightText: 2024 Gary Wang <git@blumia.net>
//
// SPDX-License-Identifier: MIT
#pragma once
#include <QObject>
class FileOpenEventHandler : public QObject
{
Q_OBJECT
public:
explicit FileOpenEventHandler(QObject *parent = nullptr);
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
signals:
void fileOpen(const QUrl &url);
};

View File

@ -7,6 +7,10 @@
#include "playlistmanager.h" #include "playlistmanager.h"
#include "settings.h" #include "settings.h"
#ifdef Q_OS_MACOS
#include "fileopeneventhandler.h"
#endif // Q_OS_MACOS
#include <QApplication> #include <QApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
#include <QDir> #include <QDir>
@ -55,6 +59,16 @@ int main(int argc, char *argv[])
MainWindow w; MainWindow w;
w.show(); w.show();
#ifdef Q_OS_MACOS
FileOpenEventHandler * fileOpenEventHandler = new FileOpenEventHandler(&a);
a.installEventFilter(fileOpenEventHandler);
a.connect(fileOpenEventHandler, &FileOpenEventHandler::fileOpen, [&w](const QUrl & url){
if (w.isHidden()) w.showNormal();
w.showUrls({url});
w.initWindowSize();
});
#endif // Q_OS_MACOS
QStringList urlStrList = parser.positionalArguments(); QStringList urlStrList = parser.positionalArguments();
QList<QUrl> && urlList = PlaylistManager::convertToUrlList(urlStrList); QList<QUrl> && urlList = PlaylistManager::convertToUrlList(urlStrList);

View File

@ -160,10 +160,6 @@ MainWindow::MainWindow(QWidget *parent)
installResizeCapture(m_graphicsView->viewport()); installResizeCapture(m_graphicsView->viewport());
installResizeCapture(m_gv); installResizeCapture(m_gv);
installResizeCapture(m_gv->viewport()); installResizeCapture(m_gv->viewport());
#ifdef Q_OS_MACOS
qApp->installEventFilter(this);
#endif // Q_OS_MACOS
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
@ -661,20 +657,6 @@ QSize MainWindow::sizeHint() const
return QSize(710, 530); return QSize(710, 530);
} }
#ifdef Q_OS_MACOS
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
Q_UNUSED(obj);
if (event->type() == QEvent::FileOpen) {
QFileOpenEvent *fileOpenEvent = static_cast<QFileOpenEvent *>(event);
showUrls({fileOpenEvent->url()});
initWindowSize();
return true;
}
return false;
}
#endif // Q_OS_MACOS
void MainWindow::on_actionOpen_triggered() void MainWindow::on_actionOpen_triggered()
{ {
QStringList picturesLocations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); QStringList picturesLocations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);

View File

@ -77,9 +77,6 @@ protected slots:
protected: protected:
QSize sizeHint() const override; QSize sizeHint() const override;
#ifdef Q_OS_MACOS
bool eventFilter(QObject *obj, QEvent *event) override;
#endif // Q_OS_MACOS
private slots: private slots:
void on_actionOpen_triggered(); void on_actionOpen_triggered();

View File

@ -40,7 +40,8 @@ SOURCES += \
app/exiv2wrapper.cpp \ app/exiv2wrapper.cpp \
app/actionmanager.cpp \ app/actionmanager.cpp \
app/playlistmanager.cpp \ app/playlistmanager.cpp \
app/shortcutedit.cpp app/shortcutedit.cpp \
app/fileopeneventhandler.cpp
HEADERS += \ HEADERS += \
app/aboutdialog.h \ app/aboutdialog.h \
@ -59,7 +60,8 @@ HEADERS += \
app/exiv2wrapper.h \ app/exiv2wrapper.h \
app/actionmanager.h \ app/actionmanager.h \
app/playlistmanager.h \ app/playlistmanager.h \
app/shortcutedit.h app/shortcutedit.h \
app/fileopeneventhandler.h
TRANSLATIONS = \ TRANSLATIONS = \
app/translations/PineapplePictures.ts \ app/translations/PineapplePictures.ts \