File indexing completed on 2024-04-21 05:54:01

0001 /*
0002     This file is part of the Okteta program, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2006-2008 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0007 */
0008 
0009 #ifndef OKTETAMAINWINDOW_HPP
0010 #define OKTETAMAINWINDOW_HPP
0011 
0012 // Kasten gui
0013 #include <Kasten/ShellWindow>
0014 
0015 template <class T> class QVector;
0016 class QMimeData;
0017 
0018 namespace Kasten {
0019 
0020 class OktetaProgram;
0021 class DocumentManager;
0022 class AbstractToolViewFactory;
0023 class AbstractToolFactory;
0024 class AbstractXmlGuiControllerFactory;
0025 
0026 class OktetaMainWindow : public ShellWindow
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031     explicit OktetaMainWindow(OktetaProgram* program);
0032     ~OktetaMainWindow() override;
0033 
0034 protected: // KMainWindow API
0035     bool queryClose() override;
0036 
0037     void saveProperties(KConfigGroup& configGroup) override;
0038     void readProperties(const KConfigGroup& configGroup) override;
0039 
0040 private:
0041     void setupControllers();
0042     void addToolFromFactory(const AbstractToolViewFactory& toolViewFactory,
0043                             const AbstractToolFactory& toolFactory);
0044     void addXmlGuiControllerFromFactory(const AbstractXmlGuiControllerFactory& factory);
0045 
0046 private Q_SLOTS:
0047     void onDataOffered(const QMimeData* mimeData, bool& accept);
0048     void onDataDropped(const QMimeData* mimeData);
0049     void onCloseRequest(const QVector<Kasten::AbstractView*>& views);
0050     void onNewDocumentRequested();
0051 
0052 private:
0053     OktetaProgram* mProgram;
0054 };
0055 
0056 }
0057 
0058 #endif