/** * \copydoc MythUIType::mediaEvent() */ void MythThemedMenu::mediaEvent(MythMediaEvent* event) { if (!event) return; MythMediaDevice *device = event->getDevice(); if (!device) return; MythMediaType type = device->getMediaType(); MythMediaStatus status = device->getStatus(); if ((status & ~MEDIASTAT_USEABLE) && (status & ~MEDIASTAT_MOUNTED)) return; switch (type) { case MEDIATYPE_DVD : // DVD Available break; case MEDIATYPE_BD : // Blu-ray Available break; default : return; } }
/** * Installed into the main window's event chain, * so that the main thread can safely jump to plugin code. */ bool MediaMonitor::eventFilter(QObject *obj, QEvent *event) { if (event->type() == MythMediaEvent::kEventType) { MythMediaDevice *pDev = ((MythMediaEvent*)event)->getDevice(); if (!pDev) { VERBOSE(VB_IMPORTANT, "MediaMonitor::eventFilter() got a bad media event?"); return true; } if (pDev->isUsable()) JumpToMediaHandler(pDev); else { // We don't want to jump around in the menus, but should // call each plugin's callback so it can track this change. QMap<QString, MHData>::Iterator itr = m_handlerMap.begin(); while (itr != m_handlerMap.end()) { if ((*itr).MythMediaType & (int)pDev->getMediaType()) (*itr).callback(pDev); itr++; } } return false; // Don't eat the event } // standard event processing return QObject::eventFilter(obj, event); }