// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #include "wintaskbarprogress.hpp" #ifdef Q_OS_WIN WinTaskbarProgress::WinTaskbarProgress(QWidget *parent) : QObject(parent), taskBarListHandler(nullptr), nativeHandle(HWND(parent->winId())) {} WinTaskbarProgress::~WinTaskbarProgress() { cleanup(); } void WinTaskbarProgress::setProgressState(TBPFLAG flag) { if (taskBarListHandler) { taskBarListHandler->SetProgressState(nativeHandle, flag); } } void WinTaskbarProgress::setProgressValue(ULONGLONG ullCompleted, ULONGLONG ullTotal) { if (taskBarListHandler) { taskBarListHandler->SetProgressValue(nativeHandle, ullCompleted, ullTotal); } } bool WinTaskbarProgress::init() { if (taskBarListHandler) { return true; } CoInitialize(NULL); CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, (void **)&taskBarListHandler); if (taskBarListHandler) { return true; } CoUninitialize(); return false; } void WinTaskbarProgress::cleanup() { if (taskBarListHandler) { taskBarListHandler->Release(); CoUninitialize(); } } #endif