;

BookmarkListModel Class

  • BookmarkListModel
  • class Esri::ArcGISRuntime::BookmarkListModel

    A list model storing a list of bookmarks available in a Map. More...

    Header: #include <BookmarkListModel>
    Since: Esri::ArcGISRuntime 100.0
    Inherits: QAbstractListModel and Esri::ArcGISRuntime::Iterable

    This class was introduced in Esri::ArcGISRuntime 100.0.

    Public Types

    enum BookmarkRoles { BookmarkNameRole }

    Public Functions

    virtual ~BookmarkListModel() override
    void append(Esri::ArcGISRuntime::Bookmark *bookmark)
    void clear()
    bool contains(Esri::ArcGISRuntime::Bookmark *bookmark) const
    Esri::ArcGISRuntime::Bookmark *first() const
    int indexOf(Esri::ArcGISRuntime::Bookmark *bookmark) const
    void insert(int index, Esri::ArcGISRuntime::Bookmark *bookmark)
    bool isEmpty() const
    Esri::ArcGISRuntime::Bookmark *last() const
    void move(int from, int to)
    void removeAt(int index)
    void removeOne(Esri::ArcGISRuntime::Bookmark *bookmark)

    Reimplemented Public Functions

    virtual Esri::ArcGISRuntime::Bookmark *at(int index) const override
    virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
    virtual int size() const override

    Signals

    void bookmarkAdded(int index)
    void bookmarkRemoved(int index)
    void errorOccurred(Esri::ArcGISRuntime::Error error)

    Detailed Description

    Modifying this model (adding, removing, moving) will update the bookmarks available in the Map.

    The model returns data for the following roles:

    RoleTypeDescriptionBookmarkRoles
    nameQStringThe name of the bookmark.BookmarkNameRole

    Example:

    A common workflow would be to show the bookmark names in a QML UI, and zoom to the different bookmarks as each is selected. To do this, you could do following:

    Register the BookmarkListModel type as a QML type:

    qmlRegisterUncreatableType<BookmarkListModel>("Esri.Samples", 1, 0,
                                                  "BookmarkListModel",
                                                  "BookmarkListModel is an uncreatable type");

    Expose the BookmarkListModel as a Q_PROPERTY:

    Q_PROPERTY(QAbstractListModel* bookmarks READ bookmarks NOTIFY bookmarksChanged)

    Add some Bookmarks to the list model:

    // Create the bookmark from the name and viewpoint
    Bookmark* bookmark = new Bookmark(name, viewpoint, this);
    
    // Add it to the map's bookmark list
    BookmarkListModel* bookmarks = dynamic_cast<BookmarkListModel*>(m_bookmarks);
    if (!bookmarks)
      return;
    
    bookmarks->append(bookmark);
    
    // emit that model has changed
    emit bookmarksChanged();

    Use the model in a QML view:

    ComboBox {
        id: bookmarkComboBox
        anchors {
            left: parent.left
            top: parent.top
            margins: 15
        }
        property int bestWidth: implicitWidth
        width: bestWidth + indicator.width + leftPadding + rightPadding
        // Set the model to the BookmarkListModel
        model: manageBookmarksSample.bookmarks
    
        onModelChanged: {
            const model = bookmarkComboBox.model;
            if (model)
            {
                let w = bestWidth;
                for (let i = 0; i < model.rowCount(); ++i) {
                    metrics.text = manageBookmarksSample.bookmarkNameForIndex(i);
                    w = Math.max(w, metrics.width);
                }
                bestWidth = w;
            }
        }
    
        onCurrentTextChanged: {
            // Call C++ invokable function to to go to the bookmark
            manageBookmarksSample.goToBookmark(bookmarkComboBox.currentIndex);
        }
    
        TextMetrics {
            id: metrics
            font: bookmarkComboBox.font
        }
    }

    Member Type Documentation

    enum BookmarkListModel::BookmarkRoles

    This enum specifies the custom roles which can be used with BookmarkListModel::data.

    ConstantValueDescription
    Esri::ArcGISRuntime::BookmarkListModel::BookmarkNameRoleQt::UserRole + 1The name of the bookmark.

    Member Function Documentation

    [signal] void BookmarkListModel::bookmarkAdded(int index)

    Signal emitted when a bookmark is added to the list model.

    index is the index of the added bookmark.

    [signal] void BookmarkListModel::bookmarkRemoved(int index)

    Signal emitted when a bookmark is removed from the list model.

    index is the index of the removed bookmark.

    [signal] void BookmarkListModel::errorOccurred(Esri::ArcGISRuntime::Error error)

    Signal emitted when an error occurs.

    • error - Details about the error.

    [override virtual] BookmarkListModel::~BookmarkListModel()

    Destructor.

    void BookmarkListModel::append(Esri::ArcGISRuntime::Bookmark *bookmark)

    Appends a bookmark to the bookmark list model.

    [override virtual] Esri::ArcGISRuntime::Bookmark *BookmarkListModel::at(int index) const

    Returns the bookmark at the specified index.

    void BookmarkListModel::clear()

    Removes all bookmarks from the list model.

    bool BookmarkListModel::contains(Esri::ArcGISRuntime::Bookmark *bookmark) const

    Returns true if the list model contains the specified bookmark.

    [override virtual] QVariant BookmarkListModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

    Reimplements: QAbstractItemModel::data(const QModelIndex &index, int role) const.

    Returns the data stored under the given role for the bookmark referred to by the index.

    • index. The index in the model for which to return data.
    • role. The role for which to return data.

    Esri::ArcGISRuntime::Bookmark *BookmarkListModel::first() const

    Returns the first bookmark in the list model.

    int BookmarkListModel::indexOf(Esri::ArcGISRuntime::Bookmark *bookmark) const

    Returns the index of the bookmark specified.

    void BookmarkListModel::insert(int index, Esri::ArcGISRuntime::Bookmark *bookmark)

    Inserts a bookmark at a specified index in the list model.

    This method will append to the list model if the index is greater than the current size of the list.

    bool BookmarkListModel::isEmpty() const

    Returns true if the list model contains no bookmarks.

    Esri::ArcGISRuntime::Bookmark *BookmarkListModel::last() const

    Returns the last bookmark in the list model.

    void BookmarkListModel::move(int from, int to)

    Moves one bookmark from an index in the list model to a different index.

    void BookmarkListModel::removeAt(int index)

    Removes a bookmark at the specified index.

    void BookmarkListModel::removeOne(Esri::ArcGISRuntime::Bookmark *bookmark)

    Removes the specified bookmark from the list model.

    [override virtual] int BookmarkListModel::size() const

    Returns the number of bookmarks contained in the list model.

    Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.