1 #include <lib/service/listboxservice.h>
2 #include <lib/service/service.h>
4 void eListboxServiceContent::setRoot(const eServiceReference &root)
8 assert(m_service_center);
10 ePtr<iListableService> lst;
11 if (m_service_center->list(m_root, lst))
12 eDebug("no list available!");
14 if (lst->getContent(m_list))
15 eDebug("getContent failed");
17 m_size = m_list.size();
21 void eListboxServiceContent::getCurrent(eServiceReference &ref)
26 ref = eServiceReference();
29 DEFINE_REF(eListboxServiceContent);
31 eListboxServiceContent::eListboxServiceContent()
35 eServiceCenter::getInstance(m_service_center);
38 void eListboxServiceContent::cursorHome()
40 m_cursor = m_list.begin();
44 void eListboxServiceContent::cursorEnd()
46 m_cursor = m_list.end();
47 m_cursor_number = m_size;
50 int eListboxServiceContent::cursorMove(int count)
54 while (count && (m_cursor != m_list.end()))
62 while (count && (m_cursor != m_list.begin()))
73 int eListboxServiceContent::cursorValid()
75 return m_cursor != m_list.end();
78 int eListboxServiceContent::cursorSet(int n)
86 int eListboxServiceContent::cursorGet()
88 return m_cursor_number;
91 void eListboxServiceContent::cursorSave()
93 m_saved_cursor = m_cursor;
94 m_saved_cursor_number = m_cursor_number;
97 void eListboxServiceContent::cursorRestore()
99 m_cursor = m_saved_cursor;
100 m_cursor_number = m_saved_cursor_number;
103 int eListboxServiceContent::size()
108 void eListboxServiceContent::setSize(const eSize &size)
113 void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
115 ePtr<gFont> fnt = new gFont("Arial", 14);
116 painter.clip(eRect(offset, m_itemsize));
117 style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
122 painter.setFont(fnt);
124 ePoint text_offset = offset + (selected ? ePoint(2, 2) : ePoint(1, 1));
126 /* get name of service */
127 ePtr<iStaticServiceInformation> service_info;
128 m_service_center->info(*m_cursor, service_info);
129 std::string name = "<n/a>";
132 service_info->getName(*m_cursor, name);
134 painter.renderText(eRect(text_offset, m_itemsize), name);
137 style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry);