|
|
@@ -20,165 +20,126 @@
|
|
|
=============================================================================*/
|
|
|
|
|
|
#include "ctkXnatObject.h"
|
|
|
+#include "ctkXnatObjectPrivate.h"
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
-class ctkXnatObjectPrivate
|
|
|
-{
|
|
|
-public:
|
|
|
- ctkXnatObject* parent;
|
|
|
- int parentIndex;
|
|
|
- QList<QString> childrenNames;
|
|
|
- QList<ctkXnatObject*> children;
|
|
|
-};
|
|
|
-
|
|
|
-ctkXnatObject::ctkXnatObject(ctkXnatObject* parent)
|
|
|
-: QObject(parent)
|
|
|
-, d_ptr(new ctkXnatObjectPrivate())
|
|
|
-{
|
|
|
- Q_D(ctkXnatObject);
|
|
|
- d->parent = parent;
|
|
|
- d->parentIndex = -1;
|
|
|
-}
|
|
|
|
|
|
ctkXnatObject::~ctkXnatObject()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::setParent(ctkXnatObject* parent)
|
|
|
+QString ctkXnatObject::getId() const
|
|
|
{
|
|
|
- Q_D(ctkXnatObject);
|
|
|
- QObject::setParent(parent);
|
|
|
- d->parent = parent;
|
|
|
+ return getProperty("ID");
|
|
|
}
|
|
|
|
|
|
-int ctkXnatObject::parentIndex()
|
|
|
+QString ctkXnatObject::getName() const
|
|
|
{
|
|
|
- Q_D(ctkXnatObject);
|
|
|
- return d->parentIndex;
|
|
|
+ return getProperty("name");
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::setParentIndex(int parentIndex)
|
|
|
+QString ctkXnatObject::getDescription() const
|
|
|
{
|
|
|
- Q_D(ctkXnatObject);
|
|
|
- d->parentIndex = parentIndex;
|
|
|
+ return getProperty("description");
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::fetch(ctkXnatConnection* /*connection*/)
|
|
|
+QString ctkXnatObject::getProperty(const QString& name) const
|
|
|
{
|
|
|
-// connection->fetch(this);
|
|
|
+ Q_D(const ctkXnatObject);
|
|
|
+ ctkXnatObjectPrivate::PropertyMapConstInterator iter = d->properties.find(name);
|
|
|
+ if (iter != d->properties.end())
|
|
|
+ {
|
|
|
+ return iter.value();
|
|
|
+ }
|
|
|
+ return QString::null;
|
|
|
}
|
|
|
|
|
|
-QString ctkXnatObject::getName() const
|
|
|
+void ctkXnatObject::setProperty(const QString& name, const QVariant& value)
|
|
|
{
|
|
|
- Q_D(const ctkXnatObject);
|
|
|
- return d->parent ? d->parent->childName(d->parentIndex) : 0;
|
|
|
+ Q_D(ctkXnatObject);
|
|
|
+ d->properties.insert(name, value.toString());
|
|
|
}
|
|
|
|
|
|
-ctkXnatObject* ctkXnatObject::getParent() const
|
|
|
+ctkXnatObject::Pointer ctkXnatObject::getParent() const
|
|
|
{
|
|
|
Q_D(const ctkXnatObject);
|
|
|
return d->parent;
|
|
|
}
|
|
|
|
|
|
-const QList<ctkXnatObject*>& ctkXnatObject::getChildren() const
|
|
|
+QList<ctkXnatObject::Pointer> ctkXnatObject::getChildren() const
|
|
|
{
|
|
|
Q_D(const ctkXnatObject);
|
|
|
return d->children;
|
|
|
}
|
|
|
|
|
|
-QString ctkXnatObject::childName(int childIndex) const
|
|
|
-{
|
|
|
- Q_D(const ctkXnatObject);
|
|
|
- return d->childrenNames[childIndex];
|
|
|
-}
|
|
|
-
|
|
|
-void ctkXnatObject::addChild(const QString& name, ctkXnatObject* child)
|
|
|
+void ctkXnatObject::addChild(const ctkXnatObject::Pointer& child)
|
|
|
{
|
|
|
Q_D(ctkXnatObject);
|
|
|
- int index = d->childrenNames.indexOf(name);
|
|
|
- if (index == -1)
|
|
|
+ d->children.push_back(child);
|
|
|
+ if (child->getConnection() == NULL)
|
|
|
{
|
|
|
- index = d->childrenNames.size();
|
|
|
- d->childrenNames.push_back(name);
|
|
|
- d->children.push_back(child);
|
|
|
+ child->d_func()->connection = this->getConnection();
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- d->children[index] = child;
|
|
|
- }
|
|
|
- child->setParent(this);
|
|
|
- child->setParentIndex(index);
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::removeChild(int childIndex)
|
|
|
+void ctkXnatObject::reset()
|
|
|
{
|
|
|
Q_D(ctkXnatObject);
|
|
|
- if (d->children[childIndex])
|
|
|
- {
|
|
|
- delete d->children[childIndex];
|
|
|
- d->children[childIndex] = NULL;
|
|
|
- }
|
|
|
+ //d->properties.clear();
|
|
|
+ d->children.clear();
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::download(ctkXnatConnection* /*connection*/, const QString& /*zipFilename*/)
|
|
|
+void ctkXnatObject::fetch()
|
|
|
{
|
|
|
- // do nothing
|
|
|
+ this->reset();
|
|
|
+ this->fetchImpl();
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::upload(ctkXnatConnection* /*connection*/, const QString& /*zipFilename*/)
|
|
|
+void ctkXnatObject::download(const QString& /*zipFilename*/)
|
|
|
{
|
|
|
// do nothing
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::add(ctkXnatConnection* /*connection*/, const QString& /*name*/)
|
|
|
+void ctkXnatObject::upload(const QString& /*zipFilename*/)
|
|
|
{
|
|
|
// do nothing
|
|
|
}
|
|
|
|
|
|
-void ctkXnatObject::remove(ctkXnatConnection* /*connection*/)
|
|
|
+void ctkXnatObject::add(const QString& /*name*/)
|
|
|
{
|
|
|
// do nothing
|
|
|
}
|
|
|
|
|
|
-QString ctkXnatObject::getKind() const
|
|
|
+void ctkXnatObject::remove()
|
|
|
{
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-QString ctkXnatObject::getModifiableChildKind() const
|
|
|
-{
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-QString ctkXnatObject::getModifiableParentName() const
|
|
|
-{
|
|
|
- return NULL;
|
|
|
+ // do nothing
|
|
|
}
|
|
|
|
|
|
-bool ctkXnatObject::isFile() const
|
|
|
+bool ctkXnatObject::isModifiable() const
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-bool ctkXnatObject::holdsFiles() const
|
|
|
+ctkXnatObject::ctkXnatObject(ctkXnatConnection* connection)
|
|
|
+ : d_ptr(new ctkXnatObjectPrivate(connection))
|
|
|
{
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
-bool ctkXnatObject::receivesFiles() const
|
|
|
+ctkXnatObject::ctkXnatObject(ctkXnatObjectPrivate& dd)
|
|
|
+ : d_ptr(&dd)
|
|
|
{
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
-bool ctkXnatObject::isModifiable(int /*childIndex*/) const
|
|
|
+ctkXnatConnection* ctkXnatObject::getConnection() const
|
|
|
{
|
|
|
- return false;
|
|
|
+ Q_D(const ctkXnatObject);
|
|
|
+ return d->connection;
|
|
|
}
|
|
|
|
|
|
-bool ctkXnatObject::isModifiable() const
|
|
|
+void ctkXnatObject::setId(const QString& id)
|
|
|
{
|
|
|
- return false;
|
|
|
+ setProperty("ID", id);
|
|
|
}
|
|
|
|
|
|
bool ctkXnatObject::isDeletable() const
|