void FinishedTransfersModel::addFile(const QMap<QString, QVariant> ¶ms){ FinishedTransfersItem *item = findFile(params["TARGET"].toString()); if (!item) return; for (int i = 0; i < fileItem->columnCount(); i++){ if (file_header_table[i] == "USERS"){ QStringList users = params[file_header_table[i]].toString().split(" "); QStringList old_users = item->data(i).toString().split(" "); if (users.isEmpty()) continue; else{ for (const auto nick : users){ if (!old_users.contains(nick)) old_users.push_back(nick); } item->updateColumn(i, old_users.join(" ")); } } else item->updateColumn(i, params[file_header_table[i]]); } emit dataChanged(createIndex(item->row(), COLUMN_FINISHED_NAME, item), createIndex(item->row(), COLUMN_FINISHED_FULL, item)); }
int FinishedTransfersModel::rowCount(const QModelIndex &parent) const { FinishedTransfersItem *parentItem; if (parent.column() > 0) return 0; if (!parent.isValid()) parentItem = rootItem; else parentItem = static_cast<FinishedTransfersItem*>(parent.internalPointer()); return parentItem->childCount(); }
void FinishedTransfersModel::remUser(const QString &cid){ FinishedTransfersItem *item = findUser(cid); if (!item) return; user_hash.remove(cid); beginRemoveRows(QModelIndex(), item->row(), item->row()); { userItem->childItems.removeAt(item->row()); delete item; } endRemoveRows(); }
void FinishedTransfersModel::remFile(const QString &file){ FinishedTransfersItem *item = findFile(file); if (!item) return; file_hash.remove(file); beginRemoveRows(QModelIndex(), item->row(), item->row()); { fileItem->childItems.removeAt(item->row()); delete item; } endRemoveRows(); }
QModelIndex FinishedTransfersModel::index(int row, int column, const QModelIndex &parent) const { if (!hasIndex(row, column, parent)) return QModelIndex(); FinishedTransfersItem *parentItem; if (!parent.isValid()) parentItem = rootItem; else parentItem = static_cast<FinishedTransfersItem*>(parent.internalPointer()); FinishedTransfersItem *childItem = parentItem->child(row); if (childItem) return createIndex(row, column, childItem); else return QModelIndex(); }
void FinishedTransfersModel::addUser(const QMap<QString, QVariant> ¶ms){ FinishedTransfersItem *item = findUser(params["CID"].toString()); if (!item) return; for (int i = 0; i < userItem->columnCount(); i++){ if (user_header_table[i] == "NICK"){ QString user = params[user_header_table[i]].toString(); if (user.trimmed().isEmpty() || user.trimmed().isNull()) continue; else item->updateColumn(i, user); } else item->updateColumn(i, params[user_header_table[i]]); } emit dataChanged(createIndex(item->row(), COLUMN_FINISHED_NAME, item), createIndex(item->row(), COLUMN_FINISHED_CRC32, item)); }
void FinishedTransfersModel::addFile(const QMap<QString, QVariant> ¶ms){ FinishedTransfersItem *item = findFile(params["TARGET"].toString()); if (!item) return; for (int i = 0; i < fileItem->columnCount(); i++){ if (file_header_table[i] == "USERS"){ QStringList users = params[file_header_table[i]].toString().split(" "); QStringList old_users = item->data(i).toString().split(" "); if (users.isEmpty()) continue; else{ foreach (QString nick, users){ if (!old_users.contains(nick)) old_users.push_back(nick); } item->updateColumn(i, old_users.join(" ")); } } else
QVariant FinishedTransfersModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); FinishedTransfersItem *item = static_cast<FinishedTransfersItem*>(index.internalPointer()); switch(role) { case Qt::DecorationRole: // icon { if (rootItem == fileItem){ if (index.column() == COLUMN_FINISHED_NAME) return WulforUtil::getInstance()->getPixmapForFile(item->data(COLUMN_FINISHED_TARGET).toString()).scaled(16, 16); } break; } case Qt::DisplayRole: { if (rootItem == fileItem){ if (index.column() == COLUMN_FINISHED_ELAPS) return _q(Util::formatSeconds(item->data(COLUMN_FINISHED_ELAPS).toLongLong()/1000L)); else if (index.column() == COLUMN_FINISHED_SPEED) return tr("%1/s").arg(WulforUtil::formatBytes(item->data(COLUMN_FINISHED_SPEED).toLongLong())); else if (index.column() == COLUMN_FINISHED_TR) return WulforUtil::formatBytes(item->data(COLUMN_FINISHED_TR).toLongLong()); else if (index.column() == COLUMN_FINISHED_FULL) return (item->data(COLUMN_FINISHED_FULL).toBool()? "1" : "0"); } else { if (index.column() == COLUMN_FINISHED_SPEED) return _q(Util::formatSeconds(item->data(COLUMN_FINISHED_SPEED).toLongLong()/1000L)); else if (index.column() == COLUMN_FINISHED_TR) return tr("%1/s").arg(WulforUtil::formatBytes(item->data(COLUMN_FINISHED_TR).toLongLong())); else if (index.column() == COLUMN_FINISHED_USER) return WulforUtil::formatBytes(item->data(COLUMN_FINISHED_USER).toLongLong()); else if (index.column() == COLUMN_FINISHED_CRC32) return (item->data(COLUMN_FINISHED_CRC32).toBool()? "1" : "0"); } return item->data(index.column()); } case Qt::TextAlignmentRole: { break; } case Qt::ForegroundRole: { break; } case Qt::BackgroundColorRole: break; case Qt::ToolTipRole: break; } return QVariant(); }