1 /*
2  * SPDX-FileCopyrightText: 2009 Peter Penz <peter.penz19@gmail.com>
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #include "navigationsettingspage.h"
8 
9 #include "global.h"
10 #include "dolphin_generalsettings.h"
11 
12 #include <KLocalizedString>
13 
14 #include <QButtonGroup>
15 #include <QCheckBox>
16 #include <QFormLayout>
17 #include <QRadioButton>
18 #include <QVBoxLayout>
19 
NavigationSettingsPage(QWidget * parent)20 NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) :
21     SettingsPageBase(parent),
22     m_openArchivesAsFolder(nullptr),
23     m_autoExpandFolders(nullptr),
24     m_openNewTabAfterLastTab(nullptr),
25     m_openNewTabAfterCurrentTab(nullptr)
26 {
27     QFormLayout* topLayout = new QFormLayout(this);
28 
29     // Tabs properties
30     m_openNewTabAfterCurrentTab = new QRadioButton(i18nc("option:radio", "After current tab"));
31     m_openNewTabAfterLastTab = new QRadioButton(i18nc("option:radio", "At end of tab bar"));
32     QButtonGroup* tabsBehaviorGroup = new QButtonGroup(this);
33     tabsBehaviorGroup->addButton(m_openNewTabAfterCurrentTab);
34     tabsBehaviorGroup->addButton(m_openNewTabAfterLastTab);
35     topLayout->addRow(i18nc("@title:group", "Open new tabs: "), m_openNewTabAfterCurrentTab);
36     topLayout->addRow(QString(), m_openNewTabAfterLastTab);
37 
38     topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed));
39 
40     m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"));
41     m_autoExpandFolders = new QCheckBox(i18nc("option:check", "Open folders during drag operations"));
42     topLayout->addRow(i18nc("@title:group", "General: "), m_openArchivesAsFolder);
43     topLayout->addRow(QString(), m_autoExpandFolders);
44 
45     loadSettings();
46 
47     connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
48     connect(m_autoExpandFolders, &QCheckBox::toggled, this, &NavigationSettingsPage::changed);
49     connect(m_openNewTabAfterCurrentTab, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
50     connect(m_openNewTabAfterLastTab, &QRadioButton::toggled, this, &NavigationSettingsPage::changed);
51 }
52 
~NavigationSettingsPage()53 NavigationSettingsPage::~NavigationSettingsPage()
54 {
55 }
56 
applySettings()57 void NavigationSettingsPage::applySettings()
58 {
59     GeneralSettings* settings = GeneralSettings::self();
60     settings->setBrowseThroughArchives(m_openArchivesAsFolder->isChecked());
61     settings->setAutoExpandFolders(m_autoExpandFolders->isChecked());
62     settings->setOpenNewTabAfterLastTab(m_openNewTabAfterLastTab->isChecked());
63 
64     settings->save();
65 }
66 
restoreDefaults()67 void NavigationSettingsPage::restoreDefaults()
68 {
69     GeneralSettings* settings = GeneralSettings::self();
70     settings->useDefaults(true);
71     loadSettings();
72     settings->useDefaults(false);
73 }
74 
loadSettings()75 void NavigationSettingsPage::loadSettings()
76 {
77     m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives());
78     m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders());
79     m_openNewTabAfterLastTab->setChecked(GeneralSettings::openNewTabAfterLastTab());
80     m_openNewTabAfterCurrentTab->setChecked(!m_openNewTabAfterLastTab->isChecked());
81 }
82 
83