xbmc
GUIDialogExtendedProgressBar.h
1 /*
2  * Copyright (C) 2012-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 
9 #pragma once
10 
11 #include "guilib/GUIDialog.h"
12 
13 #include <string>
14 #include <vector>
15 
17 {
18 public:
19  explicit CGUIDialogProgressBarHandle(const std::string &strTitle) :
20  m_fPercentage(0),
21  m_strTitle(strTitle),
22  m_bFinished(false) {}
23  virtual ~CGUIDialogProgressBarHandle(void) = default;
24 
25  const std::string &Title(void) { return m_strTitle; }
26  void SetTitle(const std::string &strTitle);
27 
28  std::string Text(void) const;
29  void SetText(const std::string &strText);
30 
31  bool IsFinished(void) const { return m_bFinished; }
32  void MarkFinished(void) { m_bFinished = true; }
33 
34  float Percentage(void) const { return m_fPercentage;}
35  void SetPercentage(float fPercentage) { m_fPercentage = fPercentage; }
36  void SetProgress(int currentItem, int itemCount);
37 
38 private:
39  mutable CCriticalSection m_critSection;
40  float m_fPercentage;
41  std::string m_strTitle;
42  std::string m_strText;
43  bool m_bFinished;
44 };
45 
47 {
48 public:
50  ~CGUIDialogExtendedProgressBar(void) override = default;
51  bool OnMessage(CGUIMessage& message) override;
52  void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions) override;
53 
54  CGUIDialogProgressBarHandle *GetHandle(const std::string &strTitle);
55 
56 protected:
57  void UpdateState(unsigned int currentTime);
58 
59  CCriticalSection m_critSection;
60  unsigned int m_iCurrentItem;
61  unsigned int m_iLastSwitchTime;
62  std::vector<CGUIDialogProgressBarHandle *> m_handles;
63 };
Definition: GUIDialogExtendedProgressBar.h:46
Definition: GUIDialog.h:35
Definition: GUIMessage.h:365
Definition: GUIDialogExtendedProgressBar.h:16