QSettingsDialog  1.0.0
A Qt library to easily create a settings dialog for user configurable settings
Public Slots | Public Member Functions | Protected Member Functions | List of all members
QAsyncSettingsContainer Class Reference

A special class that allows access to the settings dialog from different threads. More...

#include <qasyncsettingscontainer.h>

+ Inheritance diagram for QAsyncSettingsContainer:

Public Slots

int appendEntry (QSettingsEntry *entry) override
 
int prependEntry (QSettingsEntry *entry) override
 
int insertEntry (int index, QSettingsEntry *entry) override
 
int insertEntry (int index, QSharedPointer< QSettingsEntry > entry) override
 
bool removeEntry (int id) override
 
bool removeElementFromIndex (int index) override
 
void moveElement (int indexFrom, int indexTo) override
 
void moveElementAsync (int indexFrom, int indexTo)
 Asynchronously moves the element from the old to the new index. More...
 
void appendEntryAsync (QSettingsEntry *entry)
 Asynchronously appends the entry to the container. More...
 
void prependEntryAsync (QSettingsEntry *entry)
 Asynchronously prepends the entry to the container. More...
 
- Public Slots inherited from QSettingsContainer
virtual int appendEntry (QSettingsEntry *entry)=0
 Appends the entry to the containers children. More...
 
virtual int prependEntry (QSettingsEntry *entry)=0
 Prepends the entry to the containers children. More...
 
virtual int insertEntry (int index, QSettingsEntry *entry)=0
 Inserts the entry to the containers children at the given index. More...
 
virtual int insertEntry (int index, QSharedPointer< QSettingsEntry > entry)=0
 Appends the entry to the containers children at the given index.
 
virtual bool removeEntry (int id)=0
 Removes the entry with the given id. More...
 
virtual bool removeElementFromIndex (int index)=0
 Removes the element at the given index. More...
 
virtual void moveElement (int indexFrom, int indexTo)=0
 Moves the element from the old to the new index.
 

Public Member Functions

 QAsyncSettingsContainer (QSettingsDialog *settingsDialog, const QString &containerPath, QObject *parent=nullptr)
 Creates a new container for a container at the given path for the given dialog.
 
 ~QAsyncSettingsContainer ()
 Destructor.
 
QSettingsDialogdialog () const override
 Returns the dialog this container belongs to.
 
QString containerPath () const override
 Returns the container path this container has.
 
int elementCount () const override
 Returns the number of elements in this container.
 
bool isEntry (int index) const override
 Checks whether the element at the given index is an entry or not.
 
int getEntryIndex (int id) const override
 Searches for entries index. More...
 
int getEntryId (int index) const override
 Returns the id for the entry at the index. More...
 
QSharedPointer< QSettingsEntrygetEntry (int id) const override
 Returns the entry with the given id. More...
 
QSharedPointer< QSettingsEntrygetEntryFromIndex (int index) const override
 Returns the entry at the given index. More...
 
bool transferElement (int indexFrom, QSettingsContainer *targetContainer, int indexTo) override
 Tries to transfer the element at index to the target container. More...
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
virtual const QMetaObjectmetaObject () const
 
QString objectName () const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const
 
bool isWindowType () const
 
bool signalsBlocked () const
 
bool blockSignals (bool block)
 
QThreadthread () const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const
 
const QObjectList & children () const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const
 
bool disconnect (const QObject *receiver, const char *method) const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const
 
QList< QByteArraydynamicPropertyNames () const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const
 
bool inherits (const char *className) const
 
void deleteLater ()
 

Protected Member Functions

bool acceptEntry (int index, int id, QSharedPointer< QSettingsEntry > entry) override
 Will be called to insert the given entry from a transfer. More...
 
- Protected Member Functions inherited from QSettingsContainer
 QSettingsContainer (QObject *parent=nullptr)
 Protected constructor.
 
bool doAccept (QSettingsContainer *target, int index, int id, QSharedPointer< QSettingsEntry > entry)
 [INTERNAL USE] Helper function
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

A special class that allows access to the settings dialog from different threads.

This special container allows synchronized and asynchronous access to a specific group of the settings dialog from a different thread than the mainthread. It internally uses Qts metasystem to make queued method invokations, making it completly threadsafe on a functional level.

Warning
Even though it's save to call all of the functions, there is no locking mechanism. This means that the state of the dialog can change between two function calls, making calls like container->insertEntry(container->elementCount(), entry); unsafe, if other components of the application are accessing the containers target group/section at the same time!

Synchronous Access:

All functions that are define by the QSettingsDialog interface are synchronous. This means they will block until the mainthread handled the request. Internally, a Qt::BlockingQueuedConnection is used to archiev this.

Warning
The blocking calls will block the calling thread until the mainthread was able to process the call. This means it is forbidden to call any of those from the mainthread itself.

Asynchronous Access:

The two functions QAsyncSettingsContainer::appendEntryAsync, QAsyncSettingsContainer::prependEntryAsync and QAsyncSettingsContainer::moveElementAsync can be used for asynchronous calls. They will return immediatly and post the event to the mainthread without waiting for it. It's safe to call those from everywhere.

Member Function Documentation

bool QAsyncSettingsContainer::acceptEntry ( int  index,
int  id,
QSharedPointer< QSettingsEntry entry 
)
overrideprotectedvirtual

Will be called to insert the given entry from a transfer.

Parameters
indexThe target index to insert the entry at
idThe id of the entry to be inserted
entryThe entry itself to insert
Returns
true, if the entry was accepted and taken, false if not

This function will be called internally to insert an entry from a QSettingsContainer::transferElement. It will be called on the target container with the given parameters. If true is returned, the original container assumes the element was taken and will remove it from itself. If false is returned, it's expected that the target container did not accept the element and the original one will keep the entry.

Implements QSettingsContainer.

QAsyncSettingsContainer::appendEntryAsync ( QSettingsEntry entry)
slot

Asynchronously appends the entry to the container.

Parameters
entryThe entry to be appended

This call will post the appending to the main thread. As soon as it is handled, the the element will be appended. The call will return immideatly and will not wait for the execution.

QSharedPointer<QSettingsEntry> QAsyncSettingsContainer::getEntry ( int  id) const
overridevirtual

Returns the entry with the given id.

Parameters
idThe id of the entry to be found
Returns
The entry, or nullptr, if the entry is not in there

Implements QSettingsContainer.

QSharedPointer<QSettingsEntry> QAsyncSettingsContainer::getEntryFromIndex ( int  index) const
overridevirtual

Returns the entry at the given index.

Parameters
indexThe index of the entry
Returns
The entry at that index, if it is an entry. If not, nullptr

Implements QSettingsContainer.

int QAsyncSettingsContainer::getEntryId ( int  index) const
overridevirtual

Returns the id for the entry at the index.

Parameters
indexThe index of the entry
Returns
The id of the entry at that index, if it is an entry. If not, -1

Implements QSettingsContainer.

int QAsyncSettingsContainer::getEntryIndex ( int  id) const
overridevirtual

Searches for entries index.

Parameters
idThe id of the entry to be found
Returns
The index within this container, or -1, if the entry is not in there

Implements QSettingsContainer.

QAsyncSettingsContainer::moveElementAsync ( int  indexFrom,
int  indexTo 
)
slot

Asynchronously moves the element from the old to the new index.

Parameters
indexFromThe index to move from
indexToThe index to move to

This call will post the moving to the main thread. As soon as it is handled, the the element will be moved. The call will return immideatly and will not wait for the execution.

QAsyncSettingsContainer::prependEntryAsync ( QSettingsEntry entry)
slot

Asynchronously prepends the entry to the container.

Parameters
entryThe entry to be prepend

This call will post the prepending to the main thread. As soon as it is handled, the the element will be prepended. The call will return immideatly and will not wait for the execution.

bool QAsyncSettingsContainer::transferElement ( int  indexFrom,
QSettingsContainer targetContainer,
int  indexTo 
)
overridevirtual

Tries to transfer the element at index to the target container.

Parameters
indexFromThe index of the element to be transfered
targetContainerThe container to transfer the element to
indexToThe index to insert the element at in the target container
Returns
true, if the transfer was successful, false if not

The function will first check if the target container accepts the element at indexFrom. If it does, it will be transfered. If not, nothign happens and false is returned.

Implements QSettingsContainer.


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