]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/viewsettingspage.cpp
8aa3c15976d71484352cc8551623996a9617ace9
[dolphin.git] / src / settings / viewmodes / viewsettingspage.cpp
1 /*
2 * SPDX-FileCopyrightText: 2006 Peter Penz <peter.penz@gmx.at>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "viewsettingspage.h"
8
9 #include "contentdisplaytab.h"
10 #include "generalviewsettingspage.h"
11 #include "viewsettingstab.h"
12 #include <KLocalizedString>
13
14 #include <QTabWidget>
15 #include <QVBoxLayout>
16
17 ViewSettingsPage::ViewSettingsPage(const QUrl &url, QWidget *parent)
18 : SettingsPageBase(parent)
19 , m_tabs()
20 {
21 QVBoxLayout *topLayout = new QVBoxLayout(this);
22 topLayout->setContentsMargins(0, 0, 0, 0);
23
24 tabWidget = new QTabWidget(this);
25 tabWidget->setDocumentMode(true);
26
27 // General View tab
28 GeneralViewSettingsPage *generalViewPage = new GeneralViewSettingsPage(url, tabWidget);
29 tabWidget->addTab(generalViewPage, QIcon::fromTheme(QStringLiteral("description")), i18nc("@title:tab General View settings", "General"));
30 connect(generalViewPage, &GeneralViewSettingsPage::changed, this, &ViewSettingsPage::changed);
31
32 // Content Display Tab
33 contentDisplayTab = new ContentDisplayTab(tabWidget);
34 tabWidget->addTab(contentDisplayTab,
35 QIcon::fromTheme(QStringLiteral("view-choose")),
36 i18nc("@title:tab how file items columns are displayed", "Content Display"));
37 connect(contentDisplayTab, &SettingsPageBase::changed, this, &ViewSettingsPage::changed);
38
39 // Initialize 'Icons' tab
40 ViewSettingsTab *iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget);
41 tabWidget->addTab(iconsTab, QIcon::fromTheme(QStringLiteral("view-list-icons")), i18nc("@title:tab", "Icons"));
42 connect(iconsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
43
44 // Initialize 'Compact' tab
45 ViewSettingsTab *compactTab = new ViewSettingsTab(ViewSettingsTab::CompactMode, tabWidget);
46 tabWidget->addTab(compactTab, QIcon::fromTheme(QStringLiteral("view-list-details")), i18nc("@title:tab", "Compact"));
47 connect(compactTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
48
49 // Initialize 'Details' tab
50 ViewSettingsTab *detailsTab = new ViewSettingsTab(ViewSettingsTab::DetailsMode, tabWidget);
51 tabWidget->addTab(detailsTab, QIcon::fromTheme(QStringLiteral("view-list-tree")), i18nc("@title:tab", "Details"));
52 connect(detailsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
53
54 m_tabs.append(generalViewPage);
55 m_tabs.append(contentDisplayTab);
56 m_tabs.append(iconsTab);
57 m_tabs.append(compactTab);
58 m_tabs.append(detailsTab);
59
60 topLayout->addWidget(tabWidget, 0);
61 }
62
63 ViewSettingsPage::~ViewSettingsPage()
64 {
65 }
66
67 void ViewSettingsPage::applySettings()
68 {
69 for (SettingsPageBase *tab : std::as_const(m_tabs)) {
70 tab->applySettings();
71 }
72 }
73
74 void ViewSettingsPage::restoreDefaults()
75 {
76 for (SettingsPageBase *tab : std::as_const(m_tabs)) {
77 if (tabWidget->currentWidget() == tab) {
78 tab->restoreDefaults();
79 return;
80 }
81 }
82 }
83
84 #include "moc_viewsettingspage.cpp"