#ifndef KWQLISTBOX_H_
#define KWQLISTBOX_H_
#include "KWQScrollView.h"
#include "KWQString.h"
#include "KWQSignal.h"
class QListBoxItem;
#ifdef __OBJC__
@class NSMutableArray;
@class NSObject;
#else
class NSMutableArray;
class NSObject;
#endif
class QListBox : public QScrollView {
friend class QListBoxItem;
public:
enum SelectionMode { Single, Extended };
QListBox(QWidget *parent);
~QListBox();
QSize sizeForNumberOfLines(int numLines) const;
uint count() const;
void clear();
void setSelectionMode(SelectionMode);
void beginBatchInsert();
void insertItem(const QString &s, int i) { insertItem(s, i, false); }
void insertGroupLabel(const QString &s, int i) { insertItem(s, i, true); }
void endBatchInsert();
void setSelected(int, bool);
bool isSelected(int) const;
void setEnabled(bool enabled);
bool isEnabled();
bool itemIsGroupLabel(int index) const;
void setWritingDirection(QPainter::TextDirection);
bool changingSelection() { return _changingSelection; }
void clicked() { _clicked.call(); }
void selectionChanged() { _selectionChanged.call(); }
virtual FocusPolicy focusPolicy() const;
virtual bool checksDescendantsForFocus() const;
private:
void insertItem(const QString &, int index, bool isLabel);
NSMutableArray *_items;
bool _insertingItems;
bool _changingSelection;
bool _enabled;
mutable float _width;
mutable bool _widthGood;
KWQSignal _clicked;
KWQSignal _selectionChanged;
};
#endif