File indexing completed on 2024-05-12 16:01:54

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "KisSelectedShapesProxy.h"
0008 
0009 #include "kis_signal_auto_connection.h"
0010 #include <KoShapeManager.h>
0011 #include <KoSelection.h>
0012 
0013 
0014 struct KisSelectedShapesProxy::Private
0015 {
0016     KoShapeManager *globalShapeManager;
0017     QPointer<KoShapeManager> shapeManager;
0018     KisSignalAutoConnectionsStore shapeManagerConnections;
0019 };
0020 
0021 KisSelectedShapesProxy::KisSelectedShapesProxy(KoShapeManager *globalShapeManager)
0022     : m_d(new Private())
0023 {
0024     m_d->globalShapeManager = globalShapeManager;
0025 
0026     connect(m_d->globalShapeManager->selection(),
0027             SIGNAL(currentLayerChanged(const KoShapeLayer*)),
0028             SIGNAL(currentLayerChanged(const KoShapeLayer*)));
0029 }
0030 
0031 KisSelectedShapesProxy::~KisSelectedShapesProxy()
0032 {
0033 
0034 }
0035 
0036 void KisSelectedShapesProxy::setShapeManager(KoShapeManager *shapeManager)
0037 {
0038     if (shapeManager != m_d->shapeManager) {
0039         m_d->shapeManager = shapeManager;
0040 
0041         m_d->shapeManagerConnections.clear();
0042 
0043         if (m_d->shapeManager) {
0044             m_d->shapeManagerConnections.addConnection(
0045                 m_d->shapeManager, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
0046             m_d->shapeManagerConnections.addConnection(
0047                 m_d->shapeManager, SIGNAL(selectionContentChanged()), this, SIGNAL(selectionContentChanged()));
0048         }
0049 
0050         emit selectionChanged();
0051     }
0052 }
0053 
0054 KoSelection *KisSelectedShapesProxy::selection()
0055 {
0056     return m_d->shapeManager ?
0057         m_d->shapeManager->selection() :
0058         m_d->globalShapeManager->selection();
0059 }
0060