File indexing completed on 2024-06-02 06:03:23

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2011-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_SINGLEVIEWWINDOW_P_HPP
0010 #define KASTEN_SINGLEVIEWWINDOW_P_HPP
0011 
0012 // lib
0013 #include "singleviewwindow.hpp"
0014 // Kasten core
0015 #include <Kasten/KastenCore>
0016 // Qt
0017 #include <QVector>
0018 
0019 class QDragMoveEvent;
0020 class QDropEvent;
0021 
0022 namespace Kasten {
0023 
0024 class SingleViewArea;
0025 class AbstractTool;
0026 class AbstractModelSynchronizer;
0027 class AbstractDocument;
0028 
0029 class SingleViewWindowPrivate
0030 {
0031 public:
0032     SingleViewWindowPrivate(SingleViewWindow* parent,
0033                             AbstractView* view);
0034     SingleViewWindowPrivate(const SingleViewWindowPrivate&) = delete;
0035 
0036     ~SingleViewWindowPrivate();
0037 
0038     SingleViewWindowPrivate& operator=(const SingleViewWindowPrivate&) = delete;
0039 
0040 public:
0041     void init();
0042 
0043 public:
0044     void setView(AbstractView* view);
0045     void addXmlGuiController(AbstractXmlGuiController* controller);
0046     void addTool(AbstractToolView* toolView);
0047 
0048 public: // If::WidgetsDockable API
0049     QVector<ToolViewDockWidget*> dockWidgets() const;
0050 
0051 private:
0052     AbstractView* view() const;
0053     SingleViewArea* viewArea() const;
0054 
0055 private: // Q_SLOTS
0056     void onTitleChanged(const QString& newTitle);
0057     void onContentFlagsChanged(Kasten::ContentFlags contentFlags);
0058     void onLocalSyncStateChanged(Kasten::LocalSyncState newState);
0059     void onToolVisibilityChanged(bool isVisible);
0060     void onSynchronizerDeleted(QObject* synchronizer);
0061 
0062 private:
0063     Q_DECLARE_PUBLIC(SingleViewWindow)
0064 
0065 private:
0066     SingleViewWindow* const q_ptr;
0067 
0068     AbstractView* mView = nullptr;
0069     AbstractDocument* mDocument = nullptr;
0070     AbstractModelSynchronizer* mSynchronizer = nullptr;
0071 
0072     SingleViewArea* const mViewArea;
0073     QVector<AbstractXmlGuiController*> mControllers;
0074     QVector<ToolViewDockWidget*> mDockWidgets;
0075     QVector<AbstractTool*> mTools;
0076 };
0077 
0078 inline QVector<ToolViewDockWidget*> SingleViewWindowPrivate::dockWidgets() const { return mDockWidgets; }
0079 inline AbstractView* SingleViewWindowPrivate::view() const { return mView; }
0080 inline SingleViewArea* SingleViewWindowPrivate::viewArea() const { return mViewArea; }
0081 
0082 }
0083 
0084 #endif