┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placespanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/panels/places/placespanel.cpp')
-rw-r--r--src/panels/places/placespanel.cpp48
1 files changed, 35 insertions, 13 deletions
diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp
index 00d8735c3..7b4900f7c 100644
--- a/src/panels/places/placespanel.cpp
+++ b/src/panels/places/placespanel.cpp
@@ -38,22 +38,19 @@
#include "trash/dolphintrash.h"
#include "views/draganddrophelper.h"
-#include <KDirNotify>
-#include <KFileItem>
#include <KFilePlacesModel>
#include <KIO/DropJob>
#include <KIO/EmptyTrashJob>
#include <KIO/Job>
-#include <KIO/JobUiDelegate>
#include <KIconLoader>
-#include <KJobWidgets>
#include <KLocalizedString>
-#include <KMessageBox>
-#include <KNotification>
+#include <KMountPoint>
+#include <KPropertiesDialog>
#include <QGraphicsSceneDragDropEvent>
#include <QIcon>
#include <QMenu>
+#include <QMimeData>
#include <QVBoxLayout>
PlacesPanel::PlacesPanel(QWidget* parent) :
@@ -174,6 +171,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
QAction* editAction = nullptr;
QAction* teardownAction = nullptr;
QAction* ejectAction = nullptr;
+ QAction* mountAction = nullptr;
const bool isDevice = !item->udi().isEmpty();
const bool isTrash = (item->url().scheme() == QLatin1String("trash"));
@@ -186,11 +184,25 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
teardownAction = m_model->teardownAction(index);
if (teardownAction) {
+ // Disable teardown option for root and home partitions
+ bool teardownEnabled = item->url() != QUrl::fromLocalFile(QDir::rootPath());
+ if (teardownEnabled) {
+ KMountPoint::Ptr mountPoint = KMountPoint::currentMountPoints().findByPath(QDir::homePath());
+ if (mountPoint && item->url() == QUrl::fromLocalFile(mountPoint->mountPoint())) {
+ teardownEnabled = false;
+ }
+ }
+ teardownAction->setEnabled(teardownEnabled);
+
teardownAction->setParent(&menu);
menu.addAction(teardownAction);
}
- if (teardownAction || ejectAction) {
+ if (item->storageSetupNeeded()) {
+ mountAction = menu.addAction(QIcon::fromTheme(QStringLiteral("media-mount")), i18nc("@action:inmenu", "Mount"));
+ }
+
+ if (teardownAction || ejectAction || mountAction) {
menu.addSeparator();
}
} else {
@@ -201,14 +213,18 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
}
}
- QAction* openInNewWindowAction = menu.addAction(QIcon::fromTheme("window-new"), i18nc("@item:inmenu", "Open in New Window"));
- QAction* openInNewTabAction = menu.addAction(QIcon::fromTheme("tab-new"), i18nc("@item:inmenu", "Open in New Tab"));
+ QAction* openInNewWindowAction = menu.addAction(QIcon::fromTheme(QStringLiteral("window-new")), i18nc("@item:inmenu", "Open in New Window"));
+ QAction* openInNewTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("tab-new")), i18nc("@item:inmenu", "Open in New Tab"));
+ QAction* propertiesAction = nullptr;
+ if (item->url().isLocalFile()) {
+ propertiesAction = menu.addAction(QIcon::fromTheme(QStringLiteral("document-properties")), i18nc("@action:inmenu", "Properties"));
+ }
if (!isDevice && !isTrash) {
menu.addSeparator();
}
if (!isDevice) {
- editAction = menu.addAction(QIcon::fromTheme("document-properties"), i18nc("@item:inmenu", "Edit..."));
+ editAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-entry")), i18nc("@item:inmenu", "Edit..."));
}
QAction* removeAction = nullptr;
@@ -216,7 +232,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
removeAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-delete")), i18nc("@item:inmenu", "Remove"));
}
- QAction* hideAction = menu.addAction(i18nc("@item:inmenu", "Hide"));
+ QAction* hideAction = menu.addAction(QIcon::fromTheme(QStringLiteral("hint")), i18nc("@item:inmenu", "Hide"));
hideAction->setCheckable(true);
hideAction->setChecked(item->isHidden());
@@ -248,10 +264,16 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
// TriggerItem does set up the storage first and then it will
// emit the slotItemMiddleClicked signal, because of Qt::MiddleButton.
triggerItem(index, Qt::MiddleButton);
+ } else if (action == mountAction) {
+ m_model->requestStorageSetup(index);
} else if (action == teardownAction) {
m_model->requestTearDown(index);
} else if (action == ejectAction) {
m_model->requestEject(index);
+ } else if (action == propertiesAction) {
+ KPropertiesDialog* dialog = new KPropertiesDialog(item->url(), this);
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->show();
}
}
}
@@ -267,7 +289,7 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos)
QAction* showAllAction = nullptr;
if (m_model->hiddenCount() > 0) {
- showAllAction = menu.addAction(i18nc("@item:inmenu", "Show All Entries"));
+ showAllAction = menu.addAction(QIcon::fromTheme(QStringLiteral("visibility")), i18nc("@item:inmenu", "Show All Entries"));
showAllAction->setCheckable(true);
showAllAction->setChecked(m_model->hiddenItemsShown());
}
@@ -334,7 +356,7 @@ QAction *PlacesPanel::buildGroupContextMenu(QMenu *menu, int index)
}
KFilePlacesModel::GroupType groupType = m_model->groupType(index);
- QAction *hideGroupAction = menu->addAction(i18nc("@item:inmenu", "Hide Section '%1'", m_model->item(index)->group()));
+ QAction *hideGroupAction = menu->addAction(QIcon::fromTheme(QStringLiteral("hint")), i18nc("@item:inmenu", "Hide Section '%1'", m_model->item(index)->group()));
hideGroupAction->setCheckable(true);
hideGroupAction->setChecked(m_model->isGroupHidden(groupType));