bool qjackctlConnect::disconnectSelectedEx (void) { QTreeWidgetItem *pOItem = (m_pOClientList->listView())->currentItem(); if (pOItem == NULL) return false; QTreeWidgetItem *pIItem = (m_pIClientList->listView())->currentItem(); if (pIItem == NULL) return false; if (pOItem->type() == QJACKCTL_CLIENTITEM) { qjackctlClientItem *pOClient = static_cast<qjackctlClientItem *> (pOItem); if (pIItem->type() == QJACKCTL_CLIENTITEM) { // Each-to-each connections... qjackctlClientItem *pIClient = static_cast<qjackctlClientItem *> (pIItem); QListIterator<qjackctlPortItem *> oport(pOClient->ports()); QListIterator<qjackctlPortItem *> iport(pIClient->ports()); while (oport.hasNext() && iport.hasNext()) { qjackctlPortItem *pOPort = oport.next(); qjackctlPortItem *pIPort = iport.next(); disconnectPortsEx(pOPort, pIPort); } } else { // Many(all)-to-one/many connection... QListIterator<qjackctlPortItem *> oport(pOClient->ports()); while (oport.hasNext() && pIItem && pIItem->type() == QJACKCTL_PORTITEM) { qjackctlPortItem *pOPort = oport.next(); qjackctlPortItem *pIPort = static_cast<qjackctlPortItem *> (pIItem); disconnectPortsEx(pOPort, pIPort); pIItem = (m_pIClientList->listView())->itemBelow(pIItem); } } } else { qjackctlPortItem *pOPort = static_cast<qjackctlPortItem *> (pOItem); if (pIItem->type() == QJACKCTL_CLIENTITEM) { // One-to-many(all) connection... qjackctlClientItem *pIClient = static_cast<qjackctlClientItem *> (pIItem); QListIterator<qjackctlPortItem *> iport(pIClient->ports()); while (iport.hasNext()) { qjackctlPortItem *pIPort = iport.next(); disconnectPortsEx(pOPort, pIPort); } } else { // One-to-one connection... qjackctlPortItem *pIPort = static_cast<qjackctlPortItem *> (pIItem); disconnectPortsEx(pOPort, pIPort); } } return true; }
// Update port connection references. void qjackctlAlsaConnect::updateConnections (void) { #ifdef CONFIG_ALSA_SEQ qjackctlMainForm *pMainForm = qjackctlMainForm::getInstance(); if (pMainForm == NULL) return; snd_seq_t *pAlsaSeq = pMainForm->alsaSeq(); if (pAlsaSeq == NULL) return; snd_seq_query_subscribe_t *pAlsaSubs; snd_seq_addr_t seq_addr; snd_seq_query_subscribe_alloca(&pAlsaSubs); // Proper type casts. qjackctlAlsaClientList *pOClientList = static_cast<qjackctlAlsaClientList *> (OClientList()); qjackctlAlsaClientList *pIClientList = static_cast<qjackctlAlsaClientList *> (IClientList()); // For each output client item... QListIterator<qjackctlClientItem *> oclient(pOClientList->clients()); while (oclient.hasNext()) { qjackctlClientItem *pOClient = oclient.next(); // For each output port item... QListIterator<qjackctlPortItem *> oport(pOClient->ports()); while (oport.hasNext()) { qjackctlPortItem *pOPort = oport.next(); // Are there already any connections? if (pOPort->connects().count() > 0) continue; // Hava a proper type cast. qjackctlAlsaPort *pOAlsa = static_cast<qjackctlAlsaPort *> (pOPort); // Get port connections... snd_seq_query_subscribe_set_type(pAlsaSubs, SND_SEQ_QUERY_SUBS_READ); snd_seq_query_subscribe_set_index(pAlsaSubs, 0); seq_addr.client = pOAlsa->alsaClient(); seq_addr.port = pOAlsa->alsaPort(); snd_seq_query_subscribe_set_root(pAlsaSubs, &seq_addr); while (snd_seq_query_port_subscribers(pAlsaSeq, pAlsaSubs) >= 0) { seq_addr = *snd_seq_query_subscribe_get_addr(pAlsaSubs); qjackctlPortItem *pIPort = pIClientList->findClientPort( seq_addr.client, seq_addr.port); if (pIPort) { pOPort->addConnect(pIPort); pIPort->addConnect(pOPort); } snd_seq_query_subscribe_set_index(pAlsaSubs, snd_seq_query_subscribe_get_index(pAlsaSubs) + 1); } } } #endif // CONFIG_ALSA_SEQ }
bool qjackctlConnect::canDisconnectAllEx (void) { QListIterator<qjackctlClientItem *> iter(m_pOClientList->clients()); while (iter.hasNext()) { qjackctlClientItem *pOClient = iter.next(); QListIterator<qjackctlPortItem *> oport(pOClient->ports()); while (oport.hasNext()) { qjackctlPortItem *pOPort = oport.next(); if (pOPort->connects().count() > 0) return true; } } return false; }
bool qjackctlConnect::disconnectAllEx (void) { QListIterator<qjackctlClientItem *> iter(m_pOClientList->clients()); while (iter.hasNext()) { qjackctlClientItem *pOClient = iter.next(); QListIterator<qjackctlPortItem *> oport(pOClient->ports()); while (oport.hasNext()) { qjackctlPortItem *pOPort = oport.next(); QListIterator<qjackctlPortItem *> iport(pOPort->connects()); while (iport.hasNext()) { qjackctlPortItem *pIPort = iport.next(); disconnectPortsEx(pOPort, pIPort); } } } return true; }
sclkhi() { sclk = 1; oport(); del(del_hi); }
sdilo() { sdi = 0; oport(); del(del_lo); }
sdihi() { sdi = 1; oport(); del(del_hi); }
send_lo() { sclk = 1; oport(); del(del_hi); sclk = 0; oport(); del(del_lo); };
sclklo() { sclk = 0; oport(); del(del_lo); }
bool qjackctlConnect::canConnectSelectedEx (void) { // Take this opportunity to highlight any current selections. m_pOClientList->hiliteClientPorts(); m_pIClientList->hiliteClientPorts(); m_pConnectView->connectorView()->update(); // Now with our predicate work... QTreeWidgetItem *pOItem = (m_pOClientList->listView())->currentItem(); if (pOItem == NULL) return false; QTreeWidgetItem *pIItem = (m_pIClientList->listView())->currentItem(); if (pIItem == NULL) return false; if (pOItem->type() == QJACKCTL_CLIENTITEM) { qjackctlClientItem *pOClient = static_cast<qjackctlClientItem *> (pOItem); if (pIItem->type() == QJACKCTL_CLIENTITEM) { // Each-to-each connections... qjackctlClientItem *pIClient = static_cast<qjackctlClientItem *> (pIItem); QListIterator<qjackctlPortItem *> oport(pOClient->ports()); QListIterator<qjackctlPortItem *> iport(pIClient->ports()); while (oport.hasNext() && iport.hasNext()) { qjackctlPortItem *pOPort = oport.next(); qjackctlPortItem *pIPort = iport.next(); if (pOPort->findConnectPtr(pIPort) == NULL) return true; } } else { // Many(all)-to-one/many connection... QListIterator<qjackctlPortItem *> oport(pOClient->ports()); while (oport.hasNext() && pIItem && pIItem->type() == QJACKCTL_PORTITEM) { qjackctlPortItem *pOPort = oport.next(); qjackctlPortItem *pIPort = static_cast<qjackctlPortItem *> (pIItem); if (pOPort->findConnectPtr(pIPort) == NULL) return true; pIItem = (m_pIClientList->listView())->itemBelow(pIItem); } } } else { qjackctlPortItem *pOPort = static_cast<qjackctlPortItem *> (pOItem); if (pIItem->type() == QJACKCTL_CLIENTITEM) { // One-to-many(all) connection... qjackctlClientItem *pIClient = static_cast<qjackctlClientItem *> (pIItem); QListIterator<qjackctlPortItem *> iport(pIClient->ports()); while (iport.hasNext()) { qjackctlPortItem *pIPort = iport.next(); if (pOPort->findConnectPtr(pIPort) == NULL) return true; } } else { // One-to-one connection... qjackctlPortItem *pIPort = static_cast<qjackctlPortItem *> (pIItem); return (pOPort->findConnectPtr(pIPort) == NULL); } } return false; }