libfuoten  0.8.1
Qt based library to access the ownCloud/Nextcloud News App API
Properties | Public Member Functions | Signals | Protected Member Functions | List of all members
BaseItem Class Reference

#include <Fuoten/BaseItem>

Inheritance diagram for BaseItem:
Article Feed Folder

Properties

Fuoten::Error error
 
qint64 id
 
bool inOperation
 

Public Member Functions

 BaseItem (QObject *parent=nullptr)
 
 ~BaseItem () override
 
Q_INVOKABLE void clearError ()
 
virtual void copy (BaseItem *other)
 
Errorerror () const
 
qint64 id () const
 
bool inOperation () const
 
void setId (qint64 nId)
 

Signals

void errorChanged (Fuoten::Error *error)
 
void idChanged (qint64 id)
 
void inOperationChanged (bool inOperation)
 

Protected Member Functions

Componentcomponent () const
 
void setComponent (Component *nComp)
 
void setError (Error *nError)
 

Detailed Description

Abstract base class for Folder, Feed and Article.

Provides some basic properties used by other items. You have to derive this class and implement the pure virtual funtions.

Usage in models

If you are using a class that derives from BaseItem as the content object in a model, do not set the model as parent of the item if you intent to use item internal operations like remove, rename, etc. Setting the model as parent will delete the item when the model will be destructed.

Delete the model items manually in the model's destructor and check for items that are still inOperation(), use QObject::deleteLater() to delete these items so that they can finish the ongoing operation.

while (!folders.isEmpty()) {
Folder *f = folders.takeFirst();
if (f->inOperation()) {
f->deleteLater();
} else {
delete f;
}
}

Property Documentation

◆ error

Error * error
read

Pointer to an Error object, if an error occurred, otherwise returns a nullptr.

Access functions:
Error*error() const
Notifier signal:
voiderrorChanged(Error *error)
See also
setError()

◆ id

qint64 id
read

Database ID of the Article, Feed or Folder.

Access functions:
qint64id() const
Notifier signal:
voididChanged(qint64 id)
See also
setId()

◆ inOperation

bool inOperation
read

Returns true while there is an operation running on the item.

This is used for operations that are directly invoked by methods from the item, not from outside classes.

Access functions:
boolinOperation() const
Notifier signal:
voidinOperationChanged(bool inOperation)

Constructor & Destructor Documentation

◆ BaseItem()

BaseItem ( QObject *  parent = nullptr)
explicit

Constructs an empty base item with the given parent.

◆ ~BaseItem()

~BaseItem ( )
override

Deconstructs the base item.

Member Function Documentation

◆ clearError()

void clearError ( )

Removes the current Error object and sets a nullptr.

◆ component()

Component * component ( ) const
protected

Returns the pointer to the currently active Component.

If no component is active, a nullptr will be returned.

See also
setComponent()

◆ copy()

void copy ( BaseItem other)
virtual

Makes a deep copy of other into this object.

The default implementation does nothing. When reimplementing, do a qobject_cast to the derived type.

Reimplemented in Article, Feed, and Folder.

◆ error()

Error* error ( ) const

Returns a pointer to an Error object, if any error occurred, otherwise a nullptr.

See also
BaseItem::error

◆ errorChanged

void errorChanged ( Fuoten::Error error)
signal

This signal will be emitted whenever the error property changes. May return a nullptr.

See also
BaseItem::error

◆ id()

qint64 id ( ) const

Returns the ID of the item.

See also
BaseItem::id

◆ idChanged

void idChanged ( qint64  id)
signal

This signal will be emitted whenever the id property changes.

See also
BaseItem::id

◆ inOperation()

bool inOperation ( ) const

Returns true while there is some operation ongoing directly on the item.

See also
BaseItem::inOperation

◆ inOperationChanged

void inOperationChanged ( bool  inOperation)
signal

This signal will be emitted whenever the inOperation property changes.

See also
BaseItem::inOperation

◆ setComponent()

void setComponent ( Component nComp)
protected

Sets the API component to perform an internal API request.

This has to be a subclass of Component. Failed requests are handled automatically by connecting to the Component::failed() signal. It will set the BaseItem::error property and will delete the component as well setting the internal pointer to a nullptr.

Handling of succeeded API requests should be handled in the implementation.

Example
void Folder::remove(AbstractConfiguration *config, AbstractStorage *storage)
{
if (!config) {
qWarning("Can not delete the folder. No AbstractConfiguration available.");
return;
}
DeleteFolder *df = new DeleteFolder(this);
df->setConfiguration(config);
df->setStorage(storage);
df->setFolderId(id());
connect(df, &DeleteFolder::succeeded, this, &QObject::deleteLater);
}
See also
component()

◆ setError()

void setError ( Error nError)
protected

Sets the Error object of the error property.

See also
error

◆ setId()

void setId ( qint64  nId)

Sets the database ID of the item/feed/folder.

See also
id