void CGUIDialogSeekBar::FrameMove() { if (!g_application.m_pPlayer) { Close(true); return; } // update controls if (!g_application.GetSeekHandler()->InProgress() && !g_infoManager.m_performingSeek) { // position the bar at our current time CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider && g_infoManager.GetTotalPlayTime()) pSlider->SetPercentage((float)g_infoManager.GetPlayTime()/g_infoManager.GetTotalPlayTime() * 0.1f); CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(g_infoManager.GetCurrentPlayTime()); OnMessage(msg); } else { CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider) pSlider->SetPercentage(g_application.GetSeekHandler()->GetPercent()); CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(g_infoManager.GetCurrentSeekTime()); OnMessage(msg); } CGUIDialog::FrameMove(); }
void CGUIDialogSeekBar::FrameMove() { #if defined(__VIDONME_MEDIACENTER__) if (VidOnMe::VDMUtils::Instance().GetRunningMode() == VidOnMe::RM_VIDONME) { return; } #endif if (!g_application.m_pPlayer) { Close(true); return; } // update controls if (!g_application.GetSeekHandler()->InProgress() && !g_infoManager.m_performingSeek) { // position the bar at our current time CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider && g_infoManager.GetTotalPlayTime()) pSlider->SetPercentage((float)g_infoManager.GetPlayTime()/g_infoManager.GetTotalPlayTime() * 0.1f); CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(g_infoManager.GetCurrentPlayTime()); OnMessage(msg); } else { CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider) pSlider->SetPercentage(g_application.GetSeekHandler()->GetPercent()); CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(g_infoManager.GetCurrentSeekTime()); OnMessage(msg); } CGUIDialog::FrameMove(); }
void Interface_GUIControlSlider::SetPercentage(void* kodiBase, void* handle, float percent) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); if (!addon) { CLog::Log(LOGERROR, "ADDON::Interface_GUIControlSlider::%s - invalid data", __FUNCTION__); return; } if (!handle) { CLog::Log(LOGERROR, "ADDON::Interface_GUIControlSlider::%s - invalid handler data on addon '%s'", __FUNCTION__, addon->ID().c_str()); return; } CGUISliderControl* pControl = static_cast<CGUISliderControl *>(handle); pControl->SetType(SLIDER_CONTROL_TYPE_PERCENTAGE); pControl->SetPercentage(percent); }
bool CGUIDialogSeekBar::OnAction(const CAction &action) { if (action.GetID() == ACTION_ANALOG_SEEK_FORWARD || action.GetID() == ACTION_ANALOG_SEEK_BACK) { if (!m_bRequireSeek) { // start of seeking if (g_infoManager.GetTotalPlayTime()) m_fSeekPercentage = (float)g_infoManager.GetPlayTime() / g_infoManager.GetTotalPlayTime() * 0.1f; else m_fSeekPercentage = 0.0f; // tell info manager that we have started a seekbar operation m_bRequireSeek = true; g_infoManager.SetSeeking(true); } // calculate our seek amount if (g_application.m_pPlayer && !g_infoManager.m_performingSeek) { //100% over 1 second. float speed = 100.0f; if( action.GetRepeat() ) speed *= action.GetRepeat(); else speed /= g_infoManager.GetFPS(); if (action.GetID() == ACTION_ANALOG_SEEK_FORWARD) m_fSeekPercentage += action.GetAmount() * action.GetAmount() * speed; else m_fSeekPercentage -= action.GetAmount() * action.GetAmount() * speed; if (m_fSeekPercentage > 100.0f) m_fSeekPercentage = 100.0f; if (m_fSeekPercentage < 0.0f) m_fSeekPercentage = 0.0f; CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider) pSlider->SetPercentage((int)m_fSeekPercentage); // Update our seek bar accordingly } ResetTimer(); return true; } return CGUIDialog::OnAction(action); }
void CGUIDialogSeekBar::FrameMove() { if (!g_application.m_pPlayer) { Close(true); return; } // check if we should seek or exit if (!g_infoManager.m_performingSeek && CTimeUtils::GetFrameTime() - m_timer > SEEK_BAR_DISPLAY_TIME) g_infoManager.SetSeeking(false); // render our controls if (!m_bRequireSeek && !g_infoManager.m_performingSeek) { // position the bar at our current time CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider && g_infoManager.GetTotalPlayTime()) pSlider->SetPercentage((int)((float)g_infoManager.GetPlayTime()/g_infoManager.GetTotalPlayTime() * 0.1f)); CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(g_infoManager.GetCurrentPlayTime()); OnMessage(msg); } else { CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), POPUP_SEEK_LABEL); msg.SetLabel(GetSeekTimeLabel()); OnMessage(msg); } // Check for seek timeout, and perform the seek if (m_bRequireSeek && CTimeUtils::GetFrameTime() - m_timer > SEEK_BAR_SEEK_TIME) { g_infoManager.m_performingSeek = true; double time = g_infoManager.GetTotalPlayTime() * m_fSeekPercentage * 0.01; g_application.SeekTime(time); m_bRequireSeek = false; } CGUIDialog::FrameMove(); }
bool CGUIDialogSeekBar::OnAction(const CAction &action) { if (action.wID == ACTION_ANALOG_SEEK_FORWARD || action.wID == ACTION_ANALOG_SEEK_BACK) { if (!m_bRequireSeek) { // start of seeking if (g_infoManager.GetTotalPlayTime()) m_fSeekPercentage = (float)g_infoManager.GetPlayTime() / g_infoManager.GetTotalPlayTime() * 0.1f; else m_fSeekPercentage = 0.0f; // tell info manager that we have started a seekbar operation m_bRequireSeek = true; g_infoManager.SetSeeking(true); } // calculate our seek amount if (g_application.m_pPlayer && !g_infoManager.m_performingSeek) { // 100% over a couple seconds. float speed = 1.0f; // This is a bit of hack right now, to match what we're getting. m_fSeekPercentage += action.fAmount1 * speed; if (m_fSeekPercentage > 100.0f) m_fSeekPercentage = 100.0f; if (m_fSeekPercentage < 0.0f) m_fSeekPercentage = 0.0f; CGUISliderControl *pSlider = (CGUISliderControl*)GetControl(POPUP_SEEK_SLIDER); if (pSlider) pSlider->SetPercentage((int)m_fSeekPercentage); // Update our seek bar accordingly } ResetTimer(); return true; } return CGUIDialog::OnAction(action); }