1 /* 2 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KDEVPLATFORM_UICONTROLLER_H 8 #define KDEVPLATFORM_UICONTROLLER_H 9 10 #include "shellexport.h" 11 12 #include <KSharedConfig> 13 14 #include <interfaces/iuicontroller.h> 15 #include <interfaces/iassistant.h> 16 #include <sublime/controller.h> 17 18 class QListWidgetItem; 19 20 namespace Sublime { 21 class ToolDocument; 22 } 23 24 namespace KDevelop { 25 26 class Core; 27 class MainWindow; 28 class UiControllerPrivate; 29 30 class KDEVPLATFORMSHELL_EXPORT UiController: public Sublime::Controller, public IUiController 31 { 32 Q_OBJECT 33 34 public: 35 explicit UiController(Core *core); 36 ~UiController() override; 37 38 /** @return area for currently active sublime mainwindow or 0 if 39 no sublime mainwindow is active.*/ 40 Sublime::Area *activeArea() override; 41 /** @return active sublime mainwindow or 0 if no such mainwindow is active.*/ 42 Sublime::MainWindow *activeSublimeWindow(); 43 /** @return active sublime mainwindow or 0 if no such mainwindow is active.*/ 44 KParts::MainWindow *activeMainWindow() override; 45 46 /** @return default main window - the main window for default area in the shell. 47 No guarantee is given that it always exists so this method may return 0.*/ 48 MainWindow *defaultMainWindow(); 49 50 void switchToArea(const QString &areaName, SwitchMode switchMode) override; 51 52 void addToolView(const QString &name, IToolViewFactory *factory, FindFlags state) override; 53 void removeToolView(IToolViewFactory *factory) override; 54 55 QWidget* findToolView(const QString& name, IToolViewFactory *factory, FindFlags flags) override; 56 void raiseToolView(QWidget* toolViewWidget) override; 57 58 void selectNewToolViewToAdd(MainWindow *mw); 59 60 void initialize(); 61 void cleanup(); 62 63 void showSettingsDialog(); 64 Sublime::Controller* controller() override; 65 66 void mainWindowAdded(Sublime::MainWindow* mainWindow); 67 68 void saveAllAreas(const KSharedConfigPtr& config); 69 void saveArea(Sublime::Area* area, KConfigGroup & group); 70 void loadAllAreas(const KSharedConfigPtr& config); 71 void loadArea(Sublime::Area* area, const KConfigGroup & group); 72 73 /*! @p status must implement KDevelop::IStatus */ 74 void registerStatus(QObject* status) override; 75 76 void showErrorMessage(const QString& message, int timeout) override; 77 void postMessage(Sublime::Message* message) override; 78 79 /// Returns list of available view factories together with their ToolDocuments. 80 /// @see addToolView(), removeToolView(), findToolView() 81 const QHash<IToolViewFactory*, Sublime::ToolDocument*>& factoryDocuments() const; 82 83 /// Adds a tool view in the active area to the dock area @p area. 84 /// @see activeArea() 85 void addToolViewToDockArea(KDevelop::IToolViewFactory* factory, Qt::DockWidgetArea area); 86 87 bool toolViewPresent(Sublime::ToolDocument* doc, Sublime::Area* area); 88 89 QWidget* activeToolViewActionListener() const override; 90 91 QList<Sublime::Area*> allAreas() const override; 92 93 public Q_SLOTS: 94 void raiseToolView(Sublime::View * view); 95 96 private Q_SLOTS: 97 void addNewToolView(MainWindow* mw, QListWidgetItem* item); 98 99 void slotAreaChanged(Sublime::Area* area); 100 void slotActiveToolViewChanged(Sublime::View* view); 101 102 private: 103 void addToolViewIfWanted(IToolViewFactory* factory, 104 Sublime::ToolDocument* doc, 105 Sublime::Area* area); 106 Sublime::View* addToolViewToArea(IToolViewFactory* factory, 107 Sublime::ToolDocument* doc, 108 Sublime::Area* area, Sublime::Position p=Sublime::AllPositions); 109 void setupActions(); 110 111 private: 112 const QScopedPointer<class UiControllerPrivate> d_ptr; 113 Q_DECLARE_PRIVATE(UiController) 114 friend class UiControllerPrivate; 115 }; 116 117 } 118 119 #endif 120 121