File indexing completed on 2024-09-22 05:16:06

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2009, 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_INSERTCONTROLLER_HPP
0010 #define KASTEN_INSERTCONTROLLER_HPP
0011 
0012 // Kasten gui
0013 #include <Kasten/AbstractXmlGuiController>
0014 
0015 class KXMLGUIClient;
0016 class KSelectAction;
0017 class QAction;
0018 
0019 namespace Kasten {
0020 
0021 class ModelCodecViewManager;
0022 class ModelCodecManager;
0023 namespace If {
0024 class SelectedDataWriteable;
0025 }
0026 class AbstractModelDataGenerator;
0027 
0028 class InsertController : public AbstractXmlGuiController
0029 {
0030     Q_OBJECT
0031 
0032 public:
0033     InsertController(ModelCodecViewManager* modelCodecViewManager,
0034                      ModelCodecManager* modelCodecManager,
0035                      KXMLGUIClient* guiClient);
0036 
0037 public: // AbstractXmlGuiController API
0038     void setTargetModel(AbstractModel* model) override;
0039 
0040 private:
0041     void updateActions();
0042 
0043 private Q_SLOTS:
0044     void onReadOnlyChanged(bool isReadOnly);
0045     void onActionTriggered(QAction* action);
0046     void triggerExecution(Kasten::AbstractModelDataGenerator* generator);
0047 
0048 private:
0049     ModelCodecViewManager* mModelCodecViewManager;
0050     ModelCodecManager* mModelCodecManager;
0051 
0052     AbstractModel* mModel = nullptr;
0053     If::SelectedDataWriteable* mSelectedDataWriteableControl = nullptr;
0054 
0055     KSelectAction* mInsertSelectAction;
0056 };
0057 
0058 }
0059 
0060 #endif