qtmobility/plugins/contacts/wince/contactconversions.cpp
changeset 15 1f895d8a5b2b
parent 11 06b8e2af4411
--- a/qtmobility/plugins/contacts/wince/contactconversions.cpp	Wed Jun 23 19:08:38 2010 +0300
+++ b/qtmobility/plugins/contacts/wince/contactconversions.cpp	Tue Jul 06 15:12:50 2010 +0300
@@ -1428,6 +1428,32 @@
             break;
 
         case QContactFilter::ActionFilter:
+            {
+                // Find any matching actions, and do a union filter on their filter objects
+                QContactActionFilter af(filter);
+                QList<QContactActionDescriptor> descriptors = QContactAction::actionDescriptors(af.actionName(), af.vendorName(), af.implementationVersion());
+                
+                QString str;
+                QStringList strList;
+                for (int j = 0; j < descriptors.count(); j++) {
+                    QContactAction* action = QContactAction::action(descriptors.at(j));
+
+                    QContactFilter d = action->contactFilter(af.value());
+                    delete action; // clean up.
+                    if (!QContactManagerEngine::validateActionFilter(d))
+                        return QString();
+                    
+                    str = convertFilterToQueryString(d);
+                    if (str.isEmpty())
+                        return QString();
+                    strList << str;
+                }
+
+                if (!strList.isEmpty()) {
+                    ret =QString("(%1)").arg(strList.join(" OR "));
+                }
+                // Fall through to end
+            }
             break;
 
         case QContactFilter::IntersectionFilter: