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 Session;
00040 class TerminalDisplay;
00041 class Profile;
00042
00043 class SessionController;
00044 class ViewProperties;
00045 class ViewContainer;
00046 class ViewSplitter;
00047
00067 class ViewManager : public QObject
00068 {
00069 Q_OBJECT
00070
00071 public:
00077 ViewManager(QObject* parent , KActionCollection* collection);
00078 ~ViewManager();
00079
00084 void createView(Session* session);
00085
00091 void applyProfile(TerminalDisplay* view , const Profile::Ptr profile
00092 , bool applyContainerSettings);
00093
00098 QWidget* widget() const;
00099
00103 QWidget* activeView() const;
00104
00112 QList<ViewProperties*> viewProperties() const;
00113
00119 enum NavigationMethod
00120 {
00125 TabbedNavigation,
00127 NoNavigation
00128 };
00129
00137 void setNavigationMethod(NavigationMethod method);
00138
00143 NavigationMethod navigationMethod() const;
00144
00149 SessionController* activeViewController() const;
00150
00151 signals:
00153 void empty();
00154
00156 void viewDetached(Session* session);
00157
00162 void activeViewChanged(SessionController* controller);
00163
00169 void viewPropertiesChanged(const QList<ViewProperties*>& propertiesList);
00170
00179 void splitViewToggle(bool multipleViews);
00180
00185 void setMenuBarVisibleRequest(bool);
00186
00188 void newViewRequest();
00190 void newViewRequest(Profile::Ptr);
00191
00192 private slots:
00193
00194 void splitLeftRight();
00195 void splitTopBottom();
00196 void closeActiveView();
00197 void closeOtherViews();
00198 void expandActiveView();
00199 void shrinkActiveView();
00200
00201
00202 void detachActiveView();
00203 void updateDetachViewState();
00204
00205
00206
00207 void sessionFinished();
00208
00209 void viewCloseRequest(QWidget* widget);
00210
00211
00212
00213
00214
00215
00216
00217
00218 void viewActivated( QWidget* view );
00219
00220
00221 void nextView();
00222
00223
00224 void previousView();
00225
00226
00227 void nextContainer();
00228
00229
00230
00231 void containerViewsChanged(QObject* container);
00232
00233
00234 void profileChanged(Profile::Ptr profile);
00235
00236 void updateViewsForSession(Session* session);
00237
00238
00239 void moveActiveViewLeft();
00240
00241 void moveActiveViewRight();
00242
00243
00244 void controllerChanged(SessionController* controller);
00245
00246
00247
00248 void containerMoveViewRequest(int index, int id, bool& success);
00249
00250 private:
00251 void createView(Session* session, ViewContainer* container, int index);
00252 const ColorScheme* colorSchemeForProfile(const Profile::Ptr profile) const;
00253
00254 void setupActions();
00255 void focusActiveView();
00256 void registerView(TerminalDisplay* view);
00257 void unregisterView(TerminalDisplay* view);
00258
00259
00260
00261 void takeView(ViewManager* otherManager , ViewContainer* otherContainer, ViewContainer* newContainer, TerminalDisplay* view);
00262 void splitView(Qt::Orientation orientation);
00263
00264
00265
00266
00267 ViewContainer* createContainer(const Profile::Ptr profile);
00268
00269 void removeContainer(ViewContainer* container);
00270
00271
00272
00273
00274 TerminalDisplay* createTerminalDisplay(Session* session = 0);
00275
00276
00277
00278
00279 SessionController* createController(Session* session , TerminalDisplay* display);
00280
00281
00282 QMenu* createNewViewMenu();
00283 private:
00284 QPointer<ViewSplitter> _viewSplitter;
00285 QPointer<SessionController> _pluggedController;
00286
00287 QHash<TerminalDisplay*,Session*> _sessionMap;
00288
00289 KActionCollection* _actionCollection;
00290 QSignalMapper* _containerSignalMapper;
00291 NavigationMethod _navigationMethod;
00292
00293 QMenu* _newViewMenu;
00294 };
00295
00296 }
00297
00298 #endif