/xbmc/utils/InfoLoader.cpp

http://github.com/xbmc/xbmc · C++ · 59 lines · 41 code · 10 blank · 8 comment · 4 complexity · 62d6949bfeba62fc9f1a689c833a198c MD5 · raw file

  1. /*
  2. * Copyright (C) 2005-2018 Team Kodi
  3. * This file is part of Kodi - https://kodi.tv
  4. *
  5. * SPDX-License-Identifier: GPL-2.0-or-later
  6. * See LICENSES/README.md for more information.
  7. */
  8. #include "InfoLoader.h"
  9. #include "JobManager.h"
  10. #include "TimeUtils.h"
  11. #include "guilib/LocalizeStrings.h"
  12. CInfoLoader::CInfoLoader(unsigned int timeToRefresh)
  13. {
  14. m_refreshTime = 0;
  15. m_timeToRefresh = timeToRefresh;
  16. m_busy = false;
  17. }
  18. CInfoLoader::~CInfoLoader() = default;
  19. void CInfoLoader::OnJobComplete(unsigned int jobID, bool success, CJob *job)
  20. {
  21. m_refreshTime = CTimeUtils::GetFrameTime() + m_timeToRefresh;
  22. m_busy = false;
  23. }
  24. std::string CInfoLoader::GetInfo(int info)
  25. {
  26. // Refresh if need be
  27. if (m_refreshTime < CTimeUtils::GetFrameTime() && !m_busy)
  28. { // queue up the job
  29. m_busy = true;
  30. CJobManager::GetInstance().AddJob(GetJob(), this);
  31. }
  32. if (m_busy && CTimeUtils::GetFrameTime() - m_refreshTime > 1000)
  33. {
  34. return BusyInfo(info);
  35. }
  36. return TranslateInfo(info);
  37. }
  38. std::string CInfoLoader::BusyInfo(int info) const
  39. {
  40. return g_localizeStrings.Get(503);
  41. }
  42. std::string CInfoLoader::TranslateInfo(int info) const
  43. {
  44. return "";
  45. }
  46. void CInfoLoader::Refresh()
  47. {
  48. m_refreshTime = CTimeUtils::GetFrameTime();
  49. }