// 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 KTimeComboBox : KComboBox
{
%TypeHeaderCode
#include <ktimecombobox.h>
%End

public:
    enum Option
    {
        EditTime,
        SelectTime,
        ForceTime,
        WarnOnInvalid
    };
    typedef QFlags<KTimeComboBox::Option> Options;
    explicit                KTimeComboBox (QWidget* parent /TransferThis/ = 0);
    virtual ~KTimeComboBox ();
    QTime                   time () const;
    bool                    isValid () const;
    KTimeComboBox::Options  options () const;
    QTime                   minimumTime () const;
    void                    resetMinimumTime ();
    QTime                   maximumTime () const;
    void                    resetMaximumTime ();
    void                    setTimeRange (const QTime& minTime, const QTime& maxTime, const QString& minWarnMsg = QString(), const QString& maxWarnMsg = QString());
    void                    resetTimeRange ();
signals:
    void                    timeEntered (const QTime& time);
    void                    timeChanged (const QTime& time);
    void                    timeEdited (const QTime& time);
public:
    void                    setTime (const QTime& time);
    void                    setOptions (KTimeComboBox::Options options);
    void                    setDisplayFormat (KLocale::TimeFormatOptions formatOptions);
protected:
    virtual bool            eventFilter (QObject* object, QEvent* event);
    virtual void            showPopup ();
    virtual void            hidePopup ();
    virtual void            mousePressEvent (QMouseEvent* event);
    virtual void            wheelEvent (QWheelEvent* event);
    virtual void            keyPressEvent (QKeyEvent* event);
    virtual void            focusInEvent (QFocusEvent* event);
    virtual void            focusOutEvent (QFocusEvent* event);
    virtual void            resizeEvent (QResizeEvent* event);
    virtual void            assignTime (const QTime& time);
public:
    int                     timeListInterval () const;
    QList<QTime>            timeList () const;
    void                    setMinimumTime (const QTime& minTime, const QString& minWarnMsg = QString());
    void                    setMaximumTime (const QTime& maxTime, const QString& maxWarnMsg = QString());
    void                    setTimeListInterval (int minutes);
    void                    setTimeList (QList<QTime> timeList, const QString& minWarnMsg = QString(), const QString& maxWarnMsg = QString());
    bool                    isNull () const;
    KLocale::TimeFormatOptions  displayFormat () const;
};
