From: milkyroute Date: Sun, 10 Aug 2025 11:06:17 +0000 (+0200) Subject: Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups' X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/b4e80645e8e39ef7fcc1545136bad06ab3dd5f3e Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups' --- b4e80645e8e39ef7fcc1545136bad06ab3dd5f3e diff --cc src/dolphinmainwindow.cpp index 51772eac2,17396dabd..d08d6f6b3 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@@ -1562,18 -1511,16 +1562,19 @@@ void DolphinMainWindow::updateHamburger // The third group contains actions to change what one sees in the view // and to change the more general UI. if (!toolBar()->isVisible() - || (!toolbarActions.contains(ac->action(QStringLiteral("icons"))) && !toolbarActions.contains(ac->action(QStringLiteral("compact"))) - && !toolbarActions.contains(ac->action(QStringLiteral("details"))) && !toolbarActions.contains(ac->action(QStringLiteral("view_mode"))))) { + || ((!toolbarActions.contains(ac->action(QStringLiteral("icons"))) && !toolbarActions.contains(ac->action(QStringLiteral("compact"))) + && !toolbarActions.contains(ac->action(QStringLiteral("details"))) && !toolbarActions.contains(ac->action(QStringLiteral("view_mode")))) + && !toolbarActions.contains(ac->action(QStringLiteral("view_settings"))))) { menu->addAction(ac->action(QStringLiteral("view_mode"))); } - menu->addAction(ac->action(QStringLiteral("show_hidden_files"))); - menu->addAction(ac->action(QStringLiteral("sort"))); - menu->addAction(ac->action(QStringLiteral("group"))); - menu->addAction(ac->action(QStringLiteral("additional_info"))); - if (!GeneralSettings::showStatusBar() || !GeneralSettings::showZoomSlider()) { - menu->addAction(ac->action(QStringLiteral("zoom"))); + if (!toolBar()->isVisible() || !toolbarActions.contains(ac->action(QStringLiteral("view_settings")))) { - menu->addAction(ac->action(QStringLiteral("show_hidden_files"))); - menu->addAction(ac->action(QStringLiteral("sort"))); - menu->addAction(ac->action(QStringLiteral("additional_info"))); - if (!GeneralSettings::showStatusBar() || !GeneralSettings::showZoomSlider()) { - menu->addAction(ac->action(QStringLiteral("zoom"))); - } ++ menu->addAction(ac->action(QStringLiteral("show_hidden_files"))); ++ menu->addAction(ac->action(QStringLiteral("sort"))); ++ menu->addAction(ac->action(QStringLiteral("group"))); ++ menu->addAction(ac->action(QStringLiteral("additional_info"))); ++ if (!GeneralSettings::showStatusBar() || !GeneralSettings::showZoomSlider()) { ++ menu->addAction(ac->action(QStringLiteral("zoom"))); ++ } } menu->addAction(ac->action(QStringLiteral("panels"))); diff --cc src/kitemviews/kfileitemmodel.h index 10be27128,980efe66b..13554d8c7 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@@ -364,13 -380,18 +380,18 @@@ private QHash values; ItemData *parent; }; -- - enum RemoveItemsBehavior { - KeepItemData, - DeleteItemData, - DeleteItemDataIfUnfiltered ++ + struct ItemGroupInfo { + int comparable; + QString text; + + bool operator==(const ItemGroupInfo &other) const; + bool operator!=(const ItemGroupInfo &other) const; + bool operator<(const ItemGroupInfo &other) const; }; + enum RemoveItemsBehavior { KeepItemData, DeleteItemData, DeleteItemDataIfUnfiltered }; + void insertItems(QList &items); void removeItems(const KItemRangeList &itemRanges, RemoveItemsBehavior behavior); diff --cc src/kitemviews/kfileitemmodelrolesupdater.cpp index 497c13b52,318936e8a..44165dedc --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@@ -369,9 -369,7 +369,8 @@@ void KFileItemModelRolesUpdater::slotIt timer.start(); // Determine the sort role synchronously for as many items as possible. - if (m_resolvableRoles.contains(m_model->sortRole())) { - QList dirsWithAddedItems; - + if (m_resolvableRoles.contains(m_model->sortRole()) || m_resolvableRoles.contains(m_model->groupRole())) { ++ QList dirsWithAddedItems; int insertedCount = 0; for (const KItemRange &range : itemRanges) { const int lastIndex = insertedCount + range.index + range.count - 1; diff --cc src/kitemviews/kitemlistview.cpp index 75d85be35,45f5851bf..82325cb19 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@@ -1521,8 -1481,30 +1521,28 @@@ void KItemListView::slotSortRoleChanged } } + void KItemListView::slotGroupOrderChanged(Qt::SortOrder current, Qt::SortOrder previous) + { + Q_UNUSED(current) + Q_UNUSED(previous) + if (m_grouped) { + updateVisibleGroupHeaders(); + doLayout(NoAnimation); + } + } + + void KItemListView::slotGroupRoleChanged(const QByteArray ¤t, const QByteArray &previous) + { + Q_UNUSED(current) + Q_UNUSED(previous) + if (m_grouped) { + updateVisibleGroupHeaders(); + doLayout(NoAnimation); + } + } + void KItemListView::slotCurrentChanged(int current, int previous) { - Q_UNUSED(previous) - // In SingleSelection mode (e.g., in the Places Panel), the current item is // always the selected item. It is not necessary to highlight the current item then. if (m_controller->selectionBehavior() != KItemListController::SingleSelection) {