Taskbar class cleanup.
This commit is contained in:
parent
d862ba853f
commit
4fec1b0aed
2 changed files with 51 additions and 53 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue