void Window::setIcon(int index) { QIcon icon = iconComboBox->itemIcon(index); std::cout << "Setting item to index: " << index << " QIcon.name: " << icon.name().toStdString() << std::endl; //QIcon icon = QIcon(":/bad.svg"); trayIcon->setIcon(icon); setWindowIcon(icon); trayIcon->setToolTip(iconComboBox->itemText(index)); }
QIcon GuiIconProvider::getIcon(const QString &iconId, const QString &fallback) const { #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) if (m_useSystemTheme) { QIcon icon = QIcon::fromTheme(iconId); if (icon.name() != iconId) icon = QIcon::fromTheme(fallback, QIcon(IconProvider::getIconPath(iconId))); return icon; } #else Q_UNUSED(fallback) #endif // cache to avoid rescaling svg icons static QHash<QString, QIcon> iconCache; const auto iter = iconCache.find(iconId); if (iter != iconCache.end()) return *iter; const QIcon icon {IconProvider::getIconPath(iconId)}; iconCache[iconId] = icon; return icon; }
void AbstractClient::setupWindowManagementInterface() { if (m_windowManagementInterface) { // already setup return; } if (!waylandServer() || !surface()) { return; } if (!waylandServer()->windowManagement()) { return; } using namespace KWayland::Server; auto w = waylandServer()->windowManagement()->createWindow(this); w->setTitle(caption()); w->setVirtualDesktop(isOnAllDesktops() ? 0 : desktop() - 1); w->setActive(isActive()); w->setFullscreen(isFullScreen()); w->setKeepAbove(keepAbove()); w->setKeepBelow(keepBelow()); w->setMaximized(maximizeMode() == KWin::MaximizeFull); w->setMinimized(isMinimized()); w->setOnAllDesktops(isOnAllDesktops()); w->setDemandsAttention(isDemandingAttention()); w->setCloseable(isCloseable()); w->setMaximizeable(isMaximizable()); w->setMinimizeable(isMinimizable()); w->setFullscreenable(isFullScreenable()); w->setThemedIconName(icon().name().isEmpty() ? QStringLiteral("xorg") : icon().name()); w->setAppId(QString::fromUtf8(resourceName())); w->setSkipTaskbar(skipTaskbar()); connect(this, &AbstractClient::skipTaskbarChanged, w, [w, this] { w->setSkipTaskbar(skipTaskbar()); } ); connect(this, &AbstractClient::captionChanged, w, [w, this] { w->setTitle(caption()); }); connect(this, &AbstractClient::desktopChanged, w, [w, this] { if (isOnAllDesktops()) { w->setOnAllDesktops(true); return; } w->setVirtualDesktop(desktop() - 1); w->setOnAllDesktops(false); } ); connect(this, &AbstractClient::activeChanged, w, [w, this] { w->setActive(isActive()); }); connect(this, &AbstractClient::fullScreenChanged, w, [w, this] { w->setFullscreen(isFullScreen()); }); connect(this, &AbstractClient::keepAboveChanged, w, &PlasmaWindowInterface::setKeepAbove); connect(this, &AbstractClient::keepBelowChanged, w, &PlasmaWindowInterface::setKeepBelow); connect(this, &AbstractClient::minimizedChanged, w, [w, this] { w->setMinimized(isMinimized()); }); connect(this, static_cast<void (AbstractClient::*)(AbstractClient*,MaximizeMode)>(&AbstractClient::clientMaximizedStateChanged), w, [w] (KWin::AbstractClient *c, MaximizeMode mode) { Q_UNUSED(c); w->setMaximized(mode == KWin::MaximizeFull); } ); connect(this, &AbstractClient::demandsAttentionChanged, w, [w, this] { w->setDemandsAttention(isDemandingAttention()); }); connect(this, &AbstractClient::iconChanged, w, [w, this] { const QIcon i = icon(); w->setThemedIconName(i.name().isEmpty() ? QStringLiteral("xorg") : i.name()); } ); connect(this, &AbstractClient::windowClassChanged, w, [w, this] { w->setAppId(QString::fromUtf8(resourceName())); } ); connect(w, &PlasmaWindowInterface::closeRequested, this, [this] { closeWindow(); }); connect(w, &PlasmaWindowInterface::virtualDesktopRequested, this, [this] (quint32 desktop) { workspace()->sendClientToDesktop(this, desktop + 1, true); } ); connect(w, &PlasmaWindowInterface::fullscreenRequested, this, [this] (bool set) { setFullScreen(set, false); } ); connect(w, &PlasmaWindowInterface::minimizedRequested, this, [this] (bool set) { if (set) { minimize(); } else { unminimize(); } } ); connect(w, &PlasmaWindowInterface::maximizedRequested, this, [this] (bool set) { maximize(set ? MaximizeFull : MaximizeRestore); } ); connect(w, &PlasmaWindowInterface::keepAboveRequested, this, [this] (bool set) { setKeepAbove(set); } ); connect(w, &PlasmaWindowInterface::keepBelowRequested, this, [this] (bool set) { setKeepBelow(set); } ); connect(w, &PlasmaWindowInterface::demandsAttentionRequested, this, [this] (bool set) { demandAttention(set); } ); connect(w, &PlasmaWindowInterface::activeRequested, this, [this] (bool set) { if (set) { workspace()->activateClient(this, true); } } ); m_windowManagementInterface = w; }
/*! \since 4.6 Returns \c true if there is an icon available for \a name in the current icon theme, otherwise returns \c false. \sa themeSearchPaths(), fromTheme(), setThemeName() */ bool QIcon::hasThemeIcon(const QString &name) { QIcon icon = fromTheme(name); return icon.name() == name; }
QString DiscoverMainWindow::iconName(const QIcon& icon) { return icon.name(); }
QIcon PlexyDesktopIconProvider::icon(const QFileInfo &info) const { QIcon rv = QFileIconProvider::icon(info); return QIcon::fromTheme(rv.name(), rv); }
QIcon PlexyDesktopIconProvider::icon(QFileIconProvider::IconType type) const { QIcon rv = QFileIconProvider::icon(type); return QIcon::fromTheme(rv.name(), rv); }