mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 21:20:19 +00:00
9021a44ccc
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
119 lines
3.1 KiB
C++
119 lines
3.1 KiB
C++
// SPDX-License-Identifier: LGPL-2.1+
|
|
//
|
|
// This file is part of the Marble Virtual Globe.
|
|
//
|
|
// This program is free software licensed under the GNU LGPL. You can
|
|
// find a copy of this license in LICENSE.txt in the top directory of
|
|
// the source code.
|
|
//
|
|
// Copyright 2010 Thibaut Gridel <tgridel@free.fr>
|
|
//
|
|
|
|
#ifndef MARBLE_GEODATATREEMODEL_H
|
|
#define MARBLE_GEODATATREEMODEL_H
|
|
|
|
// -> does not appear to be needed #include "marble_export.h"
|
|
|
|
#include <QAbstractItemModel>
|
|
|
|
class QItemSelectionModel;
|
|
|
|
namespace Marble
|
|
{
|
|
class GeoDataObject;
|
|
class GeoDataDocument;
|
|
class GeoDataFeature;
|
|
class GeoDataContainer;
|
|
|
|
|
|
/**
|
|
* @short The representation of GeoData in a model
|
|
* This class represents all available data given by kml-data files.
|
|
*/
|
|
class MARBLE_EXPORT GeoDataTreeModel : public QAbstractItemModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
* Creates a new GeoDataTreeModel.
|
|
*
|
|
* @param parent The parent object.
|
|
*/
|
|
explicit GeoDataTreeModel( QObject *parent = 0 );
|
|
|
|
/**
|
|
* Destroys the GeoDataModel.
|
|
*/
|
|
~GeoDataTreeModel();
|
|
|
|
virtual bool hasChildren( const QModelIndex &parent ) const;
|
|
|
|
/**
|
|
* Return the number of Items in the Model.
|
|
*/
|
|
int rowCount( const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
QVariant headerData(int section, Qt::Orientation orientation,
|
|
int role = Qt::DisplayRole) const;
|
|
|
|
QVariant data( const QModelIndex &index, int role ) const;
|
|
|
|
QModelIndex index( int row, int column,
|
|
const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
QModelIndex index( GeoDataObject* object );
|
|
|
|
QModelIndex parent( const QModelIndex &index ) const;
|
|
|
|
int columnCount( const QModelIndex &parent = QModelIndex() ) const;
|
|
|
|
Qt::ItemFlags flags ( const QModelIndex & index ) const;
|
|
|
|
bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole );
|
|
|
|
void reset();
|
|
|
|
QItemSelectionModel *selectionModel();
|
|
|
|
public Q_SLOTS:
|
|
|
|
/**
|
|
* Sets the root document to use. This replaces previously loaded data, if any.
|
|
* @param document The new root document. Ownership retains with the caller,
|
|
* i.e. GeoDataTreeModel will not delete the passed document at its destruction.
|
|
*/
|
|
void setRootDocument( GeoDataDocument *document );
|
|
GeoDataDocument* rootDocument();
|
|
|
|
int addFeature( GeoDataContainer *parent, GeoDataFeature *feature, int row = -1 );
|
|
|
|
bool removeFeature( GeoDataContainer *parent, int index );
|
|
|
|
int removeFeature( const GeoDataFeature *feature );
|
|
|
|
void updateFeature( GeoDataFeature *feature );
|
|
|
|
int addDocument( GeoDataDocument *document );
|
|
|
|
void removeDocument( int index );
|
|
|
|
void removeDocument( GeoDataDocument* document );
|
|
|
|
void update();
|
|
|
|
Q_SIGNALS:
|
|
/// insert and remove row don't trigger any signal that proxies forward
|
|
/// this signal will refresh geometry layer and placemark layout
|
|
void removed( GeoDataObject *object );
|
|
void added( GeoDataObject *object );
|
|
private:
|
|
Q_DISABLE_COPY( GeoDataTreeModel )
|
|
class Private;
|
|
Private* const d;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // MARBLE_GEODATATREEMODEL_H
|