Provides access to data stored in a Project through Qt's model-view framework. More...
#include <ProjectItemModel.h>
Inherits QStandardItemModel.
Inherited by Isis::ProjectItemProxyModel.
Signals | |
void | itemAdded (ProjectItem *) |
This signal is emitted when a ProjectItem is added to the model. More... | |
void | itemRemoved (ProjectItem *) |
Public Member Functions | |
ProjectItemModel (QObject *parent=0) | |
Constructs an empty model. More... | |
~ProjectItemModel () | |
Destructs the model. More... | |
QItemSelectionModel * | selectionModel () |
Returns the internal selection model. More... | |
ProjectItem * | addProject (Project *project) |
Adds a Project to the model. More... | |
ProjectItem * | findItemData (const QVariant &data, int role=Qt::UserRole+1) |
Returns the first item found that contains the given data in the given role or a null pointer if no item is found. More... | |
virtual bool | canDropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const |
You cannot drop mime data into the ProjectItemModel. More... | |
virtual void | removeItem (ProjectItem *item) |
Removes an item and its children from the model. More... | |
virtual void | removeItems (QList< ProjectItem * > items) |
Removes a list of items and their children from the model. More... | |
ProjectItem * | currentItem () |
Returns the current item of the internal selection model. More... | |
QList< ProjectItem * > | selectedItems () |
Returns a list of the selected items of the internal selection model. More... | |
void | appendRow (ProjectItem *item) |
Appends a top-level item to the model. More... | |
QModelIndex | indexFromItem (const ProjectItem *item) |
Returns the QModelIndex corresponding to a given ProjectItem. More... | |
void | insertRow (int row, ProjectItem *item) |
Inserts a top-level item at the given row. More... | |
ProjectItem * | item (int row) |
Returns the top-level item at the given row. More... | |
ProjectItem * | itemFromIndex (const QModelIndex &index) |
Returns the ProjectItem corresponding to a given QModelIndex. More... | |
void | setItem (int row, ProjectItem *item) |
Sets the item at the top-level row. More... | |
ProjectItem * | takeItem (int row) |
Removes the top-level row and returns the removed item. More... | |
Protected Slots | |
void | onSelectionChanged (const QItemSelection &selected, const QItemSelection &deselected) |
Slot to connect to the selectionChanged() signal from a selection model. More... | |
Provides access to data stored in a Project through Qt's model-view framework.
Items corresponding to data are organized in a tree structure. Data can be accessed through a ProjectItem or through a QModelIndex. Views associated with the model can access it either through the model directly or through a ProjectItemProxyModel.
Top-level items can be accessed through the item() method using the row where the item is stored. Children of items can be accessed through the child() method on the parent item. The data stored in an item can be accessed as a QVariant using the data() method of the item or through the various convenience methods in ProjectItem. Alternatively, the data in an item can be accessed with its corresponding QModelIndex and the model's data() method. It should be noted that the data() method in the model and the data() method of ProjectItem require a Qt::ItemDataRole interpreted as an int. Data stored in the model that correspond to Isis classes are stored as Qt::UserRole + 1.
Top-level items should be added to the model using the appendRow() or the insertRow() method. To add child items to a parent item the appendRow() or insertRow() methods of the parent item should be used.
The model keeps track of selected items and the current item using an internal QItemSelectionModel.
Views that only need access to a subset of the items or the items organized in a different way should use a ProjectItemProxyModel.
Isis::ProjectItemModel::ProjectItemModel | ( | QObject * | parent = 0 | ) |
Constructs an empty model.
[in] | parent | (QObject *) The parent. |
References onSelectionChanged().
Isis::ProjectItemModel::~ProjectItemModel | ( | ) |
Destructs the model.
ProjectItem * Isis::ProjectItemModel::addProject | ( | Project * | project | ) |
Adds a Project to the model.
An item is created that corresponds to the Project as well as children items that correspond to various parts of the Project.
References appendRow().
void Isis::ProjectItemModel::appendRow | ( | ProjectItem * | item | ) |
Appends a top-level item to the model.
[in] | item | (ProjectItem *) The item to append. |
Referenced by Isis::ProjectItemProxyModel::addChild(), and addProject().
|
virtual |
You cannot drop mime data into the ProjectItemModel.
data | (const QMimeData *) The data to drop |
action | (Qt::DropAction) The drop action |
row | (int) ??? |
column | (int) ??? |
parent | (const QModelIndex &) The index of the data's parent |
Reimplemented in Isis::ProjectItemProxyModel.
ProjectItem * Isis::ProjectItemModel::currentItem | ( | ) |
Returns the current item of the internal selection model.
References itemFromIndex(), and selectionModel().
Referenced by Isis::AbstractProjectItemView::currentItem(), and Isis::RemoveImagesWorkOrder::syncRedo().
ProjectItem * Isis::ProjectItemModel::findItemData | ( | const QVariant & | data, |
int | role = Qt::UserRole+1 |
||
) |
Returns the first item found that contains the given data in the given role or a null pointer if no item is found.
data | (const QVariant &) The data contained in the item. |
data | (int) The role of the data (see Qt::ItemDataRole). |
References Isis::ProjectItem::findItemData(), and item().
QModelIndex Isis::ProjectItemModel::indexFromItem | ( | const ProjectItem * | item | ) |
Returns the QModelIndex corresponding to a given ProjectItem.
[in] | item | (const ProjectItem *) The item. |
void Isis::ProjectItemModel::insertRow | ( | int | row, |
ProjectItem * | item | ||
) |
Inserts a top-level item at the given row.
[in] | row | (int) The row where the item will be inserted. |
[in] | item | (ProjectItem *) The item to insert. |
ProjectItem * Isis::ProjectItemModel::item | ( | int | row | ) |
Returns the top-level item at the given row.
[in] | row | (int) The row of the item. |
Referenced by Isis::ProjectItemProxyModel::addItems(), findItemData(), onSelectionChanged(), and removeItems().
|
signal |
This signal is emitted when a ProjectItem is added to the model.
ProjectItem * Isis::ProjectItemModel::itemFromIndex | ( | const QModelIndex & | index | ) |
Returns the ProjectItem corresponding to a given QModelIndex.
[in] | index | (const QModelIndex &) The index of the item. |
Referenced by currentItem(), Isis::ProjectItemProxyModel::mapIndexFromSource(), Isis::ProjectItemProxyModel::mapIndexToSource(), onSelectionChanged(), and selectedItems().
|
signal |
|
protectedslot |
Slot to connect to the selectionChanged() signal from a selection model.
Updates other factors in the model that rely on selected items but do not directly correspond with the selection model. Currently changes the selected property of Images that correspond with selected or deselected items.
[in] | selected | (const QItemSelection &) The selected items. |
[in] | deselected | (const QItemSelection &) The deselected items. |
References Isis::Image::displayProperties(), Isis::ProjectItem::image(), Isis::ProjectItem::isImage(), item(), itemFromIndex(), selectedItems(), and Isis::ImageDisplayProperties::setSelected().
Referenced by ProjectItemModel().
|
virtual |
Removes an item and its children from the model.
[in] | item | (ProjectItem *) The item to be removed. |
Reimplemented in Isis::ProjectItemProxyModel.
References Isis::ProjectItem::parent().
Referenced by Isis::ProjectItemProxyModel::removeItem(), removeItems(), and Isis::RemoveImagesWorkOrder::syncRedo().
|
virtual |
Removes a list of items and their children from the model.
[in] | item | (ProjectItem *) The items to be removed. |
References item(), and removeItem().
QList< ProjectItem * > Isis::ProjectItemModel::selectedItems | ( | ) |
Returns a list of the selected items of the internal selection model.
References itemFromIndex(), and selectionModel().
Referenced by Isis::ProjectItemProxyModel::dropMimeData(), onSelectionChanged(), Isis::AbstractProjectItemView::selectedItems(), Isis::CubeDnViewWorkOrder::syncRedo(), and Isis::Footprint2DViewWorkOrder::syncRedo().
QItemSelectionModel * Isis::ProjectItemModel::selectionModel | ( | ) |
Returns the internal selection model.
Referenced by currentItem(), selectedItems(), Isis::ProjectItemTreeView::setInternalModel(), Isis::ProjectItemProxyModel::setSourceModel(), Isis::ProjectItemProxyModel::updateProxyCurrent(), Isis::ProjectItemProxyModel::updateProxySelection(), Isis::ProjectItemProxyModel::updateSourceCurrent(), and Isis::ProjectItemProxyModel::updateSourceSelection().
void Isis::ProjectItemModel::setItem | ( | int | row, |
ProjectItem * | item | ||
) |
Sets the item at the top-level row.
[in] | row | (int) The row where the item will be set. |
[in] | item | (ProjectItem *) The item to set the row to. |
ProjectItem * Isis::ProjectItemModel::takeItem | ( | int | row | ) |
Removes the top-level row and returns the removed item.
[in] | row | (int) The row of the item to remove. |
U.S. Department of the Interior | U.S. Geological Survey ISIS | Privacy & Disclaimers | Astrogeology Research Program To contact us, please post comments and questions on the ISIS Support Center File Modified: 07/12/2023 23:43:34 |