Skip to content
This repository has been archived by the owner on Sep 1, 2019. It is now read-only.

Commit

Permalink
allows to specify custom .rclone.conf location
Browse files Browse the repository at this point in the history
closes #21
  • Loading branch information
mmozeiko committed Feb 26, 2017
1 parent f011df9 commit 568494c
Show file tree
Hide file tree
Showing 9 changed files with 94 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/item_model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -610,8 +610,8 @@ void ItemModel::load(const QPersistentModelIndex& parentIndex, Item* parent)
timer->start(100);
UseRclonePassword(lsd);
UseRclonePassword(lsl);
lsd->start(GetRclone(), QStringList() << "lsd" << mRemote + ":" + parent->path.path(), QIODevice::ReadOnly);
lsl->start(GetRclone(), QStringList() << "lsl" << "--max-depth" << "1" << mRemote + ":" + parent->path.path(), QIODevice::ReadOnly);
lsd->start(GetRclone(), QStringList() << "lsd" << GetRcloneConf() << mRemote + ":" + parent->path.path(), QIODevice::ReadOnly);
lsl->start(GetRclone(), QStringList() << "lsl" << GetRcloneConf() << "--max-depth" << "1" << mRemote + ":" + parent->path.path(), QIODevice::ReadOnly);
}

void ItemModel::sortRecursive(Item* item, const ItemSorter& sorter)
Expand Down
5 changes: 3 additions & 2 deletions src/job_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
JobWidget::JobWidget(QProcess* process, const QString& info, const QStringList& args, const QString& source, const QString& dest, QWidget* parent)
: QWidget(parent)
, mProcess(process)
, mArgs(args)
{
ui.setupUi(this);

mArgs.prepend(QDir::toNativeSeparators(GetRclone()));
mArgs.append(QDir::toNativeSeparators(GetRclone()));
mArgs.append(GetRcloneConf());
mArgs.append(args);

ui.source->setText(source);
ui.dest->setText(dest);
Expand Down
26 changes: 15 additions & 11 deletions src/main_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ MainWindow::MainWindow()
restoreGeometry(settings.value("MainWindow/geometry").toByteArray());
}
SetRclone(settings.value("Settings/rclone").toString());
SetRcloneConf(settings.value("Settings/rcloneConf").toString());

mAlwaysShowInTray = settings.value("Settings/alwaysShowInTray", false).toBool();
mCloseToTray = settings.value("Settings/closeToTray", false).toBool();
Expand All @@ -36,6 +37,7 @@ MainWindow::MainWindow()
{
QSettings settings;
settings.setValue("Settings/rclone", dialog.getRclone().trimmed());
settings.setValue("Settings/rcloneConf", dialog.getRcloneConf().trimmed());
settings.setValue("Settings/stream", dialog.getStream());
#ifndef Q_OS_WIN32
settings.setValue("Settings/mount", dialog.getMount());
Expand All @@ -47,6 +49,7 @@ MainWindow::MainWindow()
settings.setValue("Settings/showFileIcons", dialog.getShowFileIcons());
settings.setValue("Settings/rowColors", dialog.getRowColors());
SetRclone(dialog.getRclone());
SetRcloneConf(dialog.getRcloneConf());
mFirstTime = true;
rcloneGetVersion();

Expand Down Expand Up @@ -254,11 +257,11 @@ void MainWindow::rcloneConfig()
args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
});
p->setProgram(GetRclone());
p->setArguments(QStringList() << "config");
p->setArguments(QStringList() << "config" << GetRcloneConf());
#elif defined(Q_OS_OSX)
auto tmp = new QFile("/tmp/rclone_config.command");
tmp->open(QIODevice::WriteOnly);
QTextStream(tmp) << "#!/bin/sh\n" << GetRclone() << " config" << "\n";
QTextStream(tmp) << "#!/bin/sh\n" << GetRclone() << " config" << GetRcloneConf().join(" ") << "\n";
tmp->close();
tmp->setPermissions(
QFileDevice::ReadUser | QFileDevice::WriteUser | QFileDevice::ExeUser |
Expand All @@ -282,7 +285,7 @@ void MainWindow::rcloneConfig()
}

p->setProgram(terminal);
p->setArguments(QStringList() << "-e" << (GetRclone() + " config"));
p->setArguments(QStringList() << "-e" << (GetRclone() + " config" + GetRcloneConf().join(" ")));
#endif
UseRclonePassword(p);
p->start(QIODevice::NotOpen);
Expand Down Expand Up @@ -344,7 +347,7 @@ void MainWindow::rcloneListRemotes()
});

UseRclonePassword(p);
p->start(GetRclone(), QStringList() << "listremotes" << "-l" << "--ask-password=false", QIODevice::ReadOnly);
p->start(GetRclone(), QStringList() << "listremotes" << GetRcloneConf() << "-l" << "--ask-password=false", QIODevice::ReadOnly);
}

bool MainWindow::getConfigPassword(QProcess* p)
Expand Down Expand Up @@ -494,7 +497,7 @@ void MainWindow::addTransfer(const QString& message, const QString& source, cons
ui.tabs->setTabText(1, QString("Jobs (%1)").arg(++mJobCount));

UseRclonePassword(transfer);
transfer->start(GetRclone(), args, QIODevice::ReadOnly);
transfer->start(GetRclone(), GetRcloneConf() + args, QIODevice::ReadOnly);
}

void MainWindow::addMount(const QString& remote, const QString& folder)
Expand Down Expand Up @@ -544,16 +547,17 @@ void MainWindow::addMount(const QString& remote, const QString& folder)
QSettings settings;
QString opt = settings.value("Settings/mount").toString();

QStringList options;
options << "mount";
QStringList args;
args << "mount";
args.append(GetRcloneConf());
if (!opt.isEmpty())
{
options.append(opt.split(' '));
args.append(opt.split(' '));
}
options << remote << folder;
args << remote << folder;

UseRclonePassword(mount);
mount->start(GetRclone(), options, QIODevice::ReadOnly);
mount->start(GetRclone(), args, QIODevice::ReadOnly);
}

void MainWindow::addStream(const QString& remote, const QString& stream)
Expand Down Expand Up @@ -614,5 +618,5 @@ void MainWindow::addStream(const QString& remote, const QString& stream)

player->start(stream, QProcess::ReadOnly);
UseRclonePassword(rclone);
rclone->start(GetRclone(), QStringList() << "cat" << remote, QProcess::WriteOnly);
rclone->start(GetRclone(), QStringList() << "cat" << GetRcloneConf() << remote, QProcess::WriteOnly);
}
17 changes: 17 additions & 0 deletions src/preferences_dialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,20 @@ PreferencesDialog::PreferencesDialog(QWidget* parent)
ui.rclone->setText(rclone);
});

QObject::connect(ui.rcloneConfBrowse, &QPushButton::clicked, this, [=]()
{
QString rcloneConf = QFileDialog::getOpenFileName(this, "Select .rclone.conf location", ui.rcloneConf->text());
if (rcloneConf.isEmpty())
{
return;
}

ui.rcloneConf->setText(rcloneConf);
});

QSettings settings;
ui.rclone->setText(QDir::toNativeSeparators(settings.value("Settings/rclone").toString()));
ui.rcloneConf->setText(QDir::toNativeSeparators(settings.value("Settings/rcloneConf").toString()));
ui.stream->setText(settings.value("Settings/stream").toString());
ui.showFolderIcons->setChecked(settings.value("Settings/showFolderIcons", true).toBool());
if (QSystemTrayIcon::isSystemTrayAvailable())
Expand Down Expand Up @@ -68,6 +80,11 @@ QString PreferencesDialog::getRclone() const
return QDir::fromNativeSeparators(ui.rclone->text());
}

QString PreferencesDialog::getRcloneConf() const
{
return QDir::fromNativeSeparators(ui.rcloneConf->text());
}

QString PreferencesDialog::getStream() const
{
return ui.stream->text();
Expand Down
1 change: 1 addition & 0 deletions src/preferences_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class PreferencesDialog : public QDialog
~PreferencesDialog();

QString getRclone() const;
QString getRcloneConf() const;
QString getStream() const;
QString getMount() const;

Expand Down
47 changes: 33 additions & 14 deletions src/preferences_dialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>475</width>
<height>381</height>
<height>407</height>
</rect>
</property>
<property name="windowTitle">
Expand All @@ -20,6 +20,13 @@
<string>Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="2">
<widget class="QToolButton" name="rcloneBrowse">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_1">
<property name="text">
Expand All @@ -30,20 +37,16 @@
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="rcloneBrowse">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="2" column="1">
<widget class="QLineEdit" name="stream"/>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="mount"/>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="rclone"/>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QLabel" name="mountLabel">
<property name="text">
<string>Mount options:</string>
Expand All @@ -53,10 +56,7 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="mount"/>
</item>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Stream command:</string>
Expand All @@ -66,6 +66,23 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>.rclone.conf location:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="rcloneConf"/>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="rcloneConfBrowse">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down Expand Up @@ -182,6 +199,8 @@
<tabstops>
<tabstop>rclone</tabstop>
<tabstop>rcloneBrowse</tabstop>
<tabstop>rcloneConf</tabstop>
<tabstop>rcloneConfBrowse</tabstop>
<tabstop>stream</tabstop>
<tabstop>mount</tabstop>
<tabstop>alwaysShowInTray</tabstop>
Expand Down
7 changes: 4 additions & 3 deletions src/remote_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL
QProcess process;
UseRclonePassword(&process);
process.setProgram(GetRclone());
process.setArguments(QStringList() << "mkdir" << remote + ":" + folder);
process.setArguments(QStringList() << "mkdir" << GetRcloneConf() << remote + ":" + folder);
process.setReadChannelMode(QProcess::MergedChannels);

ProgressDialog progress("New Folder", "Creating...", folderMsg, &process, this);
Expand All @@ -151,6 +151,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL
process.setProgram(GetRclone());
process.setArguments(QStringList()
<< "move"
<< GetRcloneConf()
<< remote + ":" + path
<< remote + ":" + model->path(index.parent()).filePath(name));
process.setReadChannelMode(QProcess::MergedChannels);
Expand All @@ -176,7 +177,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL
QProcess process;
UseRclonePassword(&process);
process.setProgram(GetRclone());
process.setArguments(QStringList() << (model->isFolder(index) ? "purge" : "delete") << remote + ":" + path);
process.setArguments(QStringList() << (model->isFolder(index) ? "purge" : "delete") << GetRcloneConf() << remote + ":" + path);
process.setReadChannelMode(QProcess::MergedChannels);

ProgressDialog progress("Delete", "Deleting...", pathMsg, &process, this);
Expand Down Expand Up @@ -275,7 +276,7 @@ RemoteWidget::RemoteWidget(IconCache* iconCache, const QString& remote, bool isL
QProcess process;
UseRclonePassword(&process);
process.setProgram(GetRclone());
process.setArguments(QStringList() << "size" << remote + ":" + path);
process.setArguments(QStringList() << "size" << GetRcloneConf() << remote + ":" + path);
process.setReadChannelMode(QProcess::MergedChannels);

ProgressDialog progress("Get Size", "Calculating...", pathMsg, &process, this, false);
Expand Down
16 changes: 16 additions & 0 deletions src/utils.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "utils.h"

static QString gRclone;
static QString gRcloneConf;
static QString gRclonePassword;

void ReadSettings(QSettings* settings, QObject* widget)
Expand Down Expand Up @@ -100,6 +101,21 @@ void WriteSettings(QSettings* settings, QObject* widget)
}
}

QStringList GetRcloneConf()
{
if (gRcloneConf.isEmpty())
{
return QStringList();
}

return QStringList() << "--config" << gRcloneConf;
}

void SetRcloneConf(const QString& rcloneConf)
{
gRcloneConf = rcloneConf;
}

QString GetRclone()
{
return gRclone;
Expand Down
3 changes: 3 additions & 0 deletions src/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@ void WriteSettings(QSettings* settings, QObject* widget);
QString GetRclone();
void SetRclone(const QString& rclone);

QStringList GetRcloneConf();
void SetRcloneConf(const QString& rcloneConf);

void UseRclonePassword(QProcess* process);
void SetRclonePassword(const QString& rclonePassword);

0 comments on commit 568494c

Please sign in to comment.