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

    /* This file is part of the KDE libraries
       Copyright (C) 1996 Martynas Kunigelis

       This library is free software; you can redistribute it and/or
       modify it under the terms of the GNU Library General Public
       License version 2 as published by the Free Software Foundation.

       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.
    */
    /*****************************************************************************
    *                                                                            *
    *  KProgress -- progress indicator widget for KDE by Martynas Kunigelis      *
    *                                                                            *
    *****************************************************************************/

    #ifndef _KPROGRES_H
    #define _KPROGRES_H "$Id: kprogress.h,v 1.18 2000/06/26 12:31:15 faure Exp $"

    #include <qframe.h>
    #include <qrangecontrol.h>

    /**
     * A stylized progress bar.
     *
     * KProgress is derived from @ref QFrame and @ref QRangeControl, so
     * you can use all the methods from those classes. The only difference
     * is that @ref setValue() is now made a slot, so you can connect
     * stuff to it.
     *
     * @sect Details
     *
     * None of the constructors take line step and page step as arguments,
     * so by default they're set to 1 and 10 respectively.
     *
     * The Blocked style ignores the @ref textEnabled() setting and displays
     * no text, since it looks truly ugly (and for other reasons). Signal
     * @ref percentageChanged() is emitted whenever the value changes so you
     * can set up a different widget to display the current percentage complete
     * and connect the signal to it.
     *
     * @short A progress indicator widget.
     * @author Martynas Kunigelis
     * @version $Id: kprogress.h,v 1.18 2000/06/26 12:31:15 faure Exp $
     */
    class KProgress : public QFrame, public QRangeControl
    {
      Q_OBJECT
      Q_ENUMS( BarStyle )
      Q_PROPERTY( BarStyle barStyle READ barStyle WRITE setBarStyle )
      Q_PROPERTY( QColor barColor READ barColor WRITE setBarColor )
      Q_PROPERTY( QPixmap barPixmap READ barPixmap WRITE setBarPixmap )
      Q_PROPERTY( Orientation orientation READ orientation WRITE setOrientation )
      Q_PROPERTY( bool textEnabled READ textEnabled WRITE setTextEnabled )

    public:
      /**
      * Possible values for bar style.
      *
      * @p Solid means one continuous progress bar, @p Blocked means a
      * progress bar made up of several blocks.
      */
      enum BarStyle { Solid, Blocked };

      /**
      * Construct a horizontal progress bar.
      */
      KProgress(QWidget *parent=0, const char *name=0);

      /**
      * Construct a progress bar with orientation @p orient.
      */
      KProgress(Orientation orient, QWidget *parent=0, const char *name=0);

      /**
      * Construct a progress bar with minimum, maximum and initial values.
      */
      KProgress(int minValue, int maxValue, int value, Orientation,
    	    QWidget *parent=0, const char *name=0);

      /**
       * Destruct the progress bar.
       */
      ~KProgress();

      /**
      * Set the progress bar style.
      *
      * Allowed values are @p Solid and @p Blocked.
      */
      void setBarStyle(BarStyle style);

      /**
      * Set the color of the progress bar.
      */
      void setBarColor(const QColor &);

      /**
      * Set a pixmap to be shown in the progress bar.
      */
      void setBarPixmap(const QPixmap &);

      /**
      * Set the orientation of the progress bar.
      *
      * Allowed values are @p Horizontal and @p Vertical.
      */
      void setOrientation(Orientation);

      /**
       * If this is set to @p true, the progress text will be displayed.
       *
       */
      void setTextEnabled(bool);

      /**
      * Retrieve the bar style.
      *
      * @see setBarStyle()
      */
      BarStyle barStyle() const;

      /**
      * Retrieve the bar color.
      * @see setBarColor()
      */
      const QColor &barColor() const;

      /**
      * Retrieve the bar pixmap.
      *
      * @see setBarPixmap()
      */
      const QPixmap *barPixmap() const;

      /**
      * Retrive the orientation of the progress bar.
      *
      * @see setOrientation()
      */
      Orientation orientation() const;

      /**
      * Returns @p true if progress text will be displayed,
      * @p false otherwise.
      *
      * @see setFormat()
      */
      bool textEnabled() const;

      /**
       * @reimplemented
       */
      virtual QSize sizeHint() const;

      /**
       * @reimplemented
       */
      virtual QSizePolicy sizePolicy() const;

      /**
       * Set the format of the text to use to display status.
       *
       * The default format is "%p%" (which looks like "42%".)
       *
       * @param format %p is replaced by percentage done, %v is replaced by actual
       * value, %m is replaced by the maximum value.
       */
      void setFormat(const QString & format);

      /**
       * Retrieve the current format for printing status text.
       * @see setFormat()
       */
      QString format() const;

    public slots:
    	/**
    	 * Set the current value of the progress bar to @p value.
    	 *
             * This must be a number in the range 0..100.
    	 **/
    	  void setValue(int value);

            /**
    	 * Advance the progress bar by @p prog.
    	 *
    	 * This method is
             * provided for convenience and is equivalent with
             * @ref setValue(value()+prog).
    	 **/
    	void advance(int prog);

    signals:
    	/**
    	 * Emitted when the state of the progress bar changes.
    	 **/
    	void percentageChanged(int);

    protected:
    	/**
    	 * @reimplemented
    	 */
    	void valueChange();
    	/**
    	 * @reimplemented
    	 */
    	void rangeChange();
    	/**
    	 * @reimplemented
    	 */
    	void styleChange( QStyle& );
    	/**
    	 * @reimplemented
    	 */
    	void paletteChange( const QPalette & );
    	/**
    	 * @reimplemented
    	 */
    	void drawContents( QPainter * );

    private:
    	QPixmap		*bar_pixmap;
    	bool		use_supplied_bar_color;
    	QColor		bar_color;
    	QColor		bar_text_color;
    	QColor		text_color;
    	QRect fr;
    	BarStyle	bar_style;
    	Orientation orient;
    	bool		text_enabled;
      QString   format_;
    	void initialize();
    	int recalcValue(int);
    	void drawText(QPainter *);
    	void adjustStyle();

        class KProgressPrivate;
        KProgressPrivate *d;
    };

    #endif

Generated by: root@sparc.ports.openbsd.org on Wed May 2 09:37:45 2001, using kdoc 2.0a53.