macOS: Allow opening ROMs with melonDS from Finder.

This commit is contained in:
Nadia Holmquist Pedersen 2021-08-23 10:27:03 +02:00
parent 883fceb6ce
commit 6ad0e8d61a
3 changed files with 41 additions and 4 deletions

View File

@ -22,5 +22,17 @@
<true/>
<key>NSMicrophoneUsageDescription</key>
<string>We need microphone access so you can use the emulated DS microphone</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>nds</string>
<string>srl</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
</dict>
</plist>

View File

@ -2726,7 +2726,23 @@ void emuStop()
OSD::AddMessage(0xFFC040, "Shutdown");
}
MelonApplication::MelonApplication(int& argc, char** argv)
: QApplication(argc, argv)
{
setWindowIcon(QIcon(":/melon-icon"));
}
bool MelonApplication::event(QEvent *event)
{
if (event->type() == QEvent::FileOpen)
{
QFileOpenEvent *openEvent = static_cast<QFileOpenEvent*>(event);
printf("%s\n", openEvent->file().toUtf8().constData());
mainWindow->loadROM(openEvent->file());
}
return QApplication::event(event);
}
int main(int argc, char** argv)
{
@ -2737,8 +2753,7 @@ int main(int argc, char** argv)
Platform::Init(argc, argv);
QApplication melon(argc, argv);
melon.setWindowIcon(QIcon(":/melon-icon"));
MelonApplication melon(argc, argv);
// http://stackoverflow.com/questions/14543333/joystick-wont-work-using-sdl
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");

View File

@ -19,6 +19,7 @@
#ifndef MAIN_H
#define MAIN_H
#include <QApplication>
#include <QThread>
#include <QWidget>
#include <QWindow>
@ -189,6 +190,14 @@ private:
GLuint screenTexture;
};
class MelonApplication : public QApplication
{
Q_OBJECT
public:
MelonApplication(int &argc, char** argv);
bool event(QEvent* event) override;
};
class MainWindow : public QMainWindow
{
@ -201,6 +210,9 @@ public:
bool hasOGL;
QOpenGLContext* getOGLContext();
void loadROM(QString filename);
void loadROM(QByteArray *romData, QString archiveFileName, QString romFileName);
void onAppStateChanged(Qt::ApplicationState state);
protected:
@ -278,8 +290,6 @@ private:
QList<QString> recentFileList;
QMenu *recentMenu;
void updateRecentFilesMenu();
void loadROM(QString filename);
void loadROM(QByteArray *romData, QString archiveFileName, QString romFileName);
QString pickAndExtractFileFromArchive(QString archiveFileName, QByteArray *romBuffer);