karlis 2023-07-07 01:02:50 +08:00
commit 5928e49884
8 changed files with 80 additions and 36 deletions

View File

@ -102,6 +102,7 @@ FluWindow {
target: SignalFileOperation target: SignalFileOperation
function onOpen(file) { function onOpen(file) {
stack_view.clear() stack_view.clear()
UserData.viewHistory.push(file)
stack_view.push(file_view, { stack_view.push(file_view, {
"knowledgeFileId": file "knowledgeFileId": file
}) })

View File

@ -5,6 +5,7 @@ import QtQuick.Layouts
import Qt5Compat.GraphicalEffects import Qt5Compat.GraphicalEffects
import FluentUI import FluentUI
import AicsKB.FileTransferManager import AicsKB.FileTransferManager
import "qrc:///AicsKnowledgeBase/qml/global"
Popup { Popup {
id: transfer_popup id: transfer_popup
@ -18,6 +19,15 @@ Popup {
FluShadow {} FluShadow {}
} }
Connections {
target: FileTransferManager
onTransferComplete: (download, fileId, fileName) => {
console.log("onTransferComplete")
UserData.downloadedFiles.push(fileId)
console.log(UserData.downloadedFiles)
}
}
contentItem: FluScrollablePage { contentItem: FluScrollablePage {
anchors.fill: parent anchors.fill: parent
anchors.topMargin: 10 anchors.topMargin: 10
@ -30,42 +40,65 @@ Popup {
Layout.fillWidth: true Layout.fillWidth: true
height: 50 height: 50
ColumnLayout { Item {
anchors.fill: parent anchors.fill: parent
anchors.margins: 5 anchors.topMargin: 5
spacing: 2 anchors.bottomMargin: 5
Text { anchors.leftMargin: 0
text: name Image {
id: icon
anchors.verticalCenter: parent.verticalCenter
width: 32
height: 32
source: download ? "qrc:/AicsKnowledgeBase/res/download.png" : "qrc:/AicsKnowledgeBase/res/upload.png"
} }
FluProgressBar { ColumnLayout {
Layout.fillWidth: true anchors.left: icon.right
progress: completedSize / totalSize anchors.right: parent.right
indeterminate: false anchors.leftMargin: 5
} spacing: 2
Text {
text: name
}
Text {
visible: completedSize >= totalSize
text: "已完成"
color: FluColors.Grey130
}
FluProgressBar {
Layout.fillWidth: true
progress: completedSize / totalSize
indeterminate: false
visible: completedSize < totalSize
}
Text { Text {
color: FluColors.Grey130 visible: completedSize < totalSize
text: formatSize(speed) + "/s - " + formatSize( color: FluColors.Grey130
completedSize) + "/" + formatSize( text: formatSize(speed) + "/s - " + formatSize(
totalSize) completedSize) + "/" + formatSize(
totalSize)
/** /**
* , * ,
* @param {Number} size * @param {Number} size
* @param {Number} [pointLength=1] * @param {Number} [pointLength=1]
* @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]]
* K()M, K. * K()M, K.
*/ */
function formatSize(size, pointLength, units) { function formatSize(size, pointLength, units) {
var unit var unit
units = units || ['B', 'KB', 'MB', 'GB', 'TB'] units = units
while ((unit = units.shift()) && size > 1024) { || ['B', 'KB', 'MB', 'GB', 'TB']
size = size / 1024 while ((unit = units.shift())
&& size > 1024) {
size = size / 1024
}
return (unit === 'B' ? size : size.toFixed(
pointLength === undefined ? 1 : pointLength)) + ' ' + unit
} }
return (unit === 'B' ? size : size.toFixed(
pointLength === undefined ? 1 : pointLength)) + ' ' + unit
} }
} }
} }
@ -73,7 +106,10 @@ Popup {
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
hoverEnabled: true hoverEnabled: true
onEntered: file_buttons.visible = true onEntered: {
if (completedSize < totalSize)
file_buttons.visible = true
}
onExited: file_buttons.visible = false onExited: file_buttons.visible = false
LinearGradient { LinearGradient {

View File

@ -5,4 +5,6 @@ import QtQuick
QtObject { QtObject {
property string username property string username
property string userId property string userId
property var viewHistory: []
property var downloadedFiles: []
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -10,6 +10,8 @@ FileTransferListModel::FileTransferListModel(QObject *parent)
m_roleName.insert(kTotalSizeRole, "totalSize"); m_roleName.insert(kTotalSizeRole, "totalSize");
m_roleName.insert(kSpeedRole, "speed"); m_roleName.insert(kSpeedRole, "speed");
m_roleName.insert(kPausedRole, "paused"); m_roleName.insert(kPausedRole, "paused");
m_data.append({true, "id", "name", 30, 100, 30});
} }

View File

@ -73,8 +73,8 @@ static int xferinfo(void *p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ul
fileTrans->completedSize += dlnow; fileTrans->completedSize += dlnow;
fileTrans->speed = speed; fileTrans->speed = speed;
qDebug() << std::format("Downloading: {} / {}, Speed: {}", fileTrans->completedSize, fileTrans->totalSize, //qDebug() << std::format("Downloading: {} / {}, Speed: {}", fileTrans->completedSize, fileTrans->totalSize,
speed).c_str(); // speed).c_str();
auto item = static_cast<FileItem>(*fileTrans); auto item = static_cast<FileItem>(*fileTrans);
QTimer::singleShot(0, qApp, [item]() { QTimer::singleShot(0, qApp, [item]() {
@ -96,8 +96,8 @@ static int uploadInfo(void *p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t
curl_easy_getinfo(fileTrans->curlHandle, CURLINFO_SPEED_UPLOAD_T, &speed); curl_easy_getinfo(fileTrans->curlHandle, CURLINFO_SPEED_UPLOAD_T, &speed);
fileTrans->completedSize += ulnow; fileTrans->completedSize += ulnow;
fileTrans->speed = speed; fileTrans->speed = speed;
qDebug() << std::format("Uploading: {} / {}, Speed: {}", fileTrans->completedSize, fileTrans->totalSize, //qDebug() << std::format("Uploading: {} / {}, Speed: {}", fileTrans->completedSize, fileTrans->totalSize,
speed).c_str(); // speed).c_str();
auto item = static_cast<FileItem>(*fileTrans); auto item = static_cast<FileItem>(*fileTrans);
QTimer::singleShot(0, qApp, [item]() { QTimer::singleShot(0, qApp, [item]() {
@ -359,6 +359,10 @@ void FileTransferManager::download(const QString &fileId, const QString &fileNam
auto fileUrl = std::format("File/{}?rangeStart={}&rangeEnd={}", fileId.toStdString(), completedSize, size); auto fileUrl = std::format("File/{}?rangeStart={}&rangeEnd={}", fileId.toStdString(), completedSize, size);
auto res = httpDownload(fileUrl, savePath, item); auto res = httpDownload(fileUrl, savePath, item);
if (QFileInfo(QString::fromLocal8Bit(savePath.c_str())).size() == size)
emit transferComplete(true, fileId, fileName);
qDebug() << "End Get" << res; qDebug() << "End Get" << res;
}); });
} }
@ -398,8 +402,6 @@ QString FileTransferManager::getFileName(const QUrl &fileUrl)
} }
void FileTransferManager::getMarkdown(const QString &fileId) void FileTransferManager::getMarkdown(const QString &fileId)
{ {
QtConcurrent::run([fileId, this] { QtConcurrent::run([fileId, this] {

View File

@ -33,6 +33,7 @@ public:
Q_INVOKABLE void getMarkdown(const QString &fileId); Q_INVOKABLE void getMarkdown(const QString &fileId);
signals: signals:
void transferComplete(bool download, QString fileId, QString fileName);
void markdownData(QString data); void markdownData(QString data);
private: private: