Skip to content

Commit

Permalink
Queue file events for later
Browse files Browse the repository at this point in the history
  • Loading branch information
tresf committed Mar 14, 2017
1 parent 3299eb4 commit 5aceca1
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 20 deletions.
10 changes: 8 additions & 2 deletions include/MainApplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@
class MainApplication : public QApplication
{
public:
MainApplication(int& argc, char * * argv);
bool event(QEvent *event);
MainApplication(int& argc, char** argv);
bool event(QEvent* event);
inline QString& queuedFile()
{
return m_queuedFile;
}
private:
QString m_queuedFile;
};

#endif // MAINAPPLICATION_H
8 changes: 7 additions & 1 deletion src/core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ int main( int argc, char * * argv )

QCoreApplication * app = coreOnly ?
new QCoreApplication( argc, argv ) :
new MainApplication( argc, argv ) ;
new MainApplication( argc, argv );

Mixer::qualitySettings qs( Mixer::qualitySettings::Mode_HighQuality );
ProjectRenderer::OutputSettings os( 44100, false, 160,
Expand Down Expand Up @@ -842,6 +842,12 @@ int main( int argc, char * * argv )
gui->mainWindow()->showMaximized();
}

// Handle macOS-style FileOpen QEvents
QString queuedFile = static_cast<MainApplication *>( app )->queuedFile();
if ( !queuedFile.isEmpty() ) {
fileToLoad = queuedFile;
}

if( !fileToLoad.isEmpty() )
{
if( fileToLoad == recoveryFile )
Expand Down
1 change: 1 addition & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ SET(LMMS_SRCS
gui/LfoControllerDialog.cpp
gui/LmmsPalette.cpp
gui/LmmsStyle.cpp
gui/MainApplication.cpp
gui/MainWindow.cpp
gui/MidiSetupWidget.cpp
gui/ModelView.cpp
Expand Down
54 changes: 37 additions & 17 deletions src/gui/MainApplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,47 @@
* Boston, MA 02110-1301 USA.
*
*/
#include <QDebug>
#include <QFileOpenEvent>

#include "MainApplication.h"
#include "GuiApplication.h"
#include "MainWindow.h"
#include "Engine.h"
#include "Song.h"

MainApplication::MainApplication(int& argc, char** argv) :
QApplication(argc, argv),
m_queuedFile() {}

MainApplication::MainApplication( int& argc, char * * argv ) : QApplication( argc, argv ) {}

boolean MainApplication::event( QEvent * event )
bool MainApplication::event(QEvent* event)
{
switch(event->type())
{
case QEvent::FileOpen:
{
QFileOpenEvent * fileEvent = static_cast<QFileOpenEvent *>( event );
if( event )
{
Engine::getSong()->loadProject( fileEvent->file() );
return true;
}
}
default:
return QApplication::event( event );
}
switch(event->type())
{
case QEvent::FileOpen:
{
QFileOpenEvent * fileEvent = static_cast<QFileOpenEvent *>( event );
if(event)
{
// Handle the project file
m_queuedFile = fileEvent->file();
if(Engine::getSong())
{
if(gui->mainWindow()->mayChangeProject(true))
{
qDebug() << "Loading file " << m_queuedFile;
Engine::getSong()->loadProject(m_queuedFile);
}
}
else
{
qDebug() << "Queuing file " << m_queuedFile;
}
return true;
}
// Fall through to default
}
default:
return QApplication::event(event);
}
}

0 comments on commit 5aceca1

Please sign in to comment.