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 : digiKam XML GUI window - Tool-bar methods.
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 "dxmlguiwindow_p.h"
0016 
0017 namespace Digikam
0018 {
0019 
0020 void DXmlGuiWindow::slotConfToolbars()
0021 {
0022     KConfigGroup group = KSharedConfig::openConfig()->group(configGroupName());
0023     saveMainWindowSettings(group);
0024 
0025     KEditToolBar dlg(factory(), this);
0026 
0027     QDialogButtonBox* const btnbox = dlg.findChild<QDialogButtonBox*>();
0028 
0029     if (btnbox)
0030     {
0031         btnbox->setStandardButtons(btnbox->standardButtons() | QDialogButtonBox::Help);
0032 
0033         connect(btnbox->button(QDialogButtonBox::Help), &QPushButton::clicked,
0034                 this, []()
0035             {
0036                 openOnlineDocumentation(QLatin1String("setup_application"), QLatin1String("toolbars_settings"));
0037             }
0038         );
0039     }
0040 
0041     connect(&dlg, SIGNAL(newToolbarConfig()),
0042             this, SLOT(slotNewToolbarConfig()));
0043 
0044     (void)dlg.exec();
0045 }
0046 
0047 void DXmlGuiWindow::slotNewToolbarConfig()
0048 {
0049     KConfigGroup group = KSharedConfig::openConfig()->group(configGroupName());
0050     applyMainWindowSettings(group);
0051 }
0052 
0053 KToolBar* DXmlGuiWindow::mainToolBar() const
0054 {
0055     QList<KToolBar*> toolbars = toolBars();
0056     KToolBar* mainToolbar     = nullptr;
0057 
0058     Q_FOREACH (KToolBar* const toolbar, toolbars)
0059     {
0060         if (toolbar && (toolbar->objectName() == QLatin1String("mainToolBar")))
0061         {
0062             mainToolbar = toolbar;
0063             break;
0064         }
0065     }
0066 
0067     return mainToolbar;
0068 }
0069 
0070 void DXmlGuiWindow::showToolBars(bool visible)
0071 {
0072     // We will hide toolbars: store previous state for future restoring.
0073 
0074     if (!visible)
0075     {
0076         d->toolbarsVisibility.clear();
0077 
0078         Q_FOREACH (KToolBar* const toolbar, toolBars())
0079         {
0080             if (toolbar)
0081             {
0082                 bool visibility = toolbar->isVisible();
0083                 d->toolbarsVisibility.insert(toolbar, visibility);
0084             }
0085         }
0086     }
0087 
0088     // Switch toolbars visibility
0089 
0090     for (QMap<KToolBar*, bool>::const_iterator it = d->toolbarsVisibility.constBegin() ;
0091          it != d->toolbarsVisibility.constEnd() ; ++it)
0092     {
0093         KToolBar* const toolbar = it.key();
0094         bool visibility         = it.value();
0095 
0096         if (toolbar)
0097         {
0098             if (visible && visibility)
0099             {
0100                 toolbar->show();
0101             }
0102             else
0103             {
0104                 toolbar->hide();
0105             }
0106         }
0107     }
0108 
0109     // We will show toolbars: restore previous state.
0110 
0111     if (visible)
0112     {
0113         for (QMap<KToolBar*, bool>::const_iterator it = d->toolbarsVisibility.constBegin() ;
0114              it != d->toolbarsVisibility.constEnd() ; ++it)
0115         {
0116             KToolBar* const toolbar = it.key();
0117             bool visibility         = it.value();
0118 
0119             if (toolbar)
0120             {
0121                 visibility ? toolbar->show()
0122                            : toolbar->hide();
0123             }
0124         }
0125     }
0126 }
0127 
0128 } // namespace Digikam