File indexing completed on 2024-05-12 17:18:55

0001 /*
0002  * SPDX-FileCopyrightText: 2006 Peter Penz <peter.penz@gmx.at>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "viewsettingspage.h"
0008 
0009 #include "contentdisplaytab.h"
0010 #include "generalviewsettingspage.h"
0011 #include "viewsettingstab.h"
0012 #include <KLocalizedString>
0013 
0014 #include <QTabWidget>
0015 #include <QVBoxLayout>
0016 
0017 ViewSettingsPage::ViewSettingsPage(const QUrl &url, QWidget *parent)
0018     : SettingsPageBase(parent)
0019     , m_tabs()
0020 {
0021     QVBoxLayout *topLayout = new QVBoxLayout(this);
0022     topLayout->setContentsMargins(0, 0, 0, 0);
0023 
0024     tabWidget = new QTabWidget(this);
0025     tabWidget->setDocumentMode(true);
0026 
0027     // General View tab
0028     GeneralViewSettingsPage *generalViewPage = new GeneralViewSettingsPage(url, tabWidget);
0029     tabWidget->addTab(generalViewPage, QIcon::fromTheme(QStringLiteral("description")), i18nc("@title:tab General View settings", "General"));
0030     connect(generalViewPage, &GeneralViewSettingsPage::changed, this, &ViewSettingsPage::changed);
0031 
0032     // Content Display Tab
0033     contentDisplayTab = new ContentDisplayTab(tabWidget);
0034     tabWidget->addTab(contentDisplayTab,
0035                       QIcon::fromTheme(QStringLiteral("view-choose")),
0036                       i18nc("@title:tab how file items columns are displayed", "Content Display"));
0037     connect(contentDisplayTab, &SettingsPageBase::changed, this, &ViewSettingsPage::changed);
0038 
0039     // Initialize 'Icons' tab
0040     ViewSettingsTab *iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget);
0041     tabWidget->addTab(iconsTab, QIcon::fromTheme(QStringLiteral("view-list-icons")), i18nc("@title:tab", "Icons"));
0042     connect(iconsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
0043 
0044     // Initialize 'Compact' tab
0045     ViewSettingsTab *compactTab = new ViewSettingsTab(ViewSettingsTab::CompactMode, tabWidget);
0046     tabWidget->addTab(compactTab, QIcon::fromTheme(QStringLiteral("view-list-details")), i18nc("@title:tab", "Compact"));
0047     connect(compactTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
0048 
0049     // Initialize 'Details' tab
0050     ViewSettingsTab *detailsTab = new ViewSettingsTab(ViewSettingsTab::DetailsMode, tabWidget);
0051     tabWidget->addTab(detailsTab, QIcon::fromTheme(QStringLiteral("view-list-tree")), i18nc("@title:tab", "Details"));
0052     connect(detailsTab, &ViewSettingsTab::changed, this, &ViewSettingsPage::changed);
0053 
0054     m_tabs.append(generalViewPage);
0055     m_tabs.append(contentDisplayTab);
0056     m_tabs.append(iconsTab);
0057     m_tabs.append(compactTab);
0058     m_tabs.append(detailsTab);
0059 
0060     topLayout->addWidget(tabWidget, 0);
0061 }
0062 
0063 ViewSettingsPage::~ViewSettingsPage()
0064 {
0065 }
0066 
0067 void ViewSettingsPage::applySettings()
0068 {
0069     for (SettingsPageBase *tab : std::as_const(m_tabs)) {
0070         tab->applySettings();
0071     }
0072 }
0073 
0074 void ViewSettingsPage::restoreDefaults()
0075 {
0076     for (SettingsPageBase *tab : std::as_const(m_tabs)) {
0077         if (tabWidget->currentWidget() == tab) {
0078             tab->restoreDefaults();
0079             return;
0080         }
0081     }
0082 }
0083 
0084 #include "moc_viewsettingspage.cpp"