diff --git a/src/base/searchengine.cpp b/src/base/searchengine.cpp index e569ca38b..609be5ac7 100644 --- a/src/base/searchengine.cpp +++ b/src/base/searchengine.cpp @@ -240,6 +240,20 @@ bool SearchEngine::uninstallPlugin(const QString &name) return true; } +void SearchEngine::updateIconPath(PluginInfo * const plugin) +{ + if (!plugin) return; + QString iconPath = QString("%1/%2.png").arg(pluginsLocation()).arg(plugin->name); + if (QFile::exists(iconPath)) { + plugin->iconPath = iconPath; + } + else { + iconPath = QString("%1/%2.ico").arg(pluginsLocation()).arg(plugin->name); + if (QFile::exists(iconPath)) + plugin->iconPath = iconPath; + } +} + void SearchEngine::checkForUpdates() { // Download version file from update server on sourceforge @@ -528,16 +542,7 @@ void SearchEngine::update() QStringList disabledEngines = Preferences::instance()->getSearchEngDisabled(); plugin->enabled = !disabledEngines.contains(pluginName); - // Handle icon - QString iconPath = QString("%1/%2.png").arg(pluginsLocation()).arg(pluginName); - if (QFile::exists(iconPath)) { - plugin->iconPath = iconPath; - } - else { - iconPath = QString("%1/%2.ico").arg(pluginsLocation()).arg(pluginName); - if (QFile::exists(iconPath)) - plugin->iconPath = iconPath; - } + updateIconPath(plugin); if (!m_plugins.contains(pluginName)) { m_plugins[pluginName] = plugin; diff --git a/src/base/searchengine.h b/src/base/searchengine.h index b44b8e55d..65ad7b1ec 100644 --- a/src/base/searchengine.h +++ b/src/base/searchengine.h @@ -84,6 +84,7 @@ public: void updatePlugin(const QString &name); void installPlugin(const QString &source); bool uninstallPlugin(const QString &name); + static void updateIconPath(PluginInfo * const plugin); void checkForUpdates(); void startSearch(const QString &pattern, const QString &category, const QStringList &usedPlugins); diff --git a/src/gui/search/pluginselectdlg.cpp b/src/gui/search/pluginselectdlg.cpp index df4ee6316..f891a9fe7 100644 --- a/src/gui/search/pluginselectdlg.cpp +++ b/src/gui/search/pluginselectdlg.cpp @@ -374,8 +374,10 @@ void PluginSelectDlg::iconDownloaded(const QString &url, QString filePath) QFile icon(filePath); icon.open(QIODevice::ReadOnly); QString iconPath = QString("%1/%2.%3").arg(SearchEngine::pluginsLocation()).arg(id).arg(ICOHandler::canRead(&icon) ? "ico" : "png"); - if (QFile::copy(filePath, iconPath)) + if (QFile::copy(filePath, iconPath)) { item->setData(PLUGIN_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath))); + m_pluginManager->updateIconPath(plugin); + } } } // Delete tmp file