QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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 
20 
22 {
23  qDeleteAll( mBackends );
24 }
25 
27 {
28  return mBackends.value( type, nullptr );
29 }
30 
32 {
33  for ( auto it = mBackends.constBegin(); it != mBackends.constEnd(); ++it )
34  {
35  QgsProjectStorage *storage = it.value();
36  const QString scheme = storage->type() + ':';
37  if ( uri.startsWith( scheme ) )
38  return storage;
39  }
40 
41  // second chance -- use isSupportedUri to determine if a uri is supported by a backend
42  for ( auto it = mBackends.constBegin(); it != mBackends.constEnd(); ++it )
43  {
44  QgsProjectStorage *storage = it.value();
45  if ( storage->isSupportedUri( uri ) )
46  return storage;
47  }
48  return nullptr;
49 }
50 
51 QList<QgsProjectStorage *> QgsProjectStorageRegistry::projectStorages() const
52 {
53  return mBackends.values();
54 }
55 
57 {
58  mBackends.insert( storage->type(), storage );
59 }
60 
62 {
63  delete mBackends.take( storage->type() );
64 }
QgsProjectStorageRegistry::registerProjectStorage
void registerProjectStorage(QgsProjectStorage *storage)
Registers a storage backend and takes ownership of it.
Definition: qgsprojectstorageregistry.cpp:56
QgsProjectStorageRegistry::projectStorageFromType
QgsProjectStorage * projectStorageFromType(const QString &type)
Returns storage implementation if the storage type matches one. Returns nullptr otherwise (it is a no...
Definition: qgsprojectstorageregistry.cpp:26
QgsProjectStorageRegistry::projectStorages
QList< QgsProjectStorage * > projectStorages() const
Returns a list of registered project storage implementations.
Definition: qgsprojectstorageregistry.cpp:51
QgsProjectStorage::isSupportedUri
virtual bool isSupportedUri(const QString &uri) const
Returns true if the specified uri is supported by the storage provider.
Definition: qgsprojectstorage.cpp:18
qgsprojectstorageregistry.h
QgsProjectStorage::type
virtual QString type()=0
Unique identifier of the project storage type.
QgsProjectStorage
Abstract interface for project storage - to be implemented by various backends and registered in QgsP...
Definition: qgsprojectstorage.h:36
QgsProjectStorageRegistry::~QgsProjectStorageRegistry
~QgsProjectStorageRegistry()
Definition: qgsprojectstorageregistry.cpp:21
QgsProjectStorageRegistry::unregisterProjectStorage
void unregisterProjectStorage(QgsProjectStorage *storage)
Unregisters a storage backend and destroys its instance.
Definition: qgsprojectstorageregistry.cpp:61
QgsProjectStorageRegistry::projectStorageFromUri
QgsProjectStorage * projectStorageFromUri(const QString &uri)
Returns storage implementation if the URI matches one. Returns nullptr otherwise (it is a normal file...
Definition: qgsprojectstorageregistry.cpp:31
qgsprojectstorage.h