#include "contentdisplaytab.h"
#include "dolphin_contentdisplaysettings.h"
+#include "dolphin_generalsettings.h"
#include <KFormat>
#include <KLocalizedString>
ContentDisplayTab::ContentDisplayTab(QWidget *parent)
: SettingsPageBase(parent)
+ , m_naturalSorting(nullptr)
+ , m_caseSensitiveSorting(nullptr)
+ , m_caseInsensitiveSorting(nullptr)
, m_numberOfItems(nullptr)
, m_sizeOfContents(nullptr)
+ , m_noDirectorySize(nullptr)
, m_recursiveDirectorySizeLimit(nullptr)
, m_useRelatetiveDates(nullptr)
, m_useShortDates(nullptr)
, m_useSymbolicPermissions(nullptr)
, m_useNumericPermissions(nullptr)
, m_useCombinedPermissions(nullptr)
+ , m_elideMiddle(nullptr)
+ , m_elideEnding(nullptr)
{
QFormLayout *topLayout = new QFormLayout(this);
+ // Sorting Order
+ m_naturalSorting = new QRadioButton(i18nc("option:radio", "Natural"));
+ m_caseInsensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case insensitive"));
+ m_caseSensitiveSorting = new QRadioButton(i18nc("option:radio", "Alphabetical, case sensitive"));
+
+ QButtonGroup *sortingOrderGroup = new QButtonGroup(this);
+ sortingOrderGroup->addButton(m_naturalSorting);
+ sortingOrderGroup->addButton(m_caseInsensitiveSorting);
+ sortingOrderGroup->addButton(m_caseSensitiveSorting);
+ topLayout->addRow(i18nc("@title:group", "Sorting mode: "), m_naturalSorting);
+ topLayout->addRow(QString(), m_caseInsensitiveSorting);
+ topLayout->addRow(QString(), m_caseSensitiveSorting);
+
#ifndef Q_OS_WIN
// Sorting properties
- m_numberOfItems = new QRadioButton(i18nc("option:radio", "Number of items"));
- m_sizeOfContents = new QRadioButton(i18nc("option:radio", "Size of contents, up to "));
+ m_numberOfItems = new QRadioButton(i18nc("option:radio", "Show number of items"));
+ m_sizeOfContents = new QRadioButton(i18nc("option:radio", "Show size of contents, up to "));
+ m_noDirectorySize = new QRadioButton(i18nc("option:radio", "Show no size"));
QButtonGroup *sortingModeGroup = new QButtonGroup(this);
sortingModeGroup->addButton(m_numberOfItems);
sortingModeGroup->addButton(m_sizeOfContents);
+ sortingModeGroup->addButton(m_noDirectorySize);
m_recursiveDirectorySizeLimit = new QSpinBox();
connect(m_recursiveDirectorySizeLimit, &QSpinBox::valueChanged, this, [this](int value) {
contentsSizeLayout->addWidget(m_sizeOfContents);
contentsSizeLayout->addWidget(m_recursiveDirectorySizeLimit);
- topLayout->addRow(i18nc("@title:group", "Folder size displays:"), m_numberOfItems);
+ topLayout->addRow(i18nc("@title:group", "Folder size:"), m_numberOfItems);
topLayout->addRow(QString(), contentsSizeLayout);
+ topLayout->addRow(QString(), m_noDirectorySize);
#endif
QDateTime thirtyMinutesAgo = QDateTime::currentDateTime().addSecs(-30 * 60);
permissionsFormatGroup->addButton(m_useNumericPermissions);
permissionsFormatGroup->addButton(m_useCombinedPermissions);
+ m_elideMiddle = new QRadioButton(i18nc("@option:radio Long file names", "Elide in the middle (e.g. ’Some very… name.txt')"));
+ m_elideEnding = new QRadioButton(i18nc("@option:radio Long file names", "Elide at the end (e.g. ’Some very long….txt')"));
+
+ topLayout->addRow(i18nc("@title:group", "Long file names:"), m_elideMiddle);
+ topLayout->addRow(QString(), m_elideEnding);
+
+ QButtonGroup *elidingModeGroup = new QButtonGroup(this);
+ elidingModeGroup->addButton(m_elideMiddle);
+ elidingModeGroup->addButton(m_elideEnding);
+
#ifndef Q_OS_WIN
connect(m_recursiveDirectorySizeLimit, &QSpinBox::valueChanged, this, &SettingsPageBase::changed);
connect(m_numberOfItems, &QRadioButton::toggled, this, &SettingsPageBase::changed);
- connect(m_sizeOfContents, &QRadioButton::toggled, this, [=]() {
+ connect(m_sizeOfContents, &QRadioButton::toggled, this, [=, this]() {
m_recursiveDirectorySizeLimit->setEnabled(m_sizeOfContents->isChecked());
});
+ connect(m_noDirectorySize, &QRadioButton::toggled, this, &SettingsPageBase::changed);
#endif
connect(m_useRelatetiveDates, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useSymbolicPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useNumericPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
connect(m_useCombinedPermissions, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_naturalSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseInsensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_caseSensitiveSorting, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_elideMiddle, &QRadioButton::toggled, this, &SettingsPageBase::changed);
+ connect(m_elideEnding, &QRadioButton::toggled, this, &SettingsPageBase::changed);
loadSettings();
}
{
auto settings = ContentDisplaySettings::self();
#ifndef Q_OS_WIN
- settings->setDirectorySizeCount(m_numberOfItems->isChecked());
+ if (m_numberOfItems->isChecked()) {
+ settings->setDirectorySizeMode(ContentDisplaySettings::EnumDirectorySizeMode::ContentCount);
+ } else if (m_sizeOfContents->isChecked()) {
+ settings->setDirectorySizeMode(ContentDisplaySettings::EnumDirectorySizeMode::ContentSize);
+ } else if (m_noDirectorySize->isChecked()) {
+ settings->setDirectorySizeMode(ContentDisplaySettings::EnumDirectorySizeMode::None);
+ }
+
settings->setRecursiveDirectorySizeLimit(m_recursiveDirectorySizeLimit->value());
#endif
-
+ setSortingChoiceValue();
settings->setUseShortRelativeDates(m_useRelatetiveDates->isChecked());
if (m_useSymbolicPermissions->isChecked()) {
} else if (m_useCombinedPermissions->isChecked()) {
settings->setUsePermissionsFormat(ContentDisplaySettings::EnumUsePermissionsFormat::CombinedFormat);
}
+ if (m_elideMiddle->isChecked()) {
+ settings->setElidingMode(ContentDisplaySettings::ElidingMode::Middle);
+ } else if (m_elideEnding->isChecked()) {
+ settings->setElidingMode(ContentDisplaySettings::ElidingMode::Right);
+ }
settings->save();
}
{
auto settings = ContentDisplaySettings::self();
#ifndef Q_OS_WIN
- if (settings->directorySizeCount()) {
- m_numberOfItems->setChecked(true);
- m_recursiveDirectorySizeLimit->setEnabled(false);
- } else {
- m_sizeOfContents->setChecked(true);
- m_recursiveDirectorySizeLimit->setEnabled(true);
- }
+ m_numberOfItems->setChecked(settings->directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount);
+ m_sizeOfContents->setChecked(settings->directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::ContentSize);
+ m_noDirectorySize->setChecked(settings->directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::None);
m_recursiveDirectorySizeLimit->setValue(settings->recursiveDirectorySizeLimit());
#endif
m_useRelatetiveDates->setChecked(settings->useShortRelativeDates());
m_useSymbolicPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::SymbolicFormat);
m_useNumericPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::NumericFormat);
m_useCombinedPermissions->setChecked(settings->usePermissionsFormat() == ContentDisplaySettings::EnumUsePermissionsFormat::CombinedFormat);
+ loadSortingChoiceSettings();
+ m_elideMiddle->setChecked(settings->elidingMode() == ContentDisplaySettings::ElidingMode::Middle);
+ m_elideEnding->setChecked(settings->elidingMode() == ContentDisplaySettings::ElidingMode::Right);
+}
+
+void ContentDisplayTab::setSortingChoiceValue()
+{
+ auto settings = GeneralSettings::self();
+ using Choice = GeneralSettings::EnumSortingChoice;
+ if (m_naturalSorting->isChecked()) {
+ settings->setSortingChoice(Choice::NaturalSorting);
+ } else if (m_caseInsensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseInsensitiveSorting);
+ } else if (m_caseSensitiveSorting->isChecked()) {
+ settings->setSortingChoice(Choice::CaseSensitiveSorting);
+ }
+}
+
+void ContentDisplayTab::loadSortingChoiceSettings()
+{
+ using Choice = GeneralSettings::EnumSortingChoice;
+ switch (GeneralSettings::sortingChoice()) {
+ case Choice::NaturalSorting:
+ m_naturalSorting->setChecked(true);
+ break;
+ case Choice::CaseInsensitiveSorting:
+ m_caseInsensitiveSorting->setChecked(true);
+ break;
+ case Choice::CaseSensitiveSorting:
+ m_caseSensitiveSorting->setChecked(true);
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
}
void ContentDisplayTab::restoreDefaults()
loadSettings();
settings->useDefaults(false);
}
+
+#include "moc_contentdisplaytab.cpp"