[cosmetics] update date in GPL header
[vuplus_xbmc] / xbmc / dialogs / GUIDialogExtendedProgressBar.h
1 #pragma once
2 /*
3  *      Copyright (C) 2012-2013 Team XBMC
4  *      http://www.xbmc.org
5  *
6  *  This Program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2, or (at your option)
9  *  any later version.
10  *
11  *  This Program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with XBMC; see the file COPYING.  If not, see
18  *  <http://www.gnu.org/licenses/>.
19  *
20  */
21
22 #include "guilib/GUIDialog.h"
23
24 class CGUIDialogProgressBarHandle
25 {
26 public:
27   CGUIDialogProgressBarHandle(const std::string &strTitle) :
28     m_fPercentage(0),
29     m_strTitle(strTitle),
30     m_bFinished(false) {}
31   virtual ~CGUIDialogProgressBarHandle(void) {}
32
33   const std::string &Title(void) { return m_strTitle; }
34   void SetTitle(const std::string &strTitle);
35
36   std::string Text(void) const;
37   void SetText(const std::string &strText);
38
39   bool IsFinished(void) const { return m_bFinished; }
40   void MarkFinished(void)     { m_bFinished = true; }
41
42   float Percentage(void) const          { return m_fPercentage;}
43   void SetPercentage(float fPercentage) { m_fPercentage = fPercentage; }
44   void SetProgress(int currentItem, int itemCount);
45
46 private:
47   CCriticalSection  m_critSection;
48   float             m_fPercentage;
49   std::string       m_strTitle;
50   std::string       m_strText;
51   bool              m_bFinished;
52 };
53
54 class CGUIDialogExtendedProgressBar : public CGUIDialog
55 {
56 public:
57   CGUIDialogExtendedProgressBar(void);
58   virtual ~CGUIDialogExtendedProgressBar(void) {};
59   virtual bool OnMessage(CGUIMessage& message);
60   virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
61
62   CGUIDialogProgressBarHandle *GetHandle(const std::string &strTitle);
63
64 protected:
65   void UpdateState(unsigned int currentTime);
66
67   CCriticalSection                           m_critSection;
68   unsigned int                               m_iCurrentItem;
69   unsigned int                               m_iLastSwitchTime;
70   std::vector<CGUIDialogProgressBarHandle *> m_handles;
71 };