diff --git a/src/progress_dialog.cpp b/src/progress_dialog.cpp index e2ccab57..390bfc5a 100644 --- a/src/progress_dialog.cpp +++ b/src/progress_dialog.cpp @@ -1,6 +1,6 @@ #include "progress_dialog.h" -ProgressDialog::ProgressDialog(const QString& title, const QString& operation, const QString& message, QProcess* process, QWidget* parent, bool close) +ProgressDialog::ProgressDialog(const QString& title, const QString& operation, const QString& message, QProcess* process, QWidget* parent, bool close, bool trim) : QDialog(parent) { ui.setupUi(this); @@ -45,6 +45,10 @@ ProgressDialog::ProgressDialog(const QString& title, const QString& operation, c QObject::connect(process, &QProcess::readyRead, this, [=]() { QString output = process->readAll(); + if (trim) + { + output = output.trimmed(); + } ui.output->appendPlainText(output); emit outputAvailable(output); }); diff --git a/src/progress_dialog.h b/src/progress_dialog.h index b8121246..a8662808 100644 --- a/src/progress_dialog.h +++ b/src/progress_dialog.h @@ -8,7 +8,7 @@ class ProgressDialog : public QDialog Q_OBJECT public: - ProgressDialog(const QString& title, const QString& operation, const QString& message, QProcess* process, QWidget* parent = nullptr, bool close = true); + ProgressDialog(const QString& title, const QString& operation, const QString& message, QProcess* process, QWidget* parent = nullptr, bool close = true, bool trim = false); ~ProgressDialog(); void expand(); diff --git a/src/remote_widget.cpp b/src/remote_widget.cpp index 9ce83469..864c691c 100644 --- a/src/remote_widget.cpp +++ b/src/remote_widget.cpp @@ -33,6 +33,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL ui.download->setIcon(style->standardIcon(QStyle::SP_ArrowDown)); ui.getSize->setIcon(style->standardIcon(QStyle::SP_FileDialogInfoView)); ui.export_->setIcon(style->standardIcon(QStyle::SP_FileDialogDetailedView)); + ui.link->setIcon(style->standardIcon(QStyle::SP_FileLinkIcon)); ui.buttonRefresh->setDefaultAction(ui.refresh); ui.buttonMkdir->setDefaultAction(ui.mkdir); @@ -292,6 +293,25 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL model->refresh(top); }); + QObject::connect(ui.link, &QAction::triggered, this, [=]() + { + QModelIndex index = ui.tree->selectionModel()->selectedRows().front(); + + QString path = model->path(index).path(); + QString pathMsg = isLocal ? QDir::toNativeSeparators(path) : path; + + QProcess process; + UseRclonePassword(&process); + process.setProgram(GetRclone()); + process.setArguments(QStringList() << "link" << GetRcloneConf() << GetDriveSharedWithMe() << remote + ":" + path); + process.setReadChannelMode(QProcess::MergedChannels); + + ProgressDialog progress("Fetch Public Link", "Fetching link for...", pathMsg, &process, this, false, true); + progress.expand(); + progress.allowToClose(); + progress.exec(); + }); + QObject::connect(ui.upload, &QAction::triggered, this, [=]() { QModelIndex index = ui.tree->selectionModel()->selectedRows().front(); @@ -441,6 +461,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL menu.addAction(ui.stream); menu.addAction(ui.upload); menu.addAction(ui.download); + menu.addAction(ui.link); menu.exec(ui.tree->viewport()->mapToGlobal(pos)); }); diff --git a/src/remote_widget.ui b/src/remote_widget.ui index 927c1355..826530ca 100644 --- a/src/remote_widget.ui +++ b/src/remote_widget.ui @@ -305,6 +305,11 @@ Shared + + + Public Link + + buttonRefresh