File indexing completed on 2024-05-05 05:57:00
0001 /* 0002 SPDX-FileCopyrightText: 2008-2014 Eike Hein <hein@kde.org> 0003 SPDX-FileCopyrightText: 2009 Juan Carlos Torres <carlosdgtorres@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #ifndef SESSIONSTACK_H 0009 #define SESSIONSTACK_H 0010 0011 #include "session.h" 0012 0013 #include <config-yakuake.h> 0014 0015 #include <QHash> 0016 #include <QStackedWidget> 0017 0018 class Session; 0019 class VisualEventOverlay; 0020 class KActionCollection; 0021 0022 class SessionStack : public QStackedWidget 0023 { 0024 Q_OBJECT 0025 Q_CLASSINFO("D-Bus Interface", "org.kde.yakuake") 0026 0027 public: 0028 explicit SessionStack(QWidget *parent = nullptr); 0029 ~SessionStack(); 0030 0031 void closeActiveTerminal(int sessionId = -1); 0032 0033 void editProfile(int sessionId = -1); 0034 0035 void emitTitles(); 0036 0037 bool requiresVisualEventOverlay(); 0038 0039 QList<KActionCollection *> getPartActionCollections(); 0040 0041 bool wantsBlur() const; 0042 0043 public Q_SLOTS: 0044 int addSessionImpl(Session::SessionType type = Session::Single); 0045 Q_SCRIPTABLE int addSession(); 0046 Q_SCRIPTABLE int addSessionTwoHorizontal(); 0047 Q_SCRIPTABLE int addSessionTwoVertical(); 0048 Q_SCRIPTABLE int addSessionQuad(); 0049 0050 Q_SCRIPTABLE void raiseSession(int sessionId); 0051 0052 Q_SCRIPTABLE void removeSession(int sessionId); 0053 Q_SCRIPTABLE void removeTerminal(int terminalId); 0054 0055 Q_SCRIPTABLE int splitSessionLeftRight(int sessionId); 0056 Q_SCRIPTABLE int splitSessionTopBottom(int sessionId); 0057 Q_SCRIPTABLE int splitTerminalLeftRight(int terminalId); 0058 Q_SCRIPTABLE int splitTerminalTopBottom(int terminalId); 0059 0060 Q_SCRIPTABLE int tryGrowTerminalRight(int terminalId, uint pixels = 10); 0061 Q_SCRIPTABLE int tryGrowTerminalLeft(int terminalId, uint pixels = 10); 0062 Q_SCRIPTABLE int tryGrowTerminalTop(int terminalId, uint pixels = 10); 0063 Q_SCRIPTABLE int tryGrowTerminalBottom(int terminalId, uint pixels = 10); 0064 0065 Q_SCRIPTABLE int activeSessionId() 0066 { 0067 return m_activeSessionId; 0068 } 0069 Q_SCRIPTABLE int activeTerminalId(); 0070 0071 Q_SCRIPTABLE const QString sessionIdList(); 0072 Q_SCRIPTABLE const QString terminalIdList(); 0073 Q_SCRIPTABLE const QString terminalIdsForSessionId(int sessionId); 0074 Q_SCRIPTABLE int sessionIdForTerminalId(int terminalId); 0075 0076 #if defined(REMOVE_SENDTEXT_RUNCOMMAND_DBUS_METHODS) 0077 void runCommand(const QString &command); 0078 void runCommandInTerminal(int terminalId, const QString &command); 0079 #else 0080 Q_SCRIPTABLE void runCommand(const QString &command); 0081 Q_SCRIPTABLE void runCommandInTerminal(int terminalId, const QString &command); 0082 #endif 0083 0084 Q_SCRIPTABLE bool isSessionClosable(int sessionId); 0085 Q_SCRIPTABLE void setSessionClosable(int sessionId, bool closable); 0086 Q_SCRIPTABLE bool hasUnclosableSessions() const; 0087 0088 Q_SCRIPTABLE bool isSessionKeyboardInputEnabled(int sessionId); 0089 Q_SCRIPTABLE void setSessionKeyboardInputEnabled(int sessionId, bool enabled); 0090 Q_SCRIPTABLE bool isTerminalKeyboardInputEnabled(int terminalId); 0091 Q_SCRIPTABLE void setTerminalKeyboardInputEnabled(int terminalId, bool enabled); 0092 Q_SCRIPTABLE bool hasTerminalsWithKeyboardInputEnabled(int sessionId); 0093 Q_SCRIPTABLE bool hasTerminalsWithKeyboardInputDisabled(int sessionId); 0094 0095 Q_SCRIPTABLE bool isSessionMonitorActivityEnabled(int sessionId); 0096 Q_SCRIPTABLE void setSessionMonitorActivityEnabled(int sessionId, bool enabled); 0097 Q_SCRIPTABLE bool isTerminalMonitorActivityEnabled(int terminalId); 0098 Q_SCRIPTABLE void setTerminalMonitorActivityEnabled(int terminalId, bool enabled); 0099 Q_SCRIPTABLE bool hasTerminalsWithMonitorActivityEnabled(int sessionId); 0100 Q_SCRIPTABLE bool hasTerminalsWithMonitorActivityDisabled(int sessionId); 0101 0102 Q_SCRIPTABLE bool isSessionMonitorSilenceEnabled(int sessionId); 0103 Q_SCRIPTABLE void setSessionMonitorSilenceEnabled(int sessionId, bool enabled); 0104 Q_SCRIPTABLE bool isTerminalMonitorSilenceEnabled(int terminalId); 0105 Q_SCRIPTABLE void setTerminalMonitorSilenceEnabled(int terminalId, bool enabled); 0106 Q_SCRIPTABLE bool hasTerminalsWithMonitorSilenceEnabled(int sessionId); 0107 Q_SCRIPTABLE bool hasTerminalsWithMonitorSilenceDisabled(int sessionId); 0108 0109 void handleTerminalHighlightRequest(int terminalId); 0110 0111 Q_SIGNALS: 0112 void sessionAdded(int sessionId, const QString &title); 0113 void sessionRaised(int sessionId); 0114 void sessionRemoved(int sessionId); 0115 0116 void activeTitleChanged(const QString &title); 0117 void titleChanged(int sessionId, const QString &title); 0118 0119 void closeTerminal(); 0120 0121 void previousTerminal(); 0122 void nextTerminal(); 0123 0124 void manageProfiles(); 0125 0126 void removeTerminalHighlight(); 0127 0128 void wantsBlurChanged(); 0129 0130 protected: 0131 virtual void showEvent(QShowEvent *event) override; 0132 0133 private Q_SLOTS: 0134 void handleManualTerminalActivation(Terminal *); 0135 0136 void cleanup(int sessionId); 0137 0138 private: 0139 enum QueryCloseType { 0140 QueryCloseSession, 0141 QueryCloseTerminal, 0142 }; 0143 bool queryClose(int sessionId, QueryCloseType type); 0144 0145 VisualEventOverlay *m_visualEventOverlay; 0146 0147 int m_activeSessionId; 0148 0149 QHash<int, Session *> m_sessions; 0150 }; 0151 0152 #endif