27 #include "../../../../common/STLUtils.h" 
   28 #include "../../../../dataaccess/datasource/DataSource.h" 
   34 #include <QtGui/QMessageBox> 
   35 #include <QtGui/QWidget> 
   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;
 
int rowCount(const QModelIndex &parent=QModelIndex()) const 
 
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 
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...
 
A class that represents a data source in a DataSourceTreeModel. 
 
bool hasChildren(const QModelIndex &parent=QModelIndex()) const 
 
virtual Qt::ItemFlags flags() const =0
 
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const 
 
std::vector< AbstractDataSourceTreeItem * > m_items
 
virtual void fetchMore()=0
 
bool canFetchMore(const QModelIndex &parent) const 
 
QModelIndex parent(const QModelIndex &index) const 
 
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const 
 
Qt::ItemFlags flags(const QModelIndex &index) const 
 
void setCheckable(const bool checkable)
 
DataSourceTreeModel(const std::vector< te::da::DataSourceInfoPtr > &datasources, QWidget *parent)
This lists all data sources. 
 
A class used to group a set of dataset items in a DataSourceTreeModel. 
 
virtual bool hasChildren() const =0
 
int columnCount(const QModelIndex &parent=QModelIndex()) const 
 
virtual bool setData(const QVariant &value, int role=Qt::EditRole)=0
 
virtual QVariant data(int column, int role) const =0
 
void fetchMore(const QModelIndex &parent)
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
 
virtual bool canFetchMore() const =0