(empty message)
[qanava.git] / src / utl / utlProgress.h
blob9aad11c80cae8fea1f03d5907a428bf2bee751de
1 //-----------------------------------------------------------------------------
2 // This file is a part of the Qanava and LTM software.
3 //
4 // \file utlProgress.h
5 // \author Benoit Autheman (benoit@faktiss.net)
6 // \date 2005 July 08
7 //-----------------------------------------------------------------------------
10 #ifndef qan_utlProgress_h
11 #define qan_utlProgress_h
14 // UTL headers
15 #include "./utlConfig.h"
18 //-----------------------------------------------------------------------------
19 namespace QAN_UTL_ROOT_NAMESPACE // ::QAN_UTL_ROOT_NAMESPACE
21 namespace utl // ::QAN_UTL_ROOT_NAMESPACE::utl
23 //! Abstract class used to provide feedback about a task progression.
24 /*!
25 \nosubgrouping
27 class Progress
29 /*! \name Progress Constructor/Destructor *///------------------------
30 //@{
31 public:
33 //! Progress constructor.
34 Progress( int maxProgress = 100 ) :
35 _progress( 0 ),
36 _maxProgress( maxProgress ) { }
38 //! Progress destructor.
39 virtual ~Progress( ) { }
41 protected:
43 //! Progress empty private copy constructor.
44 Progress( const Progress& progress ) { }
45 //@}
46 //-----------------------------------------------------------------
50 /*! \name Progress Management *///---------------------------------
51 //@{
52 public:
54 //! .
55 void reset( int maxProgress );
57 //! .
58 void setProgress( int progress )
60 _progress = progress;
61 if ( _maxProgress != 0 )
62 updateProgress( progress * 100 / _maxProgress );
65 //! .
66 int getProgress( ) const { return _progress; }
68 //! .
69 void incProgress( ) { setProgress( getProgress( ) + 1 ); }
71 //! .
72 virtual void setMaxProgress( int maxProgress ) { _maxProgress = maxProgress; }
74 //! .
75 virtual bool getCancel( ) = 0;
77 //! .
78 void finish( ) { setProgress( _maxProgress ); }
80 protected:
82 //!
83 virtual void updateProgress( int percent ) = 0;
85 //! .
86 int _progress;
88 //! .
89 int _maxProgress;
90 //@}
91 //-----------------------------------------------------------------
96 //! Progress default concrete implementation.
97 /*!
98 \nosubgrouping
100 class ProgressVoid : public Progress
102 /*! \name Progress Management *///---------------------------------
103 //@{
104 public:
106 //! .
107 virtual bool getCancel( ) { return false; }
109 protected:
111 //! .
112 virtual void updateProgress( int /*percent*/ ) { }
113 //@}
114 //-----------------------------------------------------------------
116 } // ::QAN_UTL_ROOT_NAMESPACE::utl
117 } // ::QAN_UTL_ROOT_NAMESPACE
118 //-----------------------------------------------------------------------------
121 #endif // qan_utlProgress_h