diff --git a/Modules/QmitkExt/QmitkModuleTableModel.cpp b/Modules/QmitkExt/QmitkModuleTableModel.cpp index 3ca717b6b4..be1440015f 100644 --- a/Modules/QmitkExt/QmitkModuleTableModel.cpp +++ b/Modules/QmitkExt/QmitkModuleTableModel.cpp @@ -1,154 +1,153 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "QmitkModuleTableModel.h" #include #include #include #include class QmitkModuleTableModelPrivate { public: QmitkModuleTableModelPrivate(QmitkModuleTableModel* q, us::ModuleContext* mc) : q(q), context(mc) { - std::vector m; - context->GetModules(m); + std::vector m = context->GetModules(); for (std::vector::const_iterator it = m.begin(); it != m.end(); ++it) { modules[(*it)->GetModuleId()] = *it; } context->AddModuleListener(this, &QmitkModuleTableModelPrivate::ModuleChanged); } ~QmitkModuleTableModelPrivate() { context->RemoveModuleListener(this, &QmitkModuleTableModelPrivate::ModuleChanged); } void ModuleChanged(us::ModuleEvent event) { q->insertModule(event.GetModule()); } QmitkModuleTableModel* q; us::ModuleContext* context; QMap modules; }; QmitkModuleTableModel::QmitkModuleTableModel(QObject* parent, us::ModuleContext* mc) : QAbstractTableModel(parent), d(new QmitkModuleTableModelPrivate(this, mc ? mc : us::GetModuleContext())) { } QmitkModuleTableModel::~QmitkModuleTableModel() { delete d; } int QmitkModuleTableModel::rowCount(const QModelIndex& parent) const { if (parent.isValid()) return 0; return d->modules.size(); } int QmitkModuleTableModel::columnCount(const QModelIndex& parent) const { if (parent.isValid()) return 0; return 4; } QVariant QmitkModuleTableModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); if (role == Qt::DisplayRole) { us::Module* module = d->modules[index.row()+1]; switch(index.column()) { case 0: return QVariant::fromValue(static_cast(module->GetModuleId())); case 1: return QString::fromStdString(module->GetName()); case 2: return QString::fromStdString(module->GetVersion().ToString()); case 3: return QString::fromStdString(module->GetLocation()); } } else if (role == Qt::ForegroundRole) { us::Module* module = d->modules[index.row()+1]; if (!module->IsLoaded()) { return QBrush(Qt::gray); } } else if (role == Qt::ToolTipRole) { us::Module* module = d->modules[index.row()+1]; QString id = QString::number(module->GetModuleId()); QString name = QString::fromStdString(module->GetName()); QString version = QString::fromStdString(module->GetVersion().ToString()); QString location = QString::fromStdString(module->GetLocation()); QString state = module->IsLoaded() ? "Loaded" : "Unloaded"; QString tooltip = "Id: %1\nName: %2\nVersion: %3\nLocation: %7\nState: %9"; return tooltip.arg(id, name, version, location, state); } return QVariant(); } QVariant QmitkModuleTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation != Qt::Horizontal || role != Qt::DisplayRole) return QVariant(); switch (section) { case 0: return "Id"; case 1: return "Name"; case 2: return "Version"; case 3: return "Location"; } return QVariant(); } void QmitkModuleTableModel::insertModule(us::Module* module) { long id = module->GetModuleId(); if (d->modules.contains(id)) { d->modules[id] = module; emit dataChanged(createIndex(id-1, 0), createIndex(id-1, columnCount())); return; } else { beginInsertRows(QModelIndex(), id-1, id-1); d->modules[id] = module; endInsertRows(); } }