00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "propertywidgetitem.h"
00020
00021 #include <QtCore/QVariant>
00022 #include <QtGui/QVBoxLayout>
00023 #include <QtGui/QLayout>
00024
00025 using namespace GluonCreator;
00026
00027 class PropertyWidgetItem::PropertyWidgetItemPrivate
00028 {
00029 public:
00030 PropertyWidgetItemPrivate()
00031 {
00032 editedObject = 0;
00033 editWidget = 0;
00034 }
00035
00036 QObject* editedObject;
00037 QString propertyName;
00038 QWidget* editWidget;
00039 };
00040
00041 PropertyWidgetItem::PropertyWidgetItem( QWidget* parent, Qt::WindowFlags f )
00042 : QWidget( parent, f )
00043 {
00044 d = new PropertyWidgetItemPrivate;
00045
00046 setLayout( new QVBoxLayout() );
00047 layout()->setSpacing( 0 );
00048 layout()->setContentsMargins( 0, 0, 0, 0 );
00049 }
00050
00051 PropertyWidgetItem::~PropertyWidgetItem()
00052 {
00053 delete d;
00054 }
00055
00056
00057 QWidget*
00058 PropertyWidgetItem::editWidget() const
00059 {
00060 return d->editWidget;
00061 }
00062
00063 QObject*
00064 PropertyWidgetItem::editObject() const
00065 {
00066 return d->editedObject;
00067 }
00068
00069 QString
00070 PropertyWidgetItem::editProperty() const
00071 {
00072 return d->propertyName;
00073 }
00074
00075 const QString
00076 PropertyWidgetItem::typeName() const
00077 {
00078 return QString( d->editedObject->property( d->propertyName.toUtf8() ).typeName() );
00079 }
00080
00081 void
00082 PropertyWidgetItem::setEditObject( QObject* editThis )
00083 {
00084 d->editedObject = editThis;
00085 }
00086
00087 void
00088 PropertyWidgetItem::setEditProperty( const QString& propertyName )
00089 {
00090 d->propertyName = propertyName;
00091 if( d->editedObject )
00092 setEditValue( d->editedObject->property( propertyName.toUtf8() ) );
00093 }
00094
00095 void
00096 PropertyWidgetItem::setEditWidget( QWidget* widget )
00097 {
00098 d->editWidget = widget;
00099 layout()->addWidget( widget );
00100 }
00101
00102 void
00103 PropertyWidgetItem::setEditValue( const QVariant& value )
00104 {
00105 if( d->editWidget )
00106 d->editWidget->setProperty( "value", value );
00107 }
00108
00109 void
00110 PropertyWidgetItem::valueChanged( QVariant value )
00111 {
00112 QVariant oldValue = d->editedObject->property( d->propertyName.toUtf8() );
00113 d->editedObject->setProperty( d->propertyName.toUtf8(), value );
00114 emit propertyChanged( d->editedObject, d->propertyName, oldValue, value );
00115 }
00116
00117