Save and load MIDI control listener settings
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit is contained in:
committed by
Tobias Doerffel
parent
8395c9428c
commit
57d4024c2a
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
} ;
|
||||
|
||||
Reference in New Issue
Block a user