From: Alan Alpert Date: Mon, 23 May 2011 05:33:06 +0000 (+1000) Subject: Remove ModelParticle X-Git-Tag: qt-v5.0.0-alpha1~2170^2~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=72820b4c460d65237a014a0be074ec0a05af01ea;p=profile%2Fivi%2Fqtdeclarative.git Remove ModelParticle Nothing is using it anymore, lets keep it that way. --- diff --git a/src/imports/particles/main.cpp b/src/imports/particles/main.cpp index c90ea78..072025d 100644 --- a/src/imports/particles/main.cpp +++ b/src/imports/particles/main.cpp @@ -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(uri, 2, 0, "Particle"); qmlRegisterType(uri, 2, 0, "ColoredParticle"); qmlRegisterType(uri, 2, 0, "SpriteParticle"); - qmlRegisterType(uri, 2, 0, "ModelParticle"); + //qmlRegisterType(uri, 2, 0, "ModelParticle"); qmlRegisterType(uri, 2, 0, "DataParticle"); qmlRegisterType(uri, 2, 0, "ItemParticle"); //qmlRegisterType(uri, 2, 0, "PairedParticle"); diff --git a/src/imports/particles/modelparticle.cpp b/src/imports/particles/modelparticle.cpp deleted file mode 100644 index 85d6e15..0000000 --- a/src/imports/particles/modelparticle.cpp +++ /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 -#include -#include - -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(arg.value())) { - if(m_ownModel && m_model) - delete m_model; - m_model = qobject_cast(arg.value()); - 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 m_modelCount){ - for(int i=m_modelCount; idelegate(); - return 0; -} - -void ModelParticle::setDelegate(QDeclarativeComponent *comp) -{ - if (QSGVisualDataModel *dataModel = qobject_cast(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(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(qmlAttachedPropertiesObject(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(qmlAttachedPropertiesObject(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(qmlAttachedPropertiesObject(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; ipv.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(qmlAttachedPropertiesObject(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 index 7eda770..0000000 --- a/src/imports/particles/modelparticle.h +++ /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 -#include -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 > m_deletables; - int m_particleCount; - bool m_fade; - - QList m_pendingItems; - QVector m_items; - QVector m_data; - QVector m_idx; - QList m_available; - QSet 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 diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro index 1ce3f8e..a6930fe 100644 --- a/src/imports/particles/particles.pro +++ b/src/imports/particles/particles.pro @@ -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 \