summaryrefslogtreecommitdiffstats
path: root/kdeui/kprogress.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kprogress.h')
-rw-r--r--kdeui/kprogress.h401
1 files changed, 401 insertions, 0 deletions
diff --git a/kdeui/kprogress.h b/kdeui/kprogress.h
new file mode 100644
index 000000000..28ed989c7
--- /dev/null
+++ b/kdeui/kprogress.h
@@ -0,0 +1,401 @@
+/* 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., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+/*****************************************************************************
+* *
+* KProgress -- progress indicator widget for KDE *
+* Original QRangeControl-based version written by Martynas Kunigelis *
+* Current QProgressBar based version by Aaron Seigo *
+* *
+*****************************************************************************/
+
+#ifndef _KPROGRESS_H
+#define _KPROGRESS_H "$Id$"
+
+#include <qprogressbar.h>
+#include <kdialogbase.h>
+
+/**
+ * @short A progress indicator widget.
+ *
+ * KProgress is derived from QProgressBar, so
+ * you can use all the methods from that class. The only real difference
+ * is that a signal is emitted on changes to the value and you do not need
+ * to subclass KProgress just to change the format of the indicator text.
+ *
+ * \b Details \n
+ *
+ * \image html kprogress.png "KDE Progress Widget"
+ *
+ * @author Aaron Seigo
+ */
+class KDEUI_EXPORT KProgress : public QProgressBar
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Construct a progress bar.
+ */
+ KProgress(QWidget *parent=0, const char *name=0, WFlags f = 0);
+
+ /**
+ * Construct a progress bar with a total number of steps.
+ * The totalSteps is the total number of steps that need to be completed for the operation which this progress
+ * bar represents. For example, if the operation is to examine 50 files, this value would be 50. Before examining
+ * the first file, call setProgress(0); call setProgress(50) after examining the last file.
+ */
+ KProgress(int totalSteps, QWidget *parent=0, const char *name=0, WFlags f = 0);
+
+ /**
+ * Destruct the progress bar.
+ */
+ ~KProgress();
+
+ /**
+ * If this is set to @p true, the progress text will be displayed.
+ *
+ */
+ void setTextEnabled(bool);
+
+ /**
+ * @deprecated Retrieves the current status, use progress() instead
+ *
+ * @see setValue()
+ */
+ // ### Remove this KDE 4.0
+ int value() const KDE_DEPRECATED;
+
+ /**
+ * Returns @p true if progress text will be displayed,
+ * @p false otherwise.
+ *
+ * @see setFormat()
+ */
+ bool textEnabled() const;
+
+ /**
+ * Retrieve the current format for printing status text.
+ * @see setFormat()
+ */
+ QString format() const;
+
+ /**
+ * @deprecated but kept for source compatibility with KDE2's KProgress.
+ * Use setTotalSteps() instead
+ */
+ // ### Remove this KDE 4.0
+ void setRange(int min, int max) KDE_DEPRECATED;
+
+ /**
+ * @deprecated Use totalSteps() instead
+ */
+ // ### Remove this KDE 4.0
+ int maxValue() KDE_DEPRECATED;
+
+public slots:
+
+ /**
+ * Set the format of the text to use to display status.
+ *
+ * The default format is "%p%" (which looks like "42%".)
+ *
+ * Note: Setting the format to anything other then "%p%" will force centerIndicator to true,
+ * since it's often impossible to layout a progressbar with a more general format with the
+ * indicator string anywhere else.
+ *
+ * @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);
+
+ /**
+ * Set the current total number of steps in the action that the progress bar
+ * is representing.
+ */
+ void setTotalSteps(int totalSteps);
+
+ /**
+ * Set the current value of the progress bar to @p progress.
+ */
+ virtual void setProgress(int progress);
+
+ /**
+ * @deprecated Use setProgress(int) instead
+ */
+ // ### Remove this KDE 4.0
+ void setValue(int progress);
+
+ /**
+ * Advance the progress bar by @p offset.
+ *
+ * This method is
+ * provided for convenience and is equivalent with
+ * setProgress(progress()+offset).
+ */
+ virtual void advance(int offset);
+
+signals:
+ /**
+ * Emitted when the state of the progress bar changes.
+ */
+ void percentageChanged(int);
+
+protected:
+ virtual bool setIndicator(QString & indicator, int progress, int totalSteps);
+
+private:
+ QString mFormat;
+
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ class KProgressPrivate;
+ KProgressPrivate *d;
+};
+
+/**
+ * KProgressDialog provides a dialog with a text label, a progress bar
+ * and an optional cancel button with a KDE look 'n feel.
+ *
+ * Since knowing how long it can take to complete an action and it is
+ * undesirable to show a dialog for a split second before hiding it,
+ * there are a few ways to control the timing behavior of KProgressDialog.
+ * There is a time out that can be set before showing the dialog as well
+ * as an option to autohide or keep displaying the dialog once complete.
+ *
+ * All the functionality of KProgress is available through direct access
+ * to the progress bar widget via progressBar();
+ *
+ * @short A dialog with a progress bar
+ * @author Aaron J. Seigo
+ */
+class KDEUI_EXPORT KProgressDialog : public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Constructs a KProgressDialog
+ *
+ * @param parent Parent of the widget
+ * @param name Widget name
+ * @param caption Text to display in window title bar
+ * @param text Text to display in the dialog
+ * @param modal Set to true to make the dialog modal
+ */
+ KProgressDialog(QWidget* parent = 0, const char* name = 0,
+ const QString& caption = QString::null,
+ const QString& text = QString::null,
+ bool modal = false);
+
+ /**
+ * Destructor
+ */
+ ~KProgressDialog();
+
+ /**
+ * Returns the KProgress used in this dialog.
+ * To set the number of steps or other progress bar related
+ * settings, access the KProgress object directly via this method.
+ */
+ KProgress* progressBar();
+
+ /**
+ * Returns the KProgress used in this dialog.
+ * To set the number of steps or other progress bar related
+ * settings, access the KProgress object directly via this method.
+ */
+ const KProgress* progressBar() const;
+
+ /**
+ * Sets the text in the dialog
+ *
+ * @param text the text to display
+ */
+ void setLabel(const QString & text);
+
+ /**
+ * Returns the current dialog text
+ * @deprecated
+ */
+ // ### Remove this KDE 4.0
+ QString labelText() KDE_DEPRECATED;
+
+ /**
+ * Returns the current dialog text
+ */
+ QString labelText() const;
+
+ /**
+ * Sets whether or not the user can cancel the process.
+ * If the dialog is cancellable, the Cancel button will be shown
+ * and the user can close the window using the window decorations.
+ * If the process is not (or should not be) interuptable,
+ * set the dialog to be modal and not cancellable.
+ *
+ * @param allowCancel Set to true to make the dialog non-closable
+ */
+ void setAllowCancel(bool allowCancel);
+
+ /**
+ * Returns true if the dialog can be canceled, false otherwise
+ * @deprecated
+ */
+ // ### Remove this KDE 4.0
+ bool allowCancel() KDE_DEPRECATED;
+
+ /**
+ * Returns true if the dialog can be canceled, false otherwise
+ */
+ bool allowCancel() const;
+
+ /**
+ * Sets whether the cancel button is visible. setAllowCancel(false)
+ * implies showCancelButton(false)
+ *
+ * @param show Whether or not the cancel button should be shown
+ */
+ void showCancelButton(bool show);
+
+ /**
+ * Sets whether the dialog should close automagically when
+ * all the steps in the KProgress have been completed.
+ */
+ void setAutoClose(bool close);
+
+ /**
+ * Returns true if the dialog will close upon completion,
+ * or false otherwise
+ */
+ // ### Remove this KDE 4.0
+ bool autoClose();
+
+ /**
+ * Returns true if the dialog will close upon completion,
+ * or false otherwise
+ */
+ bool autoClose() const;
+
+ /**
+ * Sets whether the dialog should reset the KProgress dialog
+ * back to 0 steps compelete when all steps have been completed.
+ * This is useful for KProgressDialogs that will be reused.
+ */
+ void setAutoReset(bool autoReset);
+
+ /**
+ * Returns true if the KProgress widget will be reset
+ * upon completion, or false otherwise
+ */
+ // ### Remove this KDE 4.0
+ bool autoReset();
+
+ /**
+ * Returns true if the KProgress widget will be reset
+ * upon completion, or false otherwise
+ */
+ bool autoReset() const;
+
+ /**
+ * Returns true if the dialog was closed or canceled
+ * before completion. If the dialog is not cancellable
+ * it will always return false.
+ */
+ // ### Remove this KDE 4.0
+ bool wasCancelled();
+
+ /**
+ * Returns true if the dialog was closed or canceled
+ * before completion. If the dialog is not cancellable
+ * it will always return false.
+ */
+ bool wasCancelled() const;
+
+ /**
+ * Ignores the last cancel action if the cancel button was
+ * pressed. Useful for kdialog when combined with a KMessageBox
+ * to display a message like "Are you sure you want to cancel?"
+ * @since 3.5.5
+ */
+ void ignoreCancel();
+
+ /**
+ * Sets the text to appear on the cancel button.
+ */
+ void setButtonText(const QString&);
+
+ /**
+ * Returns the text on the cancel button
+ * @deprecated
+ */
+ // ### Remove this KDE 4.0
+ QString buttonText() KDE_DEPRECATED;
+
+ /**
+ * Returns the text on the cancel button
+ */
+ QString buttonText() const;
+
+ /**
+ * Set the minimum number of milliseconds to wait before
+ * actually showing the dialog
+ */
+ void setMinimumDuration(int ms);
+
+ /**
+ * Returns the wait duration in milliseconds
+ * @deprecated
+ */
+ // ### Remove this KDE 4.0
+ int minimumDuration() KDE_DEPRECATED;
+
+ /**
+ * Returns the wait duration in milliseconds
+ */
+ int minimumDuration() const;
+
+ /**
+ * Reimplemented for internal reasons, the API is not affected.
+ */
+ virtual void show();
+
+ protected slots:
+ void slotAutoShow();
+ void slotAutoActions(int percentage);
+ void slotCancel();
+
+ private:
+ // ### Move these member variables to d in KDE 4.0
+ bool mAutoClose;
+ bool mAutoReset;
+ bool mCancelled;
+ bool mAllowCancel;
+ bool mShown;
+ QString mCancelText;
+ QLabel* mLabel;
+ KProgress* mProgressBar;
+ QTimer* mShowTimer;
+ int mMinDuration;
+ protected:
+ virtual void virtual_hook( int id, void* data );
+ private:
+ struct KProgressDialogPrivate;
+ KProgressDialogPrivate *d;
+};
+
+#endif