shellsettings property for quicksettings columns

This change adds a property to the shellsettings plugin to allow
changing the number of columns in the QuickSettings drawer in the top
panel. It defaults to the current value, 3.

This will allow us to accommodate for wider displays where the current
drawer unnecessarily paginates (and thus hides some of) the
quicksettings.

Minimum is still 3 since that it computes in the drawer code (and
currently not necessary to change), maximum is somewhat arbitrarily, 7.

Signed-off-by: Sebastian Kügler <sebas@kde.org>
This commit is contained in:
Sebastian Kügler 2025-08-19 13:35:11 +02:00
parent 074007ef48
commit f23264e451
3 changed files with 51 additions and 0 deletions

View file

@ -19,6 +19,7 @@
const QString CONFIG_FILE = QStringLiteral("plasmamobilerc");
const QString GENERAL_CONFIG_GROUP = QStringLiteral("General");
const QString LOCKSCREEN_CONFIG_GROUP = QStringLiteral("Lockscreen");
const QString QUICKSETTINGS_CONFIG_GROUP = QStringLiteral("QuickSettings");
MobileShellSettings::MobileShellSettings(QObject *parent)
: QObject{parent}
@ -48,6 +49,9 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
Q_EMIT lockscreenLeftButtonActionChanged();
Q_EMIT lockscreenRightButtonActionChanged();
}
if (group.name() == QUICKSETTINGS_CONFIG_GROUP) {
Q_EMIT quickSettingsColumnsChanged();
}
});
}
@ -170,6 +174,19 @@ void MobileShellSettings::setActionDrawerTopLeftMode(ActionDrawerMode actionDraw
m_config->sync();
}
int MobileShellSettings::quickSettingsColumns() const
{
auto group = KConfigGroup{m_config, QUICKSETTINGS_CONFIG_GROUP};
return group.readEntry("quickSettingsColumns", 3);
}
void MobileShellSettings::setQuickSettingsColumns(int columns)
{
auto group = KConfigGroup{m_config, QUICKSETTINGS_CONFIG_GROUP};
group.writeEntry("quickSettingsColumns", columns, KConfigGroup::Notify);
m_config->sync();
}
MobileShellSettings::ActionDrawerMode MobileShellSettings::actionDrawerTopRightMode() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};

View file

@ -42,6 +42,9 @@ class MobileShellSettings : public QObject
Q_PROPERTY(ActionDrawerMode actionDrawerTopLeftMode READ actionDrawerTopLeftMode WRITE setActionDrawerTopLeftMode NOTIFY actionDrawerTopLeftModeChanged)
Q_PROPERTY(ActionDrawerMode actionDrawerTopRightMode READ actionDrawerTopRightMode WRITE setActionDrawerTopRightMode NOTIFY actionDrawerTopRightModeChanged)
// quicksettings
Q_PROPERTY(int quickSettingsColumns READ quickSettingsColumns WRITE setQuickSettingsColumns NOTIFY quickSettingsColumnsChanged)
// convergence mode
Q_PROPERTY(bool convergenceModeEnabled READ convergenceModeEnabled WRITE setConvergenceModeEnabled NOTIFY convergenceModeEnabledChanged)
@ -210,6 +213,18 @@ public:
*/
void setActionDrawerTopRightMode(ActionDrawerMode actionDrawerMode);
/**
* The number of columns to use for the QuickSettings drawer.
*/
int quickSettingsColumns() const;
/**
* Set the number of columns to use for the QuickSettings drawer.
*
* @param columns The number of columns to use.
*/
void setQuickSettingsColumns(int columns);
/**
* Whether convergence/docked mode is enabled.
*/
@ -276,6 +291,7 @@ Q_SIGNALS:
void taskSwitcherPreviewsEnabledChanged();
void actionDrawerTopLeftModeChanged();
void actionDrawerTopRightModeChanged();
void quickSettingsColumnsChanged();
void convergenceModeEnabledChanged();
void autoHidePanelsEnabledChanged();
void allowLogoutChanged();

View file

@ -11,6 +11,7 @@ import org.kde.kirigami 2.19 as Kirigami
import org.kde.kcmutils as KCM
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
FormCard.FormCardPage {
id: root
@ -72,6 +73,23 @@ FormCard.FormCardPage {
visible: enabledRepeater.count > 0
}
FormCard.FormCard {
FormCard.FormComboBoxDelegate {
id: statusBarScaleFactorDelegate
text: i18n("Quick Settings Columns")
description: i18n("Maximum number of columns in landscape orientation.")
model: [3, 4, 5, 6]
Component.onCompleted: {
currentIndex = indexOfValue(ShellSettings.Settings.quickSettingsColumns);
dialog.parent = root;
}
onCurrentValueChanged: ShellSettings.Settings.quickSettingsColumns = currentValue
}
}
FormCard.FormSectionText {
text: i18n("Customize the order of quick settings in the pull-down panel and hide them.")
visible: enabledRepeater.count > 0