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

0001 // SPDX-FileCopyrightText: 2021-2022 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 "TrackWalker.h"
0007 #include "GeoDataModel.h"
0008 
0009 // KDE includes
0010 #include <KLocalizedString>
0011 
0012 // Qt includes
0013 #include <QVBoxLayout>
0014 #include <QSlider>
0015 #include <QLabel>
0016 
0017 TrackWalker::TrackWalker(GeoDataModel *model, QWidget *parent)
0018     : QWidget(parent),
0019       m_geoDataModel(model)
0020 {
0021     setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
0022 
0023     auto *layout = new QVBoxLayout(this);
0024 
0025     m_slider = new QSlider(Qt::Horizontal);
0026     m_slider->setMinimum(1);
0027     connect(m_slider, &QAbstractSlider::valueChanged, this, &TrackWalker::sliderMoved);
0028     layout->addWidget(m_slider);
0029 
0030     m_info = new QLabel(i18n("<i>No track selected</i>"));
0031     layout->addWidget(m_info);
0032 
0033     setEnabled(false);
0034 }
0035 
0036 void TrackWalker::setToTrack(int row)
0037 {
0038     m_trackIndex = row;
0039 
0040     if (row == -1) {
0041         m_info->setText(i18n("<i>No track selected</i>"));
0042         setEnabled(false);
0043         return;
0044     }
0045 
0046     const int count = m_geoDataModel->dateTimes().at(row).count();
0047     m_slider->blockSignals(true);
0048     m_slider->setValue(1);
0049     m_slider->setMaximum(count);
0050     m_slider->blockSignals(false);
0051     m_info->setText(i18np("%1 trackpoint", "%1 trackpoints", count));
0052     setEnabled(true);
0053 }
0054 
0055 void TrackWalker::sliderMoved(int index)
0056 {
0057     m_info->setText(i18n("Selected trackpoint %1 of %2", index, m_slider->maximum()));
0058     Q_EMIT trackPointSelected(m_trackIndex, index - 1);
0059 }