mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
QtDialog: Add windows taskbar progress
This commit is contained in:
@@ -19,9 +19,20 @@ if (Qt5Widgets_FOUND)
|
||||
macro(qt4_add_resources)
|
||||
qt5_add_resources(${ARGN})
|
||||
endmacro()
|
||||
|
||||
set(CMake_QT_LIBRARIES ${Qt5Widgets_LIBRARIES})
|
||||
set(QT_QTMAIN_LIBRARY ${Qt5Core_QTMAIN_LIBRARIES})
|
||||
|
||||
# Try to find the package WinExtras for the task bar progress
|
||||
if(WIN32)
|
||||
find_package(Qt5WinExtras QUIET)
|
||||
if (Qt5WinExtras_FOUND)
|
||||
include_directories(${Qt5WinExtras_INCLUDE_DIRS})
|
||||
add_definitions(-DQT_WINEXTRAS)
|
||||
list(APPEND CMake_QT_LIBRARIES ${Qt5WinExtras_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Remove this when the minimum version of Qt is 4.6.
|
||||
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0)
|
||||
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
#include <QToolButton>
|
||||
#include <QUrl>
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
# include <QWinTaskbarButton>
|
||||
# include <QWinTaskbarProgress>
|
||||
#endif
|
||||
|
||||
#include "AddCacheEntry.h"
|
||||
#include "FirstConfigure.h"
|
||||
#include "QCMake.h"
|
||||
@@ -294,6 +299,12 @@ void CMakeSetupDialog::initialize()
|
||||
} else {
|
||||
this->onBinaryDirectoryChanged(this->BinaryDirectory->lineEdit()->text());
|
||||
}
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
this->TaskbarButton = new QWinTaskbarButton(this);
|
||||
this->TaskbarButton->setWindow(this->windowHandle());
|
||||
this->TaskbarButton->setOverlayIcon(QIcon(":/loading.png"));
|
||||
#endif
|
||||
}
|
||||
|
||||
CMakeSetupDialog::~CMakeSetupDialog()
|
||||
@@ -381,6 +392,10 @@ void CMakeSetupDialog::doConfigure()
|
||||
this->CacheValues->scrollToTop();
|
||||
}
|
||||
this->ProgressBar->reset();
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
this->TaskbarButton->progress()->reset();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CMakeSetupDialog::doConfigureInternal()
|
||||
@@ -495,6 +510,9 @@ void CMakeSetupDialog::doGenerate()
|
||||
|
||||
this->enterState(ReadyConfigure);
|
||||
this->ProgressBar->reset();
|
||||
#ifdef QT_WINEXTRAS
|
||||
this->TaskbarButton->progress()->reset();
|
||||
#endif
|
||||
|
||||
this->ConfigureNeeded = true;
|
||||
}
|
||||
@@ -674,6 +692,12 @@ void CMakeSetupDialog::showProgress(const QString& /*msg*/, float percent)
|
||||
{
|
||||
percent = (percent * ProgressFactor) + ProgressOffset;
|
||||
this->ProgressBar->setValue(qRound(percent * 100));
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
QWinTaskbarProgress* progress = this->TaskbarButton->progress();
|
||||
progress->setVisible(true);
|
||||
progress->setValue(qRound(percent * 100));
|
||||
#endif
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::error(const QString& msg)
|
||||
|
||||
@@ -15,6 +15,10 @@ class CMakeCacheModel;
|
||||
class QProgressBar;
|
||||
class QToolButton;
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
class QWinTaskbarButton;
|
||||
#endif
|
||||
|
||||
/// Qt user interface for CMake
|
||||
class CMakeSetupDialog
|
||||
: public QMainWindow
|
||||
@@ -118,6 +122,10 @@ protected:
|
||||
|
||||
QEventLoop LocalLoop;
|
||||
|
||||
#ifdef QT_WINEXTRAS
|
||||
QWinTaskbarButton* TaskbarButton;
|
||||
#endif
|
||||
|
||||
float ProgressOffset;
|
||||
float ProgressFactor;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user