, m_viewMode(nullptr)
, m_sortOrder(nullptr)
, m_sorting(nullptr)
+ , m_groupOrder(nullptr)
+ , m_grouping(nullptr)
, m_sortFoldersFirst(nullptr)
, m_sortHiddenLast(nullptr)
, m_previewsShown(nullptr)
// 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);
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<KFileItemModel::RoleInfo> 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"));
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));
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);
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());
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());
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<KFileItemModel::RoleInfo> 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());