QGIS API Documentation  3.27.0-Master (bef583a8ef)
qgsproxyprogresstask.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsproxyprogresstask.h
3  ----------------------
4  begin : August 2018
5  copyright : (C) 2018 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSPROXYPROGRESSTASK_H
19 #define QGSPROXYPROGRESSTASK_H
20 
22 #include "qgstaskmanager.h"
23 
24 #include <QWaitCondition>
25 
37 class CORE_EXPORT QgsProxyProgressTask : public QgsTask
38 {
39  Q_OBJECT
40 
41  public:
42 
46  QgsProxyProgressTask( const QString &description, bool canCancel = false );
47 
54  void finalize( bool result );
55 
56  bool run() override;
57 
63  void setProxyProgress( double progress );
64 
65  void cancel() override;
66 
67  signals:
68 
74  void canceled();
75 
76  private:
77 
78  QWaitCondition mNotFinishedWaitCondition;
79  QMutex mNotFinishedMutex;
80  bool mAlreadyFinished = false;
81  bool mResult = true;
82 
83 };
84 
94 class CORE_EXPORT QgsScopedProxyProgressTask
95 {
96  public:
97 
101  QgsScopedProxyProgressTask( const QString &description );
102 
104 
108  void setProgress( double progress );
109 
110  private:
111 
112  QgsProxyProgressTask *mTask = nullptr;
113 
114  // SIP generates .cpp code that doesn't compile if commenting out the legit following line.
115  // Q_DISABLE_COPY( QgsScopedProxyProgressTask )
116 };
117 
118 #endif // QGSPROXYPROGRESSTASK_H
A QgsTask shell which proxies progress reports.
void canceled()
Emitted when the task is canceled.
Scoped QgsScopedProxyProgressTask, which automatically adds the proxy task to the application task ma...
Abstract base class for long running background tasks.
virtual bool run()=0
Performs the task's operation.
virtual void cancel()
Notifies the task that it should terminate.
void setProgress(double progress)
Sets the task's current progress.