diff options
| author | Benedikt Thiemer <[email protected]> | 2024-03-15 16:28:35 +0000 |
|---|---|---|
| committer | Felix Ernst <[email protected]> | 2024-03-15 16:28:35 +0000 |
| commit | 1d4355f619ca8098d12f330741017e417a756083 (patch) | |
| tree | efd68ed68014947d7bd6dd415408cb0a7bf5d42e /src/settings/interface/panelsettingspage.cpp | |
| parent | 89822d3ff22d7694baa6659824b53f5dd3f0ccb2 (diff) | |
Add settings page for Panels
For now this just includes the settings for the information panel.
Prior to this commit the options for configuring the information panel
were only exposed via right clicking the information panel. This was
not discoverable enough. Our guidelines also state that much. See:
https://community.kde.org/Get_Involved/Design/Frequently_Discussed_Topics#Context_menus_are_not_enough
The settings page is missing the "Configure" button for the entries in
the information panel, which can only be found in the context menu.
This is because I thought it would be weird to move it to the settings
page. (The "configure" button is used to select the entries for the
information panel)
BUG: 480243
FIXED-IN: 24.05
Diffstat (limited to 'src/settings/interface/panelsettingspage.cpp')
| -rw-r--r-- | src/settings/interface/panelsettingspage.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/settings/interface/panelsettingspage.cpp b/src/settings/interface/panelsettingspage.cpp new file mode 100644 index 000000000..3cd153656 --- /dev/null +++ b/src/settings/interface/panelsettingspage.cpp @@ -0,0 +1,105 @@ +/* + * SPDX-FileCopyrightText: 2024 Benedikt Thiemer <[email protected]> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "panelsettingspage.h" +#include "dolphin_informationpanelsettings.h" +#include "global.h" +#include "kformat.h" +#include "qbuttongroup.h" + +#include <KLocalizedString> + +#include <QCheckBox> +#include <QFormLayout> +#include <QLabel> +#include <QRadioButton> +#include <QSpacerItem> + +PanelSettingsPage::PanelSettingsPage(QWidget *parent) + : SettingsPageBase(parent) + , m_showPreview(nullptr) + , m_autoPlayMedia(nullptr) + , m_showHovered(nullptr) + , m_dateFormatLong(nullptr) + , m_dateFormatShort(nullptr) + +{ + QFormLayout *topLayout = new QFormLayout(this); + + QString m_longDateTime = (new KFormat)->formatRelativeDateTime(QDateTime(QDate(2024, 02, 28), QTime(10, 0)), QLocale::LongFormat); + QString m_shortDateTime = (new KFormat)->formatRelativeDateTime(QDateTime(QDate(2024, 02, 28), QTime(10, 0)), QLocale::ShortFormat); + + m_showPreview = new QCheckBox(i18nc("@option:check", "Show previews"), this); + m_autoPlayMedia = new QCheckBox(i18nc("@option:check", "Auto-play media files"), this); + m_showHovered = new QCheckBox(i18nc("@option:check", "Show item on hover"), this); + m_dateFormatLong = new QRadioButton(i18nc("@option:check", "Use &long date, for example '%1'", m_longDateTime), this); + m_dateFormatShort = new QRadioButton(i18nc("@option:check", "Use &condensed date, for example '%1'", m_shortDateTime), this); + + QButtonGroup *dateFormatGroup = new QButtonGroup(this); + dateFormatGroup->addButton(m_dateFormatLong); + dateFormatGroup->addButton(m_dateFormatShort); + + topLayout->addRow(i18nc("@label:checkbox", "Information Panel:"), m_showPreview); + topLayout->addRow(QString(), m_autoPlayMedia); + topLayout->addRow(QString(), m_showHovered); + topLayout->addRow(QString(), m_dateFormatLong); + topLayout->addRow(QString(), m_dateFormatShort); + topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); + + QLabel *contextMenuHint = + new QLabel(i18nc("@info", "Panel settings are also available through their context menu. Open it by pressing the right mouse button on a panel."), + this); + contextMenuHint->setWordWrap(true); + topLayout->addRow(contextMenuHint); + + loadSettings(); + + connect(m_showPreview, &QCheckBox::toggled, this, &PanelSettingsPage::changed); + connect(m_showPreview, &QCheckBox::toggled, this, &PanelSettingsPage::showPreviewToggled); + connect(m_autoPlayMedia, &QCheckBox::toggled, this, &PanelSettingsPage::changed); + connect(m_showHovered, &QCheckBox::toggled, this, &PanelSettingsPage::changed); + connect(m_dateFormatLong, &QRadioButton::toggled, this, &PanelSettingsPage::changed); + connect(m_dateFormatShort, &QRadioButton::toggled, this, &PanelSettingsPage::changed); +} + +PanelSettingsPage::~PanelSettingsPage() +{ +} + +void PanelSettingsPage::applySettings() +{ + InformationPanelSettings *settings = InformationPanelSettings::self(); + settings->setPreviewsShown(m_showPreview->isChecked()); + settings->setPreviewsAutoPlay(m_autoPlayMedia->isChecked()); + settings->setShowHovered(m_showHovered->isChecked()); + settings->setDateFormat(m_dateFormatShort->isChecked()); + settings->save(); +} + +void PanelSettingsPage::restoreDefaults() +{ + InformationPanelSettings *settings = InformationPanelSettings::self(); + settings->useDefaults(true); + loadSettings(); + settings->useDefaults(false); +} + +void PanelSettingsPage::loadSettings() +{ + m_showPreview->setChecked(InformationPanelSettings::previewsShown()); + m_autoPlayMedia->setChecked(InformationPanelSettings::previewsAutoPlay()); + m_autoPlayMedia->setEnabled(InformationPanelSettings::previewsShown()); + m_showHovered->setChecked(InformationPanelSettings::showHovered()); + m_dateFormatLong->setChecked(!InformationPanelSettings::dateFormat()); + m_dateFormatShort->setChecked(InformationPanelSettings::dateFormat()); +} + +void PanelSettingsPage::showPreviewToggled() +{ + const bool checked = m_showPreview->isChecked(); + m_autoPlayMedia->setEnabled(checked); +} + +#include "moc_panelsettingspage.cpp" |
