File indexing completed on 2024-05-19 12:06:05
0001 // SPDX-FileCopyrightText: 2003-2019 The KPhotoAlbum Development Team 0002 // SPDX-FileCopyrightText: 2020 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "GeoPositionPage.h" 0007 0008 #include "BrowserWidget.h" 0009 #include "ImageViewPage.h" 0010 #include "Logging.h" 0011 #include "OverviewPage.h" 0012 #include "enums.h" 0013 0014 #include <DB/ImageDB.h> 0015 #include <MainWindow/Window.h> 0016 #include <Map/GeoCoordinates.h> 0017 #include <Map/MapView.h> 0018 0019 #include <KLocalizedString> 0020 0021 Browser::GeoPositionPage::GeoPositionPage(const DB::ImageSearchInfo &info, BrowserWidget *browser) 0022 : BrowserPage(info, browser) 0023 { 0024 m_active = false; 0025 } 0026 0027 void Browser::GeoPositionPage::activate() 0028 { 0029 if (!m_active) { 0030 MainWindow::Window::theMainWindow()->showPositionBrowser(); 0031 auto map = MainWindow::Window::theMainWindow()->positionBrowserWidget(); 0032 map->clear(); 0033 map->addImages(searchInfo()); 0034 map->zoomToMarkers(); 0035 0036 connect(map, &Map::MapView::newRegionSelected, this, &GeoPositionPage::slotNewRegionSelected); 0037 m_active = true; 0038 } 0039 } 0040 0041 void Browser::GeoPositionPage::deactivate() 0042 { 0043 if (m_active) { 0044 m_active = false; 0045 auto map = MainWindow::Window::theMainWindow()->positionBrowserWidget(); 0046 map->clear(); 0047 map->disconnect(this); 0048 } 0049 } 0050 0051 void Browser::GeoPositionPage::slotNewRegionSelected(Map::GeoCoordinates::LatLonBox coordinates) 0052 { 0053 const QString name = i18n("Geo Position"); 0054 DB::ImageSearchInfo info = searchInfo(); 0055 0056 info.setRegionSelection(coordinates); 0057 const int numSelected = DB::ImageDB::instance()->search(info).size(); 0058 if (numSelected > 0) { 0059 browser()->addAction(new Browser::OverviewPage(Breadcrumb(name), info, browser())); 0060 qCDebug(BrowserLog) << "Selected region" << coordinates << "with" << numSelected << "images."; 0061 if (numSelected <= Settings::SettingsData::instance()->autoShowThumbnailView()) { 0062 browser()->addAction(new ImageViewPage(info, browser())); 0063 } 0064 } else { 0065 qCDebug(BrowserLog) << "Ignoring region selection" << coordinates << "without images."; 0066 } 0067 } 0068 0069 Browser::Viewer Browser::GeoPositionPage::viewer() 0070 { 0071 return ShowGeoPositionViewer; 0072 } 0073 0074 bool Browser::GeoPositionPage::isSearchable() const 0075 { 0076 return false; 0077 } 0078 0079 bool Browser::GeoPositionPage::showDuringMovement() const 0080 { 0081 return true; 0082 } 0083 // vi:expandtab:tabstop=4 shiftwidth=4: 0084 0085 #include "moc_GeoPositionPage.cpp"