AbstractPluginsModel

Qualified name: mv::AbstractPluginsModel

class AbstractPluginsModel : public mv::StandardItemModel

Abstract plugin manager model class.

Base standard item model for plugins

Author

Thomas Kroes

Subclassed by mv::PluginsListModel, mv::PluginsTreeModel

Public Types

enum class PopulationMode

Population.

Values:

enumerator Manual
enumerator Automatic

…done manually with setPlugins()

…performed every time a plugin is added or removed

enum class Column

Model columns.

Values:

enumerator Name
enumerator Category

Item name (plugin type, factory name or plugin name)

enumerator Id

Item category (type, factory or instance)

enumerator Count

Globally unique plugin instance identifier.

Public Functions

AbstractPluginsModel(PopulationMode populationMode = PopulationMode::Automatic, QObject *parent = nullptr)

Construct plugin manager model with parent.

Parameters:

parent – Pointer to parent object

PopulationMode getPopulationMode() const

Get current population mode.

Returns:

Population mode

void setPopulationMode(PopulationMode populationMode)

Set population mode to populationMode.

Parameters:

populationMode – Population mode

virtual plugin::Plugins getPlugins() const = 0

Get plugins.

Returns:

Vector of plugins

virtual plugin::Plugin *getPlugin(const QModelIndex &modelIndex) const = 0

Get plugin for modelIndex.

Parameters:

modelIndex – Index to retrieve

Returns:

Pointer to plugin (maybe nullptr)

virtual void setPlugins(const plugin::Plugins &plugins) = 0

Set the plugins from which can be picked (mode is set to StorageMode::Manual)

Parameters:

plugins – Vector of plugins

Protected Functions

virtual void populateFromPluginManager() = 0

Synchronize the plugins with the core.

virtual void addPlugin(plugin::Plugin *plugin) = 0

Add plugin to the model.

Parameters:

plugin – Pointer to plugin

virtual void removePlugin(plugin::Plugin *plugin) = 0

Remove plugin from the model.

Parameters:

plugin – Pointer to plugin

QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override

Get header data for section, orientation and display role.

Parameters:
  • section – Section

  • orientation – Orientation

  • role – Data role

Returns:

Header

class CategoryItem : public mv::AbstractPluginsModel::Item

Standard model item class for displaying the item category.

Public Functions

Item(plugin::Plugin *plugin, const QString &title)

No need for specialized constructor.

Public Static Functions

static inline QVariant headerData(Qt::Orientation orientation, int role)

Get header data for orientation and role.

Parameters:
  • orientation – Horizontal/vertical

  • role – Data role

Returns:

Header data

class IdItem : public mv::AbstractPluginsModel::Item, public QObject

Standard model item class for displaying the plugin Id.

Public Functions

QVariant data(int role = Qt::UserRole + 1) const override

Get model data for role.

Returns:

Data for role in variant form

Item(plugin::Plugin *plugin, const QString &title)

No need for specialized constructor.

Public Static Functions

static inline QVariant headerData(Qt::Orientation orientation, int role)

Get header data for orientation and role.

Parameters:
  • orientation – Horizontal/vertical

  • role – Data role

Returns:

Header data

class Item : public QStandardItem

Base standard model item class for a dataset.

Subclassed by mv::AbstractPluginsModel::CategoryItem, mv::AbstractPluginsModel::IdItem, mv::AbstractPluginsModel::NameItem

Public Functions

Item(plugin::Plugin *plugin, const QString &title)

Construct with pointer to the plugin and title.

Parameters:
  • plugin – Pointer to plugin (maybe nullptr)

  • titleItem title

QVariant data(int role = Qt::UserRole + 1) const override

Get model data for role.

Returns:

Data for role in variant form

plugin::Plugin *getPlugin() const

Get plugin return Pointer to plugin (maybe nullptr)

class NameItem : public mv::AbstractPluginsModel::Item

Standard model item class for displaying the item name.

Public Functions

Item(plugin::Plugin *plugin, const QString &title)

No need for specialized constructor.

Public Static Functions

static inline QVariant headerData(Qt::Orientation orientation, int role)

Get header data for orientation and role.

Parameters:
  • orientation – Horizontal/vertical

  • role – Data role

Returns:

Header data

class Row : public QList<QStandardItem*>

Convenience class for combining items in a row.

Public Functions

inline Row(plugin::Plugin *plugin, const QString &name, const QString &category, const QString &id, const QIcon &icon = QIcon())

Construct with pointer to plugin, name, category, id and possibly icon.

Parameters:
  • plugin – Pointer to plugin (maybe nullptr)

  • nameItem name

  • categoryItem category

  • id – Globally unique plugin instance identifier

  • iconItem icon