Browse Source

Correctly use fallback icons for RSS feed in GUI

adaptive-webui-19844
jagannatharjun 3 years ago
parent
commit
68133ec8e3
  1. 45
      src/gui/rss/feedlistwidget.cpp

45
src/gui/rss/feedlistwidget.cpp

@ -66,6 +66,25 @@ namespace
return ((order == Qt::AscendingOrder) ? lhsSticky : rhsSticky); return ((order == Qt::AscendingOrder) ? lhsSticky : rhsSticky);
} }
}; };
QIcon loadIcon(const QString &path, const QString &fallbackId)
{
const QPixmap pixmap {path};
if (!pixmap.isNull())
return {pixmap};
return UIThemeManager::instance()->getIcon(fallbackId);
}
QIcon rssFeedIcon(const RSS::Feed *feed)
{
if (feed->isLoading())
return UIThemeManager::instance()->getIcon(QLatin1String("loading"));
if (feed->hasError())
return UIThemeManager::instance()->getIcon(QLatin1String("unavailable"));
return loadIcon(feed->iconPath(), QLatin1String("application-rss+xml"));
}
} }
FeedListWidget::FeedListWidget(QWidget *parent) FeedListWidget::FeedListWidget(QWidget *parent)
@ -113,16 +132,7 @@ void FeedListWidget::handleFeedStateChanged(RSS::Feed *feed)
QTreeWidgetItem *item = m_rssToTreeItemMapping.value(feed); QTreeWidgetItem *item = m_rssToTreeItemMapping.value(feed);
Q_ASSERT(item); Q_ASSERT(item);
QIcon icon; item->setData(0, Qt::DecorationRole, rssFeedIcon(feed));
if (feed->isLoading())
icon = UIThemeManager::instance()->getIcon(QLatin1String("loading"));
else if (feed->hasError())
icon = UIThemeManager::instance()->getIcon(QLatin1String("unavailable"));
else if (!feed->iconPath().isEmpty())
icon = QIcon(feed->iconPath());
else
icon = UIThemeManager::instance()->getIcon(QLatin1String("application-rss+xml"));
item->setData(0, Qt::DecorationRole, icon);
} }
void FeedListWidget::handleFeedIconLoaded(RSS::Feed *feed) void FeedListWidget::handleFeedIconLoaded(RSS::Feed *feed)
@ -132,7 +142,7 @@ void FeedListWidget::handleFeedIconLoaded(RSS::Feed *feed)
QTreeWidgetItem *item = m_rssToTreeItemMapping.value(feed); QTreeWidgetItem *item = m_rssToTreeItemMapping.value(feed);
Q_ASSERT(item); Q_ASSERT(item);
item->setData(0, Qt::DecorationRole, QIcon(feed->iconPath())); item->setData(0, Qt::DecorationRole, rssFeedIcon(feed));
} }
} }
@ -270,20 +280,9 @@ QTreeWidgetItem *FeedListWidget::createItem(RSS::Item *rssItem, QTreeWidgetItem
QIcon icon; QIcon icon;
if (auto feed = qobject_cast<RSS::Feed *>(rssItem)) if (auto feed = qobject_cast<RSS::Feed *>(rssItem))
{ icon = rssFeedIcon(feed);
if (feed->isLoading())
icon = UIThemeManager::instance()->getIcon(QLatin1String("loading"));
else if (feed->hasError())
icon = UIThemeManager::instance()->getIcon(QLatin1String("unavailable"));
else if (!feed->iconPath().isEmpty())
icon = QIcon(feed->iconPath());
else
icon = UIThemeManager::instance()->getIcon(QLatin1String("application-rss+xml"));
}
else else
{
icon = UIThemeManager::instance()->getIcon(QLatin1String("inode-directory")); icon = UIThemeManager::instance()->getIcon(QLatin1String("inode-directory"));
}
item->setData(0, Qt::DecorationRole, icon); item->setData(0, Qt::DecorationRole, icon);
connect(rssItem, &RSS::Item::unreadCountChanged, this, &FeedListWidget::handleItemUnreadCountChanged); connect(rssItem, &RSS::Item::unreadCountChanged, this, &FeedListWidget::handleItemUnreadCountChanged);

Loading…
Cancel
Save