25 #include "ossinput_p.h" 31 static QString DEFAULT_PUBLIC_NAME(QLatin1String(
"MIDI In"));
33 OSSInputPrivate::OSSInputPrivate(
QObject *parent) :
QObject(parent),
34 m_inp(qobject_cast<OSSInput *>(parent)),
41 m_publicName(DEFAULT_PUBLIC_NAME)
46 void OSSInputPrivate::reloadDeviceList(
bool advanced)
50 m_advanced = advanced;
51 filters <<
"dmmidi*" <<
"admmidi*";
53 filters <<
"midi*" <<
"amidi*";
55 dir.setNameFilters(filters);
56 dir.setFilter(QDir::System);
57 dir.setSorting(QDir::Name);
58 m_inputDevices.clear();
59 QFileInfoList listInfo = dir.entryInfoList();
60 foreach(
const QFileInfo &info, listInfo) {
61 m_inputDevices << info.absoluteFilePath();
65 void OSSInputPrivate::open(QString portName)
67 QFile *f =
new QFile(portName);
68 m_currentInput = portName;
70 m_device->open( QIODevice::ReadOnly | QIODevice::Unbuffered );
71 m_notifier =
new QSocketNotifier(f->handle(), QSocketNotifier::Read);
72 m_parser =
new MIDIParser(m_inp);
74 connect(m_notifier, SIGNAL(activated(
int)),
this, SLOT(processIncomingMessages(
int)));
78 void OSSInputPrivate::close()
88 m_currentInput.clear();
91 void OSSInputPrivate::setMIDIThruDevice(MIDIOutput* device)
95 m_parser->setMIDIThruDevice(device);
99 void OSSInputPrivate::processIncomingMessages(
int)
102 m_device->getChar(&ch);
104 uchar uch =
static_cast<unsigned>(ch);
105 m_parser->parse(uch);
The QObject class is the base class of all Qt objects.