| 275 | } |
| 276 | |
| 277 | QVariant ComicModel::data(const QModelIndex &index, int role) const |
| 278 | { |
| 279 | if (!index.isValid()) |
| 280 | return QVariant(); |
| 281 | |
| 282 | if (role == Qt::DecorationRole) { |
| 283 | return QVariant(); |
| 284 | } |
| 285 | |
| 286 | if (role == Qt::TextAlignmentRole) { |
| 287 | switch (index.column()) // TODO obtener esto de la query |
| 288 | { |
| 289 | case ComicModel::Number: |
| 290 | return QVariant(Qt::AlignRight | Qt::AlignVCenter); |
| 291 | case ComicModel::NumPages: |
| 292 | return QVariant(Qt::AlignRight | Qt::AlignVCenter); |
| 293 | case ComicModel::Size: |
| 294 | return QVariant(Qt::AlignRight | Qt::AlignVCenter); |
| 295 | case ComicModel::CurrentPage: |
| 296 | return QVariant(Qt::AlignRight | Qt::AlignVCenter); |
| 297 | default: |
| 298 | return QVariant(Qt::AlignLeft | Qt::AlignVCenter); |
| 299 | } |
| 300 | } |
| 301 | |
| 302 | // TODO check here if any view is asking for TableModel::Roles |
| 303 | // these roles will be used from QML/GridView |
| 304 | |
| 305 | auto item = static_cast<ComicItem *>(index.internalPointer()); |
| 306 | |
| 307 | auto sizeString = [=] { |
| 308 | auto bytes = item->data(ComicModel::Hash).toString().right(item->data(ComicModel::Hash).toString().length() - 40).toULongLong(); |
| 309 | |
| 310 | QStringList units = { "B", "KB", "MB", "GB", "TB" }; |
| 311 | int i; |
| 312 | double outputSize = bytes; |
| 313 | for (i = 0; i < units.size() - 1; i++) { |
| 314 | if (outputSize < 1024) { |
| 315 | break; |
| 316 | } |
| 317 | outputSize = outputSize / 1024; |
| 318 | } |
| 319 | return QString("%1 %2").arg(outputSize, 0, 'f', 2).arg(units[i]); |
| 320 | }; |
| 321 | |
| 322 | if (role == NumberRole) |
| 323 | return item->data(Number); |
| 324 | else if (role == TitleRole) |
| 325 | return item->data(Title).isNull() ? item->data(FileName) : item->data(Title); |
| 326 | else if (role == ReadableTitle) { |
| 327 | QString title; |
| 328 | if (!item->data(Number).isNull()) { |
| 329 | title = title % "#" % item->data(Number).toString() % " "; |
| 330 | } |
| 331 | return QVariant(title % (item->data(Title).isNull() ? item->data(FileName).toString() : item->data(Title).toString())); |
| 332 | } else if (role == FileNameRole) |
| 333 | return item->data(FileName); |
| 334 | else if (role == RatingRole) |
no test coverage detected