|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 2005-2006 Jaroslaw Staniek <js@iidea.pl>
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
|
|
along with this program; see the file COPYING. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "kexidataiteminterface.h"
|
|
|
|
|
|
|
|
#include <kdebug.h>
|
|
|
|
|
|
|
|
KexiDataItemChangesListener::KexiDataItemChangesListener()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
KexiDataItemChangesListener::~KexiDataItemChangesListener()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------
|
|
|
|
|
|
|
|
KexiDataItemInterface::KexiDataItemInterface()
|
|
|
|
: m_listener(0)
|
|
|
|
, m_listenerIsTQObject(false)
|
|
|
|
, m_parentDataItemInterface(0)
|
|
|
|
, m_hasFocusableWidget(true)
|
|
|
|
, m_disable_signalValueChanged(false)
|
|
|
|
, m_acceptEditorAfterDeleteContents(false)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
KexiDataItemInterface::~KexiDataItemInterface()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::setValue(const TQVariant& value, const TQVariant& add,
|
|
|
|
bool removeOld, const TQVariant* visibleValue)
|
|
|
|
{
|
|
|
|
m_disable_signalValueChanged = true; //to prevent emmiting valueChanged()
|
|
|
|
//needed? clear();
|
|
|
|
if (dynamic_cast<TQObject*>(this)) {
|
|
|
|
kdDebug() << "KexiDataItemInterface::setValue(): " <<
|
|
|
|
dynamic_cast<TQObject*>(this)->className() << " "
|
|
|
|
<< dynamic_cast<TQWidget*>(this)->name()
|
|
|
|
<< " value=" << value << " add=" << add << endl;
|
|
|
|
}
|
|
|
|
m_origValue = value;
|
|
|
|
setValueInternal(add, removeOld);
|
|
|
|
if (visibleValue)
|
|
|
|
setVisibleValueInternal(*visibleValue);
|
|
|
|
m_disable_signalValueChanged = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::setVisibleValueInternal(const TQVariant& value)
|
|
|
|
{
|
|
|
|
Q_UNUSED(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::signalValueChanged()
|
|
|
|
{
|
|
|
|
if (m_disable_signalValueChanged || isReadOnly())
|
|
|
|
return;
|
|
|
|
if (m_parentDataItemInterface) {
|
|
|
|
m_parentDataItemInterface->signalValueChanged();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (m_listener) {
|
|
|
|
beforeSignalValueChanged();
|
|
|
|
m_listener->valueChanged(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KexiDataItemInterface::valueChanged()
|
|
|
|
{
|
|
|
|
// bool ok;
|
|
|
|
// kdDebug() << m_origValue.toString() << " ? " << value(ok).toString() << endl;
|
|
|
|
// return (m_origValue != value(ok)) && ok;
|
|
|
|
kdDebug() << "KexiDataItemInterface::valueChanged(): " << m_origValue.toString() << " ? " << value().toString() << endl;
|
|
|
|
return m_origValue != value();
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
void KexiDataItemInterface::setValue(const TQVariant& value)
|
|
|
|
{
|
|
|
|
m_disable_signalValueChanged = true; //to prevent emmiting valueChanged()
|
|
|
|
setValueInternal( value );
|
|
|
|
m_disable_signalValueChanged = false;
|
|
|
|
}*/
|
|
|
|
|
|
|
|
KexiDataItemChangesListener* KexiDataItemInterface::listener()
|
|
|
|
{
|
|
|
|
if (!m_listener || !m_listenerIsTQObject)
|
|
|
|
return m_listener;
|
|
|
|
if (!m_listenerObject)
|
|
|
|
m_listener = 0; //destroyed, update pointer
|
|
|
|
return m_listener;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::installListener(KexiDataItemChangesListener* listener)
|
|
|
|
{
|
|
|
|
m_listener = listener;
|
|
|
|
m_listenerIsTQObject = dynamic_cast<TQObject*>(listener);
|
|
|
|
if (m_listenerIsTQObject)
|
|
|
|
m_listenerObject = dynamic_cast<TQObject*>(listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::showFocus( const TQRect& r, bool readOnly )
|
|
|
|
{
|
|
|
|
Q_UNUSED(r);
|
|
|
|
Q_UNUSED(readOnly);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::hideFocus()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::clickedOnContents()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KexiDataItemInterface::valueIsValid()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KexiDataItemInterface::setParentDataItemInterface(KexiDataItemInterface* parentDataItemInterface)
|
|
|
|
{
|
|
|
|
m_parentDataItemInterface = parentDataItemInterface;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KexiDataItemInterface::cursorAtNewRow()
|
|
|
|
{
|
|
|
|
return listener() ? listener()->cursorAtNewRow() : false;
|
|
|
|
}
|