File indexing completed on 2024-05-05 16:27:57
0001 // SPDX-FileCopyrightText: 2016-2017 Matthias Füssel <matthias.fuessel@gmx.net> 0002 // SPDX-FileCopyrightText: 2016-2022 The KPhotoAlbum Development Team 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "PositionBrowserWidget.h" 0007 0008 #include <DB/ImageDB.h> 0009 #include <DB/ImageInfo.h> 0010 #include <MainWindow/Logging.h> 0011 0012 #include <KLocalizedString> 0013 #include <QElapsedTimer> 0014 #include <QProgressBar> 0015 #include <QVBoxLayout> 0016 #include <qdom.h> 0017 #include <qlabel.h> 0018 #include <qurl.h> 0019 0020 Browser::PositionBrowserWidget::PositionBrowserWidget(QWidget *parent) 0021 : QWidget(parent) 0022 { 0023 m_mapView = new Map::MapView(this); 0024 m_mapView->displayStatus(Map::MapView::MapStatus::Loading); 0025 QVBoxLayout *layout = new QVBoxLayout(this); 0026 layout->addWidget(m_mapView); 0027 connect(m_mapView, &Map::MapView::signalRegionSelectionChanged, 0028 this, &Browser::PositionBrowserWidget::slotRegionSelectionChanged); 0029 } 0030 0031 Browser::PositionBrowserWidget::~PositionBrowserWidget() 0032 { 0033 } 0034 0035 void Browser::PositionBrowserWidget::showImages(const DB::ImageSearchInfo &searchInfo) 0036 { 0037 QElapsedTimer timer; 0038 timer.start(); 0039 m_mapView->displayStatus(Map::MapView::MapStatus::Loading); 0040 m_mapView->clear(); 0041 DB::FileNameList images = DB::ImageDB::instance()->search(searchInfo); 0042 int count = 0; 0043 for (DB::FileNameList::const_iterator imageIter = images.constBegin(); imageIter < images.constEnd(); ++imageIter) { 0044 DB::ImageInfoPtr image = imageIter->info(); 0045 if (image->coordinates().hasCoordinates()) { 0046 count++; 0047 m_mapView->addImage(image); 0048 } 0049 } 0050 m_mapView->displayStatus(Map::MapView::MapStatus::SearchCoordinates); 0051 m_mapView->zoomToMarkers(); 0052 qCDebug(TimingLog) << "Browser::PositionBrowserWidget::showImages(): added" << count << "images in" << timer.elapsed() << "ms."; 0053 } 0054 0055 void Browser::PositionBrowserWidget::clearImages() 0056 { 0057 m_mapView->clear(); 0058 } 0059 0060 void Browser::PositionBrowserWidget::slotRegionSelectionChanged() 0061 { 0062 if (m_mapView->regionSelected()) { 0063 Q_EMIT signalNewRegionSelected(m_mapView->getRegionSelection()); 0064 } 0065 }