Debugger: Make DebuggerItemManager a namespace

It had only static functions left.

Change-Id: If0c76373a8428ae7015017b4644e3f974e14a36e
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2023-08-09 15:24:02 +02:00
parent 8ac37d3df4
commit cf0cf0fa9b
4 changed files with 85 additions and 124 deletions

View File

@@ -17,8 +17,6 @@
namespace Debugger { namespace Debugger {
class DebuggerItemManager;
namespace Internal { namespace Internal {
class DebuggerConfigWidget; class DebuggerConfigWidget;
class DebuggerItemConfigWidget; class DebuggerItemConfigWidget;
@@ -107,7 +105,6 @@ private:
friend class Internal::DebuggerConfigWidget; friend class Internal::DebuggerConfigWidget;
friend class Internal::DebuggerItemConfigWidget; friend class Internal::DebuggerItemConfigWidget;
friend class Internal::DebuggerItemModel; friend class Internal::DebuggerItemModel;
friend class DebuggerItemManager;
}; };
} // namespace Debugger } // namespace Debugger

View File

@@ -56,32 +56,10 @@ const char DEBUGGER_FILE_VERSION_KEY[] = "Version";
const char DEBUGGER_FILENAME[] = "debuggers.xml"; const char DEBUGGER_FILENAME[] = "debuggers.xml";
const char debuggingToolsWikiLinkC[] = "http://wiki.qt.io/Qt_Creator_Windows_Debugging"; const char debuggingToolsWikiLinkC[] = "http://wiki.qt.io/Qt_Creator_Windows_Debugging";
class DebuggerItemModel; static FilePath userSettingsFileName()
class DebuggerItemManagerPrivate
{ {
public: return ICore::userResourcePath(DEBUGGER_FILENAME);
DebuggerItemManagerPrivate(); }
~DebuggerItemManagerPrivate();
void restoreDebuggers();
void saveDebuggers();
void addDebugger(const DebuggerItem &item);
QVariant registerDebugger(const DebuggerItem &item);
void readDebuggers(const FilePath &fileName, bool isSystem);
void autoDetectCdbDebuggers();
void autoDetectGdbOrLldbDebuggers(const FilePaths &searchPaths,
const QString &detectionSource,
QString *logMessage = nullptr);
void autoDetectUvscDebuggers();
QString uniqueDisplayName(const QString &base);
PersistentSettingsWriter m_writer;
DebuggerItemModel *m_model = nullptr;
};
static DebuggerItemManagerPrivate *d = nullptr;
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// DebuggerItemConfigWidget // DebuggerItemConfigWidget
@@ -177,19 +155,39 @@ public:
QModelIndex lastIndex() const; QModelIndex lastIndex() const;
void setCurrentIndex(const QModelIndex &index); void setCurrentIndex(const QModelIndex &index);
DebuggerTreeItem *addDebugger(const DebuggerItem &item, bool changed = false); DebuggerTreeItem *addDebuggerItem(const DebuggerItem &item, bool changed = false);
void updateDebugger(const DebuggerItem &item); void updateDebugger(const DebuggerItem &item);
void apply(); void apply();
void cancel(); void cancel();
DebuggerTreeItem *currentTreeItem(); DebuggerTreeItem *currentTreeItem();
void restoreDebuggers();
void saveDebuggers();
void addDebugger(const DebuggerItem &item);
QVariant registerDebugger(const DebuggerItem &item);
void readDebuggers(const FilePath &fileName, bool isSystem);
void autoDetectCdbDebuggers();
void autoDetectGdbOrLldbDebuggers(const FilePaths &searchPaths,
const QString &detectionSource,
QString *logMessage = nullptr);
void autoDetectUvscDebuggers();
QString uniqueDisplayName(const QString &base);
PersistentSettingsWriter m_writer{userSettingsFileName(), "QtCreatorDebuggers"};
QPersistentModelIndex m_currentIndex; QPersistentModelIndex m_currentIndex;
}; };
static DebuggerItemModel &itemModel()
{
static DebuggerItemModel theModel;
return theModel;
}
template <typename Predicate> template <typename Predicate>
void forAllDebuggers(const Predicate &pred) void forAllDebuggers(const Predicate &pred)
{ {
d->m_model->forItemsAtLevel<2>([pred](DebuggerTreeItem *titem) { itemModel().forItemsAtLevel<2>([pred](DebuggerTreeItem *titem) {
pred(titem->m_item); pred(titem->m_item);
}); });
} }
@@ -197,7 +195,7 @@ void forAllDebuggers(const Predicate &pred)
template <typename Predicate> template <typename Predicate>
const DebuggerItem *findDebugger(const Predicate &pred) const DebuggerItem *findDebugger(const Predicate &pred)
{ {
DebuggerTreeItem *titem = d->m_model->findItemAtLevel<2>([pred](DebuggerTreeItem *titem) { DebuggerTreeItem *titem = itemModel().findItemAtLevel<2>([pred](DebuggerTreeItem *titem) {
return pred(titem->m_item); return pred(titem->m_item);
}); });
return titem ? &titem->m_item : nullptr; return titem ? &titem->m_item : nullptr;
@@ -231,9 +229,12 @@ DebuggerItemModel::DebuggerItemModel()
genericLldb.setCommand("lldb"); genericLldb.setCommand("lldb");
genericLldb.setUnexpandedDisplayName(Tr::tr("LLDB from PATH on Build Device")); genericLldb.setUnexpandedDisplayName(Tr::tr("LLDB from PATH on Build Device"));
generic->appendChild(new DebuggerTreeItem(genericLldb, false)); generic->appendChild(new DebuggerTreeItem(genericLldb, false));
connect(ICore::instance(), &ICore::saveSettingsRequested,
this, &DebuggerItemModel::saveDebuggers);
} }
DebuggerTreeItem *DebuggerItemModel::addDebugger(const DebuggerItem &item, bool changed) DebuggerTreeItem *DebuggerItemModel::addDebuggerItem(const DebuggerItem &item, bool changed)
{ {
QTC_ASSERT(item.id().isValid(), return {}); QTC_ASSERT(item.id().isValid(), return {});
int group = item.isGeneric() ? Generic : (item.isAutoDetected() ? AutoDetected : Manual); int group = item.isGeneric() ? Generic : (item.isAutoDetected() ? AutoDetected : Manual);
@@ -410,7 +411,7 @@ DebuggerItem DebuggerItemConfigWidget::item() const
void DebuggerItemConfigWidget::store() const void DebuggerItemConfigWidget::store() const
{ {
if (!m_id.isNull()) if (!m_id.isNull())
d->m_model->updateDebugger(item()); itemModel().updateDebugger(item());
} }
void DebuggerItemConfigWidget::setAbis(const QStringList &abiNames) void DebuggerItemConfigWidget::setAbis(const QStringList &abiNames)
@@ -492,7 +493,7 @@ void DebuggerItemConfigWidget::binaryPathHasChanged()
store(); store();
} }
void DebuggerItemManagerPrivate::autoDetectCdbDebuggers() void DebuggerItemModel::autoDetectCdbDebuggers()
{ {
FilePaths cdbs; FilePaths cdbs;
@@ -563,7 +564,7 @@ void DebuggerItemManagerPrivate::autoDetectCdbDebuggers()
item.setEngineType(CdbEngineType); item.setEngineType(CdbEngineType);
item.setUnexpandedDisplayName(uniqueDisplayName(Tr::tr("Auto-detected CDB at %1").arg(cdb.toUserOutput()))); item.setUnexpandedDisplayName(uniqueDisplayName(Tr::tr("Auto-detected CDB at %1").arg(cdb.toUserOutput())));
item.reinitializeFromFile(); // collect version number item.reinitializeFromFile(); // collect version number
m_model->addDebugger(item); addDebuggerItem(item);
} }
} }
@@ -599,7 +600,7 @@ static Utils::FilePaths searchGdbPathsFromRegistry()
return searchPaths; return searchPaths;
} }
void DebuggerItemManagerPrivate::autoDetectGdbOrLldbDebuggers(const FilePaths &searchPaths, void DebuggerItemModel::autoDetectGdbOrLldbDebuggers(const FilePaths &searchPaths,
const QString &detectionSource, const QString &detectionSource,
QString *logMessage) QString *logMessage)
{ {
@@ -646,7 +647,7 @@ void DebuggerItemManagerPrivate::autoDetectGdbOrLldbDebuggers(const FilePaths &s
const auto commandMatches = [command](const DebuggerTreeItem *titem) { const auto commandMatches = [command](const DebuggerTreeItem *titem) {
return titem->m_item.command() == command; return titem->m_item.command() == command;
}; };
if (DebuggerTreeItem *existingItem = m_model->findItemAtLevel<2>(commandMatches)) { if (DebuggerTreeItem *existingItem = findItemAtLevel<2>(commandMatches)) {
if (command.lastModified() != existingItem->m_item.lastModified()) if (command.lastModified() != existingItem->m_item.lastModified())
existingItem->m_item.reinitializeFromFile(); existingItem->m_item.reinitializeFromFile();
continue; continue;
@@ -662,14 +663,14 @@ void DebuggerItemManagerPrivate::autoDetectGdbOrLldbDebuggers(const FilePaths &s
//: %1: Debugger engine type (GDB, LLDB, CDB...), %2: Path //: %1: Debugger engine type (GDB, LLDB, CDB...), %2: Path
const QString name = detectionSource.isEmpty() ? Tr::tr("System %1 at %2") : Tr::tr("Detected %1 at %2"); const QString name = detectionSource.isEmpty() ? Tr::tr("System %1 at %2") : Tr::tr("Detected %1 at %2");
item.setUnexpandedDisplayName(name.arg(item.engineTypeName()).arg(command.toUserOutput())); item.setUnexpandedDisplayName(name.arg(item.engineTypeName()).arg(command.toUserOutput()));
m_model->addDebugger(item); addDebuggerItem(item);
logMessages.append(Tr::tr("Found: \"%1\"").arg(command.toUserOutput())); logMessages.append(Tr::tr("Found: \"%1\"").arg(command.toUserOutput()));
if (item.engineType() == GdbEngineType) { if (item.engineType() == GdbEngineType) {
if (item.version().startsWith("GNU gdb (GDB) 14.0.50.2023")) { if (item.version().startsWith("GNU gdb (GDB) 14.0.50.2023")) {
// FIXME: Use something more robust // FIXME: Use something more robust
item.setEngineType(DapEngineType); item.setEngineType(DapEngineType);
m_model->addDebugger(item); addDebuggerItem(item);
} }
} }
} }
@@ -677,7 +678,7 @@ void DebuggerItemManagerPrivate::autoDetectGdbOrLldbDebuggers(const FilePaths &s
*logMessage = logMessages.join('\n'); *logMessage = logMessages.join('\n');
} }
void DebuggerItemManagerPrivate::autoDetectUvscDebuggers() void DebuggerItemModel::autoDetectUvscDebuggers()
{ {
if (!HostOsInfo::isWindowsHost()) if (!HostOsInfo::isWindowsHost())
return; return;
@@ -714,28 +715,11 @@ void DebuggerItemManagerPrivate::autoDetectUvscDebuggers()
item.setUnexpandedDisplayName( item.setUnexpandedDisplayName(
uniqueDisplayName(Tr::tr("Auto-detected uVision at %1") uniqueDisplayName(Tr::tr("Auto-detected uVision at %1")
.arg(uVision.toUserOutput()))); .arg(uVision.toUserOutput())));
m_model->addDebugger(item); addDebuggerItem(item);
} }
} }
static FilePath userSettingsFileName() QString DebuggerItemModel::uniqueDisplayName(const QString &base)
{
return ICore::userResourcePath(DEBUGGER_FILENAME);
}
DebuggerItemManagerPrivate::DebuggerItemManagerPrivate()
: m_writer(userSettingsFileName(), "QtCreatorDebuggers")
{
d = this;
m_model = new DebuggerItemModel;
}
DebuggerItemManagerPrivate::~DebuggerItemManagerPrivate()
{
delete m_model;
}
QString DebuggerItemManagerPrivate::uniqueDisplayName(const QString &base)
{ {
const DebuggerItem *item = findDebugger([base](const DebuggerItem &item) { const DebuggerItem *item = findDebugger([base](const DebuggerItem &item) {
return item.unexpandedDisplayName() == base; return item.unexpandedDisplayName() == base;
@@ -743,10 +727,10 @@ QString DebuggerItemManagerPrivate::uniqueDisplayName(const QString &base)
return item ? uniqueDisplayName(base + " (1)") : base; return item ? uniqueDisplayName(base + " (1)") : base;
} }
QVariant DebuggerItemManagerPrivate::registerDebugger(const DebuggerItem &item) QVariant DebuggerItemModel::registerDebugger(const DebuggerItem &item)
{ {
// Try re-using existing item first. // Try re-using existing item first.
DebuggerTreeItem *titem = m_model->findItemAtLevel<2>([item](DebuggerTreeItem *titem) { DebuggerTreeItem *titem = findItemAtLevel<2>([item](DebuggerTreeItem *titem) {
const DebuggerItem &d = titem->m_item; const DebuggerItem &d = titem->m_item;
return d.command() == item.command() return d.command() == item.command()
&& d.isAutoDetected() == item.isAutoDetected() && d.isAutoDetected() == item.isAutoDetected()
@@ -762,11 +746,11 @@ QVariant DebuggerItemManagerPrivate::registerDebugger(const DebuggerItem &item)
if (!di.id().isValid()) if (!di.id().isValid())
di.createId(); di.createId();
m_model->addDebugger(di); addDebuggerItem(di);
return di.id(); return di.id();
} }
void DebuggerItemManagerPrivate::readDebuggers(const FilePath &fileName, bool isSystem) void DebuggerItemModel::readDebuggers(const FilePath &fileName, bool isSystem)
{ {
PersistentSettingsReader reader; PersistentSettingsReader reader;
if (!reader.load(fileName)) if (!reader.load(fileName))
@@ -809,7 +793,7 @@ void DebuggerItemManagerPrivate::readDebuggers(const FilePath &fileName, bool is
} }
} }
void DebuggerItemManagerPrivate::restoreDebuggers() void DebuggerItemModel::restoreDebuggers()
{ {
// Read debuggers from SDK // Read debuggers from SDK
readDebuggers(ICore::installerResourcePath(DEBUGGER_FILENAME), true); readDebuggers(ICore::installerResourcePath(DEBUGGER_FILENAME), true);
@@ -825,7 +809,7 @@ void DebuggerItemManagerPrivate::restoreDebuggers()
autoDetectUvscDebuggers(); autoDetectUvscDebuggers();
} }
void DebuggerItemManagerPrivate::saveDebuggers() void DebuggerItemModel::saveDebuggers()
{ {
QVariantMap data; QVariantMap data;
data.insert(DEBUGGER_FILE_VERSION_KEY, 1); data.insert(DEBUGGER_FILE_VERSION_KEY, 1);
@@ -854,21 +838,9 @@ void DebuggerItemManagerPrivate::saveDebuggers()
// DebuggerItemManager // DebuggerItemManager
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
DebuggerItemManager::DebuggerItemManager()
{
new DebuggerItemManagerPrivate;
QObject::connect(ICore::instance(), &ICore::saveSettingsRequested,
[] { d->saveDebuggers(); });
}
DebuggerItemManager::~DebuggerItemManager()
{
delete d;
}
void DebuggerItemManager::restoreDebuggers() void DebuggerItemManager::restoreDebuggers()
{ {
d->restoreDebuggers(); itemModel().restoreDebuggers();
} }
const QList<DebuggerItem> DebuggerItemManager::debuggers() const QList<DebuggerItem> DebuggerItemManager::debuggers()
@@ -901,14 +873,14 @@ const DebuggerItem *DebuggerItemManager::findByEngineType(DebuggerEngineType eng
QVariant DebuggerItemManager::registerDebugger(const DebuggerItem &item) QVariant DebuggerItemManager::registerDebugger(const DebuggerItem &item)
{ {
return d->registerDebugger(item); return itemModel().registerDebugger(item);
} }
void DebuggerItemManager::deregisterDebugger(const QVariant &id) void DebuggerItemManager::deregisterDebugger(const QVariant &id)
{ {
d->m_model->forItemsAtLevel<2>([id](DebuggerTreeItem *titem) { itemModel().forItemsAtLevel<2>([id](DebuggerTreeItem *titem) {
if (titem->m_item.id() == id) if (titem->m_item.id() == id)
d->m_model->destroyItem(titem); itemModel().destroyItem(titem);
}); });
} }
@@ -916,7 +888,7 @@ void DebuggerItemManager::autoDetectDebuggersForDevice(const FilePaths &searchPa
const QString &detectionSource, const QString &detectionSource,
QString *logMessage) QString *logMessage)
{ {
d->autoDetectGdbOrLldbDebuggers(searchPaths, detectionSource, logMessage); itemModel().autoDetectGdbOrLldbDebuggers(searchPaths, detectionSource, logMessage);
} }
void DebuggerItemManager::removeDetectedDebuggers(const QString &detectionSource, void DebuggerItemManager::removeDetectedDebuggers(const QString &detectionSource,
@@ -925,7 +897,7 @@ void DebuggerItemManager::removeDetectedDebuggers(const QString &detectionSource
QStringList logMessages{Tr::tr("Removing debugger entries...")}; QStringList logMessages{Tr::tr("Removing debugger entries...")};
QList<DebuggerTreeItem *> toBeRemoved; QList<DebuggerTreeItem *> toBeRemoved;
d->m_model->forItemsAtLevel<2>([detectionSource, &toBeRemoved](DebuggerTreeItem *titem) { itemModel().forItemsAtLevel<2>([detectionSource, &toBeRemoved](DebuggerTreeItem *titem) {
if (titem->m_item.detectionSource() == detectionSource) { if (titem->m_item.detectionSource() == detectionSource) {
toBeRemoved.append(titem); toBeRemoved.append(titem);
return; return;
@@ -937,7 +909,7 @@ void DebuggerItemManager::removeDetectedDebuggers(const QString &detectionSource
}); });
for (DebuggerTreeItem *current : toBeRemoved) { for (DebuggerTreeItem *current : toBeRemoved) {
logMessages.append(Tr::tr("Removed \"%1\"").arg(current->m_item.displayName())); logMessages.append(Tr::tr("Removed \"%1\"").arg(current->m_item.displayName()));
d->m_model->destroyItem(current); itemModel().destroyItem(current);
} }
if (logMessage) if (logMessage)
@@ -948,7 +920,7 @@ void DebuggerItemManager::listDetectedDebuggers(const QString &detectionSource,
{ {
QTC_ASSERT(logMessage, return); QTC_ASSERT(logMessage, return);
QStringList logMessages{Tr::tr("Debuggers:")}; QStringList logMessages{Tr::tr("Debuggers:")};
d->m_model->forItemsAtLevel<2>([detectionSource, &logMessages](DebuggerTreeItem *titem) { itemModel().forItemsAtLevel<2>([detectionSource, &logMessages](DebuggerTreeItem *titem) {
if (titem->m_item.detectionSource() == detectionSource) if (titem->m_item.detectionSource() == detectionSource)
logMessages.append(titem->m_item.displayName()); logMessages.append(titem->m_item.displayName());
}); });
@@ -976,7 +948,7 @@ public:
m_container->setVisible(false); m_container->setVisible(false);
m_debuggerView = new QTreeView(this); m_debuggerView = new QTreeView(this);
m_debuggerView->setModel(d->m_model); m_debuggerView->setModel(&itemModel());
m_debuggerView->setUniformRowHeights(true); m_debuggerView->setUniformRowHeights(true);
m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection); m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection);
m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows); m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows);
@@ -1022,12 +994,12 @@ public:
void apply() final void apply() final
{ {
m_itemConfigWidget->store(); m_itemConfigWidget->store();
d->m_model->apply(); itemModel().apply();
} }
void finish() final void finish() final
{ {
d->m_model->cancel(); itemModel().cancel();
} }
void cloneDebugger(); void cloneDebugger();
@@ -1046,7 +1018,7 @@ public:
void DebuggerSettingsPageWidget::cloneDebugger() void DebuggerSettingsPageWidget::cloneDebugger()
{ {
DebuggerTreeItem *treeItem = d->m_model->currentTreeItem(); DebuggerTreeItem *treeItem = itemModel().currentTreeItem();
if (!treeItem) if (!treeItem)
return; return;
@@ -1054,13 +1026,13 @@ void DebuggerSettingsPageWidget::cloneDebugger()
DebuggerItem newItem; DebuggerItem newItem;
newItem.createId(); newItem.createId();
newItem.setCommand(item->command()); newItem.setCommand(item->command());
newItem.setUnexpandedDisplayName(d->uniqueDisplayName(Tr::tr("Clone of %1").arg(item->displayName()))); newItem.setUnexpandedDisplayName(itemModel().uniqueDisplayName(Tr::tr("Clone of %1").arg(item->displayName())));
newItem.reinitializeFromFile(); newItem.reinitializeFromFile();
newItem.setAutoDetected(false); newItem.setAutoDetected(false);
newItem.setGeneric(item->isGeneric()); newItem.setGeneric(item->isGeneric());
newItem.setEngineType(item->engineType()); newItem.setEngineType(item->engineType());
auto addedItem = d->m_model->addDebugger(newItem, true); auto addedItem = itemModel().addDebuggerItem(newItem, true);
m_debuggerView->setCurrentIndex(d->m_model->indexForItem(addedItem)); m_debuggerView->setCurrentIndex(itemModel().indexForItem(addedItem));
} }
void DebuggerSettingsPageWidget::addDebugger() void DebuggerSettingsPageWidget::addDebugger()
@@ -1068,15 +1040,15 @@ void DebuggerSettingsPageWidget::addDebugger()
DebuggerItem item; DebuggerItem item;
item.createId(); item.createId();
item.setEngineType(NoEngineType); item.setEngineType(NoEngineType);
item.setUnexpandedDisplayName(d->uniqueDisplayName(Tr::tr("New Debugger"))); item.setUnexpandedDisplayName(itemModel().uniqueDisplayName(Tr::tr("New Debugger")));
item.setAutoDetected(false); item.setAutoDetected(false);
auto addedItem = d->m_model->addDebugger(item, true); auto addedItem = itemModel().addDebuggerItem(item, true);
m_debuggerView->setCurrentIndex(d->m_model->indexForItem(addedItem)); m_debuggerView->setCurrentIndex(itemModel().indexForItem(addedItem));
} }
void DebuggerSettingsPageWidget::removeDebugger() void DebuggerSettingsPageWidget::removeDebugger()
{ {
DebuggerTreeItem *treeItem = d->m_model->currentTreeItem(); DebuggerTreeItem *treeItem = itemModel().currentTreeItem();
QTC_ASSERT(treeItem, return); QTC_ASSERT(treeItem, return);
treeItem->m_removed = !treeItem->m_removed; treeItem->m_removed = !treeItem->m_removed;
treeItem->update(); treeItem->update();
@@ -1085,13 +1057,13 @@ void DebuggerSettingsPageWidget::removeDebugger()
void DebuggerSettingsPageWidget::currentDebuggerChanged(const QModelIndex &newCurrent) void DebuggerSettingsPageWidget::currentDebuggerChanged(const QModelIndex &newCurrent)
{ {
d->m_model->setCurrentIndex(newCurrent); itemModel().setCurrentIndex(newCurrent);
updateButtons(); updateButtons();
} }
void DebuggerSettingsPageWidget::updateButtons() void DebuggerSettingsPageWidget::updateButtons()
{ {
DebuggerTreeItem *titem = d->m_model->currentTreeItem(); DebuggerTreeItem *titem = itemModel().currentTreeItem();
DebuggerItem *item = titem ? &titem->m_item : nullptr; DebuggerItem *item = titem ? &titem->m_item : nullptr;
m_itemConfigWidget->load(item); m_itemConfigWidget->load(item);

View File

@@ -14,30 +14,24 @@ namespace Debugger {
class DebuggerItem; class DebuggerItem;
class DEBUGGER_EXPORT DebuggerItemManager namespace DebuggerItemManager {
{
Q_DISABLE_COPY_MOVE(DebuggerItemManager)
public: DEBUGGER_EXPORT void restoreDebuggers();
DebuggerItemManager();
~DebuggerItemManager();
static void restoreDebuggers(); DEBUGGER_EXPORT const QList<DebuggerItem> debuggers();
static const QList<DebuggerItem> debuggers(); DEBUGGER_EXPORT QVariant registerDebugger(const DebuggerItem &item);
DEBUGGER_EXPORT void deregisterDebugger(const QVariant &id);
static QVariant registerDebugger(const DebuggerItem &item); DEBUGGER_EXPORT void autoDetectDebuggersForDevice(const Utils::FilePaths &searchPaths,
static void deregisterDebugger(const QVariant &id); const QString &detectionSource,
QString *logMessage);
DEBUGGER_EXPORT void removeDetectedDebuggers(const QString &detectionSource, QString *logMessage);
DEBUGGER_EXPORT void listDetectedDebuggers(const QString &detectionSource, QString *logMessage);
static void autoDetectDebuggersForDevice(const Utils::FilePaths &searchPaths, DEBUGGER_EXPORT const DebuggerItem *findByCommand(const Utils::FilePath &command);
const QString &detectionSource, DEBUGGER_EXPORT const DebuggerItem *findById(const QVariant &id);
QString *logMessage); DEBUGGER_EXPORT const DebuggerItem *findByEngineType(DebuggerEngineType engineType);
static void removeDetectedDebuggers(const QString &detectionSource, QString *logMessage);
static void listDetectedDebuggers(const QString &detectionSource, QString *logMessage);
static const DebuggerItem *findByCommand(const Utils::FilePath &command); } // DebuggerItemManager
static const DebuggerItem *findById(const QVariant &id); } // Debugger
static const DebuggerItem *findByEngineType(DebuggerEngineType engineType);
};
} // namespace Debugger

View File

@@ -681,8 +681,6 @@ public:
Console m_console; // ensure Debugger Console is created before settings are taken into account Console m_console; // ensure Debugger Console is created before settings are taken into account
QStringList m_arguments; QStringList m_arguments;
DebuggerItemManager m_debuggerItemManager;
QList<IOptionsPage *> m_optionPages; QList<IOptionsPage *> m_optionPages;
IContext m_debugModeContext; IContext m_debugModeContext;
@@ -1772,17 +1770,17 @@ void DebuggerPlugin::autoDetectDebuggersForDevice(const FilePaths &searchPaths,
const QString &detectionSource, const QString &detectionSource,
QString *logMessage) QString *logMessage)
{ {
dd->m_debuggerItemManager.autoDetectDebuggersForDevice(searchPaths, detectionSource, logMessage); DebuggerItemManager::autoDetectDebuggersForDevice(searchPaths, detectionSource, logMessage);
} }
void DebuggerPlugin::removeDetectedDebuggers(const QString &detectionSource, QString *logMessage) void DebuggerPlugin::removeDetectedDebuggers(const QString &detectionSource, QString *logMessage)
{ {
dd->m_debuggerItemManager.removeDetectedDebuggers(detectionSource, logMessage); DebuggerItemManager::removeDetectedDebuggers(detectionSource, logMessage);
} }
void DebuggerPlugin::listDetectedDebuggers(const QString &detectionSource, QString *logMessage) void DebuggerPlugin::listDetectedDebuggers(const QString &detectionSource, QString *logMessage)
{ {
dd->m_debuggerItemManager.listDetectedDebuggers(detectionSource, logMessage); DebuggerItemManager::listDetectedDebuggers(detectionSource, logMessage);
} }
void DebuggerPluginPrivate::attachToQmlPort() void DebuggerPluginPrivate::attachToQmlPort()