mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
QgsVectorLayer: - move attribute part of editing to vector layer class and unify with geometry handling: * remove commitAttributeChanges(), addedFeatures(), deletedFeatureIds(), changedAttributes() and replace with changeAttributeValue(), deleteFeature(), addAttribute() and deleteAttribute() * add pendingFields(), pendingAttributeList(), pendingFeatureCount() * emit signals on start editing and commit, change of attribute values, adding/deleting of attributes and layer or feature removal (currently used in the attribute table) - new commitErrors() method to query errors from commitChanges() - replaced featuresInRectangle with select/getNextFeature combo - edit types added to support more input widgets and input constraints QgsFeature: - remove update aware ctor - unify geometry handling in ctors QgsVectorDataProvider: - add QVariant::Type to supportNativeTypes() QgisApp: - add instance() method to query QgisApp object - replace code at various place to use it instead of passing the pointer arround or searching it in the widget tree. - move toggleEditing() code from the legend here QgsAttributeTable/QgsAttributeTableDisplay: - move attribute table creation legend here - make attribute table dockable (from Tim) - most editing logic moved to QgsVectorLayer - adding/deleting attributes moved to QgsVectorLayerProperties QgsIdentifyResults: - add support for attribute editing when it edit mode QgsVectorLayerProperties: add a new tab to show attribute list: * start/stop editing * add/delete attributes * assign edit type to attributes (unique values, value map, ranges) QgsAttributeDialog: add support for attribute edit types: * selection from unique value render classes (combobox) * selection from unique values of existing features (combobox or line edits with completion) * spinboxes for ranges QgsPostgresProvider: - use read-only connection for cursors and read-write connection for updates - updated native types QgsOgrProvider: - remove unused references to GEOS geometry factory - updated native types git-svn-id: http://svn.osgeo.org/qgis/trunk@9092 c8812cc2-4d05-0410-92ff-de0c093fc19c
152 lines
4.1 KiB
C++
152 lines
4.1 KiB
C++
/***************************************************************************
|
|
qgsfield.h - Describes a field in a layer or table
|
|
--------------------------------------
|
|
Date : 01-Jan-2004
|
|
Copyright : (C) 2004 by Gary E.Sherman
|
|
email : sherman at mrcc.com
|
|
***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
/* $Id$ */
|
|
|
|
#ifndef QGSFIELD_H
|
|
#define QGSFIELD_H
|
|
|
|
#include <QString>
|
|
#include <QVariant>
|
|
|
|
/**
|
|
\class QgsField
|
|
\brief Class to encapsulate a field in an attribute table or data source.
|
|
|
|
QgsField stores metadata about an attribute field, including name, type
|
|
length, and if applicable, precision.
|
|
*/
|
|
|
|
class CORE_EXPORT QgsField
|
|
{
|
|
public:
|
|
/** Constructor. Constructs a new QgsField object.
|
|
* @param nam Field name
|
|
* @param type Field variant type, currently supported: String / Int / Double
|
|
* @param typeName Field type (eg. char, varchar, text, int, serial, double).
|
|
Field types are usually unique to the source and are stored exactly
|
|
as returned from the data store.
|
|
* @param len Field length
|
|
* @param prec Field precision. Usually decimal places but may also be
|
|
* used in conjunction with other fields types (eg. variable character fields)
|
|
* @param comment Comment for the field
|
|
*/
|
|
|
|
QgsField(QString name = QString(),
|
|
QVariant::Type type = QVariant::Invalid,
|
|
QString typeName = QString(),
|
|
int len = 0,
|
|
int prec = 0,
|
|
QString comment = QString());
|
|
|
|
//! Destructor
|
|
~QgsField();
|
|
|
|
bool operator==(const QgsField& other) const;
|
|
|
|
//! Gets the name of the field
|
|
const QString & name() const;
|
|
|
|
//! Gets variant type of the field as it will be retrieved from data source
|
|
QVariant::Type type() const;
|
|
|
|
/**
|
|
Gets the field type. Field types vary depending on the data source. Examples
|
|
are char, int, double, blob, geometry, etc. The type is stored exactly as
|
|
the data store reports it, with no attenpt to standardize the value.
|
|
@return QString containing the field type
|
|
*/
|
|
const QString & typeName() const;
|
|
|
|
|
|
/**
|
|
Gets the length of the field.
|
|
@return int containing the length of the field
|
|
*/
|
|
int length() const;
|
|
|
|
|
|
/**
|
|
Gets the precision of the field. Not all field types have a related precision.
|
|
@return int containing the precision or zero if not applicable to the field type.
|
|
*/
|
|
int precision() const;
|
|
|
|
/**
|
|
Returns the field comment
|
|
*/
|
|
const QString & comment() const;
|
|
|
|
/**
|
|
Set the field name.
|
|
@param nam Name of the field
|
|
*/
|
|
void setName(const QString & nam);
|
|
|
|
/**
|
|
Set variant type.
|
|
*/
|
|
void setType(QVariant::Type type);
|
|
|
|
/**
|
|
Set the field type.
|
|
@param typ Field type
|
|
*/
|
|
void setTypeName(const QString & typ);
|
|
|
|
/**
|
|
Set the field length.
|
|
@param len Length of the field
|
|
*/
|
|
void setLength(int len);
|
|
|
|
/**
|
|
Set the field precision.
|
|
@param prec Precision of the field
|
|
*/
|
|
void setPrecision(int prec);
|
|
|
|
|
|
/**
|
|
Set the field comment
|
|
*/
|
|
void setComment(const QString & comment);
|
|
|
|
private:
|
|
|
|
//! Name
|
|
QString mName;
|
|
|
|
//! Variant type
|
|
QVariant::Type mType;
|
|
|
|
//! Type name from provider
|
|
QString mTypeName;
|
|
|
|
//! Length
|
|
int mLength;
|
|
|
|
//! Precision
|
|
int mPrecision;
|
|
|
|
//! Comment
|
|
QString mComment;
|
|
|
|
}; // class QgsField
|
|
|
|
// key = field index, value=field data
|
|
typedef QMap<int, QgsField> QgsFieldMap;
|
|
|
|
#endif
|