# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2016-12-31 09:58:15 # Node ID 708985ebaffae369f9d2a25dab6bf410efe8906b # Parent 4a9e4ae604f6e1408ebc4d8f70cb07f9299c848a fixed checkbox channel name display, checkbox corrected, visibility column still has problems diff --git a/src/channelinfomodel.cpp b/src/channelinfomodel.cpp --- a/src/channelinfomodel.cpp +++ b/src/channelinfomodel.cpp @@ -19,6 +19,8 @@ #include "channelinfomodel.h" +#include + /// name + visibility enum ChannelInfoColumn { @@ -44,23 +46,49 @@ int ChannelInfoModel::columnCount(const return COLUMN_COUNT; } +Qt::ItemFlags ChannelInfoModel::flags(const QModelIndex &index) const +{ + if (index.column() == COLUMN_NAME) + { + return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren; + } + else if (index.column() == COLUMN_VISIBILITY) + { + return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren; + } + + return Qt::NoItemFlags; +} + QVariant ChannelInfoModel::data(const QModelIndex &index, int role) const { // TODO: check role parameter - if (index.row() < (int) _numOfChannels) + if (index.row() >= (int) _numOfChannels) { - if (index.column() == COLUMN_NAME) + return QVariant(); + } + + if (index.column() == COLUMN_NAME) + { + if (role == Qt::DisplayRole || role == Qt::EditRole) { return QVariant(infos[index.row()].name); } - else if (index.column() == COLUMN_VISIBILITY) + } + else if (index.column() == COLUMN_VISIBILITY) + { + if (Qt::CheckStateRole) { - return QVariant(infos[index.row()].visibility); + bool visible = infos[index.row()].visibility; + return visible ? Qt::Checked : Qt::Unchecked; + } + else if (role == Qt::DisplayRole || role == Qt::EditRole) + { + return QString(""); } } - // invalid index return QVariant(); } diff --git a/src/channelinfomodel.h b/src/channelinfomodel.h --- a/src/channelinfomodel.h +++ b/src/channelinfomodel.h @@ -31,10 +31,11 @@ public: explicit ChannelInfoModel(unsigned numberOfChannels, QObject *parent = 0); // implemented from QAbstractItemModel - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + Qt::ItemFlags flags(const QModelIndex &index) const; void setNumOfChannels(unsigned number);