tools/designer/src/lib/extension/qextensionmanager.cpp

Go to the documentation of this file.
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 }

Generated on Thu Mar 15 12:01:21 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1