| 150 | } |
| 151 | |
| 152 | QVariant ProjectItemModel::data(const QModelIndex &index, int role) const |
| 153 | { |
| 154 | const Node *const node = nodeForIndex(index); |
| 155 | if (!node) |
| 156 | return {}; |
| 157 | |
| 158 | switch (role) { |
| 159 | case Qt::DisplayRole: |
| 160 | return node->displayName(); |
| 161 | case Qt::ToolTipRole: { |
| 162 | QString tips = node->tooltip(); |
| 163 | if (node->isFileNodeType() && !QFile::exists(node->filePath())) |
| 164 | tips += tr(" [Ungenerated]"); |
| 165 | return tips; |
| 166 | } |
| 167 | case Qt::DecorationRole: |
| 168 | return node->icon(); |
| 169 | case Qt::FontRole: { |
| 170 | QFont font; |
| 171 | if (node->isProjectNodeType()) |
| 172 | font.setBold(true); |
| 173 | return font; |
| 174 | } |
| 175 | case Qt::ForegroundRole: |
| 176 | if (!QFile::exists(node->filePath())) { |
| 177 | auto fore = d->view->palette().color(QPalette::Text); |
| 178 | fore.setAlpha(qRound(255 * 0.4)); |
| 179 | return fore; |
| 180 | } |
| 181 | break; |
| 182 | case ItemStateRole: { |
| 183 | auto item = itemForIndex(index); |
| 184 | if (item) |
| 185 | return item->state; |
| 186 | } break; |
| 187 | default: |
| 188 | break; |
| 189 | } |
| 190 | |
| 191 | return QStandardItemModel::data(index, role); |
| 192 | } |
| 193 | |
| 194 | int ProjectItemModel::rowCount(const QModelIndex &index) const |
| 195 | { |
no test coverage detected