File indexing completed on 2024-04-21 05:54:05

0001 /*
0002     SPDX-FileCopyrightText: 2005-2007, 2010 Tom Albers <toma@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "setup.h"
0008 
0009 // Qt includes.
0010 #include <QIcon>
0011 
0012 // KDE includes.
0013 #include <KConfigGroup>
0014 #include <KSharedConfig>
0015 #include <KWindowConfig>
0016 #include <klocalizedstring.h>
0017 
0018 // Local includes.
0019 #include "setupgeneral.h"
0020 #include "setupmaximized.h"
0021 #include "setupnotifications.h"
0022 #include "setuptiming.h"
0023 
0024 class SetupPriv
0025 {
0026 public:
0027     SetupGeneral *generalPage;
0028     SetupTiming *timingPage;
0029     SetupMaximized *maximizedPage;
0030     SetupNotifications *notificationsPage;
0031 };
0032 
0033 Setup::Setup(QWidget *parent)
0034     : KPageDialog(parent)
0035 {
0036     setFaceType(List);
0037     d = new SetupPriv;
0038 
0039     d->generalPage = new SetupGeneral(this);
0040     KPageWidgetItem *page1 = addPage(d->generalPage, i18n("General Settings"));
0041     page1->setIcon(QIcon::fromTheme("configure"));
0042 
0043     d->timingPage = new SetupTiming(this);
0044     KPageWidgetItem *page2 = addPage(d->timingPage, i18n("Timings"));
0045     page2->setIcon(QIcon::fromTheme("timings"));
0046 
0047     d->maximizedPage = new SetupMaximized(this);
0048     KPageWidgetItem *page3 = addPage(d->maximizedPage, i18n("During Breaks"));
0049     page3->setIcon(QIcon::fromTheme("duringbreaks")); // krazy:exclude=iconnames
0050 
0051     d->notificationsPage = new SetupNotifications(this);
0052     KPageWidgetItem *page4 = addPage(d->notificationsPage, i18n("Actions"));
0053     page4->setIcon(QIcon::fromTheme("configure")); // krazy:exclude=iconnames
0054 
0055     connect(this, &Setup::accepted, this, &Setup::slotOkClicked);
0056 
0057     connect(d->generalPage, &SetupGeneral::useIdleTimerChanged, d->maximizedPage, &SetupMaximized::slotSetUseIdleTimer);
0058     d->maximizedPage->slotSetUseIdleTimer(d->generalPage->useIdleTimer());
0059     connect(d->generalPage, &SetupGeneral::useIdleTimerChanged, d->timingPage, &SetupTiming::slotSetUseIdleTimer);
0060     d->timingPage->slotSetUseIdleTimer(d->generalPage->useIdleTimer());
0061 
0062     KConfigGroup config = KSharedConfig::openConfig()->group("SetupDimensions");
0063     KWindowConfig::restoreWindowSize(windowHandle(), config);
0064     show();
0065 }
0066 
0067 Setup::~Setup()
0068 {
0069     KConfigGroup config = KSharedConfig::openConfig()->group("SetupDimensions");
0070     KWindowConfig::saveWindowSize(windowHandle(), config);
0071     delete d;
0072 }
0073 
0074 void Setup::slotOkClicked()
0075 {
0076     d->generalPage->applySettings();
0077     d->timingPage->applySettings();
0078     d->maximizedPage->applySettings();
0079     d->notificationsPage->save();
0080     close();
0081 }