Qt 4.8
Classes | Public Functions | Protected Functions | Private Functions | Properties | Friends | List of all members
QDeclarativeListModelWorkerAgent Class Reference

#include <qdeclarativelistmodelworkeragent_p.h>

Inheritance diagram for QDeclarativeListModelWorkerAgent:
QObject

Classes

struct  Change
 
struct  Data
 
struct  Sync
 
struct  VariantRef
 

Public Functions

void addref ()
 
Q_INVOKABLE void append (const QScriptValue &)
 
Q_INVOKABLE void clear ()
 
int count () const
 
Q_INVOKABLE QScriptValue get (int index) const
 
Q_INVOKABLE void insert (int index, const QScriptValue &)
 
Q_INVOKABLE void move (int from, int to, int count)
 
 QDeclarativeListModelWorkerAgent (QDeclarativeListModel *)
 
void release ()
 
Q_INVOKABLE void remove (int index)
 
QScriptEnginescriptEngine () const
 
Q_INVOKABLE void set (int index, const QScriptValue &)
 
Q_INVOKABLE void setProperty (int index, const QString &property, const QVariant &value)
 
void setScriptEngine (QScriptEngine *eng)
 
Q_INVOKABLE void sync ()
 
 ~QDeclarativeListModelWorkerAgent ()
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Private Functions

void changedData (int index, int count, const QList< int > &roles)
 

Properties

int count
 
Data data
 
QDeclarativeListModelm_copy
 
QScriptEnginem_engine
 
QDeclarativeListModelm_orig
 
QAtomicInt m_ref
 
QMutex mutex
 
QWaitCondition syncDone
 

Friends

class FlatListScriptClass
 
class QDeclarativeWorkerScriptEnginePrivate
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 72 of file qdeclarativelistmodelworkeragent_p.h.

Constructors and Destructors

◆ QDeclarativeListModelWorkerAgent()

QDeclarativeListModelWorkerAgent::QDeclarativeListModelWorkerAgent ( QDeclarativeListModel model)

◆ ~QDeclarativeListModelWorkerAgent()

QDeclarativeListModelWorkerAgent::~QDeclarativeListModelWorkerAgent ( )

Definition at line 93 of file qdeclarativelistmodelworkeragent.cpp.

94 {
95 }

Functions

◆ addref()

void QDeclarativeListModelWorkerAgent::addref ( )

◆ append()

void QDeclarativeListModelWorkerAgent::append ( const QScriptValue value)

Definition at line 143 of file qdeclarativelistmodelworkeragent.cpp.

◆ changedData()

void QDeclarativeListModelWorkerAgent::changedData ( int  index,
int  count,
const QList< int > &  roles 
)
private

Definition at line 201 of file qdeclarativelistmodelworkeragent.cpp.

Referenced by FlatListScriptClass::setProperty().

202 {
203  data.changedChange(index, count, roles);
204 }
quint16 index
void changedChange(int index, int count, const QList< int > &roles)

◆ clear()

void QDeclarativeListModelWorkerAgent::clear ( )

◆ count()

int QDeclarativeListModelWorkerAgent::count ( ) const

◆ event()

bool QDeclarativeListModelWorkerAgent::event ( QEvent e)
protectedvirtual

This virtual function receives events to an object and should return true if the event e was recognized and processed.

The event() function can be reimplemented to customize the behavior of an object.

See also
installEventFilter(), timerEvent(), QApplication::sendEvent(), QApplication::postEvent(), QWidget::event()

Reimplemented from QObject.

Definition at line 206 of file qdeclarativelistmodelworkeragent.cpp.

207 {
208  if (e->type() == QEvent::User) {
209  QMutexLocker locker(&mutex);
210  Sync *s = static_cast<Sync *>(e);
211 
212  const QList<Change> &changes = s->data.changes;
213 
214  if (m_copy) {
215  bool cc = m_orig->count() != s->list->count();
216 
217  FlatListModel *orig = m_orig->m_flat;
218  FlatListModel *copy = s->list->m_flat;
219  if (!orig || !copy) {
220  syncDone.wakeAll();
221  return QObject::event(e);
222  }
223 
224  orig->m_roles = copy->m_roles;
225  orig->m_strings = copy->m_strings;
226  orig->m_values = copy->m_values;
227 
228  // update the orig->m_nodeData list
229  for (int ii = 0; ii < changes.count(); ++ii) {
230  const Change &change = changes.at(ii);
231  switch (change.type) {
232  case Change::Inserted:
233  orig->insertedNode(change.index);
234  break;
235  case Change::Removed:
236  orig->removedNode(change.index);
237  break;
238  case Change::Moved:
239  orig->moveNodes(change.index, change.to, change.count);
240  break;
241  case Change::Changed:
242  break;
243  }
244  }
245 
246  syncDone.wakeAll();
247  locker.unlock();
248 
249  for (int ii = 0; ii < changes.count(); ++ii) {
250  const Change &change = changes.at(ii);
251  switch (change.type) {
252  case Change::Inserted:
253  emit m_orig->itemsInserted(change.index, change.count);
254  break;
255  case Change::Removed:
256  emit m_orig->itemsRemoved(change.index, change.count);
257  break;
258  case Change::Moved:
259  emit m_orig->itemsMoved(change.index, change.to, change.count);
260  break;
261  case Change::Changed:
262  emit m_orig->itemsChanged(change.index, change.count, change.roles);
263  break;
264  }
265  }
266 
267  if (cc)
269  } else {
270  syncDone.wakeAll();
271  }
272  }
273 
274  return QObject::event(e);
275 }
void moveNodes(int from, int to, int n)
int count(const T &t) const
Returns the number of occurrences of value in the list.
Definition: qlist.h:891
virtual bool event(QEvent *)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition: qobject.cpp:1200
void itemsRemoved(int index, int count)
Emit this signal when count items are removed at index.
void insertedNode(int index)
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
#define emit
Definition: qobjectdefs.h:76
QList< QHash< int, QVariant > > m_values
void removedNode(int index)
QHash< int, QString > m_roles
void itemsChanged(int index, int count, const QList< int > &roles)
Emit this signal when count items at index have had their roles changed.
QHash< QString, int > m_strings
The QMutexLocker class is a convenience class that simplifies locking and unlocking mutexes...
Definition: qmutex.h:101
void itemsInserted(int index, int count)
Emit this signal when count items are inserted at index.
void itemsMoved(int from, int to, int count)
Emit this signal when count items are moved from index from to index to.
Type type() const
Returns the event type.
Definition: qcoreevent.h:303
The QList class is a template class that provides lists.
Definition: qdatastream.h:62

◆ get()

QScriptValue QDeclarativeListModelWorkerAgent::get ( int  index) const

Definition at line 161 of file qdeclarativelistmodelworkeragent.cpp.

162 {
163  return m_copy->get(index);
164 }
Q_INVOKABLE QScriptValue get(int index) const
quint16 index

◆ insert()

void QDeclarativeListModelWorkerAgent::insert ( int  index,
const QScriptValue value 
)

Definition at line 152 of file qdeclarativelistmodelworkeragent.cpp.

153 {
154  int count = m_copy->count();
155  m_copy->insert(index, value);
156 
157  if (m_copy->count() != count)
158  data.insertChange(index, 1);
159 }
Q_INVOKABLE void insert(int index, const QScriptValue &)
quint16 index

◆ move()

void QDeclarativeListModelWorkerAgent::move ( int  from,
int  to,
int  count 
)

Definition at line 182 of file qdeclarativelistmodelworkeragent.cpp.

183 {
184  m_copy->move(from, to, count);
185  data.moveChange(from, to, count);
186 }
Q_INVOKABLE void move(int from, int to, int count)

◆ release()

void QDeclarativeListModelWorkerAgent::release ( )

Definition at line 114 of file qdeclarativelistmodelworkeragent.cpp.

Referenced by QDeclarativeListModelWorkerAgent::VariantRef::operator=(), QDeclarativeListModel::~QDeclarativeListModel(), and QDeclarativeListModelWorkerAgent::VariantRef::~VariantRef().

115 {
116  bool del = !m_ref.deref();
117 
118  if (del)
119  delete this;
120 }
bool deref()
Atomically decrements the value of this QAtomicInt.

◆ remove()

void QDeclarativeListModelWorkerAgent::remove ( int  index)

◆ scriptEngine()

QScriptEngine * QDeclarativeListModelWorkerAgent::scriptEngine ( ) const

◆ set()

void QDeclarativeListModelWorkerAgent::set ( int  index,
const QScriptValue value 
)

Definition at line 166 of file qdeclarativelistmodelworkeragent.cpp.

167 {
168  QList<int> roles;
169  m_copy->set(index, value, &roles);
170  if (!roles.isEmpty())
171  data.changedChange(index, 1, roles);
172 }
Q_INVOKABLE void set(int index, const QScriptValue &)
bool isEmpty() const
Returns true if the list contains no items; otherwise returns false.
Definition: qlist.h:152
quint16 index
void changedChange(int index, int count, const QList< int > &roles)

◆ setProperty()

void QDeclarativeListModelWorkerAgent::setProperty ( int  index,
const QString property,
const QVariant value 
)

Definition at line 174 of file qdeclarativelistmodelworkeragent.cpp.

175 {
176  QList<int> roles;
177  m_copy->setProperty(index, property, value, &roles);
178  if (!roles.isEmpty())
179  data.changedChange(index, 1, roles);
180 }
Q_INVOKABLE void setProperty(int index, const QString &property, const QVariant &value)
bool isEmpty() const
Returns true if the list contains no items; otherwise returns false.
Definition: qlist.h:152
quint16 index
void changedChange(int index, int count, const QList< int > &roles)

◆ setScriptEngine()

void QDeclarativeListModelWorkerAgent::setScriptEngine ( QScriptEngine eng)

◆ sync()

void QDeclarativeListModelWorkerAgent::sync ( )

Definition at line 188 of file qdeclarativelistmodelworkeragent.cpp.

189 {
190  Sync *s = new Sync;
191  s->data = data;
192  s->list = m_copy;
193  data.changes.clear();
194 
195  mutex.lock();
197  syncDone.wait(&mutex);
198  mutex.unlock();
199 }
void lock()
Locks the mutex.
Definition: qmutex.cpp:151
static void postEvent(QObject *receiver, QEvent *event)
Adds the event event, with the object receiver as the receiver of the event, to an event queue and re...
void unlock()
Unlocks the mutex.
Definition: qmutex.cpp:296
bool wait(QMutex *mutex, unsigned long time=ULONG_MAX)

Friends and Related Functions

◆ FlatListScriptClass

friend class FlatListScriptClass
friend

Definition at line 119 of file qdeclarativelistmodelworkeragent_p.h.

◆ QDeclarativeWorkerScriptEnginePrivate

Definition at line 118 of file qdeclarativelistmodelworkeragent_p.h.

Properties

◆ count

int QDeclarativeListModelWorkerAgent::count
private

Definition at line 75 of file qdeclarativelistmodelworkeragent_p.h.

◆ data

Data QDeclarativeListModelWorkerAgent::data
private

◆ m_copy

QDeclarativeListModel* QDeclarativeListModelWorkerAgent::m_copy
private

◆ m_engine

QScriptEngine* QDeclarativeListModelWorkerAgent::m_engine
private

Definition at line 120 of file qdeclarativelistmodelworkeragent_p.h.

Referenced by scriptEngine(), and setScriptEngine().

◆ m_orig

QDeclarativeListModel* QDeclarativeListModelWorkerAgent::m_orig
private

Definition at line 150 of file qdeclarativelistmodelworkeragent_p.h.

Referenced by event().

◆ m_ref

QAtomicInt QDeclarativeListModelWorkerAgent::m_ref
private

Definition at line 149 of file qdeclarativelistmodelworkeragent_p.h.

Referenced by addref(), and release().

◆ mutex

QMutex QDeclarativeListModelWorkerAgent::mutex
private

Definition at line 152 of file qdeclarativelistmodelworkeragent_p.h.

Referenced by event(), and sync().

◆ syncDone

QWaitCondition QDeclarativeListModelWorkerAgent::syncDone
private

Definition at line 153 of file qdeclarativelistmodelworkeragent_p.h.

Referenced by event(), and sync().


The documentation for this class was generated from the following files: