X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f7c2bd34104c592e4111255821432ef83ed4242c..c43165a1c42f623a5b183c84083633df9cf35e93:/src/panels/places/placespanel.cpp diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 7b4900f7c..4e99daf7a 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -30,7 +30,6 @@ #include "kitemviews/kitemlistselectionmanager.h" #include "kitemviews/kstandarditem.h" #include "placesitem.h" -#include "placesitemeditdialog.h" #include "placesitemlistgroupheader.h" #include "placesitemlistwidget.h" #include "placesitemmodel.h" @@ -38,6 +37,7 @@ #include "trash/dolphintrash.h" #include "views/draganddrophelper.h" +#include #include #include #include @@ -139,7 +139,7 @@ void PlacesPanel::showEvent(QShowEvent* event) container->setEnabledFrame(false); QVBoxLayout* layout = new QVBoxLayout(this); - layout->setMargin(0); + layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(container); selectClosestItem(); @@ -175,6 +175,22 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) 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* 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) { ejectAction = m_model->ejectAction(index); if (ejectAction) { @@ -205,22 +221,6 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) if (teardownAction || ejectAction || mountAction) { menu.addSeparator(); } - } else { - 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* 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) { @@ -258,6 +258,9 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) m_model->deleteItem(index); } else if (action == hideAction) { item->setHidden(hideAction->isChecked()); + if (!m_model->hiddenCount()) { + showHiddenEntries(false); + } } else if (action == openInNewWindowAction) { Dolphin::openNewWindow({KFilePlacesModel::convertedUrl(m_model->data(index).value("url").toUrl())}, this); } else if (action == openInNewTabAction) { @@ -287,12 +290,11 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) QAction* addAction = menu.addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18nc("@item:inmenu", "Add Entry...")); - QAction* showAllAction = nullptr; - if (m_model->hiddenCount() > 0) { - showAllAction = menu.addAction(QIcon::fromTheme(QStringLiteral("visibility")), i18nc("@item:inmenu", "Show All Entries")); - showAllAction->setCheckable(true); - showAllAction->setChecked(m_model->hiddenItemsShown()); - } + QAction* showAllAction = menu.addAction(i18nc("@item:inmenu", "Show Hidden Places")); + showAllAction->setCheckable(true); + showAllAction->setChecked(m_model->hiddenItemsShown()); + showAllAction->setIcon(QIcon::fromTheme(m_model->hiddenItemsShown() ? QStringLiteral("visibility") : QStringLiteral("hint"))); + showAllAction->setEnabled(m_model->hiddenCount()); buildGroupContextMenu(&menu, m_controller->indexCloseToMousePressedPosition()); @@ -340,7 +342,7 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) if (action == addAction) { addEntry(); } else if (action == showAllAction) { - m_model->setHiddenItemsShown(showAllAction->isChecked()); + showHiddenEntries(showAllAction->isChecked()); } else if (iconSizeActionMap.contains(action)) { m_view->setIconSize(iconSizeActionMap.value(action)); } @@ -362,6 +364,9 @@ QAction *PlacesPanel::buildGroupContextMenu(QMenu *menu, int index) connect(hideGroupAction, &QAction::triggered, this, [this, groupType, hideGroupAction]{ m_model->setGroupHidden(groupType, hideGroupAction->isChecked()); + if (!m_model->hiddenCount()) { + showHiddenEntries(false); + } }); return hideGroupAction; @@ -469,13 +474,12 @@ void PlacesPanel::addEntry() { const int index = m_controller->selectionManager()->currentItem(); const QUrl url = m_model->data(index).value("url").toUrl(); + const QString text = url.fileName().isEmpty() ? url.toDisplayString(QUrl::PreferLocalFile) : url.fileName(); - QPointer dialog = new PlacesItemEditDialog(this); - dialog->setWindowTitle(i18nc("@title:window", "Add Places Entry")); - dialog->setAllowGlobal(true); - dialog->setUrl(url); + QPointer dialog = new KFilePlaceEditDialog(true, url, text, QString(), true, false, KIconLoader::SizeMedium, this); if (dialog->exec() == QDialog::Accepted) { - m_model->createPlacesItem(dialog->text(), dialog->url(), dialog->icon()); + const QString appName = dialog->applicationLocal() ? QCoreApplication::applicationName() : QString(); + m_model->createPlacesItem(dialog->label(), dialog->url(), dialog->icon(), appName); } delete dialog; @@ -484,17 +488,18 @@ void PlacesPanel::addEntry() void PlacesPanel::editEntry(int index) { QHash data = m_model->data(index); + const QUrl url = data.value("url").toUrl(); + const QString text = data.value("text").toString(); + const QString iconName = data.value("iconName").toString(); + const bool applicationLocal = !data.value("applicationName").toString().isEmpty(); - QPointer dialog = new PlacesItemEditDialog(this); - dialog->setWindowTitle(i18nc("@title:window", "Edit Places Entry")); - dialog->setIcon(data.value("iconName").toString()); - dialog->setText(data.value("text").toString()); - dialog->setUrl(data.value("url").toUrl()); - dialog->setAllowGlobal(true); + QPointer dialog = new KFilePlaceEditDialog(true, url, text, iconName, true, applicationLocal, KIconLoader::SizeMedium, this); if (dialog->exec() == QDialog::Accepted) { PlacesItem* oldItem = m_model->placesItem(index); if (oldItem) { - oldItem->setText(dialog->text()); + const QString appName = dialog->applicationLocal() ? QCoreApplication::applicationName() : QString(); + oldItem->setApplicationName(appName); + oldItem->setText(dialog->label()); oldItem->setUrl(dialog->url()); oldItem->setIcon(dialog->icon()); m_model->refresh(); @@ -541,3 +546,17 @@ void PlacesPanel::triggerItem(int index, Qt::MouseButton button) } } } + +void PlacesPanel::showHiddenEntries(bool shown) +{ + m_model->setHiddenItemsShown(shown); + emit showHiddenEntriesChanged(shown); +} + +int PlacesPanel::hiddenListCount() +{ + if(!m_model) { + return 0; + } + return m_model->hiddenCount(); +}