X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f631747a0cb04e47c677d344df06fa7011a16860..f1da070fd5845dbbdd5e20addffafe8c9929b3c9:/src/settings/viewpropertiesdialog.cpp diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index 37c3d539b..a13b0b117 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -44,6 +44,8 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView *dolphinView) , m_viewMode(nullptr) , m_sortOrder(nullptr) , m_sorting(nullptr) + , m_groupOrder(nullptr) + , m_grouping(nullptr) , m_sortFoldersFirst(nullptr) , m_sortHiddenLast(nullptr) , m_previewsShown(nullptr) @@ -67,7 +69,7 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView *dolphinView) // Otherwise the dialog won't resize when we collapse the KCollapsibleGroupBox. layout->setSizeConstraint(QLayout::SetFixedSize); - // create 'Properties' group containing view mode, sorting, sort order and show hidden files + // create 'Properties' group containing view mode, sorting/grouping, sort/group order and show hidden files m_viewMode = new QComboBox(); m_viewMode->addItem(QIcon::fromTheme(QStringLiteral("view-list-icons")), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView); m_viewMode->addItem(QIcon::fromTheme(QStringLiteral("view-list-details")), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView); @@ -83,6 +85,16 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView *dolphinView) m_sorting->addItem(info.translation, info.role); } + m_groupOrder = new QComboBox(); + m_groupOrder->addItem(i18nc("@item:inlistbox Group", "Ascending")); + m_groupOrder->addItem(i18nc("@item:inlistbox Group", "Descending")); + + m_grouping = new QComboBox(); + const QList combinedGroupingInfo = rolesInfo + KFileItemModel::extraGroupingInformation(); + for (const KFileItemModel::RoleInfo &info : combinedGroupingInfo) { + m_grouping->addItem(info.translation, info.role); + } + m_sortFoldersFirst = new QCheckBox(i18nc("@option:check", "Show folders first")); m_sortHiddenLast = new QCheckBox(i18nc("@option:check", "Show hidden files last")); m_previewsShown = new QCheckBox(i18nc("@option:check", "Show preview")); @@ -139,8 +151,14 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView *dolphinView) sortingLayout->addWidget(m_sortOrder); sortingLayout->addWidget(m_sorting); + QHBoxLayout *groupingLayout = new QHBoxLayout(); + groupingLayout->setContentsMargins(0, 0, 0, 0); + groupingLayout->addWidget(m_groupOrder); + groupingLayout->addWidget(m_grouping); + layout->addRow(i18nc("@label:listbox", "View mode:"), m_viewMode); layout->addRow(i18nc("@label:listbox", "Sorting:"), sortingLayout); + layout->addRow(i18nc("@label:listbox", "Grouping:"), groupingLayout); layout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); @@ -153,6 +171,8 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView *dolphinView) connect(m_viewMode, &QComboBox::currentIndexChanged, this, &ViewPropertiesDialog::slotViewModeChanged); connect(m_sorting, &QComboBox::currentIndexChanged, this, &ViewPropertiesDialog::slotSortingChanged); connect(m_sortOrder, &QComboBox::currentIndexChanged, this, &ViewPropertiesDialog::slotSortOrderChanged); + connect(m_grouping, &QComboBox::currentIndexChanged, this, &ViewPropertiesDialog::slotGroupingChanged); + connect(m_groupOrder, &QComboBox::currentIndexChanged, this, &ViewPropertiesDialog::slotGroupOrderChanged); connect(m_sortFoldersFirst, &QCheckBox::clicked, this, &ViewPropertiesDialog::slotSortFoldersFirstChanged); connect(m_sortHiddenLast, &QCheckBox::clicked, this, &ViewPropertiesDialog::slotSortHiddenLastChanged); connect(m_previewsShown, &QCheckBox::clicked, this, &ViewPropertiesDialog::slotShowPreviewChanged); @@ -259,6 +279,20 @@ void ViewPropertiesDialog::slotSortOrderChanged(int index) markAsDirty(true); } +void ViewPropertiesDialog::slotGroupingChanged(int index) +{ + const QByteArray role = m_grouping->itemData(index).toByteArray(); + m_viewProps->setGroupRole(role); + markAsDirty(true); +} + +void ViewPropertiesDialog::slotGroupOrderChanged(int index) +{ + const Qt::SortOrder groupOrder = (index == 0) ? Qt::AscendingOrder : Qt::DescendingOrder; + m_viewProps->setGroupOrder(groupOrder); + markAsDirty(true); +} + void ViewPropertiesDialog::slotGroupedSortingChanged() { m_viewProps->setGroupedSorting(m_showInGroups->isChecked()); @@ -377,6 +411,8 @@ void ViewPropertiesDialog::applyViewProperties() m_dolphinView->setViewMode(m_viewProps->viewMode()); m_dolphinView->setSortRole(m_viewProps->sortRole()); m_dolphinView->setSortOrder(m_viewProps->sortOrder()); + m_dolphinView->setGroupRole(m_viewProps->groupRole()); + m_dolphinView->setGroupOrder(m_viewProps->groupOrder()); m_dolphinView->setSortFoldersFirst(m_viewProps->sortFoldersFirst()); m_dolphinView->setSortHiddenLast(m_viewProps->sortHiddenLast()); m_dolphinView->setGroupedSorting(m_viewProps->groupedSorting()); @@ -423,6 +459,20 @@ void ViewPropertiesDialog::loadSettings() m_sortFoldersFirst->setChecked(m_viewProps->sortFoldersFirst()); m_sortHiddenLast->setChecked(m_viewProps->sortHiddenLast()); + // Load group order and sorting + const int groupOrderIndex = (m_viewProps->groupOrder() == Qt::AscendingOrder) ? 0 : 1; + m_groupOrder->setCurrentIndex(groupOrderIndex); + + const QList combinedGroupingInfo = rolesInfo + KFileItemModel::extraGroupingInformation(); + int groupRoleIndex = 0; + for (int i = 0; i < combinedGroupingInfo.count(); ++i) { + if (combinedGroupingInfo[i].role == m_viewProps->groupRole()) { + groupRoleIndex = i; + break; + } + } + m_grouping->setCurrentIndex(groupRoleIndex); + // Load show preview, show in groups and show hidden files settings m_previewsShown->setChecked(m_viewProps->previewsShown()); m_showInGroups->setChecked(m_viewProps->groupedSorting());