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