Skip to content

Commit

Permalink
Add a Public Link option to the right-click menu.
Browse files Browse the repository at this point in the history
The link doens't have a newline at the end, so you can
triple-click to select it.
  • Loading branch information
DinCahill committed Nov 22, 2018
1 parent d7299ee commit 8f2b5a9
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/progress_dialog.cpp
Original file line number Diff line number Diff line change
@@ -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);
Expand Down Expand Up @@ -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);
});
Expand Down
2 changes: 1 addition & 1 deletion src/progress_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
21 changes: 21 additions & 0 deletions src/remote_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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));
});

Expand Down
5 changes: 5 additions & 0 deletions src/remote_widget.ui
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,11 @@
<string>Shared</string>
</property>
</action>
<action name="link">
<property name="text">
<string>Public Link</string>
</property>
</action>
</widget>
<tabstops>
<tabstop>buttonRefresh</tabstop>
Expand Down

0 comments on commit 8f2b5a9

Please sign in to comment.