#ifndef KWQLISTBOX_H_
#define KWQLISTBOX_H_
#include "KWQScrollView.h"
enum KWQListBoxItemType {
KWQListBoxOption,
KWQListBoxGroupLabel,
KWQListBoxSeparator
};
struct KWQListBoxItem
{
QString string;
KWQListBoxItemType type;
KWQListBoxItem(const QString &s, KWQListBoxItemType t) : string(s), type(t) { }
};
class QListBox : public QScrollView {
public:
enum SelectionMode { Single, Extended };
QListBox(QWidget *parent);
~QListBox();
QSize sizeForNumberOfLines(int numLines) const;
uint count() const { return _items.count(); }
void setSelectionMode(SelectionMode);
void clear();
void appendItem(const QString &s) { appendItem(s, KWQListBoxOption); }
void appendGroupLabel(const QString &s) { appendItem(s, KWQListBoxGroupLabel); }
void doneAppendingItems();
void setSelected(int, bool);
bool isSelected(int) const;
void setEnabled(bool enabled);
bool isEnabled();
const KWQListBoxItem &itemAtIndex(int index) const { return _items[index]; }
void setWritingDirection(QPainter::TextDirection);
bool changingSelection() { return _changingSelection; }
void clicked() { _clicked.call(); }
void selectionChanged() { _selectionChanged.call(); }
virtual FocusPolicy focusPolicy() const;
virtual bool checksDescendantsForFocus() const;
static void clearCachedTextRenderers();
void setFont(const QFont &font);
private:
void appendItem(const QString &, KWQListBoxItemType);
QValueList<KWQListBoxItem> _items;
bool _changingSelection;
bool _enabled;
mutable float _width;
mutable bool _widthGood;
KWQSignal _clicked;
KWQSignal _selectionChanged;
};
#endif