diff --git a/src/filewidgets/kfileplacesmodel.h b/src/filewidgets/kfileplacesmodel.h --- a/src/filewidgets/kfileplacesmodel.h +++ b/src/filewidgets/kfileplacesmodel.h @@ -97,6 +97,7 @@ void requestTeardown(const QModelIndex &index); void requestEject(const QModelIndex &index); void requestSetup(const QModelIndex &index); + void requestProperties(const QModelIndex &index, QWidget *parent); void addPlace(const QString &text, const QUrl &url, const QString &iconName = QString(), const QString &appName = QString()); void addPlace(const QString &text, const QUrl &url, const QString &iconName, const QString &appName, const QModelIndex &after); diff --git a/src/filewidgets/kfileplacesmodel.cpp b/src/filewidgets/kfileplacesmodel.cpp --- a/src/filewidgets/kfileplacesmodel.cpp +++ b/src/filewidgets/kfileplacesmodel.cpp @@ -50,6 +50,8 @@ #include #include +#include + #include #include #include @@ -952,6 +954,15 @@ refresh(); } +void KFilePlacesModel::requestProperties(const QModelIndex &index, QWidget *parent) +{ + if (!index.isValid()) { + return; + } + + KPropertiesDialog::showDialog(url(index), parent); +} + void KFilePlacesModel::editPlace(const QModelIndex &index, const QString &text, const QUrl &url, const QString &iconName, const QString &appName) { diff --git a/src/filewidgets/kfileplacesview.cpp b/src/filewidgets/kfileplacesview.cpp --- a/src/filewidgets/kfileplacesview.cpp +++ b/src/filewidgets/kfileplacesview.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -738,6 +739,7 @@ QAction *add = nullptr; QAction *mainSeparator = nullptr; QAction *hideSection = nullptr; + QAction *properties = nullptr; const bool clickOverHeader = delegate->pointIsHeaderArea(event->pos()); if (clickOverHeader) { @@ -756,7 +758,6 @@ } add = menu.addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18n("Add Entry...")); mainSeparator = menu.addSeparator(); - edit = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-entry")), i18n("&Edit Entry '%1'...", label)); } else { eject = placesModel->ejectActionForIndex(index); if (eject != nullptr) { @@ -777,6 +778,12 @@ if (add == nullptr) { add = menu.addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18n("Add Entry...")); } + if (placesModel->url(index).isLocalFile()) { + properties = menu.addAction(QIcon::fromTheme(QStringLiteral("document-properties")), i18n("Properties")); + } + if (!placesModel->isDevice(index)) { + edit = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-entry")), i18n("&Edit Entry '%1'...", label)); + } hide = menu.addAction(i18n("&Hide Entry '%1'", label)); hide->setCheckable(true); @@ -821,6 +828,8 @@ KJobWidgets::setWindow(job, window()); job->uiDelegate()->setAutoErrorHandlingEnabled(true); } + } else if (properties && (result == properties)) { + KPropertiesDialog::showDialog(placesModel->url(index), this); } else if (edit && (result == edit)) { KBookmark bookmark = placesModel->bookmarkForIndex(index); QUrl url = bookmark.url();