summaryrefslogtreecommitdiff
path: root/noncore/apps/tableviewer/db/common.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/tableviewer/db/common.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/tableviewer/db/common.cpp165
1 files changed, 81 insertions, 84 deletions
diff --git a/noncore/apps/tableviewer/db/common.cpp b/noncore/apps/tableviewer/db/common.cpp
index b58af85..c35dbea 100644
--- a/noncore/apps/tableviewer/db/common.cpp
+++ b/noncore/apps/tableviewer/db/common.cpp
@@ -15,10 +15,10 @@
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
-**********************************************************************/
-#include "common.h"
+**********************************************************************/
+#include "common.h"
#include "datacache.h"
/* OPIE */
#include <opie2/odebug.h>
@@ -87,15 +87,15 @@ int parseNextNumber(QString *q) {
int QStringVector::compareItems(Item a, Item b)
{
QString *qa = (QString *)a;
QString *qb = (QString *)b;
-
+
return QString::compare(*qa, *qb);
}
/*!
\class TVVariant
- A way of abstracting void * and keeping information on
+ A way of abstracting void * and keeping information on
the keytypes and behaviours in one place
*/
TVVariantPrivate::TVVariantPrivate()
@@ -319,9 +319,9 @@ void TVVariant::load(QDataStream &s )
d->value.i = x;
}
break;
default:
- ofatal << "Unrecognized data type" << oendl;
+ ofatal << "Unrecognized data type" << oendl;
}
}
void TVVariant::save( QDataStream &s ) const
@@ -381,9 +381,9 @@ const QString TVVariant::toString() const
case Date:
return ((QDate*)d->value.ptr)->toString();
case Time:
return ((QTime*)d->value.ptr)->toString();
- case Int:
+ case Int:
return QString::number(d->value.i);
case Invalid:
default:
return QString::null;
@@ -423,18 +423,18 @@ const QDate TVVariant::toDate() const
if (!QDate::isValid(year, month, day))
return QDate();
return QDate(year, month, day);
}
-
+
return QDate();
}
const QTime TVVariant::toTime() const
{
if(d->typ == Time)
return *((QTime *)d->value.ptr);
-
+
if(d->typ == String) {
QString q = toString();
int hour = parseNextNumber(&q);
int minute = parseNextNumber(&q);
@@ -453,9 +453,9 @@ const QTime TVVariant::toTime() const
*this = TVVariant( to##f() ); \
else \
detach(); \
return *((Q##f*)d->value.ptr); }
-
+
TV_VARIANT_AS(String)
TV_VARIANT_AS(Date)
TV_VARIANT_AS(Time)
@@ -559,9 +559,9 @@ bool TVVariant::operator>( const TVVariant &v ) const
bool TVVariant::closer(TVVariant n, TVVariant o)
{
/* Nothing is close to an invalid, so nothing can be closer */
if(d->typ == Invalid)
- return FALSE;
+ return FALSE;
/* can't be closer if of different type */
if(n.type() != type())
return FALSE;
@@ -571,9 +571,9 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
return TRUE;
switch(type()){
case String: {
- /* case for strings is close is a substring.. closer is
+ /* case for strings is close is a substring.. closer is
* earlier alphabetically */
QString qs1 = n.toString().lower();
QString qs2 = o.toString().lower();
QString qsv = toString().lower();
@@ -581,9 +581,9 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
if (!qs1.startsWith(qsv))
return FALSE;
/* contains sub-str, if later than is not closer */
- if(QString::compare(qs1, qs2) > 0)
+ if(QString::compare(qs1, qs2) > 0)
return FALSE;
return TRUE;
}
case Int: {
@@ -592,15 +592,15 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
int i2 = o.toInt();
int iv = toInt();
int diff1 = (i1 - iv);
- if (diff1 < 0)
+ if (diff1 < 0)
diff1 = -diff1;
int diff2 = (i2 - iv);
- if (diff2 < 0)
+ if (diff2 < 0)
diff2 = -diff2;
- if (diff1 < diff2)
+ if (diff1 < diff2)
return TRUE;
return FALSE;
}
case Date: {
@@ -609,12 +609,12 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
QDate iv = toDate();
/* definition of closer is the least difference in days */
int diff1 = i1.daysTo(iv);
- if (diff1 < 0)
+ if (diff1 < 0)
diff1 = -diff1;
int diff2 = i2.daysTo(iv);
- if (diff2 < 0)
+ if (diff2 < 0)
diff2 = -diff2;
if (diff1 < diff2)
return TRUE;
@@ -626,12 +626,12 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
QTime iv = toTime();
/* definition of closer is the least difference in days */
int diff1 = i1.msecsTo(iv);
- if (diff1 < 0)
+ if (diff1 < 0)
diff1 = -diff1;
int diff2 = i2.msecsTo(iv);
- if (diff2 < 0)
+ if (diff2 < 0)
diff2 = -diff2;
if (diff1 < diff2)
return TRUE;
return FALSE;
@@ -648,26 +648,26 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
bool TVVariant::close(TVVariant n)
{
/* Nothing is close to an invalid, so nothing can be closer */
if(type() == Invalid)
- return FALSE;
+ return FALSE;
/* can't be close if of different type */
if(n.type() != type())
return FALSE;
switch(type()){
case String: {
- /* case for strings is close is a substring.. closer is
+ /* case for strings is close is a substring.. closer is
* earlier alphabetically */
QString qs1 = n.toString().lower();
QString qsv = toString().lower();
if (!qs1.startsWith(qsv))
return FALSE;
return TRUE;
}
- case Int:
+ case Int:
case Date:
case Time:
return TRUE;
default:
@@ -680,25 +680,25 @@ bool TVVariant::close(TVVariant n)
/*!
\class Key
\brief document me!
-
+
document me!
*/
Key::Key() : kname(), kexample(), kflags(0) { }
Key::Key(QString name, TVVariant example, int flags) :
- kname(name), kexample(example), kflags(flags) { }
+ kname(name), kexample(example), kflags(flags) { }
Key::Key(const Key &other)
{
kname = other.kname;
kexample = other.kexample;
kflags = other.kflags;
}
-Key& Key::operator=(const Key& key)
+Key& Key::operator=(const Key& key)
{
kname = key.kname;
kexample = key.kexample;
kflags = key.kflags;
@@ -776,15 +776,15 @@ void Key::setNewFlag(bool v)
/*!
Constructs a KeyList
*/
-KeyList::KeyList() : QIntDict<Key>(20)
+KeyList::KeyList() : QIntDict<Key>(20)
{
setAutoDelete(TRUE);
}
/* Should be deep copy, but isn't */
-KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k)
+KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k)
{
KeyListIterator it(k);
while(it.current()) {
replace(it.currentKey(), new Key(*it.current()));
@@ -821,9 +821,9 @@ bool KeyList::operator!=(const KeyList &other)
/*!
Returns the number of keys stored in the KeyList
*/
-int KeyList::getNumFields() const
+int KeyList::getNumFields() const
{
return count();
}
@@ -846,29 +846,28 @@ int KeyList::addKey(QString name, TVVariant::KeyType type)
{
/* generate a valid type for the example? */
TVVariant e = TVVariant("0");
switch(type) {
- case TVVariant::String:
+ case TVVariant::String:
return addKey(name, TVVariant("<undefined>").asString());
break;
- case TVVariant::Date:
+ case TVVariant::Date:
return addKey(name, TVVariant(QDate::currentDate()).asDate());
break;
- case TVVariant::Time:
+ case TVVariant::Time:
return addKey(name, TVVariant(QTime(0,0,0)).toTime());
break;
- case TVVariant::Int:
+ case TVVariant::Int:
return addKey(name, TVVariant(0).toInt());
break;
default:
- qWarning(QObject::tr("KeyList::addKey() Cannot make default "
- "value for type %1, Key not added.").arg(type));
+ owarn << "KeyList::addKey() Cannot make default value for type " << type << ", Key not added." << oendl;
break;
}
return -1;
}
-void KeyList::setKeyFlags(int i, int flag)
+void KeyList::setKeyFlags(int i, int flag)
{
if(find(i))
find(i)->setFlags(flag);
}
@@ -879,30 +878,30 @@ int KeyList::getKeyFlags(int i) const
return find(i)->flags();
return 0;
}
-bool KeyList::checkNewFlag(int i) const
+bool KeyList::checkNewFlag(int i) const
{
if (find(i))
return find(i)->newFlag();
return false;
}
-void KeyList::setNewFlag(int i, bool f)
+void KeyList::setNewFlag(int i, bool f)
{
if(!find(i))
return;
find(i)->setNewFlag(f);
}
-bool KeyList::checkDeleteFlag(int i) const
+bool KeyList::checkDeleteFlag(int i) const
{
if (find(i))
return find(i)->delFlag();
return false;
}
-void KeyList::setDeleteFlag(int i, bool f)
+void KeyList::setDeleteFlag(int i, bool f)
{
if(!find(i))
return;
find(i)->setDelFlag(f);
@@ -917,9 +916,9 @@ QString KeyList::getKeyName(int i) const
return find(i)->name();
return QString();
}
-void KeyList::setKeyName(int i, const QString &n)
+void KeyList::setKeyName(int i, const QString &n)
{
if(find(i))
find(i)->setName(n);
}
@@ -933,9 +932,9 @@ TVVariant::KeyType KeyList::getKeyType(int i) const
return find(i)->type();
return TVVariant::Invalid;
}
-void KeyList::setKeyType(int i, TVVariant::KeyType t)
+void KeyList::setKeyType(int i, TVVariant::KeyType t)
{
if(!find(i))
return;
switch(t) {
@@ -1039,11 +1038,11 @@ QDataStream &operator>>( QDataStream &s, KeyList &k)
*/
/*!
- Constructs a DataElem. This function needs a container because the
- size, types of keys and primary key are all defined by the containing
- database
+ Constructs a DataElem. This function needs a container because the
+ size, types of keys and primary key are all defined by the containing
+ database
*/
DataElem::DataElem(DBStore *c) : values(20)
{
int size;
@@ -1085,9 +1084,9 @@ QDataStream &operator>>( QDataStream &s, DataElem &d)
Q_UINT16 index = 0;
s >> size; /* redundent data but makes streaming easier */
if (size != d.getNumFields()) {
- owarn << "DataSize mis-match" << oendl;
+ owarn << "DataSize mis-match" << oendl;
return s; /* sanity check failed.. don't load */
}
for(i = 0; i < size; i++) {
@@ -1108,39 +1107,39 @@ KeyList DataElem::getKeys() const
{
return *(contained->getKeys());
}
-/*!
+/*!
This function determines whether field index i of the element has been
set yet.
- \return A boolean value that is TRUE if the specfied field of this
- element has been set and FALSE if the field has not yet been set
+ \return A boolean value that is TRUE if the specfied field of this
+ element has been set and FALSE if the field has not yet been set
*/
bool DataElem::hasValidValue(int i) const
{
if(!values.find(i))
return FALSE;
- if(!contained->getKeys()->validIndex(i))
+ if(!contained->getKeys()->validIndex(i))
return FALSE;
return values.find(i)->isValid();
}
-/*!
+/*!
This function determines whether field name qs of the element has been
set yet.
- \return A boolean value that is TRUE if the specfied field of this
- element has been set and FALSE if the field has not yet been set
+ \return A boolean value that is TRUE if the specfied field of this
+ element has been set and FALSE if the field has not yet been set
*/
-bool DataElem::hasValidValue(QString qs) const
+bool DataElem::hasValidValue(QString qs) const
{
int i = contained->getKeyIndex(qs);
return hasValidValue(i);
}
/*! returns the type of the field specified by index i */
-TVVariant::KeyType DataElem::getFieldType(int i) const
+TVVariant::KeyType DataElem::getFieldType(int i) const
{
return contained->getKeyType(i);
}
@@ -1150,22 +1149,22 @@ TVVariant::KeyType DataElem::getFieldType(QString qs) const
int i = contained->getKeyIndex(qs);
return contained->getKeyType(i);
}
-/*!
- returns a pointer to the data stored in field index i for this
- data element, (value may not be valid)
+/*!
+ returns a pointer to the data stored in field index i for this
+ data element, (value may not be valid)
*/
TVVariant DataElem::getField(int i) const
{
if(hasValidValue(i))
return TVVariant(*values.find(i));
return TVVariant();
}
-/*!
- returns a pointer to the data stored in field name qs for this
- data element, (value may not be valid)
+/*!
+ returns a pointer to the data stored in field name qs for this
+ data element, (value may not be valid)
*/
TVVariant DataElem::getField(QString qs) const
{
int i = contained->getKeyIndex(qs);
@@ -1178,9 +1177,9 @@ TVVariant DataElem::getField(QString qs) const
\param i index of the field to set
\param q a string that can be parsed to get the value to be set
*/
-void DataElem::setField(int i, QString q)
+void DataElem::setField(int i, QString q)
{
/* from the type of the field, parse q and store */
TVVariant::KeyType kt = contained->getKeyType(i);
@@ -1207,22 +1206,20 @@ void DataElem::setField(int i, QString q)
setField(i, t);
return;
}
default:
- qWarning(
- QObject::tr("DataElem::setField(%1, %2) No valid type found").arg(i).arg(q)
- );
+ owarn << "DataElem::setField(" << i << ", " << q << ") No valid type found" << oendl;
}
}
/*!
Sets the value of the elements field index i to the value at the pointer
value.
\param i index of the field to set
- \param value a pointer to the (already allocated) value to set
+ \param value a pointer to the (already allocated) value to set
*/
-void DataElem::setField(int i, TVVariant value)
+void DataElem::setField(int i, TVVariant value)
{
if (value.isValid()) {
values.remove(i);
values.replace(i, new TVVariant(value));
@@ -1235,9 +1232,9 @@ void DataElem::setField(int i, TVVariant value)
\param qs name of the field to set
\param q a string that can be parsed to get the value to be set
*/
-void DataElem::setField(QString qs, QString q)
+void DataElem::setField(QString qs, QString q)
{
/* from the type of the field, parse q and store */
int i = contained->getKeyIndex(qs);
setField(i, qs);
@@ -1247,9 +1244,9 @@ void DataElem::setField(QString qs, QString q)
Sets the value of the elements field name qs to the value at the pointer
value.
\param qs name of the field to set
- \param value a pointer to the (already allocated) value to set
+ \param value a pointer to the (already allocated) value to set
*/
void DataElem::setField(QString qs, TVVariant value)
{
int i = contained->getKeyIndex(qs);
@@ -1266,9 +1263,9 @@ void DataElem::unsetField(QString qs)
unsetField(i);
}
/*!
- Converts the data element to a Rich Text QString
+ Converts the data element to a Rich Text QString
*/
QString DataElem::toQString() const
{
/* lets make an attempt at this function */
@@ -1289,17 +1286,17 @@ QString DataElem::toQString() const
return scratch;
}
/*! formats individual fields to strings so can be displayed */
-QString DataElem::toQString(int i) const
+QString DataElem::toQString(int i) const
{
if(hasValidValue(i)) {
return getField(i).toString();
}
return "";
}
/*! formats individual fields to strings so can be sorted by QListView */
-QString DataElem::toSortableQString(int i) const
+QString DataElem::toSortableQString(int i) const
{
QString scratch = "";
if(hasValidValue(i)) {
switch (contained->getKeyType(i)) {
@@ -1312,15 +1309,15 @@ QString DataElem::toSortableQString(int i) const
break;
}
case TVVariant::Date: {
static QDate epochD(1800, 1, 1);
- scratch.sprintf("%08d",
+ scratch.sprintf("%08d",
epochD.daysTo(getField(i).toDate()));
break;
}
case TVVariant::Time: {
static QTime epochT(0, 0, 0);
- scratch.sprintf("%08d",
+ scratch.sprintf("%08d",
epochT.msecsTo(getField(i).toTime()));
break;
}
default:
@@ -1379,14 +1376,14 @@ bool DataElem::contains(int i, TVVariant v) const
}
/* meaningless for ints */
/* meaningless for time */
/* meaningless for dates */
- case TVVariant::Int:
+ case TVVariant::Int:
case TVVariant::Time:
case TVVariant::Date:
break;
default:
- owarn << "Tried to compare unknown data type" << oendl;
+ owarn << "Tried to compare unknown data type" << oendl;
}
return FALSE;
}
@@ -1405,14 +1402,14 @@ bool DataElem::startsWith(int i, TVVariant v) const
}
/* meaningless for ints */
/* meaningless for time */
/* meaningless for dates */
- case TVVariant::Int:
+ case TVVariant::Int:
case TVVariant::Time:
case TVVariant::Date:
return FALSE;
default:
- owarn << "Tried to compare unknown data type" << oendl;
+ owarn << "Tried to compare unknown data type" << oendl;
}
return FALSE;
}
@@ -1431,33 +1428,33 @@ bool DataElem::endsWith(int i, TVVariant v) const
}
/* meaningless for ints */
/* meaningless for time */
/* meaningless for dates */
- case TVVariant::Int:
+ case TVVariant::Int:
case TVVariant::Time:
case TVVariant::Date:
return FALSE;
default:
- owarn << "Tried to compare unknown data type" << oendl;
+ owarn << "Tried to compare unknown data type" << oendl;
}
return FALSE;
}
/*!
Determins which of the first to parameters are closer to the third, target
parameter.
- \return
+ \return
<UL>
- <LI>TRUE if the first element is a closer match to the target than the
+ <LI>TRUE if the first element is a closer match to the target than the
second element</LI>
<LI>FALSE if the first element is not a closer match to the target than
the second element</LI>
</UL>
*/
bool DataElem::closer(DataElem*d1, DataElem *d2, TVVariant target, int column)
{
- int type;
+ int type;
if(!d1) return FALSE;
if (!d1->hasValidValue(column)) return FALSE;
@@ -1468,11 +1465,11 @@ bool DataElem::closer(DataElem*d1, DataElem *d2, TVVariant target, int column)
if(d2) {
if (type != d2->getField(column).type()) {
/* can't do compare */
- owarn << "Tried to compare two incompatable types" << oendl;
+ owarn << "Tried to compare two incompatable types" << oendl;
return FALSE;
}
return target.closer(d1->getField(column), d2->getField(column));
- }
+ }
return target.close(d1->getField(column));
}