diff --git a/livesupport/src/products/gLiveSupport/src/SearchWindow.cxx b/livesupport/src/products/gLiveSupport/src/SearchWindow.cxx index 49a078451..ab6d381a0 100644 --- a/livesupport/src/products/gLiveSupport/src/SearchWindow.cxx +++ b/livesupport/src/products/gLiveSupport/src/SearchWindow.cxx @@ -291,12 +291,30 @@ SearchWindow :: constructSearchResultsView(void) throw () void SearchWindow :: onSimpleSearch(void) throw () { - Glib::ustring value = simpleSearchEntry->get_text(); + Glib::ustring value = simpleSearchEntry->get_text(); - Ptr::Ref criteria(new SearchCriteria("all", "or")); - criteria->addCondition("dc:title", "partial", value); // id3v2 Title - criteria->addCondition("dc:creator", "partial", value); // id3v2 Artist - criteria->addCondition("dc:source", "partial", value); // id3v2 Album + Ptr::Ref metadataTypes + = gLiveSupport->getMetadataTypeContainer(); + MetadataTypeContainer::Vector::const_iterator + it = metadataTypes->begin(); + + Ptr::Ref criteria(new SearchCriteria("all", "or")); + Ptr::Ref metadata; + + if (it != metadataTypes->end()) { + metadata = *it; + criteria->addCondition(*metadata->getDcName(), "partial", value); + } + + if (++it != metadataTypes->end()) { + metadata = *it; + criteria->addCondition(*metadata->getDcName(), "partial", value); + } + + if (++it != metadataTypes->end()) { + metadata = *it; + criteria->addCondition(*metadata->getDcName(), "partial", value); + } onSearch(criteria); }