------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=102381 manyoso yahoo com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED ------- Additional Comments From manyoso yahoo com 2005-03-30 01:42 ------- CVS commit by treat: * Handle null values in the edit form. BUGS:102381 M +2 -1 datatable.cpp 1.24 M +26 -1 datatableedit.cpp 1.13 M +39 -5 datatableeditorfactory.cpp 1.24 M +5 -3 datatableeditorfactory.h 1.14 --- kdeextragear-1/datakiosk/src/datatable.cpp #1.23:1.24 @ -455,7 +455,8 @ void DataTable::slotUpdate() if ( m_tableView->currentSelection() == -1 && m_tableView->numRows() < 1 ) { + m_tableEdit->setCurrentRow( -1 ); emit myCurrentChanged( 0L ); } - else + else if ( m_tableView->currentSelection() != -1 ) { m_tableEdit->setCurrentRow( m_tableView->currentRow() ); --- kdeextragear-1/datakiosk/src/datatableedit.cpp #1.12:1.13 @ -17,8 +17,8 @ #include #include -#include #include #include +#include #include @ -158,4 +158,16 @ QFrame* DataTableEdit::getFormBox() cons void DataTableEdit::setCurrentRow( int row ) { + if ( row == -1 ) + { + form()->clearValues( true ); + setEnabled( FALSE ); + m_scroll->viewport()->hide(); + } + else if ( !isEnabled() ) + { + setEnabled( TRUE ); + m_scroll->viewport()->show(); + } + seek( row, FALSE); } @ -238,4 +250,17 @ void DataTableEdit::readFields() m_refreshing = true; QDataBrowser::readFields(); + + QLayoutIterator it = m_formLayout->iterator(); + QLayoutItem *item; + while ( (item = it.current()) != 0 ) + { + DataEditorBase *editor = ::qt_cast( item->widget() ); + if ( editor->getField()->isNull() ) + { + editor->setNullValue( "" ); //needs to sync with QDataTable::nullText + } + ++it; + } + m_refreshing = false; } --- kdeextragear-1/datakiosk/src/datatableeditorfactory.cpp #1.23:1.24 @ -228,4 +228,32 @ bool DataEditorBase::currentEdited() con } +void DataEditorBase::setNullValue( const QString txt ) +{ + if ( ::qt_cast( m_editor ) ) + { + ( ( QLineEdit* ) m_editor ) ->setText( txt ); + } + +// else if ( ::qt_cast( m_editor ) ) +// { +// ( ( DateEdit* ) m_editor ) ->setText( txt ); +// } +// +// else if ( ::qt_cast( m_editor ) ) +// { +// ( ( TimeEdit* ) m_editor ) ->setText( txt ); +// } +// +// else if ( ::qt_cast( m_editor ) ) +// { +// ( ( DateTimeEdit* ) m_editor ) ->setText( txt ); +// } + + else if ( ::qt_cast( m_editor ) ) + { + ( ( RelationCombo* ) m_editor ) ->setNullValue( txt ); + } +} + void DataEditorBase::editorChanged( const QString &txt ) { @ -457,15 +485,21 @ void RelationCombo::initializeFields( bo } -int RelationCombo::relationId() const +QString RelationCombo::relationId() const { - return m_relationId; + return QString::number( m_relationId ); } -void RelationCombo::setRelationId( int id ) +void RelationCombo::setRelationId( const QString &id ) { if ( m_constrained ) initializeFields(); - setCurrentId( id ); + setCurrentId( id.toInt() ); +} + +void RelationCombo::setNullValue( const QString txt ) +{ + setCurrentItem( -1 ); + setCurrentText( txt ); } --- kdeextragear-1/datakiosk/src/datatableeditorfactory.h #1.13:1.14 @ -56,4 +56,5 @ public: QSize getRecommendedSize () const; bool currentEdited() const; + void setNullValue( const QString txt ); signals: @ -104,5 +105,5 @ class RelationCombo : public KComboTable { Q_OBJECT - Q_PROPERTY( int relationid READ relationId WRITE setRelationId ) + Q_PROPERTY( QString relationid READ relationId WRITE setRelationId ) public: RelationCombo( DataField* field, DataTable *m_dataTable, @ -110,6 +111,7 @ public: const char *name = 0 ); - int relationId() const; - void setRelationId( int id ); + QString relationId() const; + void setRelationId( const QString &id ); + void setNullValue( const QString txt ); signals: