void eListboxServiceContent::cursorHome() { if (m_current_marked && m_saved_cursor == m_list.end()) { if (m_cursor_number >= m_size) { m_cursor_number = m_size-1; --m_cursor; } while (m_cursor_number) { swapServices(m_cursor--, m_cursor); --m_cursor_number; if (m_listbox && m_cursor_number) m_listbox->entryChanged(cursorResolve(m_cursor_number)); } } else { m_cursor = m_list.begin(); m_cursor_number = 0; while (m_cursor != m_list.end()) { if (!((m_hide_number_marker && (m_cursor->flags & eServiceReference::isNumberedMarker)) || (m_cursor->flags & eServiceReference::isInvisible))) break; m_cursor++; m_cursor_number++; } } }
int eListboxServiceContent::cursorMove(int count) { int prev = m_cursor_number, last = m_cursor_number + count; if (count > 0) { while(count && m_cursor != m_list.end()) { list::iterator prev_it = m_cursor++; if ( m_current_marked && m_cursor != m_list.end() && m_saved_cursor == m_list.end() ) { swapServices(prev_it, m_cursor); if ( m_listbox && prev != m_cursor_number && last != m_cursor_number ) m_listbox->entryChanged(cursorResolve(m_cursor_number)); } ++m_cursor_number; if (!(m_hide_number_marker && m_cursor->flags & eServiceReference::isNumberedMarker) && !(m_cursor->flags & eServiceReference::isInvisible)) --count; } } else if (count < 0) { while (count && m_cursor != m_list.begin()) { list::iterator prev_it = m_cursor--; if ( m_current_marked && m_cursor != m_list.end() && prev_it != m_list.end() && m_saved_cursor == m_list.end() ) { swapServices(prev_it, m_cursor); if ( m_listbox && prev != m_cursor_number && last != m_cursor_number ) m_listbox->entryChanged(cursorResolve(m_cursor_number)); } --m_cursor_number; if (!(m_hide_number_marker && m_cursor->flags & eServiceReference::isNumberedMarker) && !(m_cursor->flags & eServiceReference::isInvisible)) ++count; } while (m_cursor != m_list.end()) { if (!((m_hide_number_marker && (m_cursor->flags & eServiceReference::isNumberedMarker)) || (m_cursor->flags & eServiceReference::isInvisible))) break; m_cursor++; m_cursor_number++; } } return 0; }
void eListboxServiceContent::cursorEnd() { if (m_current_marked && m_saved_cursor == m_list.end()) { while (m_cursor != m_list.end()) { list::iterator prev = m_cursor++; ++m_cursor_number; if ( prev != m_list.end() && m_cursor != m_list.end() ) { swapServices(m_cursor, prev); if ( m_listbox ) m_listbox->entryChanged(cursorResolve(m_cursor_number)); } } } else { m_cursor = m_list.end(); m_cursor_number = m_size; } }
void eListboxServiceContent::cursorHome() { if (m_current_marked && m_saved_cursor == m_list.end()) { if (m_cursor_number >= m_size) { m_cursor_number = m_size-1; --m_cursor; } while (m_cursor_number) { swapServices(m_cursor--, m_cursor); --m_cursor_number; if (m_listbox && m_cursor_number) m_listbox->entryChanged(cursorResolve(m_cursor_number)); } } else { m_cursor = m_list.begin(); m_cursor_number = 0; } }