27 #include "../../datasource/explorer/DataSetGroupItem.h"
34 #include <QMessageBox>
38 : QAbstractItemModel(parent),
41 m_forceCatalogCache(false)
43 if(datasource.get() != 0)
75 if(role == Qt::CheckStateRole && !m_checkable)
85 return item->
data(index.column(), role);
87 catch(
const std::exception& e)
89 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
90 tr(
"TerraLib Qt Components"),
95 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
96 tr(
"TerraLib Qt Components"),
97 tr(
"Unknown error in dataset explorer model!"));
105 if(!parent.isValid())
117 catch(
const std::exception& e)
119 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
120 tr(
"TerraLib Qt Components"),
125 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
126 tr(
"TerraLib Qt Components"),
127 tr(
"Unknown error in dataset explorer model!"));
134 return QAbstractItemModel::flags(index);
139 return QAbstractItemModel::flags(index);
143 return QAbstractItemModel::flags(index) | item->
flags();
145 catch(
const std::exception& e)
147 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
148 tr(
"TerraLib Qt Components"),
153 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
154 tr(
"TerraLib Qt Components"),
155 tr(
"Unknown error in dataset explorer model!"));
158 return QAbstractItemModel::flags(index);
163 if(!parent.isValid())
175 catch(
const std::exception& e)
177 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
178 tr(
"TerraLib Qt Components"),
183 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
184 tr(
"TerraLib Qt Components"),
185 tr(
"Unknown error in dataset explorer model!"));
194 return QModelIndex();
196 if(!parent.isValid())
199 return QModelIndex();
201 return createIndex(row, column, m_datasets);
206 if(parentItem == 0 || parentItem->children().empty() || ( row >= parentItem->children().size()))
207 return QModelIndex();
212 return QModelIndex();
214 return createIndex(row, column, item);
220 return QModelIndex();
224 if(item == 0 || item->parent() == 0)
225 return QModelIndex();
230 return QModelIndex();
234 if(grandParentItem == 0)
237 return createIndex(0, index.column(), parentItem);
242 const QObjectList& items = grandParentItem->children();
246 for(QObjectList::const_iterator it = items.begin(); it != items.end(); ++it, ++i)
248 if((*it) == parentItem)
249 return createIndex(i, index.column(), parentItem);
253 return QModelIndex();
258 if(!parent.isValid())
266 return item->children().count();
274 if(role == Qt::CheckStateRole && !m_checkable)
284 bool retval = item->
setData(value, role);
286 emit dataChanged(index, index);
289 emitDataChangedForDescendants(index);
292 emitDataChangedForAncestors(index);
296 catch(
const std::exception& e)
298 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
299 tr(
"TerraLib Qt Components"),
304 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
305 tr(
"TerraLib Qt Components"),
306 tr(
"Unknown error in dataset explorer model!"));
314 m_checkable = checkable;
324 if(!parent.isValid())
327 int rows = rowCount(parent);
329 for(
int i = 0; i != rows; ++i)
331 QModelIndex idx = index(i, 0, parent);
333 emit dataChanged(idx, idx);
336 emitDataChangedForDescendants(idx);
342 QModelIndex ancestorIndex = parent(index);
343 if(parent(index).isValid())
346 while(ancestorIndex.isValid())
348 emit dataChanged(ancestorIndex, ancestorIndex);
349 ancestorIndex = parent(ancestorIndex);
A simple model for datasets belonging to a data source.
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr