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