diff options
| author | Nico Kreipke <[email protected]> | 2024-03-02 17:44:41 +0100 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2024-03-07 15:11:34 +0000 |
| commit | 815bb8d514d70d79ef5f3fd7fffa95850f761d55 (patch) | |
| tree | 0fb58af1cf4960d7f23b0219b46daa9763c0581e /src/settings | |
| parent | 67910325b5768143a9e35e8e5cd75af705dcbd4c (diff) | |
Add option to completely disable directory size counting
Dolphin shows the size of directories by listing their contents, which
for some users might cause unwanted load on the file system.
Depending on the size of the subdirectories in question and how the
storage is accessed, this might cause noticeable delays and even
freezing.
This commit adds a new option under "View -> Content Display" that
enables users to set "Folder size:" to "No size", completely disabling
directory size counting. Directory size counting is still enabled by
default.
As a third option for "Folder size" is added, the DirectorySizeCount
boolean setting is replaced with a DirectorySizeMode enum setting. The
old setting is migrated using a kconf_update script.
FEATURE: 477187
GUI:
Diffstat (limited to 'src/settings')
| -rw-r--r-- | src/settings/dolphin_contentdisplaysettings.kcfg | 17 | ||||
| -rw-r--r-- | src/settings/dolphin_directorysizemode.py | 10 | ||||
| -rw-r--r-- | src/settings/dolphin_directorysizemode.upd | 9 | ||||
| -rw-r--r-- | src/settings/viewmodes/contentdisplaytab.cpp | 30 | ||||
| -rw-r--r-- | src/settings/viewmodes/contentdisplaytab.h | 1 |
5 files changed, 53 insertions, 14 deletions
diff --git a/src/settings/dolphin_contentdisplaysettings.kcfg b/src/settings/dolphin_contentdisplaysettings.kcfg index 36895b869..31c6f75df 100644 --- a/src/settings/dolphin_contentdisplaysettings.kcfg +++ b/src/settings/dolphin_contentdisplaysettings.kcfg @@ -6,9 +6,20 @@ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd"> <kcfgfile name="dolphinrc"/> <group name="ContentDisplay"> - <entry name="DirectorySizeCount" type="Bool"> - <label>Whether or not content count is used as directory size</label> - <default>true</default> + <entry name="DirectorySizeMode" type="Enum"> + <label>How we display the size of directories</label> + <choices> + <choice name="ContentCount"> + <label>Show the content count</label> + </choice> + <choice name="ContentSize"> + <label>Show the content size</label> + </choice> + <choice name="None"> + <label>Do not show any directory size</label> + </choice> + </choices> + <default>ContentCount</default> </entry> <entry name="RecursiveDirectorySizeLimit" type="UInt"> <label>Recursive directory size limit</label> diff --git a/src/settings/dolphin_directorysizemode.py b/src/settings/dolphin_directorysizemode.py new file mode 100644 index 000000000..6d58a062c --- /dev/null +++ b/src/settings/dolphin_directorysizemode.py @@ -0,0 +1,10 @@ +import fileinput + +for line in fileinput.input(): + if line.startswith("DirectorySizeCount=true"): + print("DirectorySizeMode=ContentCount") + if line.startswith("DirectorySizeCount=false"): + print("DirectorySizeMode=ContentSize") + +print("# DELETE DirectorySizeCount") + diff --git a/src/settings/dolphin_directorysizemode.upd b/src/settings/dolphin_directorysizemode.upd new file mode 100644 index 000000000..2bab4e01b --- /dev/null +++ b/src/settings/dolphin_directorysizemode.upd @@ -0,0 +1,9 @@ +#Configuration update for Dolphin +Version=5 + +#Convert DirectorySizeCount to enum DirectorySizeMode +Id=convert-directorysizecount-to-directorysizemode +File=dolphinrc +Group=ContentDisplay +Script=dolphin_directorysizemode.py,python3 + diff --git a/src/settings/viewmodes/contentdisplaytab.cpp b/src/settings/viewmodes/contentdisplaytab.cpp index f674e194e..2d817277c 100644 --- a/src/settings/viewmodes/contentdisplaytab.cpp +++ b/src/settings/viewmodes/contentdisplaytab.cpp @@ -24,6 +24,7 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) , m_caseInsensitiveSorting(nullptr) , m_numberOfItems(nullptr) , m_sizeOfContents(nullptr) + , m_noDirectorySize(nullptr) , m_recursiveDirectorySizeLimit(nullptr) , m_useRelatetiveDates(nullptr) , m_useShortDates(nullptr) @@ -48,12 +49,14 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) #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) { @@ -66,8 +69,9 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) 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); @@ -105,6 +109,7 @@ ContentDisplayTab::ContentDisplayTab(QWidget *parent) connect(m_sizeOfContents, &QRadioButton::toggled, this, [=]() { m_recursiveDirectorySizeLimit->setEnabled(m_sizeOfContents->isChecked()); }); + connect(m_noDirectorySize, &QRadioButton::toggled, this, &SettingsPageBase::changed); #endif connect(m_useRelatetiveDates, &QRadioButton::toggled, this, &SettingsPageBase::changed); @@ -123,7 +128,14 @@ void ContentDisplayTab::applySettings() { 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(); @@ -143,13 +155,9 @@ void ContentDisplayTab::loadSettings() { 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()); diff --git a/src/settings/viewmodes/contentdisplaytab.h b/src/settings/viewmodes/contentdisplaytab.h index 3550569fd..05e8414e1 100644 --- a/src/settings/viewmodes/contentdisplaytab.h +++ b/src/settings/viewmodes/contentdisplaytab.h @@ -36,6 +36,7 @@ private: QRadioButton *m_numberOfItems; QRadioButton *m_sizeOfContents; + QRadioButton *m_noDirectorySize; QSpinBox *m_recursiveDirectorySizeLimit; QRadioButton *m_useRelatetiveDates; QRadioButton *m_useShortDates; |
