void RenderWidget::showEvent( QShowEvent* /*event*/ )
{
    if (!checkFlag(Window::eFlags_IsVisible))
    {
        raiseFlag(Window::eFlags_IsVisible);
        Shown();
    }
}
Example #2
0
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;
}
Example #3
0
void PreviewWindow::showEvent(QShowEvent *event)
{
    QDockWidget::showEvent(event);
    raise();
    emit Shown();
}