Konsole
ViewManager.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VIEWMANAGER_H
00021 #define VIEWMANAGER_H
00022
00023
00024 #include <QtCore/QHash>
00025 #include <QtCore/QObject>
00026 #include <QtCore/QPointer>
00027
00028
00029 #include "Profile.h"
00030
00031 class QSignalMapper;
00032 class QMenu;
00033 class KActionCollection;
00034
00035 namespace Konsole
00036 {
00037
00038 class ColorScheme;
00039 class IncrementalSearchBar;
00040 class Session;
00041 class TerminalDisplay;
00042 class Profile;
00043
00044 class SessionController;
00045 class ViewProperties;
00046 class ViewContainer;
00047 class ViewSplitter;
00048
00068 class ViewManager : public QObject
00069 {
00070 Q_OBJECT
00071
00072 public:
00078 ViewManager(QObject* parent , KActionCollection* collection);
00079 ~ViewManager();
00080
00085 void createView(Session* session);
00086
00092 void applyProfile(TerminalDisplay* view , const Profile::Ptr profile
00093 , bool applyContainerSettings);
00094
00099 QWidget* widget() const;
00100
00104 QWidget* activeView() const;
00105
00113 QList<ViewProperties*> viewProperties() const;
00114
00120 enum NavigationMethod
00121 {
00126 TabbedNavigation,
00128 NoNavigation
00129 };
00130
00138 void setNavigationMethod(NavigationMethod method);
00139
00144 NavigationMethod navigationMethod() const;
00145
00150 SessionController* activeViewController() const;
00151
00155 IncrementalSearchBar* searchBar() const;
00156
00160 void saveSessions(KConfigGroup& group);
00161 void restoreSessions(const KConfigGroup& group);
00162
00163 signals:
00165 void empty();
00166
00168 void viewDetached(Session* session);
00169
00174 void activeViewChanged(SessionController* controller);
00175
00181 void viewPropertiesChanged(const QList<ViewProperties*>& propertiesList);
00182
00191 void splitViewToggle(bool multipleViews);
00192
00197 void setMenuBarVisibleRequest(bool);
00198
00200 void newViewRequest();
00202 void newViewRequest(Profile::Ptr);
00203
00204 private slots:
00205
00206 void splitLeftRight();
00207 void splitTopBottom();
00208 void closeActiveView();
00209 void closeOtherViews();
00210 void expandActiveView();
00211 void shrinkActiveView();
00212
00213
00214 void detachActiveView();
00215 void updateDetachViewState();
00216
00217
00218
00219 void sessionFinished();
00220
00221 void viewCloseRequest(QWidget* widget);
00222
00223
00224
00225
00226
00227
00228
00229
00230 void viewActivated( QWidget* view );
00231
00232
00233 void nextView();
00234
00235
00236 void previousView();
00237
00238
00239 void nextContainer();
00240
00241
00242
00243 void containerViewsChanged(QObject* container);
00244
00245
00246 void profileChanged(Profile::Ptr profile);
00247
00248 void updateViewsForSession(Session* session);
00249
00250
00251 void moveActiveViewLeft();
00252
00253 void moveActiveViewRight();
00254
00255
00256 void switchToView(int index);
00257
00258
00259 void controllerChanged(SessionController* controller);
00260
00261
00262
00263 void containerMoveViewRequest(int index, int id, bool& success);
00264
00265 private:
00266 void createView(Session* session, ViewContainer* container, int index);
00267 const ColorScheme* colorSchemeForProfile(const Profile::Ptr profile) const;
00268
00269 void setupActions();
00270 void focusActiveView();
00271 void registerView(TerminalDisplay* view);
00272 void unregisterView(TerminalDisplay* view);
00273
00274
00275
00276 void takeView(ViewManager* otherManager , ViewContainer* otherContainer, ViewContainer* newContainer, TerminalDisplay* view);
00277 void splitView(Qt::Orientation orientation);
00278
00279
00280
00281
00282 ViewContainer* createContainer(const Profile::Ptr profile);
00283
00284 void removeContainer(ViewContainer* container);
00285
00286
00287
00288
00289 TerminalDisplay* createTerminalDisplay(Session* session = 0);
00290
00291
00292
00293
00294 SessionController* createController(Session* session , TerminalDisplay* display);
00295
00296
00297 QMenu* createNewViewMenu();
00298 private:
00299 QPointer<ViewSplitter> _viewSplitter;
00300 QPointer<SessionController> _pluggedController;
00301
00302 QHash<TerminalDisplay*,Session*> _sessionMap;
00303
00304 KActionCollection* _actionCollection;
00305 QSignalMapper* _containerSignalMapper;
00306 NavigationMethod _navigationMethod;
00307
00308 QMenu* _newViewMenu;
00309 };
00310
00311 }
00312
00313 #endif
00314
00315
00316
00317
00318
00319
00320
00321
00322