void RenderWidget::showEvent( QShowEvent* /*event*/ ) { if (!checkFlag(Window::eFlags_IsVisible)) { raiseFlag(Window::eFlags_IsVisible); Shown(); } }
eOSState cOsdInfoWindow::ProcessKey(eKeys key) { time_t curTime; switch (key) { case k0: if (m_Number == 0) { m_Group = -1; Hide(); return osUnknown; } case k1...k9: if (m_Number >= 0) { m_Number = m_Number * 10 + key - k0; if (m_Number > 0) { cChannel *channel = Channels.GetByNumber(m_Number); m_Channel = channel; m_WithInfo = false; Show(false, (OsdPipSetup.ShowInfo==0)); // Lets see if there can be any useful further input: int n = channel ? m_Number * 10 : 0; while (channel && (channel = Channels.Next(channel)) != NULL) { if (!channel->GroupSep()) { if (n <= channel->Number() && channel->Number() <= n + 9) { n = 0; break; } if (channel->Number() > n) n *= 10; } } if (n > 0) { // This channel is the only one that fits the input, so let's take it right away: int number = m_Number; m_Number = 0; m_Group = -1; m_WithInfo = true; Channels.SwitchTo(number); } } } return osContinue; case kLeft | k_Repeat: case kLeft: case kRight | k_Repeat: case kRight: m_WithInfo = false; if (m_Group < 0) { cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); if (channel) m_Group = channel->Index(); } if (m_Group >= 0) { int SaveGroup = m_Group; if (NORMALKEY(key) == kRight) m_Group = Channels.GetNextGroup(m_Group); else m_Group = Channels.GetPrevGroup(m_Group < 1 ? 1 : m_Group); if (m_Group < 0) m_Group = SaveGroup; cChannel *channel = Channels.Get(m_Group); if (channel) { m_Channel = channel; Show(false, (OsdPipSetup.ShowInfo==0)); if (!channel->GroupSep()) m_Group = -1; } } return osContinue; case kUp | k_Repeat: case kUp: case kDown | k_Repeat: case kDown: //std::cout << "cOsdInfoWindow::ProcessKey, vor cDevice::SwitchChannel" << std::endl; if (cDevice::SwitchChannel(NORMALKEY(key) == kUp ? 1 : -1)); SetChannel(Channels.GetByNumber(cDevice::CurrentChannel()), false); //std::cout << "cOsdInfoWindow::ProcessKey, nach cDevice::SwitchChannel" << std::endl; m_WithInfo = true; m_Number = 0; m_Group = -1; Show(false, (OsdPipSetup.ShowInfo==0)); return osContinue; //case kChanUp|k_Repeat: //case kChanUp: //case kChanDn|k_Repeat: //case kChanDn: // m_WithInfo = true; // m_Number = 0; // m_Group = -1; // return osContinue;//osUnknown; case kNone: if (Shown()) { time(&curTime); if (m_Number && curTime - m_LastTime > DIRECTCHANNELTIMEOUT) { if (Channels.GetByNumber(m_Number)) { int number = m_Number; m_Number = 0; m_Group = -1; //std::cout << "cOsdInfoWindow::ProcessKey, vor Channels.SwitchTo" << std::endl; /* TB: only switch the channel if we are in live-view-mode, not when replaying recordings */ if(cDevice::PrimaryDevice()->Transferring()) { Channels.SwitchTo(number); } } else { m_Number = 0; m_Group = -1; m_Channel = NULL; Show(false, (OsdPipSetup.ShowInfo==0)); m_Channel = Channels.Get(cDevice::CurrentChannel()); m_WithInfo = true; return osContinue; } return osContinue; } } break; case kOk: if (Shown()) { if (m_Group >= 0) { int group = m_Group; m_Group = -1; m_Number = 0; Channels.SwitchTo(Channels.Get(Channels.GetNextNormal(group))->Number()); } else { m_Group = -1; m_Number = 0; m_Channel = Channels.Get(cDevice::CurrentChannel()); m_WithInfo = true; Hide(); } return osContinue; } break; default: return osUnknown; } if (Shown()) { time(&curTime); if (curTime - m_LastTime >= INFOTIMEOUT) { m_Group = -1; m_Number = 0; Hide(); } return osContinue; } return osContinue; }
void PreviewWindow::showEvent(QShowEvent *event) { QDockWidget::showEvent(event); raise(); emit Shown(); }