Marble

AlternativeRoutesModel.h
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <[email protected]>
4 //
5 
6 #ifndef MARBLE_ALTERNATIVEROUTESMODEL_H
7 #define MARBLE_ALTERNATIVEROUTESMODEL_H
8 
9 #include "marble_export.h"
10 
11 #include <QAbstractListModel>
12 
13 /**
14  * A QAbstractItemModel that contains a list of routing instructions.
15  * Each item represents a routing step in the way from source to
16  * destination. Steps near the source come first, steps near the target
17  * last.
18  */
19 namespace Marble
20 {
21 
22 class RouteRequest;
23 class GeoDataDocument;
24 class GeoDataLineString;
25 
26 class MARBLE_EXPORT AlternativeRoutesModel : public QAbstractListModel
27 {
28  Q_OBJECT
29 
30 public:
31  enum WritePolicy {
32  Instant,
33  Lazy
34  };
35 
36  /** Constructor */
37  explicit AlternativeRoutesModel( QObject *parent = nullptr );
38 
39  /** Destructor */
40  ~AlternativeRoutesModel() override;
41 
42  // Model querying
43 
44  /** Overload of QAbstractListModel */
45  int rowCount ( const QModelIndex &parent = QModelIndex() ) const override;
46 
47  /** Overload of QAbstractListModel */
48  QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
49 
50  /** Overload of QAbstractListModel */
51  QVariant data ( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
52 
53  const GeoDataDocument *route(int index) const;
54 
55  // Model data filling
56 
57  /** Invalidate the current alternative routes and prepare for new ones to arrive */
58  void newRequest( RouteRequest *request );
59 
60  /**
61  * Old data in the model is discarded, the parsed content of the provided document
62  * is used as the new model data and a model reset is done
63  * @param document The route to add
64  * @param policy In lazy mode (default), a short amount of time is waited for
65  * other addRoute() calls before adding the route to the model. Otherwise, the
66  * model is changed immediately.
67  */
68  void addRoute( GeoDataDocument* document, WritePolicy policy = Lazy );
69 
70  /** Remove all alternative routes from the model */
71  void clear();
72 
73  const GeoDataDocument *currentRoute() const;
74 
75  /** Returns the waypoints contained in the route as a linestring */
76  static const GeoDataLineString* waypoints( const GeoDataDocument* document );
77 
78 public Q_SLOTS:
79  void setCurrentRoute( int index );
80 
81 Q_SIGNALS:
82  void currentRouteChanged(const GeoDataDocument *newRoute);
83  void currentRouteChanged( int index );
84 
85 private Q_SLOTS:
86  void addRestrainedRoutes();
87 
88 private:
89  class Private;
90  Private *const d;
91 };
92 
93 } // namespace Marble
94 
95 #endif
DisplayRole
KGuiItem clear()
Orientation
Binds a QML item to a specific geodetic location in screen coordinates.
@ Instant
Change camera position immediately (no interpolation)
Definition: MarbleGlobal.h:164
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Oct 2 2023 03:52:07 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.