27 #include <QDataStream> 
   28 #include <QStandardItem> 
   29 #include <QtDesigner/abstractmetadatabase.h> 
   33     QSortFilterProxyModel(parent),
 
   37     setSourceModel(sModel);
 
   39     connect(
this, SIGNAL(
reload()), 
this, SLOT(onReload()));
 
   49 gui::ObjectExplorerModel::onReload()
 
   57     setFilterCaseSensitivity(Qt::CaseInsensitive);
 
   58     QSortFilterProxyModel::setFilterFixedString(searchPattern);
 
   61 std::pair<std::string, std::string>
 
   64     return sModel->getItemInformation(mapToSource(
index));
 
   68 gui::ObjectExplorerModel::filterAcceptsRow(
int sourceRow, 
const QModelIndex& sourceParent)
 const 
   70     QModelIndex 
index = sourceModel()->index(sourceRow, 0, sourceParent);
 
   71     return showThis(
index);
 
   75 gui::ObjectExplorerModel::showThis(
const QModelIndex& 
index)
 const 
   77     bool acceptRow = 
false;
 
   80     if (sourceModel()->rowCount(
index) > 0)
 
   82         for (
int nChild = 0; nChild < sourceModel()->rowCount(
index); ++nChild)
 
   84             QModelIndex childIndex = sourceModel()->index(nChild, 0, 
index);
 
   86             if (!childIndex.isValid())
 
   91             acceptRow = showThis(childIndex);
 
  101         QModelIndex useIndex = sourceModel()->index(
index.row(), 0, 
index.parent());
 
  102         QString name = sourceModel()->data(useIndex, Qt::DisplayRole).toString();
 
  104         if (!name.contains(filterRegExp()) || name.isEmpty())
 
  120     return sModel->getItemPixmap(mapToSource(
index));
 
  125 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::ObjectExplorerModelPrivate(
 
  130     QStandardItemModel(rows, columns, parent), 
control(
control), sizeHint(50, 50)
 
  135 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::onReload()
 
  139         std::vector<std::string> collections =
 
  140             controller->getMemoryXController()->getPriorKnowlegdeController()->getCollectionNames();
 
  142         this->setRowCount(collections.size());
 
  143         std::vector<memoryx::ObjectClassPtr> objects;
 
  144         std::string objectName;
 
  146         for (
int row = 0; row < (int)collections.size(); ++row)
 
  149                           ->getPriorKnowlegdeController()
 
  150                           ->getAllObjectClassesPtr(collections[row]);
 
  154             if (objects.size() < 1)
 
  156                 ARMARX_WARNING_S << 
"No objects found in collection " << collections.at(row);
 
  160             QStandardItem* item = 
new QStandardItem(QString::fromStdString(collections[row]));
 
  162             for (
int i = 0; i < (int)objects.size(); ++i)
 
  164                 objectName = objects[i]->getName();
 
  167                         ->getPriorKnowlegdeController()
 
  168                         ->getCoinVisualisation(objects[i], 
true) &&
 
  170                         ->getPriorKnowlegdeController()
 
  171                         ->getCoinVisualisation(objects[i], 
false))
 
  173                     QStandardItem* child = 
new QStandardItem(QString::fromStdString(objectName));
 
  174                     child->setSizeHint(sizeHint);
 
  175                     child->setIcon(this->getPreviewImageOfObject(
controller, objects[i]));
 
  176                     child->setEditable(
false);
 
  177                     item->setChild(i, child);
 
  185             item->setSizeHint(QSize(30, 30));
 
  186             item->setDragEnabled(
false);
 
  187             this->appendRow(item);
 
  192 std::pair<std::string, std::string>
 
  193 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::getItemInformation(
const QModelIndex& 
index)
 
  195     std::pair<std::string, std::string> toReturn;
 
  200         QStandardItem* item = itemFromIndex(
index);
 
  204             toReturn.first = item->text().toStdString(); 
 
  205             toReturn.second = item->parent()->text().toStdString(); 
 
  214 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::getItemPixmap(
const QModelIndex& 
index)
 const 
  220         QStandardItem* item = itemFromIndex(
index);
 
  221         pixmap = item->icon().pixmap(item->icon().actualSize(sizeHint));
 
  225         QIcon i = QIcon(QPixmap::fromImage(QImage(
":/icons/armarx-gui.png")));
 
  226         pixmap = i.pixmap(i.actualSize(sizeHint));
 
  233 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::getPreviewImageOfObject(
 
  239     preview = QImage(
":/icons/armarx-gui.png");
 
  251     return QIcon(QPixmap::fromImage(preview));
 
  255 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::mimeTypes()
 const 
  258     types << 
"application/vnd.text.list";
 
  263 gui::ObjectExplorerModel::ObjectExplorerModelPrivate::mimeData(
const QModelIndexList& indexes)
 const 
  265     QMimeData* mimeData = 
new QMimeData();
 
  266     QByteArray encodedData;
 
  268     QDataStream stream(&encodedData, QIODevice::WriteOnly);
 
  270     foreach (QModelIndex 
index, indexes)
 
  274             QStandardItem* item = itemFromIndex(
index);
 
  278                 stream << item->parent()->text();
 
  279                 stream << item->text();
 
  284     mimeData->setData(
"application/vnd.text.list", encodedData);