/usr/include/qgis/qgsofflineediting.h is in libqgis-dev 2.8.6+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /***************************************************************************
offline_editing.h
Offline Editing Plugin
a QGIS plugin
--------------------------------------
Date : 22-Jul-2010
Copyright : (C) 2010 by Sourcepole
Email : info at sourcepole.ch
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGS_OFFLINE_EDITING_H
#define QGS_OFFLINE_EDITING_H
#include <qgsfeature.h>
#include <qgsvectorlayer.h>
#include <QObject>
#include <QString>
class QgsMapLayer;
class QgsVectorLayer;
struct sqlite3;
class CORE_EXPORT QgsOfflineEditing : public QObject
{
Q_OBJECT
public:
enum ProgressMode
{
CopyFeatures = 0,
ProcessFeatures,
AddFields,
AddFeatures,
RemoveFeatures,
UpdateFeatures,
UpdateGeometries
};
QgsOfflineEditing();
~QgsOfflineEditing();
/** convert current project for offline editing
* @param offlineDataPath path to offline db file
* @param offlineDbFile offline db file name
* @param layerIds list of layer names to convert
*/
bool convertToOfflineProject( const QString& offlineDataPath, const QString& offlineDbFile, const QStringList& layerIds );
/** return true if current project is offline */
bool isOfflineProject();
/** synchronize to remote layers */
void synchronize();
signals:
/** emit a signal that processing has started */
void progressStarted();
/** emit a signal that the next layer of numLayers has started processing
* @param layer current layer index
* @param numLayers total number of layers
*/
void layerProgressUpdated( int layer, int numLayers );
/** emit a signal that sets the mode for the progress of the current operation
* @param mode progress mode
* @param maximum total number of entities to process in the current operation
*/
void progressModeSet( QgsOfflineEditing::ProgressMode mode, int maximum );
/** emit a signal with the progress of the current mode
* @param progress current index of processed entities
*/
void progressUpdated( int progress );
/** emit a signal that processing of all layers has finished */
void progressStopped();
/**
* Emitted when a warning needs to be displayed.
* @param title title string for message
* @param message A descriptive message for the warning
*/
void warning( const QString& title, const QString& message );
private:
void initializeSpatialMetadata( sqlite3 *sqlite_handle );
bool createSpatialiteDB( const QString& offlineDbPath );
void createLoggingTables( sqlite3* db );
QgsVectorLayer* copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, const QString& offlineDbPath );
void applyAttributesAdded( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo );
void applyFeaturesAdded( QgsVectorLayer* offlineLayer, QgsVectorLayer* remoteLayer, sqlite3* db, int layerId );
void applyFeaturesRemoved( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId );
void applyAttributeValueChanges( QgsVectorLayer* offlineLayer, QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo );
void applyGeometryChanges( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo );
void updateFidLookup( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId );
void copySymbology( QgsVectorLayer* sourceLayer, QgsVectorLayer* targetLayer );
QMap<int, int> attributeLookup( QgsVectorLayer* offlineLayer, QgsVectorLayer* remoteLayer );
void showWarning( const QString& message );
sqlite3* openLoggingDb();
int getOrCreateLayerId( sqlite3* db, const QString& qgisLayerId );
int getCommitNo( sqlite3* db );
void increaseCommitNo( sqlite3* db );
void addFidLookup( sqlite3* db, int layerId, QgsFeatureId offlineFid, QgsFeatureId remoteFid );
QgsFeatureId remoteFid( sqlite3* db, int layerId, QgsFeatureId offlineFid );
QgsFeatureId offlineFid( sqlite3* db, int layerId, QgsFeatureId remoteFid );
bool isAddedFeature( sqlite3* db, int layerId, QgsFeatureId fid );
int sqlExec( sqlite3* db, const QString& sql );
int sqlQueryInt( sqlite3* db, const QString& sql, int defaultValue );
QList<int> sqlQueryInts( sqlite3* db, const QString& sql );
QList<QgsField> sqlQueryAttributesAdded( sqlite3* db, const QString& sql );
QgsFeatureIds sqlQueryFeaturesRemoved( sqlite3* db, const QString& sql );
struct AttributeValueChange
{
QgsFeatureId fid;
int attr;
QString value;
};
typedef QList<AttributeValueChange> AttributeValueChanges;
AttributeValueChanges sqlQueryAttributeValueChanges( sqlite3* db, const QString& sql );
struct GeometryChange
{
QgsFeatureId fid;
QString geom_wkt;
};
typedef QList<GeometryChange> GeometryChanges;
GeometryChanges sqlQueryGeometryChanges( sqlite3* db, const QString& sql );
private slots:
void layerAdded( QgsMapLayer* layer );
void committedAttributesAdded( const QString& qgisLayerId, const QList<QgsField>& addedAttributes );
void committedFeaturesAdded( const QString& qgisLayerId, const QgsFeatureList& addedFeatures );
void committedFeaturesRemoved( const QString& qgisLayerId, const QgsFeatureIds& deletedFeatureIds );
void committedAttributeValuesChanges( const QString& qgisLayerId, const QgsChangedAttributesMap& changedAttrsMap );
void committedGeometriesChanges( const QString& qgisLayerId, const QgsGeometryMap& changedGeometries );
void startListenFeatureChanges();
void stopListenFeatureChanges();
};
#endif // QGS_OFFLINE_EDITING_H
|