1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the test suite of Qt for Python. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 21 ** included in the packaging of this file. Please review the following 22 ** information to ensure the GNU General Public License requirements will 23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 24 ** 25 ** $QT_END_LICENSE$ 26 ** 27 ****************************************************************************/ 28 29 #include "objecttypelayout.h" 30 #include <iostream> 31 32 using namespace std; 33 addObject(ObjectType * obj)34void ObjectTypeLayout::addObject(ObjectType* obj) 35 { 36 if (obj->isLayoutType()) { 37 ObjectTypeLayout* l = reinterpret_cast<ObjectTypeLayout*>(obj); 38 if (l->parent()) { 39 cerr << "[WARNING] ObjectTypeLayout::addObject: layout '" << l->objectName().cstring(); 40 cerr << "' already has a parent." << endl; 41 return; 42 } 43 44 l->setParent(this); 45 46 if (parent() && !parent()->isLayoutType()) 47 l->reparentChildren(parent()); 48 } 49 50 m_objects.push_back(obj); 51 } 52 objects() const53std::list< ObjectType* > ObjectTypeLayout::objects() const 54 { 55 return m_objects; 56 } 57 reparentChildren(ObjectType * parent)58void ObjectTypeLayout::reparentChildren(ObjectType* parent) 59 { 60 std::list<ObjectType*>::const_iterator it = m_objects.begin(); 61 for (; it != m_objects.end(); ++it) { 62 if ((*it)->isLayoutType()) 63 reinterpret_cast<ObjectTypeLayout*>(*it)->reparentChildren(parent); 64 else 65 (*it)->setParent(parent); 66 } 67 } 68 69