]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Change the full row highlight checkbox to radiobuttons
authorFelix Ernst <fe.a.ernst@gmail.com>
Wed, 19 Oct 2022 17:10:02 +0000 (19:10 +0200)
committerFelix Ernst <felixernst@kde.org>
Thu, 27 Oct 2022 09:40:03 +0000 (09:40 +0000)
This commit changes how the setting to switch between full row
highlight and the old way of only having the icons and names be
activatable in details mode is presented on the settings page.

Before this commit a singular checkbox is used that talks about
the highlight effect.

But the highlight effect isn't actually what users should be
interested in. They mostly care how much of the area can be used to
activate an item. To make this clear this commit uses radio buttons
instead that give a distinctive choice between activation areas.

src/settings/viewmodes/viewsettingstab.cpp
src/settings/viewmodes/viewsettingstab.h

index 850004c6f3fd982f9c8b8ec97d95f394c5dbb9dd..6ac280e7be4ec9c30e52639ea2e08933151a36b3 100644 (file)
@@ -101,8 +101,17 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) :
         m_expandableFolders = new QCheckBox(i18nc("@option:check", "Expandable"));
         topLayout->addRow(i18nc("@label:checkbox", "Folders:"), m_expandableFolders);
 
         m_expandableFolders = new QCheckBox(i18nc("@option:check", "Expandable"));
         topLayout->addRow(i18nc("@label:checkbox", "Folders:"), m_expandableFolders);
 
-        m_highlightEntireRow = new QCheckBox(i18nc("@option:check", "Highlight entire row"));
-        topLayout->addRow(i18nc("@label:checkbox", "Selection effect:"), m_highlightEntireRow);
+        // Item activation area
+        m_entireRow = new QRadioButton(i18nc("@option:radio how files/folders are opened", "By clicking anywhere on the row"));
+        m_iconAndNameOnly = new QRadioButton(i18nc("@option:radio how files/folders are opened", "By clicking on icon or name"));
+
+        auto itemActivationAreaGroup = new QButtonGroup(this);
+        itemActivationAreaGroup->addButton(m_entireRow);
+        itemActivationAreaGroup->addButton(m_iconAndNameOnly);
+
+        // i18n: Users can choose here if items are opened by clicking on their name/icon or by clicking in the row.
+        topLayout->addRow(i18nc("@title:group", "Open files and folders:"), m_entireRow);
+        topLayout->addRow(QString(), m_iconAndNameOnly);
 
 
 #ifndef Q_OS_WIN
 
 
 #ifndef Q_OS_WIN
@@ -165,7 +174,7 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) :
         connect(m_widthBox, &QComboBox::currentIndexChanged, this, &ViewSettingsTab::changed);
         break;
     case DetailsMode:
         connect(m_widthBox, &QComboBox::currentIndexChanged, this, &ViewSettingsTab::changed);
         break;
     case DetailsMode:
-        connect(m_highlightEntireRow, &QCheckBox::toggled, this, &ViewSettingsTab::changed);
+        connect(m_entireRow, &QCheckBox::toggled, this, &ViewSettingsTab::changed);
         connect(m_expandableFolders, &QCheckBox::toggled, this, &ViewSettingsTab::changed);
 #ifndef Q_OS_WIN
         connect(m_recursiveDirectorySizeLimit, &QSpinBox::valueChanged, this, &ViewSettingsTab::changed);
         connect(m_expandableFolders, &QCheckBox::toggled, this, &ViewSettingsTab::changed);
 #ifndef Q_OS_WIN
         connect(m_recursiveDirectorySizeLimit, &QSpinBox::valueChanged, this, &ViewSettingsTab::changed);
@@ -202,20 +211,20 @@ void ViewSettingsTab::applySettings()
     case DetailsMode:
         // We need side-padding when the full row is a click target to still be able to not click items.
         // So here the default padding is enabled when the full row highlight is enabled.
     case DetailsMode:
         // We need side-padding when the full row is a click target to still be able to not click items.
         // So here the default padding is enabled when the full row highlight is enabled.
-        if (m_highlightEntireRow->isChecked() && !DetailsModeSettings::highlightEntireRow()) {
+        if (m_entireRow->isChecked() && !DetailsModeSettings::highlightEntireRow()) {
             auto detailsModeSettings = DetailsModeSettings::self();
             const bool usedDefaults = detailsModeSettings->useDefaults(true);
             auto detailsModeSettings = DetailsModeSettings::self();
             const bool usedDefaults = detailsModeSettings->useDefaults(true);
-            const int defaultSidePadding = detailsModeSettings->sidePadding();
+            const uint defaultSidePadding = detailsModeSettings->sidePadding();
             detailsModeSettings->useDefaults(usedDefaults);
             if (DetailsModeSettings::sidePadding() < defaultSidePadding) {
                 DetailsModeSettings::setSidePadding(defaultSidePadding);
             }
             detailsModeSettings->useDefaults(usedDefaults);
             if (DetailsModeSettings::sidePadding() < defaultSidePadding) {
                 DetailsModeSettings::setSidePadding(defaultSidePadding);
             }
-        } else if (!m_highlightEntireRow->isChecked() && DetailsModeSettings::highlightEntireRow()) {
+        } else if (!m_entireRow->isChecked() && DetailsModeSettings::highlightEntireRow()) {
             // The full row click target is disabled so now most of the view area can be used to interact
             // with the view background. Having an extra side padding has no usability benefit in this case.
             DetailsModeSettings::setSidePadding(0);
         }
             // The full row click target is disabled so now most of the view area can be used to interact
             // with the view background. Having an extra side padding has no usability benefit in this case.
             DetailsModeSettings::setSidePadding(0);
         }
-        DetailsModeSettings::setHighlightEntireRow(m_highlightEntireRow->isChecked());
+        DetailsModeSettings::setHighlightEntireRow(m_entireRow->isChecked());
         DetailsModeSettings::setExpandableFolders(m_expandableFolders->isChecked());
 #ifndef Q_OS_WIN
         DetailsModeSettings::setDirectorySizeCount(m_numberOfItems->isChecked());
         DetailsModeSettings::setExpandableFolders(m_expandableFolders->isChecked());
 #ifndef Q_OS_WIN
         DetailsModeSettings::setDirectorySizeCount(m_numberOfItems->isChecked());
@@ -259,7 +268,8 @@ void ViewSettingsTab::loadSettings()
         m_widthBox->setCurrentIndex(CompactModeSettings::maximumTextWidthIndex());
         break;
     case DetailsMode:
         m_widthBox->setCurrentIndex(CompactModeSettings::maximumTextWidthIndex());
         break;
     case DetailsMode:
-        m_highlightEntireRow->setChecked(DetailsModeSettings::highlightEntireRow());
+        m_entireRow->setChecked(DetailsModeSettings::highlightEntireRow());
+        m_iconAndNameOnly->setChecked(!m_entireRow->isChecked());
         m_expandableFolders->setChecked(DetailsModeSettings::expandableFolders());
         #ifndef Q_OS_WIN
             if (DetailsModeSettings::directorySizeCount()) {
         m_expandableFolders->setChecked(DetailsModeSettings::expandableFolders());
         #ifndef Q_OS_WIN
             if (DetailsModeSettings::directorySizeCount()) {
index 2cc133b524f72a5083f70170b53253dcf38d9ca9..4a4dc5694db8e166caa8fe7078fa042e92cea8a7 100644 (file)
@@ -56,7 +56,8 @@ private:
     DolphinFontRequester* m_fontRequester;
     QComboBox* m_widthBox;
     QComboBox* m_maxLinesBox;
     DolphinFontRequester* m_fontRequester;
     QComboBox* m_widthBox;
     QComboBox* m_maxLinesBox;
-    QCheckBox* m_highlightEntireRow;
+    QRadioButton* m_entireRow;
+    QRadioButton* m_iconAndNameOnly;
     QCheckBox* m_expandableFolders;
     QRadioButton* m_numberOfItems;
     QRadioButton* m_sizeOfContents;
     QCheckBox* m_expandableFolders;
     QRadioButton* m_numberOfItems;
     QRadioButton* m_sizeOfContents;