void TrayIcon::updateIcon() { bool unreads = Logic::GetRecentsModel()->totalUnreads() != 0; if (unreads != HaveUnreads_) { HaveUnreads_ = unreads; #ifdef _WIN32 if (ptbl) ptbl->SetOverlayIcon((HWND)MainWindow_->winId(), unreads ? qt_pixmapToWinHICON(*TaskBarOverlay_) : HICON(), L""); else MainWindow_->setWindowIcon(unreads ? *Unreads_ : *Base_); #endif //_WIN32 if (!platform::is_apple()) { Icon_->setIcon(unreads ? *TrayUnreads_ : *TrayBase_); } else { setMacIcon(); } } updateStatus(); }
void Core::Internal::ProgressManagerPrivate::doSetApplicationLabel(const QString &text) { if (!pITask) return; const HWND winId = hwndOfWidget(Core::ICore::mainWindow()); if (text.isEmpty()) { pITask->SetOverlayIcon(winId, NULL, NULL); } else { QPixmap pix(Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(":/core/images/compile_error_taskbar.png"))); pix.setDevicePixelRatio(1); // We want device-pixel sized font depending on the pix.height QPainter p(&pix); p.setPen(Qt::white); QFont font = p.font(); font.setPixelSize(pix.height() * 0.5); p.setFont(font); p.drawText(pix.rect(), Qt::AlignCenter, text); #if QT_VERSION >= 0x050000 const HICON icon = qt_pixmapToWinHICON(pix); #else const HICON icon = pix.toWinHICON(); #endif pITask->SetOverlayIcon(winId, icon, (wchar_t*)text.utf16()); DestroyIcon(icon); } }
void QVistaHelper::drawTitleBar(QPainter *painter) { Q_ASSERT(backButton_); QPoint origin; const bool isWindow = wizard->isWindow(); const HDC hdc = QVistaHelper::backingStoreDC(wizard, &origin); if (vistaState() == VistaAero && isWindow) drawBlackRect(QRect(0, 0, wizard->width(), titleBarSize() + topOffset()), hdc); // The button is positioned in QWizardPrivate::handleAeroStyleChange(), // all calculation is relative to it. const int btnTop = backButton_->mapToParent(QPoint()).y(); const int btnHeight = backButton_->size().height(); const int verticalCenter = (btnTop + btnHeight / 2) - 1; const QString text = wizard->window()->windowTitle(); QFont font; if (!isWindow || !getCaptionQFont(wizard->logicalDpiY() * wizard->devicePixelRatio(), &font)) font = QApplication::font("QMdiSubWindowTitleBar"); const QFontMetrics fontMetrics(font); const QRect brect = fontMetrics.boundingRect(text); int textHeight = brect.height(); int textWidth = brect.width(); int glowOffset = 0; if (vistaState() == VistaAero) { textHeight += 2 * glowSize(); textWidth += 2 * glowSize(); glowOffset = glowSize(); } const int titleLeft = (wizard->layoutDirection() == Qt::LeftToRight ? titleOffset() - glowOffset : wizard->width() - titleOffset() - textWidth + glowOffset); const QRect textRectangle(titleLeft, verticalCenter - textHeight / 2, textWidth, textHeight); if (isWindow) { drawTitleText(painter, text, textRectangle, hdc); } else { painter->save(); painter->setFont(font); painter->drawText(textRectangle, Qt::AlignVCenter | Qt::AlignHCenter, text); painter->restore(); } const QIcon windowIcon = wizard->windowIcon(); if (!windowIcon.isNull()) { const int size = QVistaHelper::iconSize(); const int iconLeft = (wizard->layoutDirection() == Qt::LeftToRight ? leftMargin() : wizard->width() - leftMargin() - size); const QPoint pos(origin.x() + iconLeft, origin.y() + verticalCenter - size / 2); const QPoint posDp = pos * QVistaHelper::m_devicePixelRatio; const HICON hIcon = qt_pixmapToWinHICON(windowIcon.pixmap(size * QVistaHelper::m_devicePixelRatio)); DrawIconEx(hdc, posDp.x(), posDp.y(), hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT); DestroyIcon(hIcon); } }
void Core::Internal::ProgressManagerPrivate::doSetApplicationLabel(const QString &text) { if (!pITask) return; const HWND winId = hwndOfWidget(Core::ICore::mainWindow()); if (text.isEmpty()) { pITask->SetOverlayIcon(winId, NULL, NULL); } else { QPixmap pix = QPixmap(QLatin1String(":/core/images/compile_error_taskbar.png")); QPainter p(&pix); p.setPen(Qt::white); QFont font = p.font(); font.setPointSize(font.pointSize()-2); p.setFont(font); p.drawText(QRect(QPoint(0,0), pix.size()), Qt::AlignHCenter|Qt::AlignCenter, text); #if QT_VERSION >= 0x050000 const HICON icon = qt_pixmapToWinHICON(pix); #else const HICON icon = pix.toWinHICON(); #endif pITask->SetOverlayIcon(winId, icon, (wchar_t*)text.utf16()); DestroyIcon(icon); } }
void QVistaHelper::drawTitleBar(QPainter *painter) { Q_ASSERT(backButton_); QPoint origin; const bool isWindow = wizard->isWindow(); const HDC hdc = QVistaHelper::backingStoreDC(wizard, &origin); if (vistaState() == VistaAero && isWindow) drawBlackRect(QRect(0, 0, wizard->width(), titleBarSize() + topOffset()), hdc); const int btnTop = backButton_->mapToParent(QPoint()).y(); const int btnHeight = backButton_->size().height(); const int verticalCenter = (btnTop + btnHeight / 2) - 1; const QString text = wizard->window()->windowTitle(); const QFont font = QApplication::font("QMdiSubWindowTitleBar"); const QFontMetrics fontMetrics(font); const QRect brect = fontMetrics.boundingRect(text); int textHeight = brect.height(); int textWidth = brect.width(); int glowOffset = 0; if (vistaState() == VistaAero) { textHeight += 2 * glowSize(); textWidth += 2 * glowSize(); glowOffset = glowSize(); } const int titleLeft = (wizard->layoutDirection() == Qt::LeftToRight ? titleOffset() - glowOffset : wizard->width() - titleOffset() - textWidth + glowOffset); const QRect textRectangle(titleLeft, verticalCenter - textHeight / 2, textWidth, textHeight); if (isWindow) { drawTitleText(painter, text, textRectangle, hdc); } else { painter->save(); painter->setFont(font); painter->drawText(textRectangle, Qt::AlignVCenter | Qt::AlignHCenter, text); painter->restore(); } const QIcon windowIcon = wizard->windowIcon(); if (!windowIcon.isNull()) { const int iconLeft = (wizard->layoutDirection() == Qt::LeftToRight ? leftMargin() : wizard->width() - leftMargin() - iconSize()); const QRect rect(origin.x() + iconLeft, origin.y() + verticalCenter - iconSize() / 2, iconSize(), iconSize()); const HICON hIcon = qt_pixmapToWinHICON(windowIcon.pixmap(iconSize())); DrawIconEx(hdc, rect.left(), rect.top(), hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT); DestroyIcon(hIcon); } }
void Core::Internal::ProgressManagerPrivate::doSetApplicationLabel(const QString &text) { if (!pITask) return; const HWND winId = hwndOfWidget(Core::ICore::mainWindow()); if (text.isEmpty()) { pITask->SetOverlayIcon(winId, NULL, NULL); } else { QPixmap pix = Core::Icons::ERROR_TASKBAR.pixmap(); pix.setDevicePixelRatio(1); // We want device-pixel sized font depending on the pix.height QPainter p(&pix); p.setPen(Qt::white); QFont font = p.font(); font.setPixelSize(pix.height() * 0.5); p.setFont(font); p.drawText(pix.rect(), Qt::AlignCenter, text); const HICON icon = qt_pixmapToWinHICON(pix); pITask->SetOverlayIcon(winId, icon, (wchar_t*)text.utf16()); DestroyIcon(icon); } }