23 QAbstractTableModel(parent),
44 int channelIndex = index.row();
49 case Qt::DisplayRole: {
50 if (index.column() == 2) {
51 return channels.at(channelIndex)->name();
55 case Qt::DecorationRole: {
56 if (index.column() == 1 &&
64 case Qt::CheckStateRole: {
68 if (index.column() == 0) {
70 return (
flags.isEmpty() ||
flags.testBit(channelIndex)) ? Qt::Checked : Qt::Unchecked;
82 Q_UNUSED(section); Q_UNUSED(orientation); Q_UNUSED(role);
111 int channelIndex = index.row();
113 if (role == Qt::CheckStateRole) {
116 Q_ASSERT(!
flags.isEmpty());
118 flags.setBit(channelIndex,
value.toInt() == Qt::Checked);
122 Q_EMIT dataChanged(this->index(0, 0), this->index(channels.count(), 0));
140 Q_ASSERT(index.row() <= channels.count());
142 int channelIndex = index.row();
144 QBitArray
flags = rootLayer->channelFlags();
146 Q_ASSERT(!
flags.isEmpty());
148 for (
int i = 0; i < channels.count(); ++i) {
150 flags.setBit(i, (i == channelIndex));
154 rootLayer->setChannelFlags(
flags);
157 Q_EMIT dataChanged(this->index(0, 0), this->index(channels.count(), 0));
163 Qt::ItemFlags
flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
186 if (!cs || *rootLayer->colorSpace() == *cs) {
187 const int newChannelCount = cs ? cs->
channelCount() : 0;
197 Q_EMIT dataChanged(this->index(0, 0), this->index(channels.count(), this->columnCount()));
218#include "moc_channelmodel.cpp"
float value(const T *src, size_t ch)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void setCanvas(KisCanvas2 *canvas)
void rowActivated(const QModelIndex &index)
void slotColorSpaceChanged(const KoColorSpace *colorSpace)
QPointer< KisCanvas2 > m_canvas
QVector< QImage > m_thumbnails
void channelFlagsChanged()
void setChannelThumbnails(const QVector< QImage > &channels, const KoColorSpace *cs)
QSize m_thumbnailSizeLimit
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
void setThumbnailSizeLimit(QSize size)
ChannelModel(QObject *parent=0)
KisSignalAutoConnectionsStore m_canvasConnections
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
QSize thumbnailSizeLimit() const
void addConnection(Sender sender, Signal signal, Receiver receiver, Method method, Qt::ConnectionType type=Qt::AutoConnection)
@ ALPHA
The channel represents the opacity of a pixel.
QBitArray channelFlags(bool color=true, bool alpha=false) const
QList< KoChannelInfo * > channels
virtual quint32 channelCount() const =0
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
const KoColorSpace * colorSpace() const override
virtual void setChannelFlags(const QBitArray &channelFlags)