diff options
Diffstat (limited to 'Swift/QtUI/Roster/RosterModel.cpp')
-rw-r--r-- | Swift/QtUI/Roster/RosterModel.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Swift/QtUI/Roster/RosterModel.cpp b/Swift/QtUI/Roster/RosterModel.cpp new file mode 100644 index 0000000..147aa67 --- /dev/null +++ b/Swift/QtUI/Roster/RosterModel.cpp @@ -0,0 +1,63 @@ +#include "RosterModel.h" + +namespace Swift { + +RosterModel::RosterModel() { +} + +RosterModel::~RosterModel() { + delete tree_; +} + +void RosterModel::setRoot(QtTreeWidgetItem* root) { + tree_ = root; + connect(tree_, SIGNAL(changed()), this, SLOT(handleItemChanged())); +} + + +void RosterModel::handleItemChanged() { + //FIXME: This is just a lazy hack to cause the view to refresh until it works. + // Then I'll replace it with the proper implementation. + printf("Changed\n"); + reset(); + emit layoutChanged(); +} + +int RosterModel::columnCount(const QModelIndex& parent) const { + Q_UNUSED(parent); + return 1; +} + +QVariant RosterModel::data(const QModelIndex& index, int role) const { + QtTreeWidgetItem* item = index.isValid() ? static_cast<QtTreeWidgetItem*>(index.internalPointer()) : NULL; + return item ? item->data(role) : QVariant(); +} + +QModelIndex RosterModel::index(int row, int column, const QModelIndex& parent) const { + QtTreeWidgetItem* parentItem = parent.isValid() ? static_cast<QtTreeWidgetItem*>(parent.internalPointer()) : tree_; + Q_ASSERT(parentItem); + + return row < parentItem->rowCount() ? createIndex(row, column, parentItem->getItem(row)) : QModelIndex(); +} + +QModelIndex RosterModel::parent(const QModelIndex& index) const { + if (!index.isValid()) { + return QModelIndex(); + } + + QtTreeWidgetItem* item = static_cast<QtTreeWidgetItem*>(index.internalPointer()); + Q_ASSERT(item); + + QtTreeWidgetItem* parentItem = item->getParentItem(); + return parentItem == tree_ ? QModelIndex() : createIndex(parentItem->row(), 0, parentItem); + +} + +int RosterModel::rowCount(const QModelIndex& parent) const { + QtTreeWidgetItem* item = parent.isValid() ? static_cast<QtTreeWidgetItem*>(parent.internalPointer()) : tree_; + Q_ASSERT(item); + + return item->rowCount(); +} + +}
\ No newline at end of file |