X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/da6f8fe0862585287153f0d90e19eab0b34bfbef..ec12391a1b:/src/panels/places/placespanel.cpp diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index d8eab7dd9..00d8735c3 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -24,38 +24,37 @@ #include "placespanel.h" #include "dolphin_generalsettings.h" - #include "global.h" -#include -#include "dolphindebug.h" +#include "kitemviews/kitemlistcontainer.h" +#include "kitemviews/kitemlistcontroller.h" +#include "kitemviews/kitemlistselectionmanager.h" +#include "kitemviews/kstandarditem.h" +#include "placesitem.h" +#include "placesitemeditdialog.h" +#include "placesitemlistgroupheader.h" +#include "placesitemlistwidget.h" +#include "placesitemmodel.h" +#include "placesview.h" +#include "trash/dolphintrash.h" +#include "views/draganddrophelper.h" + #include -#include -#include +#include +#include #include #include +#include #include -#include +#include #include #include -#include -#include -#include -#include -#include -#include #include #include -#include "placesitem.h" -#include "placesitemeditdialog.h" -#include "placesitemlistgroupheader.h" -#include "placesitemlistwidget.h" -#include "placesitemmodel.h" -#include "placesview.h" -#include + #include +#include +#include #include -#include -#include PlacesPanel::PlacesPanel(QWidget* parent) : Panel(parent), @@ -176,8 +175,6 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) QAction* teardownAction = nullptr; QAction* ejectAction = nullptr; - const QString label = item->text(); - const bool isDevice = !item->udi().isEmpty(); const bool isTrash = (item->url().scheme() == QLatin1String("trash")); if (isDevice) { @@ -223,10 +220,12 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) hideAction->setCheckable(true); hideAction->setChecked(item->isHidden()); + buildGroupContextMenu(&menu, index); + QAction* action = menu.exec(pos.toPoint()); if (action) { if (action == emptyTrashAction) { - emptyTrash(); + Trash::empty(this); } else { // The index might have changed if devices were added/removed while // the context menu was open. @@ -273,6 +272,8 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) showAllAction->setChecked(m_model->hiddenItemsShown()); } + buildGroupContextMenu(&menu, m_controller->indexCloseToMousePressedPosition()); + QMenu* iconSizeSubMenu = new QMenu(i18nc("@item:inmenu", "Icon Size"), &menu); struct IconSizeInfo @@ -290,7 +291,7 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) {KIconLoader::SizeLarge, I18N_NOOP2_NOSTRIP("Huge icon size", "Huge (%1x%2)")} }; - QMap iconSizeActionMap; + QHash iconSizeActionMap; QActionGroup* iconSizeGroup = new QActionGroup(iconSizeSubMenu); for (int i = 0; i < iconSizeCount; ++i) { @@ -326,6 +327,24 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) selectClosestItem(); } +QAction *PlacesPanel::buildGroupContextMenu(QMenu *menu, int index) +{ + if (index == -1) { + return nullptr; + } + + KFilePlacesModel::GroupType groupType = m_model->groupType(index); + QAction *hideGroupAction = menu->addAction(i18nc("@item:inmenu", "Hide Section '%1'", m_model->item(index)->group())); + hideGroupAction->setCheckable(true); + hideGroupAction->setChecked(m_model->isGroupHidden(groupType)); + + connect(hideGroupAction, &QAction::triggered, this, [this, groupType, hideGroupAction]{ + m_model->setGroupHidden(groupType, hideGroupAction->isChecked()); + }); + + return hideGroupAction; +} + void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event) { if (index < 0) { @@ -405,15 +424,6 @@ void PlacesPanel::slotUrlsDropped(const QUrl& dest, QDropEvent* event, QWidget* } } -void PlacesPanel::slotTrashUpdated(KJob* job) -{ - if (job->error()) { - emit errorMessage(job->errorString()); - } - // as long as KIO doesn't do this, do it ourselves - KNotification::event(QStringLiteral("Trash: emptied"), QString(), QPixmap(), nullptr, KNotification::DefaultEvent); -} - void PlacesPanel::slotStorageSetupDone(int index, bool success) { disconnect(m_model, &PlacesItemModel::storageSetupDone, @@ -433,17 +443,6 @@ void PlacesPanel::slotStorageSetupDone(int index, bool success) } } -void PlacesPanel::emptyTrash() -{ - KIO::JobUiDelegate uiDelegate; - uiDelegate.setWindow(window()); - if (uiDelegate.askDeleteConfirmation(QList(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { - KIO::Job* job = KIO::emptyTrash(); - KJobWidgets::setWindow(job, window()); - connect(job, &KIO::Job::result, this, &PlacesPanel::slotTrashUpdated); - } -} - void PlacesPanel::addEntry() { const int index = m_controller->selectionManager()->currentItem();