File indexing completed on 2024-06-16 05:25:07

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2010, 2012 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_VIEWPROFILECONTROLLER_HPP
0010 #define KASTEN_VIEWPROFILECONTROLLER_HPP
0011 
0012 // Okteta Kasten gui
0013 #include <Kasten/Okteta/ByteArrayViewProfile>
0014 // Kasten gui
0015 #include <Kasten/AbstractXmlGuiController>
0016 // Kasten core
0017 #include <Kasten/KastenCore>
0018 
0019 class KXMLGUIClient;
0020 class KActionMenu;
0021 class QActionGroup;
0022 class QAction;
0023 
0024 namespace Kasten {
0025 class ByteArrayViewProfileManager;
0026 class ByteArrayViewProfileSynchronizer;
0027 class ByteArrayView;
0028 
0029 class ViewProfileController : public AbstractXmlGuiController
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     ViewProfileController(ByteArrayViewProfileManager* viewProfileManager,
0035                           QWidget* parentWidget,
0036                           KXMLGUIClient* guiClient);
0037 
0038 public: // AbstractXmlGuiController API
0039     void setTargetModel(AbstractModel* model) override;
0040 
0041 private Q_SLOTS: // update slots
0042     void onViewProfileChanged(const Kasten::ByteArrayViewProfile::Id& viewProfileId);
0043     void onLocalSyncStateChanged(Kasten::LocalSyncState localSyncState);
0044 
0045     void onViewProfilesChanged();
0046 
0047 private Q_SLOTS: // action slots
0048     void onCreateNewActionTriggered();
0049     void onResetChangesActionTriggered();
0050     void onSaveChangesActionTriggered();
0051     void onViewProfileTriggered(QAction* action);
0052 
0053 private Q_SLOTS: // execute slots
0054     void addNewViewProfile(const Kasten::ByteArrayViewProfile& viewProfile);
0055 
0056 private:
0057     ByteArrayViewProfileManager* mViewProfileManager;
0058     QWidget* mParentWidget;
0059 
0060     ByteArrayView* mByteArrayView = nullptr;
0061     ByteArrayViewProfileSynchronizer* mByteArrayViewProfileSynchronizer = nullptr;
0062 
0063     // menu
0064     KActionMenu* mViewProfileActionMenu;
0065 
0066     QAction* mCreateNewAction;
0067     QAction* mResetChangesAction;
0068     QAction* mSaveChangesAction;
0069     QActionGroup* mViewProfilesActionGroup;
0070 };
0071 
0072 }
0073 
0074 #endif