diff options
| -rw-r--r-- | lib/service/listboxservice.cpp | 13 | ||||
| -rw-r--r-- | lib/service/listboxservice.h | 10 |
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 |
