add QWinTasbarProgress to windows build
This commit is contained in:
committed by
wmayer
parent
cd74f2e929
commit
3f367f8292
@@ -913,6 +913,9 @@ endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
if(MSVC)
|
||||
find_package(Qt5WinExtras REQUIRED)
|
||||
endif(MSVC)
|
||||
endif(BUILD_GUI)
|
||||
|
||||
# This is a special version of the built in macro qt5_wrap_cpp
|
||||
@@ -1341,6 +1344,10 @@ ELSE(NOT BUILD_QT5)
|
||||
MESSAGE(STATUS "Qt5WebKitWidgets: not needed (BUILD_WEB)")
|
||||
MESSAGE(STATUS "Qt5WebEngineWidgets: not needed (BUILD_WEB)")
|
||||
ENDIF(BUILD_WEB)
|
||||
IF(MSVC)
|
||||
MESSAGE(STATUS "Qt5WinExtras: ${Qt5WinExtras_VERSION}")
|
||||
ENDIF(MSVC)
|
||||
|
||||
ELSE(BUILD_GUI)
|
||||
MESSAGE(STATUS "Qt5Widgets: not needed")
|
||||
MESSAGE(STATUS "Qt5PrintSupport: not needed")
|
||||
|
||||
@@ -95,6 +95,14 @@ if (BUILD_QT5)
|
||||
${Qt5Network_LIBRARIES}
|
||||
${Qt5UiTools_LIBRARIES}
|
||||
)
|
||||
if(MSVC)
|
||||
include_directories(
|
||||
${Qt5WinExtras_INCLUDE_DIRS}
|
||||
)
|
||||
list(APPEND FreeCADGui_LIBS
|
||||
${Qt5WinExtras_LIBRARIES}
|
||||
)
|
||||
endif(MSVC)
|
||||
else()
|
||||
include_directories(
|
||||
${QT_INCLUDE_DIR}
|
||||
|
||||
@@ -335,6 +335,8 @@ QProgressBar* Sequencer::getProgressBar(QWidget* parent)
|
||||
|
||||
ProgressBar::ProgressBar (Sequencer* s, QWidget * parent)
|
||||
: QProgressBar(parent), sequencer(s)
|
||||
, m_taskbarButton(nullptr)
|
||||
, m_taskbarProgress(nullptr)
|
||||
{
|
||||
d = new Gui::ProgressBarPrivate;
|
||||
d->minimumDuration = 2000; // 2 seconds
|
||||
@@ -362,6 +364,36 @@ int ProgressBar::minimumDuration() const
|
||||
return d->minimumDuration;
|
||||
}
|
||||
|
||||
void Gui::ProgressBar::reset()
|
||||
{
|
||||
QProgressBar::reset();
|
||||
if (setupTaskBarProgress()) m_taskbarProgress->reset();
|
||||
}
|
||||
|
||||
void Gui::ProgressBar::setRange(int minimum, int maximum)
|
||||
{
|
||||
QProgressBar::setRange(minimum, maximum);
|
||||
if (setupTaskBarProgress()) m_taskbarProgress->setRange(minimum, maximum);
|
||||
}
|
||||
|
||||
void Gui::ProgressBar::setMinimum(int minimum)
|
||||
{
|
||||
QProgressBar::setMinimum(minimum);
|
||||
if (setupTaskBarProgress()) m_taskbarProgress->setMinimum(minimum);
|
||||
}
|
||||
|
||||
void Gui::ProgressBar::setMaximum(int maximum)
|
||||
{
|
||||
QProgressBar::setMaximum(maximum);
|
||||
if (setupTaskBarProgress()) m_taskbarProgress->setMaximum(maximum);
|
||||
}
|
||||
|
||||
void Gui::ProgressBar::setValue(int value)
|
||||
{
|
||||
QProgressBar::setValue(value);
|
||||
if (setupTaskBarProgress()) m_taskbarProgress->setValue(value);
|
||||
}
|
||||
|
||||
void ProgressBar::setMinimumDuration (int ms)
|
||||
{
|
||||
if (value() == 0)
|
||||
@@ -428,6 +460,26 @@ void ProgressBar::leaveControlEvents()
|
||||
releaseKeyboard();
|
||||
}
|
||||
|
||||
bool Gui::ProgressBar::setupTaskBarProgress(void)
|
||||
{
|
||||
if (!m_taskbarButton || !m_taskbarProgress)
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
m_taskbarButton = new QWinTaskbarButton(this);
|
||||
m_taskbarButton->setWindow(MainWindow::getInstance()->windowHandle());
|
||||
//m_myButton->setOverlayIcon(QIcon(""));
|
||||
|
||||
m_taskbarProgress = m_taskbarButton->progress();
|
||||
m_taskbarProgress->setVisible(true);
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
else if (m_taskbarButton && m_taskbarProgress) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ProgressBar::eventFilter(QObject* o, QEvent* e)
|
||||
{
|
||||
if (sequencer->isRunning() && e != 0) {
|
||||
|
||||
@@ -25,6 +25,11 @@
|
||||
#define GUI_PROGRESSBAR_H
|
||||
|
||||
#include <QProgressBar>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QWinTaskbarProgress>
|
||||
#include <QWinTaskbarButton>
|
||||
#endif
|
||||
|
||||
|
||||
#include <Base/Sequencer.h>
|
||||
|
||||
@@ -151,6 +156,13 @@ public:
|
||||
*/
|
||||
int minimumDuration() const;
|
||||
|
||||
void reset();
|
||||
void setRange(int minimum, int maximum);
|
||||
void setMinimum(int minimum);
|
||||
void setMaximum(int maximum);
|
||||
void setValue(int value);
|
||||
|
||||
|
||||
public Q_SLOTS:
|
||||
/** Sets the time that must pass before the progress bar appears to \a ms.
|
||||
*/
|
||||
@@ -177,9 +189,16 @@ private:
|
||||
void enterControlEvents();
|
||||
/** Loses the control over incoming events*/
|
||||
void leaveControlEvents();
|
||||
|
||||
/* Set up the task abr progress in windows */
|
||||
bool setupTaskBarProgress(void);
|
||||
|
||||
//@}
|
||||
ProgressBarPrivate* d;
|
||||
Sequencer* sequencer;
|
||||
|
||||
QWinTaskbarProgress* m_taskbarProgress;
|
||||
QWinTaskbarButton* m_taskbarButton;
|
||||
|
||||
friend class Sequencer;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user