void ProgressManagerPrivate::cancelTasks(const QString &type)
{
+ bool found = false;
QMap<QFutureWatcher<void> *, QString>::iterator task = m_runningTasks.begin();
while (task != m_runningTasks.end()) {
if (task.value() != type) {
++task;
continue;
}
+ found = true;
disconnect(task.key(), SIGNAL(finished()), this, SLOT(taskFinished()));
task.key()->cancel();
delete task.key();
task = m_runningTasks.erase(task);
}
+ if (found) {
+ emit allTasksFinished(type);
+ }
}
void ProgressManagerPrivate::cancelAllRunningTasks()
m_runningTasks.insert(watcher, type);
connect(watcher, SIGNAL(finished()), this, SLOT(taskFinished()));
watcher->setFuture(future);
+ emit taskStarted(type);
return m_progressView->addTask(future, title, type, persistency);
}
QObject *taskObject = sender();
QTC_ASSERT(taskObject, return);
QFutureWatcher<void> *task = static_cast<QFutureWatcher<void> *>(taskObject);
+ QString type = m_runningTasks.value(task);
m_runningTasks.remove(task);
delete task;
+
+ if (!m_runningTasks.values().contains(type)) {
+ emit allTasksFinished(type);
+ }
}
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/editormanager/editormanager.h>
+#include <coreplugin/progressmanager/progressmanager.h>
#include <texteditor/completionsupport.h>
#include <texteditor/fontsettings.h>
#include <texteditor/storagesettings.h>
#include <QtCore/QFileInfo>
#include <QtCore/QSettings>
#include <QtGui/QMenu>
-#include <QtGui/QAction>
using namespace CppEditor::Internal;
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
- QAction *findUsagesAction = new QAction(tr("Find Usages"), this);
- cmd = am->registerAction(findUsagesAction, Constants::FIND_USAGES, context);
+ m_findUsagesAction = new QAction(tr("Find Usages"), this);
+ cmd = am->registerAction(m_findUsagesAction, Constants::FIND_USAGES, context);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+U")));
- connect(findUsagesAction, SIGNAL(triggered()), this, SLOT(findUsages()));
+ connect(m_findUsagesAction, SIGNAL(triggered()), this, SLOT(findUsages()));
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
- QAction *renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol under Cursor"), this);
- cmd = am->registerAction(renameSymbolUnderCursorAction,
+ m_renameSymbolUnderCursorAction = new QAction(tr("Rename Symbol under Cursor"), this);
+ cmd = am->registerAction(m_renameSymbolUnderCursorAction,
Constants::RENAME_SYMBOL_UNDER_CURSOR, context);
cmd->setDefaultKeySequence(QKeySequence("CTRL+SHIFT+R"));
- connect(renameSymbolUnderCursorAction, SIGNAL(triggered()), this, SLOT(renameSymbolUnderCursor()));
+ connect(m_renameSymbolUnderCursorAction, SIGNAL(triggered()), this, SLOT(renameSymbolUnderCursor()));
contextMenu->addAction(cmd);
am->actionContainer(CppTools::Constants::M_TOOLS_CPP)->addAction(cmd);
cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION);
contextMenu->addAction(cmd);
-
+ connect(core->progressManager(), SIGNAL(taskStarted(QString)),
+ this, SLOT(onTaskStarted(QString)));
+ connect(core->progressManager(), SIGNAL(allTasksFinished(QString)),
+ this, SLOT(onAllTasksFinished(QString)));
readSettings();
return true;
}
editor->findUsages();
}
+void CppPlugin::onTaskStarted(const QString &type)
+{
+ if (type == CppTools::Constants::TASK_INDEX) {
+ m_renameSymbolUnderCursorAction->setEnabled(false);
+ m_findUsagesAction->setEnabled(false);
+ }
+}
+
+void CppPlugin::onAllTasksFinished(const QString &type)
+{
+ if (type == CppTools::Constants::TASK_INDEX) {
+ m_renameSymbolUnderCursorAction->setEnabled(true);
+ m_findUsagesAction->setEnabled(true);
+ }
+}
+
Q_EXPORT_PLUGIN(CppPlugin)
#ifndef CPPPLUGIN_H
#define CPPPLUGIN_H
-#include <QtCore/QtPlugin>
-#include <QtCore/QStringList>
-
#include <extensionsystem/iplugin.h>
#include <coreplugin/editormanager/ieditorfactory.h>
+#include <QtCore/QtPlugin>
+#include <QtCore/QStringList>
+#include <QtGui/QAction>
+
namespace TextEditor {
class TextEditorActionHandler;
} // namespace TextEditor
void switchDeclarationDefinition();
void jumpToDefinition();
void renameSymbolUnderCursor();
+ void onTaskStarted(const QString &type);
+ void onAllTasksFinished(const QString &type);
void findUsages();
private:
TextEditor::TextEditorActionHandler *m_actionHandler;
bool m_sortedMethodOverview;
+ QAction *m_renameSymbolUnderCursorAction;
+ QAction *m_findUsagesAction;
};
class CppEditorFactory : public Core::IEditorFactory