Taskbar class cleanup.

This commit is contained in:
XMRig 2022-08-16 17:54:33 +07:00
parent d862ba853f
commit 4fec1b0aed
No known key found for this signature in database
GPG key ID: 446A53638BE94409
2 changed files with 51 additions and 53 deletions

View file

@ -28,80 +28,80 @@
namespace xmrig { namespace xmrig {
struct TaskbarPrivate class Taskbar::Private
{ {
TaskbarPrivate() public:
XMRIG_DISABLE_COPY_MOVE(Private)
Private()
{ {
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (hr < 0) { if (hr < 0) {
return; return;
} }
hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_taskbar)); hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&taskbar));
if (hr < 0) { if (hr < 0) {
return; return;
} }
hr = m_taskbar->HrInit(); hr = taskbar->HrInit();
if (hr < 0) { if (hr < 0) {
m_taskbar->Release(); taskbar->Release();
m_taskbar = nullptr; taskbar = nullptr;
return; return;
} }
m_consoleWnd = GetConsoleWindow(); console = GetConsoleWindow();
} }
~TaskbarPrivate() ~Private()
{ {
if (m_taskbar) { if (taskbar) {
m_taskbar->Release(); taskbar->Release();
} }
CoUninitialize(); CoUninitialize();
} }
ITaskbarList3* m_taskbar = nullptr; void update()
HWND m_consoleWnd = nullptr; {
if (taskbar) {
if (active) {
taskbar->SetProgressState(console, enabled ? TBPF_NOPROGRESS : TBPF_PAUSED);
taskbar->SetProgressValue(console, enabled ? 0 : 1, 1);
}
else {
taskbar->SetProgressState(console, TBPF_ERROR);
taskbar->SetProgressValue(console, 1, 1);
}
}
}
bool active = false;
bool enabled = true;
HWND console = nullptr;
ITaskbarList3 *taskbar = nullptr;
}; };
Taskbar::Taskbar() : d_ptr(new TaskbarPrivate()) Taskbar::Taskbar() :
d(std::make_shared<Private>())
{ {
} }
Taskbar::~Taskbar()
{
delete d_ptr;
}
void Taskbar::setActive(bool active) void Taskbar::setActive(bool active)
{ {
m_active = active; d->active = active;
updateTaskbarColor(); d->update();
} }
void Taskbar::setEnabled(bool enabled) void Taskbar::setEnabled(bool enabled)
{ {
m_enabled = enabled; d->enabled = enabled;
updateTaskbarColor(); d->update();
}
void Taskbar::updateTaskbarColor()
{
if (d_ptr->m_taskbar) {
if (m_active) {
d_ptr->m_taskbar->SetProgressState(d_ptr->m_consoleWnd, m_enabled ? TBPF_NOPROGRESS : TBPF_PAUSED);
d_ptr->m_taskbar->SetProgressValue(d_ptr->m_consoleWnd, m_enabled ? 0 : 1, 1);
}
else {
d_ptr->m_taskbar->SetProgressState(d_ptr->m_consoleWnd, TBPF_ERROR);
d_ptr->m_taskbar->SetProgressValue(d_ptr->m_consoleWnd, 1, 1);
}
}
} }
@ -114,10 +114,9 @@ void Taskbar::updateTaskbarColor()
namespace xmrig { namespace xmrig {
Taskbar::Taskbar() {} Taskbar::Taskbar() = default;
Taskbar::~Taskbar() {} void Taskbar::setActive(bool) {}
void Taskbar::setActive(bool) {} void Taskbar::setEnabled(bool) {}
void Taskbar::setEnabled(bool) {}
} // namespace xmrig } // namespace xmrig

View file

@ -20,32 +20,31 @@
#define XMRIG_TASKBAR_H #define XMRIG_TASKBAR_H
#include "base/tools/Object.h"
namespace xmrig { namespace xmrig {
struct TaskbarPrivate;
class Taskbar class Taskbar
{ {
public: public:
XMRIG_DISABLE_COPY_MOVE(Taskbar)
Taskbar(); Taskbar();
~Taskbar(); ~Taskbar() = default;
void setActive(bool active); void setActive(bool active);
void setEnabled(bool enabled); void setEnabled(bool enabled);
private: private:
bool m_active = false; # ifdef _WIN32
bool m_enabled = true; XMRIG_DECL_PRIVATE()
# endif
TaskbarPrivate* d_ptr = nullptr;
void updateTaskbarColor();
}; };
} // namespace xmrig } // namespace xmrig
#endif /* XMRIG_TASKBAR_H */ #endif // XMRIG_TASKBAR_H