Allow showing remote file browser from Plasmoid
This commit is contained in:
parent
bc6db82b6b
commit
38eb689b69
|
@ -363,6 +363,11 @@ QString SyncthingApplet::substituteTilde(const QString &path) const
|
|||
return Data::substituteTilde(path, m_connection.tilde(), m_connection.pathSeparator());
|
||||
}
|
||||
|
||||
bool SyncthingApplet::areWipFeaturesEnabled() const
|
||||
{
|
||||
return Settings::values().enableWipFeatures;
|
||||
}
|
||||
|
||||
void SyncthingApplet::showSettingsDlg()
|
||||
{
|
||||
if (!m_settingsDlg) {
|
||||
|
@ -517,6 +522,19 @@ void SyncthingApplet::showDirectoryErrors(const QString &dirId)
|
|||
dlg->show();
|
||||
}
|
||||
|
||||
void SyncthingApplet::browseRemoteFiles(const QString &dirId)
|
||||
{
|
||||
auto row = 0;
|
||||
auto *const dir = m_connection.findDirInfo(dirId, row);
|
||||
if (!dir) {
|
||||
return;
|
||||
}
|
||||
auto *const dlg = QtGui::browseRemoteFilesDialog(m_connection, *dir);
|
||||
dlg->resize(600, 500);
|
||||
centerWidget(dlg);
|
||||
dlg->show();
|
||||
}
|
||||
|
||||
void SyncthingApplet::copyToClipboard(const QString &text)
|
||||
{
|
||||
QGuiApplication::clipboard()->setText(text);
|
||||
|
|
|
@ -86,6 +86,7 @@ class SyncthingApplet : public Plasma::Applet {
|
|||
Q_PROPERTY(bool passive READ isPassive NOTIFY passiveChanged)
|
||||
Q_PROPERTY(QList<QtUtilities::ChecklistItem> passiveStates READ passiveStates WRITE setPassiveStates)
|
||||
Q_PROPERTY(QString faUrl READ faUrl NOTIFY faUrlChanged)
|
||||
Q_PROPERTY(bool wipFeaturesEnabled READ areWipFeaturesEnabled NOTIFY wipFeaturesEnabledChanged)
|
||||
|
||||
public:
|
||||
SyncthingApplet(QObject *parent, const QVariantList &data);
|
||||
|
@ -132,6 +133,7 @@ public:
|
|||
Q_INVOKABLE QIcon loadForkAwesomeIcon(const QString &name, int size = 32) const;
|
||||
Q_INVOKABLE QString formatFileSize(quint64 fileSizeInByte) const;
|
||||
Q_INVOKABLE QString substituteTilde(const QString &path) const;
|
||||
bool areWipFeaturesEnabled() const;
|
||||
|
||||
public Q_SLOTS:
|
||||
void init() override;
|
||||
|
@ -146,6 +148,7 @@ public Q_SLOTS:
|
|||
void dismissNotifications();
|
||||
void showInternalErrorsDialog();
|
||||
void showDirectoryErrors(const QString &dirId);
|
||||
void browseRemoteFiles(const QString &dirId);
|
||||
void copyToClipboard(const QString &text);
|
||||
void updateStatusIconAndTooltip();
|
||||
void saveSettings();
|
||||
|
@ -177,6 +180,8 @@ Q_SIGNALS:
|
|||
void notificationsAvailableChanged(bool notificationsAvailable);
|
||||
void passiveChanged(bool passive);
|
||||
void faUrlChanged(const QString &faUrl);
|
||||
/// \remarks Never emitted, just to silence "... depends on non-NOTIFYable ..."
|
||||
void wipFeaturesEnabledChanged();
|
||||
|
||||
private Q_SLOTS:
|
||||
void handleSettingsChanged();
|
||||
|
|
|
@ -38,6 +38,7 @@ ColumnLayout {
|
|||
delegate: TopLevelItem {
|
||||
id: item
|
||||
width: directoryView.effectiveWidth()
|
||||
readonly property string dirId_: dirId
|
||||
readonly property string dirName: name
|
||||
readonly property string dirPath: path
|
||||
property alias errorsButton: errorsButton
|
||||
|
@ -141,7 +142,7 @@ ColumnLayout {
|
|||
|
||||
function init(item) {
|
||||
// use value for properties depending on paused state from buttons
|
||||
rescanItem.enabled = item.rescanButton.enabled
|
||||
rescanItem.enabled = browseRemoteFilesItem.enabled = item.rescanButton.enabled
|
||||
resumePauseItem.text = item.resumePauseButton.tooltip
|
||||
resumePauseItem.icon = item.resumePauseButton.icon
|
||||
}
|
||||
|
@ -180,6 +181,14 @@ ColumnLayout {
|
|||
onClicked: directoryView.clickCurrentItemButton(
|
||||
"openButton")
|
||||
}
|
||||
PlasmaExtras.MenuItem {
|
||||
id: browseRemoteFilesItem
|
||||
text: qsTr("Browse remote files")
|
||||
icon: "document-open-remote"
|
||||
onClicked: directoryView.triggerNativeActionWithCurrentItemData(
|
||||
"browseRemoteFiles", "dirId_")
|
||||
visible: plasmoid.wipFeaturesEnabled
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,16 +42,20 @@ ListView {
|
|||
}
|
||||
}
|
||||
|
||||
function copyCurrentItemData(fieldName) {
|
||||
function triggerNativeActionWithCurrentItemData(actionName, fieldName) {
|
||||
if (!currentItem) {
|
||||
return
|
||||
}
|
||||
var data = currentItem[fieldName]
|
||||
const data = currentItem[fieldName]
|
||||
if (data) {
|
||||
plasmoid.copyToClipboard(data)
|
||||
plasmoid[actionName](data)
|
||||
}
|
||||
}
|
||||
|
||||
function copyCurrentItemData(fieldName) {
|
||||
this.triggerNativeActionWithCurrentItemData("copyToClipboard", fieldName)
|
||||
}
|
||||
|
||||
function showContextMenu(item, x, y) {
|
||||
if (typeof contextMenu === "undefined") {
|
||||
return
|
||||
|
|
|
@ -17,8 +17,8 @@ if ! [[ $QT_PLUGIN_PATH ]]; then
|
|||
elif [ -f "$PWD"/plasmoid/lib/plasma/applets/*syncthingplasmoid*.so ]; then
|
||||
export QT_PLUGIN_PATH=$PWD/plasmoid/lib
|
||||
fi
|
||||
echo "QT_PLUGIN_PATH used for Plasmoid testing: $QT_PLUGIN_PATH"
|
||||
fi
|
||||
echo "QT_PLUGIN_PATH used for Plasmoid testing: $QT_PLUGIN_PATH"
|
||||
|
||||
# set TEST_FILE_PATH so files for the mocked configuration can be found
|
||||
export TEST_FILE_PATH=$(dirname "${BASH_SOURCE[0]}")/../testfiles
|
||||
|
|
Loading…
Reference in New Issue