![]() |
Mixxx
|
00001 #ifndef _MIXXXCONTROL_H_ 00002 #define _MIXXXCONTROL_H_ 00003 00004 #include <QDebug> 00005 #include "configobject.h" 00006 00007 typedef enum { 00008 MIDI_OPT_NORMAL = 0, 00009 MIDI_OPT_INVERT = 1, 00010 MIDI_OPT_ROT64 = 2, 00011 MIDI_OPT_ROT64_INV = 3, 00012 MIDI_OPT_ROT64_FAST = 4, 00013 MIDI_OPT_DIFF = 5, 00014 MIDI_OPT_BUTTON = 6, // Button Down (!=00) and Button Up (00) events happen together 00015 MIDI_OPT_SWITCH = 7, // Button Down (!=00) and Button Up (00) events happen seperately 00016 MIDI_OPT_HERC_JOG = 8, // Generic hercules wierd range correction 00017 MIDI_OPT_SPREAD64 = 9, // Accelerated difference from 64 00018 MIDI_OPT_SELECTKNOB = 10,// Relative knob which can be turned forever and outputs a signed value. 00019 00020 MIDI_OPT_SOFT_TAKEOVER = 40,// Prevents sudden changes when hardware position differs from software value 00021 00022 MIDI_OPT_SCRIPT = 50,// Maps a MIDI control to a custom MixxxScript function 00023 } MidiOption; 00024 00027 class MixxxControl 00028 { 00029 public: 00030 MixxxControl(QString controlobject_group="", QString controlobject_value="", 00031 QString controlobject_description="", 00032 MidiOption midioption=MIDI_OPT_NORMAL); 00033 MixxxControl(QDomElement& controlNode, bool isOutputNode=false); 00034 ~MixxxControl() {}; 00035 void setControlObjectGroup(QString controlobject_group) { m_strCOGroup = controlobject_group; }; 00036 void setControlObjectValue(QString controlobject_value) { m_strCOValue = controlobject_value; }; 00037 void setControlObjectDescription(QString controlobject_description) { m_strCODescription = controlobject_description; }; 00038 void setMidiOption(MidiOption midioption) { m_midiOption = midioption; }; 00039 void setThresholdMinimum(float min) { m_thresholdMinimum = min; }; 00040 void setThresholdMaximum(float max) { m_thresholdMaximum = max; }; 00041 QString getControlObjectGroup() const { return m_strCOGroup; }; 00042 QString getControlObjectValue() const { return m_strCOValue; }; 00043 QString getControlObjectDescription() const { return m_strCODescription; }; 00044 MidiOption getMidiOption() const { return m_midiOption; }; 00045 float getThresholdMinimum() const { return m_thresholdMinimum; }; 00046 float getThresholdMaximum() const { return m_thresholdMaximum; }; 00047 void serializeToXML(QDomElement& parentNode, bool isOutputNode=false) const; 00048 bool operator==(const MixxxControl& other) const { 00049 return ((m_strCOGroup == other.getControlObjectGroup()) && 00050 (m_strCOValue == other.getControlObjectValue()) && 00051 (m_strCODescription == other.getControlObjectDescription()) && 00052 (m_midiOption == other.getMidiOption())); 00053 }; 00054 bool isNull() { return (m_strCOGroup == "" && m_strCOValue == ""); }; 00055 private: 00056 QString m_strCOGroup; 00057 QString m_strCOValue; 00058 QString m_strCODescription; 00059 MidiOption m_midiOption; 00060 00064 float m_thresholdMinimum; 00065 float m_thresholdMaximum; 00066 }; 00067 00068 inline bool operator<(const MixxxControl &first, const MixxxControl &second) 00069 { 00070 return ((first.getControlObjectGroup() + first.getControlObjectValue()) < 00071 (second.getControlObjectGroup() + second.getControlObjectValue())); 00072 } 00073 00075 uint qHash(const MixxxControl& key); 00076 00077 /* 00078 QDebug operator<<(QDebug dbg, MixxxControl& control) 00079 { 00080 dbg.space() << control.getControlObjectGroup(); 00081 dbg.space() << control.getControlObjectValue(); 00082 dbg.space() << control.getMidiOption(); 00083 00084 return dbg.space(); 00085 }*/ 00086 00087 #endif 00088