diff options
-rw-r--r-- | plugins/autotest/testcodeparser.cpp | 2 | ||||
-rw-r--r-- | plugins/autotest/testcodeparser.h | 1 | ||||
-rw-r--r-- | plugins/autotest/testnavigationwidget.cpp | 28 | ||||
-rw-r--r-- | plugins/autotest/testnavigationwidget.h | 10 |
4 files changed, 40 insertions, 1 deletions
diff --git a/plugins/autotest/testcodeparser.cpp b/plugins/autotest/testcodeparser.cpp index 09c0db0292..d0c209224c 100644 --- a/plugins/autotest/testcodeparser.cpp +++ b/plugins/autotest/testcodeparser.cpp @@ -620,6 +620,8 @@ void TestCodeParser::scanForTests(const QStringList &fileList) Autotest::Constants::TASK_PARSE); connect(progress, &Core::FutureProgress::finished, this, &TestCodeParser::onFinished); + + emit parsingStarted(); } void TestCodeParser::clearCache() diff --git a/plugins/autotest/testcodeparser.h b/plugins/autotest/testcodeparser.h index f2bb6de13e..88c2b223ca 100644 --- a/plugins/autotest/testcodeparser.h +++ b/plugins/autotest/testcodeparser.h @@ -70,6 +70,7 @@ signals: void unnamedQuickTestsUpdated(const QString &filePath, const QString &mainFile, const QMap<QString, TestCodeLocationAndType> &functions); void unnamedQuickTestsRemoved(const QString &filePath); + void parsingStarted(); void parsingFinished(); void partialParsingFinished(); diff --git a/plugins/autotest/testnavigationwidget.cpp b/plugins/autotest/testnavigationwidget.cpp index 8338455623..db7776fbd2 100644 --- a/plugins/autotest/testnavigationwidget.cpp +++ b/plugins/autotest/testnavigationwidget.cpp @@ -29,7 +29,9 @@ #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <texteditor/texteditor.h> +#include <utils/progressindicator.h> +#include <QTimer> #include <QToolButton> #include <QVBoxLayout> @@ -55,6 +57,21 @@ TestNavigationWidget::TestNavigationWidget(QWidget *parent) : setLayout(layout); connect(m_view, &TestTreeView::activated, this, &TestNavigationWidget::onItemActivated); + + m_progressIndicator = new Utils::ProgressIndicator(Utils::ProgressIndicator::Medium, this); + m_progressIndicator->attachToWidget(m_view); + m_progressIndicator->hide(); + + m_progressTimer = new QTimer(this); + m_progressTimer->setSingleShot(true); + m_progressTimer->setInterval(100); // don't display indicator if progress takes less than 100ms + + connect(m_model->parser(), &TestCodeParser::parsingStarted, + this, &TestNavigationWidget::onParsingStarted); + connect(m_model->parser(), &TestCodeParser::parsingFinished, + this, &TestNavigationWidget::onParsingFinished); + connect(m_progressTimer, &QTimer::timeout, + m_progressIndicator, &Utils::ProgresssIndicator::show); } TestNavigationWidget::~TestNavigationWidget() @@ -178,6 +195,17 @@ void TestNavigationWidget::onFilterMenuTriggered(QAction *action) TestTreeSortFilterModel::toFilterMode(action->data().value<int>())); } +void TestNavigationWidget::onParsingStarted() +{ + m_progressTimer->start(); +} + +void TestNavigationWidget::onParsingFinished() +{ + m_progressTimer->stop(); + m_progressIndicator->hide(); +} + void TestNavigationWidget::initializeFilterMenu() { QAction *action = new QAction(m_filterMenu); diff --git a/plugins/autotest/testnavigationwidget.h b/plugins/autotest/testnavigationwidget.h index 50d6ae8970..3ea7753663 100644 --- a/plugins/autotest/testnavigationwidget.h +++ b/plugins/autotest/testnavigationwidget.h @@ -26,6 +26,7 @@ QT_BEGIN_NAMESPACE class QAction; class QMenu; +class QTimer; class QToolButton; QT_END_NAMESPACE @@ -33,6 +34,10 @@ namespace Core { class IContext; } +namespace Utils { +class ProgressIndicator; +} + namespace Autotest { namespace Internal { @@ -60,6 +65,8 @@ private slots: void onRunSelectedTriggered(); void onSortClicked(); void onFilterMenuTriggered(QAction *action); + void onParsingStarted(); + void onParsingFinished(); private: void initializeFilterMenu(); @@ -71,7 +78,8 @@ private: QToolButton *m_filterButton; QMenu *m_filterMenu; bool m_sortAlphabetically; - + Utils::ProgressIndicator *m_progressIndicator; + QTimer *m_progressTimer; }; class TestNavigationWidgetFactory : public Core::INavigationWidgetFactory |