LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
LayerModel Class Reference

Model to display a list of layers in a QTableView. More...

#include <layermodel.h>

Inheritance diagram for LayerModel:
Collaboration diagram for LayerModel:

Public Types

enum  columns { NAME, EDIT, LOCKED, LAST }
 

Signals

void nameChanged (lc::Layer_CSPtr &layer, const std::string &name)
 Signal when layer name was changed by double clicking. More...
 

Public Member Functions

 LayerModel (QObject *parent=0)
 Create widget. More...
 
void setLayers (std::vector< lc::Layer_CSPtr > layers)
 Update the list of layers. More...
 
lc::Layer_CSPtr layerAt (int row)
 Get layer at specific row. More...
 
unsigned int indexOf (lc::Layer_CSPtr layer)
 Give the index of the given layer. More...
 
int rowCount (const QModelIndex &parent=QModelIndex()) const
 Get number of layers. More...
 
int columnCount (const QModelIndex &parent=QModelIndex()) const
 
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const
 
Qt::ItemFlags flags (const QModelIndex &index) const
 
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 

Private Attributes

std::vector< lc::Layer_CSPtr > _layers
 
QIcon _editIcon
 
QIcon _lockedIcon
 
QIcon _unlockedIcon
 

Detailed Description

Model to display a list of layers in a QTableView.

Definition at line 11 of file layermodel.h.

Member Enumeration Documentation

Enumerator
NAME 
EDIT 
LOCKED 
LAST 

Definition at line 15 of file layermodel.h.

Constructor & Destructor Documentation

LayerModel::LayerModel ( QObject *  parent = 0)

Create widget.

Parameters
parentPointer to parent object

Definition at line 3 of file layermodel.cpp.

3  :
4  QAbstractTableModel(parent) {
5 
6  _editIcon = QIcon(":/icons/layeredit");
7  _lockedIcon = QIcon(":/icons/locked.svg");
8  _unlockedIcon = QIcon(":/icons/unlocked.svg");
9 }
QIcon _editIcon
Definition: layermodel.h:67
QIcon _lockedIcon
Definition: layermodel.h:68
QIcon _unlockedIcon
Definition: layermodel.h:69

Member Function Documentation

int LayerModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const

Definition at line 23 of file layermodel.cpp.

23  {
24  return LAST;
25 }
QVariant LayerModel::data ( const QModelIndex &  index,
int  role = Qt::DisplayRole 
) const

Definition at line 27 of file layermodel.cpp.

27  {
28  if (!index.isValid()) {
29  return QVariant();
30  }
31 
32  auto layer = _layers.at(index.row());
33 
34  if(role == Qt::DisplayRole && index.column() == NAME) {
35  return layer->name().c_str();
36  }
37  else if(role == Qt::DecorationRole) {
38  switch (index.column()) {
39  case EDIT:
40  return _editIcon;
41 
42  case LOCKED:
43  if (layer->isFrozen()) {
44  return _lockedIcon;
45  }
46  return _unlockedIcon;
47  }
48  }
49 
50  return QVariant();
51 }
QIcon _editIcon
Definition: layermodel.h:67
QIcon _lockedIcon
Definition: layermodel.h:68
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65
QIcon _unlockedIcon
Definition: layermodel.h:69
Qt::ItemFlags LayerModel::flags ( const QModelIndex &  index) const

Definition at line 53 of file layermodel.cpp.

53  {
54  if(index.column() == NAME) {
55  return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
56  }
57 
58  return Qt::ItemIsEnabled;
59 }
unsigned int LayerModel::indexOf ( lc::Layer_CSPtr  layer)

Give the index of the given layer.

Parameters
layer
Returns
Index of layer

Definition at line 80 of file layermodel.cpp.

80  {
81  for(unsigned int i = 0; i < _layers.size(); i++) {
82  if(_layers[i] == layer) {
83  return i;
84  }
85  }
86 
87  return 0;
88 }
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65
lc::Layer_CSPtr LayerModel::layerAt ( int  row)

Get layer at specific row.

Parameters
rowRow in the list
Returns
Shared pointer to Layer

Definition at line 71 of file layermodel.cpp.

71  {
72  try {
73  return _layers.at(row);
74  }
75  catch(std::out_of_range& e) {
76  return nullptr;
77  }
78 }
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65
void LayerModel::nameChanged ( lc::Layer_CSPtr &  layer,
const std::string &  name 
)
signal

Signal when layer name was changed by double clicking.

int LayerModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const

Get number of layers.

Returns
Number of layers

Definition at line 19 of file layermodel.cpp.

19  {
20  return _layers.size();
21 }
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65
bool LayerModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
)

Definition at line 62 of file layermodel.cpp.

62  {
63  if(!index.isValid()) {
64  return false;
65  }
66 
67  emit nameChanged(_layers.at(index.row()), value.toString().toStdString());
68  return true;
69 }
void nameChanged(lc::Layer_CSPtr &layer, const std::string &name)
Signal when layer name was changed by double clicking.
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65
void LayerModel::setLayers ( std::vector< lc::Layer_CSPtr >  layers)

Update the list of layers.

Parameters
layersVector containing new layers

Definition at line 11 of file layermodel.cpp.

11  {
12  beginResetModel();
13 
14  _layers = layers;
15 
16  endResetModel();
17 }
std::vector< lc::Layer_CSPtr > _layers
Definition: layermodel.h:65

Member Data Documentation

QIcon LayerModel::_editIcon
private

Definition at line 67 of file layermodel.h.

std::vector<lc::Layer_CSPtr> LayerModel::_layers
private

Definition at line 65 of file layermodel.h.

QIcon LayerModel::_lockedIcon
private

Definition at line 68 of file layermodel.h.

QIcon LayerModel::_unlockedIcon
private

Definition at line 69 of file layermodel.h.


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