debugger: move progress handling to debugger engine base class

This commit is contained in:
hjk
2010-07-21 11:02:51 +02:00
parent 5e68a31d0b
commit 56aff185a6
4 changed files with 39 additions and 36 deletions

View File

@@ -48,6 +48,8 @@
#include <coreplugin/icore.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/progressmanager/progressmanager.h>
#include <coreplugin/progressmanager/futureprogress.h>
#include <projectexplorer/debugginghelper.h>
#include <projectexplorer/environment.h>
@@ -68,6 +70,7 @@
#include <QtCore/QDir>
#include <QtCore/QFileInfo>
#include <QtCore/QTimer>
#include <QtCore/QFutureInterface>
#include <QtGui/QAbstractItemView>
#include <QtGui/QStandardItemModel>
@@ -230,7 +233,14 @@ public:
m_threadsHandler(engine),
m_watchHandler(engine),
m_disassemblerViewAgent(engine)
{}
{
m_progress.setProgressRange(0, 100);
Core::FutureProgress *fp = Core::ICore::instance()->progressManager()
->addTask(m_progress.future(), tr("Launching"), _("Debugger.Launcher"));
fp->setKeepOnFinish(false);
}
~DebuggerEnginePrivate() {}
public slots:
void breakpointSetRemoveMarginActionTriggered();
@@ -304,6 +314,7 @@ public:
ThreadsHandler m_threadsHandler;
WatchHandler m_watchHandler;
DisassemblerViewAgent m_disassemblerViewAgent;
QFutureInterface<void> m_progress;
};
void DebuggerEnginePrivate::breakpointSetRemoveMarginActionTriggered()
@@ -675,6 +686,7 @@ void DebuggerEngine::showMessage(const QString &msg, int channel, int timeout) c
void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)
{
d->m_progress.reportStarted();
QTC_ASSERT(runControl, notifyEngineSetupFailed(); return);
QTC_ASSERT(!d->m_runControl, notifyEngineSetupFailed(); return);
@@ -704,6 +716,7 @@ void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)
qDebug() << state());
setState(EngineSetupRequested);
d->m_progress.setProgressValue(20);
setupEngine();
}
@@ -876,6 +889,10 @@ void DebuggerEngine::addToWatchWindow()
void DebuggerEngine::handleStartFailed()
{
d->m_runControl = 0;
d->m_progress.setProgressValue(90);
d->m_progress.reportCanceled();
d->m_progress.reportFinished();
}
// Called from RunControl.
@@ -891,6 +908,9 @@ void DebuggerEngine::handleFinished()
QTC_ASSERT(sessionTemplate != this, /**/);
breakHandler()->storeToTemplate(sessionTemplate->breakHandler());
watchHandler()->storeToTemplate(sessionTemplate->watchHandler());
d->m_progress.setProgressValue(100);
d->m_progress.reportFinished();
}
const DebuggerStartParameters &DebuggerEngine::startParameters() const
@@ -1068,17 +1088,21 @@ void DebuggerEngine::notifyEngineSetupOk()
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state());
setState(EngineSetupOk);
QTC_ASSERT(d->m_runControl, /**/);
if (d->m_runControl)
if (d->m_runControl) {
d->m_progress.setProgressValue(100);
d->m_progress.reportFinished();
d->m_runControl->startSuccessful();
}
showMessage(_("QUEUE: SETUP INFERIOR"));
QTimer::singleShot(0, d, SLOT(doSetupInferior()));
}
void DebuggerEnginePrivate::doSetupInferior()
{
QTC_ASSERT(state() == EngineSetupOk, qDebug() << state());
m_engine->setState(InferiorSetupRequested);
m_engine->showMessage(_("CALL: SETUP INFERIOR"));
QTC_ASSERT(state() == EngineSetupOk, qDebug() << state());
m_progress.setProgressValue(25);
m_engine->setState(InferiorSetupRequested);
m_engine->setupInferior();
}
@@ -1101,6 +1125,7 @@ void DebuggerEnginePrivate::doRunEngine()
{
m_engine->showMessage(_("CALL: RUN ENGINE"));
QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
m_progress.setProgressValue(30);
m_engine->runEngine();
}
@@ -1438,6 +1463,12 @@ void DebuggerEngine::requestInterruptInferior()
d->doInterruptInferior();
}
void DebuggerEngine::progressPing()
{
int progress = d->m_progress.progressValue();
d->m_progress.setProgressValue(qMin(70, progress + 1));
}
} // namespace Internal
} // namespace Debugger