1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
/*
SPDX-FileCopyrightText: 2007 Roberto Raggi <roberto@kdevelop.org>
SPDX-FileCopyrightText: 2007 Hamish Rodda <rodda@kde.org>
SPDX-FileCopyrightText: 2011 Alexander Dymo <adymo@kdevelop.org>
SPDX-License-Identifier: LicenseRef-MIT-KDevelop-Ideal
*/
#ifndef SUBLIME_IDEALCONTROLLER_H
#define SUBLIME_IDEALCONTROLLER_H
#include <QAction>
#include <QSet>
#include <QPointer>
#include "sublimedefs.h"
class KActionMenu;
namespace Sublime {
class Area;
class View;
class MainWindow;
class IdealButtonBarWidget;
class IdealDockWidget;
class View;
class IdealController: public QObject
{
Q_OBJECT
public:
explicit IdealController(Sublime::MainWindow *mainWindow);
void addView(Qt::DockWidgetArea area, View* view);
enum RaiseMode { HideOtherViews, GroupWithOtherViews };
void raiseView(View* view, RaiseMode mode = HideOtherViews);
void showDockWidget(IdealDockWidget* dock, bool show);
void focusEditor();
QWidget *statusBarLocation() const;
QAction* actionForView(View* view) const;
void setShowDockStatus(Qt::DockWidgetArea area, bool checked);
/** Remove view. If nondestructive true, view->widget()
is not deleted, as is left with NULL parent.
Otherwise, it's deleted. */
void removeView(View* view, bool nondestructive = false);
void moveView(View *view, Qt::DockWidgetArea area);
void showLeftDock(bool show);
void showRightDock(bool show);
void showBottomDock(bool show);
void toggleDocksShown();
IdealButtonBarWidget* barForDockArea(Qt::DockWidgetArea area) const;
QAction* actionForArea(Qt::DockWidgetArea area) const;
enum Direction { NextDock, PrevDock };
void goPrevNextDock(IdealController::Direction direction);
IdealButtonBarWidget *leftBarWidget;
IdealButtonBarWidget *rightBarWidget;
IdealButtonBarWidget *bottomBarWidget;
IdealButtonBarWidget *topBarWidget;
QWidget *bottomStatusBarLocation;
IdealDockWidget* currentDockWidget() const;
QMap<Qt::DockWidgetArea, QPointer<IdealDockWidget> > lastDockWidget;
QList<IdealDockWidget*> allDockWidgets() const;
Q_SIGNALS:
/// Emitted, when a context menu is requested on one of the dock bars.
/// When no actions gets associated to the QMenu, it won't be shown.
void dockBarContextMenuRequested(Qt::DockWidgetArea area, const QPoint& position);
void dockShown(Sublime::View*, Sublime::Position pos, bool shown);
private Q_SLOTS:
void slotDockBarContextMenuRequested(const QPoint& position);
void dockLocationChanged(Qt::DockWidgetArea);
void loadSettings();
private:
void hideDocks(IdealButtonBarWidget *bar);
void showDock(Qt::DockWidgetArea area, bool show);
void toggleDocksShown(IdealButtonBarWidget *bar, bool show);
Sublime::MainWindow* const m_mainWindow;
QSet<IdealDockWidget*> docks;
/** Map from View to an action that shows/hides
the IdealDockWidget containing that view. */
QMap<View*, QAction*> m_view_to_action;
/** Map from IdealDockWidget to an action that shows/hides
that IdealDockWidget. */
QMap<IdealDockWidget*, QAction*> m_dockwidget_to_action;
KActionMenu* m_docks;
QAction* m_showLeftDock;
QAction* m_showRightDock;
QAction* m_showBottomDock;
QAction* m_showTopDock;
};
}
#endif
|