SUIT_DataObject::SUIT_DataObject( SUIT_DataObject* p )
: myParent( 0 ),
mySignal( 0 ),
+ myOpen( false ),
myCheck( false )
{
myChildren.setAutoDelete( true );
SUIT_DataObject::~SUIT_DataObject()
{
+ if ( mySignal )
+ {
+ mySignal->emitSignal();
+ mySignal->setOwner( 0 );
+ }
+
+ delete mySignal;
+
SUIT_DataObject* p = myParent;
myParent = 0;
for ( QPtrListIterator<SUIT_DataObject> it( myChildren ); it.current(); ++it )
it.current()->myParent = 0;
-
- delete mySignal;
}
/*!
removeChild( src );
if ( del )
- delete src;
+ src->deleteLater();
return true;
}
+/*!
+ Transfer the all children from specified object 'obj' to self.
+*/
+
+void SUIT_DataObject::reparentChildren( const SUIT_DataObject* obj )
+{
+ DataObjectList lst;
+ obj->children( lst );
+ for ( DataObjectListIterator it( lst ); it.current(); ++it )
+ it.current()->setParent( this );
+}
+
/*!
Set the parent object. Remove itself from current parent children
and append itself to the new parent children list.
Returns object name
*/
+void SUIT_DataObject::deleteLater()
+{
+ if ( !mySignal )
+ mySignal = new Signal( this );
+
+ mySignal->emitSignal();
+ mySignal->deleteLater();
+}
+
+/*!
+ Returns object name
+*/
+
QString SUIT_DataObject::name() const
{
return QString::null;
myCheck = on;
}
+bool SUIT_DataObject::isOpen() const
+{
+ return myOpen;
+}
+
+void SUIT_DataObject::setOpen( const bool on )
+{
+ myOpen = on;
+}
+
/*!
Returns object personal indentification key.
*/
for ( DataObjectListIterator it( myChildren ); it.current(); ++it ) // iterate all children
it.current()->dump( indent + 2 ); // dump every child with indent + 2 spaces
}
+
+/*!
+ Class: SUIT_DataObject::Signal [Internal]
+*/
+
+SUIT_DataObject::Signal::Signal( SUIT_DataObject* o )
+: QObject(),
+myOwner( o )
+{
+}
+
+SUIT_DataObject::Signal::~Signal()
+{
+ SUIT_DataObject* o = myOwner;
+ myOwner = 0;
+ if ( o )
+ {
+ o->mySignal = 0;
+ delete o;
+ }
+}
+
+void SUIT_DataObject::Signal::setOwner( SUIT_DataObject* o )
+{
+ myOwner = o;
+}
+
+void SUIT_DataObject::Signal::emitSignal()
+{
+ if ( myOwner )
+ emit destroyed( myOwner );
+}