QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsprojectstorageregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsprojectstorageregistry.cpp
3 --------------------------------------
4 Date : March 2018
5 Copyright : (C) 2018 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgsprojectstorage.h"
19
21{
22 qDeleteAll( mBackends );
23}
24
26{
27 return mBackends.value( type, nullptr );
28}
29
31{
32 for ( auto it = mBackends.constBegin(); it != mBackends.constEnd(); ++it )
33 {
34 QgsProjectStorage *storage = it.value();
35 if ( uri.startsWith( storage->type() + ':' ) || uri.startsWith( storage->type() + "%3A" ) )
36 return storage;
37 }
38
39 // second chance -- use isSupportedUri to determine if a uri is supported by a backend
40 for ( auto it = mBackends.constBegin(); it != mBackends.constEnd(); ++it )
41 {
42 QgsProjectStorage *storage = it.value();
43 if ( storage->isSupportedUri( uri ) )
44 return storage;
45 }
46 return nullptr;
47}
48
49QList<QgsProjectStorage *> QgsProjectStorageRegistry::projectStorages() const
50{
51 return mBackends.values();
52}
53
55{
56 mBackends.insert( storage->type(), storage );
57}
58
60{
61 delete mBackends.take( storage->type() );
62}
QgsProjectStorage * projectStorageFromUri(const QString &uri)
Returns storage implementation if the URI matches one. Returns nullptr otherwise (it is a normal file...
void unregisterProjectStorage(QgsProjectStorage *storage)
Unregisters a storage backend and destroys its instance.
void registerProjectStorage(QgsProjectStorage *storage)
Registers a storage backend and takes ownership of it.
QgsProjectStorage * projectStorageFromType(const QString &type)
Returns storage implementation if the storage type matches one. Returns nullptr otherwise (it is a no...
QList< QgsProjectStorage * > projectStorages() const
Returns a list of registered project storage implementations.
Abstract interface for project storage - to be implemented by various backends and registered in QgsP...
virtual bool isSupportedUri(const QString &uri) const
Returns true if the specified uri is supported by the storage provider.
virtual QString type()=0
Unique identifier of the project storage type.