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 }