64 lines
2.4 KiB
C++
64 lines
2.4 KiB
C++
#include "panels/DatasetListPanel.hpp"
|
|
|
|
#include <QColor>
|
|
#include <QStandardItem>
|
|
#include <QStandardItemModel>
|
|
#include <QString>
|
|
|
|
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<geopro::data::DsRow>& 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<geopro::data::DsRow>& 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
|