Permalink
Browse files

Solves issue #2028 (Slow MIDI import due to repeated message)

AutomationPattern::addObject now returns a boolean which indicates
whether the object was added or not. This change enables the removal of
the error message that is shown in the case that a model is already
connected from AutomationPattern::addObject. Instead all interactive
callers now check for the return value and show the message in case it
is needed.

This change set improves the import of MIDI files significantly. These
have been slowed down quite a lot due to the message being shown
repeatedly during the MIDI import.
  • Loading branch information...
michaelgregorius committed May 3, 2015
1 parent 9f95c04 commit 53f5ef1980c2ef010f9cf5085aa00e4cb3efd930
@@ -56,7 +56,7 @@ class EXPORT AutomationPattern : public TrackContentObject
AutomationPattern( const AutomationPattern & _pat_to_copy );
virtual ~AutomationPattern();
void addObject( AutomatableModel * _obj, bool _search_dup = true );
bool addObject( AutomatableModel * _obj, bool _search_dup = true );
const AutomatableModel * firstObject() const;
@@ -31,7 +31,6 @@
#include "ProjectJournal.h"
#include "BBTrackContainer.h"
#include "Song.h"
#include "TextFloat.h"
#include "embed.h"
int AutomationPattern::s_quantization = 1;
@@ -107,18 +106,16 @@ AutomationPattern::~AutomationPattern()
void AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )
bool AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )
{
if( _search_dup )
{
for( objectVector::iterator it = m_objects.begin();
it != m_objects.end(); ++it )
{
if( *it == _obj )
{
TextFloat::displayMessage( _obj->displayName(), tr( "Model is already connected "
"to this pattern." ), embed::getIconPixmap( "automation" ), 2000 );
return;
{
return false;
}
}
}
@@ -138,6 +135,7 @@ void AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )
emit dataChanged();
return true;
}
@@ -35,6 +35,7 @@
#include "ProjectJournal.h"
#include "RenameDialog.h"
#include "StringPairDrag.h"
#include "TextFloat.h"
#include "ToolTip.h"
@@ -420,7 +421,15 @@ void AutomationPatternView::dropEvent( QDropEvent * _de )
journallingObject( val.toInt() ) );
if( mod != NULL )
{
m_pat->addObject( mod );
bool added = m_pat->addObject( mod );
if ( !added )
{
TextFloat::displayMessage( mod->displayName(),
tr( "Model is already connected "
"to this pattern." ),
embed::getIconPixmap( "automation" ),
2000 );
}
}
update();
@@ -2299,7 +2299,15 @@ void AutomationEditorWindow::dropEvent( QDropEvent *_de )
journallingObject( val.toInt() ) );
if( mod != NULL )
{
m_editor->m_pattern->addObject( mod );
bool added = m_editor->m_pattern->addObject( mod );
if ( !added )
{
TextFloat::displayMessage( mod->displayName(),
tr( "Model is already connected "
"to this pattern." ),
embed::getIconPixmap( "automation" ),
2000 );
}
setCurrentPattern( m_editor->m_pattern );
}
}

0 comments on commit 53f5ef1

Please sign in to comment.