File indexing completed on 2024-04-28 15:39:05

0001 // SPDX-FileCopyrightText: 2020 Tobias Leupold <tl at stonemx dot de>
0002 //
0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 
0005 // Local includes
0006 #include "BookmarksWidget.h"
0007 #include "SharedObjects.h"
0008 #include "Settings.h"
0009 #include "BookmarksList.h"
0010 #include "CoordinatesFormatter.h"
0011 
0012 // KDE includes
0013 #include <KLocalizedString>
0014 
0015 // Qt includes
0016 #include <QVBoxLayout>
0017 #include <QLabel>
0018 
0019 BookmarksWidget::BookmarksWidget(SharedObjects *sharedObjects, QWidget *parent)
0020     : QWidget(parent),
0021       m_formatter(sharedObjects->coordinatesFormatter())
0022 {
0023     auto *layout = new QVBoxLayout(this);
0024 
0025     m_bookmarksList = new BookmarksList(sharedObjects);
0026     connect(m_bookmarksList, &BookmarksList::bookmarksChanged,
0027             this, &BookmarksWidget::bookmarksChanged);
0028     connect(m_bookmarksList, &BookmarksList::showInfo, this, &BookmarksWidget::showInfo);
0029     layout->addWidget(m_bookmarksList);
0030 
0031     m_info = new QLabel;
0032     layout->addWidget(m_info);
0033 }
0034 
0035 const QHash<QString, Coordinates> *BookmarksWidget::bookmarks() const
0036 {
0037     return m_bookmarksList->bookmarks();
0038 }
0039 
0040 void BookmarksWidget::showInfo(const Coordinates &coordinates)
0041 {
0042     if (! coordinates.isSet()) {
0043         m_info->clear();
0044     } else {
0045         m_info->setText(i18n("Position: %1, %2; Altitude: %3 m",
0046                              m_formatter->lon(coordinates),
0047                              m_formatter->lat(coordinates),
0048                              m_formatter->alt(coordinates)));
0049     }
0050 }