• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • runner
  • local-osm-search
LocalOsmSearchPlugin.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2011 Dennis Nienhüser <earthwings@gentoo.org>
9 // Copyright 2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
10 //
11 
12 #include "LocalOsmSearchPlugin.h"
13 #include "LocalOsmSearchRunner.h"
14 #include "MarbleDirs.h"
15 
16 #include <QDirIterator>
17 
18 namespace Marble
19 {
20 
21 LocalOsmSearchPlugin::LocalOsmSearchPlugin( QObject *parent ) :
22  SearchRunnerPlugin( parent ),
23  m_databaseFiles()
24 {
25  setSupportedCelestialBodies( QStringList() << "earth" );
26  setCanWorkOffline( true );
27 
28  QString const path = MarbleDirs::localPath() + "/maps/earth/placemarks/";
29  QFileInfo pathInfo( path );
30  if ( !pathInfo.exists() ) {
31  QDir("/").mkpath( pathInfo.absolutePath() );
32  pathInfo.refresh();
33  }
34  if ( pathInfo.exists() ) {
35  m_watcher.addPath( path );
36  }
37  connect( &m_watcher, SIGNAL(directoryChanged(QString)), this, SLOT(updateDirectory(QString)) );
38  connect( &m_watcher, SIGNAL(fileChanged(QString)), this, SLOT(updateFile(QString)) );
39 
40  updateDatabase();
41 }
42 
43 QString LocalOsmSearchPlugin::name() const
44 {
45  return tr( "Local OSM Search" );
46 }
47 
48 QString LocalOsmSearchPlugin::guiString() const
49 {
50  return tr( "Offline OpenStreetMap Search" );
51 }
52 
53 QString LocalOsmSearchPlugin::nameId() const
54 {
55  return "local-osm-search";
56 }
57 
58 QString LocalOsmSearchPlugin::version() const
59 {
60  return "1.0";
61 }
62 
63 QString LocalOsmSearchPlugin::description() const
64 {
65  return tr( "Searches for addresses and points of interest in offline maps." );
66 }
67 
68 QString LocalOsmSearchPlugin::copyrightYears() const
69 {
70  return "2011";
71 }
72 
73 QList<PluginAuthor> LocalOsmSearchPlugin::pluginAuthors() const
74 {
75  return QList<PluginAuthor>()
76  << PluginAuthor( QString::fromUtf8( "Dennis Nienhüser" ), "earthwings@gentoo.org" );
77 }
78 
79 SearchRunner* LocalOsmSearchPlugin::newRunner() const
80 {
81  return new LocalOsmSearchRunner( m_databaseFiles );
82 }
83 
84 void LocalOsmSearchPlugin::addDatabaseDirectory( const QString &path )
85 {
86  QDir directory( path );
87  QStringList const nameFilters = QStringList() << "*.sqlite";
88  QStringList const files( directory.entryList( nameFilters, QDir::Files ) );
89  foreach( const QString &file, files ) {
90  m_databaseFiles << directory.filePath( file );
91  }
92 }
93 
94 void LocalOsmSearchPlugin::updateDirectory( const QString & )
95 {
96  updateDatabase();
97 }
98 
99 void LocalOsmSearchPlugin::updateFile( const QString &file )
100 {
101  if ( file.endsWith( QLatin1String( ".sqlite" ) ) ) {
102  updateDatabase();
103  }
104 }
105 
106 void LocalOsmSearchPlugin::updateDatabase()
107 {
108  m_databaseFiles.clear();
109  QStringList const baseDirs = QStringList() << MarbleDirs::systemPath() << MarbleDirs::localPath();
110  foreach ( const QString &baseDir, baseDirs ) {
111  QString base = baseDir + "/maps/earth/placemarks/";
112  addDatabaseDirectory( base );
113  QDir::Filters filters = QDir::AllDirs | QDir::Readable | QDir::NoDotAndDotDot;
114  QDirIterator::IteratorFlags flags = QDirIterator::Subdirectories | QDirIterator::FollowSymlinks;
115  QDirIterator iter( base, filters, flags );
116  while ( iter.hasNext() ) {
117  iter.next();
118  addDatabaseDirectory( iter.filePath() );
119  }
120  }
121 }
122 
123 }
124 
125 Q_EXPORT_PLUGIN2( LocalOsmSearchPlugin, Marble::LocalOsmSearchPlugin )
126 
127 #include "LocalOsmSearchPlugin.moc"
LocalOsmSearchRunner.h
QList::clear
void clear()
Marble::LocalOsmSearchPlugin::LocalOsmSearchPlugin
LocalOsmSearchPlugin(QObject *parent=0)
Definition: LocalOsmSearchPlugin.cpp:21
QFileSystemWatcher::addPath
void addPath(const QString &path)
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::LocalOsmSearchPlugin::description
QString description() const
Returns a user description of the plugin.
Definition: LocalOsmSearchPlugin.cpp:63
Marble::MarbleDirs::localPath
static QString localPath()
Definition: MarbleDirs.cpp:223
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
LocalOsmSearchPlugin.h
Marble::LocalOsmSearchPlugin::version
QString version() const
Definition: LocalOsmSearchPlugin.cpp:58
Marble::LocalOsmSearchPlugin::copyrightYears
QString copyrightYears() const
Definition: LocalOsmSearchPlugin.cpp:68
QString::fromUtf8
QString fromUtf8(const char *str, int size)
Marble::LocalOsmSearchPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: LocalOsmSearchPlugin.cpp:43
Marble::LocalOsmSearchPlugin
Definition: LocalOsmSearchPlugin.h:24
QObject
QDir::Filters
typedef Filters
MarbleDirs.h
QString::endsWith
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const
Marble::SearchRunnerPlugin
A plugin for Marble to execute a placemark search.
Definition: SearchRunnerPlugin.h:25
QString
QList
Marble::SearchRunnerPlugin::setSupportedCelestialBodies
void setSupportedCelestialBodies(const QStringList &celestialBodies)
Definition: SearchRunnerPlugin.cpp:59
QStringList
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
QFileInfo
QDirIterator
QFileInfo::exists
bool exists() const
Marble::LocalOsmSearchPlugin::guiString
QString guiString() const
Returns the string that should appear in the user interface.
Definition: LocalOsmSearchPlugin.cpp:48
QDirIterator::IteratorFlags
typedef IteratorFlags
QDir
Marble::SearchRunnerPlugin::setCanWorkOffline
void setCanWorkOffline(bool canWorkOffline)
Definition: SearchRunnerPlugin.cpp:64
QLatin1String
Marble::LocalOsmSearchPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: LocalOsmSearchPlugin.cpp:53
Marble::MarbleDirs::systemPath
static QString systemPath()
Definition: MarbleDirs.cpp:125
QFileInfo::refresh
void refresh()
Marble::LocalOsmSearchPlugin::newRunner
virtual SearchRunner * newRunner() const
Plugin factory method to create a new runner instance.
Definition: LocalOsmSearchPlugin.cpp:79
QFileInfo::absolutePath
QString absolutePath() const
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Marble::SearchRunner
Definition: SearchRunner.h:30
Marble::LocalOsmSearchRunner
Definition: LocalOsmSearchRunner.h:26
QDir::mkpath
bool mkpath(const QString &dirPath) const
Marble::LocalOsmSearchPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: LocalOsmSearchPlugin.cpp:73
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal