From 4c63deae5cd42b72abe0422bab54a80888167bf1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 16 Jan 2015 16:06:16 +0100 Subject: Git/VCS: Use spinning progress indicator for log view Show a spinning progress indicator instead of the "Waiting for data" text for e.g. the git log view and other commands that use VcsBaseEditor. Change-Id: Ie4c73f85397f8809bda6bb276140eb695d96174f Reviewed-by: Orgad Shaneh --- src/plugins/vcsbase/vcsbaseeditor.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/plugins/vcsbase/vcsbaseeditor.cpp') diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 8755a4c091..09dce77020 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -573,6 +574,7 @@ public: QPointer m_command; QObject *m_describeReceiver; const char *m_describeSlot; + Utils::ProgressIndicator *m_progressIndicator; private: QComboBox *m_entriesComboBox; @@ -589,6 +591,7 @@ VcsBaseEditorWidgetPrivate::VcsBaseEditorWidgetPrivate(VcsBaseEditorWidget *edit m_mouseDragging(false), m_describeReceiver(0), m_describeSlot(0), + m_progressIndicator(0), m_entriesComboBox(0) { m_textCursorHandlers.append(new ChangeTextCursorHandler(editorWidget)); @@ -1352,9 +1355,18 @@ VcsBaseEditorParameterWidget *VcsBaseEditorWidget::configurationWidget() const void VcsBaseEditorWidget::setCommand(VcsCommand *command) { - if (d->m_command) + if (d->m_command) { d->m_command->abort(); + hideProgressIndicator(); + } d->m_command = command; + if (d->m_command) { + d->m_progressIndicator = new Utils::ProgressIndicator(Utils::ProgressIndicator::Large); + d->m_progressIndicator->attachToWidget(this); + connect(d->m_command, &VcsCommand::finished, + this, &VcsBaseEditorWidget::hideProgressIndicator); + QTimer::singleShot(100, this, SLOT(showProgressIndicator())); + } } // Find the complete file from a diff relative specification. @@ -1439,6 +1451,19 @@ void VcsBaseEditorWidget::slotPaste() } } +void VcsBaseEditorWidget::showProgressIndicator() +{ + if (!d->m_progressIndicator) // already stopped and deleted + return; + d->m_progressIndicator->show(); +} + +void VcsBaseEditorWidget::hideProgressIndicator() +{ + delete d->m_progressIndicator; + d->m_progressIndicator = 0; +} + bool VcsBaseEditorWidget::canApplyDiffChunk(const DiffChunk &dc) const { if (!dc.isValid()) -- cgit v1.2.1