// Copyright 2010 Simon Edwards <simon@simonzone.com>

//                 Generated by twine2

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details

// You should have received a copy of the GNU Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

class KEditListWidget : QWidget
{
%TypeHeaderCode
#include <keditlistwidget.h>
%End

public:
    class CustomEditor /NoDefaultCtors/
    {
%TypeHeaderCode
#include <keditlistwidget.h>
%End

    public:
                                CustomEditor ();
                                CustomEditor (QWidget* repWidget, KLineEdit* edit);
                                CustomEditor (KComboBox* combo);
        virtual ~CustomEditor ();
        void                    setRepresentationWidget (QWidget* repWidget);
        void                    setLineEdit (KLineEdit* edit);
        virtual QWidget*        representationWidget () const;
        virtual KLineEdit*      lineEdit () const;
    };
    enum Button
    {
        Add,
        Remove,
        UpDown,
        All
    };
    typedef QFlags<KEditListWidget::Button> Buttons;
    explicit                KEditListWidget (QWidget* parent /TransferThis/ = 0);
                            KEditListWidget (const KEditListWidget::CustomEditor& customEditor, QWidget* parent /TransferThis/ = 0, bool checkAtEntering = 0, KEditListWidget::Buttons buttons = KEditListWidget::All);
    virtual ~KEditListWidget ();
    QListView*              listView () const;
    KLineEdit*              lineEdit () const;
    QPushButton*            addButton () const;
    QPushButton*            removeButton () const;
    QPushButton*            upButton () const;
    QPushButton*            downButton () const;
    int                     count () const;
    void                    insertStringList (const QStringList& list, int index = -1);
    void                    insertItem (const QString& text, int index = -1);
    void                    clear ();
    QString                 text (int index) const;
    int                     currentItem () const;
    QString                 currentText () const;
    QStringList             items () const;
    void                    setItems (const QStringList& items);
    KEditListWidget::Buttons  buttons () const;
    void                    setButtons (KEditListWidget::Buttons buttons);
    void                    setCheckAtEntering (bool check);
    bool                    checkAtEntering ();
    void                    setCustomEditor (const KEditListWidget::CustomEditor& editor);
    bool                    eventFilter (QObject* o, QEvent* e);
signals:
    void                    changed ();
    void                    added (const QString& text);
    void                    removed (const QString& text);
};
