Remove ModelParticle
authorAlan Alpert <alan.alpert@nokia.com>
Mon, 23 May 2011 05:33:06 +0000 (15:33 +1000)
committerAlan Alpert <alan.alpert@nokia.com>
Mon, 23 May 2011 05:33:06 +0000 (15:33 +1000)
Nothing is using it anymore, lets keep it that way.

src/imports/particles/main.cpp
src/imports/particles/modelparticle.cpp [deleted file]
src/imports/particles/modelparticle.h [deleted file]
src/imports/particles/particles.pro

index c90ea78..072025d 100644 (file)
@@ -70,7 +70,7 @@
 #include "particle.h"
 #include "coloredparticle.h"
 #include "spriteparticle.h"
-#include "modelparticle.h"
+//#include "modelparticle.h"
 #include "dataparticle.h"
 #include "itemparticle.h"
 #include "superparticle.h"
@@ -110,7 +110,7 @@ void ParticlesPlugin::registerTypes(const char *uri)
     qmlRegisterType<ParticleType>(uri, 2, 0, "Particle");
     qmlRegisterType<ColoredParticle>(uri, 2, 0, "ColoredParticle");
     qmlRegisterType<SpriteParticle>(uri, 2, 0, "SpriteParticle");
-    qmlRegisterType<ModelParticle>(uri, 2, 0, "ModelParticle");
+    //qmlRegisterType<ModelParticle>(uri, 2, 0, "ModelParticle");
     qmlRegisterType<DataParticle>(uri, 2, 0, "DataParticle");
     qmlRegisterType<ItemParticle>(uri, 2, 0, "ItemParticle");
     //qmlRegisterType<PairedParticle>(uri, 2, 0, "PairedParticle");
diff --git a/src/imports/particles/modelparticle.cpp b/src/imports/particles/modelparticle.cpp
deleted file mode 100644 (file)
index 85d6e15..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Declarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "modelparticle.h"
-#include <QtDeclarative/private/qsgvisualitemmodel_p.h>
-#include <qsgnode.h>
-#include <QDebug>
-
-QT_BEGIN_NAMESPACE
-
-ModelParticle::ModelParticle(QSGItem *parent) :
-    ParticleType(parent), m_ownModel(false), m_comp(0), m_model(0), m_fade(true), m_modelCount(0)
-{
-    qDebug() << "Deprecation warning: ModelParticle has bifurcated. I really should just delete this class";//TODO: What he said
-    setFlag(QSGItem::ItemHasContents);
-}
-
-QVariant ModelParticle::model() const
-{
-    return m_dataSource;
-}
-
-void ModelParticle::setModel(const QVariant &arg)
-{
-    if(arg == m_dataSource)
-        return;
-    m_dataSource = arg;
-    if(qobject_cast<QSGVisualDataModel*>(arg.value<QObject*>())) {
-        if(m_ownModel && m_model)
-            delete m_model;
-        m_model = qobject_cast<QSGVisualDataModel*>(arg.value<QObject*>());
-        m_ownModel = false;
-    }else{
-        if(!m_model || !m_ownModel)
-            m_model = new QSGVisualDataModel(qmlContext(this));
-        m_model->setModel(m_dataSource);
-        m_ownModel = true;
-    }
-    if(m_comp)
-        m_model->setDelegate(m_comp);
-    emit modelChanged();
-    emit modelCountChanged();
-    connect(m_model, SIGNAL(countChanged()),
-            this, SIGNAL(modelCountChanged()));
-    connect(m_model, SIGNAL(countChanged()),
-            this, SLOT(updateCount()));
-    updateCount();
-}
-
-void ModelParticle::updateCount()
-{
-    int newCount = 0;
-    if(m_model)
-        newCount = m_model->count();
-    if(newCount < 0)
-        return;//WTF?
-    if(m_modelCount == 0 || newCount == 0){
-        m_available.clear();
-        for(int i=0; i<newCount; i++)
-            m_available << i;
-    }else if(newCount < m_modelCount){
-        for(int i=newCount; i<m_modelCount; i++) //existing ones must leave normally, but aren't readded
-            m_available.removeAll(i);
-    }else if(newCount > m_modelCount){
-        for(int i=m_modelCount; i<newCount; i++)
-            m_available << i;
-    }
-    m_modelCount = newCount;
-}
-
-QDeclarativeComponent *ModelParticle::delegate() const
-{
-    if(m_model)
-        return m_model->delegate();
-    return 0;
-}
-
-void ModelParticle::setDelegate(QDeclarativeComponent *comp)
-{
-    if (QSGVisualDataModel *dataModel = qobject_cast<QSGVisualDataModel*>(m_model))
-        if (comp == dataModel->delegate())
-            return;
-    m_comp = comp;
-    if(m_model)
-        m_model->setDelegate(comp);
-    emit delegateChanged();
-}
-
-int ModelParticle::modelCount() const
-{
-    if(m_model)
-        const_cast<ModelParticle*>(this)->updateCount();//TODO: Investigate why this doesn't get called properly
-    return m_modelCount;
-}
-
-
-void ModelParticle::freeze(QSGItem* item)
-{
-    m_stasis << item;
-}
-
-
-void ModelParticle::unfreeze(QSGItem* item)
-{
-    m_stasis.remove(item);
-}
-
-void ModelParticle::take(QSGItem *item, bool prioritize)
-{
-    if(prioritize)
-        m_pendingItems.push_front(item);
-    else
-        m_pendingItems.push_back(item);
-}
-
-void ModelParticle::give(QSGItem *item)
-{
-    //TODO: This
-}
-
-void ModelParticle::load(ParticleData* d)
-{
-    //if(!m_model || !m_model->count())//Not really a 'model' particle anymore
-    //    return;
-    int pos = particleTypeIndex(d);
-    if(m_items[pos]){
-        if(m_stasis.contains(m_items[pos]))
-            qWarning() << "Current model particles prefers overwrite:false";
-        //remove old item from the particle that is dying to make room for this one
-        m_items[pos]->setOpacity(0.);
-        if(m_idx[pos] >= 0 && m_idx[pos] < m_modelCount){
-            m_available << m_idx[pos];
-            m_model->release(m_items[pos]);
-        }else{
-            ModelParticleAttached* mpa;
-            if((mpa = qobject_cast<ModelParticleAttached*>(qmlAttachedPropertiesObject<ModelParticle>(m_items[pos], false))))
-                mpa->detach();//reparent as well?
-        }
-        m_idx[pos] = -1;
-        m_items[pos] = 0;
-        m_data[pos] = 0;
-        m_activeCount--;
-    }
-    if(m_available.isEmpty() && m_pendingItems.isEmpty())
-        return;
-    if(m_pendingItems.isEmpty()){
-        m_items[pos] = m_model->item(m_available.first());
-        m_idx[pos] = m_available.first();
-        m_available.pop_front();
-        ModelParticleAttached* mpa = qobject_cast<ModelParticleAttached*>(qmlAttachedPropertiesObject<ModelParticle>(m_items[pos]));
-        if(mpa){
-            mpa->m_mp = this;
-            mpa->attach();
-        }
-    }else{
-        m_items[pos] = m_pendingItems.front();
-        m_pendingItems.pop_front();
-        m_items[pos]->setX(d->curX() - m_items[pos]->width()/2);
-        m_items[pos]->setY(d->curY() - m_items[pos]->height()/2);
-        m_idx[pos] = -2;
-        ModelParticleAttached* mpa = qobject_cast<ModelParticleAttached*>(qmlAttachedPropertiesObject<ModelParticle>(m_items[pos]));
-        if(mpa){
-            mpa->m_mp = this;
-            mpa->attach();
-        }
-    }
-    m_items[pos]->setParentItem(this);
-    m_data[pos] = d;
-    m_activeCount++;
-}
-
-void ModelParticle::reload(ParticleData* d)
-{
-    //No-op unless we start copying the data.
-}
-
-void ModelParticle::setCount(int c)
-{
-    ParticleType::setCount(c);//###Do we need our own?
-    m_particleCount = c;
-    reset();
-}
-
-int ModelParticle::count()
-{
-    return m_particleCount;
-}
-
-void ModelParticle::reset()
-{
-    ParticleType::reset();
-    //TODO: Cleanup items?
-    m_items.resize(m_particleCount);
-    m_data.resize(m_particleCount);
-    m_idx.resize(m_particleCount);
-    m_items.fill(0);
-    m_data.fill(0);
-    m_idx.fill(-1);
-    //m_available.clear();//Should this be reset too?
-    //m_pendingItems.clear();//TODO: Should this be done? If so, Emit signal?
-}
-
-
-QSGNode* ModelParticle::updatePaintNode(QSGNode* n, UpdatePaintNodeData* d)
-{
-    //Dummy update just to get painting tick
-    if(m_pleaseReset){
-        m_pleaseReset = false;
-        reset();
-    }
-    prepareNextFrame();
-
-    update();//Get called again
-    if(n)
-        n->markDirty(QSGNode::DirtyMaterial);
-    return QSGItem::updatePaintNode(n,d);
-}
-
-void ModelParticle::prepareNextFrame()
-{
-    qint64 timeStamp = m_system->systemSync(this);
-    qreal curT = timeStamp/1000.0;
-    qreal dt = curT - m_lastT;
-    m_lastT = curT;
-    if(!m_activeCount)
-        return;
-
-    //TODO: Size, better fade?
-    for(int i=0; i<m_particleCount; i++){
-        QSGItem* item = m_items[i];
-        ParticleData* data = m_data[i];
-        if(!item || !data)
-            continue;
-        qreal t = ((timeStamp/1000.0) - data->pv.t) / data->pv.lifeSpan;
-        if(m_stasis.contains(item)) {
-            m_data[i]->pv.t += dt;//Stasis effect
-            continue;
-        }
-        if(t >= 1.0){//Usually happens from load
-            item->setOpacity(0.);
-            if(m_idx[i] >= 0 && m_idx[i] < m_modelCount){
-                m_available << m_idx[i];
-                m_model->release(m_items[i]);
-            }else{
-                ModelParticleAttached* mpa;
-                if((mpa = qobject_cast<ModelParticleAttached*>(qmlAttachedPropertiesObject<ModelParticle>(m_items[i]))))
-                    mpa->detach();//reparent as well?
-            }
-            m_idx[i] = -1;
-            m_items[i] = 0;
-            m_data[i] = 0;
-            m_activeCount--;
-        }else{//Fade
-            if(m_fade){
-                qreal o = 1.;
-                if(t<0.2)
-                    o = t*5;
-                if(t>0.8)
-                    o = (1-t)*5;
-                item->setOpacity(o);
-            }else{
-                item->setOpacity(1.);//###Without fade, it's just a binary toggle - if we turn it off we have to turn it back on
-            }
-        }
-        item->setX(data->curX() - item->width()/2);
-        item->setY(data->curY() - item->height()/2);
-    }
-}
-
-ModelParticleAttached *ModelParticle::qmlAttachedProperties(QObject *object)
-{
-    return new ModelParticleAttached(object);
-}
-
-QT_END_NAMESPACE
diff --git a/src/imports/particles/modelparticle.h b/src/imports/particles/modelparticle.h
deleted file mode 100644 (file)
index 7eda770..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Declarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef MODELPARTICLE_H
-#define MODELPARTICLE_H
-#include "particle.h"
-#include <QPointer>
-#include <QSet>
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Declarative)
-class QSGVisualDataModel;
-class ModelParticleAttached;
-
-class ModelParticle : public ParticleType
-{
-    Q_OBJECT
-
-    Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged)
-    Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
-    Q_PROPERTY(int modelCount READ modelCount NOTIFY modelCountChanged)
-    Q_PROPERTY(bool fade READ fade WRITE setFade NOTIFY fadeChanged)
-    Q_CLASSINFO("DefaultProperty", "delegate")
-public:
-    explicit ModelParticle(QSGItem *parent = 0);
-    QVariant model() const;
-    void setModel(const QVariant &);
-
-    QDeclarativeComponent *delegate() const;
-    void setDelegate(QDeclarativeComponent *);
-
-    int modelCount() const;
-
-    bool fade() const { return m_fade; }
-
-    virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
-    virtual void load(ParticleData*);
-    virtual void reload(ParticleData*);
-    virtual void setCount(int c);
-    virtual int count();
-
-    static ModelParticleAttached *qmlAttachedProperties(QObject *object);
-signals:
-    void modelChanged();
-    void delegateChanged();
-    void modelCountChanged();
-    void fadeChanged();
-
-public slots:
-    void freeze(QSGItem* item);
-    void unfreeze(QSGItem* item);
-    void take(QSGItem* item,bool prioritize=false);//take by modelparticle
-    void give(QSGItem* item);//give from modelparticle
-
-    void setFade(bool arg){if(arg == m_fade) return; m_fade = arg; emit fadeChanged();}
-protected:
-    virtual void reset();
-    void prepareNextFrame();
-private slots:
-    void updateCount();
-private:
-    bool m_ownModel;
-    QDeclarativeComponent* m_comp;
-    QSGVisualDataModel *m_model;
-    QVariant m_dataSource;
-    QList<QPointer<QSGItem> > m_deletables;
-    int m_particleCount;
-    bool m_fade;
-
-    QList<QSGItem*> m_pendingItems;
-    QVector<QSGItem*> m_items;
-    QVector<ParticleData*> m_data;
-    QVector<int> m_idx;
-    QList<int> m_available;
-    QSet<QSGItem*> m_stasis;
-    qreal m_lastT;
-    int m_activeCount;
-    int m_modelCount;
-};
-
-class ModelParticleAttached : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(ModelParticle* particle READ particle CONSTANT);
-public:
-    ModelParticleAttached(QObject* parent)
-        : QObject(parent), m_mp(0)
-    {;}
-    ModelParticle* particle() {return m_mp;}
-    void detach(){emit detached();}
-    void attach(){emit attached();}
-private:
-    ModelParticle* m_mp;
-    friend class ModelParticle;
-Q_SIGNALS:
-    void detached();
-    void attached();
-};
-
-QT_END_NAMESPACE
-
-QML_DECLARE_TYPEINFO(ModelParticle, QML_HAS_ATTACHED_PROPERTIES)
-
-QT_END_HEADER
-#endif // MODELPARTICLE_H
index 1ce3f8e..a6930fe 100644 (file)
@@ -41,7 +41,7 @@ HEADERS += \
     pointvector.h \
     angledvector.h \
     directedvector.h \
-    modelparticle.h \
+    #modelparticle.h \
     eternalaffector.h \
     lineextruder.h \
     resetaffector.h \
@@ -92,7 +92,7 @@ SOURCES += \
     pointvector.cpp \
     angledvector.cpp \
     directedvector.cpp \
-    modelparticle.cpp \
+    #modelparticle.cpp \
     eternalaffector.cpp \
     lineextruder.cpp \
     resetaffector.cpp \