diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-09-05 10:55:05 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-09-05 15:49:20 +0200 |
commit | c3f50e3192cc36a0ddc938565ef5af0c00788146 (patch) | |
tree | e11d43378316515cb79cd2ab9f8ec6d025727315 /src/plugins/projectexplorer/kitchooser.cpp | |
parent | af6bbc442ecb60d2ddcb37752215f6a2e3e5bea4 (diff) | |
download | qt-creator-c3f50e3192cc36a0ddc938565ef5af0c00788146.tar.gz |
KitChooser: Introduce virtual methods for Debugger.
Introduce virtual methods such that it is possible to
write derived classes for specific KitInformation classes,
allowing for filtering and setting text and tooltip.
Remove debugging-specific code of KitChooser from
the ProjectExplorer.
Move populate() away from the constructor as not to call
virtuals from it.
Implement DebuggerKitChooser. It should no longer be
possible to to choose an invalid kit for debugging
from the debugger starter dialogs.
Add a protected constructor to DeviceProcessesDialog
allowing to pass a KitChooser.
Change-Id: I8c683a2da7d69bfbccdc08213cb47d69a0df8b3e
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Diffstat (limited to 'src/plugins/projectexplorer/kitchooser.cpp')
-rw-r--r-- | src/plugins/projectexplorer/kitchooser.cpp | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/plugins/projectexplorer/kitchooser.cpp b/src/plugins/projectexplorer/kitchooser.cpp index 8273990ed7..3d75c370a7 100644 --- a/src/plugins/projectexplorer/kitchooser.cpp +++ b/src/plugins/projectexplorer/kitchooser.cpp @@ -38,42 +38,43 @@ namespace ProjectExplorer { -KitChooser::KitChooser(QWidget *parent, unsigned flags) : +KitChooser::KitChooser(QWidget *parent) : QComboBox(parent) { - populate(flags); - onCurrentIndexChanged(currentIndex()); connect(this, SIGNAL(currentIndexChanged(int)), SLOT(onCurrentIndexChanged(int))); } void KitChooser::onCurrentIndexChanged(int index) { if (Kit *kit = kitAt(index)) - setToolTip(kit->toHtml()); + setToolTip(kitToolTip(kit)); else setToolTip(QString()); } -void KitChooser::populate(unsigned flags) +bool KitChooser::kitMatches(const Kit *k) const +{ + return k->isValid(); +} + +QString KitChooser::kitText(const Kit *k) const +{ + return k->displayName(); +} + +QString KitChooser::kitToolTip(Kit *k) const +{ + return k->toHtml(); +} + +void KitChooser::populate() { clear(); - const Abi hostAbi = Abi::hostAbi(); foreach (Kit *kit, KitManager::instance()->kits()) { - if (!kit->isValid() && !(flags & IncludeInvalidKits)) - continue; - ToolChain *tc = ToolChainKitInformation::toolChain(kit); - if (!tc) - continue; - const Abi abi = tc->targetAbi(); - if ((flags & HostAbiOnly) && hostAbi.os() != abi.os()) - continue; - const QString debuggerCommand = kit->value(Core::Id("Debugger.Information")).toString(); - if ((flags & HasDebugger) && debuggerCommand.isEmpty()) - continue; - const QString completeBase = QFileInfo(debuggerCommand).completeBaseName(); - const QString name = tr("%1 (%2)").arg(kit->displayName(), completeBase); - addItem(name, qVariantFromValue(kit->id())); - setItemData(count() - 1, kit->toHtml(), Qt::ToolTipRole); + if (kitMatches(kit)) { + addItem(kitText(kit), qVariantFromValue(kit->id())); + setItemData(count() - 1, kitToolTip(kit), Qt::ToolTipRole); + } } setEnabled(count() > 1); } |