Revise progress releted API to be more usual.

- Add PulseProgress
- Add SetProgressRange, instead of hard coding 100.

Author: Chaobin Zhang

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Bryan Petty
2014-09-10 14:51:09 +00:00
parent 84e1760c4e
commit ffd2e750cd
4 changed files with 29 additions and 4 deletions

View File

@@ -21,7 +21,9 @@ class wxTaskBarButtonImpl : public wxTaskBarButton {
public: public:
virtual ~wxTaskBarButtonImpl(); virtual ~wxTaskBarButtonImpl();
virtual void SetProgressRange(int range) wxOVERRIDE;
virtual void SetProgressValue(int value) wxOVERRIDE; virtual void SetProgressValue(int value) wxOVERRIDE;
virtual void PulseProgress() wxOVERRIDE;
virtual void Show(bool show = true) wxOVERRIDE; virtual void Show(bool show = true) wxOVERRIDE;
virtual void Hide() wxOVERRIDE; virtual void Hide() wxOVERRIDE;
virtual void SetThumbnailTooltip(const wxString& tooltip) wxOVERRIDE; virtual void SetThumbnailTooltip(const wxString& tooltip) wxOVERRIDE;
@@ -43,6 +45,8 @@ private:
typedef wxVector<wxThumbBarButton*> wxThumbBarButtons; typedef wxVector<wxThumbBarButton*> wxThumbBarButtons;
wxThumbBarButtons m_thumbBarButtons; wxThumbBarButtons m_thumbBarButtons;
int m_progressRange;
bool m_hasShownThumbnailToolbar; bool m_hasShownThumbnailToolbar;
}; };

View File

@@ -54,7 +54,9 @@ public:
virtual ~wxTaskBarButton() { } virtual ~wxTaskBarButton() { }
// Operations: // Operations:
virtual void SetProgressRange(int range) = 0;
virtual void SetProgressValue(int value) = 0; virtual void SetProgressValue(int value) = 0;
virtual void PulseProgress() = 0;
virtual void Show(bool show = true) = 0; virtual void Show(bool show = true) = 0;
virtual void Hide() = 0; virtual void Hide() = 0;
virtual void SetThumbnailTooltip(const wxString& tooltip) = 0; virtual void SetThumbnailTooltip(const wxString& tooltip) = 0;

View File

@@ -262,6 +262,13 @@ wxEND_EVENT_TABLE()
void MyFrame::OnSetProgressValue(wxScrollEvent& WXUNUSED(event)) void MyFrame::OnSetProgressValue(wxScrollEvent& WXUNUSED(event))
{ {
static bool s_hasRangeSet = false;
if ( !s_hasRangeSet )
{
MSWGetTaskBarButton()->SetProgressRange(100);
s_hasRangeSet = true;
}
MSWGetTaskBarButton()->SetProgressValue(m_slider->GetValue()); MSWGetTaskBarButton()->SetProgressValue(m_slider->GetValue());
} }

View File

@@ -30,7 +30,10 @@ wxThumbBarButton::wxThumbBarButton(int id,
} }
wxTaskBarButtonImpl::wxTaskBarButtonImpl(WXWidget parent) wxTaskBarButtonImpl::wxTaskBarButtonImpl(WXWidget parent)
: m_hwnd(parent), m_taskbarList(NULL), m_hasShownThumbnailToolbar(false) : m_hwnd(parent),
m_taskbarList(NULL),
m_progressRange(0),
m_hasShownThumbnailToolbar(false)
{ {
HRESULT hr = CoCreateInstance HRESULT hr = CoCreateInstance
( (
@@ -68,12 +71,21 @@ wxTaskBarButtonImpl::~wxTaskBarButtonImpl()
m_thumbBarButtons.clear(); m_thumbBarButtons.clear();
} }
void wxTaskBarButtonImpl::SetProgressRange(int range)
{
m_progressRange = range;
if ( m_progressRange == 0 )
SetProgressState(wxTASKBAR_BUTTON_NO_PROGRESS);
}
void wxTaskBarButtonImpl::SetProgressValue(int value) void wxTaskBarButtonImpl::SetProgressValue(int value)
{ {
wxCHECK_RET( value >= 0 && value <= 100, m_taskbarList->SetProgressValue(m_hwnd, value, m_progressRange);
wxT("Invalid value, must be in the range of [0, 100].") ); }
m_taskbarList->SetProgressValue(m_hwnd, value, 100); void wxTaskBarButtonImpl::PulseProgress()
{
SetProgressState(wxTASKBAR_BUTTON_INDETERMINATE);
} }
void wxTaskBarButtonImpl::Show(bool show) void wxTaskBarButtonImpl::Show(bool show)