27 #include "../../../../common/STLUtils.h"
28 #include "../../../../dataaccess/datasource/DataSource.h"
34 #include <QMessageBox>
38 : QAbstractItemModel(parent),
41 for(std::size_t i = 0; i < datasources.size(); ++i)
43 if(datasources[i].
get() != 0)
49 : QAbstractItemModel(parent),
63 return !m_items.empty();
83 if((role == Qt::CheckStateRole) && !m_checkable)
93 return item->
data(index.column(), role);
95 catch(
const std::exception& e)
97 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
98 tr(
"TerraLib Qt Components"),
103 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
104 tr(
"TerraLib Qt Components"),
105 tr(
"Unknown error in data source explorer!"));
113 if(!parent.isValid())
125 catch(
const std::exception& e)
127 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
128 tr(
"TerraLib Qt Components"),
133 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
134 tr(
"TerraLib Qt Components"),
135 tr(
"Unknown error in data source explorer!"));
142 return QAbstractItemModel::flags(index);
147 return QAbstractItemModel::flags(index);
151 return QAbstractItemModel::flags(index) | item->
flags();
153 catch(
const std::exception& e)
155 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
156 tr(
"TerraLib Qt Components"),
161 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
162 tr(
"TerraLib Qt Components"),
163 tr(
"Unknown error in data source explorer!"));
166 return QAbstractItemModel::flags(index);
171 if(!parent.isValid())
172 return !m_items.empty();
183 catch(
const std::exception& e)
185 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
186 tr(
"TerraLib Qt Components"),
191 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
192 tr(
"TerraLib Qt Components"),
193 tr(
"Unknown error in data source explorer!"));
202 return QModelIndex();
204 if(!parent.isValid())
207 if(static_cast<std::size_t>(row) >= m_items.size())
208 return QModelIndex();
212 return createIndex(row, column, item);
217 if(parentItem == 0 || parentItem->children().empty() || (row >= parentItem->children().size()))
218 return QModelIndex();
223 return QModelIndex();
225 return createIndex(row, column, item);
231 return QModelIndex();
235 if(item == 0 || item->parent() == 0)
236 return QModelIndex();
241 return QModelIndex();
245 if(grandParentItem == 0)
248 for(std::size_t i = 0; i != m_items.size(); ++i)
250 if(m_items[i] == parentItem)
251 return createIndex(static_cast<int>(i), index.column(), parentItem);
257 const QObjectList& items = grandParentItem->children();
261 for(QObjectList::const_iterator it = items.begin(); it != items.end(); ++it, ++i)
263 if((*it) == parentItem)
264 return createIndex(i, index.column(), parentItem);
268 return QModelIndex();
273 if(!parent.isValid())
274 return static_cast<int>(m_items.size());
281 return item->children().count();
289 if(role == Qt::CheckStateRole && !m_checkable)
299 bool retval = item->
setData(value, role);
301 emit dataChanged(index, index);
305 catch(
const std::exception& e)
307 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
308 tr(
"TerraLib Qt Components"),
313 QMessageBox::warning(static_cast<QWidget*>(QObject::parent()),
314 tr(
"TerraLib Qt Components"),
315 tr(
"Unknown error in data source explorer!"));
323 m_checkable = checkable;
A class that represents a data source in a DataSourceTreeModel.
A class used to group a set of dataset items in a DataSourceTreeModel.
void FreeContents(boost::unordered_map< K, V * > &m)
This function can be applied to a map of pointers. It will delete each pointer in the map...
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr