void ZMLivePlayer::setMonitorLayout(int layout, bool restore) { QStringList monList = gCoreContext->GetSetting("ZoneMinderLiveCameras", "").split(","); m_monitorLayout = layout; if (m_players) { stopPlayers(); delete m_players; } m_players = new vector<Player *>; m_monitorCount = 1; if (layout == 1) m_monitorCount = 1; else if (layout == 2) m_monitorCount = 2; else if (layout == 3) m_monitorCount = 4; else if (layout == 4) m_monitorCount = 9; hideAll(); uint monitorNo = 1; for (int x = 1; x <= m_monitorCount; x++) { Monitor *monitor = NULL; if (restore) { if (x <= (int) monList.size()) { QString s = monList.at(x - 1); int monID = s.toInt(); // try to find a monitor that matches the monID vector<Monitor*>::iterator i = m_monitors->begin(); for (; i != m_monitors->end(); i++) { if ((*i)->id == monID) { monitor = *i; break; } } } } if (!monitor) monitor = m_monitors->at(monitorNo - 1); MythUIImage *frameImage = dynamic_cast<MythUIImage *> (GetChild(QString("frame%1-%2").arg(layout).arg(x))); MythUIText *cameraText = dynamic_cast<MythUIText *> (GetChild(QString("name%1-%2").arg(layout).arg(x))); MythUIText *statusText = dynamic_cast<MythUIText *> (GetChild(QString("status%1-%2").arg(layout).arg(x))); Player *p = new Player(); p->setMonitor(monitor); p->setWidgets(frameImage, statusText, cameraText); p->updateCamera(); m_players->push_back(p); monitorNo++; if (monitorNo > m_monitors->size()) monitorNo = 1; } updateFrame(); }
void ZMLivePlayer::setMonitorLayout(int layout, bool restore) { QStringList monList; if (m_alarmMonitor != -1) monList.append(QString::number(m_alarmMonitor)); else monList = gCoreContext->GetSetting("ZoneMinderLiveCameras", "").split(","); m_monitorLayout = layout; if (m_players) { stopPlayers(); delete m_players; } m_players = new vector<Player *>; m_monitorCount = 1; if (layout == 1) m_monitorCount = 1; else if (layout == 2) m_monitorCount = 2; else if (layout == 3) m_monitorCount = 4; else if (layout == 4) m_monitorCount = 6; else if (layout == 5) m_monitorCount = 8; hideAll(); int monitorNo = 1; for (int x = 1; x <= m_monitorCount; x++) { Monitor *monitor = nullptr; if (restore) { if (x <= (int) monList.size()) { QString s = monList.at(x - 1); int monID = s.toInt(); // try to find a monitor that matches the monID monitor = ZMClient::get()->getMonitorByID(monID); } } if (!monitor) monitor = ZMClient::get()->getMonitorAt(monitorNo - 1); MythUIImage *frameImage = dynamic_cast<MythUIImage *> (GetChild(QString("frame%1-%2").arg(layout).arg(x))); MythUIText *cameraText = dynamic_cast<MythUIText *> (GetChild(QString("name%1-%2").arg(layout).arg(x))); MythUIText *statusText = dynamic_cast<MythUIText *> (GetChild(QString("status%1-%2").arg(layout).arg(x))); Player *p = new Player(); p->setMonitor(monitor); p->setWidgets(frameImage, statusText, cameraText); p->updateCamera(); m_players->push_back(p); monitorNo++; if (monitorNo > ZMClient::get()->getMonitorCount()) monitorNo = 1; } updateFrame(); }