1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 | /* ============================================================
*
* This file is a part of digiKam project
* https://www.digikam.org
*
* Date : 2013-04-29
* Description : digiKam XML GUI window - Tool-bar methods.
*
* SPDX-FileCopyrightText: 2013-2025 by Gilles Caulier <caulier dot gilles at gmail dot com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* ============================================================ */
#include "dxmlguiwindow_p.h"
namespace Digikam
{
void DXmlGuiWindow::slotConfToolbars()
{
KConfigGroup group = KSharedConfig::openConfig()->group(configGroupName());
saveMainWindowSettings(group);
KEditToolBar dlg(factory(), this);
QDialogButtonBox* const btnbox = dlg.findChild<QDialogButtonBox*>();
if (btnbox)
{
btnbox->setStandardButtons(btnbox->standardButtons() | QDialogButtonBox::Help);
connect(btnbox->button(QDialogButtonBox::Help), &QPushButton::clicked,
this, []()
{
openOnlineDocumentation(QLatin1String("setup_application"), QLatin1String("toolbars_settings"));
}
);
}
connect(&dlg, SIGNAL(newToolbarConfig()),
this, SLOT(slotNewToolbarConfig()));
(void)dlg.exec();
}
void DXmlGuiWindow::slotNewToolbarConfig()
{
KConfigGroup group = KSharedConfig::openConfig()->group(configGroupName());
applyMainWindowSettings(group);
}
KToolBar* DXmlGuiWindow::mainToolBar() const
{
QList<KToolBar*> toolbars = toolBars();
KToolBar* mainToolbar = nullptr;
for (KToolBar* const toolbar : std::as_const(toolbars))
{
if (toolbar && (toolbar->objectName() == QLatin1String("mainToolBar")))
{<--- Consider using std::find_if algorithm instead of a raw loop.
mainToolbar = toolbar;
break;
}
}
return mainToolbar;
}
void DXmlGuiWindow::showToolBars(bool visible)
{
// We will hide toolbars: store previous state for future restoring.
if (!visible)
{
d->toolbarsVisibility.clear();
const auto bars = toolBars();
for (KToolBar* const toolbar : bars)
{
if (toolbar)
{
bool visibility = toolbar->isVisible();
d->toolbarsVisibility.insert(toolbar, visibility);
}
}
}
// Switch toolbars visibility
for (QMap<KToolBar*, bool>::const_iterator it = d->toolbarsVisibility.constBegin() ;
it != d->toolbarsVisibility.constEnd() ; ++it)
{
KToolBar* const toolbar = it.key();
bool visibility = it.value();
if (toolbar)
{
if (visible && visibility)
{
toolbar->show();
}
else
{
toolbar->hide();
}
}
}
// We will show toolbars: restore previous state.
if (visible)
{
for (QMap<KToolBar*, bool>::const_iterator it = d->toolbarsVisibility.constBegin() ;
it != d->toolbarsVisibility.constEnd() ; ++it)
{
KToolBar* const toolbar = it.key();
bool visibility = it.value();
if (toolbar)
{
visibility ? toolbar->show()
: toolbar->hide();
}
}
}
}
} // namespace Digikam
|