diff --git a/src/plugins/cooperation/core/gui/dialogs/transferdialog.cpp b/src/plugins/cooperation/core/gui/dialogs/transferdialog.cpp index 3787a6072..f54381e9e 100644 --- a/src/plugins/cooperation/core/gui/dialogs/transferdialog.cpp +++ b/src/plugins/cooperation/core/gui/dialogs/transferdialog.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -7,6 +7,7 @@ #include #include +#include "common/commonutils.h" using namespace cooperation_core; #ifdef linux @@ -118,6 +119,10 @@ void TransferDialog::createProgressPage() font.setPixelSize(14); titleLabel->setFont(font); + fileNameLabel = new CooperationLabel(this); + fileNameLabel->setAlignment(Qt::AlignHCenter); + fileNameLabel->setFont(font); + progressBar = new QProgressBar(this); progressBar->setRange(0, 100); progressBar->setValue(1); @@ -130,6 +135,8 @@ void TransferDialog::createProgressPage() progressMsgLael->setFont(font); vLayout->addWidget(titleLabel); + vLayout->addSpacing(8); + vLayout->addWidget(fileNameLabel); vLayout->addSpacing(20); vLayout->addWidget(progressBar); vLayout->addSpacing(18); @@ -192,11 +199,14 @@ void TransferDialog::switchProgressPage(const QString &title) okBtn->setVisible(true); } -void TransferDialog::updateProgress(int value, const QString &remainTime) +void TransferDialog::updateProgress(int value, const QString &remainTime, const QString &filename) { if (progressBar->value() < value) progressBar->setValue(value); + if (!filename.isEmpty()) + fileNameLabel->setText(CommonUitls::elidedText(filename, Qt::ElideMiddle, 30)); + QString remainTimeMsg(tr("Remaining time %1 | %2%").arg(remainTime, QString::number(value))); progressMsgLael->setText(remainTimeMsg); } diff --git a/src/plugins/cooperation/core/gui/dialogs/transferdialog.h b/src/plugins/cooperation/core/gui/dialogs/transferdialog.h index eecc31bb9..a6a4f70e3 100644 --- a/src/plugins/cooperation/core/gui/dialogs/transferdialog.h +++ b/src/plugins/cooperation/core/gui/dialogs/transferdialog.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -27,7 +27,7 @@ class TransferDialog : public CooperationDialog bool isInProgress() const; public Q_SLOTS: - void updateProgress(int value, const QString &remainTime); + void updateProgress(int value, const QString &remainTime, const QString &filename = QString()); Q_SIGNALS: void cancel(); @@ -49,6 +49,7 @@ public Q_SLOTS: CooperationLabel *iconLabel { nullptr }; CooperationLabel *msgLabel { nullptr }; CooperationLabel *titleLabel { nullptr }; + CooperationLabel *fileNameLabel { nullptr }; CooperationLabel *progressMsgLael { nullptr }; QProgressBar *progressBar { nullptr }; bool result { false }; diff --git a/src/plugins/cooperation/core/proxy/cooperationdialog.cpp b/src/plugins/cooperation/core/proxy/cooperationdialog.cpp index 777bb2901..46f6d23d2 100644 --- a/src/plugins/cooperation/core/proxy/cooperationdialog.cpp +++ b/src/plugins/cooperation/core/proxy/cooperationdialog.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -6,6 +6,8 @@ #include #include +#include +#include "common/commonutils.h" using namespace cooperation_core; @@ -50,8 +52,10 @@ void ProgressWidget::setTitle(const QString &title) titleLabel->setText(title); } -void ProgressWidget::setProgress(int value, const QString &msg) +void ProgressWidget::setProgress(int value, const QString &msg, const QString &filename) { + if (!filename.isEmpty()) + fileNameLabel->setText(CommonUitls::elidedText(filename, Qt::ElideMiddle, 30)); progressBar->setValue(value); QString remainTimeMsg(tr("Remaining time %1 | %2%").arg(msg, QString::number(value))); msgLabel->setText(remainTimeMsg); @@ -60,8 +64,14 @@ void ProgressWidget::setProgress(int value, const QString &msg) void ProgressWidget::init() { titleLabel = new CooperationLabel(this); + fileNameLabel = new CooperationLabel(this); msgLabel = new CooperationLabel(this); + QFont font; + font.setWeight(QFont::DemiBold); + font.setPixelSize(14); + fileNameLabel->setFont(font); + progressBar = new QProgressBar(this); progressBar->setRange(0, 100); progressBar->setTextVisible(false); @@ -72,6 +82,7 @@ void ProgressWidget::init() QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->addWidget(titleLabel, 1, Qt::AlignHCenter); + mainLayout->addWidget(fileNameLabel, 1, Qt::AlignHCenter); mainLayout->addWidget(progressBar, 1); mainLayout->addWidget(msgLabel, 1, Qt::AlignHCenter); mainLayout->addWidget(cancelBtn, 1); @@ -151,9 +162,9 @@ void CooperationTransDialog::showProgressDialog(const QString &title) setHidden(false); } -void CooperationTransDialog::updateProgressData(int value, const QString &msg) +void CooperationTransDialog::updateProgressData(int value, const QString &msg, const QString &filename) { - progressWidget->setProgress(value, msg); + progressWidget->setProgress(value, msg, filename); } void CooperationTransDialog::closeEvent(QCloseEvent *e) diff --git a/src/plugins/cooperation/core/proxy/cooperationdialog.h b/src/plugins/cooperation/core/proxy/cooperationdialog.h index fa0991e5a..9cc4b1e64 100644 --- a/src/plugins/cooperation/core/proxy/cooperationdialog.h +++ b/src/plugins/cooperation/core/proxy/cooperationdialog.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -41,7 +41,7 @@ class ProgressWidget : public QWidget explicit ProgressWidget(QWidget *parent = nullptr); void setTitle(const QString &title); - void setProgress(int value, const QString &msg); + void setProgress(int value, const QString &msg, const QString &filename = QString()); Q_SIGNALS: void canceled(); @@ -50,6 +50,7 @@ class ProgressWidget : public QWidget void init(); CooperationLabel *titleLabel { nullptr }; + CooperationLabel *fileNameLabel { nullptr }; CooperationLabel *msgLabel { nullptr }; QProgressBar *progressBar { nullptr }; QPushButton *cancelBtn { nullptr }; @@ -85,7 +86,7 @@ class CooperationTransDialog : public QDialog void showConfirmDialog(const QString &name); void showResultDialog(bool success, const QString &msg); void showProgressDialog(const QString &title); - void updateProgressData(int value, const QString &msg); + void updateProgressData(int value, const QString &msg, const QString &filename = QString()); protected: void closeEvent(QCloseEvent *e) override; diff --git a/src/plugins/cooperation/core/proxy/cooperationproxy.cpp b/src/plugins/cooperation/core/proxy/cooperationproxy.cpp index 75568d6e1..bda66e3f7 100644 --- a/src/plugins/cooperation/core/proxy/cooperationproxy.cpp +++ b/src/plugins/cooperation/core/proxy/cooperationproxy.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -17,6 +17,7 @@ #include "ipc/proto/backend.h" #include +#include #include #include #include @@ -148,7 +149,8 @@ void CooperationProxy::onFileTransStatusChanged(const QString &status) LOG_IF(FLG_log_detail) << "progressbar: " << progressValue << " remain_time=" << remain_time; LOG_IF(FLG_log_detail) << "totalSize: " << transferInfo.totalSize << " transferSize=" << transferInfo.transferSize; - updateProgress(progressValue, time.toString("hh:mm:ss")); + QString fileName = QFileInfo(QString(param.name.c_str())).fileName(); + updateProgress(progressValue, time.toString("hh:mm:ss"), fileName); } void CooperationProxy::onConfirmTimeout() @@ -347,9 +349,9 @@ void CooperationProxy::showTransResult(bool success, const QString &msg) cooperationDialog()->showResultDialog(success, msg); } -void CooperationProxy::updateProgress(int value, const QString &msg) +void CooperationProxy::updateProgress(int value, const QString &msg, const QString &filename) { static QString title(tr("Receiving files from \"%1\"")); cooperationDialog()->showProgressDialog(title.arg(CommonUitls::elidedText(fromWho, Qt::ElideMiddle, 15))); - cooperationDialog()->updateProgressData(value, msg); + cooperationDialog()->updateProgressData(value, msg, filename); } diff --git a/src/plugins/cooperation/core/proxy/cooperationproxy.h b/src/plugins/cooperation/core/proxy/cooperationproxy.h index 9276b2929..5c02a9cf4 100644 --- a/src/plugins/cooperation/core/proxy/cooperationproxy.h +++ b/src/plugins/cooperation/core/proxy/cooperationproxy.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -57,7 +57,7 @@ public Q_SLOTS: CooperationTransDialog *cooperationDialog(); void showTransResult(bool success, const QString &msg); - void updateProgress(int value, const QString &msg); + void updateProgress(int value, const QString &msg, const QString &filename = QString()); private: FrontendService *frontendIpcSer { nullptr }; diff --git a/src/plugins/cooperation/core/transfer/transferhelper.cpp b/src/plugins/cooperation/core/transfer/transferhelper.cpp index 014150edf..6417cae7d 100644 --- a/src/plugins/cooperation/core/transfer/transferhelper.cpp +++ b/src/plugins/cooperation/core/transfer/transferhelper.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -199,11 +200,11 @@ void TransferHelperPrivate::transferResult(bool result, const QString &msg) reportTransferResult(result); } -void TransferHelperPrivate::updateProgress(int value, const QString &remainTime) +void TransferHelperPrivate::updateProgress(int value, const QString &remainTime, const QString &filename) { QString title = tr("Sending files to \"%1\"").arg(CommonUitls::elidedText(sendToWho, Qt::ElideMiddle, 15)); transDialog()->switchProgressPage(title); - transDialog()->updateProgress(value, remainTime); + transDialog()->updateProgress(value, remainTime, filename); } void TransferHelperPrivate::reportTransferResult(bool result) @@ -439,7 +440,8 @@ void TransferHelper::onFileTransStatusChanged(const QString &status) LOG_IF(FLG_log_detail) << "progressbar: " << progressValue << " remain_time=" << remain_time; LOG_IF(FLG_log_detail) << "totalSize: " << d->transferInfo.totalSize << " transferSize=" << d->transferInfo.transferSize; - d->updateProgress(progressValue, time.toString("hh:mm:ss")); + QString fileName = QFileInfo(QString(param.name.c_str())).fileName(); + d->updateProgress(progressValue, time.toString("hh:mm:ss"), fileName); } void TransferHelper::waitForConfirm() diff --git a/src/plugins/cooperation/core/transfer/transferhelper_p.h b/src/plugins/cooperation/core/transfer/transferhelper_p.h index c752966fc..1e26e41ad 100644 --- a/src/plugins/cooperation/core/transfer/transferhelper_p.h +++ b/src/plugins/cooperation/core/transfer/transferhelper_p.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -51,7 +51,7 @@ class TransferHelperPrivate : public QObject void handleSearchDevice(const QString &ip); void transferResult(bool result, const QString &msg); - void updateProgress(int value, const QString &remainTime); + void updateProgress(int value, const QString &remainTime, const QString &filename = QString()); void reportTransferResult(bool result); diff --git a/src/plugins/cooperation/daemon/maincontroller/maincontroller.cpp b/src/plugins/cooperation/daemon/maincontroller/maincontroller.cpp index b7ebb6ee1..c26a01cf1 100644 --- a/src/plugins/cooperation/daemon/maincontroller/maincontroller.cpp +++ b/src/plugins/cooperation/daemon/maincontroller/maincontroller.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -88,13 +89,15 @@ void MainController::transferResult(bool result, const QString &msg) recvNotifyId = notifyMessage(recvNotifyId, msg, actions, {}, 3 * 1000); } -void MainController::updateProgress(int value, const QString &remainTime) +void MainController::updateProgress(int value, const QString &remainTime, const QString &filename) { // 在通知中心中,如果通知内容包含“%”且actions中存在“cancel”,则不会在通知中心显示 QStringList actions { NotifyCancelAction, tr("Cancel") }; // dde-session-ui 5.7.2.2 版本后,支持设置该属性使消息不进通知中心 QVariantMap hitMap { { "x-deepin-ShowInNotifyCenter", false } }; QString msg(tr("File receiving %1% | Remaining time %2").arg(QString::number(value), remainTime)); + if (!filename.isEmpty()) + msg = tr("%1 | File receiving %2% | Remaining time %3").arg(filename, QString::number(value), remainTime); recvNotifyId = notifyMessage(recvNotifyId, msg, actions, hitMap, 15 * 1000); } @@ -283,7 +286,8 @@ void MainController::onFileTransStatusChanged(const QString &status) LOG_IF(FLG_log_detail) << "progressbar: " << progressValue << " remain_time=" << remain_time; LOG_IF(FLG_log_detail) << "totalSize: " << transferInfo.totalSize << " transferSize=" << transferInfo.transferSize; - updateProgress(progressValue, time.toString("hh:mm:ss")); + QString fileName = QFileInfo(QString(param.name.c_str())).fileName(); + updateProgress(progressValue, time.toString("hh:mm:ss"), fileName); } void MainController::onConfirmTimeout() diff --git a/src/plugins/cooperation/daemon/maincontroller/maincontroller.h b/src/plugins/cooperation/daemon/maincontroller/maincontroller.h index 6ffdbb8ef..eaac089c0 100644 --- a/src/plugins/cooperation/daemon/maincontroller/maincontroller.h +++ b/src/plugins/cooperation/daemon/maincontroller/maincontroller.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -51,7 +51,7 @@ public Q_SLOTS: uint notifyMessage(uint replacesId, const QString &body, const QStringList &actions, QVariantMap hitMap, int expireTimeout); void transferResult(bool result, const QString &msg); - void updateProgress(int value, const QString &remainTime); + void updateProgress(int value, const QString &remainTime, const QString &filename = QString()); void openFileLocation(const QString &path); private: