File indexing completed on 2024-04-28 04:37:28
0001 /* 0002 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_UICONTROLLER_H 0008 #define KDEVPLATFORM_UICONTROLLER_H 0009 0010 #include "shellexport.h" 0011 0012 #include <KSharedConfig> 0013 0014 #include <interfaces/iuicontroller.h> 0015 #include <interfaces/iassistant.h> 0016 #include <sublime/controller.h> 0017 0018 class QListWidgetItem; 0019 0020 namespace Sublime { 0021 class ToolDocument; 0022 } 0023 0024 namespace KDevelop { 0025 0026 class Core; 0027 class MainWindow; 0028 class UiControllerPrivate; 0029 0030 class KDEVPLATFORMSHELL_EXPORT UiController: public Sublime::Controller, public IUiController 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 explicit UiController(Core *core); 0036 ~UiController() override; 0037 0038 /** @return area for currently active sublime mainwindow or 0 if 0039 no sublime mainwindow is active.*/ 0040 Sublime::Area *activeArea() override; 0041 /** @return active sublime mainwindow or 0 if no such mainwindow is active.*/ 0042 Sublime::MainWindow *activeSublimeWindow(); 0043 /** @return active sublime mainwindow or 0 if no such mainwindow is active.*/ 0044 KParts::MainWindow *activeMainWindow() override; 0045 0046 /** @return default main window - the main window for default area in the shell. 0047 No guarantee is given that it always exists so this method may return 0.*/ 0048 MainWindow *defaultMainWindow(); 0049 0050 void switchToArea(const QString &areaName, SwitchMode switchMode) override; 0051 0052 void addToolView(const QString &name, IToolViewFactory *factory, FindFlags state) override; 0053 void removeToolView(IToolViewFactory *factory) override; 0054 0055 QWidget* findToolView(const QString& name, IToolViewFactory *factory, FindFlags flags) override; 0056 void raiseToolView(QWidget* toolViewWidget) override; 0057 0058 void selectNewToolViewToAdd(MainWindow *mw); 0059 0060 void initialize(); 0061 void cleanup(); 0062 0063 void showSettingsDialog(); 0064 Sublime::Controller* controller() override; 0065 0066 void mainWindowAdded(Sublime::MainWindow* mainWindow); 0067 0068 void saveAllAreas(const KSharedConfigPtr& config); 0069 void saveArea(Sublime::Area* area, KConfigGroup & group); 0070 void loadAllAreas(const KSharedConfigPtr& config); 0071 void loadArea(Sublime::Area* area, const KConfigGroup & group); 0072 0073 /*! @p status must implement KDevelop::IStatus */ 0074 void registerStatus(QObject* status) override; 0075 0076 void showErrorMessage(const QString& message, int timeout) override; 0077 void postMessage(Sublime::Message* message) override; 0078 0079 /// Returns list of available view factories together with their ToolDocuments. 0080 /// @see addToolView(), removeToolView(), findToolView() 0081 const QHash<IToolViewFactory*, Sublime::ToolDocument*>& factoryDocuments() const; 0082 0083 /// Adds a tool view in the active area to the dock area @p area. 0084 /// @see activeArea() 0085 void addToolViewToDockArea(KDevelop::IToolViewFactory* factory, Qt::DockWidgetArea area); 0086 0087 bool toolViewPresent(Sublime::ToolDocument* doc, Sublime::Area* area); 0088 0089 QWidget* activeToolViewActionListener() const override; 0090 0091 QList<Sublime::Area*> allAreas() const override; 0092 0093 public Q_SLOTS: 0094 void raiseToolView(Sublime::View * view); 0095 0096 private Q_SLOTS: 0097 void addNewToolView(MainWindow* mw, QListWidgetItem* item); 0098 0099 void slotAreaChanged(Sublime::Area* area); 0100 void slotActiveToolViewChanged(Sublime::View* view); 0101 0102 private: 0103 void addToolViewIfWanted(IToolViewFactory* factory, 0104 Sublime::ToolDocument* doc, 0105 Sublime::Area* area); 0106 Sublime::View* addToolViewToArea(IToolViewFactory* factory, 0107 Sublime::ToolDocument* doc, 0108 Sublime::Area* area, Sublime::Position p=Sublime::AllPositions); 0109 void setupActions(); 0110 0111 private: 0112 const QScopedPointer<class UiControllerPrivate> d_ptr; 0113 Q_DECLARE_PRIVATE(UiController) 0114 friend class UiControllerPrivate; 0115 }; 0116 0117 } 0118 0119 #endif 0120