20#include "kexidataawarepropertyset.h"
21#include "kexitableviewdata.h"
22#include "kexidataawareobjectiface.h"
24#include <koproperty/property.h>
25#include <kexiviewbase.h>
27#define MAX_FIELDS 1009
31 : TQObject( view, TQCString(view->name())+ "KexiDataAwarePropertySet" )
33 , m_dataObject(dataObject)
36 m_sets.setAutoDelete( true);
43 m_dataObject->connectCellSelectedSignal( this, TQ_SLOT( slotCellSelected( int, int)));
46 const bool wasDirty = view-> dirty();
52KexiDataAwarePropertySet::~KexiDataAwarePropertySet()
58 if (!m_currentTVData.isNull()) {
59 m_currentTVData->disconnect( this );
62 m_currentTVData = data;
63 if (!m_currentTVData.isNull()) {
65 connect(m_currentTVData, TQ_SIGNAL(rowsDeleted( const TQValueList<int> & )),
67 connect(m_currentTVData, TQ_SIGNAL( rowInserted(KexiTableItem*,uint, bool)),
69 connect(m_currentTVData, TQ_SIGNAL(reloadRequested()),
74void KexiDataAwarePropertySet::removeCurrentPropertySet()
81 KoProperty::Set *set = m_sets.at(row);
87 m_view->propertySetSwitched();
90uint KexiDataAwarePropertySet::size() const
95void KexiDataAwarePropertySet::clear(uint minimumSize)
98 m_sets.resize(TQMAX(minimumSize, MAX_FIELDS));
99 m_view->setDirty( true);
100 m_view->propertySetSwitched();
110 if (!set || row >= m_sets.size()) {
111 kexiwarn << "KexiDataAwarePropertySet::insert() invalid args: rew="<< row<< " propertyset="<< set<< endl;
114 if (set->parent() && set->parent()!= this) {
115 kexiwarn << "KexiDataAwarePropertySet::insert() propertyset's parent must be NULL or this KexiDataAwarePropertySet" << endl;
121 connect(set, TQ_SIGNAL(propertyChanged(KoProperty::Set&, KoProperty::Property&)), m_view, TQ_SLOT(setDirty()));
126 KoProperty::Property* prop = new KoProperty::Property( "newrow");
127 prop->setVisible( false);
128 set->addProperty( prop );
133KoProperty::Set* KexiDataAwarePropertySet::currentPropertySet() const
138uint KexiDataAwarePropertySet::currentRow() const
140 return m_dataObject->currentRow();
146 removeCurrentPropertySet();
149 m_sets.setAutoDelete( false);
150 const int r = m_dataObject->currentRow();
151 for ( int i=r;i<int( m_sets.size()-1);i++) {
152 KoProperty::Set *set = m_sets[i+1];
156 m_sets.setAutoDelete( true);
158 m_view->propertySetSwitched();
165 m_sets.setAutoDelete( false);
166 const int orig_size = size();
168 int num_removed = 0, cur_r = -1;
169 for (TQValueList<int>::ConstIterator r_it = rows.constBegin(); r_it!=rows.constEnd() && *r_it < orig_size; ++r_it) {
174 KoProperty::Set *set = m_sets.take(i+num_removed);
175 kdDebug() << "property set " << i+num_removed << " deleted" << endl;
178 for (; (i+num_removed)<cur_r; i++) {
180 kdDebug() << i << " <- " << i+num_removed << endl;
183 prev_r = cur_r - num_removed;
187 KoProperty::Set *set = m_sets.take(cur_r);
188 kdDebug() << "property set " << cur_r << " deleted" << endl;
191 for ( int i=prev_r; (i+num_removed)<orig_size; i++) {
193 kdDebug() << i << " <- " << i+num_removed << endl;
197 for ( int i=orig_size-num_removed; i<orig_size; i++) {
198 kdDebug() << i << " <- zero" << endl;
201 m_sets.setAutoDelete( true);
205 m_view->propertySetSwitched();
214 m_sets.setAutoDelete( false);
217 for ( int i= int( m_sets.size())-1; i>( int)row; i--) {
218 KoProperty::Set *set = m_sets[i-1];
222 m_sets.setAutoDelete( true);
224 m_view->propertySetSwitched();
234 m_view->propertySetSwitched();
239 if (m_currentTVData.isNull())
241 int idx = m_currentTVData->findRef(&item);
249 const int size = m_sets.size();
250 for ( int i=0; i<size; i++) {
251 KoProperty::Set *set = m_sets[i];
252 if (!set || !set->contains(propertyName))
254 if (set->property(propertyName).value() == value)
260#include "kexidataawarepropertyset.moc"
The KexiDataAwareObjectInterface is an interface for record-based data object.
int findRowForPropertyValue(const TQCString &propertyName, const TQVariant &value)
void slotDataSet(KexiTableViewData *data)
KoProperty::Set * findPropertySetForItem(KexiTableItem &item)
void insert(uint row, KoProperty::Set *set, bool newOne=false)
SetVector m_sets prop. sets vector
void slotRowDeleted() Called on row delete in a tableview.
int m_row used to know if a new row is selected in slotCellSelected()
void slotCellSelected(int, int row) Called on selecting another cell in a tableview.
KexiDataAwarePropertySet(KexiViewBase *view, KexiDataAwareObjectInterface *dataObject)
void slotReloadRequested() Called on clearing tableview's data: just clears all property sets.
void slotRowInserted(KexiTableItem *item, uint row, bool repaint) Called on row insertion in a tableview.
void slotRowsDeleted(const TQValueList< int > &rows) Called on multiple rows delete in a tableview.
Base class for single view embeddable of in KexiDialogBase.
virtual bool dirty() const
|