diff options
author | con <qtc-committer@nokia.com> | 2010-02-23 16:52:03 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-02-23 16:52:44 +0100 |
commit | 04d90d9563f347af36db08602535da66ed1963aa (patch) | |
tree | a0b42f895ba5d7993c549b918ca346b1e1d716c3 /src/plugins | |
parent | c3578f307db440ffb8c9fc115757c0dcd4ef2c92 (diff) | |
download | qt-creator-04d90d9563f347af36db08602535da66ed1963aa.tar.gz |
Show target overlay icon only in the active target button.
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/projectexplorer/miniprojecttargetselector.cpp | 41 | ||||
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 11 | ||||
-rw-r--r-- | src/plugins/projectexplorer/target.h | 4 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4target.cpp | 38 |
4 files changed, 60 insertions, 34 deletions
diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 64f81901f5..6994391dca 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -55,6 +55,26 @@ #include <QtGui/QApplication> +static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay) +{ + QPixmap targetPixmap; + targetPixmap = QPixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE); + targetPixmap.fill(Qt::transparent); + QPainter painter(&targetPixmap); + + QSize actualSize = icon.actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); + painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - actualSize.width())/2, + (Core::Constants::TARGET_ICON_SIZE - actualSize.height())/2, + icon.pixmap(Core::Constants::TARGET_ICON_SIZE)); + if (!overlay.isNull()) { + actualSize = overlay.actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); + painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - actualSize.width())/2, + (Core::Constants::TARGET_ICON_SIZE - actualSize.height())/2, + overlay.pixmap(Core::Constants::TARGET_ICON_SIZE)); + } + return QIcon(targetPixmap); +} + using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; @@ -198,20 +218,7 @@ MiniTargetWidget::MiniTargetWidget(Target *target, QWidget *parent) : void MiniTargetWidget::updateIcon() { - QPixmap targetPixmap; - QPixmap targetPixmapCandidate = m_target->icon().pixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE); - QSize actualSize = m_target->icon().actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); - if (actualSize == QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)) { - targetPixmap = targetPixmapCandidate; - } else { - targetPixmap = QPixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE); - targetPixmap.fill(Qt::transparent); - QPainter painter(&targetPixmap); - painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE - actualSize.width())/2, - (Core::Constants::TARGET_ICON_SIZE - actualSize.height())/2, - targetPixmapCandidate); - } - m_targetIcon->setPixmap(targetPixmap); + m_targetIcon->setPixmap(createCenteredIcon(m_target->icon(), QIcon()).pixmap(Core::Constants::TARGET_ICON_SIZE)); } ProjectExplorer::Target *MiniTargetWidget::target() const @@ -404,6 +411,7 @@ void MiniProjectTargetSelector::addTarget(ProjectExplorer::Target *target, bool connect(target, SIGNAL(toolTipChanged()), this, SLOT(updateAction())); connect(target, SIGNAL(iconChanged()), this, SLOT(updateAction())); + connect(target, SIGNAL(overlayIconChanged()), this, SLOT(updateAction())); ProjectListWidget *plw = qobject_cast<ProjectListWidget*>(m_widgetStack->widget(index)); QListWidgetItem *lwi = new QListWidgetItem(); @@ -456,6 +464,9 @@ void MiniProjectTargetSelector::removeTarget(ProjectExplorer::Target *target) delete plw->takeItem(i); delete mtw; } + disconnect(target, SIGNAL(toolTipChanged()), this, SLOT(updateAction())); + disconnect(target, SIGNAL(iconChanged()), this, SLOT(updateAction())); + disconnect(target, SIGNAL(overlayIconChanged()), this, SLOT(updateAction())); } void MiniProjectTargetSelector::updateAction() @@ -484,7 +495,7 @@ void MiniProjectTargetSelector::updateAction() runConfig = rc->displayName(); } targetToolTipText = target->toolTip(); - targetIcon = target->icon(); + targetIcon = createCenteredIcon(target->icon(), target->overlayIcon()); } } m_projectAction->setProperty("heading", projectName); diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 9e47439c93..9277d350f1 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -213,6 +213,17 @@ void Target::setIcon(QIcon icon) emit iconChanged(); } +QIcon Target::overlayIcon() const +{ + return m_overlayIcon; +} + +void Target::setOverlayIcon(QIcon icon) +{ + m_overlayIcon = icon; + emit overlayIconChanged(); +} + QString Target::toolTip() const { return m_toolTip; diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index e06eae8226..c18c8cac27 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -82,6 +82,8 @@ public: QIcon icon() const; void setIcon(QIcon icon); + QIcon overlayIcon() const; + void setOverlayIcon(QIcon icon); QString toolTip() const; void setToolTip(const QString &text); @@ -90,6 +92,7 @@ public: signals: void targetEnabled(bool); void iconChanged(); + void overlayIconChanged(); void toolTipChanged(); // TODO clean up signal names @@ -122,6 +125,7 @@ private: Project *m_project; bool m_isEnabled; QIcon m_icon; + QIcon m_overlayIcon; QString m_toolTip; QList<BuildConfiguration *> m_buildConfigurations; diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 36c09cb8fa..b874c903e1 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -218,7 +218,7 @@ Qt4Target::Qt4Target(Qt4Project *parent, const QString &id) : this, SLOT(updateToolTipAndIcon())); setDisplayName(displayNameForId(id)); - updateToolTipAndIcon(); + setIcon(iconForId(id)); } Qt4Target::~Qt4Target() @@ -407,7 +407,7 @@ bool Qt4Target::fromMap(const QVariantMap &map) return false; setDisplayName(displayNameForId(id())); - updateToolTipAndIcon(); + setIcon(iconForId(id())); return true; } @@ -455,22 +455,14 @@ void Qt4Target::changeTargetInformation() void Qt4Target::updateToolTipAndIcon() { + static const int TARGET_OVERLAY_ORIGINAL_SIZE = 32; if (const S60DeviceRunConfiguration *s60DeviceRc = qobject_cast<S60DeviceRunConfiguration *>(activeRunConfiguration())) { - QPixmap pixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE); - pixmap.fill(Qt::transparent); - QPainter painter(&pixmap); - const QIcon &icon = iconForId(id()); - QSize actualSize = icon.actualSize(QSize(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE)); - painter.drawPixmap((Core::Constants::TARGET_ICON_SIZE-actualSize.width())/2, - (Core::Constants::TARGET_ICON_SIZE-actualSize.height())/2, - icon.pixmap(Core::Constants::TARGET_ICON_SIZE)); - const SymbianUtils::SymbianDeviceManager *sdm = SymbianUtils::SymbianDeviceManager::instance(); const int deviceIndex = sdm->findByPortName(s60DeviceRc->serialPortName()); + QPixmap overlay; if (deviceIndex == -1) { setToolTip(tr("<b>Device:</b> Not connected")); - painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - m_disconnectedPixmap.width(), - m_disconnectedPixmap.height(), m_disconnectedPixmap); + overlay = m_disconnectedPixmap; } else { // device connected const SymbianUtils::SymbianDevice device = sdm->devices().at(deviceIndex); @@ -478,12 +470,20 @@ void Qt4Target::updateToolTipAndIcon() tr("<b>Device:</b> %1").arg(device.friendlyName()) : tr("<b>Device:</b> %1, %2").arg(device.friendlyName(), device.additionalInformation()); setToolTip(tooltip); - painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - m_connectedPixmap.width(), - m_connectedPixmap.height(), m_connectedPixmap); + overlay = m_connectedPixmap; } - setIcon(QIcon(pixmap)); - return; + double factor = Core::Constants::TARGET_ICON_SIZE / (double)TARGET_OVERLAY_ORIGINAL_SIZE; + QSize overlaySize(overlay.size().width()*factor, overlay.size().height()*factor); + QPixmap pixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE); + pixmap.fill(Qt::transparent); + QPainter painter(&pixmap); + painter.drawPixmap(Core::Constants::TARGET_ICON_SIZE - overlaySize.width(), + Core::Constants::TARGET_ICON_SIZE - overlaySize.height(), + overlay.scaled(overlaySize)); + + setOverlayIcon(QIcon(pixmap)); + } else { + setToolTip(QString()); + setOverlayIcon(QIcon()); } - setToolTip(QString()); - setIcon(iconForId(id())); } |