Source: kpushbutton.h

# Source: kpushbutton.h |
Annotated List
Files
Globals
Hierarchy
Index

    /* This file is part of the KDE libraries
        Copyright (C) 2000 Carsten Pfeiffer

        library 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 of the License, or (at your option) any later version.

        This library 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
        Library General Public License for more details.

        You should have received a copy of the GNU Library General Public License
        along with this library; see the file COPYING.LIB.  If not, write to
        the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
        Boston, MA 02111-1307, USA.
    */

    #ifndef KPUSHBUTTON_H
    #define KPUSHBUTTON_H

    #include
    #include
    #include

    class QDragObject;

    /**
     * This is nothing but a QPushButton with drag-support and KGuiItem support. You have to call
     * @ref setDragEnabled( true ) and override the virtual method
     * @ref dragObject() to specify the QDragObject to be used.
     *
     * @short A QPushButton with drag-support and KGuiItem support
     * @author Carsten Pfeiffer
     */
    class KPushButton : public QPushButton
    {
        Q_OBJECT

    public:
        /**
         * Default constructor.
         */
        KPushButton( QWidget *parent, const char *name=0 );

        /**
         * Constructor, that sets the button-text to @p text
         */
        KPushButton( const QString &text, QWidget *parent, const char *name=0);

        /**
         * Constructor, that sets an icon and the button-text to @p text
         */
        KPushButton( const QIconSet &icon, const QString &text,
    		     QWidget *parent, const char *name=0 );

        /**
         * Constructor that takes a KGuiItem for the text, the icon, the tooltip
         * and the what's this help
         */
        KPushButton( const KGuiItem &item, QWidget *parent, const char *name = 0 );

        /**
         * Destructs the button.
         */
        ~KPushButton();

        /**
         * Enables/disables drag-support. Default is enabled.
         */
        void setDragEnabled( bool enable );

        /**
         * @returns if drag support is enabled or not.
         */
        bool isDragEnabled() const { return m_dragEnabled; }

        /**
         * Sets the KGuiItem for this button.
         */
        void setGuiItem( const KGuiItem& item );

    protected:
        /**
         * Reimplement this and return the QDragObject that should be used
         * for the drag.
         * Default implementation returns 0L, so that no drag is initiated.
         */
        virtual QDragObject * dragObject();

        /**
         * Reimplemented to add drag-support
         */
        virtual void mousePressEvent( QMouseEvent * );
        /**
         * Reimplemented to add drag-support
         */
        virtual void mouseMoveEvent( QMouseEvent * );

        /**
         * Starts a drag (dragCopy() by default) using @ref dragObject()
         */
        virtual void startDrag();

    private:
        bool m_dragEnabled;
        QPoint startPos;

    private slots:
        void slotSettingsChanged( int category );

    private:
        /**
         * Internal.
         * Initialize the KPushButton instance
         */
        void init( const KGuiItem &item );

        void readSettings();
        bool needIcons();
        static bool s_useIcons;

    protected:
        virtual void virtual_hook( int id, void* data );
    private:
        class KPushButtonPrivate;
        KPushButtonPrivate *d;

    };

    #endif // KPUSHBUTTON_H

Generated by: root on macppc.ports.openbsd.org on Sat Sep 6 10:36:37 2003, using kdoc 2.0a54.