[Kst] branches/work/kst/1.5/kst/src/libkstapp
arwalker at sumusltd.com
arwalker at sumusltd.com
Thu Apr 12 20:16:34 CEST 2007
I would prefer you suggested some alternatives as the dialog is currently not
usable.
On Thursday 12 April 2007 11:09, George Staikos wrote:
> Please revert. This causes a major performance regression.
>
> On 12-Apr-07, at 2:08 PM, Andrew Walker wrote:
> > SVN commit 653146 by arwalker:
> >
> > BUG:141715 Make the hierarchical view scalars dialog useful
> >
> > M +86 -8 kstscalarlistview.cpp
> > M +8 -0 kstscalarlistview.h
> >
> >
> > --- branches/work/kst/1.5/kst/src/libkstapp/kstscalarlistview.cpp
> > #653145:653146
> > @@ -41,6 +41,7 @@
> > setRenameEnabled(1, false);
> > }
> > }
> > + _remove = false;
> > }
> >
> > QString KstScalarListViewItem::text(int column) const {
> > @@ -78,6 +79,14 @@
> > }
> > }
> >
> > +bool KstScalarListViewItem::remove() const {
> > + return _remove;
> > +}
> > +
> > +void KstScalarListViewItem::setRemove(bool remove) {
> > + _remove = remove;
> > +}
> > +
> > /
> > *---------------------------------------------------------------------
> > -------*/
> >
> > KstScalarListView::KstScalarListView(QWidget *parent,
> > KstObjectCollection<KstScalar> *coll) : KListView(parent), _coll
> > (coll) {
> > @@ -90,29 +99,98 @@
> > update();
> > }
> >
> > -
> > -static void addChildItems(KstScalarListViewItem *parentItem,
> > KstObjectTreeNode<KstScalar> *parentNode) {
> > +void KstScalarListView::addChildItems(KstScalarListViewItem
> > *parentItem, KstObjectTreeNode<KstScalar> *parentNode) {
> > if (!parentItem || !parentNode) {
> > return;
> > }
> >
> > QValueList<KstObjectTreeNode<KstScalar>*> children = parentNode-
> >
> > >children().values();
> >
> > for (QValueList<KstObjectTreeNode<KstScalar>*>::ConstIterator i
> > = children.begin(); i != children.end(); ++i) {
> > - KstScalarListViewItem *item = new KstScalarListViewItem
> > (parentItem, *i);
> > - addChildItems(item, *i);
> > + QListViewItem *item = parentItem->firstChild();
> > + bool found = false;
> > +
> > + while (item) {
> > + if (item->text(0) == (*i)->nodeTag()) {
> > + found = true;
> > +
> > + KstScalarListViewItem *kItem =
> > dynamic_cast<KstScalarListViewItem*>(item);
> > + if (kItem) {
> > + kItem->setRemove(false);
> > + repaintItem(kItem);
> > + addChildItems(kItem, *i);
> > + }
> > +
> > + break;
> > + }
> > + item = item->nextSibling();
> > + }
> > +
> > + if (!found) {
> > + KstScalarListViewItem *item = new KstScalarListViewItem
> > (parentItem, *i);
> > + addChildItems(item, *i);
> > + }
> > }
> > }
> >
> > void KstScalarListView::update() {
> > - clear();
> > -
> > if (_coll) {
> > KstReadLocker(&_coll->lock());
> > +
> > + {
> > + QListViewItemIterator it(this);
> > +
> > + while (it.current()) {
> > + KstScalarListViewItem *kItem =
> > dynamic_cast<KstScalarListViewItem*>(it.current());
> > + if (kItem) {
> > + kItem->setRemove(true);
> > + }
> > + ++it;
> > + }
> > + }
> > +
> > QValueList<KstObjectTreeNode<KstScalar>*> rootItems = _coll-
> >
> > >nameTreeRoot()->children().values();
> >
> > for (QValueList<KstObjectTreeNode<KstScalar>*>::ConstIterator
> > i = rootItems.begin(); i != rootItems.end(); ++i) {
> > - KstScalarListViewItem *item = new KstScalarListViewItem
> > (this, *i);
> > - addChildItems(item, *i);
> > + QListViewItem *item = firstChild();
> > + bool found = false;
> > +
> > + while (item) {
> > + if (item->text(0) == (*i)->nodeTag()) {
> > + found = true;
> > +
> > + KstScalarListViewItem *kItem =
> > dynamic_cast<KstScalarListViewItem*>(item);
> > + if (kItem) {
> > + kItem->setRemove(false);
> > + repaintItem(kItem);
> > + addChildItems(kItem, *i);
> > + }
> > +
> > + break;
> > + }
> > + item = item->nextSibling();
> > + }
> > +
> > + if (!found) {
> > + KstScalarListViewItem *item = new KstScalarListViewItem
> > (this, *i);
> > + addChildItems(item, *i);
> > + }
> > }
> > +
> > + {
> > + QListViewItemIterator it(this);
> > +
> > + while (it.current()) {
> > + KstScalarListViewItem *kItem =
> > dynamic_cast<KstScalarListViewItem*>(it.current());
> > + if (kItem) {
> > + if (kItem->remove()) {
> > + delete it.current();
> > + } else {
> > + ++it;
> > + }
> > + } else {
> > + ++it;
> > + }
> > + }
> > + }
> > }
> >
> > /*
> > --- branches/work/kst/1.5/kst/src/libkstapp/kstscalarlistview.h
> > #653145:653146
> > @@ -23,6 +23,8 @@
> > #include "kstobject.h"
> > #include "kstobjectcollection.h"
> >
> > +class KstScalarListViewItem;
> > +
> > class KstScalarListView : public KListView
> > {
> > public:
> > @@ -31,6 +33,8 @@
> > void update();
> >
> > private:
> > + void addChildItems(KstScalarListViewItem *parentItem,
> > KstObjectTreeNode<KstScalar> *parentNode);
> > +
> > KstObjectCollection<KstScalar> *_coll;
> > };
> >
> > @@ -44,12 +48,16 @@
> > QString text(int column) const;
> > void setText(int column, const QString& text);
> >
> > + bool remove() const;
> > + void setRemove(bool remove);
> > +
> > KstObjectTreeNode<KstScalar> *node() const { return _node; }
> >
> > private:
> > void commonConstructor();
> >
> > QGuardedPtr<KstObjectTreeNode<KstScalar> > _node;
> > + bool _remove;
> > };
> >
> > #endif
> > _______________________________________________
> > Kst mailing list
> > Kst at kde.org
> > https://mail.kde.org/mailman/listinfo/kst
>
> --
> George Staikos
> KDE Developer http://www.kde.org/
> Staikos Computing Services Inc. http://www.staikos.net/
>
>
>
> _______________________________________________
> Kst mailing list
> Kst at kde.org
> https://mail.kde.org/mailman/listinfo/kst
More information about the Kst
mailing list