Marble/ModelView: Difference between revisions

From KDE Community Wiki
(Created page with '== ModelView framework in Marble == Marble uses Qt's Model/View framework as a way to signal updates to a model to interested parts. In that respect, a Model class can wrap any ...')
 
m (10 revisions imported)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== ModelView framework in Marble ==
= ModelView framework in Marble =


Marble uses Qt's Model/View framework as a way to signal updates to a model to interested parts. In that respect, a Model class can wrap any possible data.
Marble uses Qt's Model/View framework as a way to signal updates to a model to interested parts. In that respect, a Model class can wrap any possible data.


Here is the list of Model class, and a description of how they are used.
The Model-View framework is designed to hide the details of the model content, and to present it in a standardised way to views. The advantage of this solution is that the View need not know much about the data it presents.


=== QAbstractItemModel ===
The multiple models and proxies in Marble each fit the purpose of feeding some GeoData classes to interested widgets. Those models are fed by the {{class|FileManager|kdeedu|4.x}}.
* {{class|GeoDataDebugModel|kdeedu}}
It represents a data file, parsed into a {{class|GeoDataDocument|kdeedu}} tree structure.


It is used by the {{class|DataViewPlugin|kdeedu}} debug plugin (and is broken atm)
Here is the list of Model and Proxy classes, and a description of how they are used.


* {{class|GpxFileModel|kdeedu}}
=== GeoDataTreeModel ===
It represents a list of gpx data file represented as {{class|GpxFile|kdeedu}}
The {{class|GeoDataTreeModel|kdeedu|4.x}} represents the list of all {{class|GeoDataDocument|kdeedu|4.x}} registered through the {{class|FileManager|kdeedu|4.x}}.


It is used by the {{class|GpxLayer|kdeedu}} to load files and access them (and it doesn't look like it needs the Model-specific methods)
It has signals/slots to react to files being added or removed in the FileManager.


* {{class|MarbleGeometryModel|kdeedu}}
It is used as the base model for GeoDataDocuments.
It represents the {{class|GeoDataGeometry|kdeedu}} and the {{class|GeoDataFeature|kdeedu}} items of the {{class|GeoDataDocument|kdeedu}} which contains all Placemarks.


It is used by the {{class|GeoRenderPlugin|kdeedu}} to access the list of placemarks.
The {{class|GeometryLayer|kdeedu|4.x}} renders all {{class|GeoDataGeometry|kdeedu|4.x}} related placemarks.


=== QAbstractListModel ===
=== FileViewModel ===
* {{class|FileViewModel|kdeedu}}
The {{class|FileViewModel|kdeedu|4.x}} represents the list of opened files. The {{class|FileManager|kdeedu|4.x}} appends the documents it opens.
It represents the list of files opened. The {{class|PlacemarkManager|kdeedu}} appends the documents it opens, and the {{class|MarbleWidget|kdeedu}} appends the gpx files it opens.
It is used by the {{class|FileViewFloatItem|kdeedu|4.x}}.


It is used by the {{class|FileViewFloatItem|kdeedu}} and manipulated by the {{class|PlaceMarkManager|kdeedu}} and the {{class|MarbleModel|kdeedu}}.
=== KDescendantsProxyModel ===
The {{class|KDescendantsProxyModel|kdeedu|4.x}} is used to flatten the tree of GeoData features. It represents the list of all Placemarks of all opened files.


* {{class|MarbleGeoDataModel|kdeedu}}
The {{class|MarbleControlBox|kdeedu|4.X}} uses that proxy model to provide the list of placemarks to search for, and the {{class|PlacemarkLayout|kdeedu|4.x}} uses it also to determine layouting on the map.
It represents a list of {{class|GeoDataDocuments|kdeedu}}. Only the {{class|PlacemarksPlugin|kdeedu}} uses it
 
It is used by no other code.
 
* {{class|MarblePlacemarkModel|kdeedu}}
It represents
 
It is used by

Latest revision as of 08:05, 21 October 2016

ModelView framework in Marble

Marble uses Qt's Model/View framework as a way to signal updates to a model to interested parts. In that respect, a Model class can wrap any possible data.

The Model-View framework is designed to hide the details of the model content, and to present it in a standardised way to views. The advantage of this solution is that the View need not know much about the data it presents.

The multiple models and proxies in Marble each fit the purpose of feeding some GeoData classes to interested widgets. Those models are fed by the FileManager.

Here is the list of Model and Proxy classes, and a description of how they are used.

GeoDataTreeModel

The GeoDataTreeModel represents the list of all GeoDataDocument registered through the FileManager.

It has signals/slots to react to files being added or removed in the FileManager.

It is used as the base model for GeoDataDocuments.

The GeometryLayer renders all GeoDataGeometry related placemarks.

FileViewModel

The FileViewModel represents the list of opened files. The FileManager appends the documents it opens. It is used by the FileViewFloatItem.

KDescendantsProxyModel

The KDescendantsProxyModel is used to flatten the tree of GeoData features. It represents the list of all Placemarks of all opened files.

The MarbleControlBox uses that proxy model to provide the list of placemarks to search for, and the PlacemarkLayout uses it also to determine layouting on the map.