Save and load MIDI control listener settings

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit is contained in:
Achim Settelmeier
2009-05-21 01:00:22 +02:00
committed by Tobias Doerffel
parent 8395c9428c
commit 57d4024c2a
5 changed files with 414 additions and 86 deletions

View File

@@ -51,6 +51,7 @@ class songEditor;
class ladspa2LMMS;
class controllerRackView;
class MidiControlListener;
class QDomDocument;
class EXPORT engine
@@ -181,6 +182,15 @@ public:
{
return s_lmmsStyle;
}
static void saveConfiguration( QDomDocument & doc );
static void loadConfiguration( QDomDocument & doc );
static MidiControlListener * getMidiControlListener( void )
{
return s_midiControlListener;
}
private:
static bool s_hasGUI;

View File

@@ -30,6 +30,11 @@
#include "midi_event_processor.h"
#include "midi_port.h"
#include "note.h"
#include <QString>
#include <QPair>
#include <QDomElement>
class QDomDocument;
class MidiControlListener : public MidiEventProcessor
{
@@ -37,13 +42,31 @@ public:
typedef enum
{
ActionNone = 0,
ActionControl,
ActionPlay,
ActionStop
} EventAction;
static const int numActions = 4;
typedef QMap<int, EventAction> ActionMap;
typedef struct
{
EventAction action;
QString name;
QString nameShort;
} ActionNameMap;
static const ActionNameMap actionNames[];
static ActionNameMap action2ActionNameMap( EventAction _action );
static ActionNameMap actionName2ActionNameMap( QString _actionName );
static void rememberConfiguration( QDomDocument &doc );
MidiControlListener();
virtual ~MidiControlListener();
public:
MidiControlListener( void );
virtual ~MidiControlListener( void );
virtual void processInEvent( const midiEvent & _me,
const midiTime & _time );
@@ -52,18 +75,80 @@ public:
{
}
void saveConfiguration( QDomDocument &doc );
void readConfiguration( void );
inline bool getEnabled( void )
{
return m_listenerEnabled;
}
inline void setEnabled( bool _enabled )
{
m_listenerEnabled = _enabled;
m_controlKeyCount = 0;
}
inline bool getUseControlKey( void )
{
return m_useControlKey;
}
inline void setUseControlKey( bool _useControlKey )
{
m_useControlKey = _useControlKey;
m_controlKeyCount = 0;
}
inline int getChannel( void )
{
return m_channel;
}
inline void setChannel( int _Channel )
{
m_channel = _Channel;
m_controlKeyCount = 0;
}
inline ActionMap getActionMapKeys( void )
{
return m_actionMapKeys;
}
inline void setActionMapKeys( ActionMap _keys )
{
m_actionMapKeys = _keys;
m_controlKeyCount = 0;
}
inline ActionMap getActionMapControllers( void )
{
return m_actionMapControllers;
}
inline void setActionMapControllers( ActionMap _controllers )
{
m_actionMapControllers = _controllers;
m_controlKeyCount = 0;
}
private:
static const QString configClass;
static QDomElement s_configTree;
void act( EventAction _action );
midiPort m_port;
bool m_controlKeyPressed; // flag, whether the control key is pressed
int m_controlKeyCount; // 0: no control key(s) pressed, 1-n: control keys pressed
// configuration
bool m_listenerEnabled; // turns feature on/off
int m_channel; // number of channel (0 - 15) or -1 for all channels
bool m_useControlKey; // true: use control key (two key sequence); false: single key sequence
int m_controlKey; // number of the control key (0 - NumKeys)
int m_controlChannel; // number of channel (0 - 15) or -1 for all channels
ActionMap m_actionMapKeys;
ActionMap m_actionMapControllers;
} ;