QGIS API Documentation  3.2.0-Bonn (bc43194)
qgsvirtuallayertask.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvirtuallayertask.cpp - description
3  -------------------
4  begin : Jan 19, 2018
5  copyright : (C) 2017 by Paul Blottiere
6  email : [email protected]
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 #include "qgsvirtuallayertask.h"
19 #include "qgslogger.h"
20 
22  : mDefinition( definition )
23 {
24  mDefinition.setLazy( true );
25  mLayer = qgis::make_unique<QgsVectorLayer>( mDefinition.toString(), "layer", "virtual" );
26 }
27 
29 {
30  bool rc = false;
31  try
32  {
33  mLayer->reload(); // blocking call because the loading is postponed
34  rc = mLayer->isValid();
35  }
36  catch ( std::exception &e )
37  {
38  QgsDebugMsg( QStringLiteral( "Reload error: %1" ).arg( e.what() ) );
39  rc = false;
40  }
41  return rc;
42 }
43 
45 {
46  return mDefinition;
47 }
48 
50 {
51  return mLayer.get();
52 }
53 
55 {
56  return mLayer.release();
57 }
58 
60 {
61  mLayer->dataProvider()->cancelReload();
63 }
bool run() override
Reloads the data.
#define QgsDebugMsg(str)
Definition: qgslogger.h:38
QString toString() const
Convert into a QString that can be read by the virtual layer provider.
QgsVectorLayer * takeLayer()
Returns the underlying virtual layer and ownership.
QgsVectorLayer * layer()
Returns the underlying virtual layer.
virtual void cancel()
Notifies the task that it should terminate.
void cancel() override
Cancels the pending query and the parent task.
QgsVirtualLayerDefinition definition() const
Returns the virtual layer definition.
void setLazy(bool lazy)
Sets the lazy mode.
Represents a vector layer which manages a vector based data sets.
QgsVirtualLayerTask(const QgsVirtualLayerDefinition &definition)
Constructor.
Class to manipulate the definition of a virtual layer.