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