- PlacesItem* item = m_model->placesItem(index);
- if (!item) {
- return;
- }
-
- QMenu menu(this);
-
- QAction* emptyTrashAction = nullptr;
- 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"));
- if (isTrash) {
- emptyTrashAction = menu.addAction(QIcon::fromTheme(QStringLiteral("trash-empty")), i18nc("@action:inmenu", "Empty Trash"));
- emptyTrashAction->setEnabled(item->icon() == QLatin1String("user-trash-full"));
- menu.addSeparator();
- }
-
- QAction* openInNewTabAction = menu.addAction(QIcon::fromTheme(QStringLiteral("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* 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) {
- ejectAction = m_model->ejectAction(index);
- if (ejectAction) {
- ejectAction->setParent(&menu);
- menu.addAction(ejectAction);
- }
-
- 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 (item->storageSetupNeeded()) {
- mountAction = menu.addAction(QIcon::fromTheme(QStringLiteral("media-mount")), i18nc("@action:inmenu", "Mount"));
- }
-
- if (teardownAction || ejectAction || mountAction) {
- menu.addSeparator();
- }
- }
-
- if (!isDevice) {
- editAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-entry")), i18nc("@item:inmenu", "Edit..."));
- }