00001 /**************************************************************************** 00002 ** 00003 ** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved. 00004 ** 00005 ** This file is part of the Qt Designer of the Qt Toolkit. 00006 ** 00007 ** This file may be used under the terms of the GNU General Public 00008 ** License version 2.0 as published by the Free Software Foundation 00009 ** and appearing in the file LICENSE.GPL included in the packaging of 00010 ** this file. Please review the following information to ensure GNU 00011 ** General Public Licensing requirements will be met: 00012 ** http://www.trolltech.com/products/qt/opensource.html 00013 ** 00014 ** If you are unsure which license is appropriate for your use, please 00015 ** review the following information: 00016 ** http://www.trolltech.com/products/qt/licensing.html or contact the 00017 ** sales department at sales@trolltech.com. 00018 ** 00019 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00020 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00021 ** 00022 ****************************************************************************/ 00023 00024 #include "qextensionmanager.h" 00025 00094 QExtensionManager::QExtensionManager(QObject *parent) 00095 : QObject(parent) 00096 { 00097 } 00098 00099 00103 QExtensionManager::~QExtensionManager() 00104 { 00105 } 00106 00111 void QExtensionManager::registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) 00112 { 00113 if (iid.isEmpty()) { 00114 m_globalExtension.prepend(factory); 00115 return; 00116 } 00117 00118 if (!m_extensions.contains(iid)) 00119 m_extensions.insert(iid, QList<QAbstractExtensionFactory*>()); 00120 00121 m_extensions[iid].prepend(factory); 00122 } 00123 00128 void QExtensionManager::unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) 00129 { 00130 if (iid.isEmpty()) { 00131 m_globalExtension.removeAll(factory); 00132 } else if (m_extensions.contains(iid)) { 00133 QList<QAbstractExtensionFactory*> &factories = m_extensions[iid]; 00134 factories.removeAll(factory); 00135 00136 if (factories.isEmpty()) 00137 m_extensions.remove(iid); 00138 } 00139 } 00140 00145 QObject *QExtensionManager::extension(QObject *object, const QString &iid) const 00146 { 00147 QList<QAbstractExtensionFactory*> l = m_extensions.value(iid); 00148 l += m_globalExtension; 00149 00150 foreach (QAbstractExtensionFactory *factory, l) { 00151 if (QObject *ext = factory->extension(object, iid)) 00152 return ext; 00153 } 00154 00155 return 0; 00156 }
1.5.1