QGIS API Documentation
4.3.0-Master (9dce731a7a1)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
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 : blottiere.paul@gmail.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
#include "
qgsvirtuallayertask.h
"
19
20
#include "
qgslogger.h
"
21
#include "
qgsvectorlayer.h
"
22
23
#include <QString>
24
25
#include "moc_qgsvirtuallayertask.cpp"
26
27
using namespace
Qt::StringLiterals;
28
29
QgsVirtualLayerTask::QgsVirtualLayerTask
(
const
QgsVirtualLayerDefinition
&
definition
)
30
: mDefinition(
definition
)
31
{
32
mDefinition.setLazy(
true
);
33
const
QgsVectorLayer::LayerOptions
options {
QgsCoordinateTransformContext
() };
34
mLayer = std::make_unique<QgsVectorLayer>( mDefinition.toString(), u
"layer"
_s,
"virtual"
_L1, options );
35
}
36
37
bool
QgsVirtualLayerTask::run
()
38
{
39
bool
rc =
false
;
40
try
41
{
42
mLayer->reload();
// blocking call because the loading is postponed
43
rc = mLayer->isValid();
44
}
45
catch
( std::exception &e )
46
{
47
QgsDebugError
( u
"Reload error: %1"
_s.arg( e.what() ) );
48
setExceptionText
( e.what() );
49
rc =
false
;
50
}
51
return
rc;
52
}
53
54
QgsVirtualLayerDefinition
QgsVirtualLayerTask::definition
()
const
55
{
56
return
mDefinition;
57
}
58
59
QgsVectorLayer
*
QgsVirtualLayerTask::layer
()
60
{
61
return
mLayer.get();
62
}
63
64
QgsVectorLayer
*
QgsVirtualLayerTask::takeLayer
()
65
{
66
return
mLayer.release();
67
}
68
69
void
QgsVirtualLayerTask::cancel
()
70
{
71
mLayer->
dataProvider
()->
cancelReload
();
72
QgsTask::cancel
();
73
}
74
75
QString
QgsVirtualLayerTask::exceptionText
()
const
76
{
77
return
mExceptionText;
78
}
79
80
void
QgsVirtualLayerTask::setExceptionText
(
const
QString &
exceptionText
)
81
{
82
mExceptionText =
exceptionText
;
83
}
QgsCoordinateTransformContext
Contains information about the context in which a coordinate transform is executed.
Definition
qgscoordinatetransformcontext.h:61
QgsTask::cancel
virtual void cancel()
Notifies the task that it should terminate.
Definition
qgstaskmanager.cpp:98
QgsVectorDataProvider::cancelReload
virtual bool cancelReload()
Cancels the current reloading of data.
Definition
qgsvectordataprovider.cpp:1045
QgsVectorLayer
Represents a vector layer which manages a vector based dataset.
Definition
qgsvectorlayer.h:414
QgsVectorLayer::dataProvider
QgsVectorDataProvider * dataProvider() final
Returns the layer's data provider, it may be nullptr.
Definition
qgsvectorlayer.cpp:725
QgsVirtualLayerDefinition
Manipulates the definition of a virtual layer.
Definition
qgsvirtuallayerdefinition.h:32
QgsVirtualLayerTask::takeLayer
QgsVectorLayer * takeLayer()
Returns the underlying virtual layer and ownership.
Definition
qgsvirtuallayertask.cpp:64
QgsVirtualLayerTask::exceptionText
QString exceptionText() const
Returns the exception text or an empty string if no exceptions were raised.
Definition
qgsvirtuallayertask.cpp:75
QgsVirtualLayerTask::cancel
void cancel() override
Cancels the pending query and the parent task.
Definition
qgsvirtuallayertask.cpp:69
QgsVirtualLayerTask::run
bool run() override
Reloads the data.
Definition
qgsvirtuallayertask.cpp:37
QgsVirtualLayerTask::layer
QgsVectorLayer * layer()
Returns the underlying virtual layer.
Definition
qgsvirtuallayertask.cpp:59
QgsVirtualLayerTask::definition
QgsVirtualLayerDefinition definition() const
Returns the virtual layer definition.
Definition
qgsvirtuallayertask.cpp:54
QgsVirtualLayerTask::QgsVirtualLayerTask
QgsVirtualLayerTask(const QgsVirtualLayerDefinition &definition)
Constructor.
Definition
qgsvirtuallayertask.cpp:29
QgsVirtualLayerTask::setExceptionText
void setExceptionText(const QString &exceptionText)
Sets the exceptionText.
Definition
qgsvirtuallayertask.cpp:80
qgslogger.h
QgsDebugError
#define QgsDebugError(str)
Definition
qgslogger.h:71
qgsvectorlayer.h
qgsvirtuallayertask.h
QgsVectorLayer::LayerOptions
Setting options for loading vector layers.
Definition
qgsvectorlayer.h:436
Generated on
for QGIS API Documentation by
1.17.0