File indexing completed on 2025-04-27 03:58:32

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2013-04-29
0007  * Description : a full screen settings widget
0008  *
0009  * SPDX-FileCopyrightText: 2013-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  *
0011  * SPDX-License-Identifier: GPL-2.0-or-later
0012  *
0013  * ============================================================ */
0014 
0015 #include "fullscreensettings.h"
0016 
0017 // Qt includes
0018 
0019 #include <QString>
0020 #include <QVBoxLayout>
0021 #include <QCheckBox>
0022 #include <QApplication>
0023 #include <QStyle>
0024 
0025 // KDE includes
0026 
0027 #include <kconfiggroup.h>
0028 #include <klocalizedstring.h>
0029 
0030 // Local includes
0031 
0032 #include "dxmlguiwindow.h"
0033 
0034 namespace Digikam
0035 {
0036 
0037 class Q_DECL_HIDDEN FullScreenSettings::Private
0038 {
0039 public:
0040 
0041     explicit Private()
0042       : options      (FS_NONE),
0043         hideToolBars (nullptr),
0044         hideThumbBar (nullptr),
0045         hideSideBars (nullptr),
0046         hideStatusBar(nullptr)
0047     {
0048     }
0049 
0050     int        options;
0051 
0052     QCheckBox* hideToolBars;
0053     QCheckBox* hideThumbBar;
0054     QCheckBox* hideSideBars;
0055     QCheckBox* hideStatusBar;
0056 };
0057 
0058 FullScreenSettings::FullScreenSettings(int options, QWidget* const parent)
0059     : QGroupBox(i18n("Full-screen Options"), parent),
0060       d(new Private)
0061 {
0062     const int spacing        = qMin(QApplication::style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing),
0063                              QApplication::style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing));
0064 
0065     d->options               = options;
0066     QVBoxLayout* const vlay  = new QVBoxLayout(this);
0067     d->hideToolBars          = new QCheckBox(i18n("H&ide toolbars"),  this);
0068     d->hideToolBars->setWhatsThis(i18n("Hide all toolbars when window switch in full-screen mode."));
0069 
0070     d->hideThumbBar          = new QCheckBox(i18n("Hide &thumbbar"),  this);
0071     d->hideThumbBar->setWhatsThis(i18n("Hide thumbbar view when window switch in full-screen mode."));
0072 
0073     d->hideSideBars          = new QCheckBox(i18n("Hide &sidebars"),  this);
0074     d->hideSideBars->setWhatsThis(i18n("Hide all side-bars when window switch in full-screen mode."));
0075 
0076     d->hideStatusBar         = new QCheckBox(i18n("Hide st&atusbar"), this);
0077     d->hideStatusBar->setWhatsThis(i18n("Hide statusbar when window switch in full-screen mode."));
0078 
0079     vlay->addWidget(d->hideToolBars);
0080     vlay->addWidget(d->hideThumbBar);
0081     vlay->addWidget(d->hideSideBars);
0082     vlay->addWidget(d->hideStatusBar);
0083     vlay->setContentsMargins(spacing, spacing, spacing, spacing);
0084     vlay->setSpacing(0);
0085 
0086     if (!(options & FS_TOOLBARS))
0087     {
0088         d->hideToolBars->hide();
0089     }
0090 
0091     if (!(options & FS_THUMBBAR))
0092     {
0093         d->hideThumbBar->hide();
0094     }
0095 
0096     if (!(options & FS_SIDEBARS))
0097     {
0098         d->hideSideBars->hide();
0099     }
0100 
0101     if (!(options & FS_STATUSBAR))
0102     {
0103         d->hideStatusBar->hide();
0104     }
0105 }
0106 
0107 FullScreenSettings::~FullScreenSettings()
0108 {
0109     delete d;
0110 }
0111 
0112 void FullScreenSettings::readSettings(const KConfigGroup& group)
0113 {
0114     if (d->options & FS_TOOLBARS)
0115     {
0116         d->hideToolBars->setChecked(group.readEntry(s_configFullScreenHideToolBarsEntry,   false));
0117     }
0118 
0119     if (d->options & FS_THUMBBAR)
0120     {
0121         d->hideThumbBar->setChecked(group.readEntry(s_configFullScreenHideThumbBarEntry,   true));
0122     }
0123 
0124     if (d->options & FS_SIDEBARS)
0125     {
0126         d->hideSideBars->setChecked(group.readEntry(s_configFullScreenHideSideBarsEntry,   false));
0127     }
0128 
0129     if (d->options & FS_STATUSBAR)
0130     {
0131         d->hideStatusBar->setChecked(group.readEntry(s_configFullScreenHideStatusBarEntry, false));
0132     }
0133 }
0134 
0135 void FullScreenSettings::saveSettings(KConfigGroup& group)
0136 {
0137     if (d->options & FS_TOOLBARS)
0138     {
0139         group.writeEntry(s_configFullScreenHideToolBarsEntry,  d->hideToolBars->isChecked());
0140     }
0141 
0142     if (d->options & FS_THUMBBAR)
0143     {
0144         group.writeEntry(s_configFullScreenHideThumbBarEntry,  d->hideThumbBar->isChecked());
0145     }
0146 
0147     if (d->options & FS_SIDEBARS)
0148     {
0149         group.writeEntry(s_configFullScreenHideSideBarsEntry,  d->hideSideBars->isChecked());
0150     }
0151 
0152     if (d->options & FS_STATUSBAR)
0153     {
0154         group.writeEntry(s_configFullScreenHideStatusBarEntry, d->hideStatusBar->isChecked());
0155     }
0156 
0157     group.sync();
0158 }
0159 
0160 } // namespace Digikam
0161 
0162 #include "moc_fullscreensettings.cpp"