aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/service/listboxservice.cpp13
-rw-r--r--lib/service/listboxservice.h10
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp
index db4f6b86..24090f73 100644
--- a/lib/service/listboxservice.cpp
+++ b/lib/service/listboxservice.cpp
@@ -54,6 +54,19 @@ int eListboxServiceContent::isMarked(const eServiceReference &ref)
return m_marked.find(ref) != m_marked.end();
}
+void eListboxServiceContent::markedQueryStart()
+{
+ m_marked_iterator = m_marked.begin();
+}
+
+int eListboxServiceContent::markedQueryNext(eServiceReference &ref)
+{
+ if (m_marked_iterator == m_marked.end())
+ return -1;
+ ref = *m_marked_iterator++;
+ return 0;
+}
+
int eListboxServiceContent::lookupService(const eServiceReference &ref)
{
/* shortcut for cursor */
diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h
index d5241933..36bb5bb4 100644
--- a/lib/service/listboxservice.h
+++ b/lib/service/listboxservice.h
@@ -20,9 +20,13 @@ public:
void addMarked(const eServiceReference &ref);
void removeMarked(const eServiceReference &ref);
int isMarked(const eServiceReference &ref);
- int lookupService(const eServiceReference &ref);
-
+
+ /* this is NOT thread safe! */
+ void markedQueryStart();
+ int markedQueryNext(eServiceReference &ref);
+ int lookupService(const eServiceReference &ref);
+
protected:
void cursorHome();
void cursorEnd();
@@ -56,6 +60,8 @@ private:
/* support for marked services */
std::set<eServiceReference> m_marked;
+
+ std::set<eServiceReference>::const_iterator m_marked_iterator;
};
#endif