Pimcommon

customtoolswidgetng.cpp
1/*
2 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "customtoolswidgetng.h"
8#include "customtoolsplugin.h"
9#include "customtoolsviewinterface.h"
10
11#include <KToggleAction>
12
13#include <QHBoxLayout>
14#include <QStackedWidget>
15
16using namespace PimCommon;
17
18class PimCommon::CustomToolsWidgetNgPrivate
19{
20public:
21 CustomToolsWidgetNgPrivate() = default;
22
23 QStackedWidget *mStackedWidget = nullptr;
25};
26
27CustomToolsWidgetNg::CustomToolsWidgetNg(QWidget *parent)
28 : QWidget(parent)
29 , d(new PimCommon::CustomToolsWidgetNgPrivate)
30{
31 auto lay = new QHBoxLayout(this);
32 lay->setContentsMargins({});
33 d->mStackedWidget = new QStackedWidget;
34 d->mStackedWidget->setObjectName(QLatin1StringView("stackedwidget"));
35 lay->addWidget(d->mStackedWidget);
36 hide();
37}
38
39CustomToolsWidgetNg::~CustomToolsWidgetNg() = default;
40
41void CustomToolsWidgetNg::addCustomToolViewInterface(PimCommon::CustomToolsViewInterface *plugin)
42{
43 d->mListInterfaceView.append(plugin);
44 d->mStackedWidget->addWidget(plugin);
45}
46
47void CustomToolsWidgetNg::initializeView(KActionCollection *ac, const QList<CustomToolsPlugin *> &localPluginsList)
48{
49 for (CustomToolsPlugin *plugin : localPluginsList) {
50 PimCommon::CustomToolsViewInterface *localCreateView = plugin->createView(ac, this);
51 d->mListInterfaceView.append(localCreateView);
52 d->mStackedWidget->addWidget(localCreateView);
53 }
54}
55
56void CustomToolsWidgetNg::slotToolsWasClosed()
57{
58 for (PimCommon::CustomToolsViewInterface *interface : std::as_const(d->mListInterfaceView)) {
59 interface->action()->setChecked(false);
60 }
61 hide();
62}
63
64void CustomToolsWidgetNg::slotActivateView(QWidget *w)
65{
66 if (w) {
67 d->mStackedWidget->setCurrentWidget(w);
68 setVisible(true);
69 for (PimCommon::CustomToolsViewInterface *interface : std::as_const(d->mListInterfaceView)) {
70 if (interface != w) {
71 interface->action()->setChecked(false);
72 }
73 }
74 Q_EMIT toolActivated();
75 } else {
76 setVisible(false);
77 slotToolsWasClosed();
78 }
79}
80
81QList<KToggleAction *> CustomToolsWidgetNg::actionList() const
82{
83 QList<KToggleAction *> lstActions;
84 lstActions.reserve(d->mListInterfaceView.count());
85 for (PimCommon::CustomToolsViewInterface *interface : std::as_const(d->mListInterfaceView)) {
86 lstActions << interface->action();
87 }
88 return lstActions;
89}
90
91void CustomToolsWidgetNg::setText(const QString &text)
92{
93 if (isVisible()) {
94 auto currentWidget = d->mStackedWidget->currentWidget();
95 auto it = std::find_if(d->mListInterfaceView.cbegin(), d->mListInterfaceView.cend(), [currentWidget](auto interface) {
96 return interface == currentWidget;
97 });
98 if (it != d->mListInterfaceView.cend()) {
99 (*it)->setText(text);
100 }
101 }
102}
103
104#include "moc_customtoolswidgetng.cpp"
The CustomToolsPlugin class.
The CustomToolsViewInterface class.
folderdialogacltab.h
void reserve(qsizetype size)
Q_EMITQ_EMIT
void setObjectName(QAnyStringView name)
void hide()
virtual void setVisible(bool visible)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:23 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.