// SPDX-License-Identifier: LGPL-2.1-or-later
//
// SPDX-FileCopyrightText: 2006-2007 Torsten Rahn <tackat@kde.org>
// SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org>
//
#ifndef MARBLE_FILEMANAGER_H
#define MARBLE_FILEMANAGER_H
#include "GeoDataDocument.h"
#include <QObject>
class QString;
namespace Marble
{
class FileManagerPrivate;
class FileLoader;
class GeoDataLatLonBox;
class GeoDataTreeModel;
class PluginManager;
/**
* This class is responsible for loading the
* different files into Geodata model.
*
* The loaded data are accessible via
* various models in MarbleModel.
*/
class MARBLE_EXPORT FileManager : public QObject
{
Q_OBJECT
public:
/**
* Creates a new file manager.
*
* @param treeModel The GeoDataTreeModel model.
* @param pluginManager The plugin manager.
* @param parent The parent object.
*/
explicit FileManager(GeoDataTreeModel *treeModel, const PluginManager *pluginManager, QObject *parent = nullptr);
/**
* Destroys the file manager.
*/
~FileManager() override;
/**
* Loads a new file into the manager.
*/
void
addFile(const QString &fileName, const QString &property, const GeoDataStyle::Ptr &style, DocumentRole role, int renderOrder = 0, bool recenter = false);
/**
* removes an existing file from the manager
*/
void removeFile(const QString &fileName);
/**
* add Data containing KML code as string
*/
void addData(const QString &name, const QString &data, DocumentRole role);
void closeFile(const GeoDataDocument *document);
int size() const;
GeoDataDocument *at(const QString &key);
/** Returns the number of files being opened at the moment */
int pendingFiles() const;
Q_SIGNALS:
void fileAdded(const QString &key);
void fileRemoved(const QString &key);
void centeredDocument(const GeoDataLatLonBox &);
void fileError(const QString &key, const QString &error);
private:
Q_PRIVATE_SLOT(d, void cleanupLoader(FileLoader *loader))
Q_DISABLE_COPY(FileManager)
friend class FileManagerPrivate;
FileManagerPrivate *const d;
};
}
#endif
|