+void DolphinFacetsWidget::updateTagsMenuItems(const QUrl&, const KFileItemList& items)
+{
+ QMenu *tagsMenu = m_tagsSelector->menu();
+ tagsMenu->clear();
+
+ QStringList allTags = QStringList(m_searchTags);
+ for (const KFileItem &item: items) {
+ allTags.append(item.name());
+ }
+ allTags.sort(Qt::CaseInsensitive);
+ allTags.removeDuplicates();
+
+ const bool onlyOneTag = allTags.count() == 1;
+
+ for (const QString& tagName : qAsConst(allTags)) {
+ QAction *action = tagsMenu->addAction(QIcon::fromTheme(QStringLiteral("tag")), tagName);
+ action->setCheckable(true);
+ action->setChecked(m_searchTags.contains(tagName));
+
+ connect(action, &QAction::triggered, this, [this, tagName, onlyOneTag](bool isChecked) {
+ if (isChecked) {
+ addSearchTag(tagName);
+ } else {
+ removeSearchTag(tagName);
+ }
+ Q_EMIT facetChanged();
+
+ if (!onlyOneTag) {
+ m_tagsSelector->menu()->show();
+ }
+ });
+ }
+
+ if (allTags.count() > 1) {
+ tagsMenu->addSeparator();
+ tagsMenu->addAction(m_clearTagsAction);
+ }
+
+ updateTagsSelector();
+}