#include "panels/DatasetListPanel.hpp" #include #include #include #include namespace geopro::app { namespace { QString humanSize(long long b) { if (b < 1024) return QStringLiteral("%1 B").arg(b); const double kb = b / 1024.0; if (kb < 1024.0) return QStringLiteral("%1 KB").arg(kb, 0, 'f', 1); return QStringLiteral("%1 MB").arg(kb / 1024.0, 0, 'f', 1); } } // namespace void populateDatasetList(QStandardItemModel* model, const std::vector& rows, bool append) { if (!model) return; if (!append) model->clear(); for (const auto& d : rows) { QString text = QString::fromStdString(d.dsName); QString sub = QString::fromStdString(d.createTime); // 名称下先创建时间 if (!d.typeName.empty()) sub += QStringLiteral(" · %1").arg(QString::fromStdString(d.typeName)); // 再跟类型 if (!sub.isEmpty()) text += QStringLiteral("\n%1").arg(sub); auto* item = new QStandardItem(text); item->setEditable(false); item->setData(QString::fromStdString(d.id), kDsIdRole); item->setData(QString::fromStdString(d.ddCode), kDsDdTypeRole); model->appendRow(item); } } void populateFileList(QStandardItemModel* model, const std::vector& rows, bool append) { if (!model) return; if (!append) model->clear(); if (!append && rows.empty()) { auto* hint = new QStandardItem(QStringLiteral("(暂无文件)")); hint->setFlags(Qt::NoItemFlags); hint->setForeground(QColor("#9AA6B6")); hint->setTextAlignment(Qt::AlignCenter); model->appendRow(hint); return; } for (const auto& d : rows) { const QString fname = d.fileName.empty() ? QString::fromStdString(d.dsName) : QString::fromStdString(d.fileName); QString sub = QString::fromStdString(d.createTime); // 名称下先创建时间 sub += QStringLiteral(" · %1").arg(humanSize(d.fileSize)); // 再跟大小 const QString text = fname + QStringLiteral("\n%1").arg(sub); auto* item = new QStandardItem(text); item->setEditable(false); item->setData(QString::fromStdString(d.id), kDsIdRole); item->setData(QString::fromStdString(d.fileUrl), kDsFileUrlRole); model->appendRow(item); } } } // namespace geopro::app