From 7633affa20acc7ff063605ad245719e0b16640a2 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Fri, 13 Sep 2013 21:29:53 +0200 Subject: [PATCH] Use new QFileDialog::DontUseCustomDirectoryIcons flag for faster file dialogs In Qt 4.8.6 there's a new option QFileDialog::DontUseCustomDirectoryIcons promising much better performance when there are many folders. Closes #511. --- plugins/patman/patman.cpp | 5 ++++- plugins/sf2_player/sf2_player.cpp | 3 +++ plugins/vestige/vestige.cpp | 5 ++++- plugins/vst_base/VstPlugin.cpp | 8 +++++++- src/core/sample_buffer.cpp | 5 ++++- src/core/song.cpp | 6 ++++++ src/gui/MainWindow.cpp | 6 ++++++ src/gui/setup_dialog.cpp | 6 +++++- 8 files changed, 39 insertions(+), 5 deletions(-) diff --git a/plugins/patman/patman.cpp b/plugins/patman/patman.cpp index 7459c92b7..85457871f 100644 --- a/plugins/patman/patman.cpp +++ b/plugins/patman/patman.cpp @@ -2,7 +2,7 @@ * patman.cpp - a GUS-compatible patch instrument plugin * * Copyright (c) 2007-2008 Javier Serrano Polo - * Copyright (c) 2009-2011 Tobias Doerffel + * Copyright (c) 2009-2013 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -511,6 +511,9 @@ PatmanView::~PatmanView() void PatmanView::openFile( void ) { QFileDialog ofd( NULL, tr( "Open patch file" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif ofd.setFileMode( QFileDialog::ExistingFiles ); QStringList types; diff --git a/plugins/sf2_player/sf2_player.cpp b/plugins/sf2_player/sf2_player.cpp index f03153783..ff590b622 100644 --- a/plugins/sf2_player/sf2_player.cpp +++ b/plugins/sf2_player/sf2_player.cpp @@ -1046,6 +1046,9 @@ void sf2InstrumentView::showFileDialog() sf2Instrument * k = castModel(); QFileDialog ofd( NULL, tr( "Open SoundFont file" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif ofd.setFileMode( QFileDialog::ExistingFiles ); QStringList types; diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index eeb536f58..df636c412 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -1,7 +1,7 @@ /* * vestige.cpp - instrument-plugin for hosting VST-instruments * - * Copyright (c) 2005-2012 Tobias Doerffel + * Copyright (c) 2005-2013 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -607,6 +607,9 @@ void VestigeInstrumentView::modelChanged() void VestigeInstrumentView::openPlugin() { QFileDialog ofd( NULL, tr( "Open VST-plugin" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif QString dir; if( m_vi->m_pluginDLL != "" ) diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index e548f3a9b..d040c61a8 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -1,7 +1,7 @@ /* * VstPlugin.cpp - implementation of VstPlugin class * - * Copyright (c) 2005-2012 Tobias Doerffel + * Copyright (c) 2005-2013 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -512,6 +512,9 @@ void VstPlugin::openPreset( ) QFileDialog ofd( NULL, tr( "Open Preset" ), "", tr( "Vst Plugin Preset (*.fxp *.fxb)" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif ofd.setFileMode( QFileDialog::ExistingFiles ); if( ofd.exec () == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) @@ -571,6 +574,9 @@ void VstPlugin::savePreset( ) QFileDialog sfd( NULL, tr( "Save Preset" ), presName.section(": ", 1, 1) + tr(".fxp"), tr( "Vst Plugin Preset (*.fxp *.fxb)" ) ); +#if QT_VERSION >= 0x040806 + sfd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif if( p_name != "" ) // remember last directory { sfd.setDirectory( QFileInfo( p_name ).absolutePath() ); diff --git a/src/core/sample_buffer.cpp b/src/core/sample_buffer.cpp index 40b0bc036..dfcd9f967 100644 --- a/src/core/sample_buffer.cpp +++ b/src/core/sample_buffer.cpp @@ -1,7 +1,7 @@ /* * sample_buffer.cpp - container-class sampleBuffer * - * Copyright (c) 2005-2010 Tobias Doerffel + * Copyright (c) 2005-2013 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -742,6 +742,9 @@ void sampleBuffer::visualize( QPainter & _p, const QRect & _dr, QString sampleBuffer::openAudioFile() const { QFileDialog ofd( NULL, tr( "Open audio file" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif QString dir; if( !m_audioFile.isEmpty() ) diff --git a/src/core/song.cpp b/src/core/song.cpp index 6fdba2b21..b8d281a0e 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -1241,6 +1241,9 @@ void song::importProject() " (*.h2song);;" + tr("All file types") + " (*.*)"); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif ofd.setFileMode( QFileDialog::ExistingFiles ); if( ofd.exec () == QDialog::Accepted && !ofd.selectedFiles().isEmpty() ) @@ -1296,6 +1299,9 @@ void song::exportProject(bool multiExport) } QFileDialog efd( engine::mainWindow() ); +#if QT_VERSION >= 0x040806 + efd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif if (multiExport) { efd.setFileMode( QFileDialog::Directory); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 98bf7e408..0cb8f09cf 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -688,6 +688,9 @@ void MainWindow::openProject( void ) { QFileDialog ofd( this, tr( "Open project" ), "", tr( "MultiMedia Project (*.mmp *.mmpz *.xml)" ) ); +#if QT_VERSION >= 0x040806 + ofd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif ofd.setDirectory( configManager::inst()->userProjectsDir() ); ofd.setFileMode( QFileDialog::ExistingFiles ); if( ofd.exec () == QDialog::Accepted && @@ -751,6 +754,9 @@ bool MainWindow::saveProjectAs( void ) QFileDialog sfd( this, tr( "Save project" ), "", tr( "MultiMedia Project (*.mmp *.mmpz);;" "MultiMedia Project Template (*.mpt)" ) ); +#if QT_VERSION >= 0x040806 + sfd.setOption( QFileDialog::DontUseCustomDirectoryIcons ); +#endif sfd.setAcceptMode( QFileDialog::AcceptSave ); sfd.setFileMode( QFileDialog::AnyFile ); QString f = engine::getSong()->projectFileName(); diff --git a/src/gui/setup_dialog.cpp b/src/gui/setup_dialog.cpp index 29cdce5c4..7780f2bae 100644 --- a/src/gui/setup_dialog.cpp +++ b/src/gui/setup_dialog.cpp @@ -1010,7 +1010,11 @@ void setupDialog::openWorkingDir() { QString new_dir = QFileDialog::getExistingDirectory( this, tr( "Choose LMMS working directory" ), - m_workingDir ); + m_workingDir +#if QT_VERSION >= 0x040806 + , QFileDialog::DontUseCustomDirectoryIcons +#endif + ); if( new_dir != QString::null ) { m_wdLineEdit->setText( new_dir );