1 /*
2     This file is part of the Kasten Framework, made within the KDE community.
3 
4     SPDX-FileCopyrightText: 2007-2008, 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8 
9 #ifndef KASTEN_COPYASCONTROLLER_HPP
10 #define KASTEN_COPYASCONTROLLER_HPP
11 
12 // Kasten gui
13 #include <Kasten/AbstractXmlGuiController>
14 
15 class KXMLGUIClient;
16 class KSelectAction;
17 class QAction;
18 
19 namespace Kasten {
20 
21 class ModelCodecViewManager;
22 class ModelCodecManager;
23 namespace If {
24 class DataSelectable;
25 }
26 class AbstractModelStreamEncoder;
27 class AbstractModelSelection;
28 
29 class CopyAsController : public AbstractXmlGuiController
30 {
31     Q_OBJECT
32 
33 public:
34     CopyAsController(ModelCodecViewManager* modelCodecViewManager,
35                      ModelCodecManager* modelCodecManager,
36                      KXMLGUIClient* guiClient);
37 
38 public: // AbstractXmlGuiController API
39     void setTargetModel(AbstractModel* model) override;
40 
41 private Q_SLOTS:
42     void updateActions();
43     void onActionTriggered(QAction* action);
44     void triggerExecution(Kasten::AbstractModelStreamEncoder* encoder,
45                           const Kasten::AbstractModelSelection* selection);
46 
47 private:
48     ModelCodecViewManager* mModelCodecViewManager;
49     ModelCodecManager* mModelCodecManager;
50 
51     AbstractModel* mModel = nullptr;
52     If::DataSelectable* mSelectionControl = nullptr;
53 
54     KSelectAction* mCopyAsSelectAction;
55 };
56 
57 }
58 
59 #endif
60