Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsfieldformatterregistry.cpp - QgsFieldFormatterRegistry 3 : : 4 : : --------------------- 5 : : begin : 2.12.2016 6 : : copyright : (C) 2016 by Matthias Kuhn 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : 17 : : #include "qgsfieldformatterregistry.h" 18 : : #include "qgsfieldformatter.h" 19 : : 20 : : #include "qgsvaluerelationfieldformatter.h" 21 : : #include "qgsvaluemapfieldformatter.h" 22 : : #include "qgsdatetimefieldformatter.h" 23 : : #include "qgsrelationreferencefieldformatter.h" 24 : : #include "qgskeyvaluefieldformatter.h" 25 : : #include "qgslistfieldformatter.h" 26 : : #include "qgsrangefieldformatter.h" 27 : : #include "qgscheckboxfieldformatter.h" 28 : : #include "qgsfallbackfieldformatter.h" 29 : : #include "qgsreadwritelocker.h" 30 : : 31 : 5 : QgsFieldFormatterRegistry::QgsFieldFormatterRegistry( QObject *parent ) 32 : 5 : : QObject( parent ) 33 : 10 : { 34 : 5 : addFieldFormatter( new QgsValueRelationFieldFormatter() ); 35 : 5 : addFieldFormatter( new QgsValueMapFieldFormatter() ); 36 : 5 : addFieldFormatter( new QgsRelationReferenceFieldFormatter() ); 37 : 5 : addFieldFormatter( new QgsKeyValueFieldFormatter() ); 38 : 5 : addFieldFormatter( new QgsListFieldFormatter() ); 39 : 5 : addFieldFormatter( new QgsDateTimeFieldFormatter() ); 40 : 5 : addFieldFormatter( new QgsRangeFieldFormatter() ); 41 : 5 : addFieldFormatter( new QgsCheckBoxFieldFormatter() ); 42 : : 43 : 5 : mFallbackFieldFormatter = new QgsFallbackFieldFormatter(); 44 : 5 : } 45 : : 46 : 10 : QgsFieldFormatterRegistry::~QgsFieldFormatterRegistry() 47 : 10 : { 48 : 5 : QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write ); 49 : 5 : qDeleteAll( mFieldFormatters ); 50 : 5 : delete mFallbackFieldFormatter; 51 : 10 : } 52 : : 53 : 40 : void QgsFieldFormatterRegistry::addFieldFormatter( QgsFieldFormatter *formatter ) 54 : : { 55 : 40 : QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write ); 56 : 40 : mFieldFormatters.insert( formatter->id(), formatter ); 57 : 40 : locker.unlock(); 58 : 40 : emit fieldFormatterAdded( formatter ); 59 : 40 : } 60 : : 61 : 0 : void QgsFieldFormatterRegistry::removeFieldFormatter( QgsFieldFormatter *formatter ) 62 : : { 63 : 0 : removeFieldFormatter( formatter->id() ); 64 : 0 : } 65 : : 66 : 0 : void QgsFieldFormatterRegistry::removeFieldFormatter( const QString &id ) 67 : : { 68 : 0 : QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write ); 69 : 0 : if ( QgsFieldFormatter *formatter = mFieldFormatters.take( id ) ) 70 : : { 71 : 0 : emit fieldFormatterRemoved( formatter ); 72 : 0 : delete formatter; 73 : 0 : } 74 : 0 : } 75 : : 76 : 0 : QgsFieldFormatter *QgsFieldFormatterRegistry::fieldFormatter( const QString &id ) const 77 : : { 78 : 0 : QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Read ); 79 : 0 : return mFieldFormatters.value( id, mFallbackFieldFormatter ); 80 : 0 : } 81 : : 82 : 0 : QgsFieldFormatter *QgsFieldFormatterRegistry::fallbackFieldFormatter() const 83 : : { 84 : 0 : return mFallbackFieldFormatter; 85 : : }