summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@theqtcompany.com>2015-02-17 14:45:26 +0100
committerChristian Stenger <christian.stenger@theqtcompany.com>2015-02-18 09:23:02 +0200
commit0a7b2b76cbf0ff666c3bb69f1e96041b94e6b312 (patch)
tree8c5445c1410ab0452cd23b604d452459c46c7a5e
parentb5341a9a0394364fa2b167402bfc0e9fb6540287 (diff)
downloadqt-creator-0a7b2b76cbf0ff666c3bb69f1e96041b94e6b312.tar.gz
Display progress indicator on navigation view...
...if parsing takes longer. Change-Id: Ib311c031ae0af72b2f923d93578099687d9af91a Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
-rw-r--r--plugins/autotest/testcodeparser.cpp2
-rw-r--r--plugins/autotest/testcodeparser.h1
-rw-r--r--plugins/autotest/testnavigationwidget.cpp28
-rw-r--r--plugins/autotest/testnavigationwidget.h10
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