[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/kode/kxforms
From: Andre Duffeck <andre () duffeck ! de>
Date: 2007-03-13 10:48:09
Message-ID: 1173782889.303880.4209.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 642091 by duffeck:
Fix lists of complexTypes.
M +12 -0 formcreator.cpp
M +24 -2 guielement.cpp
M +6 -1 guielement.h
M +4 -1 input.cpp
M +0 -4 input.h
M +1 -1 list.cpp
M +0 -3 list.h
M +1 -1 section.cpp
M +0 -4 section.h
M +18 -7 select1.cpp
M +0 -4 select1.h
M +2 -3 textarea.cpp
M +0 -2 textarea.h
--- trunk/KDE/kdepim/kode/kxforms/formcreator.cpp #642090:642091
@@ -134,6 +134,7 @@
!element.mixed() &&
!choiceOnly) {
section = xml->tag( "kxf:section" );
+ section->attribute( "ref", path.toString() );
path = path + Reference( element.name() );
createLabel( section, element );
if( element.elementRelations().size() <= 1 ) {
@@ -184,6 +185,17 @@
}
}
+ if ( itemLabel.isEmpty() && itemElement.elementRelations().count() > 0 ) {
+ Schema::Element e2 = mDocument.element( itemElement.elementRelations().first() );
+ QString ref;
+ ref += QString("/%1").arg( e2.name() );
+ while( e2.elementRelations().count() > 0 ) {
+ ref += QString("/%1").arg( e2.elementRelations().first().target() );
+ e2 = mDocument.element( e2.elementRelations().first().target() );
+ }
+ itemLabel += QString("<arg ref=\"%1\"/>").arg( ref );
+ }
+
if ( itemLabel.isEmpty() ) {
if ( itemElement.type() == Schema::Node::String ) {
itemLabel += "<arg ref=\".\" truncate=\"40\"/>";
--- trunk/KDE/kdepim/kode/kxforms/guielement.cpp #642090:642091
@@ -20,11 +20,12 @@
*/
#include "guielement.h"
+#include "manager.h"
using namespace KXForms;
-GuiElement::GuiElement( QWidget *parent )
- : mParent( parent ), mLabel( 0 ), mWidget( 0 )
+GuiElement::GuiElement( QWidget *parent, Manager *manager )
+ : mParent( parent ), mLabel( 0 ), mWidget( 0 ), mManager( manager )
{
}
@@ -47,6 +48,27 @@
return mContext;
}
+QDomElement GuiElement::createElement( const Reference &ref )
+{
+ QDomElement e;
+ QDomElement itElement = context();
+ foreach( Reference::Segment s, ref.segments() ) {
+ if( s.isEmpty() )
+ continue;
+ e = itElement.firstChildElement( s.name() );
+ int cnt = 1;
+ while( !e.isNull() && cnt++ < s.count() ) {
+ e = e.nextSiblingElement( s.name() );
+ }
+ if( e.isNull() ) {
+ e = mManager->document().createElement( s.name() );
+ itElement.appendChild( e );
+ }
+ itElement = e;
+ }
+ return e;
+}
+
void GuiElement::loadData( const QDomElement &element )
{
mContext = element;
--- trunk/KDE/kdepim/kode/kxforms/guielement.h #642090:642091
@@ -29,12 +29,14 @@
namespace KXForms {
+class Manager;
+
class GuiElement : public QObject
{
public:
typedef QList<GuiElement *> List;
- GuiElement( QWidget *parent );
+ GuiElement( QWidget *parent, Manager *m );
virtual ~GuiElement();
virtual void parseElement( const QDomElement & ) {}
@@ -44,6 +46,8 @@
QDomElement context() const;
+ QDomElement createElement( const Reference & );
+
void loadData( const QDomElement &context );
virtual QWidget *widget() { return mWidget; }
@@ -56,6 +60,7 @@
QWidget *mParent;
QLabel *mLabel;
QWidget *mWidget;
+ Manager *mManager;
private:
Reference mRef;
--- trunk/KDE/kdepim/kode/kxforms/input.cpp #642090:642091
@@ -32,7 +32,7 @@
using namespace KXForms;
Input::Input( Manager *m, const QString &label, QWidget *parent )
- : GuiElement( parent ), mManager( m )
+ : GuiElement( parent, m )
{
mLabel = new QLabel( label, mParent );
mLineEdit = new KLineEdit( mParent );
@@ -62,6 +62,9 @@
ref().applyAttributeContext( context() ).setAttribute( s.name(), txt );
} else {
QDomElement e = ref().applyElement( context() );
+ if ( e.isNull() ) {
+ e = createElement( ref() );
+ }
QDomText t = e.firstChild().toText();
if ( t.isNull() ) {
t = mManager->document().createTextNode( txt );
--- trunk/KDE/kdepim/kode/kxforms/input.h #642090:642091
@@ -27,8 +27,6 @@
namespace KXForms {
-class Manager;
-
class Input : public GuiElement
{
Q_OBJECT
@@ -42,8 +40,6 @@
void returnPressed();
private:
- Manager *mManager;
-
KLineEdit *mLineEdit;
};
--- trunk/KDE/kdepim/kode/kxforms/list.cpp #642090:642091
@@ -40,7 +40,7 @@
using namespace KXForms;
List::List( Manager *m, const QString &label, QWidget *parent )
- : GuiElement( parent ), mManager( m )
+ : GuiElement( parent, m )
{
kDebug() << "List() " << label << endl;
mWidget = new QWidget( mParent );
--- trunk/KDE/kdepim/kode/kxforms/list.h #642090:642091
@@ -27,7 +27,6 @@
namespace KXForms {
-class Manager;
class ListModel;
class List : public GuiElement
@@ -79,8 +78,6 @@
void resizeColumns();
private:
- Manager *mManager;
-
ItemClass::List mItemClasses;
QTreeView *mView;
--- trunk/KDE/kdepim/kode/kxforms/section.cpp #642090:642091
@@ -30,7 +30,7 @@
using namespace KXForms;
Section::Section( Manager *m, const QString &label, QWidget *parent )
- : GuiElement( parent ), mManager( m )
+ : GuiElement( parent, m )
{
mLabel = new QLabel( label );
mBox = new QGroupBox( mParent );
--- trunk/KDE/kdepim/kode/kxforms/section.h #642090:642091
@@ -28,8 +28,6 @@
namespace KXForms {
-class Manager;
-
class Section : public GuiElement
{
public:
@@ -41,8 +39,6 @@
QLayout *layout() { return mLayout; }
private:
- Manager *mManager;
-
QGroupBox *mBox;
QLayout *mLayout;
};
--- trunk/KDE/kdepim/kode/kxforms/select1.cpp #642090:642091
@@ -20,6 +20,7 @@
*/
#include "select1.h"
+#include "manager.h"
#include <kdebug.h>
@@ -30,7 +31,7 @@
using namespace KXForms;
Select1::Select1( Manager *m, const QString &label, QWidget *parent )
- : GuiElement( parent ), mManager( m )
+ : GuiElement( parent, m )
{
mLabel = new QLabel( label, parent );
mComboBox = new QComboBox( parent );
@@ -86,7 +87,8 @@
void Select1::saveData()
{
kDebug() << "Select1::saveData()" << endl;
-
+ kDebug() << ref().toString() << endl;
+ kDebug() << "Context: " << context().nodeName() << endl;
Reference::Segment s = ref().segments().last();
QString txt = mValues[ mComboBox->currentIndex() ];
@@ -94,12 +96,21 @@
context().setAttribute( s.name(), txt );
} else {
QDomElement e = ref().applyElement( context() );
+ if ( e.isNull() ) {
+ e = createElement( ref() );
+ }
QDomNode n = e.firstChild();
- if( n.isText() ) {
- QDomText t = n.toText();
- t.setData( txt );
- } else {
- n.toElement().setTagName( txt );
+ if( n.isNull() ) {
+ n = mManager->document().createElement( txt );
+ e.appendChild( n );
}
+ else {
+ if( n.isText() ) {
+ QDomText t = n.toText();
+ t.setData( txt );
+ } else if( n.isElement() ){
+ n.toElement().setTagName( txt );
+ }
+ }
}
}
--- trunk/KDE/kdepim/kode/kxforms/select1.h #642090:642091
@@ -29,8 +29,6 @@
namespace KXForms {
-class Manager;
-
class Select1 : public GuiElement
{
public:
@@ -42,8 +40,6 @@
void parseElement( const QDomElement &formElement );
private:
- Manager *mManager;
-
QComboBox *mComboBox;
QStringList mValues;
};
--- trunk/KDE/kdepim/kode/kxforms/textarea.cpp #642090:642091
@@ -33,7 +33,7 @@
using namespace KXForms;
TextArea::TextArea( Manager *m, const QString &label, QWidget *parent )
- : GuiElement( parent ), mManager( m )
+ : GuiElement( parent, m )
{
mLabel = new QLabel( label, mParent );
mEdit = new QTextEdit( mParent );
@@ -65,8 +65,7 @@
QDomElement e = ref().applyElement( context() );
if ( e.isNull() ) {
- e = mManager->document().createElement( ref().lastSegment().name() );
- context().appendChild( e );
+ e = createElement( ref() );
}
QString tag = e.tagName();
--- trunk/KDE/kdepim/kode/kxforms/textarea.h #642090:642091
@@ -27,8 +27,6 @@
namespace KXForms {
-class Manager;
-
class TextArea : public GuiElement
{
public:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic