diff --git a/ChangeLog b/ChangeLog index a10621895..7cbd14ba2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,7 +12,6 @@ * src/core/midi/midi_controller.cpp: * src/core/controller.cpp: * Makefile.am: - - Add midi-controller support - Code clean-up diff --git a/src/core/controller.cpp b/src/core/controller.cpp index 20e4cf57a..710bd5a03 100644 --- a/src/core/controller.cpp +++ b/src/core/controller.cpp @@ -36,6 +36,7 @@ #include "controller.h" #include "controller_dialog.h" #include "lfo_controller.h" +#include "midi_controller.h" unsigned int controller::s_frames = 0; @@ -154,6 +155,10 @@ controller * controller::create( ControllerTypes _ct, model * _parent ) c = new lfoController( _parent ); break; + case MidiController: + c = new midiController( _parent ); + break; + default: break; } diff --git a/src/core/controller_connection.cpp b/src/core/controller_connection.cpp index 28ce7574e..5eee18d33 100644 --- a/src/core/controller_connection.cpp +++ b/src/core/controller_connection.cpp @@ -57,6 +57,7 @@ controllerConnection::controllerConnection( controller * _controller ) : + controllerConnection::controllerConnection( int _controllerId ) : m_controller( controller::create( controller::DummyController, NULL ) ), m_controllerId( _controllerId ), @@ -67,6 +68,7 @@ controllerConnection::controllerConnection( int _controllerId ) : + controllerConnection::~controllerConnection() { s_connections.remove( s_connections.indexOf( this ) ); @@ -75,7 +77,8 @@ controllerConnection::~controllerConnection() delete m_controller; } } - + + void controllerConnection::setController( int _controllerId ) @@ -84,6 +87,7 @@ void controllerConnection::setController( int _controllerId ) + void controllerConnection::setController( controller * _controller ) { if( m_ownsController && m_controller ) @@ -106,6 +110,7 @@ void controllerConnection::setController( controller * _controller ) + /* * A connection may not be finalized. This means, the connection should exist, * but the controller does not yet exist. This happens when loading. Even @@ -127,33 +132,53 @@ void controllerConnection::finalizeConnections( void ) + void controllerConnection::saveSettings( QDomDocument & _doc, QDomElement & _this ) { if( engine::getSong() ) { - int id = engine::getSong()->controllers().indexOf( m_controller ); - _this.setAttribute( "id", id ); + if( m_ownsController ) + { + m_controller->saveState( _doc, _this ); + } + else + { + int id = engine::getSong()->controllers().indexOf( m_controller ); + if(id >= 0 ) + { + _this.setAttribute( "id", id ); + } + } } } + void controllerConnection::loadSettings( const QDomElement & _this ) { - if( _this.attribute( "id" ).toInt() >= 0 ) + QDomNode node = _this.firstChild(); + if( !node.isNull() ) { - m_controllerId = _this.attribute( "id" ).toInt(); + setController( controller::create( node.toElement(), engine::getSong() ) ); + } + else + { + if( _this.attribute( "id" ).toInt() >= 0 ) + { + m_controllerId = _this.attribute( "id" ).toInt(); + } + else + { + qWarning( "controller index invalid\n" ); + m_controllerId = -1; + } + m_controller = controller::create( controller::DummyController, NULL ); } - else - { - qWarning( "controller index invalid\n" ); - m_controllerId = -1; - } - m_controller = controller::create( controller::DummyController, NULL ); - } + QString controllerConnection::nodeName( void ) const { return( "connection" );